www/jqwidgets/jqximport.js

Wed, 14 Jul 2021 20:51:45 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 14 Jul 2021 20:51:45 +0200
changeset 772
f9d266eb0ec6
parent 733
67bf19c50fcc
permissions
-rw-r--r--

In product editor calculate fermentables before the first IBU calculation. In recipe editor changed to the new water calculations like in the product editor.

733
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2 /* tslint:disable */
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 /* eslint-disable */
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 (function ($) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 class DataAdapter {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 constructor ( config ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 if ( !config ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 config = {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 const that = Object.assign( this, config );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 const generateKey = function () {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 const S4 = function () {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 return ( ( ( 1 + Math.random() ) * 0x10000 ) | 0 ).toString( 16 ).substring( 1 );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 return S4();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 that.key = generateKey();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22 that.boundSource = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23 that.dataItemById = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 if ( that.allowAdd === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 that.allowAdd = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 if ( that.allowRemove === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 that.allowRemove = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 if ( that.allowUpdate === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 that.allowUpdate = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 if ( config.observable === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 that.observable = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 if ( !config.dataSource ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43 that.dataSource = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 if ( !config.dataFields ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 that.dataFields = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 /* if (config.dataSource && config.dataSource.length > 0) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 const keys = Object.keys(config.dataSource[0]);
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53 // that.dataFields = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55 for (let i = 0; i < keys.length; i++) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 */
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 if ( !config.dataSourceType ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63 that.dataSourceType = 'array';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 if ( !config.id ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67 that.id = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70 if ( !config.autoFetch ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 that.autoFetch = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 if ( config.dataFields ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 that.dataFields = config.dataFields;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 Object.defineProperty( that, 'groupBy', {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 configurable: false,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80 enumerable: true,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81 get() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82 if ( !that._groupBy ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83 return [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86 return that._groupBy;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87 },
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
88 set( value ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
89 const updateGrouping = () => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
90 that.boundHierarchy = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
91 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
92
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
93 if ( that.onGroup ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94 that.onGroup();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
96 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
97
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98 that._groupBy = [].concat(value);
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100 if ( that.isInitialized ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
101 updateGrouping();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
103 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
104 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
105
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
106 if ( !config.groupBy ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
107 that.groupBy = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
108 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
109 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
110 if ( config.groupBy.toArray ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111 that.groupBy = config.groupBy.toArray();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
112 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
113 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
114 that.groupBy = config.groupBy;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
115 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
116 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
117
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
118 if ( config && config.autoBind !== false ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
119 that.dataBind();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
120 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
121
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
122 that.isInitialized = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
123 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
124
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
125 get dataFields() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
126 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
127
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
128 return that._dataFields;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
129 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
130
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
131 set dataFields( value ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
132 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
134 that._dataFields = that._getDataFieldObjects( value );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
135
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
136 return that._dataFields;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
137 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
138
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
139 _getDataFieldObjects( dataFields ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
140 //const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
141
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
142 let dataFieldObjects = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
143
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
144 if ( typeof dataFields === 'number' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
145 const charCode = 'A'.charCodeAt( 0 );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
146 let prefix = '';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
147 let index = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
148
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
149 for ( let i = 0; i < dataFields; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
150 const letter = String.fromCharCode( charCode + index );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
151
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
152 index++;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
153
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
154 const label = prefix + letter;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
155
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
156 dataFieldObjects.push( { name: label, dataType: 'string' } )
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
157
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
158 if ( index >= 26 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
159 index = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
160 prefix += 'A';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
161 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
162 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
163 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
164 else if ( dataFields.length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
165 for ( let i = 0; i < dataFields.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
166 const dataField = dataFields[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
167
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
168 if ( typeof dataField === 'string' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
169 const dataFieldParts = dataField.split( ':' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
170 const name = dataFieldParts[ 0 ].trim();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
171 const dataType = dataFieldParts.length > 1 ? dataFieldParts[ 1 ].trim() : 'string';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
172
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
173 dataFieldObjects.push( { name: name, dataType: dataType } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
174 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
175 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
176 dataFieldObjects.push( dataField );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
177 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
178 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
179 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
180
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
181 return dataFieldObjects;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
182 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
183
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
184 get dataSource() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
185 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
186
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
187 if ( !that._dataSource ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
188 that._dataSource = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
189 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
190
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
191 return that._dataSource;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
192 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
193
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
194 set dataSource( value ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
195 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
196
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
197 that._dataSource = value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
198
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
199 if ( that.isInitialized ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
200 that.boundSource = false === that.observable ? [] : new JQX.ObservableArray();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
201 that.dataItemById = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
202 that.bindingCompleted = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
203 that.dataBind();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
204 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
205 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
206
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
207 get canNotify() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
208 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
209
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
210 if ( that._canNotify === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
211 that._canNotify = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
212 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
213
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
214 return that._canNotify;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
215 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
216
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
217 set canNotify( value ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
218 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
219
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
220 that._canNotify = value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
221 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
222
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
223 _notify( changeArgs ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
224 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
225
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
226 if ( !that.canNotify ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
227 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
228 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
229
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
230 if ( that.notifyFn ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
231 that.notifyFn( changeArgs );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
232 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
233 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
234
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
235 notify( notifyFn ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
236 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
237
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
238 if ( notifyFn ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
239 that.notifyFn = notifyFn;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
240 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
241 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
242
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
243 toArray() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
244 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
245
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
246 return that.boundSource.toArray();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
247 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
248
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
249 dataBind() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
250 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
251
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
252 that.clear();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
253
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
254 const completed = () => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
255
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
256
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
257 that._onBindingComplete();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
258 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
259
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
260 if ( typeof that.dataSource === 'string' && ( that.dataSource.indexOf( '.json' ) >= 0 ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
261 that.url = that.dataSource;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
262 that.dataSourceType = 'json';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
263
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
264 new Ajax( that, ( data/*, status*/ ) => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
265 that.dataSource = data;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
266
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
267 that._bindToJSON();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
268 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
269 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
270 else if ( typeof that.dataSource === 'string' && ( that.dataSource.indexOf( '.xlsx' ) >= 0 ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
271 that.url = that.dataSource;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
272 that.dataSourceType = 'xlsx';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
273
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
274 new Ajax( that, ( data/*, status*/ ) => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
275 if ( !data[ 0 ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
276 data = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
277 that._bindToArray();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
278 completed();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
279 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
280 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
281
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
282 const keys = Object.keys( data[ 0 ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
283 const dataFieldMap = {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
284 const dataRows = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
285
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
286 if ( that.exportHeader !== false ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
287 let index = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
288
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
289 for ( let key in keys ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
290 const name = keys[ key ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
291
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
292 dataFieldMap[ name ] = that.dataFields[ index++ ].name;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
293 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
294
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
295 for ( let i = 1; i < data.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
296 const row = data[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
297 const dataRow = {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
298
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
299 for ( let key in keys ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
300 const name = keys[ key ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
301
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
302 dataRow[ dataFieldMap[ name ] ] = row[ name ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
303 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
304
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
305 dataRows.push( dataRow );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
306 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
307
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
308 that.dataSource = dataRows;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
309 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
310
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
311 that._bindToArray();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
312 completed();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
313 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
314 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
315 else if ( typeof that.dataSource === 'string' && ( that.dataSource.indexOf( '.csv' ) >= 0 ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
316 that.dataSourceType = 'csv';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
317
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
318 new Ajax( that, (/*data, status*/ ) => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
319 that._bindToArray();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
320 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
321 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
322 else if ( typeof that.dataSource === 'string' && ( that.dataSource.indexOf( '.tsv' ) >= 0 ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
323 that.dataSourceType = 'tsv';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
324
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
325 new Ajax( that, (/*data, status*/ ) => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
326 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
327 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
328 else if ( that.dataSourceType === 'array' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
329 that._bindToArray();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
330 completed();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
331 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
332 else if ( that.dataSourceType === 'json' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
333 that._bindToJSON();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
334 completed();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
335 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
336 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
337
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
338 _onBindingComplete() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
339 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
340
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
341 that._buildHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
342
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
343 if ( that.onBindingComplete ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
344 that.onBindingComplete( { data: that.boundSource } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
345 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
346
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
347 if ( that._notify ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
348 that._notify( { action: 'bindingComplete', data: that.boundSource } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
349 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
350
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
351 that.bindingCompleted = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
352 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
353
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
354 refreshHierarchy() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
355 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
356
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
357 that._buildHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
358 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
359
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
360 find() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
361 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
362
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
363 return that.boundSource.find.apply( that.boundSource, arguments );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
364 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
365
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
366 onVirtualDataSourceRequested( requestCallback, details ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
367 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
368
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
369 let first = details ? details.first : Infinity;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
370 let last = details ? details.last : Infinity;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
371 let row = details ? details.row : null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
372
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
373 if ( undefined === first ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
374 first = Infinity;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
375 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
376
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
377 if ( undefined === last ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
378 last = Infinity;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
379 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
380
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
381 that.virtualFirstIndex = first;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
382 that.virtualLastIndex = last;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
383
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
384 if ( that.virtualDataSource ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
385 const getDataSource = function ( ExcelAdapterSettings ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
386 if ( ExcelAdapterSettings.virtualDataSourceLength !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
387 that.virtualDataSourceLength = ExcelAdapterSettings.virtualDataSourceLength;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
388 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
389
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
390 new JQX.ExcelAdapter(
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
391 {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
392 dataSource: ExcelAdapterSettings.dataSource,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
393 dataFields: ExcelAdapterSettings.dataFields || that.dataFields,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
394 data: details,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
395 onBindingComplete( event ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
396
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
397 if ( that.virtualDataSourceOnExpand && row ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
398 if ( event.data && event.data.length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
399 that.add( event.data, row.$.id );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
400 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
401 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
402 row.leaf = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
403 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
404
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
405 if ( that.onFilter ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
406 that.onFilter()
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
407 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
408
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
409 requestCallback();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
410
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
411 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
412 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
413
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
414 if ( first === Infinity ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
415 that.add( event.data );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
416 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
417 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
418 let items = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
419 let indexes = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
420
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
421 for ( let i = 0; i < event.data.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
422 const item = event.data[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
423
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
424 if ( first + i <= last ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
425 items.push( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
426 indexes.push( first + i );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
427 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
428 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
429
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
430 that.update( indexes, items );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
431 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
432
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
433
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
434 if ( that.onFilter ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
435 that.onFilter()
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
436 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
437
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
438 requestCallback();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
439 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
440 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
441 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
442
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
443 let hasCache = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
444
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
445 const isEmpty = ( obj ) => Object.entries( obj ).length === 0 && ( obj.constructor === Object || obj.constructor === Array );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
446 const canCache = isEmpty( details.sorting ) && isEmpty( details.filtering ) && isEmpty( details.grouping ) && !details.row && ( details.action !== 'filter' && details.action !== 'sort' && details.action !== 'group' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
447
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
448 if ( that.virtualDataSourceCache && first !== Infinity && canCache ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
449 let cachedCount = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
450
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
451 for ( let i = first; i < last; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
452 if ( !that[ i ].$.isEmpty ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
453 cachedCount++;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
454 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
455 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
456
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
457 if ( cachedCount === last - first ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
458 hasCache = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
459 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
460 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
461
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
462 if ( hasCache ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
463 requestCallback();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
464 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
465 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
466 if ( details.action === 'expand' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
467 that.virtualDataSourceOnExpand( getDataSource, {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
468 first: first,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
469 last: last,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
470 row: details.row,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
471 sorting: details.sorting,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
472 filtering: details.filtering,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
473 grouping: details.grouping,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
474 action: details.action
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
475 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
476 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
477 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
478 that.virtualDataSource( getDataSource, {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
479 first: first,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
480 last: last,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
481 sorting: details.sorting,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
482 filtering: details.filtering,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
483 filterOperator: details.filterOperator || 'and',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
484 grouping: details.grouping,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
485 action: details.action
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
486 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
487 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
488 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
489 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
490 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
491 requestCallback();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
492 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
493 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
494
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
495 add( item, parentId ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
496 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
497
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
498 if ( !item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
499 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
500 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
501
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
502 let result = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
503
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
504 const addItem = function ( item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
505 const itemObject = that._getDataItem( item, that.boundSource.length );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
506
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
507 that[ that.boundSource.length ] = itemObject;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
508 that.dataItemById[ itemObject.$.id ] = itemObject;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
509
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
510 const pushResult = that.boundSource.push( itemObject );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
511
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
512 if ( parentId !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
513 itemObject.$.parentId = parentId;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
514 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
515
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
516 if ( !pushResult ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
517 result = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
518 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
519
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
520 return itemObject;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
521 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
522
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
523 if ( item.length ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
524 let itemObjects = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
525
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
526 for ( let i = 0; i < item.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
527 const itemObject = addItem( item[ i ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
528
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
529 itemObjects.push( itemObject );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
530 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
531
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
532 that._notify( { action: 'add', data: itemObjects } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
533 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
534 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
535 const itemObject = addItem( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
536
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
537 that._notify( { action: 'add', data: itemObject } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
538 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
539
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
540 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
541
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
542 return result;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
543 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
544
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
545 refreshIndexes() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
546 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
547
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
548 for (let i = 0; i < that.boundSource.length; i++) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
549 that[i] = that.boundSource[i];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
550 that[i].$.index = i;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
551 that.dataItemById[that[i].$.id] = that[i];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
552 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
553
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
554 let i = that.boundSource.length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
555
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
556 while (that[i]) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
557 delete that[i];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
558 i++;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
559 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
560 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
561
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
562 removeLast() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
563 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
564
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
565 delete that[that.boundSource.length - 1];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
566 const result = that.boundSource.pop();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
567 delete that.dataItemById[result.$.id];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
568
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
569 that._notify({ action: 'removeLast', data: result });
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
570
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
571 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
572
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
573 return result;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
574 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
575
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
576 removeAt(index) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
577 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
578
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
579 const item = that.boundSource[index];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
580
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
581 if (!item) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
582 throw new Error('Invalid Item Index');
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
583 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
584
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
585 that.boundSource.splice(index, 1);
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
586 delete that.dataItemById[item.$.id];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
587 that.refreshIndexes();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
588
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
589 that._notify({ action: 'remove', index: index, data: item });
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
590
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
591 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
592 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
593
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
594 update( index, dataSourceItem ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
595 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
596
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
597 if ( JQX.Utilities.Types.isArray( index ) && JQX.Utilities.Types.isArray( dataSourceItem ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
598 if ( index.length === 0 && dataSourceItem.length === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
599 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
600 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
601 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
602 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
603
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
604 if ( dataSourceItem.length && index.length ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
605 let itemObjects = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
606
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
607 for ( let i = 0; i < index.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
608 const itemObject = that._getDataItem( dataSourceItem[ i ], index[ i ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
609 const currentIndex = index[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
610
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
611 itemObjects.push( itemObject );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
612
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
613 that.boundSource[ currentIndex ] = itemObject;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
614 that[ currentIndex ] = that.boundSource[ currentIndex ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
615 that.dataItemById[ itemObject.$.id ] = that[ currentIndex ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
616 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
617
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
618 that._notify( { action: 'update', index: index, data: itemObjects } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
619
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
620 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
621
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
622 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
623 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
624
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
625 const itemObject = that._getDataItem( dataSourceItem, index );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
626
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
627 that.boundSource[ index ] = itemObject;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
628 that[ index ] = that.boundSource[ index ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
629 that.dataItemById[ itemObject.$.id ] = that[ index ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
630
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
631 that._notify( { action: 'update', index: index, data: itemObject } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
632
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
633 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
634
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
635 return itemObject;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
636 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
637
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
638 insert( index, item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
639 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
640
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
641 item = that._getDataItem( item, index );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
642
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
643 const result = that.boundSource.splice( index, 0, item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
644
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
645 that.refreshIndexes();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
646
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
647 that._notify( { action: 'insert', index: index, data: item } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
648
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
649 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
650
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
651 return result;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
652 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
653
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
654 move( from, to ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
655 if ( to > from && to - from === 1 || from === to ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
656 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
657 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
658
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
659 const that = this,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
660 recordToMove = that.boundSource.splice( from, 1 )[ 0 ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
661
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
662 if ( to > from ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
663 to--;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
664 that.boundSource.splice( to, 0, recordToMove );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
665 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
666 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
667 that.boundSource.splice( to, 0, recordToMove );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
668 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
669
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
670 that.refreshIndexes();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
671
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
672 that._notify( { action: 'move', index: to, data: that.boundSource[ to ] } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
673
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
674 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
675 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
676
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
677 indexOf( item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
678 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
679 const index = that.boundSource.indexOf( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
680
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
681 return index;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
682 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
683
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
684 get length() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
685 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
686
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
687 if ( that.virtualDataSourceLength !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
688 return that.virtualDataSourceLength;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
689 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
690
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
691 if ( that.dataSourceLength ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
692 return that.dataSourceLength;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
693 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
694
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
695 if ( typeof ( that.dataSource ) === 'number' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
696 return that.dataSource;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
697 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
698
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
699 if ( that.bindingCompleted ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
700 return that.boundSource.length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
701 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
702
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
703 if ( that.dataSource && typeof that.dataSource !== 'string' && that.dataSource.length ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
704 return that.dataSource.length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
705 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
706
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
707 return that.boundSource.length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
708 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
709
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
710 clear() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
711 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
712
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
713 if ( !that.isInitialized ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
714 that._cachedValues = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
715 that.dataItemById = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
716 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
717 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
718
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
719 for ( let i = 0; i < that.boundSource.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
720 delete that[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
721 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
722
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
723 that._cachedValues = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
724 that.boundSource = that.observable ? new JQX.ObservableArray() : [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
725 that.dataItemById = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
726 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
727 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
728
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
729 _getId( id, item, index ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
730 if ( id !== null && id.name !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
731 if ( id.name && item.getAttribute ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
732 let result = item.getAttribute( id.name );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
733 if ( result !== null && result.toString().length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
734 return result;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
735 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
736 else if ( id.map ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
737 try {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
738 let result = item.getAttribute( id.map );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
739 if ( result !== null && result.toString().length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
740 return result;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
741 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
742 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
743 catch ( error ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
744 return index;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
745 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
746 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
747 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
748 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
749 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
750
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
751 if ( id ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
752 if ( id.toString().length > 0 && item.getAttribute ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
753 let result = item.getAttribute( id );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
754 if ( result !== null && result.toString().length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
755 return result.trim().split( ' ' ).join( '' ).replace( /([ #;?%&,.+*~\':'!^$[\]()=>|\/@])/g, '' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
756 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
757 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
758 let splitMap = id.split( this.mapChar );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
759 if ( splitMap.length > 1 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
760 let d = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
761 for ( let p = 0; p < splitMap.length; p++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
762 if ( d !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
763 d = d[ splitMap[ p ] ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
764 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
765 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
766 if ( d !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
767 return d;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
768 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
769 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
770 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
771 if ( item[ id ] !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
772 return item[ id ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
773 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
774 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
775 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
776 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
777 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
778
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
779 return index;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
780 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
781
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
782 _buildHierarchy() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
783 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
784
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
785 if ( !that.reservedNames ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
786 that.reservedNames = {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
787 leaf: 'leaf',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
788 parent: 'parent',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
789 expanded: 'expanded',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
790 checked: 'checked',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
791 selected: 'selected',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
792 level: 'level',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
793 icon: 'icon',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
794 data: 'data'
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
795 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
796 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
797 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
798 const names = that.reservedNames;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
799
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
800 if ( !names.leaf ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
801 names.leaf = 'leaf';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
802 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
803 if ( !names.parent ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
804 names.parent = 'parent';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
805 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
806 if ( !names.expanded ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
807 names.expanded = 'expanded';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
808 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
809 if ( !names.checked ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
810 names.checked = 'checked';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
811 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
812 if ( !names.selected ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
813 names.selected = 'selected';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
814 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
815 if ( !names.level ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
816 names.level = 'level';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
817 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
818 if ( !names.data ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
819 names.data = 'data';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
820 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
821
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
822 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
823
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
824 const names = that.reservedNames;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
825
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
826 if ( that.childrenDataField ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
827 const hierarchy = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
828
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
829 for ( let i = 0; i < that.boundSource.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
830 const item = Object.assign( {}, that.boundSource[ i ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
831
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
832 if ( !item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
833 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
834 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
835
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
836 hierarchy.push( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
837
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
838 const addItems = function ( item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
839 const splitMap = that.childrenDataField.split( that.mapChar );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
840 let children = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
841
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
842 if ( splitMap.length > 1 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
843 let data = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
844
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
845 for ( let p = 0; p < splitMap.length; p++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
846 if ( data !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
847 data = data[ splitMap[ p ] ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
848 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
849 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
850
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
851 children = data;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
852 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
853 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
854 children = item[ 'children' ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
855 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
856
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
857 item[ 'children' ] = children;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
858
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
859 if ( item[ 'children' ] === null || item[ 'children' ] === undefined || ( item[ 'children' ] && item[ 'children' ].length === 0 ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
860 item[ names.leaf ] = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
861 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
862 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
863
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
864 addItems( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
865 item[ names.level ] = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
866
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
867 if ( !item.$ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
868 item.$ = {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
869 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
870
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
871 item[ names.parent ] = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
872 item[ names.data ] = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
873
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
874 if ( item[ names.expanded ] === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
875 item[ names.expanded ] = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
876 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
877
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
878 const drillThrough = function ( parent, children ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
879 if ( !children ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
880 parent[ 'children' ] = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
881 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
882 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
883
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
884 for ( let i = 0; i < children.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
885 let item = that._getDataItem( children[ i ], i );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
886
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
887 if ( !item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
888 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
889 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
890
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
891 addItems( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
892 item[ names.level ] = parent[ names.level ] + 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
893 item[ names.parent ] = parent;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
894 item[ names.data ] = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
895
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
896 if ( parent ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
897 parent[ 'children' ][ i ] = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
898 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
899
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
900
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
901 if ( item[ names.expanded ] === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
902 item[ names.expanded ] = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
903 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
904
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
905 drillThrough( item, item[ 'children' ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
906 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
907 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
908
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
909 drillThrough( item, item[ 'children' ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
910 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
911
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
912
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
913 that.boundHierarchy = hierarchy;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
914
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
915 if ( !that._boundSourceUpdate ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
916 for ( let i = 0; i < that.boundHierarchy.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
917 const item = that.boundHierarchy[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
918
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
919 if ( item.children ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
920 const drillThrough = function ( item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
921 if ( !that.dataItemById[ item.$.id ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
922 that.boundSource.canNotify = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
923 that.dataItemById[ item.$.id ] = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
924 that[ that.boundSource.length ] = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
925 that.boundSource.push( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
926 that.boundSource.canNotify = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
927 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
928
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
929 if ( item.children ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
930 for ( let i = 0; i < item.children.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
931 const child = item.children[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
932
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
933 if ( child.children ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
934 drillThrough( child );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
935 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
936 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
937 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
938 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
939
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
940 drillThrough( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
941 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
942 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
943
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
944 that._boundSourceUpdate = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
945 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
946 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
947
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
948 if ( that.xmlRoot && that.dataSourceType === 'xml' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
949 that.boundHierarchy = this._getHierarchy( 'uid', '_parentuid', 'children', null, that.boundSource );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
950 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
951
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
952 if ( that.keyDataField && that.parentDataField ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
953 that.boundHierarchy = this._getHierarchy( that.keyDataField, that.parentDataField, 'children', null, that.boundSource );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
954 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
955
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
956 if ( that.groupBy && that.groupBy.length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
957 that.boundHierarchy = this._getGroupHierarchy( that.groupBy, 'children', 'label', null, 'data', null, 'parent', that.boundSource );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
958 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
959
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
960 if ( that.virtualDataSourceOnExpand ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
961 that.boundHierarchy = this._getHierarchy( 'id', 'parentId', 'children', null, that.boundSource );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
962 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
963 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
964
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
965
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
966 _getGroupHierarchy( groups, collectionName, groupName, mappingFields, itemName, valueName, parentName, data, startIndex ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
967 let that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
968
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
969 if ( !startIndex ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
970 startIndex = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
971 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
972
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
973 let names = that.reservedNames;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
974
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
975 const guid = function () {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
976 function s4() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
977 return Math.floor( ( 1 + Math.random() ) * 0x10000 )
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
978 .toString( 16 )
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
979 .substring( 1 );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
980 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
981
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
982 return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
983 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
984
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
985 let groupHashCodes = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
986 for ( let iGroupColumn = 0; iGroupColumn < groups.length; iGroupColumn++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
987 groupHashCodes[ iGroupColumn ] = guid();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
988 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
989
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
990 if ( !collectionName ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
991 collectionName = 'children';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
992 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
993
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
994 if ( !groupName ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
995 groupName = 'group';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
996 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
997
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
998 if ( !itemName ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
999 itemName = 'item';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1000 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1001
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1002 if ( !parentName ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1003 parentName = 'parent';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1004 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1005
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1006 if ( undefined === valueName ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1007 valueName = 'value';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1008 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1009
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1010 const groupboundSource = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1011 const hashItemGroups = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1012
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1013 let groupboundSourceIndex = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1014
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1015 const getItem = function ( item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1016 let itemObj = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1017 if ( mappingFields ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1018 for ( let mappingField in mappingFields ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1019 const mappingObject = mappingFields[ mappingField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1020
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1021 if ( mappingObject.name && mappingObject.map ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1022 itemObj[ mappingObject.map ] = itemObj[ mappingObject.name ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1023 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1024 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1025 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1026
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1027 return itemObj;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1028 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1029
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1030 for ( let obj = 0; obj < data.length; obj++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1031 let item = Object.assign( {}, getItem( data[ obj ] ) );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1032
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1033 item[ names.leaf ] = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1034
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1035 let itemKeysHierarchy = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1036 let keys = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1037
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1038 for ( let iGroupColumn = 0; iGroupColumn < groups.length; iGroupColumn++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1039 const group = groups[ iGroupColumn ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1040 const value = item[ group ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1041
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1042 if ( null === value ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1043 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1044 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1045
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1046 itemKeysHierarchy[ keys++ ] = { value: value, group: group, hash: groupHashCodes[ iGroupColumn ] };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1047 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1048
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1049 if ( itemKeysHierarchy.length !== groups.length ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1050 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1051 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1052
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1053 let parentItem = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1054 let lookupKey = '';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1055
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1056 for ( let q = 0; q < itemKeysHierarchy.length; q++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1057 const itemKey = itemKeysHierarchy[ q ].value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1058 const groupDataField = itemKeysHierarchy[ q ].group;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1059 const columnHash = itemKeysHierarchy[ q ].hash;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1060
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1061 lookupKey = lookupKey + '_' + columnHash + '_' + itemKey;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1062
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1063 if ( hashItemGroups[ lookupKey ] !== undefined && hashItemGroups[ lookupKey ] !== null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1064 parentItem = hashItemGroups[ lookupKey ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1065 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1066 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1067
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1068 if ( parentItem === null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1069 parentItem = { $: {} };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1070
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1071 parentItem[ names.level ] = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1072 parentItem[ names.leaf ] = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1073 parentItem[ parentName ] = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1074 parentItem[ groupName ] = itemKey;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1075 parentItem[ itemName ] = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1076 parentItem[ 'groupDataField' ] = groupDataField;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1077
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1078 if ( !parentItem[ groupDataField ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1079 parentItem[ groupDataField ] = parentItem.data[ groupDataField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1080 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1081
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1082 if ( item[ names.expanded ] !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1083 parentItem[ names.expanded ] = item[ names.expanded ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1084 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1085 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1086 parentItem[ names.expanded ] = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1087 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1088
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1089 if ( valueName ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1090 parentItem[ valueName ] = item[ valueName ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1091 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1092
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1093 parentItem[ collectionName ] = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1094
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1095 let uid = groupboundSource.length + startIndex;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1096
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1097 if ( !this.id || typeof item.$.id === 'number' || isFinite( item.$.id ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1098 uid = 'Item' + uid;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1099 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1100 if ( parentItem.$.id === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1101 parentItem.$.id = uid;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1102 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1103
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1104 groupboundSource[ groupboundSourceIndex++ ] = parentItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1105 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1106 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1107 const subItem = { $: {} };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1108
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1109 subItem[ names.level ] = parentItem[ names.level ] + 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1110 subItem[ parentName ] = parentItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1111 subItem[ groupName ] = itemKey;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1112 subItem[ collectionName ] = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1113 subItem[ itemName ] = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1114 subItem[ 'groupDataField' ] = groupDataField;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1115 subItem[ names.leaf ] = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1116
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1117 if ( !subItem[ groupDataField ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1118 subItem[ groupDataField ] = subItem.data[ groupDataField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1119 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1120
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1121 if ( item[ names.expanded ] !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1122 subItem[ names.expanded ] = item[ names.expanded ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1123 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1124 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1125 subItem[ names.expanded ] = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1126 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1127
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1128 if ( valueName ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1129 subItem[ valueName ] = item[ valueName ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1130 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1131
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1132 if ( subItem.$.id === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1133 subItem.$.id = parentItem.$.id + '_' + parentItem[ collectionName ].length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1134 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1135
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1136 parentItem[ collectionName ][ parentItem[ collectionName ].length ] = subItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1137 parentItem = subItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1138 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1139
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1140 hashItemGroups[ lookupKey ] = parentItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1141 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1142
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1143 if ( item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1144 item[ names.leaf ] = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1145 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1146
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1147 if ( parentItem !== null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1148 if ( this.id === null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1149 if ( undefined === item.$.id ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1150 item.$.id = parentItem.$.id + '_' + parentItem[ collectionName ].length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1151 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1152 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1153 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1154 if ( undefined === item.$.id ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1155 if ( item.$.id.toString().indexOf( parentItem.$.id ) === -1 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1156 item.$.id = parentItem.$.id + '_' + item.$.id;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1157 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1158 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1159 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1160
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1161 item[ parentName ] = parentItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1162 item[ names.level ] = parentItem[ names.level ] + 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1163 parentItem[ collectionName ][ parentItem[ collectionName ].length ] = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1164 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1165 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1166 if ( undefined === item.$.id ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1167 item.$.id = guid();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1168 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1169 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1170 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1171
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1172 return groupboundSource;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1173 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1174
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1175 _getHierarchy( fieldName, parentFieldName, collectionName, mappingFields, boundSource ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1176 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1177
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1178 const databoundHierarchy = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1179 let flatData = this.boundSource;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1180
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1181 if ( boundSource ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1182 flatData = boundSource;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1183 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1184
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1185 if ( this.boundSource.length === 0 )
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1186 return null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1187
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1188 const childrenName = collectionName !== null ? collectionName : 'children';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1189 let items = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1190 let data = flatData;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1191 let dataLength = data.length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1192 let names = that.reservedNames;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1193
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1194 const getItem = function ( item ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1195 let itemObj = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1196 if ( mappingFields ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1197 for ( let mappingField in mappingFields ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1198 const mappingObject = mappingFields[ mappingField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1199
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1200 if ( mappingObject.name && mappingObject.map ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1201 itemObj[ mappingObject.map ] = itemObj[ mappingObject.name ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1202 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1203 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1204 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1205
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1206 return itemObj;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1207 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1208
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1209 // build hierarchical source.
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1210 for ( let i = 0; i < dataLength; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1211 let item = data[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1212 let parentId = item[ parentFieldName ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1213 let id = item[ fieldName ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1214
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1215 if ( parentFieldName === 'parentId' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1216 parentId = item.$.parentId;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1217 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1218
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1219 if ( fieldName === 'id' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1220 id = item.$.id;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1221 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1222
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1223 item[ childrenName ] = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1224
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1225 items[ id ] = { parentId: parentId, item: item };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1226 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1227
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1228 for ( let i = 0; i < dataLength; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1229 const item = data[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1230 let parentId = item[ parentFieldName ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1231 let id = item[ fieldName ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1232
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1233 if ( parentFieldName === 'parentId' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1234 parentId = item.$.parentId;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1235 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1236
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1237 if ( fieldName === 'id' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1238 id = item.$.id;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1239 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1240
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1241 if ( items[ parentId ] !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1242 let item = { parentId: parentId, item: items[ id ].item };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1243 let parentItem = items[ parentId ].item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1244 if ( !parentItem[ childrenName ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1245 parentItem[ childrenName ] = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1246 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1247 let length = parentItem[ childrenName ].length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1248 item = item.item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1249
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1250 if ( !names ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1251 if ( item.parent === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1252 item.parent = parentItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1253 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1254 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1255 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1256 if ( item[ names.parent ] === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1257 item[ names.parent ] = parentItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1258 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1259 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1260
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1261 const itemObj = getItem( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1262
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1263 parentItem[ childrenName ][ length ] = itemObj;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1264 items[ parentId ].item = parentItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1265 items[ id ].item = item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1266
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1267 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1268 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1269 let item = items[ id ].item;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1270 if ( !names ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1271 if ( item.parent === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1272 item.parent = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1273 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1274 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1275 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1276 if ( item[ names.parent ] === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1277 item[ names.parent ] = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1278 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1279 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1280
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1281 const itemObj = getItem( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1282
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1283 if ( !names ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1284 itemObj.level = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1285 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1286 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1287 itemObj[ names.level ] = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1288 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1289
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1290 databoundHierarchy[ databoundHierarchy.length ] = itemObj;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1291 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1292 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1293 if ( databoundHierarchy.length !== 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1294 let updateLevels = function ( level, children ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1295 for ( let i = 0; i < children.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1296 const child = children[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1297
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1298 if ( !names ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1299 child.level = level;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1300 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1301 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1302 child[ names.level ] = level;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1303 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1304
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1305 const childChildren = child[ childrenName ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1306
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1307 if ( childChildren ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1308 if ( childChildren.length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1309 updateLevels( level + 1, childChildren );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1310 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1311 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1312 if ( that.virtualDataSourceOnExpand ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1313 if ( child.leaf === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1314 child.leaf = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1315 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1316 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1317 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1318 if ( !names ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1319 child.leaf = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1320 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1321 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1322 child[ names.leaf ] = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1323 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1324 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1325 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1326 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1327 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1328 if ( that.virtualDataSourceOnExpand ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1329 if ( child.leaf === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1330 child.leaf = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1331 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1332 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1333 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1334 if ( !names ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1335 child.leaf = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1336 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1337 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1338 child[ names.leaf ] = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1339 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1340 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1341 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1342 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1343 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1344 updateLevels( 0, databoundHierarchy );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1345 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1346 return databoundHierarchy;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1347 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1348
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1349 summarize( summaryItems, boundSource ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1350 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1351
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1352 if ( !Array.isArray( summaryItems ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1353 summaryItems = [ summaryItems ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1354 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1355
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1356 let tempSummaryItems = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1357
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1358 for ( let i = 0; i < summaryItems.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1359 const summaryItem = summaryItems[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1360
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1361 for ( let name in summaryItem ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1362 const functions = summaryItem[ name ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1363
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1364 tempSummaryItems.push( { dataField: name, functions: functions } )
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1365 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1366 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1367
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1368 summaryItems = tempSummaryItems;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1369
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1370 let data = {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1371 let summaryByDataField = new Array();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1372
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1373 if ( !boundSource ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1374 boundSource = that.boundSource;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1375 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1376
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1377 let length = boundSource.length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1378
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1379 if ( length === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1380 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1381 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1382
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1383 if ( length === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1384 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1385 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1386
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1387 for ( let i = 0; i < length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1388 let dataItem = boundSource[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1389
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1390 for ( let j = 0; j < summaryItems.length; j++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1391 const summaryItem = summaryItems[ j ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1392 let value = dataItem[ summaryItem.dataField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1393
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1394 if ( summaryItem.functions ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1395 data[ summaryItem.dataField ] = data[ summaryItem.dataField ] || {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1396 summaryByDataField[ summaryItem.dataField ] = summaryByDataField[ summaryItem.dataField ] || 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1397 summaryByDataField[ summaryItem.dataField ]++;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1398
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1399 const _summaryItemFunction = function ( summaryItemObject ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1400 for ( let name in summaryItemObject ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1401 let oldValue = data[ summaryItem.dataField ][ name ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1402
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1403 if ( oldValue === null || oldValue === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1404 data[ summaryItem.dataField ][ name ] = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1405 oldValue = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1406 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1407
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1408 if ( typeof summaryItemObject[ name ] === 'function' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1409 oldValue = summaryItemObject[ name ]( oldValue, value, summaryItem.dataField, dataItem );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1410 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1411 data[ summaryItem.dataField ][ name ] = oldValue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1412 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1413 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1414
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1415 let canParse = parseFloat( value );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1416
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1417 if ( isNaN( canParse ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1418 canParse = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1419 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1420 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1421 canParse = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1422 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1423
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1424 if ( canParse ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1425 value = parseFloat( value );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1426 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1427
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1428 if ( typeof value === 'number' && isFinite( value ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1429 summaryItem.functions.forEach( function ( summaryItemFunction ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1430 let oldValue = data[ summaryItem.dataField ][ summaryItemFunction ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1431
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1432 if ( oldValue === null || oldValue === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1433 oldValue = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1434
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1435 if ( summaryItemFunction === 'min' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1436 oldValue = 9999999999999;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1437 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1438
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1439 if ( summaryItemFunction === 'max' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1440 oldValue = -9999999999999;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1441 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1442
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1443 if (summaryItemFunction === 'median') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1444 oldValue = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1445 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1446 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1447
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1448 if ( summaryItemFunction === 'sum' || summaryItemFunction === 'avg' || summaryItemFunction === 'stdev'
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1449 || summaryItemFunction === 'stdevp' || summaryItemFunction === 'var' || summaryItemFunction === 'varp' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1450 oldValue += parseFloat( value );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1451 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1452 else if ( summaryItemFunction === 'product' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1453 if ( i === 0 )
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1454 oldValue = parseFloat( value );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1455 else
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1456 oldValue *= parseFloat( value );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1457 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1458 else if ( summaryItemFunction === 'min' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1459 oldValue = Math.min( oldValue, parseFloat( value ) );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1460 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1461 else if ( summaryItemFunction === 'max' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1462 oldValue = Math.max( oldValue, parseFloat( value ) );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1463 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1464 else if ( summaryItemFunction === 'count' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1465 oldValue++;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1466 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1467 else if (summaryItemFunction === 'median') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1468 oldValue.push(parseFloat(value));
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1469 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1470 else if ( typeof ( summaryItemFunction ) === 'object' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1471 _summaryItemFunction( summaryItemFunction );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1472 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1473 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1474
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1475 data[ summaryItem.dataField ][ summaryItemFunction ] = oldValue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1476 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1477 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1478 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1479 summaryItem.functions.forEach( function ( summaryItemFunction ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1480 if ( summaryItemFunction === 'min' || summaryItemFunction === 'max' || summaryItemFunction === 'count' || summaryItemFunction === 'product' || summaryItemFunction === 'sum'
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1481 || summaryItemFunction === 'avg' || summaryItemFunction === 'stdev'
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1482 || summaryItemFunction === 'stdevp' || summaryItemFunction === 'var' || summaryItemFunction === 'varp' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1483 if ( value === null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1484 return true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1485 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1486
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1487 let oldValue = data[ summaryItem.dataField ][ summaryItemFunction ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1488
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1489 if ( oldValue === null || oldValue === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1490 oldValue = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1491 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1492
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1493 data[ summaryItem.dataField ][ summaryItemFunction ] = oldValue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1494
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1495 return true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1496 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1497
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1498 if ( typeof ( summaryItemFunction ) === 'object' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1499 _summaryItemFunction( summaryItemFunction );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1500 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1501 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1502 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1503 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1504 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1505 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1506
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1507 for ( let j = 0; j < summaryItems.length; j++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1508 const summaryItem = summaryItems[ j ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1509
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1510 if ( !summaryItem.functions ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1511 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1512 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1513 if ( !data[ summaryItem.dataField ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1514 data[ summaryItem.dataField ] = {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1515
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1516 summaryItem.functions.forEach( function ( summaryItemFunction ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1517 data[ summaryItem.dataField ][ summaryItemFunction ] = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1518 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1519 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1520
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1521 if ( data[ summaryItem.dataField ][ 'avg' ] !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1522 const value = data[ summaryItem.dataField ][ 'avg' ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1523 const dataValues = summaryByDataField[ summaryItem.dataField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1524
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1525 if ( dataValues === 0 || dataValues === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1526 data[ summaryItem.dataField ][ 'avg' ] = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1527 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1528 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1529 data[ summaryItem.dataField ][ 'avg' ] = value / dataValues;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1530 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1531 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1532 else if ( data[ summaryItem.dataField ][ 'count' ] !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1533 data[ summaryItem.dataField ][ 'count' ] = length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1534 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1535 else if (data[summaryItem.dataField]['median'] !== undefined) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1536 let population = data[summaryItem.dataField]['median'];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1537
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1538 population.sort(function (a, b) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1539 return a - b;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1540 });
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1541
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1542 data[summaryItem.dataField]['median'] =
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1543 0.5 * (population[Math.floor((population.length + 1) / 2) - 1] + population[Math.ceil((population.length + 1) / 2) - 1]);
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1544 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1545
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1546 // stdev, stdevp, var, varp.
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1547 // stdev - Standard deviation on a sample.
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1548 // varp - Variance on an entire population.
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1549 // let - Variance on a sample.
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1550 if ( data[ summaryItem.dataField ][ 'stdev' ] || data[ summaryItem.dataField ][ 'stdevp' ]
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1551 || data[ summaryItem.dataField ][ 'var' ] || data[ summaryItem.dataField ][ 'varp' ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1552 summaryItem.functions.forEach( function ( summaryItemFunction ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1553 if ( summaryItemFunction === 'stdev' || summaryItemFunction === 'var' || summaryItemFunction === 'varp' || summaryItemFunction === 'stdevp' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1554 const value = data[ summaryItem.dataField ][ summaryItemFunction ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1555 const count = length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1556 const average = ( value / length );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1557 let sumSq = 0.0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1558
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1559 for ( let i = 0; i < length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1560 let dataItem = boundSource[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1561 let value = dataItem[ summaryItem.dataField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1562
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1563 sumSq += ( value - average ) * ( value - average );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1564 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1565
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1566 let denominator = ( summaryItemFunction === 'stdevp' || summaryItemFunction === 'varp' ) ? count : count - 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1567
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1568 if ( denominator === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1569 denominator = 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1570 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1571
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1572 if ( summaryItemFunction === 'var' || summaryItemFunction === 'varp' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1573 data[ summaryItem.dataField ][ summaryItemFunction ] = sumSq / denominator;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1574 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1575 else if ( summaryItemFunction === 'stdevp' || summaryItemFunction === 'stdev' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1576 data[ summaryItem.dataField ][ summaryItemFunction ] = Math.sqrt( sumSq / denominator );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1577 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1578 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1579 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1580 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1581 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1582 return data;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1583 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1584
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1585 deserialize(stringValue, type, nullable) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1586 const nullValue = stringValue === 'null';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1587
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1588 if (stringValue === undefined || (nullValue && !nullable)) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1589 return undefined;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1590 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1591
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1592 if (nullValue && nullable) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1593 return null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1594 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1595
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1596 if (type === 'boolean' || type === 'bool') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1597 if (stringValue === null) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1598 return false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1599 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1600
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1601 // Boolean properties are set based on the presence of the attribute: if the attribute exists at all, the value is true.
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1602 return true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1603 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1604 else if (type === 'number' || type === 'float') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1605 if (stringValue === 'NaN') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1606 return NaN;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1607 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1608
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1609 if (stringValue === 'Infinity') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1610 return Infinity;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1611 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1612
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1613 if (stringValue === '-Infinity') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1614 return -Infinity;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1615 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1616
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1617 return parseFloat(stringValue);
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1618 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1619 else if (type === 'int' || type === 'integer') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1620 if (stringValue === 'NaN') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1621 return NaN;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1622 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1623
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1624 if (stringValue === 'Infinity') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1625 return Infinity;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1626 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1627
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1628 if (stringValue === '-Infinity') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1629 return -Infinity;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1630 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1631
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1632 return parseInt(stringValue);
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1633 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1634 else if (type === 'string') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1635 return stringValue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1636 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1637 else if (type === 'any') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1638 return stringValue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1639 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1640 else if (type === 'date') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1641 return new Date(stringValue);
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1642 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1643 else if (type === 'function') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1644 if (typeof window[stringValue] === 'function') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1645 return window[stringValue];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1646 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1647 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1648 else if (type === 'array' || type === 'object') {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1649 try {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1650 const jsonObject = JSON.parse(stringValue);
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1651
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1652 if (jsonObject) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1653 return jsonObject;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1654 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1655 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1656 catch (er) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1657 if (window[stringValue] && (typeof window[stringValue] === 'object')) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1658 return window[stringValue];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1659 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1660 else if (type === 'array' && stringValue.indexOf('[') >= 0) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1661 if (stringValue.indexOf('{') >= 0) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1662 let array = stringValue.replace(/{/ig, '').replace('[', '').replace(']', '').replace(/'/ig, '').replace(/"/ig, '').trim();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1663
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1664 array = array.split('},');
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1665
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1666 for (let i = 0; i < array.length; i++) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1667 let parsedObject = {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1668 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1669
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1670 let parts = array[i].trim().split(',');
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1671
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1672 for (let j = 0; j < parts.length; j++) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1673 const key = parts[j].split(':')[0].trim();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1674 const value = parts[j].split(':')[1].trim();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1675
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1676 parsedObject[key] = value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1677 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1678
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1679 array[i] = parsedObject;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1680 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1681
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1682 return array;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1683 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1684
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1685 const array = stringValue.replace('[', '').replace(']', '').replace(/'/ig, '').replace(/"/ig, '').trim().split(',');
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1686
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1687 return array;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1688 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1689 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1690 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1691
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1692 return undefined;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1693 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1694
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1695 _getDataItem( dataSourceItem, index ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1696 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1697 const itemObject = {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1698 const unboundMode = typeof ( that.dataSource ) === 'number' || that.dataSourceLength;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1699
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1700 if ( !dataSourceItem ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1701 return { $: { id: index, isEmpty: true, index: index } }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1702 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1703
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1704 if ( typeof dataSourceItem === 'string' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1705 dataSourceItem = { '': dataSourceItem };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1706 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1707
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1708 if ( unboundMode ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1709 for ( let j = 0; j < that.dataFields.length; j++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1710 const dataField = that.dataFields ? that.dataFields[ j ] : {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1711
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1712 itemObject[ dataField.name ] = '';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1713 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1714
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1715 itemObject.$ = {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1716 itemObject.$.id = index;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1717 itemObject.$.index = index;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1718
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1719 return itemObject;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1720 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1721
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1722 const dataItem = dataSourceItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1723
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1724 if ( dataItem.expanded !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1725 itemObject.expanded = dataItem.expanded;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1726
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1727 if ( dataItem.expanded === 'true' || dataItem.expanded === true || dataItem.expanded === 1 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1728 itemObject.expanded = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1729 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1730 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1731 itemObject.expanded = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1732 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1733 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1734
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1735 if ( that.childrenDataField ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1736 if ( dataItem[ that.childrenDataField ] !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1737 itemObject.children = dataItem[ that.childrenDataField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1738 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1739 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1740 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1741 if ( dataItem.children !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1742 itemObject.children = dataItem.children;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1743 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1744 else if ( dataItem.items !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1745 itemObject.children = dataItem.items;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1746 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1747 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1748 if ( dataItem.leaf !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1749 itemObject.leaf = dataItem.leaf;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1750 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1751
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1752 if ( dataItem.level !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1753 itemObject.level = dataItem.level;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1754 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1755
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1756 if ( that.keyDataField ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1757 if ( dataItem[ that.keyDataField ] !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1758 itemObject[ that.keyDataField ] = dataItem[ that.keyDataField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1759 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1760 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1761
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1762 if ( that.parentDataField ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1763 if ( dataItem[ that.parentDataField ] !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1764 itemObject[ that.parentDataField ] = dataItem[ that.parentDataField ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1765 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1766 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1767
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1768 if ( that.dataFields.length === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1769 const names = Object.getOwnPropertyNames( dataSourceItem );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1770
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1771 for ( let i = 0; i < names.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1772 if ( names[ i ] === '$' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1773 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1774 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1775
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1776 that.dataFields.push( { name: names[ i ], dataType: 'string' } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1777 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1778 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1779
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1780 for ( let j = 0; j < that.dataFields.length; j++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1781 const dataField = that.dataFields ? that.dataFields[ j ] : {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1782 let value = '';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1783
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1784 dataField.dataType = dataField.type;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1785
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1786 if ( undefined === dataField || dataField === null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1787 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1788 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1789
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1790 if ( dataSourceItem.length ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1791 value = dataSourceItem[ j ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1792 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1793
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1794 if ( dataField.map ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1795 let splitMap = dataField.map.split( that.mapChar );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1796
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1797 if ( splitMap.length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1798 let dataMappedItem = dataItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1799
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1800 for ( let p = 0; p < splitMap.length; p++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1801 if ( !dataItem ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1802 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1803 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1804
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1805 dataMappedItem = dataMappedItem[ splitMap[ p ] ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1806 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1807
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1808 value = dataMappedItem;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1809 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1810 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1811 value = dataItem[ dataField.map ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1812 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1813 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1814
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1815 if ( value !== undefined && value !== null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1816 value = value.toString();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1817 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1818 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1819 if ( value === undefined && value !== null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1820 value = '';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1821 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1822 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1823
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1824
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1825 let isEmptyString = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1826 // searches by both selectors when necessary.
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1827 if ( value === '' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1828 isEmptyString = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1829 value = dataSourceItem[ dataField.name ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1830
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1831 if ( value !== undefined && value !== null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1832 if ( dataField.dataType !== 'array' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1833 if ( dataField.dataType !== 'date' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1834 value = value.toString();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1835 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1836 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1837 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1838 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1839 value = '';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1840 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1841 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1842
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1843 if ( value === '[object Object]' && dataField.map && isEmptyString ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1844 value = '';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1845 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1846
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1847 if ( that._cachedValues[ '' + value + '_' + dataField.dataType ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1848 value = that._cachedValues[ '' + value + '_' + dataField.dataType ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1849 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1850 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1851 if ( dataField.dataType === 'bool' || dataField.dataType === 'boolean' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1852 if ( value === 'true' || value === '1' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1853 value = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1854 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1855 else if ( value === 'false' || value === '0' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1856 value = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1857 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1858 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1859 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1860 value = that.deserialize( '' + value, dataField.dataType, true );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1861 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1862
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1863 that._cachedValues[ value + '_' + dataField.dataType ] = value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1864 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1865
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1866 if ( dataField.dataType !== 'string' && dataField.dataType !== 'boolean' && dataField.dataType !== 'bool' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1867 if ( isNaN( value ) || value === -Infinity || value === Infinity ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1868 value = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1869 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1870 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1871
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1872 itemObject[ dataField.name ] = value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1873 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1874
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1875 let itemObjectId = index;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1876
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1877 if ( that.id ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1878 itemObjectId = dataItem[ that.id ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1879 if ( typeof ( itemObjectId ) === 'object' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1880 itemObjectId = index;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1881 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1882 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1883 else if ( !that.virtualDataSource && that.dataItemById && that.dataItemById[ itemObjectId ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1884 itemObjectId = that.length;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1885 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1886
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1887 if ( !itemObject.$ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1888 itemObject.$ = {};
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1889 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1890
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1891 itemObject.$.id = itemObjectId;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1892 itemObject.$.index = index;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1893
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1894 return new Object( itemObject );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1895 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1896
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1897 _bindToArray() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1898 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1899
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1900 const unboundMode = typeof ( that.dataSource ) === 'number' || that.dataSourceLength;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1901 const dataArray = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1902
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1903 that.boundSource.canNotify = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1904
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1905 for ( let i = 0; i < that.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1906 const dataSourceItem = unboundMode ? {} : that.dataSource[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1907 const itemObject = that._getDataItem( dataSourceItem, i );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1908
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1909 dataArray.push( itemObject );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1910 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1911
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1912 if ( unboundMode && that.dataSourceLength && that.dataSource.length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1913 for ( let i = 0; i < that.dataSource.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1914 const cell = that.dataSource[ i ].cell;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1915 const value = that.dataSource[ i ].value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1916
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1917 const row = cell.replace( /[^0-9]/g, '' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1918 const dataField = cell.replace( /[0-9]/g, '' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1919
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1920 dataArray[ row - 1 ][ dataField ] = value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1921 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1922 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1923
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1924 that.boundSource = dataArray;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1925
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1926 for ( let i = 0; i < that.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1927 that[ i ] = that.boundSource[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1928 that.dataItemById[ that[ i ].$.id ] = that[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1929 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1930
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1931 that.boundSource.canNotify = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1932 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1933
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1934 _bindToJSON() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1935 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1936
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1937 const dataArray = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1938
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1939 const dataEntries = Object.entries( that.dataSource );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1940
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1941 that.boundSource.canNotify = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1942
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1943 for ( let i = 0; i < dataEntries.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1944 const dataSourceItem = dataEntries[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1945 const itemObject = that._getDataItem( dataSourceItem, i );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1946
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1947 dataArray.push( itemObject );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1948 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1949
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1950 that.boundSource = false === that.observable ? dataArray : new JQX.ObservableArray( dataArray );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1951
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1952 for ( let i = 0; i < that.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1953 that[ i ] = that.boundSource[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1954 that.dataItemById[ that[ i ].$.id ] = that[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1955 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1956
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1957 that.boundSource.canNotify = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1958 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1959
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1960 sortBy( dataField, dataType, orderBy ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1961 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1962
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1963 if ( !dataType ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1964 for ( let i = 0; i < that.dataFields.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1965 const field = that.dataFields[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1966
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1967 if ( field.name === dataField ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1968 dataType = field.dataType;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1969 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1970 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1971 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1972 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1973
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1974 if ( that.boundHierarchy ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1975 if ( ( !dataField || dataField.length === 0 ) && that.groupBy.length > 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1976 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1977 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1978 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1979
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1980 const sortBy = function ( hierarchy ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1981 that._sort( hierarchy, dataField, orderBy, dataType );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1982
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1983 for ( let i = 0; i < hierarchy.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1984 const item = hierarchy[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1985
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1986 if ( item[ 'children' ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1987 sortBy( item[ 'children' ], dataField, orderBy, dataType );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1988 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1989 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1990 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1991
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1992 sortBy( that.boundHierarchy );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1993 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1994 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1995 that._sort( that.boundSource, dataField, orderBy, dataType );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1996 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1997 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1998
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1999 _createFilter( dataType, filterExpressions ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2000 const filterOperators = {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2001 '=': 'EQUAL',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2002 '<>': 'NOT_EQUAL',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2003 '<': 'LESS_THAN',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2004 '>': 'GREATER_THAN',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2005 '<=': 'LESS_THAN_OR_EQUAL',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2006 '>=': 'GREATER_THAN_OR_EQUAL',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2007 'equal': 'EQUAL',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2008 'not equal': 'NOT_EQUAL',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2009 'less than': 'LESS_THAN',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2010 'greater than': 'GREATER_THAN',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2011 'greater than or equal': 'GREATER_THAN_OR_EQUAL',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2012 'less than or equal': 'LESS_THAN_OR_EQUAL',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2013 'starts with': 'STARTS_WITH',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2014 'ends with': 'ENDS_WITH',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2015 'null': 'null',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2016 '': 'EMPTY',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2017 'isblank': 'EMPTY',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2018 'isnotblank': 'NOT_EMPTY',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2019 'contains': 'CONTAINS',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2020 'notcontains': 'DOES_NOT_CONTAIN',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2021 'startswith': 'STARTS_WITH',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2022 'endswith': 'ENDS_WITH',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2023 'NULL': 'NULL',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2024 'NOT_NULL': 'NOT_NULL'
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2025 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2026
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2027 let filterExpressionsArray = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2028
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2029 for ( let i = 0; i < filterExpressions.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2030 const filterExpression = filterExpressions[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2031
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2032 const filterExpressionParts = filterExpression.indexOf( '"' ) === -1 ? filterExpression.split( ' ' ) : filterExpression.split( '"' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2033 let filter = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2034
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2035 for ( let j = 0; j < filterExpressionParts.length; j++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2036 const part = filterExpressionParts[ j ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2037
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2038 if ( part !== '' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2039 filter.push( part.trim() );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2040 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2041 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2042
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2043 filterExpressionsArray.push( filter );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2044 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2045
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2046 const filterGroup = new JQX.FilterGroup();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2047 const filterGroupOperators = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2048 const filterSubGroups = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2049
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2050 for ( let i = 0; i < filterExpressionsArray.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2051 const filterExpression = filterExpressionsArray[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2052
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2053
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2054 if ( filterExpression.length > 1 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2055 const filterSubGroup = new JQX.FilterGroup();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2056
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2057 let operator = 'and';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2058 let filterExpressionPartsCounter = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2059
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2060 for ( let j = 0; j < filterExpression.length; j++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2061 const value = filterExpression[ j ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2062
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2063 if ( value === 'and' || value === 'or' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2064 operator = value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2065 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2066 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2067
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2068 filterExpressionPartsCounter++;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2069
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2070 if ( filterExpressionPartsCounter === 2 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2071 const filter = filterSubGroup.createFilter( dataType, value, filterOperators[ filterExpression[ j - 1 ] ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2072
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2073 filterExpressionPartsCounter = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2074
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2075 if ( operator ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2076 filterSubGroup.addFilter( operator, filter );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2077 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2078 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2079 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2080
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2081 filterSubGroups.push( filterSubGroup );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2082 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2083 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2084 const filterGroupOperator = filterExpression[ 0 ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2085
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2086 if ( filterGroupOperator !== 'and' && filterGroupOperator !== 'or' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2087 throw new Error( 'Filter Exprresion expects "AND" or "OR", but the token is: ' + filterGroupOperator );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2088 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2089
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2090 filterGroupOperators.push( filterGroupOperator );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2091 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2092 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2093
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2094 let operatorsCounter = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2095
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2096 if ( filterSubGroups.length === 1 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2097 return filterSubGroups[ 0 ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2098 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2099
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2100 for ( let i = 0; i < filterSubGroups.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2101 let operator = filterGroupOperators[ operatorsCounter ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2102
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2103 if ( ( i + 1 ) % 2 === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2104 operatorsCounter++;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2105 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2106
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2107 if ( !operator ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2108 operator = 'and';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2109 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2110
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2111 filterGroup.addFilter( operator, filterSubGroups[ i ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2112 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2113
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2114 return filterGroup;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2115 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2116
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2117 filterBy( dataField, ...filterExpressions ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2118 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2119
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2120
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2121 const dataType = ( () => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2122 for ( let i = 0; i < that.dataFields.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2123 const field = that.dataFields[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2124
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2125 if ( field.name === dataField ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2126 return field.dataType;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2127 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2128 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2129 } )();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2130
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2131
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2132 const filterGroup = that._createFilter( dataType, filterExpressions );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2133
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2134 let filteredData = that.boundSource.filter( ( value ) => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2135 const evaluation = filterGroup.evaluate( value[ dataField ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2136
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2137 return evaluation;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2138 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2139
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2140 return filteredData;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2141 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2142
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2143 _filter( filters, operator = 'and' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2144 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2145 const filterGroups = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2146 const dataFields = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2147
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2148 if ( filters.length === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2149 that.clearFilter();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2150 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2151 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2152
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2153 const dataType = ( dataField ) => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2154 for ( let i = 0; i < that.dataFields.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2155 const field = that.dataFields[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2156
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2157 if ( field.name === dataField ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2158 return field.dataType;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2159 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2160 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2161 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2162 let defaultResult, operatorSpecificEval;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2163
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2164 if ( operator === 'and' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2165 defaultResult = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2166 operatorSpecificEval = function ( result, filterGroup, row ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2167 return result && filterGroup.evaluate( row[ filterGroup.dataField ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2168 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2169 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2170 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2171 defaultResult = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2172 operatorSpecificEval = function ( result, filterGroup, row ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2173 return result || filterGroup.evaluate( row[ filterGroup.dataField ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2174 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2175 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2176
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2177 for ( let i = 0; i < filters.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2178 const filter = filters[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2179 const dataField = filter[ 0 ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2180 let filterGroup = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2181
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2182 if ( filter[ 1 ] instanceof JQX.FilterGroup ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2183 filterGroup = filter[ 1 ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2184 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2185 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2186 filterGroup = that._createFilter( dataType( dataField ), filter.splice( 1 ) );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2187 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2188
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2189 if ( filterGroup ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2190 dataFields.push( dataField );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2191 filterGroup.dataField = dataField;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2192 filterGroups.push( filterGroup );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2193 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2194 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2195
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2196 if ( that.boundHierarchy ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2197 const filter = function ( row ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2198 let result = defaultResult;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2199
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2200 for ( let j = 0; j < filterGroups.length; j++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2201 const filterGroup = filterGroups[ j ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2202
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2203 result = operatorSpecificEval( result, filterGroup, row );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2204 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2205
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2206 row.$.filtered = result;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2207
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2208 return result;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2209 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2210
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2211 const filterBy = function ( hierarchy, parentItem, root ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2212 let filteredCount = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2213
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2214 for ( let i = 0; i < hierarchy.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2215 const item = hierarchy[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2216
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2217 filter( item );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2218
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2219 if ( item.$.filtered ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2220 filteredCount++;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2221 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2222
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2223 if ( item[ 'children' ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2224 filterBy( item[ 'children' ], item, parentItem );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2225 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2226 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2227
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2228 if ( filteredCount > 0 && that.groupBy.length > 0 && parentItem ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2229 parentItem.$.filtered = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2230
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2231 if ( root && !root.$.filtered ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2232 root.$.filtered = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2233 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2234 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2235 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2236 if ( filteredCount > 0 && filteredCount !== hierarchy.length && parentItem ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2237 parentItem.$.filtered = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2238
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2239 if ( root && !root.$.filtered ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2240 root.$.filtered = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2241 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2242 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2243 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2244 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2245
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2246 filterBy( that.boundHierarchy, null, null );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2247 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2248 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2249 for ( let i = 0; i < that.boundSource.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2250 const row = that.boundSource[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2251
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2252 let result = defaultResult;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2253
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2254 for ( let j = 0; j < filterGroups.length; j++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2255 const filterGroup = filterGroups[ j ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2256
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2257 result = operatorSpecificEval( result, filterGroup, row );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2258 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2259
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2260 row.$.filtered = result;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2261 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2262 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2263
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2264 if ( that.onFilter ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2265 that.onFilter()
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2266 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2267 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2268
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2269 clearGroup() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2270 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2271
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2272 that.groupBy = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2273 that.boundHierarchy = null;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2274 that.refreshHierarchy();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2275
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2276 if ( that.onGroup ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2277 that.onGroup()
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2278 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2279 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2280
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2281 clearFilter() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2282 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2283
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2284 for ( let i = 0; i < that.boundSource.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2285 const row = that.boundSource[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2286
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2287 row.$.filtered = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2288 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2289
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2290 if ( that.boundHierarchy ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2291 const filterBy = function ( hierarchy, parentItem, root ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2292 //let filteredCount = 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2293
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2294 for ( let i = 0; i < hierarchy.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2295 const item = hierarchy[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2296
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2297 item.$.filtered = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2298
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2299 if ( item.$.filtered ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2300 //filteredCount++;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2301 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2302
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2303 if ( item[ 'children' ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2304 filterBy( item[ 'children' ], item, parentItem );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2305 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2306 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2307
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2308 if ( parentItem ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2309 parentItem.$.filtered = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2310
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2311 if ( root && !root.$.filtered ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2312 root.$.filtered = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2313 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2314 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2315 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2316
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2317 filterBy( that.boundHierarchy, null, null );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2318 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2319
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2320 if ( that.onFilter ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2321 that.onFilter()
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2322 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2323 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2324
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2325 clearSort() {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2326 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2327
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2328 that._sort( that.boundSource, [], [], [] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2329 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2330
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2331 _sort( dataSource, sortColumns, directions, dataTypes, customSortingCallback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2332 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2333
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2334 let isObservableArray = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2335
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2336 if ( dataSource.length === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2337 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2338 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2339
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2340 if ( dataSource && dataSource.constructor && dataSource instanceof JQX.ObservableArray ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2341 isObservableArray = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2342 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2343
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2344 if ( !dataSource || !( Array.isArray( dataSource ) ) || dataSource.length === 0 ||
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2345 !sortColumns || Array.isArray( sortColumns ) && sortColumns.length === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2346 if ( !isObservableArray && !that.boundHierarchy ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2347 throw new Error( 'sort: Missing or Invalid arguments!' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2348 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2349 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2350
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2351 if ( typeof sortColumns === 'string' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2352 sortColumns = [ sortColumns ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2353 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2354
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2355 const directionCoefficients = [],
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2356 compareFunctions = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2357
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2358 if ( directions === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2359 directions = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2360 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2361
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2362 const getCompareFunction = function ( a, knownDataType ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2363 // gets data type of column (not necessary if the Grid provides this information)
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2364 const dataType = knownDataType || typeof a;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2365 let compareFunction;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2366
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2367 switch ( dataType ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2368 case 'string':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2369 compareFunction = new Intl.Collator().compare;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2370 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2371 case 'number':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2372 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2373 return a - b;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2374 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2375 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2376 case 'boolean':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2377 case 'bool':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2378 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2379 if ( a === b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2380 return 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2381 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2382 else if ( a === false ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2383 return -1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2384 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2385 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2386 return 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2387 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2388 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2389 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2390 case 'date':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2391 case 'time':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2392 case 'dateTime':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2393 if ( a instanceof Date ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2394 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2395 return a.getTime() - b.getTime();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2396 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2397 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2398 else if ( a instanceof JQX.Utilities.DateTime ||
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2399 a instanceof JQX.Utilities.BigNumber ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2400 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2401 return a.compare( b );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2402 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2403 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2404 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2405 case 'object':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2406 if ( a instanceof Date ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2407 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2408 return a.getTime() - b.getTime();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2409 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2410 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2411 else if ( a instanceof JQX.Utilities.DateTime ||
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2412 a instanceof JQX.Utilities.BigNumber ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2413 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2414 return a.compare( b );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2415 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2416 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2417 else if ( a instanceof JQX.Utilities.Complex || ( window.NIComplex && a instanceof window.NIComplex ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2418 const complexNumericProcessor = new JQX.Utilities.ComplexNumericProcessor();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2419
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2420 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2421 return complexNumericProcessor.compareComplexNumbers( a, b );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2422 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2423 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2424
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2425 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2426 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2427
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2428 return compareFunction;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2429 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2430
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2431 for ( let i = 0; i < sortColumns.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2432 if ( directions[ i ] === undefined || directions[ i ] === 'asc' || directions[ i ] === 'ascending' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2433 directionCoefficients[ i ] = 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2434 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2435 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2436 directionCoefficients[ i ] = -1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2437 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2438
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2439 const value = dataSource[ 0 ][ sortColumns[ i ] ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2440
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2441 compareFunctions[ i ] = getCompareFunction( value, dataTypes[ i ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2442 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2443
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2444 if ( customSortingCallback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2445 customSortingCallback( dataSource, sortColumns, directions, compareFunctions );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2446 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2447 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2448
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2449 dataSource.sort( function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2450 for ( let i = 0; i < sortColumns.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2451 const result = compareFunctions[ i ]( a[ sortColumns[ i ] ], b[ sortColumns[ i ] ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2452
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2453 if ( result === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2454 if ( sortColumns[ i + 1 ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2455 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2456 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2457 else if ( a._index !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2458 // makes sorting stable
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2459 return ( a._index - b._index ) * directionCoefficients[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2460 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2461
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2462 return 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2463 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2464
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2465 return result * directionCoefficients[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2466 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2467
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2468 if ( sortColumns.length === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2469 if ( a.$.index < b.$.index ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2470 return -1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2471 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2472
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2473 if ( a.$.index > b.$.index ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2474 return 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2475 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2476
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2477 return 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2478
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2479 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2480 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2481
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2482 for ( let i = 0; i < dataSource.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2483 that[ i ] = dataSource[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2484 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2485 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2486
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2487 static Filter( dataSource, filterColumns, filterGroups, customFilteringCallback, operator = 'and' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2488 let defaultResult, operatorSpecificEval;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2489
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2490 if ( operator === 'and' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2491 defaultResult = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2492 operatorSpecificEval = function ( result, dataItem, filterColumn, filterGroup ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2493 if ( customFilteringCallback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2494 return result && customFilteringCallback( dataItem, filterColumn, filterGroup );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2495 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2496
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2497 return result && filterGroup.evaluate( dataItem[ filterColumn ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2498 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2499 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2500 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2501 defaultResult = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2502 operatorSpecificEval = function ( result, dataItem, filterColumn, filterGroup ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2503 if ( customFilteringCallback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2504 return result || customFilteringCallback( dataItem, filterColumn, filterGroup );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2505 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2506
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2507 return result || filterGroup.evaluate( dataItem[ filterColumn ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2508 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2509 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2510
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2511 const filteredData = dataSource.filter( ( dataItem ) => {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2512 let result = defaultResult;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2513
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2514 for ( let i = 0; i < filterGroups.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2515 const filterGroup = filterGroups[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2516 const filterColumn = filterColumns[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2517
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2518 result = operatorSpecificEval( result, dataItem, filterColumn, filterGroup );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2519 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2520
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2521 return result;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2522 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2523
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2524 return filteredData;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2525 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2526
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2527 filter( filterColumns, filterGroups, customFilteringCallback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2528 JQX.ExcelAdapter.Filter( this.boundSource, filterColumns, filterGroups, customFilteringCallback );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2529 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2530
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2531 sort( sortColumns, directions, customSortingCallback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2532 JQX.ExcelAdapter.Sort( this.boundSource, sortColumns, directions, customSortingCallback );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2533 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2534
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2535 static Sort( dataSource, sortColumns, directions, customSortingCallback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2536 const getCompareFunction = function ( a ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2537 // gets data type of column (not necessary if the Grid provides this information)
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2538 const dataType = typeof a;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2539 let compareFunction;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2540
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2541 switch ( dataType ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2542 case 'string':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2543 compareFunction = new Intl.Collator().compare;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2544 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2545 case 'number':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2546 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2547 return a - b;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2548 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2549 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2550 case 'boolean':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2551 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2552 if ( a === b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2553 return 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2554 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2555 else if ( a === false ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2556 return -1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2557 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2558 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2559 return 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2560 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2561 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2562 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2563 case 'object':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2564 if ( a instanceof Date ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2565 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2566 return a.getTime() - b.getTime();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2567 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2568 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2569 else if ( a instanceof JQX.Utilities.DateTime ||
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2570 a instanceof BigNumberNG ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2571 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2572 return a.compare( b );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2573 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2574 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2575 else if ( a instanceof JQX.Utilities.Complex || ( window.NIComplex && a instanceof window.NIComplex ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2576 const complexNumericProcessor = new JQX.Utilities.ComplexNumericProcessor();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2577
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2578 compareFunction = function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2579 return complexNumericProcessor.compareComplexNumbers( a, b );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2580 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2581 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2582
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2583 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2584 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2585
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2586 return compareFunction;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2587 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2588
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2589 if ( !dataSource || !( Array.isArray( dataSource ) ) || dataSource.length === 0 ||
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2590 !sortColumns || Array.isArray( sortColumns ) && sortColumns.length === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2591 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2592 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2593
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2594 if ( typeof sortColumns === 'string' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2595 sortColumns = [ sortColumns ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2596 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2597
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2598 const directionCoefficients = [],
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2599 compareFunctions = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2600
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2601 if ( directions === undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2602 directions = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2603 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2604
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2605 for ( let i = 0; i < sortColumns.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2606 if ( directions[ i ] === undefined || directions[ i ] === 'asc' || directions[ i ] === 'ascending' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2607 directionCoefficients[ i ] = 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2608 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2609 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2610 directionCoefficients[ i ] = -1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2611 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2612
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2613 compareFunctions[ i ] = getCompareFunction( dataSource[ 0 ][ sortColumns[ i ] ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2614 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2615
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2616 if ( customSortingCallback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2617 customSortingCallback( dataSource, sortColumns, directions, compareFunctions );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2618 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2619 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2620
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2621 const sortedData = dataSource.slice( 0 );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2622
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2623 sortedData.sort( function ( a, b ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2624 for ( let i = 0; i < sortColumns.length; i++ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2625 const result = compareFunctions[ i ]( a[ sortColumns[ i ] ], b[ sortColumns[ i ] ] );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2626
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2627 if ( result === 0 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2628 if ( sortColumns[ i + 1 ] ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2629 continue;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2630 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2631 else if ( a._index !== undefined ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2632 // makes sorting stable
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2633 return ( a._index - b._index ) * directionCoefficients[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2634 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2635
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2636 return 0;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2637 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2638
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2639 return result * directionCoefficients[ i ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2640 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2641 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2642
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2643 return sortedData;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2644 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2645 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2646
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2647 window.jqxDataSource = DataAdapter;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2648
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2649 class Ajax {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2650 constructor ( config, callback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2651 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2652
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2653 that.config = config;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2654 that.callback = callback;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2655
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2656 if ( config.autoFetch === false ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2657 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2658 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2659
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2660 that.call( config );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2661 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2662
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2663 call( config ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2664 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2665
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2666 if ( !config ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2667 config = that.config;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2668 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2669
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2670 let method = 'GET',
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2671 url = config.url,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2672 body = null,
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2673 async = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2674
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2675 if ( config.type ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2676 method = config.type;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2677 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2678
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2679 if ( config.data ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2680 if ( method === 'GET' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2681 url += '?';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2682
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2683 for ( let prop in config.data ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2684 if ( config.data.hasOwnProperty( prop ) ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2685 url += encodeURI( prop + '=' + config.data[ prop ] + '&' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2686 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2687 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2688
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2689 if ( url.charAt( url.length - 1 ) === '&' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2690 url = url.slice( 0, url.length - 1 );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2691 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2692 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2693 else if ( method === 'POST' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2694 body = JSON.stringify( config.data );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2695 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2696 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2697
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2698 if ( config && config.async === false && config.dataSourceType !== 'xlsx' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2699 async = false;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2700 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2701
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2702 if ( window.fetch !== undefined && async ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2703 that.ajaxFetch( config, method, url, body );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2704 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2705 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2706 that.ajaxXMLHttpRequest( config, method, url, body, async );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2707 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2708 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2709
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2710 ajaxFetch( config, method, url, body ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2711 // prepare fetch config
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2712 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2713 const fetchInit = { method: method };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2714 let parseMethod;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2715
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2716 switch ( config.dataSourceType ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2717 case 'json':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2718 parseMethod = 'json';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2719 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2720 case 'xlsx':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2721 parseMethod = 'arrayBuffer';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2722 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2723 default:
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2724 parseMethod = 'text';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2725 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2726
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2727 if ( config ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2728 if ( config.contentType ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2729 fetchInit.headers = new Headers( {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2730 'Content-Type': config.contentType
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2731 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2732 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2733 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2734
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2735 if ( body !== null ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2736 fetchInit.body = body;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2737 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2738
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2739 let status, fetchTimeout, timeouted;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2740
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2741 if ( config.timeout ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2742 fetchTimeout = setTimeout( function () {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2743 timeouted = true;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2744 }, config.timeout );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2745 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2746
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2747 if ( config.beforeSend ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2748 const beforeSendResult = config.beforeSend( fetchInit, config );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2749
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2750 if ( beforeSendResult === false ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2751 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2752 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2753 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2754
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2755 // fetch resource
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2756 fetch( url, fetchInit )
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2757 .then( function ( response ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2758 if ( timeouted ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2759 status = 408;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2760 throw new Error( 'timeout' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2761 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2762
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2763 if ( fetchTimeout ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2764 clearTimeout( fetchTimeout );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2765 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2766
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2767 status = response.status;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2768
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2769 if ( !response.ok ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2770 throw new Error( response.statusText );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2771 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2772
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2773 return response[ parseMethod ]();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2774 } )
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2775 .then( function ( data ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2776 if ( parseMethod === 'arrayBuffer' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2777 return JSZip.loadAsync( data ).then( function ( zipData ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2778 // "data" represents the whole XLSX/ZIP file
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2779 return zipData.files[ 'xl/worksheets/sheet1.xml' ].async( 'text' ).then( function ( sheet1 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2780 return zipData.files[ 'xl/sharedStrings.xml' ].async( 'text' ).then( function ( sharedStrings ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2781 const parsedData = that.parseXLSXData( sheet1, sharedStrings );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2782
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2783 that.ajaxComplete( config, parsedData, status );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2784 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2785 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2786 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2787 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2788 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2789 that.ajaxComplete( config, data, status );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2790 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2791 } )
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2792 .catch( function ( error ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2793 if ( error.message === 'JSZip is not defined' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2794 error.message = 'JSZip is not defined. Please include a reference to JSZip to be able to load data from XLSX files.';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2795 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2796
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2797 if ( config && config.loadError ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2798 config.loadError( status, error );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2799 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2800
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2801 if ( that.callback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2802 that.callback( error, status );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2803 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2804 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2805 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2806
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2807 ajaxXMLHttpRequest( config, method, url, body, async ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2808 const request = new XMLHttpRequest();
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2809 const that = this;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2810
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2811 request.open( method, url, async );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2812
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2813 request.ontimeout = function () {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2814 if ( config && config.loadError ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2815 config.loadError( 408, 'timeout' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2816 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2817 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2818
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2819 request.onload = function () {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2820 if ( request.readyState === 4 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2821 const status = request.status;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2822 let data = request.response;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2823
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2824 if ( status >= 200 && status <= 299 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2825 if ( config.dataSourceType === 'json' ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2826 data = JSON.parse( data );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2827 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2828
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2829 that.ajaxComplete( config, data, status );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2830 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2831 else if ( config && config.loadError ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2832 config.loadError( status, data );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2833 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2834 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2835 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2836
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2837 request.onerror = function () {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2838 if ( config && config.loadError ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2839 config.loadError( request.status, request.response );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2840 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2841 };
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2842
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2843 if ( config && config.contentType ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2844 request.setRequestHeader( 'Content-Type', config.contentType );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2845 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2846
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2847 if ( async && config.timeout ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2848 request.timeout = config.timeout;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2849 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2850
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2851 if ( config.beforeSend ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2852 const beforeSendResult = config.beforeSend( request, config );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2853
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2854 if ( beforeSendResult === false ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2855 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2856 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2857 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2858
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2859 request.send( body );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2860 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2861
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2862 ajaxComplete( config, data, status ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2863 if ( !config ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2864 return;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2865 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2866
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2867 if ( config.beforeLoadComplete ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2868 const processedData = config.beforeLoadComplete( data );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2869
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2870 if ( processedData ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2871 data = processedData;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2872 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2873 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2874
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2875 if ( config.loadComplete ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2876 config.loadComplete( data, status );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2877 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2878
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2879 if ( this.callback ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2880 this.callback( data, status );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2881 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2882 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2883
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2884 parseXLSXData( sheet1, sharedStrings ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2885 const parser = new DOMParser(),
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2886 sharedStringsDocument = parser.parseFromString( sharedStrings, 'text/xml' ),
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2887 sharedStringsContainers = Array.from( sharedStringsDocument.getElementsByTagName( 'si' ) ),
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2888 sharedStringsCollection = [],
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2889 sheet1Document = parser.parseFromString( sheet1, 'text/xml' ),
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2890 rows = Array.from( sheet1Document.getElementsByTagName( 'row' ) ),
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2891 parsedData = [];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2892
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2893 sharedStringsContainers.forEach( function ( si ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2894 let texts = si.getElementsByTagName( 't' );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2895
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2896 if ( texts.length === 1 ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2897 sharedStringsCollection.push( texts[ 0 ].innerHTML );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2898 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2899 else {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2900 let text = '';
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2901
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2902 texts = Array.from( texts );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2903 texts.forEach( function ( t ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2904 text += t.innerHTML;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2905 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2906 sharedStringsCollection.push( text );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2907 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2908 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2909
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2910 rows.forEach( function ( row ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2911 const rowObject = {},
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2912 cells = Array.from( row.getElementsByTagName( 'c' ) );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2913
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2914 cells.forEach( function ( cell/*, index*/ ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2915 const column = cell.getAttribute( 'r' ).match( /\D+/ )[ 0 ],
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2916 type = cell.getAttribute( 't' ),
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2917 xmlValue = cell.getElementsByTagName( 'v' )[ 0 ].innerHTML;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2918 let value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2919
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2920 switch ( type ) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2921 case 's':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2922 // string
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2923 value = sharedStringsCollection[ parseFloat( xmlValue ) ];
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2924 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2925 case 'b':
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2926 // boolean
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2927 value = parseFloat( xmlValue ) === 1;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2928 break;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2929 default:
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2930 // number or date
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2931 value = parseFloat( xmlValue );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2932 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2933
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2934 rowObject[ column ] = value;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2935 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2936
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2937 parsedData.push( rowObject );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2938 } );
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2939
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2940 return parsedData;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2941 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2942 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2943 if ($.jqx && $.jqx.dataAdapter) {
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2944 $.jqx.dataAdapter.Importer = DataAdapter;
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2945 }
67bf19c50fcc Upgraded jqwidgets from 9.0.0 to 12.0.1
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2946 })(jqxBaseFramework);

mercurial