parent
0fecb8a4ba
commit
72ab2064dd
@ -0,0 +1,81 @@
|
||||
import {Injectable} from '@angular/core';
|
||||
import {DatabasePageComponent} from '../components/editor/database/database-page.component';
|
||||
import {FileBoxPageComponent} from '../components/nodes/file-box/file-box-page.component';
|
||||
import {NavigationService} from './navigation.service';
|
||||
import {EditorService} from './editor.service';
|
||||
import {ModalController} from '@ionic/angular';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class OpenerService {
|
||||
public currentPageId = '';
|
||||
|
||||
constructor(
|
||||
protected readonly nav: NavigationService,
|
||||
protected readonly editor: EditorService,
|
||||
protected readonly ionModalController: ModalController,
|
||||
) { }
|
||||
|
||||
async openTarget(pageId: string, nodeId?: string) {
|
||||
if ( !nodeId ) {
|
||||
this.currentPageId = pageId;
|
||||
return this.nav.requestNavigation(pageId);
|
||||
}
|
||||
|
||||
const node = (await this.editor.loadNodes(pageId)).find(rec => rec.UUID === nodeId);
|
||||
if ( !node ) {
|
||||
this.currentPageId = pageId;
|
||||
return this.nav.requestNavigation(pageId);
|
||||
}
|
||||
|
||||
if ( node.type === 'database_ref' ) {
|
||||
return this.openDatabase(pageId, nodeId);
|
||||
}
|
||||
|
||||
if ( node.type === 'file_box' ) {
|
||||
return this.openFileBox(pageId, nodeId);
|
||||
}
|
||||
}
|
||||
|
||||
async openDatabase(pageId: string, nodeId: string) {
|
||||
const modal = await this.ionModalController.create({
|
||||
component: DatabasePageComponent,
|
||||
componentProps: {
|
||||
nodeId,
|
||||
pageId,
|
||||
},
|
||||
cssClass: 'modal-big',
|
||||
});
|
||||
|
||||
const modalState = {
|
||||
modal : true,
|
||||
desc : 'Open Database'
|
||||
};
|
||||
|
||||
history.pushState(modalState, null);
|
||||
|
||||
await modal.present();
|
||||
}
|
||||
|
||||
async openFileBox(pageId: string, nodeId: string, boxId?: string) {
|
||||
const modal = await this.ionModalController.create({
|
||||
component: FileBoxPageComponent,
|
||||
componentProps: {
|
||||
nodeId,
|
||||
pageId,
|
||||
boxId,
|
||||
},
|
||||
cssClass: 'modal-big',
|
||||
});
|
||||
|
||||
const modalState = {
|
||||
modal : true,
|
||||
desc : 'Open File Box'
|
||||
};
|
||||
|
||||
history.pushState(modalState, null);
|
||||
|
||||
await modal.present();
|
||||
}
|
||||
}
|
Loading…
Reference in new issue