@meta2d/core 1.0.49 → 1.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/core.d.ts CHANGED
@@ -208,6 +208,10 @@ export declare class Meta2d {
208
208
  updateTimerList: any[];
209
209
  connectNetwork(): void;
210
210
  randomString(e: number): string;
211
+ mockValue(data: any): any;
212
+ dataMock(): void;
213
+ startDataMock(): void;
214
+ stopDataMock(): void;
211
215
  penMock(pen: Pen): void;
212
216
  penNetwork(pen: Pen): void;
213
217
  getDynamicParam(key: string): any;
@@ -244,8 +248,14 @@ export declare class Meta2d {
244
248
  clearRuleLines(): void;
245
249
  private onEvent;
246
250
  private doEvent;
251
+ doDataEvent: (datas: {
252
+ dataId?: string;
253
+ id?: string;
254
+ value: any;
255
+ }[]) => void;
247
256
  initGlobalTriggers(): void;
248
257
  initMessageEvents(): void;
258
+ dataJudegeCondition(data: any, key: string, condition: TriggerCondition): boolean;
249
259
  judgeCondition(pen: Pen, key: string, condition: TriggerCondition): boolean;
250
260
  pushChildren(parent: Pen, children: Pen[]): void;
251
261
  renderPenRaw: typeof renderPenRaw;
package/src/core.js CHANGED
@@ -398,6 +398,47 @@ var Meta2d = /** @class */ (function () {
398
398
  // 事件冒泡,子执行完,父执行
399
399
  _this.doEvent(_this.store.pens[pen.parentId], eventName);
400
400
  };
401
+ this.doDataEvent = function (datas) {
402
+ var _a, _b, _c;
403
+ if (!((_a = _this.store.data.dataEvents) === null || _a === void 0 ? void 0 : _a.length)) {
404
+ return;
405
+ }
406
+ var data = datas.reduce(function (accumulator, _a) {
407
+ var dataId = _a.dataId, id = _a.id, value = _a.value;
408
+ accumulator[id || dataId] = value;
409
+ return accumulator;
410
+ }, {});
411
+ var indexArr = [];
412
+ (_b = _this.store.data.dataEvents) === null || _b === void 0 ? void 0 : _b.forEach(function (event, index) {
413
+ var flag = false;
414
+ if (event.conditions && event.conditions.length) {
415
+ if (event.conditionType === 'and') {
416
+ flag = event.conditions.every(function (condition) {
417
+ return _this.dataJudegeCondition(data, condition.key, condition);
418
+ });
419
+ }
420
+ else if (event.conditionType === 'or') {
421
+ flag = event.conditions.some(function (condition) {
422
+ return _this.dataJudegeCondition(data, condition.key, condition);
423
+ });
424
+ }
425
+ }
426
+ else {
427
+ flag = true;
428
+ }
429
+ if (flag) {
430
+ indexArr.push(index);
431
+ }
432
+ });
433
+ (_c = _this.store.data.dataEvents) === null || _c === void 0 ? void 0 : _c.forEach(function (event, index) {
434
+ var _a;
435
+ if (indexArr.includes(index)) {
436
+ (_a = event.actions) === null || _a === void 0 ? void 0 : _a.forEach(function (action) {
437
+ _this.events[action.action](data, action);
438
+ });
439
+ }
440
+ });
441
+ };
401
442
  this.renderPenRaw = renderPenRaw;
402
443
  this.setElemPosition = setElemPosition;
403
444
  this.setLifeCycleFunc = setLifeCycleFunc;
@@ -1108,6 +1149,7 @@ var Meta2d = /** @class */ (function () {
1108
1149
  this.listenSocket();
1109
1150
  this.connectSocket();
1110
1151
  this.connectNetwork();
1152
+ this.startDataMock();
1111
1153
  this.startAnimate();
1112
1154
  this.startVideo();
1113
1155
  this.doInitJS();
@@ -2155,124 +2197,172 @@ var Meta2d = /** @class */ (function () {
2155
2197
  }
2156
2198
  return n;
2157
2199
  };
2158
- Meta2d.prototype.penMock = function (pen) {
2159
- var _this = this;
2160
- var _a;
2161
- if (pen.realTimes) {
2162
- var _d_1 = {};
2163
- pen.realTimes.forEach(function (realTime) {
2164
- if (realTime.enableMock && realTime.mock !== undefined) {
2165
- if (realTime.type === 'float') {
2166
- if (realTime.mock && realTime.mock.indexOf(',') !== -1) {
2167
- var arr = realTime.mock.split(',');
2168
- var rai = Math.floor(Math.random() * arr.length);
2169
- _d_1[realTime.key] = parseFloat(arr[rai]);
2170
- }
2171
- else if (realTime.mock && realTime.mock.indexOf('-') !== -1) {
2172
- var max = void 0;
2173
- var min = void 0;
2174
- var len = void 0;
2175
- var arr = realTime.mock.split('-');
2176
- if (realTime.mock.charAt(0) === '-') {
2177
- //负数
2178
- if (arr.length === 4) {
2179
- max = -parseFloat(arr[3]);
2180
- min = -parseFloat(arr[1]);
2181
- len = arr[3];
2182
- }
2183
- else {
2184
- max = parseFloat(arr[2]);
2185
- min = -parseFloat(arr[1]);
2186
- len = arr[2];
2187
- }
2188
- }
2189
- else {
2190
- max = parseFloat(arr[1]);
2191
- min = parseFloat(arr[0]);
2192
- len = arr[1];
2193
- }
2194
- if ((len + '').indexOf('.') !== -1) {
2195
- var length_1 = (len + '').split('.')[1].length;
2196
- _d_1[realTime.key] = (Math.random() * (max - min) + min).toFixed(length_1);
2197
- }
2198
- else {
2199
- _d_1[realTime.key] = Math.random() * (max - min) + min;
2200
- }
2201
- }
2202
- else {
2203
- _d_1[realTime.key] = parseFloat(realTime.mock);
2204
- }
2205
- }
2206
- else if (realTime.type === 'integer') {
2207
- if (realTime.mock && realTime.mock.indexOf(',') !== -1) {
2208
- var arr = realTime.mock.split(',');
2209
- var rai = Math.floor(Math.random() * arr.length);
2210
- _d_1[realTime.key] = parseInt(arr[rai]);
2211
- }
2212
- else if (realTime.mock && realTime.mock.indexOf('-') !== -1) {
2213
- var max = void 0;
2214
- var min = void 0;
2215
- var arr = realTime.mock.split('-');
2216
- if (realTime.mock.charAt(0) === '-') {
2217
- if (arr.length === 4) {
2218
- max = -parseFloat(arr[3]);
2219
- min = -parseFloat(arr[1]);
2220
- }
2221
- else {
2222
- max = parseFloat(arr[2]);
2223
- min = -parseFloat(arr[1]);
2224
- }
2225
- }
2226
- else {
2227
- max = parseInt(arr[1]);
2228
- min = parseInt(arr[0]);
2229
- }
2230
- _d_1[realTime.key] = parseInt(Math.random() * (max - min) + min + '');
2200
+ Meta2d.prototype.mockValue = function (data) {
2201
+ var value = undefined;
2202
+ if (data.enableMock && data.mock !== undefined) {
2203
+ if (data.type === 'float') {
2204
+ if (data.mock && data.mock.indexOf(',') !== -1) {
2205
+ var arr = data.mock.split(',');
2206
+ var rai = Math.floor(Math.random() * arr.length);
2207
+ value = parseFloat(arr[rai]);
2208
+ }
2209
+ else if (data.mock && data.mock.indexOf('-') !== -1) {
2210
+ var max = void 0;
2211
+ var min = void 0;
2212
+ var len = void 0;
2213
+ var arr = data.mock.split('-');
2214
+ if (data.mock.charAt(0) === '-') {
2215
+ //负数
2216
+ if (arr.length === 4) {
2217
+ max = -parseFloat(arr[3]);
2218
+ min = -parseFloat(arr[1]);
2219
+ len = arr[3];
2231
2220
  }
2232
2221
  else {
2233
- _d_1[realTime.key] = parseInt(realTime.mock);
2222
+ max = parseFloat(arr[2]);
2223
+ min = -parseFloat(arr[1]);
2224
+ len = arr[2];
2234
2225
  }
2235
2226
  }
2236
- else if (realTime.type === 'bool') {
2237
- if (typeof realTime.mock === 'boolean') {
2238
- _d_1[realTime.key] = realTime.mock;
2239
- }
2240
- else if ('true' === realTime.mock) {
2241
- _d_1[realTime.key] = true;
2242
- }
2243
- else if ('false' === realTime.mock) {
2244
- _d_1[realTime.key] = false;
2245
- }
2246
- else {
2247
- _d_1[realTime.key] = Math.random() < 0.5;
2248
- }
2227
+ else {
2228
+ max = parseFloat(arr[1]);
2229
+ min = parseFloat(arr[0]);
2230
+ len = arr[1];
2249
2231
  }
2250
- else if (realTime.type === 'object' || realTime.type === 'array') {
2251
- if (realTime.mock) {
2252
- //对象or数组 不mock
2253
- // _d[realTime.key] = realTime.value;
2254
- }
2232
+ if ((len + '').indexOf('.') !== -1) {
2233
+ var length_1 = (len + '').split('.')[1].length;
2234
+ value = (Math.random() * (max - min) + min).toFixed(length_1);
2255
2235
  }
2256
2236
  else {
2257
- //if (realTime.type === 'string')
2258
- if (realTime.mock &&
2259
- realTime.mock.startsWith('{') &&
2260
- realTime.mock.endsWith('}')) {
2261
- var str = realTime.mock.substring(1, realTime.mock.length - 1);
2262
- var arr = str.split(',');
2263
- var rai = Math.floor(Math.random() * arr.length);
2264
- _d_1[realTime.key] = arr[rai];
2265
- }
2266
- else if (realTime.mock &&
2267
- realTime.mock.startsWith('[') &&
2268
- realTime.mock.endsWith(']')) {
2269
- var len = parseInt(realTime.mock.substring(1, realTime.mock.length - 1));
2270
- _d_1[realTime.key] = _this.randomString(len);
2237
+ value = Math.random() * (max - min) + min;
2238
+ }
2239
+ }
2240
+ else {
2241
+ value = parseFloat(data.mock);
2242
+ }
2243
+ }
2244
+ else if (data.type === 'integer') {
2245
+ if (data.mock && data.mock.indexOf(',') !== -1) {
2246
+ var arr = data.mock.split(',');
2247
+ var rai = Math.floor(Math.random() * arr.length);
2248
+ value = parseInt(arr[rai]);
2249
+ }
2250
+ else if (data.mock && data.mock.indexOf('-') !== -1) {
2251
+ var max = void 0;
2252
+ var min = void 0;
2253
+ var arr = data.mock.split('-');
2254
+ if (data.mock.charAt(0) === '-') {
2255
+ if (arr.length === 4) {
2256
+ max = -parseFloat(arr[3]);
2257
+ min = -parseFloat(arr[1]);
2271
2258
  }
2272
2259
  else {
2273
- _d_1[realTime.key] = realTime.mock;
2260
+ max = parseFloat(arr[2]);
2261
+ min = -parseFloat(arr[1]);
2274
2262
  }
2275
2263
  }
2264
+ else {
2265
+ max = parseInt(arr[1]);
2266
+ min = parseInt(arr[0]);
2267
+ }
2268
+ value = parseInt(Math.random() * (max - min) + min + '');
2269
+ }
2270
+ else {
2271
+ value = parseInt(data.mock);
2272
+ }
2273
+ }
2274
+ else if (data.type === 'bool') {
2275
+ if (typeof data.mock === 'boolean') {
2276
+ value = data.mock;
2277
+ }
2278
+ else if ('true' === data.mock) {
2279
+ value = true;
2280
+ }
2281
+ else if ('false' === data.mock) {
2282
+ value = false;
2283
+ }
2284
+ else {
2285
+ value = Math.random() < 0.5;
2286
+ }
2287
+ }
2288
+ else if (data.type === 'object' || data.type === 'array') {
2289
+ if (data.mock) {
2290
+ //对象or数组 不mock
2291
+ // _d[realTime.key] = realTime.value;
2292
+ }
2293
+ }
2294
+ else {
2295
+ //if (realTime.type === 'string')
2296
+ if (data.mock && data.mock.indexOf(',') !== -1) {
2297
+ var str = data.mock.substring(1, data.mock.length - 1);
2298
+ var arr = str.split(',');
2299
+ var rai = Math.floor(Math.random() * arr.length);
2300
+ value = arr[rai];
2301
+ }
2302
+ else if (data.mock &&
2303
+ data.mock.startsWith('[') &&
2304
+ data.mock.endsWith(']')) {
2305
+ var len = parseInt(data.mock.substring(1, data.mock.length - 1));
2306
+ value = this.randomString(len);
2307
+ }
2308
+ else {
2309
+ value = data.mock;
2310
+ }
2311
+ }
2312
+ }
2313
+ return value;
2314
+ };
2315
+ //数据模拟
2316
+ Meta2d.prototype.dataMock = function () {
2317
+ var _this = this;
2318
+ var _a, _b;
2319
+ var arr = [];
2320
+ (_b = (_a = this.store.data.dataset) === null || _a === void 0 ? void 0 : _a.devices) === null || _b === void 0 ? void 0 : _b.forEach(function (data) {
2321
+ var value = _this.mockValue(data);
2322
+ if (value !== undefined) {
2323
+ arr.push({
2324
+ id: data.id,
2325
+ value: value
2326
+ });
2327
+ }
2328
+ });
2329
+ if (arr.length) {
2330
+ this.setDatas(arr, {
2331
+ render: true,
2332
+ doEvent: true,
2333
+ history: false,
2334
+ });
2335
+ }
2336
+ };
2337
+ Meta2d.prototype.startDataMock = function () {
2338
+ var _this = this;
2339
+ var enable = this.store.data.enableMock;
2340
+ if (enable) {
2341
+ this.stopDataMock();
2342
+ this.initBinds();
2343
+ this.updateTimer = setInterval(function () {
2344
+ //本地调试
2345
+ _this.store.data.pens.forEach(function (pen) {
2346
+ _this.penMock(pen);
2347
+ });
2348
+ _this.dataMock();
2349
+ _this.render();
2350
+ }, this.store.data.networkInterval || 1000);
2351
+ }
2352
+ };
2353
+ Meta2d.prototype.stopDataMock = function () {
2354
+ clearInterval(this.updateTimer);
2355
+ this.updateTimer = undefined;
2356
+ };
2357
+ Meta2d.prototype.penMock = function (pen) {
2358
+ var _this = this;
2359
+ var _a;
2360
+ if (pen.realTimes) {
2361
+ var _d_1 = {};
2362
+ pen.realTimes.forEach(function (realTime) {
2363
+ var value = _this.mockValue(realTime);
2364
+ if (value !== undefined) {
2365
+ _d_1[realTime.key] = value;
2276
2366
  }
2277
2367
  });
2278
2368
  if (Object.keys(_d_1).length) {
@@ -2320,8 +2410,8 @@ var Meta2d = /** @class */ (function () {
2320
2410
  };
2321
2411
  Meta2d.prototype.onNetworkConnect = function (https) {
2322
2412
  var _this = this;
2323
- var enable = this.store.data.enableMock;
2324
- if (!(https && https.length) && !enable) {
2413
+ // let enable = this.store.data.enableMock;
2414
+ if (!(https && https.length)) {
2325
2415
  return;
2326
2416
  }
2327
2417
  if (this.store.pensNetwork) {
@@ -2337,18 +2427,18 @@ var Meta2d = /** @class */ (function () {
2337
2427
  });
2338
2428
  }); });
2339
2429
  }
2340
- if (enable) {
2341
- this.updateTimer = setInterval(function () {
2342
- //模拟数据
2343
- _this.store.data.pens.forEach(function (pen) {
2344
- _this.penMock(pen);
2345
- });
2346
- // https.forEach(async (_item) => {
2347
- // this.requestHttp(_item);
2348
- // });
2349
- _this.render();
2350
- }, this.store.data.networkInterval || 1000);
2351
- }
2430
+ // if( enable ){
2431
+ // this.updateTimer = setInterval(() => {
2432
+ // //模拟数据
2433
+ // this.store.data.pens.forEach((pen) => {
2434
+ // this.penMock(pen);
2435
+ // });
2436
+ // // https.forEach(async (_item) => {
2437
+ // // this.requestHttp(_item);
2438
+ // // });
2439
+ // this.render();
2440
+ // }, this.store.data.networkInterval || 1000);
2441
+ // }
2352
2442
  https.forEach(function (_item, index) {
2353
2443
  _this.updateTimerList[index] = setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
2354
2444
  return __generator(this, function (_a) {
@@ -2415,8 +2505,8 @@ var Meta2d = /** @class */ (function () {
2415
2505
  });
2416
2506
  this.mqttClients = undefined;
2417
2507
  this.websockets = undefined;
2418
- clearInterval(this.updateTimer);
2419
- this.updateTimer = undefined;
2508
+ // clearInterval(this.updateTimer);
2509
+ // this.updateTimer = undefined;
2420
2510
  this.updateTimerList &&
2421
2511
  this.updateTimerList.forEach(function (_updateTimer) {
2422
2512
  clearInterval(_updateTimer);
@@ -2538,6 +2628,7 @@ var Meta2d = /** @class */ (function () {
2538
2628
  }
2539
2629
  });
2540
2630
  });
2631
+ this.store.data.locked && this.doDataEvent(datas);
2541
2632
  var initPens;
2542
2633
  var pens;
2543
2634
  if (history) {
@@ -2723,6 +2814,69 @@ var Meta2d = /** @class */ (function () {
2723
2814
  });
2724
2815
  });
2725
2816
  };
2817
+ Meta2d.prototype.dataJudegeCondition = function (data, key, condition) {
2818
+ var type = condition.type, target = condition.target, fnJs = condition.fnJs, fn = condition.fn, operator = condition.operator, valueType = condition.valueType;
2819
+ var can = false;
2820
+ if (type === 'fn') {
2821
+ //方法
2822
+ if (fn) {
2823
+ can = fn(data, { meta2d: this });
2824
+ }
2825
+ else if (fnJs) {
2826
+ try {
2827
+ condition.fn = new Function('data', 'context', fnJs);
2828
+ }
2829
+ catch (err) {
2830
+ console.error('Error: make function:', err);
2831
+ }
2832
+ if (condition.fn) {
2833
+ can = condition.fn(data, { meta2d: this });
2834
+ }
2835
+ }
2836
+ }
2837
+ else {
2838
+ //TODO boolean类型 数字类型
2839
+ var value = condition.value;
2840
+ if (valueType === 'prop') {
2841
+ value = data[condition.value];
2842
+ }
2843
+ var compareValue = data[key];
2844
+ switch (operator) {
2845
+ case '>':
2846
+ can = compareValue > +value;
2847
+ break;
2848
+ case '>=':
2849
+ can = compareValue >= +value;
2850
+ break;
2851
+ case '<':
2852
+ can = compareValue < +value;
2853
+ break;
2854
+ case '<=':
2855
+ can = compareValue <= +value;
2856
+ break;
2857
+ case '=':
2858
+ case '==':
2859
+ can = compareValue == value;
2860
+ break;
2861
+ case '!=':
2862
+ can = compareValue != value;
2863
+ break;
2864
+ case '[)':
2865
+ can = valueInRange(+compareValue, value);
2866
+ break;
2867
+ case '![)':
2868
+ can = !valueInRange(+compareValue, value);
2869
+ break;
2870
+ case '[]':
2871
+ can = valueInArray(compareValue, value);
2872
+ break;
2873
+ case '![]':
2874
+ can = !valueInArray(compareValue, value);
2875
+ break;
2876
+ }
2877
+ }
2878
+ return can;
2879
+ };
2726
2880
  Meta2d.prototype.judgeCondition = function (pen, key, condition) {
2727
2881
  var type = condition.type, target = condition.target, fnJs = condition.fnJs, fn = condition.fn, operator = condition.operator, valueType = condition.valueType;
2728
2882
  var can = false;
@@ -3863,7 +4017,7 @@ var Meta2d = /** @class */ (function () {
3863
4017
  this.setValue({ id: pen.id, canvasLayer: layer }, { render: false, doEvent: false, history: false });
3864
4018
  }
3865
4019
  else if (pen.externElement || pen.name === 'gif') {
3866
- var zIndex = 1;
4020
+ var zIndex = 0;
3867
4021
  // let zIndex = pen.calculative.zIndex === undefined ? 5 : pen.calculative.zIndex + 1;
3868
4022
  if (type === 'top') {
3869
4023
  pen.calculative.canvas.maxZindex += 1;
@@ -3876,8 +4030,8 @@ var Meta2d = /** @class */ (function () {
3876
4030
  else if (type === 'down') {
3877
4031
  zIndex =
3878
4032
  pen.calculative.zIndex === undefined ? 3 : pen.calculative.zIndex - 1;
3879
- if (zIndex < 1) {
3880
- zIndex = 1;
4033
+ if (zIndex < 0) {
4034
+ zIndex = 0;
3881
4035
  }
3882
4036
  }
3883
4037
  this.setValue({ id: pen.id, zIndex: zIndex }, { render: false, doEvent: false, history: false });