2
0
mirror of https://github.com/esiur/esiur-js.git synced 2026-04-03 21:48:21 +00:00

ConnectionStatus

This commit is contained in:
2022-08-14 21:45:48 +03:00
parent a74907526c
commit d057f87b76
5 changed files with 48 additions and 20 deletions

View File

@@ -1,35 +1,37 @@
import Warehouse from "../Resource/Warehouse.js";
export default class ResourceProxy
{
export default class ResourceProxy {
static cache = {};
static getProxy(type)
{
var template = Warehouse.getTemplateByType(type);
var className = type.prototype.constructor.name;
static getProxy(type) {
let template = Warehouse.getTemplateByType(type);
let className = type.prototype.constructor.name;
let classUrl = "esiur://" + template.className.replace('.', '/');
if (template.namespace != null) {
className = template.namespace + "_" + className;
}
if (ResourceProxy.cache[className])
return ResourceProxy.cache[className];
var code = `return (class E_${className} extends b { constructor() {super();} `;
var code = `return ( class E_${className} extends b { constructor() {super();} `;
// generate class
for(var i = 0; i < template.properties.length; i++)
{
for (var i = 0; i < template.properties.length; i++) {
let pt = template.properties[i];
let desc = Object.getOwnPropertyDescriptor(type.prototype, pt.name);
if (desc)
{
code += `\r\n set ${pt.name}(v) { \r\n if (this.instance) this.instance.emitModification(this.instance.template.properties[${i}], v); \r\n super.${pt.name} = v; } \r\n get ${pt.name}() { \r\n return super.${pt.name};}`;
if (desc) {
code += `\r\n set ${pt.name}(v) { \r\n super.${pt.name} = v; \r\n if (this.instance) this.instance.emitModification(this.instance.template.properties[${i}], v); } \r\n get ${pt.name}() { \r\n return super.${pt.name};}`;
}
else
{
code += `\r\n set ${pt.name}(v) { \r\n if (this.instance) this.instance.emitModification(this.instance.template.properties[${i}], v); \r\n this._${pt.name} = v; } \r\n get ${pt.name}() { \r\n return this._${pt.name};}`;
else {
code += `\r\n set ${pt.name}(v) { \r\n super._${pt.name} = v; \r\n if (this.instance) this.instance.emitModification(this.instance.template.properties[${i}], v); } \r\n get ${pt.name}() { \r\n return this._${pt.name};}`;
}
}
var func = new Function("b", code + "})");
debugger;
var func = new Function("b", `//# sourceURL=${classUrl} \r\n ${code}});`);
var proxyType = func.call(type /* this */, type);