Merge pull request #22188 from totten/master-uninstall
[civicrm-core.git] / ext / search_kit / ang / crmSearchAdmin / displays / searchAdminDisplayTable.component.js
index c4df08c5c5da9a454188e24b53e17f184472ad1f..b8cdfee5a5b37eb654810728a4cbd4082a7e93d5 100644 (file)
@@ -11,7 +11,7 @@
       parent: '^crmSearchAdminDisplay'
     },
     templateUrl: '~/crmSearchAdmin/displays/searchAdminDisplayTable.html',
-    controller: function($scope) {
+    controller: function($scope, searchMeta) {
       var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'),
         ctrl = this;
 
@@ -21,7 +21,7 @@
         {name: 'table-striped', label: ts('Even/Odd Stripes')}
       ];
 
-      // Check if array conatains item
+      // Check if array contains item
       this.includes = _.includes;
 
       // Add or remove an item from an array
         }
       };
 
+      this.toggleDraggable = function() {
+        if (ctrl.display.settings.draggable) {
+          delete ctrl.display.settings.draggable;
+        } else {
+          ctrl.display.settings.sort = [];
+          ctrl.display.settings.draggable = searchMeta.getEntity(ctrl.apiEntity).order_by;
+        }
+      };
+
       this.$onInit = function () {
         if (!ctrl.display.settings) {
-          ctrl.display.settings = {
-            limit: CRM.crmSearchAdmin.defaultPagerSize,
-            classes: ['table'],
-            pager: {}
-          };
+          ctrl.display.settings = _.extend({}, _.cloneDeep(CRM.crmSearchAdmin.defaultDisplay.settings), {columns: null});
+          if (searchMeta.getEntity(ctrl.apiEntity).order_by) {
+            ctrl.display.settings.sort.push([searchMeta.getEntity(ctrl.apiEntity).order_by, 'ASC']);
+          }
         }
         // Displays created prior to 5.43 may not have this property
         ctrl.display.settings.classes = ctrl.display.settings.classes || [];
+        // Table can be draggable if the main entity is a SortableEntity.
+        ctrl.canBeDraggable = _.includes(searchMeta.getEntity(ctrl.apiEntity).type, 'SortableEntity');
         ctrl.parent.initColumns({label: true, sortable: true});
       };