diff --git a/app/coffee/modules/backlog/main.coffee b/app/coffee/modules/backlog/main.coffee index 115cdaab..ef6f2fce 100644 --- a/app/coffee/modules/backlog/main.coffee +++ b/app/coffee/modules/backlog/main.coffee @@ -643,7 +643,7 @@ BacklogDirective = ($repo, $rootscope, $translate) -> checkSelected = (target) -> lastChecked = target.closest(".us-item-row") moveToCurrentSprintDom = $el.find("#move-to-current-sprint") - selectedUsDom = $el.find(".backlog-table-body .user-stories input:checkbox:checked") + selectedUsDom = $el.find(".backlog-table-body input:checkbox:checked") if selectedUsDom.length > 0 and $scope.sprints.length > 0 moveToCurrentSprintDom.show() @@ -658,7 +658,7 @@ BacklogDirective = ($repo, $rootscope, $translate) -> return true # Enable move to current sprint only when there are selected us's - $el.on "change", ".backlog-table-body .user-stories input:checkbox", (event) -> + $el.on "change", ".backlog-table-body input:checkbox", (event) -> # check elements between the last two if shift is pressed if lastChecked && shiftPressed elements = [] @@ -677,11 +677,12 @@ BacklogDirective = ($repo, $rootscope, $translate) -> checkSelected(input) target = angular.element(event.currentTarget) + target.closest(".us-item-row").toggleClass('is-checked') checkSelected(target) $el.on "click", "#move-to-current-sprint", (event) => # Calculating the us's to be modified - ussDom = $el.find(".backlog-table-body .user-stories input:checkbox:checked") + ussDom = $el.find(".backlog-table-body input:checkbox:checked") ussToMove = _.map ussDom, (item) -> item = $(item).closest('.tg-scope') diff --git a/app/coffee/modules/issues/list.coffee b/app/coffee/modules/issues/list.coffee index 39a5f667..63640d44 100644 --- a/app/coffee/modules/issues/list.coffee +++ b/app/coffee/modules/issues/list.coffee @@ -407,7 +407,7 @@ IssuesDirective = ($log, $location, $template, $compile) -> # Draw the arrow the first time currentOrder = $ctrl.getUrlFilter("orderBy") or "created_date" if currentOrder - icon = if startswith(currentOrder, "-") then "icon-caret-up" else "icon-caret-down" + icon = if startswith(currentOrder, "-") then "icon-arrow-up" else "icon-arrow-bottom" colHeadElement = $el.find(".row.title > div[data-fieldname='#{trim(currentOrder, "-")}']") colHeadElement.html("#{colHeadElement.html()}") @@ -425,7 +425,7 @@ IssuesDirective = ($log, $location, $template, $compile) -> $ctrl.loadIssues().then -> # Update the arrow $el.find(".row.title > div > span.icon").remove() - icon = if startswith(finalOrder, "-") then "icon-caret-up" else "icon-caret-down" + icon = if startswith(finalOrder, "-") then "icon-arrow-up" else "icon-arrow-bottom" target.html("#{target.html()}") ## Issues Link diff --git a/app/partials/includes/components/backlog-row.jade b/app/partials/includes/components/backlog-row.jade index e91e4156..a28ece63 100644 --- a/app/partials/includes/components/backlog-row.jade +++ b/app/partials/includes/components/backlog-row.jade @@ -1,18 +1,44 @@ -div.row.us-item-row(ng-repeat="us in userstories track by us.id", tg-bind-scope, ng-class="{blocked: us.is_blocked}", tg-class-permission="{'readonly': '!modify_us'}") +div.row.us-item-row( + ng-repeat="us in userstories track by us.id" + tg-bind-scope + ng-class="{blocked: us.is_blocked}" + tg-class-permission="{'readonly': '!modify_us'}" +) + div.input + input(type="checkbox" + name="" + tg-check-permission="modify_us" + ) + div.votes( + ng-class="{'inactive': !us.total_voters, 'is-voted': us.is_voter}" + title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:us.total_voters||0}:'messageformat' }}" + ) + span.icon.icon-caret-up + span {{ ::us.total_voters }} div.user-stories div.tags-block(tg-colorize-tags="us.tags", tg-colorize-tags-type="backlog") div.user-story-name - input(tg-check-permission="modify_us", type="checkbox", name="") - a.clickable(tg-nav="project-userstories-detail:project=project.slug,ref=us.ref", - tg-nav-get-params="{\"no-milestone\": 1}", - title="#{{ us.ref }} {{ us.subject }}") + a.clickable( + href="" + tg-nav="project-userstories-detail:project=project.slug,ref=us.ref" + tg-nav-get-params="{\"no-milestone\": 1}" + title="#{{ us.ref }} {{ us.subject }}" + ) span(tg-bo-ref="us.ref") span(ng-bind="us.subject") div.us-settings - a.icon.icon-edit(tg-check-permission="modify_us", href="", - ng-click="ctrl.editUserStory(us.project, us.ref, $event)", title="{{'COMMON.EDIT' | translate}}") - a.icon.icon-delete(tg-check-permission="delete_us", href="", - ng-click="ctrl.deleteUserStory(us)", title="{{'COMMON.DELETE' | translate}}") + a.icon.icon-edit( + href="" + tg-check-permission="modify_us" + ng-click="ctrl.editUserStory(us.project, us.ref, $event)" + title="{{'COMMON.EDIT' | translate}}" + ) + a.icon.icon-delete( + href="" + tg-check-permission="delete_us" + ng-click="ctrl.deleteUserStory(us)" + title="{{'COMMON.DELETE' | translate}}" + ) div.status(tg-us-status="us" on-update="ctrl.updateUserStoryStatus()") a.us-status(href="", title="{{'BACKLOG.STATUS_NAME' | translate}}") diff --git a/app/partials/includes/modules/backlog-table.jade b/app/partials/includes/modules/backlog-table.jade index ce2c5439..7082adf9 100644 --- a/app/partials/includes/modules/backlog-table.jade +++ b/app/partials/includes/modules/backlog-table.jade @@ -1,5 +1,7 @@ div.backlog-table-header div.row.backlog-table-title + div.input + div.votes(translate="COMMON.FIELDS.VOTES") div.user-stories(translate="BACKLOG.TABLE.COLUMN_US") div.status(translate="COMMON.FIELDS.STATUS") div.points(tg-us-role-points-selector, title="{{'BACKLOG.TABLE.TITLE_COLUMN_POINTS' | translate}}") diff --git a/app/partials/includes/modules/issues-table.jade b/app/partials/includes/modules/issues-table.jade index da73ffe4..e33b7d01 100644 --- a/app/partials/includes/modules/issues-table.jade +++ b/app/partials/includes/modules/issues-table.jade @@ -3,6 +3,7 @@ section.issues-table.basic-table(ng-class="{empty: !issues.length}") div.level-field(data-fieldname="type", translate="ISSUES.TABLE.COLUMNS.TYPE") div.level-field(data-fieldname="severity", translate="ISSUES.TABLE.COLUMNS.SEVERITY") div.level-field(data-fieldname="priority", translate="ISSUES.TABLE.COLUMNS.PRIORITY") + div.votes(data-fieldname="total_voters", translate="ISSUES.TABLE.COLUMNS.VOTES") div.subject(data-fieldname="subject", translate="ISSUES.TABLE.COLUMNS.SUBJECT") div.issue-field(data-fieldname="status", translate="ISSUES.TABLE.COLUMNS.STATUS") div.created-field(data-fieldname="created_date", translate="ISSUES.TABLE.COLUMNS.CREATED") @@ -15,9 +16,18 @@ section.issues-table.basic-table(ng-class="{empty: !issues.length}") div.level-field(tg-listitem-type="issue") div.level-field(tg-listitem-severity="issue") div.level-field(tg-listitem-priority="issue") + div.votes( + ng-class="{'inactive': !issue.total_voters, 'is-voted': issue.is_voter}" + title="{{ 'COMMON.VOTE_BUTTON.COUNTER_TITLE'|translate:{total:issue.total_voters||0}:'messageformat' }}" + ) + span.icon.icon-caret-up + span {{ ::issue.total_voters }} div.subject - a(href="", tg-nav="project-issues-detail:project=project.slug,ref=issue.ref", - title="#{{ ::issue.ref }} {{ ::issue.subject }}") + a( + href="" + tg-nav="project-issues-detail:project=project.slug,ref=issue.ref" + title="#{{ ::issue.ref }} {{ ::issue.subject }}" + ) span(tg-bo-ref="issue.ref") span.blocked-text( ng-if="issue.is_blocked" @@ -25,8 +35,12 @@ section.issues-table.basic-table(ng-class="{empty: !issues.length}") ) {{'ISSUES.TABLE.BLOCKED' | translate}} span(ng-bind="issue.subject") + div.issue-field(tg-issue-status-inline-edition="issue") - a.issue-status(href="", title="{{'ISSUES.TABLE.TITLE_ACTION_CHANGE_STATUS' | translate}}") + a.issue-status( + href="" + title="{{'ISSUES.TABLE.TITLE_ACTION_CHANGE_STATUS' | translate}}" + ) span.issue-status-bind span.icon.icon-arrow-bottom(tg-check-permission="modify_issue")