efront 3.9.9 → 3.9.15

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.
@@ -72,7 +72,13 @@ const formulaters = {
72
72
  return formulate(data, params);
73
73
  }
74
74
  };
75
-
75
+ var seekFromSource = function (obj, base) {
76
+ var source = dataSourceMap;
77
+ if (base && base in dataSourceMap) source = source[base];
78
+ obj = seek(source, obj);
79
+ if (isObject(obj)) for (var k in obj) if (obj[k] === dataSourceMap) delete obj[k];
80
+ return obj;
81
+ };
76
82
  function getErrorMessage(error = this) {
77
83
  if (!isObject(error)) return String(error);
78
84
  if (error instanceof Error) return String(error);
@@ -533,9 +539,9 @@ var privates = {
533
539
  rest.forEach(k => delete params[k]);
534
540
  return { method: realmethod, coinmethod, selector: method.slice(spliterIndex + 1), search, baseuri, uri, params };
535
541
  },
536
- loadIgnoreConfig(method, url, params, api) {
542
+ loadIgnoreConfig(method, url, params1, api) {
537
543
  var headers = api && api.headers;
538
- var { method: realmethod, uri, baseuri, coinmethod, search, selector, params } = this.prepare(method, url, params);
544
+ var { method: realmethod, uri, baseuri, coinmethod, search, selector, params } = this.prepare(method, url, params1);
539
545
  var id = realmethod + " " + baseuri;
540
546
  var promise = cachedLoadingPromise[id];
541
547
  var temp = JSON.stringify(params);
@@ -543,18 +549,19 @@ var privates = {
543
549
  if (!promise || currentTime - promise.time > 60 || temp !== promise.params || promise.search !== search) {
544
550
  var promise = new Promise(function (ok, oh) {
545
551
  if (headers) {
546
- headers = seek(dataSourceMap, headers);
552
+ headers = seekFromSource(headers, api.base);
547
553
  }
548
554
  cross(realmethod, uri, headers).send(params).done(e => {
549
555
  ok(e.response || e.responseText);
550
556
  }).error(xhr => {
551
557
  try {
552
558
  var e = getErrorMessage(parseData(xhr.response || xhr.responseText || xhr.statusText || xhr.status));
553
- oh({ status: xhr.status, error: e, toString: getErrorMessage })
559
+ oh({ status: xhr.status, api, params: params1, error: e, toString: getErrorMessage })
554
560
  } catch (error) {
555
561
  oh(error);
556
562
  }
557
563
  });
564
+ updateLoadingCount();
558
565
  });
559
566
  promise.search = search;
560
567
  promise.params = temp;
@@ -609,7 +616,6 @@ var loadInstance = function (storage, id) {
609
616
  };
610
617
 
611
618
  function responseCrash(e, data) {
612
- if (data.is_loading) this.loading_count--;
613
619
  data.is_errored = true;
614
620
  data.is_loading = false;
615
621
  data.error_message = getErrorMessage(e);
@@ -619,19 +625,24 @@ function responseCrash(e, data) {
619
625
  } else {
620
626
  data.error = e;
621
627
  }
622
- error_report(data.error_message, e.status < 500 ? 'warn' : 'error');
628
+ error_report(e, e.status < 500 ? 'warn' : 'error');
629
+ updateLoadingCount();
623
630
  }
624
631
  var getData = function () { return this.data };
632
+ var updateLoadingCount = function () {
633
+ data.loading_count = cross.requests.length;
634
+ };
625
635
  var data = {
626
636
  decodeStructure,
627
637
  encodeStructure,
638
+ abortAll: cross.abortAll,
628
639
  responseLoaded(response) {
629
640
  if (isObject(response)) {
630
641
  response.is_loaded = true;
631
642
  response.is_loading = false;
632
643
  if (response.then === LoadingArray_then) delete response.then;
633
644
  }
634
- this.loading_count--;
645
+ updateLoadingCount();
635
646
  },
636
647
  responseCrash,
637
648
  responseLoading(response) {
@@ -640,7 +651,6 @@ var data = {
640
651
  response.is_loading = true;
641
652
  response.then = LoadingArray_then;
642
653
  }
643
- this.loading_count++;
644
654
  },
645
655
  setReporter(report, checker) {
646
656
  if (report instanceof Function) {
@@ -840,19 +850,18 @@ var data = {
840
850
  if (promise1 !== instance.loading_promise) throw outdate;
841
851
  if (instance.loading) {
842
852
  instance.loading.abort();
843
- data.loading_count--;
844
853
  }
845
854
  this.responseLoading(instance);
846
- var params = privates.pack(sid, params1);
847
- if (!privates.validApi(api, params)) throw aborted;
855
+ var params2 = privates.pack(sid, params1);
856
+ if (!privates.validApi(api, params2)) throw aborted;
848
857
  let url = api.url;
849
858
  var base = api.base;
850
859
  if (base) url = base + api.path;
851
- var { method, uri, params, selector } = privates.prepare(api.method, url, params);
860
+ var { method, uri, params, selector } = privates.prepare(api.method, url, params2);
852
861
  var promise = new Promise(function (ok, oh) {
853
862
  var headers = api.headers;
854
863
  if (headers) {
855
- headers = seek(dataSourceMap, headers);
864
+ headers = seekFromSource(headers, api.base);
856
865
  }
857
866
  instance.loading = cross(method, uri, headers).send(params).done(xhr => {
858
867
  if (instance.loading !== xhr) return oh(aborted);
@@ -862,11 +871,13 @@ var data = {
862
871
  if (instance.loading !== xhr) return oh(aborted);
863
872
  instance.loading = null;
864
873
  try {
865
- oh(parseData(xhr.response || xhr.responseText || xhr.statusText || xhr.status));
874
+ var e = getErrorMessage(parseData(xhr.response || xhr.responseText || xhr.statusText || xhr.status));
875
+ oh({ status: xhr.status, error: e, api, params: params2, toString: getErrorMessage })
866
876
  } catch (error) {
867
877
  oh(error);
868
878
  }
869
879
  });
880
+ updateLoadingCount();
870
881
  }).then(function (response) {
871
882
  return transpile(seekResponse(parseData(response), selector), api.transpile, api.root);
872
883
  });
@@ -884,7 +895,6 @@ var data = {
884
895
  });
885
896
  promise1.catch((e) => {
886
897
  if (e === outdate) return;
887
- if (e === aborted) return data.loading_count--;
888
898
  this.responseCrash(e, instance);
889
899
  });
890
900
 
package/coms/zimoli/on.js CHANGED
@@ -167,8 +167,13 @@ if (is_addEventListener_enabled) {
167
167
  var eventtypes = parseEventTypes(k);
168
168
  k = k.replace(eventtypereg, '');
169
169
  function addhandler(element, handler, firstmost) {
170
+ var target = this;
170
171
  handler = wrapHandler(handler);
171
172
  if (eventtypes.capture) firstmost = true;
173
+ if (target && element !== target) {
174
+ handler = handler.bind(element);
175
+ element = target;
176
+ }
172
177
  if (k === changes_key) {
173
178
  if (!element.needchanges) element.needchanges = 0;
174
179
  element.needchanges++;
@@ -207,11 +212,16 @@ if (is_addEventListener_enabled) {
207
212
 
208
213
  if (handlersMap[on_event_path]) return handlersMap[on_event_path];
209
214
  function addhandler(element, handler, firstmost = false) {
215
+ var target = this;
210
216
  handler = wrapHandler(handler);
211
217
  if (eventtypes.capture) {
212
218
  console.warn("当前运行环境不支持事件capture");
213
219
  firstmost = true;
214
220
  }
221
+ if (target && element !== target) {
222
+ handler = handler.bind(element);
223
+ element = target;
224
+ }
215
225
  if (k === changes_key) {
216
226
  if (!element.needchanges) element.needchanges = 0;
217
227
  element.needchanges++;
@@ -105,9 +105,16 @@ var popup_path = function (path = "", parameters, target) {
105
105
  element.style.opacity = 1;
106
106
  });
107
107
  }
108
+ callbacks.forEach(f => f(element));
108
109
  };
110
+ var callbacks = [];
109
111
  popup.prepare(path, fullfill);
110
- return element;
112
+ return element || {
113
+ then(ok) {
114
+ if (element) return ok(element);
115
+ else callbacks.push(ok);
116
+ }, fullfill
117
+ };
111
118
  };
112
119
 
113
120
  var popup_view = function (element, target, style) {
@@ -42,6 +42,9 @@ function select(target, list, removeOnSelect, direction) {
42
42
  direction = removeOnSelect;
43
43
  removeOnSelect = arguments[3];
44
44
  }
45
+ if (direction === undefined) {
46
+ direction = target.getAttribute("direction") || target.direction;
47
+ }
45
48
  if (!target) {
46
49
  target = document.createElement("select");
47
50
  }
@@ -63,11 +66,13 @@ function select(target, list, removeOnSelect, direction) {
63
66
  var onlistchange = function () {
64
67
  if (target.multiple) {
65
68
  } else {
66
- if (!savedOptions) {
67
- target.innerHTML = `<option selected value="${this.value}">${this.name || this.value}</option>`
69
+ if (target.value !== this.value) {
70
+ if (!savedOptions) {
71
+ target.innerHTML = `<option selected value="${this.value}">${this.name || this.value}</option>`
72
+ }
73
+ target.value = this.value;
74
+ dispatch(target, "change");
68
75
  }
69
- target.value = this.value;
70
- dispatch(target, "change");
71
76
  }
72
77
  };
73
78
  var onlistclick = function (event) {
@@ -52,12 +52,19 @@ body>& {
52
52
  position: relative;
53
53
  position: sticky;
54
54
  line-height: 20px;
55
- white-space: nowrap;
56
55
  overflow: hidden;
57
56
  text-overflow: ellipsis;
58
57
  color: #333;
59
58
  padding: 12px 16px 10px 16px;
60
59
 
60
+ &:before {
61
+ display: block;
62
+ content: "";
63
+ width: 20px;
64
+ height: 20px;
65
+ float: right;
66
+ }
67
+
61
68
  &:not(:last-child) {
62
69
  margin: 0 0 -42px;
63
70
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.9.9",
3
+ "version": "3.9.15",
4
4
  "description": "一个开发工具,开放源代码,自带组件库和编译环境,可以用来开发web组件,web应用或nodejs模块,或做为已有代码的加密工具,也可以做为静态页面服务器或跨域中转服务器使用",
5
5
  "main": "public/efront.js",
6
6
  "directories": {