UNPKG

dynamicsmobile

Version:

Allows development of off-line mobile and web business apps over the Dynamics Mobile platform. More info on https://www.dynamicsmobile.com

103 lines 5.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DecoratorsManager = void 0; const tslib_1 = require("tslib"); const ko = require("knockout"); const configuration_service_1 = require("./configuration-service"); const context_service_1 = require("./context-service"); const app_service_app_1 = require("./app-service-app"); const application_context_service_1 = require("./application-context-service"); const injectable_1 = require("../ioc/injectable"); let DecoratorsManager = exports.DecoratorsManager = class DecoratorsManager extends app_service_app_1.CoreAppService { constructor(dms, configurationService, contextService) { super(dms, null); this.configManager = configurationService; this.contextManager = contextService; } processInputDecorators(view) { return tslib_1.__awaiter(this, void 0, void 0, function* () { var cgenKey = `__cgen+${view.constructor.name}`; var cgen = view[cgenKey]; if (!cgen) { return; } var me = this; var props = Object.getOwnPropertyNames(cgen); for (var i = 0; i < props.length; i++) { var propName = props[i]; var cgenProp = cgen[propName].input; if (cgenProp) { var c; if (!cgenProp.type || cgenProp.type == "context") { c = yield me.contextManager.get(propName); } else if (cgenProp.type == "config") { yield me.configManager.retreiveSettings(); c = yield me.configManager.getSetting(propName); } if ((c == undefined || c == null) && cgenProp.required && cgenProp.default == undefined) { yield this.configManager.setNavigationState({ LastStepId: null, LastTaskId: null }); throw new Error(`Context decorator error: Property ${propName} is not present in Task context!`); } //auto-create if (view[propName] == undefined && cgenProp.isArray) view[propName] = ko.observableArray(cgenProp.default); else if (view[propName] == undefined && !cgenProp.isArray) view[propName] = ko.observable(cgenProp.default); if (c == undefined) c = cgenProp.default; var typeConverted; switch (cgenProp.dataType) { case 'boolean': typeConverted = ((c && (c.toString().toLowerCase() == "true" || c.toString().toLowerCase() == "1" || c.toString().toLowerCase() == "yes")) ? true : false); break; case 'decimal': typeConverted = (c ? parseFloat(c) : 0); case 'int': typeConverted = (c ? parseInt(c) : 0); default: typeConverted = c; break; } if (typeof view[propName] == 'function') view[propName](typeConverted); else view[propName] = typeConverted; } } }); } ; processOutputDecorators(view, routeIsValidating) { return tslib_1.__awaiter(this, void 0, void 0, function* () { var cgenKey = `__cgen+${view.constructor.name}`; var cgen = view[cgenKey]; if (!cgen) return; var me = this; var props = Object.getOwnPropertyNames(cgen); for (var i = 0; i < props.length; i++) { var propName = props[i]; var cgenProp = cgen[propName].output; if (cgenProp) { if (routeIsValidating || cgenProp.always) { var c; if (typeof (view[propName]) == "function") c = view[propName](); else c = view[propName]; if (!cgenProp.type || cgenProp.type == "context") { yield me.contextManager.set(propName, c); } else if (cgenProp.type == "config") { yield me.configManager.setSetting(propName, (c ? c.toString() : undefined)); } } } } }); } }; exports.DecoratorsManager = DecoratorsManager = tslib_1.__decorate([ (0, injectable_1.Injectable)(), tslib_1.__metadata("design:paramtypes", [application_context_service_1.DmsApplicationService, configuration_service_1.ConfigurationService, context_service_1.ContextService]) ], DecoratorsManager); //# sourceMappingURL=decorators-service.js.map