metadata-editor-workspace
Version:
Metadata Editor Workspace module for ME-Core Powered by Assyst
99 lines (89 loc) • 3.62 kB
text/typescript
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;
()
/*
* 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])
}
}