ion-oui
Version:
The client library of oui builder for ionic
412 lines (411 loc) • 17.2 kB
JavaScript
"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 --- ####################################