survey-analytics 2.5.18 → 2.5.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/fesm/shared.mjs +96 -68
- package/fesm/shared.mjs.map +1 -1
- package/fesm/shared2.mjs +69 -40
- package/fesm/shared2.mjs.map +1 -1
- package/fesm/survey.analytics.core.mjs +1 -1
- package/fesm/survey.analytics.mjs +1 -1
- package/fesm/survey.analytics.mongo.mjs +1 -1
- package/fesm/survey.analytics.tabulator.mjs +206 -5
- package/fesm/survey.analytics.tabulator.mjs.map +1 -1
- package/package.json +2 -2
- package/survey-analytics-tabulator.types/analytics-localization/arabic.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/dutch.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/farsi.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/finnish.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/french.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/german.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/italian.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/japanese.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/norwegian.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/polish.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/portuguese.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/russian.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/spanish.d.ts +1 -0
- package/survey-analytics-tabulator.types/analytics-localization/swedish.d.ts +1 -0
- package/survey-analytics-tabulator.types/tables/columnbuilder.d.ts +8 -2
- package/survey-analytics-tabulator.types/tables/columns.d.ts +11 -1
- package/survey-analytics-tabulator.types/tables/config.d.ts +2 -1
- package/survey-analytics-tabulator.types/tables/table.d.ts +8 -0
- package/survey-analytics-tabulator.types/tables/tabulator.d.ts +3 -0
- package/survey-analytics.types/analytics-localization/arabic.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/dutch.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/farsi.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/finnish.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/french.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/german.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/italian.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/japanese.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/norwegian.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/polish.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/portuguese.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/russian.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/spanish.d.ts +1 -0
- package/survey-analytics.types/analytics-localization/swedish.d.ts +1 -0
- package/survey-analytics.types/boolean.d.ts +1 -0
- package/survey-analytics.types/selectBase.d.ts +5 -1
- package/survey.analytics.core.css +1 -1
- package/survey.analytics.core.js +154 -95
- package/survey.analytics.core.js.map +1 -1
- package/survey.analytics.core.min.css +1 -1
- package/survey.analytics.core.min.js +1 -1
- package/survey.analytics.core.min.js.LICENSE.txt +1 -1
- package/survey.analytics.css +1 -1
- package/survey.analytics.js +154 -95
- package/survey.analytics.js.map +1 -1
- package/survey.analytics.min.css +1 -1
- package/survey.analytics.min.js +1 -1
- package/survey.analytics.min.js.LICENSE.txt +1 -1
- package/survey.analytics.mongo.js +1 -1
- package/survey.analytics.mongo.min.js.LICENSE.txt +1 -1
- package/survey.analytics.tabulator.css +39 -1
- package/survey.analytics.tabulator.css.map +1 -1
- package/survey.analytics.tabulator.js +337 -71
- package/survey.analytics.tabulator.js.map +1 -1
- package/survey.analytics.tabulator.min.css +2 -2
- package/survey.analytics.tabulator.min.js +1 -1
- package/survey.analytics.tabulator.min.js.LICENSE.txt +1 -1
package/fesm/shared2.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* surveyjs - SurveyJS Dashboard library v2.5.
|
|
2
|
+
* surveyjs - SurveyJS Dashboard library v2.5.19
|
|
3
3
|
* Copyright (c) 2015-2026 Devsoft Baltic OÜ - http://surveyjs.io/
|
|
4
4
|
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
|
|
5
5
|
*/
|
|
@@ -1386,6 +1386,33 @@ VisualizationManager.registerVisualizer("number", NumberModel, 200);
|
|
|
1386
1386
|
VisualizationManager.registerVisualizer("rating", NumberModel, 200);
|
|
1387
1387
|
VisualizationManager.registerVisualizer("expression", NumberModel);
|
|
1388
1388
|
|
|
1389
|
+
class FilterInfo {
|
|
1390
|
+
constructor(visualizer) {
|
|
1391
|
+
this._htmlElement = undefined;
|
|
1392
|
+
this.text = undefined;
|
|
1393
|
+
this._htmlElement = (DocumentHelper.createElement("div", "sa-question__filter"));
|
|
1394
|
+
this.text = DocumentHelper.createElement("span", "sa-question__filter-text");
|
|
1395
|
+
this._htmlElement.appendChild(this.text);
|
|
1396
|
+
const filterClear = DocumentHelper.createButton(() => {
|
|
1397
|
+
visualizer.setSelection(undefined);
|
|
1398
|
+
}, localization.getString("clearButton"));
|
|
1399
|
+
this._htmlElement.appendChild(filterClear);
|
|
1400
|
+
}
|
|
1401
|
+
get htmlElement() {
|
|
1402
|
+
return this._htmlElement;
|
|
1403
|
+
}
|
|
1404
|
+
update(selection) {
|
|
1405
|
+
if (selection !== undefined && selection.value !== undefined) {
|
|
1406
|
+
this._htmlElement.style.display = "inline-flex";
|
|
1407
|
+
this.text.innerText = localization.getString("filter") + ": [" + selection.text + "]";
|
|
1408
|
+
}
|
|
1409
|
+
else {
|
|
1410
|
+
this._htmlElement.style.display = "none";
|
|
1411
|
+
this.text.innerText = "";
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1415
|
+
|
|
1389
1416
|
function hideEmptyAnswersInData(answersData) {
|
|
1390
1417
|
const result = {
|
|
1391
1418
|
datasets: [],
|
|
@@ -1581,6 +1608,14 @@ class SelectBase extends VisualizerBase {
|
|
|
1581
1608
|
}
|
|
1582
1609
|
return this.missingAnswersBtn;
|
|
1583
1610
|
});
|
|
1611
|
+
this.registerToolbarItem("questionFilterInfo", () => {
|
|
1612
|
+
var _a;
|
|
1613
|
+
if (this.supportSelection) {
|
|
1614
|
+
this.filterInfo = new FilterInfo(this);
|
|
1615
|
+
this.filterInfo.update(this.selection);
|
|
1616
|
+
}
|
|
1617
|
+
return (_a = this.filterInfo) === null || _a === void 0 ? void 0 : _a.htmlElement;
|
|
1618
|
+
}, 900);
|
|
1584
1619
|
}
|
|
1585
1620
|
/**
|
|
1586
1621
|
* Chart type - current chart type.
|
|
@@ -1680,7 +1715,7 @@ class SelectBase extends VisualizerBase {
|
|
|
1680
1715
|
return resultValues.map((value) => ItemValue.getTextOrHtmlByValue(selectBaseQuestion.choices, value)).join(", ");
|
|
1681
1716
|
}
|
|
1682
1717
|
isSupportSoftUpdateContent() {
|
|
1683
|
-
return
|
|
1718
|
+
return !this._hideEmptyAnswers;
|
|
1684
1719
|
}
|
|
1685
1720
|
softUpdateContent() {
|
|
1686
1721
|
var _a;
|
|
@@ -1689,6 +1724,11 @@ class SelectBase extends VisualizerBase {
|
|
|
1689
1724
|
this._chartAdapter.update(chartNode);
|
|
1690
1725
|
}
|
|
1691
1726
|
}
|
|
1727
|
+
getSelectedItemByValue(value) {
|
|
1728
|
+
var _a;
|
|
1729
|
+
const choices = this.question.visibleChoices;
|
|
1730
|
+
return (_a = ItemValue.getItemByValue(choices, value)) !== null && _a !== void 0 ? _a : undefined;
|
|
1731
|
+
}
|
|
1692
1732
|
getSelectedItemByText(itemText) {
|
|
1693
1733
|
var _a;
|
|
1694
1734
|
if (this.question instanceof QuestionRatingModel) {
|
|
@@ -1703,6 +1743,19 @@ class SelectBase extends VisualizerBase {
|
|
|
1703
1743
|
return selBase.choices.filter((choice) => choice.text === itemText)[0];
|
|
1704
1744
|
}
|
|
1705
1745
|
}
|
|
1746
|
+
onDataChanged() {
|
|
1747
|
+
var _a;
|
|
1748
|
+
const filter = this.dataProvider.getFilters().find(f => f.field === this.name);
|
|
1749
|
+
const newFilterValue = filter === null || filter === void 0 ? void 0 : filter.value;
|
|
1750
|
+
const currentSelectionValue = (_a = this.selectedItem) === null || _a === void 0 ? void 0 : _a.value;
|
|
1751
|
+
if (newFilterValue !== currentSelectionValue) {
|
|
1752
|
+
const newSelectedItem = this.getSelectedItemByValue(newFilterValue);
|
|
1753
|
+
this.setSelection(newSelectedItem, true);
|
|
1754
|
+
this.updateToolbar();
|
|
1755
|
+
}
|
|
1756
|
+
super.onDataChanged();
|
|
1757
|
+
this.updateEmptyAnswersBtn();
|
|
1758
|
+
}
|
|
1706
1759
|
onSelectionChanged(item) {
|
|
1707
1760
|
var _a;
|
|
1708
1761
|
if (this.onDataItemSelected !== undefined) {
|
|
@@ -1710,10 +1763,14 @@ class SelectBase extends VisualizerBase {
|
|
|
1710
1763
|
}
|
|
1711
1764
|
this.stateChanged("filter", (_a = this.selectedItem) === null || _a === void 0 ? void 0 : _a.value);
|
|
1712
1765
|
}
|
|
1713
|
-
setSelection(item) {
|
|
1766
|
+
setSelection(item, quiet = false) {
|
|
1767
|
+
var _a, _b, _c;
|
|
1714
1768
|
if (this.selectedItem !== item) {
|
|
1715
1769
|
this.selectedItem = item;
|
|
1716
|
-
this.
|
|
1770
|
+
(_a = this.filterInfo) === null || _a === void 0 ? void 0 : _a.update({ value: (_b = this.selectedItem) === null || _b === void 0 ? void 0 : _b.value, text: (_c = this.selectedItem) === null || _c === void 0 ? void 0 : _c.text });
|
|
1771
|
+
if (!quiet) {
|
|
1772
|
+
this.onSelectionChanged(item);
|
|
1773
|
+
}
|
|
1717
1774
|
}
|
|
1718
1775
|
}
|
|
1719
1776
|
get selection() {
|
|
@@ -2001,8 +2058,8 @@ class SelectBase extends VisualizerBase {
|
|
|
2001
2058
|
this[propertyName] = state[propertyName];
|
|
2002
2059
|
}
|
|
2003
2060
|
});
|
|
2004
|
-
const selectedItem =
|
|
2005
|
-
this.setSelection(selectedItem
|
|
2061
|
+
const selectedItem = this.getSelectedItemByValue(state.filter);
|
|
2062
|
+
this.setSelection(selectedItem);
|
|
2006
2063
|
}
|
|
2007
2064
|
resetState() {
|
|
2008
2065
|
super.resetState();
|
|
@@ -2043,6 +2100,11 @@ class BooleanModel extends SelectBase {
|
|
|
2043
2100
|
get booleanQuestion() {
|
|
2044
2101
|
return this.question;
|
|
2045
2102
|
}
|
|
2103
|
+
getSelectedItemByValue(value) {
|
|
2104
|
+
const labels = this.getLabels();
|
|
2105
|
+
const values = this.getValues();
|
|
2106
|
+
return new ItemValue(value, labels[values.indexOf(value)]);
|
|
2107
|
+
}
|
|
2046
2108
|
getSelectedItemByText(itemText) {
|
|
2047
2109
|
const labels = this.getLabels();
|
|
2048
2110
|
const values = this.getValues();
|
|
@@ -3359,33 +3421,6 @@ class AlternativeVisualizersWrapper extends VisualizerBase {
|
|
|
3359
3421
|
}
|
|
3360
3422
|
VisualizationManager.registerAltVisualizerSelector(AlternativeVisualizersWrapper);
|
|
3361
3423
|
|
|
3362
|
-
class FilterInfo {
|
|
3363
|
-
constructor(visualizer) {
|
|
3364
|
-
this._htmlElement = undefined;
|
|
3365
|
-
this.text = undefined;
|
|
3366
|
-
this._htmlElement = (DocumentHelper.createElement("div", "sa-question__filter"));
|
|
3367
|
-
this.text = DocumentHelper.createElement("span", "sa-question__filter-text");
|
|
3368
|
-
this._htmlElement.appendChild(this.text);
|
|
3369
|
-
const filterClear = DocumentHelper.createButton(() => {
|
|
3370
|
-
visualizer.setSelection(undefined);
|
|
3371
|
-
}, localization.getString("clearButton"));
|
|
3372
|
-
this._htmlElement.appendChild(filterClear);
|
|
3373
|
-
}
|
|
3374
|
-
get htmlElement() {
|
|
3375
|
-
return this._htmlElement;
|
|
3376
|
-
}
|
|
3377
|
-
update(selection) {
|
|
3378
|
-
if (selection !== undefined && selection.value !== undefined) {
|
|
3379
|
-
this._htmlElement.style.display = "inline-flex";
|
|
3380
|
-
this.text.innerText = localization.getString("filter") + ": [" + selection.text + "]";
|
|
3381
|
-
}
|
|
3382
|
-
else {
|
|
3383
|
-
this._htmlElement.style.display = "none";
|
|
3384
|
-
this.text.innerText = "";
|
|
3385
|
-
}
|
|
3386
|
-
}
|
|
3387
|
-
}
|
|
3388
|
-
|
|
3389
3424
|
function getDefaultExportFromCjs (x) {
|
|
3390
3425
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
3391
3426
|
}
|
|
@@ -10689,14 +10724,8 @@ class VisualizationPanel extends VisualizerBase {
|
|
|
10689
10724
|
}
|
|
10690
10725
|
if (visualizer.supportSelection) {
|
|
10691
10726
|
const visualizerWithSelection = visualizer;
|
|
10692
|
-
let filterInfo = new FilterInfo(visualizerWithSelection);
|
|
10693
|
-
visualizer.registerToolbarItem("questionFilterInfo", () => {
|
|
10694
|
-
filterInfo.update(visualizerWithSelection.selection);
|
|
10695
|
-
return filterInfo.htmlElement;
|
|
10696
|
-
}, 900);
|
|
10697
10727
|
visualizerWithSelection.onDataItemSelected = (selectedValue, selectedText) => {
|
|
10698
|
-
|
|
10699
|
-
this.setFilter(question.name, selectedValue);
|
|
10728
|
+
this.setFilter(visualizer.name, selectedValue);
|
|
10700
10729
|
};
|
|
10701
10730
|
}
|
|
10702
10731
|
visualizer.onUpdate = () => this.layout();
|