From 8d5faaa33dca444d91cdf68728acd0b550560b66 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Thu, 3 Mar 2022 22:39:19 -0500 Subject: [PATCH] Afform - Refactor toward multiple search displays on an afform --- .../ang/afGuiEditor/afGuiEditor.component.js | 36 +++++--- .../ang/afGuiEditor/afGuiEditorPalette.html | 11 +-- .../ang/afGuiEditor/afGuiSearch.component.js | 86 ++++++++++++------- .../admin/ang/afGuiEditor/afGuiSearch.html | 13 ++- .../admin/ang/afGuiEditor/config-form.html | 11 --- 5 files changed, 92 insertions(+), 65 deletions(-) diff --git a/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js b/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js index f2c4e9dcc2..95e89ee2ea 100644 --- a/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js +++ b/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js @@ -86,10 +86,19 @@ else if (editor.getFormType() === 'search') { editor.layout['#children'] = afGui.findRecursive(editor.afform.layout, {'af-fieldset': ''})[0]['#children']; - editor.searchDisplay = afGui.findRecursive(editor.layout['#children'], function(item) { - return item['#tag'] && item['#tag'].indexOf('crm-search-display-') === 0; - })[0]; - editor.searchFilters = getSearchFilterOptions(); + var searchFieldsets = afGui.findRecursive(editor.afform.layout, {'af-fieldset': ''}); + editor.searchDisplays = _.transform(searchFieldsets, function(searchDisplays, fieldset) { + var displayElement = afGui.findRecursive(fieldset['#children'], function(item) { + return item['search-name'] && item['#tag'] && item['#tag'].indexOf('crm-search-display-') === 0; + })[0]; + if (displayElement) { + searchDisplays[displayElement['search-name'] + (displayElement['display-name'] ? '.' + displayElement['display-name'] : '')] = { + element: displayElement, + fieldset: fieldset, + settings: afGui.getSearchDisplay(displayElement['search-name'], displayElement['display-name']) + }; + } + }, {}); } // Set changesSaved to true on initial load, false thereafter whenever changes are made to the model @@ -222,19 +231,22 @@ this.toggleContactSummary = function() { if (editor.afform.contact_summary) { editor.afform.contact_summary = false; - if (editor.afform.type === 'search') { - delete editor.searchDisplay.filters; - } + _.each(editor.searchDisplays, function(searchDisplay) { + delete searchDisplay.element.filters; + }); } else { editor.afform.contact_summary = 'block'; - if (editor.afform.type === 'search') { - editor.searchDisplay.filters = editor.searchFilters[0].key; - } + _.each(editor.searchDisplays, function(searchDisplay) { + var filterOptions = getSearchFilterOptions(searchDisplay.settings); + if (filterOptions.length) { + searchDisplay.element.filters = filterOptions[0].key; + } + }); } }; - function getSearchFilterOptions() { - var searchDisplay = afGui.getSearchDisplay(editor.searchDisplay['search-name'], editor.searchDisplay['display-name']), + function getSearchFilterOptions(searchDisplay) { + var entityCount = {}, options = []; diff --git a/ext/afform/admin/ang/afGuiEditor/afGuiEditorPalette.html b/ext/afform/admin/ang/afGuiEditor/afGuiEditorPalette.html index fe098c0f96..1d59dce275 100644 --- a/ext/afform/admin/ang/afGuiEditor/afGuiEditorPalette.html +++ b/ext/afform/admin/ang/afGuiEditor/afGuiEditorPalette.html @@ -15,10 +15,11 @@ -