SearchKit - Refactor searchDisplay admin components: move common functions to parent
authorColeman Watts <coleman@civicrm.org>
Fri, 12 Feb 2021 15:40:24 +0000 (10:40 -0500)
committerColeman Watts <coleman@civicrm.org>
Mon, 15 Feb 2021 02:22:36 +0000 (21:22 -0500)
ext/search/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js
ext/search/ang/crmSearchAdmin/crmSearchAdminDisplaySort.html
ext/search/ang/crmSearchAdmin/displays/searchAdminDisplayList.component.js
ext/search/ang/crmSearchAdmin/displays/searchAdminDisplayList.html
ext/search/ang/crmSearchAdmin/displays/searchAdminDisplayTable.component.js
ext/search/ang/crmSearchAdmin/displays/searchAdminDisplayTable.html

index 1880662b4e995bb91b744395e1f8c961d3dbf050..46dfde126b913af515a29b192ae36470d5cd77f9 100644 (file)
 
       this.preview = this.stale = false;
 
+      this.sortableOptions = {
+        connectWith: '.crm-search-admin-edit-columns',
+        containment: '.crm-search-admin-edit-columns-wrapper'
+      };
+
+      this.removeCol = function(index) {
+        ctrl.hiddenColumns.push(ctrl.display.settings.columns[index]);
+        ctrl.display.settings.columns.splice(index, 1);
+      };
+
+      this.restoreCol = function(index) {
+        ctrl.display.settings.columns.push(ctrl.hiddenColumns[index]);
+        ctrl.hiddenColumns.splice(index, 1);
+      };
+
       function fieldToColumn(fieldExpr) {
         var info = searchMeta.parseExpr(fieldExpr);
         return {
           ctrl.display.settings.columns = _.transform(ctrl.savedSearch.api_params.select, function(columns, fieldExpr) {
             columns.push(fieldToColumn(fieldExpr));
           });
-          return [];
+          ctrl.hiddenColumns = [];
         } else {
-          var activeColumns = _.collect(ctrl.display.settings.columns, 'expr'),
-            hiddenColumns = _.transform(ctrl.savedSearch.api_params.select, function(hiddenColumns, fieldExpr) {
+          var activeColumns = _.collect(ctrl.display.settings.columns, 'expr');
+          ctrl.hiddenColumns = _.transform(ctrl.savedSearch.api_params.select, function(hiddenColumns, fieldExpr) {
             if (!_.includes(activeColumns, fieldExpr)) {
               hiddenColumns.push(fieldToColumn(fieldExpr));
             }
@@ -66,7 +81,6 @@
               ctrl.display.settings.columns.splice(index, 1);
             }
           });
-          return hiddenColumns;
         }
       };
 
index 43b412b43688f267c769d309ab455c2721e34aa6..d37ae8b8c3ac25ce403a86b82ef17144fc7c4316 100644 (file)
@@ -1,6 +1,6 @@
 <div class="form-inline" ng-repeat="sort in $ctrl.display.settings.sort">
   <label for="crm-search-display-sort-{{$index}}">{{ $index ? ts('Also by:') : ts('Sort by:') }}</label>
-  <input id="crm-search-display-sort-{{$index}}" class="form-control huge" ng-model="sort[0]" crm-ui-select="{data: $ctrl.crmSearchAdminDisplay.fieldsForSort}" />
+  <input id="crm-search-display-sort-{{$index}}" class="form-control huge" ng-model="sort[0]" crm-ui-select="{data: $ctrl.parent.fieldsForSort}" />
   <select class="form-control" ng-model="sort[1]">
     <option value="ASC">{{ ts('Ascending') }}</option>
     <option value="DESC">{{ ts('Descending') }}</option>
@@ -9,5 +9,5 @@
 </div>
 <div class="form-inline">
   <label for="crm-search-display-add-sort">{{ $ctrl.display.settings.sort.length ? ts('Also by:') : ts('Sort by:') }}</label>
-  <input id="crm-search-display-add-sort" class="form-control crm-action-menu fa-plus huge" ng-model="controls.sort" crm-ui-select="{placeholder: ts('Select field'), data: $ctrl.crmSearchAdminDisplay.fieldsForSort}" ng-change="$ctrl.crmSearchAdminDisplay.pushSetting('sort', [controls.sort, 'ASC']); controls.sort = '';"/>
+  <input id="crm-search-display-add-sort" class="form-control crm-action-menu fa-plus huge" ng-model="controls.sort" crm-ui-select="{placeholder: ts('Select field'), data: $ctrl.parent.fieldsForSort}" ng-change="$ctrl.parent.pushSetting('sort', [controls.sort, 'ASC']); controls.sort = '';"/>
 </div>
index d3080f6ed85164468501b00859248fb68bad0412..b2d315f8ee918ce42039b938e272632463cae186 100644 (file)
@@ -8,7 +8,7 @@
       apiParams: '<'
     },
     require: {
-      crmSearchAdminDisplay: '^crmSearchAdminDisplay'
+      parent: '^crmSearchAdminDisplay'
     },
     templateUrl: '~/crmSearchAdmin/displays/searchAdminDisplayList.html',
     controller: function($scope, searchMeta) {
         ctrl = this;
       this.getFieldLabel = searchMeta.getDefaultLabel;
 
-      this.sortableOptions = {
-        connectWith: '.crm-search-admin-edit-columns',
-        containment: '.crm-search-admin-edit-columns-wrapper'
-      };
-
-      this.removeCol = function(index) {
-        ctrl.hiddenColumns.push(ctrl.display.settings.columns[index]);
-        ctrl.display.settings.columns.splice(index, 1);
-      };
-
-      this.restoreCol = function(index) {
-        ctrl.display.settings.columns.push(ctrl.hiddenColumns[index]);
-        ctrl.hiddenColumns.splice(index, 1);
-      };
-
       this.symbols = {
         ul: [
           {char: '', label: ts('Default')},
@@ -54,7 +39,7 @@
             pager: true
           };
         }
-        ctrl.hiddenColumns = ctrl.crmSearchAdminDisplay.initColumns();
+        ctrl.parent.initColumns();
       };
 
     }
index f27f7a3617ed3158417e56311c8c50b32683aa81..6c8f425daffe558c47aebff6bcb953cbecdc12f6 100644 (file)
@@ -22,7 +22,7 @@
   </div>
 </fieldset>
 <div class="crm-flex-box crm-search-admin-edit-columns-wrapper">
-  <fieldset class="crm-search-admin-edit-columns" ng-model="$ctrl.display.settings.columns" ui-sortable="$ctrl.sortableOptions">
+  <fieldset class="crm-search-admin-edit-columns" ng-model="$ctrl.display.settings.columns" ui-sortable="$ctrl.parent.sortableOptions">
     <legend>{{:: ts('Fields') }}</legend>
     <fieldset ng-repeat="col in $ctrl.display.settings.columns" class="crm-draggable">
       <legend>{{ $ctrl.getFieldLabel(col.expr) }}</legend>
@@ -31,7 +31,7 @@
         <div class="form-control checkbox-inline" ng-show="col.label.length" title="{{:: ts('Show label for every record even when this field is blank') }}">
           <label><input type="checkbox" ng-model="col.forceLabel"> <span>{{:: ts('Always show') }}</span></label>
         </div>
-        <button class="btn-xs pull-right" ng-click="$ctrl.removeCol($index)" title="{{:: ts('Hide') }}">
+        <button class="btn-xs pull-right" ng-click="$ctrl.parent.removeCol($index)" title="{{:: ts('Hide') }}">
           <i class="crm-i fa-ban"></i>
         </button>
       </div>
       </div>
     </fieldset>
   </fieldset>
-  <fieldset class="crm-search-admin-edit-columns" ng-model="$ctrl.hiddenColumns" ui-sortable="$ctrl.sortableOptions">
+  <fieldset class="crm-search-admin-edit-columns" ng-model="$ctrl.parent.hiddenColumns" ui-sortable="$ctrl.parent.sortableOptions">
     <legend>{{:: ts('Hidden Fields') }}</legend>
-    <fieldset ng-repeat="col in $ctrl.hiddenColumns" class="crm-draggable">
+    <fieldset ng-repeat="col in $ctrl.parent.hiddenColumns" class="crm-draggable">
       <legend>{{ $ctrl.getFieldLabel(col.expr) }}</legend>
       <div class="form-inline">
         <label>{{:: ts('Label:') }}</label> <input disabled class="form-control" type="text" ng-model="col.label" />
-        <button class="btn-xs pull-right" ng-click="$ctrl.restoreCol($index)" title="{{:: ts('Show') }}">
+        <button class="btn-xs pull-right" ng-click="$ctrl.parent.restoreCol($index)" title="{{:: ts('Show') }}">
           <i class="crm-i fa-undo"></i>
         </button>
       </div>
index 3dc937b70dc966c4f155704f7cbafbfdb0d65a1b..c6b999d57423a881ebbe852315c235462d440733 100644 (file)
@@ -8,7 +8,7 @@
       apiParams: '<'
     },
     require: {
-      crmSearchAdminDisplay: '^crmSearchAdminDisplay'
+      parent: '^crmSearchAdminDisplay'
     },
     templateUrl: '~/crmSearchAdmin/displays/searchAdminDisplayTable.html',
     controller: function($scope, searchMeta) {
         ctrl = this;
       this.getFieldLabel = searchMeta.getDefaultLabel;
 
-      this.sortableOptions = {
-        connectWith: '.crm-search-admin-edit-columns',
-        containment: '.crm-search-admin-edit-columns-wrapper'
-      };
-
-      this.removeCol = function(index) {
-        ctrl.hiddenColumns.push(ctrl.display.settings.columns[index]);
-        ctrl.display.settings.columns.splice(index, 1);
-      };
-
-      this.restoreCol = function(index) {
-        ctrl.display.settings.columns.push(ctrl.hiddenColumns[index]);
-        ctrl.hiddenColumns.splice(index, 1);
-      };
-
       this.$onInit = function () {
         if (!ctrl.display.settings) {
           ctrl.display.settings = {
@@ -38,7 +23,7 @@
             pager: true
           };
         }
-        ctrl.hiddenColumns = ctrl.crmSearchAdminDisplay.initColumns();
+        ctrl.parent.initColumns();
       };
 
     }
index 2068cc2b2ae9639166ea565fa3502bfb6bd9aca6..0a53de615d7a432a2637b3b6dd3cb8ea17a0fc1c 100644 (file)
   </div>
 </fieldset>
 <div class="crm-flex-box crm-search-admin-edit-columns-wrapper">
-  <fieldset class="crm-search-admin-edit-columns" ng-model="$ctrl.display.settings.columns" ui-sortable="$ctrl.sortableOptions">
+  <fieldset class="crm-search-admin-edit-columns" ng-model="$ctrl.display.settings.columns" ui-sortable="$ctrl.parent.sortableOptions">
     <legend>{{:: ts('Columns') }}</legend>
     <fieldset ng-repeat="col in $ctrl.display.settings.columns" class="crm-draggable">
       <legend>{{ $ctrl.getFieldLabel(col.expr) }}</legend>
       <div class="form-inline">
         <label>{{:: ts('Label:') }}</label> <input class="form-control" type="text" ng-model="col.label" />
-        <button class="btn-xs pull-right" ng-click="$ctrl.removeCol($index)" title="{{:: ts('Hide') }}">
+        <button class="btn-xs pull-right" ng-click="$ctrl.parent.removeCol($index)" title="{{:: ts('Hide') }}">
           <i class="crm-i fa-ban"></i>
         </button>
       </div>
       </div>
     </fieldset>
   </fieldset>
-  <fieldset class="crm-search-admin-edit-columns" ng-model="$ctrl.hiddenColumns" ui-sortable="$ctrl.sortableOptions">
+  <fieldset class="crm-search-admin-edit-columns" ng-model="$ctrl.parent.hiddenColumns" ui-sortable="$ctrl.parent.sortableOptions">
     <legend>{{:: ts('Hidden Columns') }}</legend>
-    <fieldset ng-repeat="col in $ctrl.hiddenColumns" class="crm-draggable">
+    <fieldset ng-repeat="col in $ctrl.parent.hiddenColumns" class="crm-draggable">
       <legend>{{ $ctrl.getFieldLabel(col.expr) }}</legend>
       <div class="form-inline">
         <label>{{:: ts('Label:') }}</label> <input disabled class="form-control" type="text" ng-model="col.label" />
-        <button class="btn-xs pull-right" ng-click="$ctrl.restoreCol($index)" title="{{:: ts('Show') }}">
+        <button class="btn-xs pull-right" ng-click="$ctrl.parent.restoreCol($index)" title="{{:: ts('Show') }}">
           <i class="crm-i fa-undo"></i>
         </button>
       </div>