dbm 1.4.17 → 1.4.19

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.
@@ -3,9 +3,11 @@ import Dbm from "../index.js";
3
3
  export default class LifeCycleObject {
4
4
  constructor() {
5
5
 
6
+ /*
6
7
  if(process.env.NODE_ENV === "development") {
7
8
  this._debugId = Math.round(Math.random()*1000000000000);
8
9
  }
10
+ */
9
11
 
10
12
  this._constructProperties();
11
13
  this._construct();
@@ -43,4 +43,9 @@
43
43
  border: none;
44
44
  display: block;
45
45
  font-size: var(--standard-body-font, sans-serif);
46
+ }
47
+
48
+ .number-text-field {
49
+ text-align: right;
50
+ width: 80px;
46
51
  }
package/css/icons.css CHANGED
@@ -13,30 +13,12 @@
13
13
  height: var(--field-icon-size, 16px);
14
14
  }
15
15
 
16
- /*
17
- .standard-icon-color {
18
- filter: url("#standard-icon-color");
19
- }
20
-
21
- .action-icon-color {
22
- filter: url("#action-icon-color");
23
- }
24
-
25
- .text-icon-color {
26
- filter: url("#text-icon-color");
27
- }
28
-
29
- .white-icon-color {
30
- filter: url("#white-icon-color");
31
- }
32
-
33
- .hover-item:hover .remove-action-icon-color,
34
- .hover-icon.remove-action-icon-color:hover {
35
- filter: url("#remove-action-icon-hover-color");
36
- }
37
- */
38
-
39
16
  .drag-handle-icon {
40
17
  width: 8px;
41
18
  height: 12px;
19
+ }
20
+
21
+ .big-status-icon {
22
+ width: var(--big-status-icon-size, 64px);
23
+ height: var(--big-status-icon-size, 64px);
42
24
  }
@@ -0,0 +1,83 @@
1
+ import Dbm from "../../../index.js";
2
+
3
+ export default class SpeechRecognition extends Dbm.core.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+
7
+ this.item.requireProperty("record", false).addUpdate(this._getScopedCallFunctionCommand(this._recordChanged));
8
+ this.item.requireProperty("startValue", "");
9
+ this.item.requireProperty("value", "");
10
+ this.item.requireProperty("language", "en-GB");
11
+ this.item.requireProperty("state", "waiting");
12
+
13
+ let SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
14
+
15
+ let dictationRecorder = null;
16
+ if(SpeechRecognition) {
17
+ dictationRecorder = new SpeechRecognition();
18
+
19
+ dictationRecorder.continuous = true;
20
+ dictationRecorder.interimResults = true;
21
+
22
+ dictationRecorder.addEventListener("result", this._callback_result.bind(this));
23
+ dictationRecorder.addEventListener("error", this._callback_error.bind(this));
24
+ dictationRecorder.addEventListener("start", this._callback_started.bind(this));
25
+ dictationRecorder.addEventListener("end", this._callback_ended.bind(this));
26
+ }
27
+
28
+ this.item.requireProperty("dictationRecorder", dictationRecorder);
29
+ this.item.requireProperty("isAvailable", dictationRecorder ? true : false);
30
+ }
31
+
32
+ _recordChanged() {
33
+ if(this.item.record) {
34
+ this.item.dictationRecorder.lang = this.item.language;
35
+ this.item.startValue = this.item.value;
36
+ this.item.state = "checkingPermissions";
37
+ this.item.dictationRecorder.start();
38
+ }
39
+ else {
40
+ this.item.dictationRecorder.stop();
41
+ }
42
+ }
43
+
44
+ _callback_result(aEvent) {
45
+ console.log("_callback_result");
46
+ console.log(aEvent);
47
+
48
+
49
+ let transcripts = [this.item.startValue];
50
+
51
+ let currentArray = aEvent.results;
52
+ let currentArrayLength = currentArray.length;
53
+
54
+ for (let i = 0; i < currentArrayLength; i++) {
55
+ transcripts.push(currentArray[i][0].transcript);
56
+ }
57
+
58
+ console.log(transcripts.join(" "));
59
+
60
+ this.item.properties.value.getMostUpstreamProperty().value = transcripts.join(" ");
61
+
62
+ }
63
+
64
+ _callback_error(aEvent) {
65
+ console.log("_callback_error");
66
+ console.log(aEvent);
67
+ }
68
+
69
+ _callback_started(aEvent) {
70
+ console.log("_callback_started");
71
+ console.log(aEvent);
72
+
73
+ this.item.state = "recording";
74
+ }
75
+
76
+ _callback_ended(aEvent) {
77
+ console.log("_callback_ended");
78
+ console.log(aEvent);
79
+
80
+ this.item.properties.record.getMostUpstreamProperty().value = false;
81
+ this.item.state = "waiting";
82
+ }
83
+ }
@@ -1 +1,2 @@
1
- export {default as MoveElement} from "./MoveElement.js";
1
+ export {default as MoveElement} from "./MoveElement.js";
2
+ export {default as SpeechRecognition} from "./SpeechRecognition.js";
@@ -67,13 +67,14 @@ export const performAction = function(aType, aData, aCallback = null) {
67
67
  return request.properties.data;
68
68
  }
69
69
 
70
- export const loadRange = function(aSelects, aEncodings, aCommand) {
70
+ export const loadRange = function(aSelects, aEncodings, aCallback = null) {
71
71
  let graphApi = Dbm.getRepositoryItem("cachedGraphApi").controller;
72
72
 
73
73
  let request = graphApi.requestRange(aSelects, aEncodings);
74
74
 
75
- if(aCommand) {
76
- Dbm.flow.runWhenMatched(request.properties.status, Dbm.loading.LoadingStatus.LOADED, aCommand);
75
+ if(aCallback) {
76
+ let callbackCommand = Dbm.commands.callFunction(aCallback, [Dbm.core.source.staticObject(request, "items")]);
77
+ Dbm.flow.runWhenMatched(request.properties.status, Dbm.loading.LoadingStatus.LOADED, callbackCommand);
77
78
  }
78
79
 
79
80
  return request.properties.items;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dbm",
3
- "version": "1.4.17",
3
+ "version": "1.4.19",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -14,10 +14,10 @@
14
14
  "description": "",
15
15
  "dependencies": {
16
16
  "@tweenjs/tween.js": "^25.0.0",
17
- "js-cookie": "^3.0.5"
17
+ "js-cookie": "^3.0.8"
18
18
  },
19
19
  "peerDependencies": {
20
- "react": ">=18",
21
- "react-dom": ">=18"
20
+ "react": "^19.2.7",
21
+ "react-dom": "^19.2.7"
22
22
  }
23
23
  }
@@ -73,9 +73,9 @@ export default class ArrayField extends Dbm.react.BaseObject {
73
73
  React.createElement("div", {"className": "flex-row-item flex-no-resize"},
74
74
  React.createElement("div", {className: "spacing small"}),
75
75
  React.createElement(Dbm.react.interaction.ConfirmButton, {"command": this._getScopedCallFunctionCommand(this._removeItem, [Dbm.react.source.contextVariable("arrayEditor"), Dbm.react.source.contextVariable("item")])},
76
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon action-icon-color cursor-pointer"}),
76
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon icon-color:action cursor-pointer"}),
77
77
  React.createElement("div", {"data-slot": "confirm", className: "absolute-container cursor-pointer", title: "Click to remove"},
78
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon hover-icon remove-action-icon-color cursor-pointer"}),
78
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon hover-icon icon-color:remove-action cursor-pointer"}),
79
79
  React.createElement("div", {className:"centered-tip-text no-pointer-events"},
80
80
  "Remove?"
81
81
  )
@@ -60,7 +60,15 @@ export default class Relation extends Dbm.react.BaseObject {
60
60
  Dbm.react.text.text(Dbm.react.source.item("identifier"))
61
61
  )
62
62
  )
63
- )
63
+ ),
64
+ React.createElement("div", {"className": "flex-row small-item-spacing small-description"},
65
+ React.createElement("div", {"className": "flex-row-item"},
66
+ Dbm.react.text.text(relation.startAt)
67
+ ),
68
+ React.createElement("div", {"className": "flex-row-item"},
69
+ Dbm.react.text.text(relation.endAt)
70
+ )
71
+ ),
64
72
  )
65
73
  )
66
74
  }
@@ -31,7 +31,7 @@ export default class DraggableHierarchyDisplay extends Dbm.react.BaseObject {
31
31
  React.createElement("div", {className: "flex-row micro-item-spacing"},
32
32
  React.createElement("div", {className: "flex-row-item flex-no-resize cursor-grab", draggable: true},
33
33
  React.createElement("div", {className: "spacing small"}),
34
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/drag-handle.svg", "className": "background-contain drag-handle-icon action-icon-color"})
34
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/drag-handle.svg", "className": "background-contain drag-handle-icon icon-color:action"})
35
35
  ),
36
36
  React.createElement("div", {className: "flex-row-item flex-resize"},
37
37
  children
@@ -39,9 +39,9 @@ export default class DraggableHierarchyDisplay extends Dbm.react.BaseObject {
39
39
  React.createElement("div", {className: "flex-row-item flex-no-resize"},
40
40
  React.createElement("div", {className: "spacing small"}),
41
41
  React.createElement(Dbm.react.interaction.ConfirmButton, {"command": this._getScopedCallFunctionCommand(this._remove)},
42
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon action-icon-color cursor-pointer"}),
42
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon icon-color:action cursor-pointer"}),
43
43
  React.createElement("div", {"data-slot": "confirm", className: "absolute-container cursor-pointer", title: "Click to remove"},
44
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon hover-icon remove-action-icon-color cursor-pointer"}),
44
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/delete.svg", "className": "background-contain text-row-icon hover-icon icon-color:remove-action cursor-pointer"}),
45
45
  React.createElement("div", {className:"centered-tip-text no-pointer-events"},
46
46
  "Remove?"
47
47
  )
@@ -112,7 +112,7 @@ export default class MultipleRelations extends Dbm.react.BaseObject {
112
112
  ),
113
113
  React.createElement("div", {"className": "flex-row"},
114
114
  React.createElement(Dbm.react.interaction.CommandButton, {"commands": [Dbm.commands.callFunction(this._remove.bind(this), [Dbm.react.source.item()])]},
115
- React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/remove.svg", "className": "background-contain cursor-pointer action-icon-color field-icon"})
115
+ React.createElement(Dbm.react.image.Image, {"src": "/assets/img/icons/remove.svg", "className": "background-contain cursor-pointer icon-color:action field-icon"})
116
116
  )
117
117
  )
118
118
  )
@@ -68,7 +68,7 @@ export default class CookieOverlayMessage extends Dbm.react.BaseObject {
68
68
  Dbm.react.text.translatedText("Take full control over how we use cookies:", "text/settingsLinkDescription")
69
69
  ),
70
70
  React.createElement("div", {"className": "spacing small"}),
71
- React.createElement("a", {"href": settingsUrl, className:"custom-styled-link"},
71
+ React.createElement(Dbm.react.text.Link, {"href": settingsUrl, className:"custom-styled-link"},
72
72
  React.createElement("div", {"className": "secondary-button standard-button-padding text-align-center"},
73
73
  Dbm.react.text.translatedText("Settings", "settings")
74
74
  )
@@ -108,7 +108,7 @@ export default class CookieOverlayMessage extends Dbm.react.BaseObject {
108
108
  Dbm.react.text.translatedText("Take full control over how we use cookies:", "text/settingsLinkDescription")
109
109
  ),
110
110
  React.createElement("div", {"className": "flex-row-item"},
111
- React.createElement("a", {"href": settingsUrl, className:"custom-styled-link"},
111
+ React.createElement(Dbm.react.text.Link, {"href": settingsUrl, className:"custom-styled-link"},
112
112
  React.createElement("div", {"className": "cookie-settings-link"},
113
113
  Dbm.react.text.translatedText("Settings", "settings")
114
114
  )
@@ -15,24 +15,26 @@ export default class ClickOutsideTrigger extends Dbm.react.BaseObject {
15
15
  if(!commands) {
16
16
  commands = this.getPropValue("command");
17
17
  }
18
- if(commands && this.getPropValueWithoutNull("active")) {
19
- let currentElement = this.item["mainElement"];
20
- if(!currentElement.contains(aEvent.srcElement)) {
21
- commands = Dbm.utils.ArrayFunctions.singleOrArray(commands);
22
- let currentArray = commands;
23
- let currentArrayLength = currentArray.length;
24
- for(let i = 0; i < currentArrayLength; i++) {
25
- let command = currentArray[i];
26
- try {
27
- command.perform(this, aEvent);
28
- }
29
- catch(theError) {
30
- console.error("Error while running command", theError, command);
18
+
19
+ if(commands) {
20
+ if(this.getPropValueWithoutNull("active", true)) {
21
+ let currentElement = this.item["mainElement"];
22
+ if(!(currentElement.contains(aEvent.srcElement) || currentElement === aEvent.srcElement)) {
23
+ commands = Dbm.utils.ArrayFunctions.singleOrArray(commands);
24
+ let currentArray = commands;
25
+ let currentArrayLength = currentArray.length;
26
+ for(let i = 0; i < currentArrayLength; i++) {
27
+ let command = currentArray[i];
28
+ try {
29
+ command.perform(this, aEvent);
30
+ }
31
+ catch(theError) {
32
+ console.error("Error while running command", theError, command);
33
+ }
34
+
31
35
  }
32
-
33
36
  }
34
37
  }
35
-
36
38
  }
37
39
  else{
38
40
  console.warn("Click outside doesn't have any commands", this);
@@ -1,34 +1,16 @@
1
1
  import Dbm from "../../index.js";
2
2
 
3
- export default class GlobalFilters extends Dbm.core.BaseObject {
3
+ export default class AddGlobalFilterClasses extends Dbm.utils.css.AddStyles {
4
+
4
5
  _construct() {
6
+ //METODO: this does not need to be it's own class
5
7
  super._construct();
6
8
 
7
- this._styleTag = null;
9
+ this.createHeadElement();
8
10
 
9
11
  let colorFilters = Dbm.getRepositoryItem("globalSvg");
10
12
  let filtersProperty = colorFilters.requireProperty("filters", []);
11
13
 
12
- filtersProperty.addUpdate(this._getScopedCallFunctionCommand(this._updateStyles));
13
- this._updateStyles();
14
- }
15
-
16
- _updateStyles() {
17
- console.log("_updateStyles");
18
-
19
- let colorFilters = Dbm.getRepositoryItem("globalSvg");
20
-
21
- if(colorFilters.filters.length) {
22
-
23
- if(!this._styleTag) {
24
- this._styleTag = document.createElement("style");
25
- document.head.appendChild(this._styleTag);
26
- }
27
-
28
- let declarations = Dbm.utils.ArrayFunctions.mapField(colorFilters.filters, "classDeclaration");
29
- this._styleTag.innerHTML = declarations.join("\n");
30
-
31
-
32
- }
14
+ this.item.properties.styles.connectInput(filtersProperty);
33
15
  }
34
16
  }
@@ -12,8 +12,14 @@ export const addGlobalRgbColorFilter = function(aName, aR, aG, aB) {
12
12
  colorFilters.requireProperty("filters", []);
13
13
 
14
14
  let item = Dbm.getRepositoryItem("globalSvg/filters/" + aName);
15
- item.setValue("element", React.createElement(Dbm.react.svg.MatrixFilter, {"id": aName, "matrix": Dbm.utils.svg.ColorMatrixFunctions.floodColor(aR, aG, aB)}));
16
- item.setValue("classDeclaration", "." + aName + "{filter:url(\"#" + aName + "\")}");
15
+ let filterId = aName + "-color-filter";
16
+ item.setValue("element", React.createElement(Dbm.react.svg.MatrixFilter, {"id": filterId, "matrix": Dbm.utils.svg.ColorMatrixFunctions.floodColor(aR, aG, aB)}));
17
+ let selectors = [
18
+ "." + CSS.escape("icon-color:" + aName),
19
+ "." + CSS.escape("group(icon-color:" + aName + ")") + " " + "." + CSS.escape("use(icon-color)"),
20
+ ];
21
+
22
+ item.setValue("cssDeclaration", selectors.join(", ") + "{filter:url(\"#" + filterId + "\")}");
17
23
 
18
24
  let filters = [].concat(colorFilters.filters);
19
25
  filters.push(item);
@@ -51,7 +57,7 @@ export const createGlobalHexBlendFilter = function(aName, aColor, aBlendMode = "
51
57
 
52
58
  let item = Dbm.getRepositoryItem("globalSvg/filters/" + aName);
53
59
  item.setValue("element", React.createElement(Dbm.react.svg.BlendColorFilter, {"id": aName, "color": aColor, "blendMode": aBlendMode, "saturation": aSaturation, "min": aMin, "max": aMax}));
54
- item.setValue("classDeclaration", "." + aName + "{filter:url(\"#" + aName + "\")}");
60
+ item.setValue("cssDeclaration", "." + aName + "{filter:url(\"#" + aName + "\")}");
55
61
 
56
62
  let filters = [].concat(colorFilters.filters);
57
63
  filters.push(item);
@@ -14,8 +14,7 @@ export default class Item extends Dbm.core.LifeCycleObject {
14
14
  }
15
15
 
16
16
  set id(aValue) {
17
- console.warn("Use setId instead");
18
- debugger;
17
+ console.warn("Use setId instead", this);
19
18
  this.setId(aValue);
20
19
 
21
20
  return this._id;
@@ -45,7 +45,7 @@ export default class GtagTracker extends Dbm.core.BaseObject {
45
45
  }
46
46
 
47
47
  this._gtag("config", this.item.tagId, {
48
- "send_page_view": false
48
+ "send_page_view": true
49
49
  });
50
50
 
51
51
  return this;
@@ -0,0 +1,60 @@
1
+ import Dbm from "../../index.js";
2
+
3
+ export default class AddStyles extends Dbm.core.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+
7
+ this._updateCommand = this._getScopedCallFunctionCommand(this.updateStyles);
8
+
9
+ this.item.requireProperty("element", null).addUpdate(this._updateCommand);
10
+ this.item.requireProperty("styles", []).addUpdate(this._updateCommand);
11
+ }
12
+
13
+ setElement(aElement) {
14
+ this.item.element = aElement;
15
+
16
+ return this;
17
+ }
18
+
19
+ createHeadElement() {
20
+ let element = document.createElement("style");
21
+ document.head.appendChild(element);
22
+ this.setElement(element);
23
+
24
+ return this;
25
+ }
26
+
27
+ updateStyles() {
28
+
29
+ let declarations = Dbm.utils.ArrayFunctions.mapField(this.item.styles, "cssDeclaration");
30
+
31
+ if(this.item.element) {
32
+ this.item.element.innerHTML = declarations.join("\n");
33
+ }
34
+ }
35
+
36
+ createStyle(aName, aDeclaration) {
37
+ let styleItem = new Dbm.repository.Item();
38
+ styleItem.requireProperty("name", aName);
39
+ styleItem.requireProperty("cssDeclaration", "." + CSS.escape(aName) + "{" + aDeclaration + "}").addUpdate(this._updateCommand);
40
+
41
+ this.item.addToArray("styles", styleItem);
42
+
43
+ return styleItem;
44
+ }
45
+
46
+ createGroupedStyle(aGroupName, aName, aDeclaration) {
47
+ let styleItem = new Dbm.repository.Item();
48
+ styleItem.requireProperty("groupName", aGroupName);
49
+ styleItem.requireProperty("name", aName);
50
+ let selectors = [
51
+ "." + CSS.escape(aGroupName + ":" + aName),
52
+ "." + CSS.escape("group(" + aGroupName + ":" + aName + ")") + " " + "." + CSS.escape("use(" + aGroupName + ")")
53
+ ];
54
+ styleItem.requireProperty("cssDeclaration", selectors.join(", ") + "{" + aDeclaration + "}").addUpdate(this._updateCommand);
55
+
56
+ this.item.addToArray("styles", styleItem);
57
+
58
+ return styleItem;
59
+ }
60
+ }
@@ -0,0 +1,41 @@
1
+ import Dbm from "../../index.js";
2
+
3
+ export {default as AddStyles} from "./AddStyles.js";
4
+
5
+ export const getGlobalCss = function() {
6
+
7
+ let globalStyling = Dbm.repository.getControllerIfExists("globalCss");
8
+
9
+ if(!globalStyling) {
10
+ globalStyling = new Dbm.utils.css.AddStyles();
11
+ globalStyling.item.register("globalCss");
12
+ }
13
+
14
+ return globalStyling;
15
+ }
16
+
17
+ export const setupGlobalColoring = function() {
18
+ let globalStyling = getGlobalCss();
19
+ globalStyling.createHeadElement();
20
+ globalStyling.item.element.id = "dbm-global-styles";
21
+
22
+ let colorFilters = Dbm.getRepositoryItem("globalSvg");
23
+ let filtersProperty = colorFilters.requireProperty("filters", []);
24
+
25
+ let globalFilterStyling = new Dbm.utils.css.AddStyles();
26
+ globalFilterStyling.item.properties.styles.connectInput(filtersProperty);
27
+ globalFilterStyling.createHeadElement();
28
+ globalFilterStyling.item.element.id = "dbm-global-filter-styles";
29
+ }
30
+
31
+ export const addGlobalHexColor = function(aName, aColor) {
32
+ let globalStyling = getGlobalCss();
33
+
34
+ //METODO: add css variable
35
+
36
+ globalStyling.createGroupedStyle("text-color", aName, "color: " + aColor);
37
+ globalStyling.createGroupedStyle("background-color", aName, "background-color: " + aColor);
38
+ globalStyling.createGroupedStyle("border-color", aName, "border-color: " + aColor);
39
+
40
+ Dbm.react.svg.addGlobalHexColorFilter(aName, aColor);
41
+ }
package/utils/index.js CHANGED
@@ -15,4 +15,5 @@ export {default as KeywordReplace} from "./KeywordReplace.js";
15
15
  export {default as NamedArray} from "./NamedArray.js";
16
16
 
17
17
  export * as thirdparty from "./thirdparty/index.js";
18
- export * as svg from "./svg/index.js";
18
+ export * as svg from "./svg/index.js";
19
+ export * as css from "./css/index.js";
@@ -1,3 +1,60 @@
1
1
  import Dbm from "../../../index.js";
2
2
 
3
- export {default as WprrApiParser} from "./WprrApiParser.js";
3
+ export {default as WprrApiParser} from "./WprrApiParser.js";
4
+
5
+ export const setProject = function(aProject) {
6
+ Dbm.repository.getItem("wprr").setValue("project", aProject);
7
+ }
8
+
9
+ export const setupRangeData = function(aData) {
10
+ let group = Dbm.repository.getItem("wprr").project.items;
11
+ let data = aData;
12
+ let itemsData = Dbm.objectPath(data, "items");
13
+ let encodings = Dbm.objectPath(data, "encodings");
14
+ for(let objectName in encodings) {
15
+
16
+ let ids = encodings[objectName];
17
+ let currentArray = ids;
18
+ let currentArrayLength = currentArray.length;
19
+
20
+ for(let i = 0; i < currentArrayLength; i++) {
21
+ let currentId = currentArray[i];
22
+ let item = group.getItem(currentId);
23
+ group.prepareItem(item, objectName);
24
+ group.setupItem(item, objectName, itemsData[""+currentId]);
25
+ }
26
+ }
27
+
28
+ let mainIds = Dbm.objectPath(data, "ids");
29
+
30
+ let items = Dbm.repository.getItems(mainIds);
31
+
32
+ return items;
33
+ }
34
+
35
+ let rangeLoaded = function(aRequestItem) {
36
+ console.log("rangeLoaded");
37
+ console.log(aRequestItem);
38
+ let items = setupRangeData(aRequestItem.data["data"]);
39
+ aRequestItem.items = items;
40
+ aRequestItem.parsed = true;
41
+ }
42
+
43
+ export const loadRange = function(aUrl, aCallback) {
44
+ let request = new Dbm.loading.JsonLoader();
45
+ request.setUrl(aUrl);
46
+
47
+ request.item.setValue("items", []);
48
+ request.item.setValue("parsed", false);
49
+
50
+ if(aCallback) {
51
+ let callbackCommand = Dbm.commands.callFunction(aCallback, [Dbm.core.source.staticObject(request.item, "items")]);
52
+
53
+ Dbm.flow.runWhenMatched(request.item.properties.parsed, true, callbackCommand);
54
+ }
55
+
56
+ Dbm.flow.runWhenMatched(request.item.properties.status, Dbm.loading.LoadingStatus.LOADED, Dbm.commands.callFunction(rangeLoaded, [request.item]));
57
+ request.load();
58
+
59
+ return request.item.properties.items;
60
+ }