cx 24.3.6 → 24.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data.js +46 -15
- package/dist/manifest.js +784 -784
- package/dist/ui.js +11 -9
- package/dist/widgets.js +38 -39
- package/package.json +1 -1
- package/src/data/Grouper.js +144 -120
- package/src/data/Grouper.spec.js +57 -42
- package/src/ui/adapter/GroupAdapter.js +141 -138
- package/src/widgets/grid/Grid.js +25 -10
package/dist/data.js
CHANGED
|
@@ -1503,17 +1503,28 @@ LastValue.prototype.result = null;
|
|
|
1503
1503
|
}
|
|
1504
1504
|
*/
|
|
1505
1505
|
|
|
1506
|
-
function transform(o, f) {
|
|
1507
|
-
var res = {};
|
|
1508
|
-
for (var k in o) res[k] = f(o[k], k);
|
|
1509
|
-
return res;
|
|
1510
|
-
}
|
|
1511
1506
|
var Grouper = /*#__PURE__*/ (function () {
|
|
1512
1507
|
function Grouper(key, aggregates, dataGetter, nameGetter) {
|
|
1513
|
-
this.keys = Object.keys(key).map(function (
|
|
1508
|
+
this.keys = Object.keys(key).map(function (keyField) {
|
|
1509
|
+
var isSimpleField = keyField.indexOf(".") === -1;
|
|
1510
|
+
var keySetter;
|
|
1511
|
+
if (isSimpleField) {
|
|
1512
|
+
// use simple field setter wherever possible
|
|
1513
|
+
keySetter = function set(result, value) {
|
|
1514
|
+
result[keyField] = value;
|
|
1515
|
+
return result;
|
|
1516
|
+
};
|
|
1517
|
+
} else {
|
|
1518
|
+
// for complex paths, use deep setter
|
|
1519
|
+
var binding = Binding.get(keyField);
|
|
1520
|
+
keySetter = function keySetter(result, value) {
|
|
1521
|
+
return binding.set(result, value);
|
|
1522
|
+
};
|
|
1523
|
+
}
|
|
1514
1524
|
return {
|
|
1515
|
-
name:
|
|
1516
|
-
|
|
1525
|
+
name: keyField,
|
|
1526
|
+
keySetter: keySetter,
|
|
1527
|
+
value: getSelector(key[keyField]),
|
|
1517
1528
|
};
|
|
1518
1529
|
});
|
|
1519
1530
|
if (nameGetter) this.nameGetter = getSelector(nameGetter);
|
|
@@ -1524,11 +1535,12 @@ var Grouper = /*#__PURE__*/ (function () {
|
|
|
1524
1535
|
};
|
|
1525
1536
|
this.aggregates =
|
|
1526
1537
|
aggregates &&
|
|
1527
|
-
|
|
1538
|
+
transformValues(aggregates, function (prop) {
|
|
1539
|
+
var _prop$weight;
|
|
1528
1540
|
if (!AggregateFunction[prop.type]) throw new Error("Unknown aggregate function '" + prop.type + "'.");
|
|
1529
1541
|
return {
|
|
1530
1542
|
value: getSelector(prop.value),
|
|
1531
|
-
weight: getSelector(prop.weight
|
|
1543
|
+
weight: getSelector((_prop$weight = prop.weight) != null ? _prop$weight : 1),
|
|
1532
1544
|
type: prop.type,
|
|
1533
1545
|
};
|
|
1534
1546
|
});
|
|
@@ -1545,7 +1557,7 @@ var Grouper = /*#__PURE__*/ (function () {
|
|
|
1545
1557
|
indexes: [],
|
|
1546
1558
|
aggregates:
|
|
1547
1559
|
this.aggregates &&
|
|
1548
|
-
|
|
1560
|
+
transformValues(this.aggregates, function (prop) {
|
|
1549
1561
|
var f = AggregateFunction[prop.type];
|
|
1550
1562
|
return {
|
|
1551
1563
|
processor: f(),
|
|
@@ -1590,16 +1602,18 @@ var Grouper = /*#__PURE__*/ (function () {
|
|
|
1590
1602
|
if (level == this.keys.length) {
|
|
1591
1603
|
var key = {};
|
|
1592
1604
|
this.keys.forEach(function (k, i) {
|
|
1593
|
-
|
|
1605
|
+
key = k.keySetter(key, path[i]);
|
|
1594
1606
|
});
|
|
1595
1607
|
results.push({
|
|
1596
1608
|
key: key,
|
|
1597
1609
|
name: g.name,
|
|
1598
1610
|
records: g.records,
|
|
1599
1611
|
indexes: g.indexes,
|
|
1600
|
-
aggregates:
|
|
1601
|
-
|
|
1602
|
-
|
|
1612
|
+
aggregates: resolveKeyPaths(
|
|
1613
|
+
transformValues(g.aggregates, function (p) {
|
|
1614
|
+
return p.processor.getResult();
|
|
1615
|
+
}),
|
|
1616
|
+
),
|
|
1603
1617
|
});
|
|
1604
1618
|
} else {
|
|
1605
1619
|
Object.keys(g).forEach(function (k) {
|
|
@@ -1616,6 +1630,23 @@ var Grouper = /*#__PURE__*/ (function () {
|
|
|
1616
1630
|
return Grouper;
|
|
1617
1631
|
})();
|
|
1618
1632
|
|
|
1633
|
+
// transform object values using a function
|
|
1634
|
+
function transformValues(o, f) {
|
|
1635
|
+
var res = {};
|
|
1636
|
+
for (var k in o) res[k] = f(o[k], k);
|
|
1637
|
+
return res;
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1640
|
+
// transform keys like 'a.b.c' into nested objects
|
|
1641
|
+
function resolveKeyPaths(o) {
|
|
1642
|
+
var res = {};
|
|
1643
|
+
for (var k in o) {
|
|
1644
|
+
if (k.indexOf(".") > 0) res = Binding.get(k).set(res, o[k]);
|
|
1645
|
+
else res[k] = o[k];
|
|
1646
|
+
}
|
|
1647
|
+
return res;
|
|
1648
|
+
}
|
|
1649
|
+
|
|
1619
1650
|
function defaultCompare(av, bv) {
|
|
1620
1651
|
if (av == null) {
|
|
1621
1652
|
if (bv == null) return 0;
|