From 18187c479636cb9c2f2ae608208cd760909e77bd Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Sat, 10 Sep 2022 18:08:12 +0300 Subject: [PATCH] Add field toggler for document table --- app/components/form/checkbox.hbs | 6 +- .../admin/indexes/item/documents/index.js | 21 +++++++ .../admin/indexes/item/documents/index.js | 1 + .../admin/indexes/item/documents/index.hbs | 56 ++++++++++++++----- 4 files changed, 67 insertions(+), 17 deletions(-) diff --git a/app/components/form/checkbox.hbs b/app/components/form/checkbox.hbs index 123fe08..a0cffe2 100644 --- a/app/components/form/checkbox.hbs +++ b/app/components/form/checkbox.hbs @@ -1,8 +1,8 @@ diff --git a/app/controllers/admin/indexes/item/documents/index.js b/app/controllers/admin/indexes/item/documents/index.js index be89251..8775cca 100644 --- a/app/controllers/admin/indexes/item/documents/index.js +++ b/app/controllers/admin/indexes/item/documents/index.js @@ -9,6 +9,7 @@ export default class AdminIndexesItemDocumentsIndexController extends Controller @tracked page = 1; @tracked dataView = 'table'; @tracked sort; + @tracked hiddenFields = []; queryParams = ['q', 'page', 'limit', 'sort']; @@ -20,6 +21,17 @@ export default class AdminIndexesItemDocumentsIndexController extends Controller map: MapOutline, }; + get attributes() { + if ( + this.model.displayedAttributes.length > 1 && + this.model.displayedAttributes[0] !== '*' + ) { + return this.model.displayedAttributes; + } else { + return Object.keys(this.model.stats.fieldDistribution); + } + } + get fromHits() { return 1 + this.model.data.offset; } @@ -58,6 +70,15 @@ export default class AdminIndexesItemDocumentsIndexController extends Controller // return [primaryKey].concat(sortedArray); // } + @action + toggleHiddenField(name) { + if (this.hiddenFields.includes(name)) { + this.hiddenFields = this.hiddenFields.filter((item) => item !== name); + } else { + this.hiddenFields = this.hiddenFields.concat([name]); + } + } + @action searchTextChanged(value) { this.q = value === '' ? null : value; diff --git a/app/routes/admin/indexes/item/documents/index.js b/app/routes/admin/indexes/item/documents/index.js index 650d369..d445671 100644 --- a/app/routes/admin/indexes/item/documents/index.js +++ b/app/routes/admin/indexes/item/documents/index.js @@ -30,6 +30,7 @@ export default class AdminIndexesItemDocumentsIndexRoute extends Route { index, data: index.search(q, options), sortableAttributes: index.getSortableAttributes(), + displayedAttributes: index.getSetting('displayed-attributes'), stats: index.getStats(), }); } diff --git a/app/templates/admin/indexes/item/documents/index.hbs b/app/templates/admin/indexes/item/documents/index.hbs index 6d05c23..8acd955 100644 --- a/app/templates/admin/indexes/item/documents/index.hbs +++ b/app/templates/admin/indexes/item/documents/index.hbs @@ -40,6 +40,32 @@ {{/if}} + +
+ + + + + + {{#each this.attributes as |item|}} +
+ +
+ {{/each}} +
+
+
{{!--
@@ -62,20 +88,22 @@ class='w-full' as |Column data| > - - - {{get data @model.index.primaryKey}} - - - {{#each-in @model.stats.fieldDistribution as |field|}} - {{#if (not-eq field @model.index.primaryKey)}} + + {{get data @model.index.primaryKey}} + + + {{/if}} + {{#each this.attributes as |field|}} + {{#if (and (not-eq field @model.index.primaryKey) (not (includes field this.hiddenFields)))}} {{/if}} - {{/each-in}} + {{/each}} {{#let (array @model.index.uid (get data @model.index.primaryKey))