survey-analytics 2.3.4 → 2.3.6
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/fesm/shared.mjs +59 -1
- package/fesm/shared.mjs.map +1 -1
- package/fesm/shared2.mjs +166 -65
- package/fesm/shared2.mjs.map +1 -1
- package/fesm/survey.analytics.core.mjs +2 -2
- package/fesm/survey.analytics.mjs +12 -5
- package/fesm/survey.analytics.mjs.map +1 -1
- package/fesm/survey.analytics.tabulator.mjs +17 -4
- package/fesm/survey.analytics.tabulator.mjs.map +1 -1
- package/package.json +2 -2
- package/survey-analytics-tabulator.types/analytics-localization/arabic.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/dutch.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/english.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/farsi.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/finnish.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/french.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/german.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/italian.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/japanese.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/norwegian.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/polish.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/portuguese.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/russian.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/spanish.d.ts +2 -0
- package/survey-analytics-tabulator.types/analytics-localization/swedish.d.ts +2 -0
- package/survey-analytics-tabulator.types/localizationManager.d.ts +2 -0
- package/survey-analytics-tabulator.types/tables/table.d.ts +6 -2
- package/survey-analytics.types/alternativeVizualizersWrapper.d.ts +9 -1
- package/survey-analytics.types/analytics-localization/arabic.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/dutch.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/english.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/farsi.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/finnish.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/french.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/german.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/italian.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/japanese.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/norwegian.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/polish.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/portuguese.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/russian.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/spanish.d.ts +2 -0
- package/survey-analytics.types/analytics-localization/swedish.d.ts +2 -0
- package/survey-analytics.types/localizationManager.d.ts +2 -0
- package/survey-analytics.types/selectBase.d.ts +2 -1
- package/survey-analytics.types/statistics-table.d.ts +11 -1
- package/survey-analytics.types/visualizationManager.d.ts +2 -2
- package/survey-analytics.types/visualizationPanel.d.ts +2 -1
- package/survey-analytics.types/visualizerBase.d.ts +14 -0
- package/survey.analytics.core.css +1 -1
- package/survey.analytics.core.js +256 -77
- 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 +266 -79
- 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.tabulator.css +1 -1
- package/survey.analytics.tabulator.js +74 -3
- package/survey.analytics.tabulator.js.map +1 -1
- package/survey.analytics.tabulator.min.css +1 -1
- 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.3.
|
|
2
|
+
* surveyjs - SurveyJS Dashboard library v2.3.6
|
|
3
3
|
* Copyright (c) 2015-2025 Devsoft Baltic OÜ - http://surveyjs.io/
|
|
4
4
|
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
|
|
5
5
|
*/
|
|
@@ -189,7 +189,7 @@ class VisualizationManager {
|
|
|
189
189
|
if (constructor) {
|
|
190
190
|
let visualizers = VisualizationManager.vizualizers[qType];
|
|
191
191
|
if (!!visualizers) {
|
|
192
|
-
const vDescr = visualizers.filter(v => v.ctor === constructor
|
|
192
|
+
const vDescr = visualizers.filter(v => v.ctor === constructor)[0];
|
|
193
193
|
if (!!vDescr) {
|
|
194
194
|
let index = visualizers.indexOf(vDescr);
|
|
195
195
|
if (index !== -1) {
|
|
@@ -212,10 +212,13 @@ class VisualizationManager {
|
|
|
212
212
|
}
|
|
213
213
|
/**
|
|
214
214
|
* Returns all visualizer constructors for a specified question type.
|
|
215
|
-
* @param
|
|
215
|
+
* @param visualizerType A question [type](https://surveyjs.io/form-library/documentation/api-reference/question#getType).
|
|
216
216
|
*/
|
|
217
|
-
static getVisualizersByType(
|
|
218
|
-
let vDescrs = VisualizationManager.vizualizers[
|
|
217
|
+
static getVisualizersByType(visualizerType, fallbackVisualizerType) {
|
|
218
|
+
let vDescrs = VisualizationManager.vizualizers[visualizerType];
|
|
219
|
+
if (!!fallbackVisualizerType && (!vDescrs || vDescrs.length == 0)) {
|
|
220
|
+
vDescrs = VisualizationManager.vizualizers[fallbackVisualizerType];
|
|
221
|
+
}
|
|
219
222
|
if (!vDescrs) {
|
|
220
223
|
if (VisualizationManager.defaultVisualizer.suppressVisualizerStubRendering) {
|
|
221
224
|
return [];
|
|
@@ -277,14 +280,14 @@ class VisualizerFactory {
|
|
|
277
280
|
* @param options An object with any custom properties you need within the visualizer.
|
|
278
281
|
*/
|
|
279
282
|
static createVisualizer(question, data, options) {
|
|
280
|
-
let type;
|
|
281
|
-
|
|
282
|
-
|
|
283
|
+
let type = question.getType();
|
|
284
|
+
let creators = [];
|
|
285
|
+
if (type === "text" && question.inputType) {
|
|
286
|
+
creators = VisualizationManager.getVisualizersByType(question.inputType, type);
|
|
283
287
|
}
|
|
284
288
|
else {
|
|
285
|
-
|
|
289
|
+
creators = VisualizationManager.getVisualizersByType(type);
|
|
286
290
|
}
|
|
287
|
-
var creators = VisualizationManager.getVisualizersByType(type);
|
|
288
291
|
var visualizers = creators.map((creator) => new creator(question, data, options));
|
|
289
292
|
if (visualizers.length > 1) {
|
|
290
293
|
const alternativesVisualizerConstructor = VisualizationManager.getAltVisualizerSelector();
|
|
@@ -474,6 +477,7 @@ class VisualizerBase {
|
|
|
474
477
|
this.footerContainer = undefined;
|
|
475
478
|
this._supportSelection = false;
|
|
476
479
|
this._chartAdapter = undefined;
|
|
480
|
+
this._footerIsCollapsed = undefined;
|
|
477
481
|
/**
|
|
478
482
|
* An event that is raised after the visualizer's content is rendered.
|
|
479
483
|
*
|
|
@@ -607,9 +611,9 @@ class VisualizerBase {
|
|
|
607
611
|
* Indicates whether users can select series points to cross-filter charts. To allow or disallow selection, set the [`allowSelection`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowSelection) property of the `IVisualizationPanelOptions` object in the [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel) constructor.
|
|
608
612
|
*/
|
|
609
613
|
get supportSelection() {
|
|
610
|
-
return (
|
|
614
|
+
return (this.options.allowSelection === undefined ||
|
|
611
615
|
this.options.allowSelection) &&
|
|
612
|
-
this._supportSelection
|
|
616
|
+
this._supportSelection;
|
|
613
617
|
}
|
|
614
618
|
getSeriesValues() {
|
|
615
619
|
return this.options.seriesValues || [];
|
|
@@ -855,26 +859,36 @@ class VisualizerBase {
|
|
|
855
859
|
destroyFooter(container) {
|
|
856
860
|
container.innerHTML = "";
|
|
857
861
|
}
|
|
862
|
+
get isFooterCollapsed() {
|
|
863
|
+
if (this._footerIsCollapsed === undefined) {
|
|
864
|
+
this._footerIsCollapsed = VisualizerBase.otherCommentCollapsed;
|
|
865
|
+
}
|
|
866
|
+
return this._footerIsCollapsed;
|
|
867
|
+
}
|
|
868
|
+
set isFooterCollapsed(newVal) {
|
|
869
|
+
this._footerIsCollapsed = newVal;
|
|
870
|
+
}
|
|
858
871
|
renderFooter(container) {
|
|
859
872
|
container.innerHTML = "";
|
|
860
873
|
if (this.hasFooter) {
|
|
861
874
|
const footerTitleElement = DocumentHelper.createElement("h4", "sa-visualizer__footer-title", { innerText: localization.getString("otherCommentTitle") });
|
|
862
875
|
container.appendChild(footerTitleElement);
|
|
863
876
|
const footerContentElement = DocumentHelper.createElement("div", "sa-visualizer__footer-content");
|
|
864
|
-
footerContentElement.style.display =
|
|
865
|
-
|
|
866
|
-
: "block";
|
|
877
|
+
footerContentElement.style.display = this.isFooterCollapsed ? "none" : "block";
|
|
878
|
+
const visibilityButtonText = localization.getString(this.isFooterCollapsed ? "showButton" : "hideButton");
|
|
867
879
|
const visibilityButton = DocumentHelper.createButton(() => {
|
|
868
880
|
if (footerContentElement.style.display === "none") {
|
|
869
881
|
footerContentElement.style.display = "block";
|
|
870
882
|
visibilityButton.innerText = localization.getString("hideButton");
|
|
883
|
+
this._footerIsCollapsed = false;
|
|
871
884
|
}
|
|
872
885
|
else {
|
|
873
886
|
footerContentElement.style.display = "none";
|
|
874
|
-
visibilityButton.innerText = localization.getString(
|
|
887
|
+
visibilityButton.innerText = localization.getString("showButton");
|
|
888
|
+
this._footerIsCollapsed = true;
|
|
875
889
|
}
|
|
876
890
|
this.footerVisualizer.invokeOnUpdate();
|
|
877
|
-
},
|
|
891
|
+
}, visibilityButtonText /*, "sa-toolbar__button--right"*/);
|
|
878
892
|
container.appendChild(visibilityButton);
|
|
879
893
|
container.appendChild(footerContentElement);
|
|
880
894
|
this.footerVisualizer.render(footerContentElement);
|
|
@@ -1072,6 +1086,7 @@ class VisualizerBase {
|
|
|
1072
1086
|
*
|
|
1073
1087
|
* > This method is overriden in classes descendant from `VisualizerBase`.
|
|
1074
1088
|
* @see setState
|
|
1089
|
+
* @see resetState
|
|
1075
1090
|
* @see onStateChanged
|
|
1076
1091
|
*/
|
|
1077
1092
|
getState() {
|
|
@@ -1084,10 +1099,21 @@ class VisualizerBase {
|
|
|
1084
1099
|
*
|
|
1085
1100
|
* > This method is overriden in classes descendant from `VisualizerBase`.
|
|
1086
1101
|
* @see getState
|
|
1102
|
+
* @see resetState
|
|
1087
1103
|
* @see onStateChanged
|
|
1088
1104
|
*/
|
|
1089
1105
|
setState(state) {
|
|
1090
1106
|
}
|
|
1107
|
+
/**
|
|
1108
|
+
* Resets the visualizer's state.
|
|
1109
|
+
*
|
|
1110
|
+
* > This method is overriden in classes descendant from `VisualizerBase`.
|
|
1111
|
+
* @see getState
|
|
1112
|
+
* @see setState
|
|
1113
|
+
* @see onStateChanged
|
|
1114
|
+
*/
|
|
1115
|
+
resetState() {
|
|
1116
|
+
}
|
|
1091
1117
|
/**
|
|
1092
1118
|
* Gets or sets the current locale.
|
|
1093
1119
|
*
|
|
@@ -1312,11 +1338,9 @@ class SelectBase extends VisualizerBase {
|
|
|
1312
1338
|
this.emptyAnswersBtn = undefined;
|
|
1313
1339
|
this.transposeDataBtn = undefined;
|
|
1314
1340
|
this.topNSelector = undefined;
|
|
1315
|
-
this._showPercentages = false;
|
|
1316
1341
|
this._showOnlyPercentages = false;
|
|
1317
|
-
this._percentagePrecision =
|
|
1342
|
+
this._percentagePrecision = 2;
|
|
1318
1343
|
this._answersOrder = "default";
|
|
1319
|
-
this._supportSelection = true;
|
|
1320
1344
|
this._hideEmptyAnswers = false;
|
|
1321
1345
|
this._topN = -1;
|
|
1322
1346
|
this.topNValues = [].concat(SelectBase.topNValuesDefaults);
|
|
@@ -1336,7 +1360,7 @@ class SelectBase extends VisualizerBase {
|
|
|
1336
1360
|
this.dataProvider.raiseDataChanged();
|
|
1337
1361
|
};
|
|
1338
1362
|
}
|
|
1339
|
-
this.
|
|
1363
|
+
this._supportSelection = true;
|
|
1340
1364
|
this._showOnlyPercentages = this.options.showOnlyPercentages === true;
|
|
1341
1365
|
if (this.options.percentagePrecision) {
|
|
1342
1366
|
this._percentagePrecision = this.options.percentagePrecision;
|
|
@@ -1579,11 +1603,22 @@ class SelectBase extends VisualizerBase {
|
|
|
1579
1603
|
this.refreshContent();
|
|
1580
1604
|
this.stateChanged("showOnlyPercentages", val);
|
|
1581
1605
|
}
|
|
1606
|
+
getShowPercentagesDefault() {
|
|
1607
|
+
if (this.options.showPercentages === undefined) {
|
|
1608
|
+
return ["pie", "doughnut"].indexOf(this.chartType) !== -1;
|
|
1609
|
+
}
|
|
1610
|
+
return this.options.showPercentages === true;
|
|
1611
|
+
}
|
|
1582
1612
|
/**
|
|
1583
1613
|
* Gets and sets whether chart should show values and percentages.
|
|
1584
1614
|
*/
|
|
1585
1615
|
get showPercentages() {
|
|
1586
|
-
|
|
1616
|
+
if (this._showPercentages !== undefined) {
|
|
1617
|
+
return this._showPercentages;
|
|
1618
|
+
}
|
|
1619
|
+
else {
|
|
1620
|
+
return this.getShowPercentagesDefault();
|
|
1621
|
+
}
|
|
1587
1622
|
}
|
|
1588
1623
|
set showPercentages(val) {
|
|
1589
1624
|
this._showPercentages = val;
|
|
@@ -1715,12 +1750,10 @@ class SelectBase extends VisualizerBase {
|
|
|
1715
1750
|
var percentages = [];
|
|
1716
1751
|
var percentagePrecision = this._percentagePrecision;
|
|
1717
1752
|
if (data.length < 2) {
|
|
1718
|
-
data.
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
return sum && (value / 100);
|
|
1723
|
-
});
|
|
1753
|
+
var sum = data[0].reduce((sum, val) => sum + val, 0);
|
|
1754
|
+
percentages[0] = data[0].map((val) => {
|
|
1755
|
+
var value = percentagePrecision ? +(val / sum * 100).toFixed(percentagePrecision) : Math.round(val / sum * 100);
|
|
1756
|
+
return sum && value;
|
|
1724
1757
|
});
|
|
1725
1758
|
}
|
|
1726
1759
|
else {
|
|
@@ -1732,7 +1765,7 @@ class SelectBase extends VisualizerBase {
|
|
|
1732
1765
|
for (var j = 0; j < data.length; j++) {
|
|
1733
1766
|
if (!Array.isArray(percentages[j]))
|
|
1734
1767
|
percentages[j] = [];
|
|
1735
|
-
var value = percentagePrecision ? +(
|
|
1768
|
+
var value = percentagePrecision ? +(data[j][i] / sum * 100).toFixed(percentagePrecision) : Math.round(data[j][i] / sum * 100);
|
|
1736
1769
|
percentages[j][i] = sum && value;
|
|
1737
1770
|
}
|
|
1738
1771
|
}
|
|
@@ -1764,14 +1797,13 @@ class SelectBase extends VisualizerBase {
|
|
|
1764
1797
|
let datasets = (yield this.getCalculatedValues());
|
|
1765
1798
|
let labels = this.getLabels();
|
|
1766
1799
|
let colors = this.getColors();
|
|
1767
|
-
var texts = this.showPercentages ? this.getPercentages(datasets) : datasets;
|
|
1768
1800
|
if (this.transposeData) {
|
|
1769
1801
|
datasets = this.transpose(datasets);
|
|
1770
|
-
texts = this.transpose(texts);
|
|
1771
1802
|
const temp = seriesLabels;
|
|
1772
1803
|
seriesLabels = labels;
|
|
1773
1804
|
labels = temp;
|
|
1774
1805
|
}
|
|
1806
|
+
var texts = this.showPercentages ? this.getPercentages(datasets) : datasets;
|
|
1775
1807
|
if (this.answersOrder == "asc" || this.answersOrder == "desc") {
|
|
1776
1808
|
var zippedArray = this.showPercentages
|
|
1777
1809
|
? DataHelper.zipArrays(labels, colors, texts[0])
|
|
@@ -1853,6 +1885,18 @@ class SelectBase extends VisualizerBase {
|
|
|
1853
1885
|
const selectedItem = ItemValue.getItemByValue(this.question.visibleChoices, state.filter);
|
|
1854
1886
|
this.setSelection(selectedItem !== null && selectedItem !== void 0 ? selectedItem : undefined);
|
|
1855
1887
|
}
|
|
1888
|
+
resetState() {
|
|
1889
|
+
super.resetState();
|
|
1890
|
+
// this._showPercentages = this.options.showPercentages === true;
|
|
1891
|
+
// this._showOnlyPercentages = this.options.showOnlyPercentages === true;
|
|
1892
|
+
// this._showMissingAnswers = this.isSupportMissingAnswers() && this.options.showMissingAnswers === true;
|
|
1893
|
+
// this._transposeData = this.options.transposeData || false;
|
|
1894
|
+
this._hideEmptyAnswers = this.options.hideEmptyAnswers === true;
|
|
1895
|
+
this._answersOrder = this.options.answersOrder || "default";
|
|
1896
|
+
this._topN = -1;
|
|
1897
|
+
this.chartType = this.chartTypes[0];
|
|
1898
|
+
this.setSelection(undefined);
|
|
1899
|
+
}
|
|
1856
1900
|
}
|
|
1857
1901
|
SelectBase.topNValuesDefaults = [-1, 5, 10, 20];
|
|
1858
1902
|
SelectBase._stateProperties = ["chartType", "answersOrder", "hideEmptyAnswers", "topN"];
|
|
@@ -1861,6 +1905,7 @@ VisualizationManager.registerVisualizer("radiogroup", SelectBase);
|
|
|
1861
1905
|
VisualizationManager.registerVisualizer("dropdown", SelectBase);
|
|
1862
1906
|
VisualizationManager.registerVisualizer("imagepicker", SelectBase);
|
|
1863
1907
|
VisualizationManager.registerVisualizer("tagbox", SelectBase);
|
|
1908
|
+
VisualizationManager.registerVisualizer("rating", SelectBase, 100);
|
|
1864
1909
|
|
|
1865
1910
|
class BooleanModel extends SelectBase {
|
|
1866
1911
|
constructor(question, data, options, name) {
|
|
@@ -2079,7 +2124,7 @@ HistogramModel.IntervalsCount = 10;
|
|
|
2079
2124
|
HistogramModel.UseIntervalsFrom = 10;
|
|
2080
2125
|
VisualizationManager.registerVisualizer("date", HistogramModel);
|
|
2081
2126
|
VisualizationManager.registerVisualizer("number", HistogramModel, 100);
|
|
2082
|
-
VisualizationManager.registerVisualizer("rating", HistogramModel,
|
|
2127
|
+
VisualizationManager.registerVisualizer("rating", HistogramModel, 300);
|
|
2083
2128
|
|
|
2084
2129
|
class Matrix extends SelectBase {
|
|
2085
2130
|
constructor(question, data, options, name) {
|
|
@@ -2672,12 +2717,15 @@ class AlternativeVisualizersWrapper extends VisualizerBase {
|
|
|
2672
2717
|
setVisualizer(type, quiet = false) {
|
|
2673
2718
|
const visualizerCandidate = this.visualizers.filter((v) => v.type === type)[0];
|
|
2674
2719
|
if (!!visualizerCandidate && visualizerCandidate !== this.visualizer) {
|
|
2720
|
+
let isFooterCollapsed;
|
|
2675
2721
|
if (!!this.visualizer) {
|
|
2722
|
+
isFooterCollapsed = this.visualizer.isFooterCollapsed;
|
|
2676
2723
|
this.visualizer.onStateChanged.remove(this.onVisualizerStateChangedCallback);
|
|
2677
2724
|
this.visualizer.onAfterRender.remove(this.onAfterVisualizerRenderCallback);
|
|
2678
2725
|
this.visualizer.destroy();
|
|
2679
2726
|
}
|
|
2680
2727
|
this.visualizer = visualizerCandidate;
|
|
2728
|
+
this.visualizer.isFooterCollapsed = isFooterCollapsed;
|
|
2681
2729
|
this.refresh();
|
|
2682
2730
|
this.visualizer.onAfterRender.add(this.onAfterVisualizerRenderCallback);
|
|
2683
2731
|
this.visualizer.onStateChanged.add(this.onVisualizerStateChangedCallback);
|
|
@@ -2723,6 +2771,7 @@ class AlternativeVisualizersWrapper extends VisualizerBase {
|
|
|
2723
2771
|
*
|
|
2724
2772
|
* > This method is overriden in descendant classes.
|
|
2725
2773
|
* @see setState
|
|
2774
|
+
* @see resetState
|
|
2726
2775
|
*/
|
|
2727
2776
|
getState() {
|
|
2728
2777
|
const currentVisualizerState = this.visualizer.getState();
|
|
@@ -2737,8 +2786,8 @@ class AlternativeVisualizersWrapper extends VisualizerBase {
|
|
|
2737
2786
|
/**
|
|
2738
2787
|
* Sets the visualizer's state.
|
|
2739
2788
|
*
|
|
2740
|
-
* > This method is overriden in descendant classes.
|
|
2741
2789
|
* @see getState
|
|
2790
|
+
* @see resetState
|
|
2742
2791
|
*/
|
|
2743
2792
|
setState(state) {
|
|
2744
2793
|
if (!!state.visualizer) {
|
|
@@ -2748,6 +2797,17 @@ class AlternativeVisualizersWrapper extends VisualizerBase {
|
|
|
2748
2797
|
this.visualizer.setState(state.state);
|
|
2749
2798
|
}
|
|
2750
2799
|
}
|
|
2800
|
+
/**
|
|
2801
|
+
* Resets the visualizer's state.
|
|
2802
|
+
*
|
|
2803
|
+
* @see getState
|
|
2804
|
+
* @see setState
|
|
2805
|
+
*/
|
|
2806
|
+
resetState() {
|
|
2807
|
+
super.resetState();
|
|
2808
|
+
this.visualizers.forEach(visualizer => visualizer.resetState());
|
|
2809
|
+
this.setVisualizer(this.visualizers[0].type, true);
|
|
2810
|
+
}
|
|
2751
2811
|
getValues() {
|
|
2752
2812
|
return this.visualizer.getValues();
|
|
2753
2813
|
}
|
|
@@ -9839,48 +9899,52 @@ class VisualizationPanel extends VisualizerBase {
|
|
|
9839
9899
|
return createCommercialLicenseLink();
|
|
9840
9900
|
});
|
|
9841
9901
|
}
|
|
9842
|
-
this.
|
|
9843
|
-
|
|
9844
|
-
|
|
9845
|
-
|
|
9846
|
-
|
|
9847
|
-
|
|
9848
|
-
|
|
9849
|
-
|
|
9850
|
-
|
|
9902
|
+
this._supportSelection = true;
|
|
9903
|
+
if (this.supportSelection !== false) {
|
|
9904
|
+
this.registerToolbarItem("resetFilter", () => {
|
|
9905
|
+
return DocumentHelper.createButton(() => {
|
|
9906
|
+
this.visualizers.forEach((visualizer) => {
|
|
9907
|
+
if (visualizer instanceof SelectBase || visualizer instanceof AlternativeVisualizersWrapper) {
|
|
9908
|
+
visualizer.setSelection(undefined);
|
|
9909
|
+
}
|
|
9910
|
+
});
|
|
9911
|
+
}, localization.getString("resetFilter"));
|
|
9912
|
+
}, 900);
|
|
9913
|
+
}
|
|
9851
9914
|
this.registerToolbarItem("addElement", (toolbar) => {
|
|
9852
9915
|
if (this.allowHideQuestions) {
|
|
9853
9916
|
let addElementSelector = undefined;
|
|
9854
9917
|
const addElementSelectorUpdater = (panel, options) => {
|
|
9855
9918
|
const hiddenElements = this.hiddenElements;
|
|
9919
|
+
const selectWrapper = DocumentHelper.createSelector([
|
|
9920
|
+
{
|
|
9921
|
+
name: undefined,
|
|
9922
|
+
displayName: localization.getString("addElement"),
|
|
9923
|
+
},
|
|
9924
|
+
]
|
|
9925
|
+
.concat(hiddenElements)
|
|
9926
|
+
.map((element) => {
|
|
9927
|
+
return {
|
|
9928
|
+
value: element.name,
|
|
9929
|
+
text: element.displayName,
|
|
9930
|
+
};
|
|
9931
|
+
}), (option) => false, (e) => {
|
|
9932
|
+
this.showElement(e.target.value);
|
|
9933
|
+
});
|
|
9934
|
+
if (addElementSelector) {
|
|
9935
|
+
toolbar.replaceChild(selectWrapper, addElementSelector);
|
|
9936
|
+
}
|
|
9937
|
+
addElementSelector = selectWrapper;
|
|
9856
9938
|
if (hiddenElements.length > 0) {
|
|
9857
|
-
|
|
9858
|
-
{
|
|
9859
|
-
name: undefined,
|
|
9860
|
-
displayName: localization.getString("addElement"),
|
|
9861
|
-
},
|
|
9862
|
-
]
|
|
9863
|
-
.concat(hiddenElements)
|
|
9864
|
-
.map((element) => {
|
|
9865
|
-
return {
|
|
9866
|
-
value: element.name,
|
|
9867
|
-
text: element.displayName,
|
|
9868
|
-
};
|
|
9869
|
-
}), (option) => false, (e) => {
|
|
9870
|
-
this.showElement(e.target.value);
|
|
9871
|
-
});
|
|
9872
|
-
(addElementSelector &&
|
|
9873
|
-
toolbar.replaceChild(selectWrapper, addElementSelector)) ||
|
|
9874
|
-
toolbar.appendChild(selectWrapper);
|
|
9875
|
-
addElementSelector = selectWrapper;
|
|
9939
|
+
addElementSelector.style.display = undefined;
|
|
9876
9940
|
}
|
|
9877
|
-
else {
|
|
9878
|
-
addElementSelector
|
|
9879
|
-
addElementSelector = undefined;
|
|
9941
|
+
else if (addElementSelector) {
|
|
9942
|
+
addElementSelector.style.display = "none";
|
|
9880
9943
|
}
|
|
9881
9944
|
};
|
|
9882
9945
|
addElementSelectorUpdater();
|
|
9883
9946
|
this.onVisibleElementsChanged.add(addElementSelectorUpdater);
|
|
9947
|
+
return addElementSelector;
|
|
9884
9948
|
}
|
|
9885
9949
|
return undefined;
|
|
9886
9950
|
});
|
|
@@ -10343,6 +10407,18 @@ class VisualizationPanel extends VisualizerBase {
|
|
|
10343
10407
|
}
|
|
10344
10408
|
this.refresh();
|
|
10345
10409
|
}
|
|
10410
|
+
resetState() {
|
|
10411
|
+
this._settingState = true;
|
|
10412
|
+
super.resetState();
|
|
10413
|
+
try {
|
|
10414
|
+
this.visualizers.forEach(visualizer => visualizer.resetState());
|
|
10415
|
+
this.locale = surveyLocalization.defaultLocale;
|
|
10416
|
+
}
|
|
10417
|
+
finally {
|
|
10418
|
+
this._settingState = false;
|
|
10419
|
+
}
|
|
10420
|
+
this.refresh();
|
|
10421
|
+
}
|
|
10346
10422
|
get permissions() {
|
|
10347
10423
|
return this._elements.map((element) => {
|
|
10348
10424
|
return {
|
|
@@ -12395,9 +12471,34 @@ class StatisticsTable extends SelectBase {
|
|
|
12395
12471
|
super.destroy();
|
|
12396
12472
|
}
|
|
12397
12473
|
}
|
|
12474
|
+
class StatisticsTableBoolean extends BooleanModel {
|
|
12475
|
+
constructor(question, data, options, name) {
|
|
12476
|
+
super(question, data, options, name || "options");
|
|
12477
|
+
this._statisticsTableAdapter = new StatisticsTableAdapter(this);
|
|
12478
|
+
this.showPercentages = true;
|
|
12479
|
+
}
|
|
12480
|
+
destroyContent(container) {
|
|
12481
|
+
this._statisticsTableAdapter.destroy(container);
|
|
12482
|
+
super.destroyContent(container);
|
|
12483
|
+
}
|
|
12484
|
+
renderContentAsync(container) {
|
|
12485
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
12486
|
+
const tableNode = DocumentHelper.createElement("div");
|
|
12487
|
+
yield this._statisticsTableAdapter.create(tableNode);
|
|
12488
|
+
container.innerHTML = "";
|
|
12489
|
+
container.appendChild(tableNode);
|
|
12490
|
+
return container;
|
|
12491
|
+
});
|
|
12492
|
+
}
|
|
12493
|
+
destroy() {
|
|
12494
|
+
this._statisticsTableAdapter.destroy(this.contentContainer);
|
|
12495
|
+
super.destroy();
|
|
12496
|
+
}
|
|
12497
|
+
}
|
|
12398
12498
|
VisualizationManager.registerVisualizer("radiogroup", StatisticsTable);
|
|
12399
12499
|
VisualizationManager.registerVisualizer("dropdown", StatisticsTable);
|
|
12400
12500
|
VisualizationManager.registerVisualizer("checkbox", StatisticsTable);
|
|
12501
|
+
VisualizationManager.registerVisualizer("boolean", StatisticsTableBoolean);
|
|
12401
12502
|
|
|
12402
12503
|
class NpsVisualizerWidget {
|
|
12403
12504
|
constructor(_model, _data) {
|
|
@@ -12526,5 +12627,5 @@ NpsVisualizer.DetractorScore = 6;
|
|
|
12526
12627
|
NpsVisualizer.PromoterScore = 9;
|
|
12527
12628
|
// VisualizationManager.registerVisualizer("rating", NpsVisualizer);
|
|
12528
12629
|
|
|
12529
|
-
export { AlternativeVisualizersWrapper as A, BooleanModel as B, DataProvider as D, HistogramModel as H, Matrix as M, NumberModel as N, PostponeHelper as P, RankingModel as R, SelectBase as S, TextTableAdapter as T, VisualizerFactory as V, WordCloudAdapter as W, __awaiter as _, VisualizerBase as a, VisualizationManager as b, VisualizationPanel as c, VisualizationPanelDynamic as d, VisualizationMatrixDynamic as e, VisualizationMatrixDropdown as f, WordCloud as g, hideEmptyAnswersInData as h, Text as i, StatisticsTableAdapter as j, StatisticsTable as k,
|
|
12630
|
+
export { AlternativeVisualizersWrapper as A, BooleanModel as B, DataProvider as D, HistogramModel as H, Matrix as M, NumberModel as N, PostponeHelper as P, RankingModel as R, SelectBase as S, TextTableAdapter as T, VisualizerFactory as V, WordCloudAdapter as W, __awaiter as _, VisualizerBase as a, VisualizationManager as b, VisualizationPanel as c, VisualizationPanelDynamic as d, VisualizationMatrixDynamic as e, VisualizationMatrixDropdown as f, WordCloud as g, hideEmptyAnswersInData as h, Text as i, StatisticsTableAdapter as j, StatisticsTable as k, StatisticsTableBoolean as l, NpsVisualizerWidget as m, NpsAdapter as n, NpsVisualizer as o, PivotModel as p, defaultStatisticsCalculator as q, textHelper as t };
|
|
12530
12631
|
//# sourceMappingURL=shared2.mjs.map
|