From a0a4a3a8df11decc918227ae5197c4030560371f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa?= Date: Mon, 3 Sep 2018 17:57:54 +0200 Subject: [PATCH] Refactoring global search --- app/coffee/modules/search.coffee | 8 +- .../includes/modules/issues-table.jade | 3 +- .../includes/modules/search-result-table.jade | 104 ------------------ .../search-results}/empty-search-results.jade | 0 .../search-result-table-epics.jade | 19 ++++ .../search-result-table-issues.jade | 21 ++++ .../search-result-table-tasks.jade | 21 ++++ .../search-result-table-us.jade | 26 +++++ .../search-result-table-wiki.jade | 13 +++ .../search-results/search-result-table.jade | 16 +++ app/partials/search/search.jade | 2 +- .../modules/search/search-result-table.scss | 19 ++-- 12 files changed, 131 insertions(+), 121 deletions(-) delete mode 100644 app/partials/includes/modules/search-result-table.jade rename app/partials/includes/{components => modules/search-results}/empty-search-results.jade (100%) create mode 100644 app/partials/includes/modules/search-results/search-result-table-epics.jade create mode 100644 app/partials/includes/modules/search-results/search-result-table-issues.jade create mode 100644 app/partials/includes/modules/search-results/search-result-table-tasks.jade create mode 100644 app/partials/includes/modules/search-results/search-result-table-us.jade create mode 100644 app/partials/includes/modules/search-results/search-result-table-wiki.jade create mode 100644 app/partials/includes/modules/search-results/search-result-table.jade diff --git a/app/coffee/modules/search.coffee b/app/coffee/modules/search.coffee index e1e09b8c..ae57859a 100644 --- a/app/coffee/modules/search.coffee +++ b/app/coffee/modules/search.coffee @@ -182,7 +182,7 @@ SearchDirective = ($log, $compile, $templatecache, $routeparams, $location, $ana applyAutoTab = true activeSectionName = "userstories" tabsDom = $el.find(".search-filter") - lastSearchResults = null + currentSearchResults = null getActiveSection = (data) -> maxVal = 0 @@ -248,9 +248,9 @@ SearchDirective = ($log, $compile, $templatecache, $routeparams, $location, $ana $el.find(".search-result-table").html(element) $scope.$watch "searchResults", (data) -> - lastSearchResults = data + currentSearchResults = data - return if !lastSearchResults + return if !currentSearchResults activeSection = getActiveSection(data) @@ -268,7 +268,7 @@ SearchDirective = ($log, $compile, $templatecache, $routeparams, $location, $ana target = angular.element(event.currentTarget) sectionName = target.parent().data("name") - sectionData = if !lastSearchResults then [] else lastSearchResults[sectionName] + sectionData = if !currentSearchResults then [] else currentSearchResults[sectionName] section = { name: sectionName, diff --git a/app/partials/includes/modules/issues-table.jade b/app/partials/includes/modules/issues-table.jade index ce08df06..26d53d69 100644 --- a/app/partials/includes/modules/issues-table.jade +++ b/app/partials/includes/modules/issues-table.jade @@ -75,8 +75,7 @@ section.issues-table.basic-table(ng-class="{empty: !issues.length}") div.modified-field( title="{{ issue.modified_date|momentFormat:'DD MMM YYYY HH:mm' }}" - ) - {{ issue.modified_date|momentFormat:'DD MMM YYYY'}} + ) {{ issue.modified_date|momentFormat:'DD MMM YYYY'}} div.assigned-field(tg-issue-assigned-to-inline-edition="issue") div.issue-assignedto(title="{{'ISSUES.TABLE.TITLE_ACTION_ASSIGNED_TO' | translate}}") diff --git a/app/partials/includes/modules/search-result-table.jade b/app/partials/includes/modules/search-result-table.jade deleted file mode 100644 index 3c889e38..00000000 --- a/app/partials/includes/modules/search-result-table.jade +++ /dev/null @@ -1,104 +0,0 @@ -section.search-result-table - -script(type="text/ng-template", id="search-issues") - div.search-result-table-container(ng-class="{'hidden': !issues.length}", tg-bind-scope) - div.search-result-table-header - div.row.title - div.ref(translate="COMMON.FIELDS.REF") - div.user-stories(translate="SEARCH.FILTER_ISSUES") - div.status(translate="COMMON.FIELDS.STATUS") - div.assigned-to(translate="COMMON.FIELDS.ASSIGNED_TO") - div.search-result-table-body - div.row.table-main(ng-repeat="issue in issues track by issue.id") - div.ref(tg-bo-ref="issue.ref") - div.user-stories - div.user-story-name - a(href="", tg-nav="project-issues-detail:project=project.slug,ref=issue.ref", - tg-bind-html="issue.subject | emojify") - div.status(tg-listitem-issue-status="issue") - div.assigned-to(tg-listitem-assignedto="issue") - - div.empty-large(ng-class="{'hidden': issues.length}") - include ../components/empty-search-results - -script(type="text/ng-template", id="search-epics") - div.search-result-table-container(ng-class="{'hidden': !epics.length}", tg-bind-scope) - div.search-result-table-header - div.row.title - div.ref(translate="COMMON.FIELDS.REF") - div.user-stories(translate="SEARCH.FILTER_EPICS") - div.status(translate="COMMON.FIELDS.STATUS") - div.search-result-table-body - div.row.table-main(ng-repeat="epic in epics track by epic.id") - div.ref(tg-bo-ref="epic.ref") - div.user-stories - div.user-story-name - a(href="", tg-nav="project-epics-detail:project=project.slug,ref=epic.ref", - tg-bind-html="epic.subject | emojify") - div.status(tg-listitem-epic-status="epic") - - div.empty-search-results(ng-class="{'hidden': epics.length}") - include ../components/empty-search-results - - -script(type="text/ng-template", id="search-userstories") - div.search-result-table-container(ng-class="{'hidden': !userstories.length}", tg-bind-scope) - div.search-result-table-header - div.row.title - div.ref(translate="COMMON.FIELDS.REF") - div.user-stories(translate="SEARCH.FILTER_USER_STORIES") - div.sprint(translate="COMMON.FIELDS.SPRINT") - div.status(translate="COMMON.FIELDS.STATUS") - div.points(translate="COMMON.FIELDS.POINTS") - div.search-result-table-body - div.row.table-main(ng-repeat="us in userstories track by us.id") - div.ref(tg-bo-ref="us.ref") - div.user-stories - div.user-story-name - a(href="", tg-nav="project-userstories-detail:project=project.slug,ref=us.ref", - tg-bind-html="us.subject | emojify") - div.sprint - div.sprint-link - a(href="", tg-nav="project-taskboard:project=project.slug,sprint=us.milestone_slug", - tg-bo-bind="us.milestone_name") - div.status(tg-listitem-us-status="us") - div.points(tg-bo-bind="us.total_points") - - div.empty-large(ng-class="{'hidden': userstories.length}") - include ../components/empty-search-results - -script(type="text/ng-template", id="search-tasks") - div.search-result-table-container(ng-class="{'hidden': !tasks.length}", tg-bind-scope) - div.search-result-table-header - div.row.title - div.ref(translate="COMMON.FIELDS.REF") - div.user-stories(translate="SEARCH.FILTER_TASKS") - div.status(translate="COMMON.FIELDS.STATUS") - div.assigned-to(translate="COMMON.FIELDS.ASSIGNED_TO") - div.search-result-table-body - div.row.table-main(ng-repeat="task in tasks track by task.id") - div.ref(tg-bo-ref="task.ref") - div.user-stories - div.user-story-name - a(href="", tg-nav="project-tasks-detail:project=project.slug,ref=task.ref", - tg-bind-html="task.subject | emojify") - div.status(tg-listitem-task-status="task") - div.assigned-to(tg-listitem-assignedto="task") - - div.empty-large(ng-class="{'hidden': tasks.length}") - include ../components/empty-search-results - -script(type="text/ng-template", id="search-wikipages") - div.search-result-table-container(ng-class="{'hidden': !wikipages.length}", tg-bind-scope) - div.search-result-table-header - div.row.title - div.user-stories(translate="SEARCH.FILTER_WIKI") - div.search-result-table-body - div.row.table-main(ng-repeat="wikipage in wikipages track by wikipage.id") - div.user-stories - div.user-story-name - a(href="", tg-nav="project-wiki-page:project=project.slug,slug=wikipage.slug", - tg-bo-bind="wikipage.slug") - - div.empty-large(ng-class="{'hidden': wikipages.length}") - include ../components/empty-search-results diff --git a/app/partials/includes/components/empty-search-results.jade b/app/partials/includes/modules/search-results/empty-search-results.jade similarity index 100% rename from app/partials/includes/components/empty-search-results.jade rename to app/partials/includes/modules/search-results/empty-search-results.jade diff --git a/app/partials/includes/modules/search-results/search-result-table-epics.jade b/app/partials/includes/modules/search-results/search-result-table-epics.jade new file mode 100644 index 00000000..06f8772d --- /dev/null +++ b/app/partials/includes/modules/search-results/search-result-table-epics.jade @@ -0,0 +1,19 @@ +div.search-result-table-container(ng-class="{'hidden': !epics.length}", tg-bind-scope) + div.search-result-table-header + div.row.title + div.user-stories(translate="SEARCH.FILTER_EPICS") + div.status(translate="COMMON.FIELDS.STATUS") + div.search-result-table-body + div.row.table-main(ng-repeat="epic in epics track by epic.id") + div.user-stories + div.user-story-name + a( + href="" + tg-nav="project-epics-detail:project=project.slug,ref=epic.ref" + ) + span.ref(tg-bo-ref="epic.ref") + span {{ epic.subject | emojify }} + div.status(tg-listitem-epic-status="epic") + +div.empty-large(ng-class="{'hidden': epics.length}") + include ./empty-search-results \ No newline at end of file diff --git a/app/partials/includes/modules/search-results/search-result-table-issues.jade b/app/partials/includes/modules/search-results/search-result-table-issues.jade new file mode 100644 index 00000000..3159d53a --- /dev/null +++ b/app/partials/includes/modules/search-results/search-result-table-issues.jade @@ -0,0 +1,21 @@ +div.search-result-table-container(ng-class="{'hidden': !issues.length}", tg-bind-scope) + div.search-result-table-header + div.row.title + div.user-stories(translate="SEARCH.FILTER_ISSUES") + div.status(translate="COMMON.FIELDS.STATUS") + div.assigned-to(translate="COMMON.FIELDS.ASSIGNED_TO") + div.search-result-table-body + div.row.table-main(ng-repeat="issue in issues track by issue.id") + div.user-stories + div.user-story-name + a( + href="", + tg-nav="project-issues-detail:project=project.slug,ref=issue.ref" + ) + span.ref(tg-bo-ref="issue.ref") + span {{ issue.subject | emojify }} + div.status(tg-listitem-issue-status="issue") + div.assigned-to(tg-listitem-assignedto="issue") + +div.empty-large(ng-class="{'hidden': issues.length}") + include ./empty-search-results diff --git a/app/partials/includes/modules/search-results/search-result-table-tasks.jade b/app/partials/includes/modules/search-results/search-result-table-tasks.jade new file mode 100644 index 00000000..4ba1815e --- /dev/null +++ b/app/partials/includes/modules/search-results/search-result-table-tasks.jade @@ -0,0 +1,21 @@ +div.search-result-table-container(ng-class="{'hidden': !tasks.length}", tg-bind-scope) + div.search-result-table-header + div.row.title + div.user-stories(translate="SEARCH.FILTER_TASKS") + div.status(translate="COMMON.FIELDS.STATUS") + div.assigned-to(translate="COMMON.FIELDS.ASSIGNED_TO") + div.search-result-table-body + div.row.table-main(ng-repeat="task in tasks track by task.id") + div.user-stories + div.user-story-name + a( + href="", + tg-nav="project-tasks-detail:project=project.slug,ref=task.ref" + ) + span.ref(tg-bo-ref="task.ref") + span {{ task.subject | emojify }} + div.status(tg-listitem-task-status="task") + div.assigned-to(tg-listitem-assignedto="task") + +div.empty-large(ng-class="{'hidden': tasks.length}") + include ./empty-search-results \ No newline at end of file diff --git a/app/partials/includes/modules/search-results/search-result-table-us.jade b/app/partials/includes/modules/search-results/search-result-table-us.jade new file mode 100644 index 00000000..f64ec2d2 --- /dev/null +++ b/app/partials/includes/modules/search-results/search-result-table-us.jade @@ -0,0 +1,26 @@ +div.search-result-table-container(ng-class="{'hidden': !userstories.length}", tg-bind-scope) + div.search-result-table-header + div.row.title + div.user-stories(translate="SEARCH.FILTER_USER_STORIES") + div.sprint(translate="COMMON.FIELDS.SPRINT") + div.status(translate="COMMON.FIELDS.STATUS") + div.points(translate="COMMON.FIELDS.POINTS") + div.search-result-table-body + div.row.table-main(ng-repeat="us in userstories track by us.id") + div.user-stories + div.user-story-name + a( + href="" + tg-nav="project-userstories-detail:project=project.slug,ref=us.ref" + ) + span.ref(tg-bo-ref="us.ref") + span {{ us.subject | emojify }} + div.sprint + div.sprint-link + a(href="", tg-nav="project-taskboard:project=project.slug,sprint=us.milestone_slug", + tg-bo-bind="us.milestone_name") + div.status(tg-listitem-us-status="us") + div.points(tg-bo-bind="us.total_points") + +div.empty-large(ng-class="{'hidden': userstories.length}") + include ./empty-search-results diff --git a/app/partials/includes/modules/search-results/search-result-table-wiki.jade b/app/partials/includes/modules/search-results/search-result-table-wiki.jade new file mode 100644 index 00000000..4bad65bb --- /dev/null +++ b/app/partials/includes/modules/search-results/search-result-table-wiki.jade @@ -0,0 +1,13 @@ +div.search-result-table-container(ng-class="{'hidden': !wikipages.length}", tg-bind-scope) + div.search-result-table-header + div.row.title + div.user-stories(translate="SEARCH.FILTER_WIKI") + div.search-result-table-body + div.row.table-main(ng-repeat="wikipage in wikipages track by wikipage.id") + div.user-stories + div.user-story-name + a(href="", tg-nav="project-wiki-page:project=project.slug,slug=wikipage.slug", + tg-bo-bind="wikipage.slug") + +div.empty-large(ng-class="{'hidden': wikipages.length}") + include ./empty-search-results diff --git a/app/partials/includes/modules/search-results/search-result-table.jade b/app/partials/includes/modules/search-results/search-result-table.jade new file mode 100644 index 00000000..f5b7d174 --- /dev/null +++ b/app/partials/includes/modules/search-results/search-result-table.jade @@ -0,0 +1,16 @@ +section.search-result-table + +script(type="text/ng-template", id="search-issues") + include ./search-result-table-issues + +script(type="text/ng-template", id="search-epics") + include ./search-result-table-epics + +script(type="text/ng-template", id="search-userstories") + include ./search-result-table-us + +script(type="text/ng-template", id="search-tasks") + include ./search-result-table-tasks + +script(type="text/ng-template", id="search-wikipages") + include ./search-result-table-wiki diff --git a/app/partials/search/search.jade b/app/partials/search/search.jade index 37384e36..6bac7951 100644 --- a/app/partials/search/search.jade +++ b/app/partials/search/search.jade @@ -10,4 +10,4 @@ div.wrapper(tg-search, ng-controller="SearchController as ctrl", section.main.search-result include ../includes/components/mainTitle include ../includes/modules/search-filter - include ../includes/modules/search-result-table + include ../includes/modules/search-results/search-result-table diff --git a/app/styles/modules/search/search-result-table.scss b/app/styles/modules/search/search-result-table.scss index 0f9109e5..f8089086 100644 --- a/app/styles/modules/search/search-result-table.scss +++ b/app/styles/modules/search/search-result-table.scss @@ -7,26 +7,25 @@ padding: .5rem; .ref { - flex-basis: 30px; - flex-grow: 1; - padding: 0 1rem; + margin-right: .5rem; } .user-stories { - flex-basis: 300px; - flex-grow: 10; - flex-shrink: 1; + overflow: hidden; + padding-right: 1rem; + width: 100%; } .status, .points, .sprint { - flex-basis: 150px; + flex: 0 0 150px; flex-grow: 0; + max-width: 150px; padding: 0 1rem; text-align: center; } .assigned-to { - flex-basis: 150px; - flex-grow: 0; + flex: 0 0 150px; + max-width: 150px; padding: 0 1rem; } } @@ -42,7 +41,7 @@ } span { display: inline-block; - max-width: 70%; + max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;