SearchKit - Show shorter date in listing and fix functions in tokens
authorColeman Watts <coleman@civicrm.org>
Sat, 4 Sep 2021 18:22:12 +0000 (14:22 -0400)
committerColeman Watts <coleman@civicrm.org>
Mon, 6 Sep 2021 01:42:40 +0000 (21:42 -0400)
ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
ext/search_kit/ang/crmSearchAdmin/searchListing/crmSearchAdminSearchListing.component.js

index 03d392d51189e4d15a60aab54368226c04700789..d18254c7c1b968dfeeb3af62c9fb24be0392d7c3 100644 (file)
@@ -319,6 +319,9 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction {
    * @param array $apiParams
    */
   protected function augmentSelectClause(&$apiParams): void {
+    $existing = array_map(function($item) {
+      return explode(' AS ', $item)[1] ?? $item;
+    }, $apiParams['select']);
     $additions = [];
     // Add primary key field if actions are enabled
     if (!empty($this->display['settings']['actions'])) {
@@ -334,14 +337,16 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction {
       }
 
       // Select value fields for in-place editing
-      if (isset($column['editable']['value']) && !in_array($column['editable']['value'], $apiParams['select'])) {
-        $apiParams['select'][] = $column['editable']['value'];
+      if (isset($column['editable']['value'])) {
+        $additions[] = $column['editable']['value'];
       }
     }
     // Add fields referenced via token
     $tokens = [];
     preg_match_all('/\\[([^]]+)\\]/', $possibleTokens, $tokens);
-    $apiParams['select'] = array_unique(array_merge($apiParams['select'], $additions, $tokens[1]));
+    // Only add fields not already in SELECT clause
+    $additions = array_diff(array_merge($additions, $tokens[1]), $existing);
+    $apiParams['select'] = array_unique(array_merge($apiParams['select'], $additions));
   }
 
   /**
index 038ec00c2e84162d327a36fe266eb9f06233a9e8..e6e8bb50772eec94532c8a6df20782d9b3b10e6b 100644 (file)
@@ -28,6 +28,8 @@
             'api_params',
             'created_date',
             'modified_date',
+            'DATE(created_date) AS date_created',
+            'DATE(modified_date) AS date_modified',
             'GROUP_CONCAT(display.name ORDER BY display.id) AS display_name',
             'GROUP_CONCAT(display.label ORDER BY display.id) AS display_label',
             'GROUP_CONCAT(display.type:icon ORDER BY display.id) AS display_icon',
               }),
               searchMeta.fieldToColumn('created_date', {
                 label: ts('Created'),
-                dataType: 'Date',
-                rewrite: ts('%1 by %2', {1: '[created_date]', 2: '[created_id.display_name]'})
+                title: '[created_date]',
+                rewrite: ts('%1 by %2', {1: '[date_created]', 2: '[created_id.display_name]'})
               }),
               searchMeta.fieldToColumn('modified_date', {
                 label: ts('Last Modified'),
-                dataType: 'Date',
-                rewrite: ts('%1 by %2', {1: '[modified_date]', 2: '[modified_id.display_name]'})
+                title: '[modified_date]',
+                rewrite: ts('%1 by %2', {1: '[date_modified]', 2: '[modified_id.display_name]'})
               }),
               {
                 type: 'include',