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