@qooxdoo/framework 7.7.2 → 7.9.0
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/Manifest.json +2 -2
- package/lib/compiler/compile-info.json +91 -89
- package/lib/compiler/index.js +2517 -1488
- package/lib/resource/qx/tool/schema/compile-1-0-0.json +13 -0
- package/lib/resource/qx/tool/website/build/404.html +3 -25
- package/lib/resource/qx/tool/website/build/about.html +3 -25
- package/lib/resource/qx/tool/website/build/assets/common.js +20 -0
- package/lib/resource/qx/tool/website/build/diagnostics/dependson.html +3 -25
- package/lib/resource/qx/tool/website/build/diagnostics/requiredby.html +3 -22
- package/lib/resource/qx/tool/website/build/index.html +3 -25
- package/lib/resource/qx/tool/website/partials/footer.html +3 -21
- package/lib/resource/qx/tool/website/partials/head.html +0 -1
- package/package.json +2 -2
- package/source/class/qx/Bootstrap.js +6 -3
- package/source/class/qx/Promise.js +93 -6964
- package/source/class/qx/bom/Label.js +82 -2
- package/source/class/qx/bom/webfonts/WebFont.js +1 -0
- package/source/class/qx/core/Environment.js +83 -1
- package/source/class/qx/data/controller/List.js +50 -21
- package/source/class/qx/data/controller/MSelection.js +45 -12
- package/source/class/qx/data/marshal/Json.js +64 -11
- package/source/class/qx/dev/unit/AsyncWrapper.js +8 -0
- package/source/class/qx/event/Manager.js +163 -124
- package/source/class/qx/io/ImageLoader.js +6 -3
- package/source/class/qx/io/exception/Transport.js +1 -0
- package/source/class/qx/io/jsonrpc/Client.js +64 -8
- package/source/class/qx/io/jsonrpc/protocol/Request.js +10 -6
- package/source/class/qx/lang/Type.js +36 -3
- package/source/class/qx/promise/BluebirdImpl.js +6918 -0
- package/source/class/qx/promise/NativeWrapper.js +738 -0
- package/source/class/qx/test/Promise.js +1145 -22
- package/source/class/qx/test/bom/client/Pdfjs.js +4 -0
- package/source/class/qx/test/bom/element/AnimationJs.js +3 -0
- package/source/class/qx/test/bom/element/Style.js +1 -0
- package/source/class/qx/test/bom/media/MediaTestCase.js +6 -0
- package/source/class/qx/test/core/Environment.js +44 -0
- package/source/class/qx/test/data/controller/List.js +6 -0
- package/source/class/qx/test/data/marshal/Json.js +29 -0
- package/source/class/qx/test/io/MAssert.js +94 -0
- package/source/class/qx/test/io/TestMAssert.js +47 -0
- package/source/class/qx/test/io/jsonrpc/Client.js +79 -19
- package/source/class/qx/test/io/jsonrpc/PostMessageClient.js +152 -0
- package/source/class/qx/test/io/jsonrpc/Protocol.js +1 -5
- package/source/class/qx/test/io/request/Xhr.js +16 -0
- package/source/class/qx/test/lang/Type.js +151 -0
- package/source/class/qx/test/ui/embed/Iframe.js +1 -1
- package/source/class/qx/test/ui/form/TextArea.js +4 -0
- package/source/class/qx/test/util/DeferredCall.js +6 -0
- package/source/class/qx/test/util/Function.js +2 -2
- package/source/class/qx/theme/indigo/ColorDark.js +1 -1
- package/source/class/qx/tool/cli/api/Test.js +22 -0
- package/source/class/qx/tool/cli/commands/Compile.js +17 -4
- package/source/class/qx/tool/cli/commands/Test.js +7 -1
- package/source/class/qx/tool/compiler/Analyser.js +7 -0
- package/source/class/qx/tool/compiler/ClassFile.js +3 -2
- package/source/class/qx/tool/compiler/MetaExtraction.js +0 -5
- package/source/class/qx/tool/compiler/targets/meta/Browserify.js +8 -2
- package/source/class/qx/ui/basic/Image.js +72 -8
- package/source/class/qx/ui/basic/Label.js +4 -6
- package/source/class/qx/ui/control/DateChooser.js +4 -6
- package/source/class/qx/ui/core/Blocker.js +4 -6
- package/source/class/qx/ui/core/LayoutItem.js +4 -6
- package/source/class/qx/ui/core/MPlacement.js +23 -1
- package/source/class/qx/ui/core/Widget.js +7 -5
- package/source/class/qx/ui/form/AbstractField.js +4 -6
- package/source/class/qx/ui/form/MForm.js +4 -6
- package/source/class/qx/ui/form/Spinner.js +4 -6
- package/source/class/qx/ui/form/renderer/AbstractRenderer.js +4 -6
- package/source/class/qx/ui/menu/AbstractButton.js +7 -11
- package/source/class/qx/ui/mobile/basic/Label.js +4 -6
- package/source/class/qx/ui/mobile/form/Label.js +4 -6
- package/source/class/qx/ui/mobile/list/List.js +4 -6
- package/source/class/qx/ui/progressive/renderer/table/Row.js +35 -7
- package/source/class/qx/ui/progressive/renderer/table/cell/Boolean.js +4 -6
- package/source/class/qx/ui/table/Table.js +4 -6
- package/source/class/qx/ui/table/cellrenderer/Abstract.js +4 -6
- package/source/class/qx/ui/table/cellrenderer/Boolean.js +4 -6
- package/source/class/qx/ui/table/pane/Scroller.js +1 -1
- package/source/class/qx/ui/table/rowrenderer/Default.js +4 -6
- package/source/class/qx/util/ConcurrencyLimiter.js +78 -0
- package/source/resource/qx/tool/schema/compile-1-0-0.json +13 -0
- package/source/resource/qx/tool/website/build/404.html +3 -25
- package/source/resource/qx/tool/website/build/about.html +3 -25
- package/source/resource/qx/tool/website/build/assets/common.js +20 -0
- package/source/resource/qx/tool/website/build/diagnostics/dependson.html +3 -25
- package/source/resource/qx/tool/website/build/diagnostics/requiredby.html +3 -22
- package/source/resource/qx/tool/website/build/index.html +3 -25
- package/source/resource/qx/tool/website/partials/footer.html +3 -21
- package/source/resource/qx/tool/website/partials/head.html +0 -1
- package/lib/resource/qx/tool/website/build/assets/bluebird.min.js +0 -4615
- package/lib/resource/qx/tool/website/src/assets/bluebird.min.js +0 -4615
- package/source/resource/qx/tool/website/build/assets/bluebird.min.js +0 -4615
- package/source/resource/qx/tool/website/src/assets/bluebird.min.js +0 -4615
|
@@ -203,6 +203,9 @@ qx.Mixin.define("qx.ui.core.MPlacement", {
|
|
|
203
203
|
__ptwLiveUpdater: null,
|
|
204
204
|
__ptwLiveDisappearListener: null,
|
|
205
205
|
__ptwLiveUpdateDisappearListener: null,
|
|
206
|
+
/**@type {Record<"top" | "right" | "bottom" | "left", number> | null}*/
|
|
207
|
+
__lastKnownCoords: null,
|
|
208
|
+
__lastKnownSize: null,
|
|
206
209
|
|
|
207
210
|
/**
|
|
208
211
|
* Returns the location data like {qx.bom.element.Location#get} does,
|
|
@@ -376,8 +379,23 @@ qx.Mixin.define("qx.ui.core.MPlacement", {
|
|
|
376
379
|
|
|
377
380
|
var coords =
|
|
378
381
|
target.getContentLocation() || this.getLayoutLocation(target);
|
|
382
|
+
var size = this.__getPlacementSize();
|
|
379
383
|
|
|
380
384
|
if (coords != null) {
|
|
385
|
+
|
|
386
|
+
const boundsAreEqual = (bound1, bound2) => bound1 && bound2 &&
|
|
387
|
+
bound1.top === bound2.top &&
|
|
388
|
+
bound1.right === bound2.right &&
|
|
389
|
+
bound1.bottom === bound2.bottom &&
|
|
390
|
+
bound1.left === bound2.left;
|
|
391
|
+
|
|
392
|
+
if (boundsAreEqual(coords, this.__lastKnownCoords) &&
|
|
393
|
+
boundsAreEqual(size, this.__lastKnownSize)) {
|
|
394
|
+
return true;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
this.__lastKnownCoords = coords;
|
|
398
|
+
this.__lastKnownSize = size;
|
|
381
399
|
this._place(coords);
|
|
382
400
|
return true;
|
|
383
401
|
} else {
|
|
@@ -516,7 +534,7 @@ qx.Mixin.define("qx.ui.core.MPlacement", {
|
|
|
516
534
|
* <code>_computePlacementSize</code>, which returns the size.
|
|
517
535
|
*
|
|
518
536
|
* @param callback {Function} This function will be called with the size as
|
|
519
|
-
* first argument
|
|
537
|
+
* first argument. If it is null, the size is returned directly.
|
|
520
538
|
*/
|
|
521
539
|
__getPlacementSize(callback) {
|
|
522
540
|
var size = null;
|
|
@@ -527,6 +545,10 @@ qx.Mixin.define("qx.ui.core.MPlacement", {
|
|
|
527
545
|
var size = this.getBounds();
|
|
528
546
|
}
|
|
529
547
|
|
|
548
|
+
if (!callback) {
|
|
549
|
+
return {...size};
|
|
550
|
+
}
|
|
551
|
+
|
|
530
552
|
if (size == null) {
|
|
531
553
|
this.addListenerOnce("appear", () => {
|
|
532
554
|
this.__getPlacementSize(callback);
|
|
@@ -2128,11 +2128,13 @@ qx.Class.define("qx.ui.core.Widget", {
|
|
|
2128
2128
|
}, // property apply
|
|
2129
2129
|
_applyVisibility(value, old) {
|
|
2130
2130
|
var content = this.getContentElement();
|
|
2131
|
-
if (
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2131
|
+
if (content) {
|
|
2132
|
+
if (value === "visible") {
|
|
2133
|
+
content.show();
|
|
2134
|
+
} else {
|
|
2135
|
+
content.hide();
|
|
2136
|
+
} // only force a layout update if visibility change from/to "exclude"
|
|
2137
|
+
}
|
|
2136
2138
|
var parent = this.$$parent;
|
|
2137
2139
|
if (
|
|
2138
2140
|
parent &&
|
|
@@ -144,7 +144,7 @@ qx.Class.define("qx.ui.form.AbstractField", {
|
|
|
144
144
|
|
|
145
145
|
// translation support
|
|
146
146
|
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
147
|
-
qx.locale.Manager.getInstance().addListener(
|
|
147
|
+
this.__changeLocaleAbstractFieldListenerId = qx.locale.Manager.getInstance().addListener(
|
|
148
148
|
"changeLocale",
|
|
149
149
|
this._onChangeLocale,
|
|
150
150
|
this
|
|
@@ -1074,11 +1074,9 @@ qx.Class.define("qx.ui.form.AbstractField", {
|
|
|
1074
1074
|
|
|
1075
1075
|
this._placeholder = this.__font = null;
|
|
1076
1076
|
|
|
1077
|
-
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
1078
|
-
qx.locale.Manager.getInstance().
|
|
1079
|
-
|
|
1080
|
-
this._onChangeLocale,
|
|
1081
|
-
this
|
|
1077
|
+
if (qx.core.Environment.get("qx.dynlocale") && this.__changeLocaleAbstractFieldListenerId) {
|
|
1078
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
1079
|
+
this.__changeLocaleAbstractFieldListenerId
|
|
1082
1080
|
);
|
|
1083
1081
|
}
|
|
1084
1082
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
qx.Mixin.define("qx.ui.form.MForm", {
|
|
23
23
|
construct() {
|
|
24
24
|
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
25
|
-
qx.locale.Manager.getInstance().addListener(
|
|
25
|
+
this.__changeLocaleMFormListenerId = qx.locale.Manager.getInstance().addListener(
|
|
26
26
|
"changeLocale",
|
|
27
27
|
this.__onChangeLocale,
|
|
28
28
|
this
|
|
@@ -103,11 +103,9 @@ qx.Mixin.define("qx.ui.form.MForm", {
|
|
|
103
103
|
},
|
|
104
104
|
|
|
105
105
|
destruct() {
|
|
106
|
-
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
107
|
-
qx.locale.Manager.getInstance().
|
|
108
|
-
|
|
109
|
-
this.__onChangeLocale,
|
|
110
|
-
this
|
|
106
|
+
if (qx.core.Environment.get("qx.dynlocale") && this.__changeLocaleMFormListenerId) {
|
|
107
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
108
|
+
this.__changeLocaleMFormListenerId
|
|
111
109
|
);
|
|
112
110
|
}
|
|
113
111
|
}
|
|
@@ -87,7 +87,7 @@ qx.Class.define("qx.ui.form.Spinner", {
|
|
|
87
87
|
this.addListener("roll", this._onRoll, this);
|
|
88
88
|
|
|
89
89
|
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
90
|
-
qx.locale.Manager.getInstance().addListener(
|
|
90
|
+
this.__changeLocaleSpinnerListenerId = qx.locale.Manager.getInstance().addListener(
|
|
91
91
|
"changeLocale",
|
|
92
92
|
this._onChangeLocale,
|
|
93
93
|
this
|
|
@@ -800,11 +800,9 @@ qx.Class.define("qx.ui.form.Spinner", {
|
|
|
800
800
|
nf.removeListener("changeNumberFormat", this._onChangeNumberFormat, this);
|
|
801
801
|
}
|
|
802
802
|
|
|
803
|
-
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
804
|
-
qx.locale.Manager.getInstance().
|
|
805
|
-
|
|
806
|
-
this._onChangeLocale,
|
|
807
|
-
this
|
|
803
|
+
if (qx.core.Environment.get("qx.dynlocale") && this.__changeLocaleSpinnerListenerId) {
|
|
804
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
805
|
+
this.__changeLocaleSpinnerListenerId
|
|
808
806
|
);
|
|
809
807
|
}
|
|
810
808
|
}
|
|
@@ -38,7 +38,7 @@ qx.Class.define("qx.ui.form.renderer.AbstractRenderer", {
|
|
|
38
38
|
|
|
39
39
|
// translation support
|
|
40
40
|
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
41
|
-
qx.locale.Manager.getInstance().addListener(
|
|
41
|
+
this.__changeLocaleRendererListenerId = qx.locale.Manager.getInstance().addListener(
|
|
42
42
|
"changeLocale",
|
|
43
43
|
this._onChangeLocale,
|
|
44
44
|
this
|
|
@@ -190,11 +190,9 @@ qx.Class.define("qx.ui.form.renderer.AbstractRenderer", {
|
|
|
190
190
|
*/
|
|
191
191
|
|
|
192
192
|
destruct() {
|
|
193
|
-
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
194
|
-
qx.locale.Manager.getInstance().
|
|
195
|
-
|
|
196
|
-
this._onChangeLocale,
|
|
197
|
-
this
|
|
193
|
+
if (qx.core.Environment.get("qx.dynlocale") && this.__changeLocaleRendererListenerId) {
|
|
194
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
195
|
+
this.__changeLocaleRendererListenerId
|
|
198
196
|
);
|
|
199
197
|
}
|
|
200
198
|
this._names = null;
|
|
@@ -265,17 +265,15 @@ qx.Class.define("qx.ui.menu.AbstractButton", {
|
|
|
265
265
|
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
266
266
|
var oldCommand = e.getOldData();
|
|
267
267
|
if (!oldCommand) {
|
|
268
|
-
qx.locale.Manager.getInstance().addListener(
|
|
268
|
+
this.__changeLocaleCommandListenerId = qx.locale.Manager.getInstance().addListener(
|
|
269
269
|
"changeLocale",
|
|
270
270
|
this._onChangeLocale,
|
|
271
271
|
this
|
|
272
272
|
);
|
|
273
273
|
}
|
|
274
|
-
if (!command) {
|
|
275
|
-
qx.locale.Manager.getInstance().
|
|
276
|
-
|
|
277
|
-
this._onChangeLocale,
|
|
278
|
-
this
|
|
274
|
+
if (!command && this.__changeLocaleCommandListenerId) {
|
|
275
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
276
|
+
this.__changeLocaleCommandListenerId
|
|
279
277
|
);
|
|
280
278
|
}
|
|
281
279
|
}
|
|
@@ -397,11 +395,9 @@ qx.Class.define("qx.ui.menu.AbstractButton", {
|
|
|
397
395
|
}
|
|
398
396
|
}
|
|
399
397
|
|
|
400
|
-
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
401
|
-
qx.locale.Manager.getInstance().
|
|
402
|
-
|
|
403
|
-
this._onChangeLocale,
|
|
404
|
-
this
|
|
398
|
+
if (qx.core.Environment.get("qx.dynlocale") && this.__changeLocaleCommandListenerId) {
|
|
399
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
400
|
+
this.__changeLocaleCommandListenerId
|
|
405
401
|
);
|
|
406
402
|
}
|
|
407
403
|
}
|
|
@@ -51,7 +51,7 @@ qx.Class.define("qx.ui.mobile.basic.Label", {
|
|
|
51
51
|
this.initWrap();
|
|
52
52
|
|
|
53
53
|
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
54
|
-
qx.locale.Manager.getInstance().addListener(
|
|
54
|
+
this.__changeLocaleLabelListenerId = qx.locale.Manager.getInstance().addListener(
|
|
55
55
|
"changeLocale",
|
|
56
56
|
this._onChangeLocale,
|
|
57
57
|
this
|
|
@@ -145,11 +145,9 @@ qx.Class.define("qx.ui.mobile.basic.Label", {
|
|
|
145
145
|
*/
|
|
146
146
|
|
|
147
147
|
destruct() {
|
|
148
|
-
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
149
|
-
qx.locale.Manager.getInstance().
|
|
150
|
-
|
|
151
|
-
this._onChangeLocale,
|
|
152
|
-
this
|
|
148
|
+
if (qx.core.Environment.get("qx.dynlocale") && this.__changeLocaleLabelListenerId) {
|
|
149
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
150
|
+
this.__changeLocaleLabelListenerId
|
|
153
151
|
);
|
|
154
152
|
}
|
|
155
153
|
}
|
|
@@ -71,7 +71,7 @@ qx.Class.define("qx.ui.mobile.form.Label", {
|
|
|
71
71
|
this.initWrap();
|
|
72
72
|
|
|
73
73
|
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
74
|
-
qx.locale.Manager.getInstance().addListener(
|
|
74
|
+
this.__changeLocaleLabelListenerId = qx.locale.Manager.getInstance().addListener(
|
|
75
75
|
"changeLocale",
|
|
76
76
|
this._onChangeLocale,
|
|
77
77
|
this
|
|
@@ -242,11 +242,9 @@ qx.Class.define("qx.ui.mobile.form.Label", {
|
|
|
242
242
|
|
|
243
243
|
this.__forWidget = null;
|
|
244
244
|
}
|
|
245
|
-
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
246
|
-
qx.locale.Manager.getInstance().
|
|
247
|
-
|
|
248
|
-
this._onChangeLocale,
|
|
249
|
-
this
|
|
245
|
+
if (qx.core.Environment.get("qx.dynlocale") && this.__changeLocaleLabelListenerId) {
|
|
246
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
247
|
+
this.__changeLocaleLabelListenerId
|
|
250
248
|
);
|
|
251
249
|
}
|
|
252
250
|
}
|
|
@@ -89,7 +89,7 @@ qx.Class.define("qx.ui.mobile.list.List", {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
92
|
-
qx.locale.Manager.getInstance().addListener(
|
|
92
|
+
this.__changeLocaleListListenerId = qx.locale.Manager.getInstance().addListener(
|
|
93
93
|
"changeLocale",
|
|
94
94
|
this._onChangeLocale,
|
|
95
95
|
this
|
|
@@ -615,11 +615,9 @@ qx.Class.define("qx.ui.mobile.list.List", {
|
|
|
615
615
|
destruct() {
|
|
616
616
|
this.__trackElement = null;
|
|
617
617
|
this._disposeObjects("__provider");
|
|
618
|
-
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
619
|
-
qx.locale.Manager.getInstance().
|
|
620
|
-
|
|
621
|
-
this._onChangeLocale,
|
|
622
|
-
this
|
|
618
|
+
if (qx.core.Environment.get("qx.dynlocale") && this.__changeLocaleListListenerId) {
|
|
619
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
620
|
+
this.__changeLocaleListListenerId
|
|
623
621
|
);
|
|
624
622
|
}
|
|
625
623
|
}
|
|
@@ -107,6 +107,14 @@ qx.Class.define("qx.ui.progressive.renderer.table.Row", {
|
|
|
107
107
|
/** The default height of a row, if not altered by a cell renderer. */
|
|
108
108
|
defaultRowHeight: {
|
|
109
109
|
init: 16
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Use a table-specific alternating row color instead of
|
|
114
|
+
* row-renderer-instance-specific
|
|
115
|
+
*/
|
|
116
|
+
alternateBgColorsTableGlobal: {
|
|
117
|
+
init: false
|
|
110
118
|
}
|
|
111
119
|
},
|
|
112
120
|
|
|
@@ -157,6 +165,9 @@ qx.Class.define("qx.ui.progressive.renderer.table.Row", {
|
|
|
157
165
|
}
|
|
158
166
|
|
|
159
167
|
var hash = progressive.toHashCode();
|
|
168
|
+
this.__hash = hash;
|
|
169
|
+
|
|
170
|
+
|
|
160
171
|
if (!tr.__clazz[hash]) {
|
|
161
172
|
// ... then do it now.
|
|
162
173
|
tr.__clazz[hash] = {
|
|
@@ -184,9 +195,6 @@ qx.Class.define("qx.ui.progressive.renderer.table.Row", {
|
|
|
184
195
|
qx.bom.Stylesheet.createElement(stylesheet);
|
|
185
196
|
}
|
|
186
197
|
|
|
187
|
-
// Save the hash too
|
|
188
|
-
this.__hash = hash;
|
|
189
|
-
|
|
190
198
|
// Arrange to be called when the window appears or is resized, so we
|
|
191
199
|
// can set each style sheet's left and width field appropriately.
|
|
192
200
|
var pane = progressive.getStructure().getPane();
|
|
@@ -316,13 +324,19 @@ qx.Class.define("qx.ui.progressive.renderer.table.Row", {
|
|
|
316
324
|
switch (element.location) {
|
|
317
325
|
case "end":
|
|
318
326
|
// Determine color of row based on state of last added row
|
|
319
|
-
var index
|
|
327
|
+
var index;
|
|
328
|
+
if (this.getAlternateBgColorsTableGlobal()) {
|
|
329
|
+
index = state.getUserData().tableRowBgEnd || 0;
|
|
330
|
+
} else {
|
|
331
|
+
index = rendererData.end;
|
|
332
|
+
}
|
|
320
333
|
|
|
321
334
|
// Set the background color of this row
|
|
322
335
|
div.style.backgroundColor = this.__colors.bgcol[index];
|
|
323
336
|
|
|
324
337
|
// Update state for next time
|
|
325
338
|
rendererData.end = index == 0 ? 1 : 0;
|
|
339
|
+
state.getUserData().tableRowBgEnd = rendererData.end;
|
|
326
340
|
|
|
327
341
|
// Append our new row to the pane.
|
|
328
342
|
state.getPane().getContentElement().getDomElement().appendChild(div);
|
|
@@ -338,19 +352,33 @@ qx.Class.define("qx.ui.progressive.renderer.table.Row", {
|
|
|
338
352
|
// Are there any children?
|
|
339
353
|
if (children.length > 0) {
|
|
340
354
|
// Yup. Determine color of row based on state of last added row
|
|
341
|
-
var index
|
|
355
|
+
var index;
|
|
356
|
+
if (this.getAlternateBgColorsTableGlobal()) {
|
|
357
|
+
index = state.getUserData().tableRowBgStart == 0 ? 1 : 0; // == 0 includes undefined
|
|
358
|
+
} else {
|
|
359
|
+
index = rendererData.start == 0 ? 1 : 0;
|
|
360
|
+
}
|
|
342
361
|
|
|
343
362
|
// Set the background color of this row
|
|
344
363
|
div.style.backgroundColor = this.__colors.bgcol[index];
|
|
345
364
|
|
|
346
365
|
// Update state for next time
|
|
347
|
-
rendererData.start = index
|
|
366
|
+
rendererData.start = index;
|
|
367
|
+
state.getUserData().tableRowBgStart = rendererData.start;
|
|
348
368
|
|
|
349
369
|
// Insert our new row before the first child.
|
|
350
370
|
elem.insertBefore(div, children[0]);
|
|
351
371
|
break;
|
|
352
372
|
} else {
|
|
353
|
-
|
|
373
|
+
// No children yet.
|
|
374
|
+
|
|
375
|
+
// Set the background color of this row
|
|
376
|
+
div.style.backgroundColor = this.__colors.bgcol[0];
|
|
377
|
+
|
|
378
|
+
// Update state for next time
|
|
379
|
+
rendererData.start = 0;
|
|
380
|
+
state.getUserData().tableRowBgStart = rendererData.start;
|
|
381
|
+
|
|
354
382
|
elem.appendChild(div);
|
|
355
383
|
}
|
|
356
384
|
break;
|
|
@@ -32,7 +32,7 @@ qx.Class.define("qx.ui.progressive.renderer.table.cell.Boolean", {
|
|
|
32
32
|
|
|
33
33
|
// dynamic theme switch
|
|
34
34
|
if (qx.core.Environment.get("qx.dyntheme")) {
|
|
35
|
-
qx.theme.manager.Meta.getInstance().addListener(
|
|
35
|
+
this.__changeThemeBooleanCellListenerId = qx.theme.manager.Meta.getInstance().addListener(
|
|
36
36
|
"changeTheme",
|
|
37
37
|
this._resolveImages,
|
|
38
38
|
this
|
|
@@ -177,11 +177,9 @@ qx.Class.define("qx.ui.progressive.renderer.table.cell.Boolean", {
|
|
|
177
177
|
this._iconUrlTrue = this._iconUrlFalse = null;
|
|
178
178
|
|
|
179
179
|
// remove dynamic theme listener
|
|
180
|
-
if (qx.core.Environment.get("qx.dyntheme")) {
|
|
181
|
-
qx.theme.manager.Meta.getInstance().
|
|
182
|
-
|
|
183
|
-
this._resolveImages,
|
|
184
|
-
this
|
|
180
|
+
if (qx.core.Environment.get("qx.dyntheme") && this.__changeThemeBooleanCellListenerId) {
|
|
181
|
+
qx.theme.manager.Meta.getInstance().removeListenerById(
|
|
182
|
+
this.__changeThemeBooleanCellListenerId
|
|
185
183
|
);
|
|
186
184
|
}
|
|
187
185
|
}
|
|
@@ -205,7 +205,7 @@ qx.Class.define("qx.ui.table.Table", {
|
|
|
205
205
|
|
|
206
206
|
// add an event listener which updates the table content on locale change
|
|
207
207
|
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
208
|
-
qx.locale.Manager.getInstance().addListener(
|
|
208
|
+
this.__changeLocaleTableListenerId = qx.locale.Manager.getInstance().addListener(
|
|
209
209
|
"changeLocale",
|
|
210
210
|
this._onChangeLocale,
|
|
211
211
|
this
|
|
@@ -2164,11 +2164,9 @@ qx.Class.define("qx.ui.table.Table", {
|
|
|
2164
2164
|
|
|
2165
2165
|
destruct() {
|
|
2166
2166
|
// remove the event listener which handled the locale change
|
|
2167
|
-
if (qx.core.Environment.get("qx.dynlocale")) {
|
|
2168
|
-
qx.locale.Manager.getInstance().
|
|
2169
|
-
|
|
2170
|
-
this._onChangeLocale,
|
|
2171
|
-
this
|
|
2167
|
+
if (qx.core.Environment.get("qx.dynlocale") && this.__changeLocaleTableListenerId) {
|
|
2168
|
+
qx.locale.Manager.getInstance().removeListenerById(
|
|
2169
|
+
this.__changeLocaleTableListenerId
|
|
2172
2170
|
);
|
|
2173
2171
|
}
|
|
2174
2172
|
|
|
@@ -38,7 +38,7 @@ qx.Class.define("qx.ui.table.cellrenderer.Abstract", {
|
|
|
38
38
|
|
|
39
39
|
// add dynamic theme listener
|
|
40
40
|
if (qx.core.Environment.get("qx.dyntheme")) {
|
|
41
|
-
qx.theme.manager.Meta.getInstance().addListener(
|
|
41
|
+
this.__changeThemeCellRendererListenerId = qx.theme.manager.Meta.getInstance().addListener(
|
|
42
42
|
"changeTheme",
|
|
43
43
|
this._onChangeTheme,
|
|
44
44
|
this
|
|
@@ -242,11 +242,9 @@ qx.Class.define("qx.ui.table.cellrenderer.Abstract", {
|
|
|
242
242
|
|
|
243
243
|
destruct() {
|
|
244
244
|
// remove dynamic theme listener
|
|
245
|
-
if (qx.core.Environment.get("qx.dyntheme")) {
|
|
246
|
-
qx.theme.manager.Meta.getInstance().
|
|
247
|
-
|
|
248
|
-
this._onChangeTheme,
|
|
249
|
-
this
|
|
245
|
+
if (qx.core.Environment.get("qx.dyntheme") && this.__changeThemeCellRendererListenerId) {
|
|
246
|
+
qx.theme.manager.Meta.getInstance().removeListenerById(
|
|
247
|
+
this.__changeThemeCellRendererListenerId
|
|
250
248
|
);
|
|
251
249
|
}
|
|
252
250
|
}
|
|
@@ -39,7 +39,7 @@ qx.Class.define("qx.ui.table.cellrenderer.Boolean", {
|
|
|
39
39
|
|
|
40
40
|
// dynamic theme switch
|
|
41
41
|
if (qx.core.Environment.get("qx.dyntheme")) {
|
|
42
|
-
qx.theme.manager.Meta.getInstance().addListener(
|
|
42
|
+
this.__changeThemeBoolCellRendererListenerId = qx.theme.manager.Meta.getInstance().addListener(
|
|
43
43
|
"changeTheme",
|
|
44
44
|
this._onChangeTheme,
|
|
45
45
|
this
|
|
@@ -172,11 +172,9 @@ qx.Class.define("qx.ui.table.cellrenderer.Boolean", {
|
|
|
172
172
|
destruct() {
|
|
173
173
|
this.__aliasManager = null;
|
|
174
174
|
// remove dynamic theme listener
|
|
175
|
-
if (qx.core.Environment.get("qx.dyntheme")) {
|
|
176
|
-
qx.theme.manager.Meta.getInstance().
|
|
177
|
-
|
|
178
|
-
this._onChangeTheme,
|
|
179
|
-
this
|
|
175
|
+
if (qx.core.Environment.get("qx.dyntheme") && this.__changeThemeBoolCellRendererListenerId) {
|
|
176
|
+
qx.theme.manager.Meta.getInstance().removeListenerById(
|
|
177
|
+
this.__changeThemeBoolCellRendererListenerId
|
|
180
178
|
);
|
|
181
179
|
}
|
|
182
180
|
}
|
|
@@ -1975,7 +1975,7 @@ qx.Class.define("qx.ui.table.pane.Scroller", {
|
|
|
1975
1975
|
qx.event.Timer.once(function() {
|
|
1976
1976
|
this._cellEditor.addListenerOnce('blur', this._onBlurCellEditorStopEditing, this);
|
|
1977
1977
|
this.debug('added BLUR listener to hash: ' + this._cellEditor.$$hash);
|
|
1978
|
-
}, this,
|
|
1978
|
+
}, this, 1);
|
|
1979
1979
|
},
|
|
1980
1980
|
|
|
1981
1981
|
/**
|
|
@@ -38,7 +38,7 @@ qx.Class.define("qx.ui.table.rowrenderer.Default", {
|
|
|
38
38
|
|
|
39
39
|
// dynamic theme switch
|
|
40
40
|
if (qx.core.Environment.get("qx.dyntheme")) {
|
|
41
|
-
qx.theme.manager.Meta.getInstance().addListener(
|
|
41
|
+
this.__changeThemeRowRendererListenerId = qx.theme.manager.Meta.getInstance().addListener(
|
|
42
42
|
"changeTheme",
|
|
43
43
|
this.initThemeValues,
|
|
44
44
|
this
|
|
@@ -254,11 +254,9 @@ qx.Class.define("qx.ui.table.rowrenderer.Default", {
|
|
|
254
254
|
this._colors = this._fontStyle = this._fontStyleString = null;
|
|
255
255
|
|
|
256
256
|
// remove dynamic theme listener
|
|
257
|
-
if (qx.core.Environment.get("qx.dyntheme")) {
|
|
258
|
-
qx.theme.manager.Meta.getInstance().
|
|
259
|
-
|
|
260
|
-
this.initThemeValues,
|
|
261
|
-
this
|
|
257
|
+
if (qx.core.Environment.get("qx.dyntheme") && this.__changeThemeRowRendererListenerId) {
|
|
258
|
+
qx.theme.manager.Meta.getInstance().removeListenerById(
|
|
259
|
+
this.__changeThemeRowRendererListenerId
|
|
262
260
|
);
|
|
263
261
|
}
|
|
264
262
|
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility class to limit the number of concurrent executions of async functions.
|
|
3
|
+
*
|
|
4
|
+
* @typedef {Object} TaskEntry
|
|
5
|
+
* @template T
|
|
6
|
+
* @property {() => Promise<T>} task The function to execute.
|
|
7
|
+
* @property {(value: T) => void} resolve The function to call when the task resolves.
|
|
8
|
+
* @property {(reason: any) => void} reject The function to call when the task rejects.
|
|
9
|
+
*/
|
|
10
|
+
qx.Class.define("qx.util.ConcurrencyLimiter", {
|
|
11
|
+
extend: qx.core.Object,
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @param {Number?Infinity} limit The maximum number of concurrent executions. If Infinity, no limit is applied.
|
|
15
|
+
*/
|
|
16
|
+
construct(limit = Infinity) {
|
|
17
|
+
super();
|
|
18
|
+
this.__limit = limit;
|
|
19
|
+
|
|
20
|
+
this.__queue = [];
|
|
21
|
+
this.__running = 0;
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
members: {
|
|
25
|
+
/**
|
|
26
|
+
* @type {TaskEntry<*>[]}
|
|
27
|
+
* The tasks that are waiting to be executed
|
|
28
|
+
*/
|
|
29
|
+
__queue: null,
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Number of currently running tasks.
|
|
33
|
+
*/
|
|
34
|
+
__running: null,
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Queues a function to be executed.
|
|
38
|
+
* If the limit is reached, the function will be put on hold until a slot is available.
|
|
39
|
+
*
|
|
40
|
+
* @template T
|
|
41
|
+
* @param {() => Promise<T>} task The function to execute.
|
|
42
|
+
* @returns {Promise<T>} The promise that will be resolved when the function is executed.
|
|
43
|
+
* If the function rejects, the promise will also reject.
|
|
44
|
+
*/
|
|
45
|
+
add(task) {
|
|
46
|
+
return new Promise((resolve, reject) => {
|
|
47
|
+
this.__queue.push({ task, resolve, reject });
|
|
48
|
+
this.__checkQueue();
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Checks the queue to see if anything can be executed,
|
|
54
|
+
* and executes the next item in the queue if the limit is not reached.
|
|
55
|
+
* Once the item has finished executing, it will check the queue again.
|
|
56
|
+
*/
|
|
57
|
+
__checkQueue() {
|
|
58
|
+
if (this.__running == this.__limit) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
let next = this.__queue.shift();
|
|
63
|
+
if (!next) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
let { task, resolve, reject } = next;
|
|
68
|
+
|
|
69
|
+
this.__running++;
|
|
70
|
+
task()
|
|
71
|
+
.then(resolve, reject)
|
|
72
|
+
.finally(() => {
|
|
73
|
+
this.__running--;
|
|
74
|
+
this.__checkQueue();
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
@@ -318,6 +318,10 @@
|
|
|
318
318
|
"type": "object",
|
|
319
319
|
"description": "Options given to @babel/preset-env. With this options the output type of babel can be defined. For details see here: <https://babeljs.io/docs/en/babel-preset-env#options>. They can be overridden per target."
|
|
320
320
|
},
|
|
321
|
+
"browserifyOptions": {
|
|
322
|
+
"type": "object",
|
|
323
|
+
"description": "Options given to browserify. For details see here: <https://github.com/browserify/browserify#usage>. They can be overridden per target."
|
|
324
|
+
},
|
|
321
325
|
"parts": {
|
|
322
326
|
"$ref": "#/properties/parts"
|
|
323
327
|
}
|
|
@@ -458,6 +462,15 @@
|
|
|
458
462
|
"description": "** DEPRECATED - See babel.options instead",
|
|
459
463
|
"deprecated": true
|
|
460
464
|
},
|
|
465
|
+
"browserify": {
|
|
466
|
+
"type": "object",
|
|
467
|
+
"properties": {
|
|
468
|
+
"options": {
|
|
469
|
+
"type": "object",
|
|
470
|
+
"description": "Options given to browserify. For details see here: <https://github.com/browserify/browserify#usage>. They can be overridden per target."
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
},
|
|
461
474
|
"jsx": {
|
|
462
475
|
"type": "object",
|
|
463
476
|
"description": "Options given to @babel/preset-react to change how JSX HTML is transpiled"
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
<title>Qooxdoo Application Server</title>
|
|
19
19
|
<meta name="description" content="">
|
|
20
20
|
<link rel="stylesheet" type="text/css" href="/qooxdoo.css">
|
|
21
|
-
<script type="text/javascript" src="/assets/bluebird.min.js"></script>
|
|
22
21
|
<script type="text/javascript" src="/assets/jquery.js"></script>
|
|
23
22
|
<script type="text/javascript" src="/scripts/serve.js"></script>
|
|
24
23
|
</head>
|
|
@@ -201,11 +200,11 @@
|
|
|
201
200
|
</div>
|
|
202
201
|
<div class="container text-center d-none d-sm-block p-4">
|
|
203
202
|
<img class="img p-4" src="/assets/qx-white.svg">
|
|
204
|
-
<span class="text-light">© 2005-
|
|
203
|
+
<span class="text-light">© 2005-<span class="current-year"></span> Qooxdoo Contributors</span>
|
|
205
204
|
</div>
|
|
206
205
|
<div class="container text-center d-block d-sm-none p-4">
|
|
207
206
|
<img class="img-fluid p-4" src="/assets/qx-white.svg">
|
|
208
|
-
<p>© 2005-
|
|
207
|
+
<p>© 2005-<span class="current-year"></span> Qooxdoo Contributors</p>
|
|
209
208
|
</div>
|
|
210
209
|
</div>
|
|
211
210
|
|
|
@@ -213,28 +212,7 @@
|
|
|
213
212
|
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
|
214
213
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
|
|
215
214
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.min.js" integrity="sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4" crossorigin="anonymous"></script>
|
|
216
|
-
<script type="text/javascript">
|
|
217
|
-
$(function () {
|
|
218
|
-
$('[data-toggle="tooltip"]').tooltip()
|
|
219
|
-
})
|
|
220
|
-
var scroll = (function (event) {
|
|
221
|
-
var scroll = $(window).scrollTop();
|
|
222
|
-
if (scroll < 250) {
|
|
223
|
-
$(navigatopnBar).css('background-color', 'transparent');
|
|
224
|
-
$(navigationLogo).css('width', '0');
|
|
225
|
-
$(navigationLogo).addClass('invisible');
|
|
226
|
-
} else {
|
|
227
|
-
$(navigatopnBar).css('background-color', 'rgba(0, 40, 56, 0.9)');
|
|
228
|
-
$(navigationLogo).css('width', '');
|
|
229
|
-
$(navigationLogo).removeClass('invisible');
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
$(window).scroll(scroll);
|
|
233
|
-
scroll();
|
|
234
|
-
</script>
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
215
|
+
<script src="/assets/common.js" type="text/javascript"></script>
|
|
238
216
|
</body>
|
|
239
217
|
|
|
240
218
|
</html>
|