From f9197b41ce94c177ef32e868d0397f43a87fb2f9 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sun, 18 Oct 2020 00:03:39 -0400 Subject: [PATCH] Search ext: Add vertical tabs --- ext/search/Civi/Search/Admin.php | 5 ++++ .../searchActions/saveSmartGroup.directive.js | 7 +---- .../{crmSearch => compose}/controls.html | 11 -------- .../{crmSearch => compose}/criteria.html | 8 ------ .../{crmSearch => compose}/debug.html | 0 .../{crmSearch => compose}/pager.html | 0 .../{crmSearch => compose}/results.html | 0 .../ang/searchAdmin/crmSearch.component.js | 16 +++++++++-- ext/search/ang/searchAdmin/crmSearch.html | 28 +++++++++++++++---- ext/search/ang/searchAdmin/tabs.html | 28 +++++++++++++++++++ 10 files changed, 70 insertions(+), 33 deletions(-) rename ext/search/ang/searchAdmin/{crmSearch => compose}/controls.html (56%) rename ext/search/ang/searchAdmin/{crmSearch => compose}/criteria.html (86%) rename ext/search/ang/searchAdmin/{crmSearch => compose}/debug.html (100%) rename ext/search/ang/searchAdmin/{crmSearch => compose}/pager.html (100%) rename ext/search/ang/searchAdmin/{crmSearch => compose}/results.html (100%) create mode 100644 ext/search/ang/searchAdmin/tabs.html diff --git a/ext/search/Civi/Search/Admin.php b/ext/search/Civi/Search/Admin.php index a0de3e6059..1867ac5b49 100644 --- a/ext/search/Civi/Search/Admin.php +++ b/ext/search/Civi/Search/Admin.php @@ -24,6 +24,11 @@ class Admin { return [ 'operators' => \CRM_Utils_Array::makeNonAssociative(self::getOperators()), 'functions' => \CRM_Api4_Page_Api4Explorer::getSqlFunctions(), + 'displayTypes' => \Civi\Api4\SearchDisplay::getFields(FALSE) + ->setLoadOptions(['name', 'label', 'description', 'icon']) + ->addWhere('name', '=', 'type') + ->execute() + ->first()['options'], ]; } diff --git a/ext/search/ang/searchActions/saveSmartGroup.directive.js b/ext/search/ang/searchActions/saveSmartGroup.directive.js index c53a387cdc..9f59a7d668 100644 --- a/ext/search/ang/searchActions/saveSmartGroup.directive.js +++ b/ext/search/ang/searchActions/saveSmartGroup.directive.js @@ -30,12 +30,7 @@ autoOpen: false, title: ts('Save smart group') }); - dialogService.open('saveSearchDialog', '~/searchActions/saveSmartGroup.html', model, options) - .then(function () { - if (ctrl.load) { - ctrl.load.saved = true; - } - }); + dialogService.open('saveSearchDialog', '~/searchActions/saveSmartGroup.html', model, options); }; } }; diff --git a/ext/search/ang/searchAdmin/crmSearch/controls.html b/ext/search/ang/searchAdmin/compose/controls.html similarity index 56% rename from ext/search/ang/searchAdmin/crmSearch/controls.html rename to ext/search/ang/searchAdmin/compose/controls.html index 873d4f097f..77a8b77740 100644 --- a/ext/search/ang/searchAdmin/crmSearch/controls.html +++ b/ext/search/ang/searchAdmin/compose/controls.html @@ -11,15 +11,4 @@ -
- - -
diff --git a/ext/search/ang/searchAdmin/crmSearch/criteria.html b/ext/search/ang/searchAdmin/compose/criteria.html similarity index 86% rename from ext/search/ang/searchAdmin/crmSearch/criteria.html rename to ext/search/ang/searchAdmin/compose/criteria.html index adbeb7343e..1cfa81ba70 100644 --- a/ext/search/ang/searchAdmin/crmSearch/criteria.html +++ b/ext/search/ang/searchAdmin/compose/criteria.html @@ -41,14 +41,6 @@
-
diff --git a/ext/search/ang/searchAdmin/crmSearch/debug.html b/ext/search/ang/searchAdmin/compose/debug.html similarity index 100% rename from ext/search/ang/searchAdmin/crmSearch/debug.html rename to ext/search/ang/searchAdmin/compose/debug.html diff --git a/ext/search/ang/searchAdmin/crmSearch/pager.html b/ext/search/ang/searchAdmin/compose/pager.html similarity index 100% rename from ext/search/ang/searchAdmin/crmSearch/pager.html rename to ext/search/ang/searchAdmin/compose/pager.html diff --git a/ext/search/ang/searchAdmin/crmSearch/results.html b/ext/search/ang/searchAdmin/compose/results.html similarity index 100% rename from ext/search/ang/searchAdmin/crmSearch/results.html rename to ext/search/ang/searchAdmin/compose/results.html diff --git a/ext/search/ang/searchAdmin/crmSearch.component.js b/ext/search/ang/searchAdmin/crmSearch.component.js index b4a2b1548b..7ee57f62b8 100644 --- a/ext/search/ang/searchAdmin/crmSearch.component.js +++ b/ext/search/ang/searchAdmin/crmSearch.component.js @@ -15,6 +15,7 @@ this.selectedRows = []; this.limit = CRM.cache.get('searchPageSize', 30); this.page = 1; + this.displayTypes = _.indexBy(CRM.searchAdmin.displayTypes, 'name'); // After a search this.results is an object of result arrays keyed by page, // Initially this.results is an empty string because 1: it's falsey (unlike an empty object) and 2: it doesn't throw an error if you try to access undefined properties (unlike null) this.results = ''; @@ -23,7 +24,7 @@ // Have the filters (WHERE, HAVING, GROUP BY, JOIN) changed? this.stale = true; - $scope.controls = {}; + $scope.controls = {tab: 'compose'}; $scope.joinTypes = [{k: false, v: ts('Optional')}, {k: true, v: ts('Required')}]; $scope.entities = formatForSelect2(CRM.vars.search.schema, 'name', 'title_plural', ['description', 'icon']); this.perm = { @@ -33,6 +34,8 @@ this.$onInit = function() { this.entityTitle = searchMeta.getEntity(this.savedSearch.api_entity).title_plural; + this.savedSearch.displays = this.savedSearch.displays || []; + if (!this.savedSearch.api_params) { this.savedSearch.api_params = { select: getDefaultSelect(), @@ -67,6 +70,13 @@ return _.includes(searchMeta.getEntity(ctrl.savedSearch.api_entity).params, param); }; + this.addDisplay = function(type) { + $scope.controls.tab = 'display_' + ctrl.savedSearch.displays.length; + ctrl.savedSearch.displays.push({ + type: type + }); + }; + $scope.getJoinEntities = function() { var joinEntities = _.transform(CRM.vars.search.links[ctrl.savedSearch.api_entity], function(joinEntities, link) { var entity = searchMeta.getEntity(link.entity); @@ -308,7 +318,7 @@ } } if (ctrl.load) { - ctrl.load.saved = false; + ctrl.saved = false; } } @@ -316,7 +326,7 @@ ctrl.stale = true; ctrl.selectedRows.length = 0; if (ctrl.load) { - ctrl.load.saved = false; + ctrl.saved = false; } if (ctrl.autoSearch) { ctrl.refreshAll(); diff --git a/ext/search/ang/searchAdmin/crmSearch.html b/ext/search/ang/searchAdmin/crmSearch.html index de97c672a6..a6b8dff76d 100644 --- a/ext/search/ang/searchAdmin/crmSearch.html +++ b/ext/search/ang/searchAdmin/crmSearch.html @@ -11,10 +11,28 @@
-
-
-
-
-
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ext/search/ang/searchAdmin/tabs.html b/ext/search/ang/searchAdmin/tabs.html new file mode 100644 index 0000000000..e70810ec6c --- /dev/null +++ b/ext/search/ang/searchAdmin/tabs.html @@ -0,0 +1,28 @@ +
  • + + + {{ ts('Compose Search') }} + +
  • +
  • + + + {{ ts('Smart Group: %1') }} + +
  • +
  • + + + {{ $ctrl.displayTypes[display.type].label }} + +
  • +
  • + + +
  • -- 2.25.1