@wbg-mde/server
Version:
MDE communication channel with Socket IO and express.
371 lines • 15.7 kB
JavaScript
;
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