UNPKG

ion-oui

Version:

The client library of oui builder for ionic

412 lines (411 loc) 17.2 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OUIDefaultClickListener = exports.UIPageState = exports.OUIIon = exports.OGlobalFormState = exports.StateHolder = void 0; var card_1 = require("./parsers/card"); var future_view_1 = require("./parsers/future-view"); var list_tile_1 = require("./parsers/list-tile"); var image_1 = require("./parsers/image"); var padding_1 = require("./parsers/padding"); var flex_1 = require("./parsers/flex"); var app_bar_1 = require("./parsers/app-bar"); var root_1 = require("./parsers/root"); var text_1 = require("./parsers/text"); var container_1 = require("./parsers/container"); var form_1 = require("./parsers/forms/form"); var buttons_1 = require("./parsers/buttons"); var qr_code_1 = require("./parsers/qr-code"); var http_1 = require("./http"); var mevento_1 = require("./mevento"); var stated_1 = require("./parsers/stated"); var icon_1 = require("./parsers/icon"); var center_1 = require("./parsers/center"); function stateSet(args) { if (args.length < 3) return false; var state = args[0]; var key = args[1]; var value = args[2]; state.setValue(key, value); return true; } function stateGet(args) { if (args.length < 2) return null; var state = args[0]; var key = args[1]; return state.getValue(key); } function formSetField(state, args) { var _a, _b; if (args.length < 3) return false; var formId = args[0]; var field = args[1]; var value = args[2]; var form = (_a = state === null || state === void 0 ? void 0 : state.formStates) === null || _a === void 0 ? void 0 : _a.form(formId); // console.log(`form:: ${form} - ${field} ${value}`); (_b = form === null || form === void 0 ? void 0 : form.get(field)) === null || _b === void 0 ? void 0 : _b.setValue(value); return true; } function formGetField(state, args) { var _a; if (args.length < 3) return null; var formId = args[0]; var field = args[1]; var form = (_a = state === null || state === void 0 ? void 0 : state.formStates) === null || _a === void 0 ? void 0 : _a.form(formId); return form === null || form === void 0 ? void 0 : form.value[field]; } var StateHolder = /** @class */ (function () { function StateHolder(value) { this._tmp = {}; this._tmp = value; } Object.defineProperty(StateHolder.prototype, "data", { get: function () { return this._tmp; }, enumerable: false, configurable: true }); StateHolder.prototype.getValue = function (key) { return this._tmp[key]; }; StateHolder.prototype.setValue = function (key, value) { this._tmp[key] = value; }; return StateHolder; }()); exports.StateHolder = StateHolder; var OGlobalFormState = /** @class */ (function () { function OGlobalFormState() { this._forms = {}; } OGlobalFormState.prototype.form = function (id) { if (!id) { return; } return this._forms[id]; }; OGlobalFormState.prototype.set = function (id, state) { this._forms[id] = state; }; OGlobalFormState.prototype.addField = function (name, field) { if (!this.currentFormId) { return; } var state = this._forms[this.currentFormId]; if (!state) { return; } state.addControl(name, field); }; return OGlobalFormState; }()); exports.OGlobalFormState = OGlobalFormState; var OUIIon = /** @class */ (function () { function OUIIon() { } Object.defineProperty(OUIIon, "MM_SERVER", { get: function () { return this._multiMediaServerURL || ""; }, enumerable: false, configurable: true }); OUIIon.addParser = function (parser) { OUIIon.parsers[parser.type] = parser; }; OUIIon.init = function (options) { var _this = this; if (OUIIon.settedUp) { return; } OUIIon.settedUp = true; OUIIon._serverURL = (options === null || options === void 0 ? void 0 : options.serverUrl) || ''; OUIIon.appId = (options === null || options === void 0 ? void 0 : options.appId) || ''; if (Object.keys(this.parsers).length === 0) { OUIIon.defaultParsers.forEach(function (e) { return OUIIon.addParser(e); }); } // tslint:disable-next-line:no-console mevento_1.MEvento.register("log", function (args) { return console.log.apply(console, args); }); mevento_1.MEvento.register("map", function (args) { return ({}); }); mevento_1.MEvento.register("mapPut", function (args) { if (typeof args[0] !== 'object') { return true; } (args[0])[args[1]] = args[2]; return true; }); mevento_1.MEvento.register("mapRemove", function (args) { if (typeof args[0] !== 'object' || args[0] instanceof Map) { return true; } delete (args[0])[args[1]]; return true; }); mevento_1.MEvento.register("list", function (args) { return []; }); mevento_1.MEvento.register("listAdd", function (args) { if (Array.isArray(args[0])) { return true; } (args[0])[args[1]] = args[2]; return true; }); mevento_1.MEvento.register("listRemove", function (args) { if (Array.isArray(args[0])) { return true; } args[0].splice(args[1], 1); return true; }); mevento_1.MEvento.register("scanQr", function (args) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/]; }); }); }); mevento_1.MEvento.register("apiCall", function (args) { return __awaiter(_this, void 0, void 0, function () { var url, data, els, res, e_1; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!OUIIon._serverURL || OUIIon.appId) { return [2 /*return*/, null]; } if (args.length === 0) { return [2 /*return*/, null]; } url = args[0]; data = args[1]; els = url.split("."); _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, http_1.http.post("".concat(OUIIon._serverURL, "/api/v1/c/common/apps/").concat(OUIIon.appId, "/exec/").concat(els[0], "/").concat(els[1]), data)]; case 2: res = _a.sent(); if (res.status !== 200) { return [2 /*return*/, null]; } return [2 /*return*/, res.body]; case 3: e_1 = _a.sent(); return [2 /*return*/, {}]; case 4: return [2 /*return*/]; } }); }); }); mevento_1.MEvento.register("state", function (args) { var pageId = args[0]; var state = OUIIon.states[pageId]; if (state == null) { state = new StateHolder({}); OUIIon.states[pageId] = state; } return state; }); }; OUIIon.build = function (page, context, listener, options) { var pageState = new UIPageState(page, new StateHolder({}), new OGlobalFormState()); var handler = new OUIDefaultClickListener(pageState, listener); handler.vm.execute("INPUT=map()"); OUIIon.buildComponent(JSON.parse(page.uiData), context, handler, options); }; OUIIon.buildComponent = function (data, ouiHost, clickHandler, options) { var parser = OUIIon.parsers[data.type]; if (!parser) { return null; } return parser.parse(data, ouiHost, clickHandler, options); }; OUIIon.buildComponents = function (data, ouiHost, clickHandler, options) { return data.map(function (e) { return OUIIon.buildComponent(e, ouiHost, clickHandler, options); }).filter(function (e) { return e !== null; }); }; OUIIon.settedUp = false; OUIIon.states = {}; OUIIon.simulation = false; OUIIon.parsers = {}; OUIIon.defaultParsers = [ new app_bar_1.AppBarParser(), new root_1.OUIIonRootParser(), new text_1.OUIIonTextParser(), new container_1.OUIIonContainerParser(), new flex_1.OUIIonRowComponentParser(), new flex_1.OUIIonColumnComponentParser(), new padding_1.OUIIonPaddingComponentParser(), new root_1.OUIIonScrollableParser(), new form_1.OUIIonFormParser(), new form_1.OUIIonFormTextFieldParser(), new form_1.UIIonFormDatetimeParser(), new form_1.OUIIonFormSwitchParser(), // new OUIIonRaisedButtonParser(), new buttons_1.OUIIonOButtonParser(), new buttons_1.OUIIonTextButtonParser(), new buttons_1.OUIIonElevatedParser(), new flex_1.OUIIonExpandedParser(), new flex_1.OUIIonFlexibleParser(), new form_1.OUIIonFormSliderParser(), new form_1.OUIIonFormCheckboxParser(), new form_1.OUIIonFormDropdownParser(), new buttons_1.OUIIonOutlinedParser(), new image_1.OUIIonImageViewParser(), new list_tile_1.OUIIonListTileParser(), new qr_code_1.OUIIonQrCodeParser(), new stated_1.OUIIonStatedParser(), new text_1.OUIIonDynamicTextParser(), new future_view_1.OUIIonFutureViewComponentParser(), new icon_1.OUIIonIconParser(), new center_1.OUIIonCenterParser(), new card_1.OUIIonCardParser(), ]; return OUIIon; }()); exports.OUIIon = OUIIon; var UIPage = /** @class */ (function () { function UIPage(data) { for (var _i = 0, _a = Object.keys(data); _i < _a.length; _i++) { var k = _a[_i]; this[k] = data[k]; } } UIPage.parse = function (map) { return new UIPage({ code: map.code, name: map.name, version: map.version, build: map.build, uiData: map.uiData, description: map.description, tag: map.tag, icon: map.icon, updatedAt: map.updatedAt }); }; UIPage.prototype.toMap = function () { return JSON.stringify(this); }; return UIPage; }()); var UIPageMeta = /** @class */ (function () { function UIPageMeta(data) { for (var _i = 0, _a = Object.keys(data); _i < _a.length; _i++) { var k = _a[_i]; this[k] = data[k]; } } UIPageMeta.fromMap = function (map) { return new UIPageMeta({ code: map.code, build: map.build.toString(), version: map.version }); }; return UIPageMeta; }()); var AppInfo = /** @class */ (function () { function AppInfo(data) { for (var _i = 0, _a = Object.keys(data); _i < _a.length; _i++) { var k = _a[_i]; this[k] = data[k]; } } AppInfo.fromMap = function (map) { return new AppInfo({ id: map.id, version: map.version, build: map.build, title: map.title, description: map.description }); }; return AppInfo; }()); var UIPageState = /** @class */ (function () { function UIPageState(page, state, formStates) { this.page = page; this.state = state; this.formStates = formStates; } return UIPageState; }()); exports.UIPageState = UIPageState; var OUIDefaultClickListener = /** @class */ (function () { function OUIDefaultClickListener(state, handler) { var _this = this; this.vm = mevento_1.MEvento.newInstance(); this.externalHandler = handler; this.page = state; this.vm.registerFunction("state", function (args) { var _a; return (_a = _this.page) === null || _a === void 0 ? void 0 : _a.state; }); this.vm.registerFunction("stateSet", stateSet); this.vm.registerFunction("stateGet", stateGet); this.vm.registerFunction("stateGet", stateGet); this.vm.registerFunction("formSetField", function (args) { return formSetField(_this.page, args); }); this.vm.registerFunction("formGetField", function (args) { return formGetField(_this.page, args); }); this.vm.registerFunction("formData", function (args) { var _a, _b, _c; return (_c = (_b = (_a = _this.page) === null || _a === void 0 ? void 0 : _a.formStates) === null || _b === void 0 ? void 0 : _b.form(args.length > 0 ? args[0] : '')) === null || _c === void 0 ? void 0 : _c.value; }); this.vm.execute("STATES=state()"); } OUIDefaultClickListener.prototype.onClick = function (event) { var _this = this; var _a; if (!event || !event.data) { return; } // tslint:disable-next-line:no-console console.log("event:::".concat(event.data, "=====>")); var asyncVm = mevento_1.MEventoAsync.newInstance(); asyncVm.registerFunction("state", function (args) { var _a; return (_a = _this.page) === null || _a === void 0 ? void 0 : _a.state; }); asyncVm.registerFunction("stateSet", stateSet); asyncVm.registerFunction("stateGet", stateGet); asyncVm.registerFunction("formSetField", function (args) { return formSetField(_this.page, args); }); asyncVm.registerFunction("formGetField", function (args) { return formGetField(_this.page, args); }); asyncVm.registerFunction("formData", function (args) { var _a, _b, _c; return (_c = (_b = (_a = _this.page) === null || _a === void 0 ? void 0 : _a.formStates) === null || _b === void 0 ? void 0 : _b.form(args.length > 0 ? args[0] : '')) === null || _c === void 0 ? void 0 : _c.value; }); asyncVm.execute("STATES=state()"); asyncVm.execute(event.data, false); (_a = this.externalHandler) === null || _a === void 0 ? void 0 : _a.onClick(event); }; return OUIDefaultClickListener; }()); exports.OUIDefaultClickListener = OUIDefaultClickListener; // ################################## -- Default Widget parser --- ####################################