From 2b8a7972a0f05b42077b729b7056d6b4c5f10b24 Mon Sep 17 00:00:00 2001 From: garrettmills Date: Thu, 12 Nov 2020 22:14:50 -0600 Subject: [PATCH] Add ability to open database in full-screen modal --- src/app/components/components.module.ts | 4 ++ .../database/database-page.component.ts | 41 +++++++++++++++++++ .../editor/database/database.component.html | 35 ++++++++++++---- .../editor/database/database.component.scss | 10 +++++ .../editor/database/database.component.ts | 31 ++++++++++++-- src/app/service/editor.service.ts | 8 ++++ 6 files changed, 118 insertions(+), 11 deletions(-) create mode 100644 src/app/components/editor/database/database-page.component.ts diff --git a/src/app/components/components.module.ts b/src/app/components/components.module.ts index 24b31dc..7c31512 100644 --- a/src/app/components/components.module.ts +++ b/src/app/components/components.module.ts @@ -38,6 +38,7 @@ import {WysiwygEditorComponent} from './editor/database/editors/wysiwyg/wysiwyg- import {WysiwygModalComponent} from './editor/database/editors/wysiwyg/wysiwyg-modal.component'; import {AngularResizedEventModule} from 'angular-resize-event'; import {DateTimeFilterComponent} from './editor/database/filters/date-time.filter'; +import {DatabasePageComponent} from './editor/database/database-page.component'; @NgModule({ declarations: [ @@ -70,6 +71,7 @@ import {DateTimeFilterComponent} from './editor/database/filters/date-time.filte WysiwygEditorComponent, WysiwygModalComponent, DateTimeFilterComponent, + DatabasePageComponent, ], imports: [ CommonModule, @@ -114,6 +116,7 @@ import {DateTimeFilterComponent} from './editor/database/filters/date-time.filte WysiwygEditorComponent, WysiwygModalComponent, DateTimeFilterComponent, + DatabasePageComponent, ], exports: [ NodePickerComponent, @@ -145,6 +148,7 @@ import {DateTimeFilterComponent} from './editor/database/filters/date-time.filte WysiwygEditorComponent, WysiwygModalComponent, DateTimeFilterComponent, + DatabasePageComponent, ] }) export class ComponentsModule {} diff --git a/src/app/components/editor/database/database-page.component.ts b/src/app/components/editor/database/database-page.component.ts new file mode 100644 index 0000000..5fb48e0 --- /dev/null +++ b/src/app/components/editor/database/database-page.component.ts @@ -0,0 +1,41 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {EditorService} from '../../../service/editor.service'; + +@Component({ + selector: 'noded-database-page', + template: ` +
+ +
+ `, + styles: [ + ` + .container { + height: 100%; + } + + editor-database { + height: 100%; + display: flex; + } + `, + ], +}) +export class DatabasePageComponent implements OnInit { + @Input() nodeId: string; + @Input() pageId: string; + + public ready = false; + + constructor( + public editorService: EditorService, + ) { + this.editorService = editorService.getEditor(); + } + + ngOnInit() { + this.editorService.startEditing(this.pageId).then(() => { + this.ready = true; + }); + } +} diff --git a/src/app/components/editor/database/database.component.html b/src/app/components/editor/database/database.component.html index 724533b..d3463cc 100644 --- a/src/app/components/editor/database/database.component.html +++ b/src/app/components/editor/database/database.component.html @@ -1,20 +1,39 @@ -
+
- +
+ + + + +
 Manage Columns  Insert Row  Delete Row + Open
{ + this.columnDefs = [{ + width: 20, + }, ...data.map(x => { x.editable = !this.readonly; x.minWidth = 150; x.resizable = true; @@ -264,7 +268,7 @@ export class DatabaseComponent extends EditorNodeContract implements OnInit { } return x; - }); + })]; this.agGridElement.api.setColumnDefs([]); this.agGridElement.api.setColumnDefs(this.columnDefs); @@ -325,7 +329,7 @@ export class DatabaseComponent extends EditorNodeContract implements OnInit { } public getSaveColumns() { - return this.columnDefs.map(x => { + return this.columnDefs.slice(1).map(x => { if ( !x.additionalData ) { x.additionalData = {}; } @@ -394,4 +398,25 @@ export class DatabaseComponent extends EditorNodeContract implements OnInit { this.dirty = false; } + + async openDatabase() { + const modal = await this.modals.create({ + component: DatabasePageComponent, + componentProps: { + nodeId: this.nodeId, + pageId: this.editorService.currentPageId, + }, + cssClass: 'modal-big', + }); + + modal.onDidDismiss().then(() => { + this.editorService.reload(); + }); + + await modal.present(); + } + + dismiss() { + this.modals.dismiss(); + } } diff --git a/src/app/service/editor.service.ts b/src/app/service/editor.service.ts index 38858f9..e273343 100644 --- a/src/app/service/editor.service.ts +++ b/src/app/service/editor.service.ts @@ -56,6 +56,10 @@ export class EditorService { this.privTriggerSave(); } + public get currentPageId() { + return this.currentPage?.UUID; + } + public get isSaving() { return this.saving; } @@ -111,6 +115,10 @@ export class EditorService { return inst; } + async reload() { + await this.startEditing(this.currentPageId); + } + async startEditing(pageId: string, version?: number) { if ( this.currentPage ) { await this.stopEditing();