@thingjs/xplugin-cli
Version:
UINO ThingJS-X 零代码平台插件二次开发脚手架,用于生成插件模板开发代码
132 lines (121 loc) • 5.33 kB
JavaScript
//导入统一功能的命名定义
import { __ACTIONS__ } from "./__ACTIONS__";
export default class {
#message;
#__supported__;
#__purpose__ = "_default_";
constructor() {
//获取所支持的能力
const { ACTIVATE, DEACTIVATE, DEACTIVATE_ALL, SHOW, HIDE, REFRESH } = __ACTIONS__;
this.#__supported__ = { ACTIVATE, DEACTIVATE, DEACTIVATE_ALL, SHOW, HIDE, REFRESH };
}
/**
* 图层激活
* 支持同时激活多个图层
* - THINGX.Layer.activate(name [, purpose]); 激活图层
* 可参考: http://123.124.196.193:2023/api/index.html#/13%E5%9B%BE%E5%B1%82%E6%A8%A1%E5%9D%97%E6%93%8D%E4%BD%9C%E7%9B%B8%E5%85%B3(THINGX.Layer)?id=method-thingxlayeractivate
*/
Activate() {
const parameters = this.#convertParametersToArrayData();
parameters.forEach((item,) => {
let targetObjectArray = new Array();
targetObjectArray.push(item.target);
const purpose = item.purpose || this.#__purpose__;
THINGX.Layer.activate(targetObjectArray, purpose);
});
}
/**
* 取消激活图层
* - THINGX.Layer.deactivate(name[, purpose]); 取消激活图层
* 可参考: http://123.124.196.193:2023/api/index.html#/13%E5%9B%BE%E5%B1%82%E6%A8%A1%E5%9D%97%E6%93%8D%E4%BD%9C%E7%9B%B8%E5%85%B3(THINGX.Layer)?id=method-thingxlayerdeactivate
*/
Deactivate() {
const parameters = this.#convertParametersToArrayData();
parameters.forEach((item,) => {
let targetObjectArray = new Array();
targetObjectArray.push(item.target);
const purpose = item.purpose || this.#__purpose__;
THINGX.Layer.deactivate(targetObjectArray, purpose);
});
}
/**
* 取消所有激活的图层
* - THINGX.Layer.deactivateAll(); 取消所有激活的图层
* 可参考: http://123.124.196.193:2023/api/index.html#/13%E5%9B%BE%E5%B1%82%E6%A8%A1%E5%9D%97%E6%93%8D%E4%BD%9C%E7%9B%B8%E5%85%B3(THINGX.Layer)?id=method-thingxlayerdeactivateall
*/
DeactivateAll() {
//由于取消业务不需要任何参数,无需进行参数校验,直接访问API即可
THINGX.Layer.deactivateAll();
}
/**
* 整个图层模块的显示
* - THINGX.Layer.show();显示图层模块
* 可参考: http://123.124.196.193:2023/api/index.html#/13%E5%9B%BE%E5%B1%82%E6%A8%A1%E5%9D%97%E6%93%8D%E4%BD%9C%E7%9B%B8%E5%85%B3(THINGX.Layer)?id=method-thingxlayershow
*/
Show() {
THINGX.Layer.show();
}
/**
* 整个图层模块的隐藏
* - THINGX.Layer.hide();隐藏图层模块
* 可参考: http://123.124.196.193:2023/api/index.html#/13%E5%9B%BE%E5%B1%82%E6%A8%A1%E5%9D%97%E6%93%8D%E4%BD%9C%E7%9B%B8%E5%85%B3(THINGX.Layer)?id=method-thingxlayerhide
*/
Hide() {
THINGX.Layer.hide();
}
/**
* 整个图层模块的显示
* - THINGX.Layer.refresh();重新读取可视化配置 并根据当前层级重新创建图层
* 可参考: http://123.124.196.193:2023/api/index.html#/13%E5%9B%BE%E5%B1%82%E6%A8%A1%E5%9D%97%E6%93%8D%E4%BD%9C%E7%9B%B8%E5%85%B3(THINGX.Layer)?id=method-thingxlayerrefresh
*/
Refresh() {
THINGX.Layer.refresh();
}
SemanticParser(message) {
this.#message = message;
const { action } = message;
switch (action) {
case this.#__supported__.ACTIVATE:
this.Activate();
break;
case this.#__supported__.DEACTIVATE:
this.Deactivate();
break;
case this.#__supported__.DEACTIVATE_ALL:
this.DeactivateAll();
break;
case this.#__supported__.SHOW:
this.Show();
break;
case this.#__supported__.HIDE:
this.Hide();
break;
case this.#__supported__.REFRESH:
this.Refresh();
break;
default: {
console.warn(`%c [ iframe 消息监听器 ] Only the following methods are supported: ${Object.values(this.#__supported__)}.`, 'background: #FFFF37');
console.warn('%c [ iframe 消息监听器 ] There is no running method, please check whether the input is correct', 'background: #FFFF37');
}
}
}
//转换语义化参数格式
//进行格式处理,支持批量操作
#convertParametersToArrayData() {
let returndata = new Array();
const { parameters } = this.#message;
if (Array.isArray(parameters)) {
return parameters;
}
if (Object.prototype.toString.call(parameters) === '[object Object]') {
if (!(parameters?.target &&
parameters.target !== undefined)) {
console.warn('%c [ iframe 消息监听器 ] parameters::target Illegal parameter data ', 'background: #FFFF37');
return returndata;
}
returndata.push(parameters);
return returndata;
}
return returndata
}
}