UNPKG

@wbg-mde/r-factory

Version:

Metadata editor R integration module

136 lines (135 loc) 6.03 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); const path = require("path"); const repository_1 = require("@wbg-mde/repository"); const _ = require('lodash'); let Utility = class Utility { static getTempFilePath(projectId) { return path.join(repository_1.resourcePath.getTempDirectory(), `${projectId}_${new Date().getTime()}.json`); } static getRScriptPath(scriptIndex) { let RScripts = { 0: "convert.tsv.R", 1: "update.varStats.R", 2: "export.fwf.R", 3: "export.data.R", 4: "destring.variable.update.data.R", 5: "write.csv.R", 6: "import.data.R", 7: "environment.details.R", 8: "resequence.data.R", 9: "stringlen.variable.R", 10: "create.categories.R", 11: "basekey.validation.R", 12: "variable.repoStats.R", 13: "update.pkgs.R" }; return repository_1.resourcePath.getRScriptPath(RScripts[scriptIndex]); } static formatRObject(obj) { for (let prop in obj) { if (Object.prototype.toString.apply(obj[prop]) == '[object Object]') { this.removeEmptyValue(obj, prop); } else if (Object.prototype.toString.apply(obj[prop]) == '[object Array]') { if (obj[prop].length === 1 && Object.prototype.toString.apply(obj[prop][0]) != '[object Object]') { obj[prop] = obj[prop][0]; if (Object.prototype.toString.apply(obj[prop]) == '[object Object]' || Object.prototype.toString.apply(obj[prop]) == '[object Array]') { this.removeEmptyValue(obj, prop); } } else { this.removeEmptyValue(obj, prop); } } } return obj; } static removeEmptyValue(obj, prop) { if (Object.keys(obj[prop]).length !== 0) { this.formatRObject(obj[prop]); } else { obj[prop] = null; } } static formatVariable(variables, outProps) { const formatDatum = function (fields) { return function (obj) { var datum = {}; fields.forEach(function (field) { switch (field) { case 'val': { let catgry = new Array(); if (obj.catgry) { catgry = _.compact(_.map(obj.catgry, (category) => { if (category && category.catValu != undefined && category.catValu !== 'NA') { return { catValu: [category.catValu], labl: [category.labl] }; } })); } datum[field] = catgry; } break; case 'catVal': { let catgry = new Array(); if (obj.catgry) { catgry = _.compact(_.map(obj.catgry, (category) => { if (category.catValu != undefined && category.catValu !== 'NA') { return category.catValu; } })); } datum[field] = catgry; } break; case 'internalName': datum[field] = [obj.internalName || obj.name]; break; case 'type': datum[field] = [(obj.varFormat) ? obj.varFormat.type : "numeric"]; break; case 'dataType': datum[field] = [obj.varType]; break; case 'width': datum[field] = [(obj.location) ? obj.location.width : 0]; break; case 'StartPos': case 'EndPos': datum[field] = [obj.location[field]]; break; case 'StorageType': case 'ReadFormat': datum[field] = ''; break; default: datum[field] = [obj[field]]; break; } }); return datum; }; }; return variables.map(formatDatum(outProps)); } }; Utility = __decorate([ repository_1.Trace({ params: { formatVariable: ['*'] } }) ], Utility); exports.Utility = Utility;