UNPKG

@wbg-mde/server

Version:

MDE communication channel with Socket IO and express.

371 lines 15.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const repository = require("@wbg-mde/repository"); const pdfGenerator = require("@wbg-mde/pdf-export"); const _ = require("lodash"); class RepositorySocket { constructor(activeSocket) { this.socket = activeSocket; } /* * Init - add socket listeners ************************************************/ init() { this.socket.on("read-csv-req", (params) => { this.readFromCSV(params); }); this.socket.on("import-zipped-study-req", (params) => { this.importStudy(params); }); this.socket.on("save-resource-file-req", (params) => { this.saveResourceFile(params); }); this.socket.on("import-nesstar-study-req", (params) => { this.importNesstarStudy(params); }); this.socket.on("import-from-study-req", (params) => { this.importFromStudy(params); }); this.socket.on("remove-temp-study-req", (params) => { this.removeTempStudy(params); }); this.socket.on("tree-data-req", (params) => { this.getTreeNodes(params, "tree-data-resp"); }); this.socket.on("change-template-req", (params) => { this.getTreeNodes(params, "change-template-resp"); }); this.socket.on("list-all-projects-req", (params) => { this.getAllProjects(params); }); this.socket.on("list-custom-projects-req", (params) => { this.getCustomProjects(params); }); this.socket.on("doc-tree-data-req", (params) => { this.getDocTemplateSchema(JSON.parse(params)); }); this.socket.on("getExternalResourcesSchema-req", (params) => { this.getExternalResourcesSchema(params, "getExternalResourcesSchema-resp"); }); this.socket.on("createExternalResourcesNodes-req", (params) => { this.createExternalResourcesNodes(params, "createExternalResourcesNodes-resp"); }); this.socket.on("open-study-by-id", (id) => { this.openStudyById(id); }); this.socket.on("open-study", (params) => { this.openStudy(JSON.parse(params)); }); this.socket.on("revert-project-status-req", (params) => { this.revertProject(params); }); this.socket.on("archive-project-req", (params) => { this.archiveProject(params); }); this.socket.on("saveAsNewProject-req", (params) => { this.saveStudy(JSON.parse(params), "study-saved"); }); this.socket.on("updateSavedProject-req", (params) => { this.saveStudy(JSON.parse(params), "study-updated"); }); this.socket.on('save-all-open-studies-req', (params) => { this.closeAllStudies(params, 'save-all-open-studies-resp'); }); this.socket.on("export-DDI-req", (params) => { this.exportDDI(params, "export-DDI-complete"); }); this.socket.on("export-GeoSpatial-req", (params) => { this.exportGeospatial(params, "export-GeoSpatial-complete"); }); this.socket.on("export-ZIP-req", (params) => { this.exportStudyAsZip(params, "export-ZIP-complete"); }); this.socket.on("export-DublinCore-req", (params) => { this.exportDublinCore(params, "export-DublinCore-complete"); }); this.socket.on("add-new-study-req", (params) => { this.addNewStudy(params); }); this.socket.on("import-DDI-req", (params) => { this.importDDI(params, "import-DDI-complete"); }); this.socket.on("import-GeoSpatial-req", (params) => { this.importGeospatial(params, "import-GeoSpatial-complete"); }); this.socket.on("import-document-req", (params) => { this.importDocument(params, "import-document-complete"); }); this.socket.on("import-dublincore-req", (params) => { this.importDublinCore(params, "import-dublincore-complete"); }); this.socket.on("delete-dataset-req", (params) => { this.deleteDataset(params, "delete-dataset-complete"); }); this.socket.on("generate-PDF-req", (params) => { this.generatePDF(params, "generate-PDF-complete"); }); this.socket.on("publish-study-req", (params) => { this.publishStudy(params); }); } publishStudy(params) { const { config, type, nadaconfig, project, extResrc } = params; const publisher = new repository.NadaPublisher(config); publisher.publish(type, nadaconfig, project, extResrc, (resp) => { this.socket.emit("publish-study-resp", resp); }); } readFromCSV(params) { repository.readCsvData.getJson((data, count, columnsNames) => { this.socket.emit("read-csv-resp", Object.assign({}, { data, count, columnsNames, params: params.params })); }, params.range, params.filePath); } importFromStudy(params) { repository.studyImport.importFromStudy(params.filePath, params.options, (s, m) => { this.socket.emit('import-from-study-resp', Object.assign({}, { s, m })); }); } saveResourceFile(params) { repository.projectMetadata.saveResourceFile(params.filePath, params.projectId, response => { this.socket.emit('save-resource-file-resp', response); }); } importStudy(params) { repository.studyImport.importStudy(params.filePath, (status, extraInfo) => { this.socket.emit('import-zipped-study-resp', { status, extraInfo }); }); } removeTempStudy(params) { repository.projectHeader.removeTempStudy(params.id, (response) => { this.socket.emit('remove-temp-study-resp', Object.assign(response, { context: params.context, additionalParams: params.additionalParams, id: params.id })); }); } importNesstarStudy(params) { repository.nesstarImport.importNesstarStudy(params.filePath, params.options, (response) => { this.socket.emit('import-nesstar-study-resp', response); }, params.activeStatus); } addNewStudy(params) { repository.projectHeader.addNewStudy(params.templateType, params.language, (response) => { this.socket.emit('add-new-study-resp', Object.assign(response, { context: params.context, additionalParams: params.additionalParams })); }); } getTreeNodes(params, listenerKey) { repository.template.getEditorSectionMappingSchema(params.dataType, params.language, (response) => { const mappings = _.find(response.schema.mappings, (item) => { return (String(item.type) .trim() .toLowerCase() === String(params.dataType) .trim() .toLowerCase()); }); this.getTemplateSchema(params, mappings, listenerKey); }); } getTemplateSchema(params, editorSchema, listenerKey) { repository.template.getTemplateSchema(params.dataType, params.language, params.templateFileName, (response) => { this.socket.emit(listenerKey, { response, editorMapSchema: editorSchema }); }); } getDocTemplateSchema(params) { repository.template.getTemplateSchema(params.dataType, params.language, params.templateFileName, (response) => { this.socket.emit("doc-tree-data-resp", { response }); }); } getExternalResourcesSchema(params, listenerKey) { repository.template.getTemplateSchema(params.dataType, params.language, params.templateFileName, (response) => { this.socket.emit(listenerKey, { response }); }); } createExternalResourcesNodes(params, listenerKey) { repository.template.getEditorSectionMappingSchema(params.projectType, params.language, (response) => { const mappings = _.find(response.schema.mappings, (item) => { return item.type === params.type; }); this.socket.emit(listenerKey, { response, editorMapSchema: mappings }); }); } openStudy(params) { repository.projectHeader.openStudy(params.filePath, (response) => { this.socket.emit("openStudy-resp", { response }); }); } openStudyById(id) { repository.projectHeader.openStudyById(id, (response) => { this.socket.emit("openStudyById-resp", { response }); }); } getAllProjects(filter) { repository.projectHeader.getAllProjects(filter, (response) => { this.socket.emit("list-all-projects-resp", { response }); }); } getCustomProjects(filter) { repository.projectHeader.getAllProjects(filter, (response) => { this.socket.emit("list-custom-projects-resp", { response }); }); } revertProject(param) { const { project, status } = param; repository.projectMetadata.getProjectMetadata(project._id, (response) => { if (response.result === "ok") { response.data._id = project._id; // #. Update the project status project.status = status; // projectService repository.projectHeader.saveStudy(project, response.data, (resp) => { this.socket.emit("revert-project-status-resp", { result: "ok", id: project._id }); }); } }); } archiveProject(param) { const { project, status } = param; repository.projectMetadata.getProjectMetadata(project._id, (response) => { if (response.result === "ok") { response.data._id = project._id; // #. Update the project status project.status = status; // projectService repository.projectHeader.saveStudy(project, response.data, (resp) => { this.socket.emit("archive-project-resp", { result: "ok", id: project._id }); }); } }); } closeAllStudies(params, listenerKey) { repository.projectHeader.saveAllOPenStudies(params, (resp) => { this.socket.emit(listenerKey, { resp }); }); } saveStudy(project, listenerKey) { repository.projectHeader.saveStudy(project.header, project.metadata, (response) => { this.socket.emit(listenerKey, { result: response.result, data: project }); }); } /* * Export DDI to xml ***************************************************************/ exportDDI(params, listenerKey) { repository.exportDDI.exportStudy(params.filePath, params.project, (response) => { this.socket.emit(listenerKey, { response }); }, params.asJson, params.options); } /* * Export Geospatial to xml ***************************************************************/ exportGeospatial(params, listenerKey) { repository.exportGeospatial.exportStudy(params.filePath, params.project, (response) => { this.socket.emit(listenerKey, { response }); }, params.asJson); } /* * Export study as zip format ***************************************************************/ exportStudyAsZip(params, listenerKey) { repository.studyExport.exportStudy(params.projectId, params.filePath, (status, errObj) => { this.socket.emit(listenerKey, { status, errObj }); }); } /* * Export Resource description to xml ***************************************************************/ exportDublinCore(params, listenerKey) { repository.exportDublinCore.exportResourceDescription(params.filePath, params.project, params.extResources, (response) => { this.socket.emit(listenerKey, { response }); }); } /* * Import DDI ***************************************************************/ importDDI(params, listenerKey) { repository.importDDI.readImportedFile(params.filePath, params.studyType, params.language, params.options, (response) => { this.socket.emit(listenerKey, Object.assign(response, { asNewProject: params.asNewProject, options: params.options, projectId: params.projectId })); }); } /* * importGeospatial ***************************************************************/ importGeospatial(params, listenerKey) { repository.importGeospatial.readImportedFile(params.filePath, params.studyType, params.language, (response) => { this.socket.emit(listenerKey, Object.assign(response, { asNewProject: params.asNewProject, options: params.options, projectId: params.projectId })); }); } /* * importDublinCore ***************************************************************/ importDublinCore(params, listenerKey) { repository.importDublinCore.readImportedFile(params.filePath, params.studyType, params.language, (response) => { this.socket.emit(listenerKey, Object.assign(response, { asNewProject: params.asNewProject, options: params.options, projectId: params.projectId, resourceGroupId: params.resourceGroupId })); }); } /* * importDocument ***************************************************************/ importDocument(params, listenerKey) { repository.importDocument.readImportedFile(params.filePath, params.studyType, params.language, (response) => { this.socket.emit(listenerKey, Object.assign(response, { asNewProject: params.asNewProject, options: params.options, projectId: params.projectId })); }); } /* * Delete dataset **************************************************************/ deleteDataset(params, listenerKey) { repository.projectHeader.deleteDatasetFiles(params, (response) => { this.socket.emit(listenerKey, Object.assign(response, { datasets: params })); }); } generatePDF(params, listenerKey) { pdfGenerator.exportPDFDDI.generatePDF(params.filePath, { header: params.header, templateSchema: params.templateSchema, metadata: params.metadata }, (response) => { console.log(response); }); } } exports.RepositorySocket = RepositorySocket; //# sourceMappingURL=repository.socket.js.map