UNPKG

metadata-editor-workspace

Version:

Metadata Editor Workspace module for ME-Core Powered by Assyst

99 lines (89 loc) 3.62 kB
import {Injectable, EventEmitter} from '@angular/core'; import {AppUtility} from '../shared/app.utility'; import {AppConstants} from '../shared/app.constants'; import {Router, ActivatedRoute} from '@angular/router'; import {Project} from '../shared/project.model'; import {projectHeader} from 'metadata-editor-repository'; var _ = require('lodash'); const {dialog} = require('electron').remote; @Injectable() /* * Service for managing the workspace view *************************************************************/ export class WorkspaceService { public projects: EventEmitter < any > = new EventEmitter < any > (); public activeProject : any; public workspaceRouter: EventEmitter < any > = new EventEmitter < any > (); constructor(private route : ActivatedRoute, private router : Router) { this.router.events.subscribe((currentRoute: any) => { this.workspaceRouter.emit(currentRoute); }); } /* * Open new project based on the type ***************************************************************/ public openProject(templateType : string) { projectHeader.addNewStudy(templateType, (response : any) => { if (response.result == 'ok') { this.activeProject = response.data; this.projects.emit({project: this.activeProject}) } else { console.log(response.messages); } }); } /* * Save project into file system ***************************************************************/ public saveProject() { let self = this; if (!self.activeProject) { dialog.showMessageBox({type: 'error', title: 'Project not found', message: 'Open a project before save the project'}); } else { let filePath = dialog.showSaveDialog({ title: 'Save Project', filters: [ { name: 'mde', extensions: ['mde'] } ] }); if (filePath) { self.activeProject.header = filePath; self.activeProject.name = filePath .replace(/^.*[\\\/]/, '') .split('.')[0]; self.activeProject.modified = new Date(); let metadata = { "_id": self.activeProject._id, "docDescr": { "test": "test" }, "studyDescr": { "test": "test" }, "datasets": { "test": "test" }, "extResources": { "test": "test" } }; projectHeader.saveStudy(self.activeProject, metadata, (response : any) => { if (response.result == 'ok') { dialog.showMessageBox({type: 'info', title: 'Success', message: 'Project saved successfully.'}); } else { dialog.showMessageBox({type: 'error', title: 'Error', message: response.messages}); } }) } } } /* * Router navigation method ***************************************************************/ navigateTo(path : string, type : string = '') { this.router.navigate([path, type]) } }