From 5d647ff4dee932694a1acfd3393b1ce7fb369fac Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Mon, 17 Oct 2022 11:39:57 +0300 Subject: [PATCH 1/6] Add json view --- app/components/button.js | 2 +- .../admin/indexes/item/documents/index.js | 4 +- .../admin/indexes/item/documents/index.hbs | 166 ++++++++++-------- 3 files changed, 97 insertions(+), 75 deletions(-) diff --git a/app/components/button.js b/app/components/button.js index 1ef8661..b354690 100644 --- a/app/components/button.js +++ b/app/components/button.js @@ -40,7 +40,7 @@ export default class ButtonComponent extends Component { {{/if}} diff --git a/app/controllers/admin/indexes/item/documents/index.js b/app/controllers/admin/indexes/item/documents/index.js index 9fa13f0..f3bd8b8 100644 --- a/app/controllers/admin/indexes/item/documents/index.js +++ b/app/controllers/admin/indexes/item/documents/index.js @@ -1,7 +1,7 @@ import Controller from '@ember/controller'; import { action } from '@ember/object'; import { tracked } from '@glimmer/tracking'; -import { Magnify, Table, MapOutline } from 'ember-mdi'; +import { Magnify, Table, /* MapOutline, */ CodeJson } from 'ember-mdi'; export default class AdminIndexesItemDocumentsIndexController extends Controller { @tracked q = null; @@ -19,7 +19,7 @@ export default class AdminIndexesItemDocumentsIndexController extends Controller // key: view name, value: icon views = { table: Table, - map: MapOutline, + json: CodeJson, }; get attributes() { diff --git a/app/templates/admin/indexes/item/documents/index.hbs b/app/templates/admin/indexes/item/documents/index.hbs index fdad16a..ccf3945 100644 --- a/app/templates/admin/indexes/item/documents/index.hbs +++ b/app/templates/admin/indexes/item/documents/index.hbs @@ -60,81 +60,103 @@ --}} {{#if (gt @model.data.estimatedTotalHits 0)}} - - {{#let - (array @model.index.uid (get data @model.index.primaryKey)) - as |models| - }} - {{#each this.attributes as |field|}} - {{#if (not (includes field this.hiddenFields))}} - - {{#let (get data field) as |value|}} - {{#if (eq @model.index.primaryKey field)}} +
+ {{#each-in this.views as |key icon|}} +
+ + {{#if (eq this.dataView 'table')}} + + {{#let + (array @model.index.uid (get data @model.index.primaryKey)) + as |models| + }} + {{#each this.attributes as |field|}} + {{#if (not (includes field this.hiddenFields))}} + + {{#let (get data field) as |value|}} + {{#if (eq @model.index.primaryKey field)}} + {{value}} + {{else if (eq (type-of value) 'object')}} + {{json-stringify value}} + {{else}} + {{value}} + {{/if}} + {{/let}} + + {{/if}} + {{/each}} + + {{#let + 'flex items-center px-4 py-2 text-inherit no-underline text-sm hover:bg-base-6 hover:text-base-1' + as |linkClasses| + }} + + + + + {{value}} - {{else if (eq (type-of value) 'object')}} - {{json-stringify value}} - {{else}} - {{value}} - {{/if}} - {{/let}} - - {{/if}} - {{/each}} - - {{#let - 'flex items-center px-4 py-2 text-inherit no-underline text-sm hover:bg-base-6 hover:text-base-1' - as |linkClasses| - }} - - - - - - - - View - - - - Edit - - - - Delete - - - - {{/let}} - - {{/let}} - + class={{linkClasses}} + > + + View + + + + Edit + + + + Delete + + + + {{/let}} + + {{/let}} + + {{else if (eq this.dataView 'json')}} + {{#each @model.data.hits as |item|}} + + {{/each}} + {{/if}}
{{this.fromHits}} From 1ced61a5cd0ed5c6a4501f480c8febd3b6249a3c Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Mon, 17 Oct 2022 11:46:00 +0300 Subject: [PATCH 2/6] Refactore initialization of monac editor --- app/components/monaco-editor.js | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/app/components/monaco-editor.js b/app/components/monaco-editor.js index 2b83b9d..b5b5fe3 100644 --- a/app/components/monaco-editor.js +++ b/app/components/monaco-editor.js @@ -48,17 +48,10 @@ export default class MonacoEditorComponent extends Component { @action initEditor(el) { - const model = getModel( - this.args.value, - this.args.language, - this.args.uri, - this.args.schema - ); - - this.editor = editor.create(el, { - model, + const options = { // theme: 'vs-dark', //TODO: add checking global theme readOnly: this.args.readOnly ?? false, + language: this.args.language, // wordWrap: 'on', // wrappingIndent: 'same', lineNumbers: 'off', @@ -67,7 +60,20 @@ export default class MonacoEditorComponent extends Component { minimap: { enabled: false, }, - }); + }; + + if (this.args.uri) { + options.model = getModel( + this.args.value, + this.args.language, + this.args.uri, + this.args.schema + ); + } else if (this.args.value) { + options.value = this.args.value; + } + + this.editor = editor.create(el, options); // Autoresize height of element const onDidContentSizeChangeHandler = this.editor.onDidContentSizeChange( From c367c1e523a31b134bc515d41d7e5141bc979180 Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Mon, 17 Oct 2022 11:53:27 +0300 Subject: [PATCH 3/6] Fix scroll events and add minHeight and maxHeight to monaco componet --- app/components/monaco-editor.js | 9 +++++++-- app/templates/admin/indexes/item/documents/index.hbs | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/components/monaco-editor.js b/app/components/monaco-editor.js index b5b5fe3..8aafbd5 100644 --- a/app/components/monaco-editor.js +++ b/app/components/monaco-editor.js @@ -60,6 +60,9 @@ export default class MonacoEditorComponent extends Component { minimap: { enabled: false, }, + scrollbar: { + alwaysConsumeMouseWheel: false, + }, }; if (this.args.uri) { @@ -75,12 +78,14 @@ export default class MonacoEditorComponent extends Component { this.editor = editor.create(el, options); + const minHeight = this.args.minHeight ?? 160; + const maxHeight = this.args.maxHeight ?? 420; // Autoresize height of element const onDidContentSizeChangeHandler = this.editor.onDidContentSizeChange( () => { const contentHeight = Math.min( - Math.max(this.editor.getContentHeight(), 160), - 420 + Math.max(this.editor.getContentHeight(), minHeight), + maxHeight ); el.style.height = `${contentHeight + 1}px`; diff --git a/app/templates/admin/indexes/item/documents/index.hbs b/app/templates/admin/indexes/item/documents/index.hbs index ccf3945..791383f 100644 --- a/app/templates/admin/indexes/item/documents/index.hbs +++ b/app/templates/admin/indexes/item/documents/index.hbs @@ -153,6 +153,7 @@ @value={{json-stringify item}} @language='json' @readOnly={{true}} + @minHeight={{0}} class='mb-4' /> {{/each}} From 4b2c82a72253086d001ff5ed883c612a3f5e6b2d Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Mon, 17 Oct 2022 12:38:53 +0300 Subject: [PATCH 4/6] Style view toggler --- app/templates/admin/indexes/item/documents/index.hbs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/templates/admin/indexes/item/documents/index.hbs b/app/templates/admin/indexes/item/documents/index.hbs index 791383f..4cae6c4 100644 --- a/app/templates/admin/indexes/item/documents/index.hbs +++ b/app/templates/admin/indexes/item/documents/index.hbs @@ -60,13 +60,13 @@
--}} {{#if (gt @model.data.estimatedTotalHits 0)}} -
+
{{#each-in this.views as |key icon|}}
From e45252c0d91d24ed0fd167a3f071c740415bb212 Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Mon, 17 Oct 2022 13:30:46 +0300 Subject: [PATCH 5/6] Add links to item's pages in context menu --- app/components/monaco-editor.js | 7 +++ .../admin/indexes/item/documents/index.js | 8 ++++ .../admin/indexes/item/documents/index.hbs | 48 +++++++++++++++++-- 3 files changed, 59 insertions(+), 4 deletions(-) diff --git a/app/components/monaco-editor.js b/app/components/monaco-editor.js index 8aafbd5..5453091 100644 --- a/app/components/monaco-editor.js +++ b/app/components/monaco-editor.js @@ -78,6 +78,13 @@ export default class MonacoEditorComponent extends Component { this.editor = editor.create(el, options); + if (Array.isArray(this.args.actions)) { + this.args.actions.forEach((item) => { + // assign because item can be a proxy object + this.editor.addAction(Object.assign({}, item)); + }); + } + const minHeight = this.args.minHeight ?? 160; const maxHeight = this.args.maxHeight ?? 420; // Autoresize height of element diff --git a/app/controllers/admin/indexes/item/documents/index.js b/app/controllers/admin/indexes/item/documents/index.js index f3bd8b8..1970471 100644 --- a/app/controllers/admin/indexes/item/documents/index.js +++ b/app/controllers/admin/indexes/item/documents/index.js @@ -2,8 +2,11 @@ import Controller from '@ember/controller'; import { action } from '@ember/object'; import { tracked } from '@glimmer/tracking'; import { Magnify, Table, /* MapOutline, */ CodeJson } from 'ember-mdi'; +import { inject as service } from '@ember/service'; export default class AdminIndexesItemDocumentsIndexController extends Controller { + @service router; + @tracked q = null; @tracked limit = 20; @tracked page = 1; @@ -65,6 +68,11 @@ export default class AdminIndexesItemDocumentsIndexController extends Controller return result; } + @action + goToPage(route, index, id) { + this.router.transitionTo(route, index, id); + } + @action toggleAttribute(name) { if (this.attributes.includes(name)) { diff --git a/app/templates/admin/indexes/item/documents/index.hbs b/app/templates/admin/indexes/item/documents/index.hbs index 4cae6c4..5df3875 100644 --- a/app/templates/admin/indexes/item/documents/index.hbs +++ b/app/templates/admin/indexes/item/documents/index.hbs @@ -66,7 +66,8 @@ @icon={{icon}} @onClick={{set this 'dataView'}} @value={{key}} - class='w-auto rounded-none first:rounded-l last:rounded-r {{if (eq this.dataView key) "text-primary"}}' + class='w-auto rounded-none first:rounded-l last:rounded-r + {{if (eq this.dataView key) "text-primary"}}' /> {{/each-in}}
@@ -118,7 +119,7 @@ class='absolute z-dropdown right-0 w-28 mt-2 py-1 origin-top-right bg-base-7 border rounded shadow-sm outline-none' > @@ -148,12 +149,51 @@ {{/let}}
{{else if (eq this.dataView 'json')}} - {{#each @model.data.hits as |item|}} + + {{#each @model.data.hits as |data|}} {{/each}} From b32d07038e610531ff351b56b20414df9c292a8d Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Mon, 17 Oct 2022 13:36:06 +0300 Subject: [PATCH 6/6] Fix transition argument --- app/templates/admin/indexes/item/documents/index.hbs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/templates/admin/indexes/item/documents/index.hbs b/app/templates/admin/indexes/item/documents/index.hbs index 5df3875..dca65b7 100644 --- a/app/templates/admin/indexes/item/documents/index.hbs +++ b/app/templates/admin/indexes/item/documents/index.hbs @@ -166,7 +166,7 @@ this.goToPage 'admin.indexes.item.documents.document.index' @model.index - data + (get data @model.index.primaryKey) ) ) (hash @@ -178,7 +178,7 @@ this.goToPage 'admin.indexes.item.documents.document.edit' @model.index - data + (get data @model.index.primaryKey) ) ) (hash @@ -190,7 +190,7 @@ this.goToPage 'admin.indexes.item.documents.document.delete' @model.index - data + (get data @model.index.primaryKey) ) ) }}