survey-analytics 2.3.6 → 2.3.7

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.
Files changed (32) hide show
  1. package/fesm/shared.mjs +1 -1
  2. package/fesm/shared2.mjs +58 -29
  3. package/fesm/shared2.mjs.map +1 -1
  4. package/fesm/survey.analytics.core.mjs +2 -2
  5. package/fesm/survey.analytics.mjs +3 -3
  6. package/fesm/survey.analytics.tabulator.mjs +6 -3
  7. package/fesm/survey.analytics.tabulator.mjs.map +1 -1
  8. package/package.json +2 -2
  9. package/survey-analytics-tabulator.types/tables/table.d.ts +18 -5
  10. package/survey-analytics.types/entries/summary.core.d.ts +1 -0
  11. package/survey-analytics.types/visualizationComposite.d.ts +8 -0
  12. package/survey-analytics.types/visualizationMatrixDynamic.d.ts +1 -2
  13. package/survey-analytics.types/visualizationPanelDynamic.d.ts +1 -2
  14. package/survey-analytics.types/visualizerBase.d.ts +1 -1
  15. package/survey.analytics.core.css +1 -1
  16. package/survey.analytics.core.js +115 -62
  17. package/survey.analytics.core.js.map +1 -1
  18. package/survey.analytics.core.min.css +1 -1
  19. package/survey.analytics.core.min.js +1 -1
  20. package/survey.analytics.core.min.js.LICENSE.txt +1 -1
  21. package/survey.analytics.css +1 -1
  22. package/survey.analytics.js +116 -62
  23. package/survey.analytics.js.map +1 -1
  24. package/survey.analytics.min.css +1 -1
  25. package/survey.analytics.min.js +1 -1
  26. package/survey.analytics.min.js.LICENSE.txt +1 -1
  27. package/survey.analytics.tabulator.css +1 -1
  28. package/survey.analytics.tabulator.js +11 -4
  29. package/survey.analytics.tabulator.js.map +1 -1
  30. package/survey.analytics.tabulator.min.css +1 -1
  31. package/survey.analytics.tabulator.min.js +1 -1
  32. package/survey.analytics.tabulator.min.js.LICENSE.txt +1 -1
package/fesm/shared.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - SurveyJS Dashboard library v2.3.6
2
+ * surveyjs - SurveyJS Dashboard library v2.3.7
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
  */
package/fesm/shared2.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * surveyjs - SurveyJS Dashboard library v2.3.6
2
+ * surveyjs - SurveyJS Dashboard library v2.3.7
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
  */
6
6
 
7
7
  import { D as DocumentHelper, l as localization, g as createLoadingIndicator, b as DataHelper, e as createCommercialLicenseLink, f as svgTemplate, t as toPrecision } from './shared.mjs';
8
- import { Event, hasLicense, QuestionCommentModel, settings, ItemValue, surveyLocalization, IsTouch } from 'survey-core';
8
+ import { Event, QuestionCustomModel, QuestionCompositeModel, hasLicense, QuestionCommentModel, settings, ItemValue, surveyLocalization, IsTouch } from 'survey-core';
9
9
 
10
10
  /******************************************************************************
11
11
  Copyright (c) Microsoft Corporation.
@@ -282,16 +282,26 @@ class VisualizerFactory {
282
282
  static createVisualizer(question, data, options) {
283
283
  let type = question.getType();
284
284
  let creators = [];
285
+ let questionForCreator = question;
286
+ let optionsForCreator = Object.assign({}, options);
285
287
  if (type === "text" && question.inputType) {
286
288
  creators = VisualizationManager.getVisualizersByType(question.inputType, type);
287
289
  }
288
290
  else {
289
- creators = VisualizationManager.getVisualizersByType(type);
291
+ let fallbackType = undefined;
292
+ if (question instanceof QuestionCustomModel) {
293
+ fallbackType = question.getDynamicType();
294
+ // questionForCreator = question.contentQuestion;
295
+ }
296
+ else if (question instanceof QuestionCompositeModel) {
297
+ fallbackType = "composite";
298
+ }
299
+ creators = VisualizationManager.getVisualizersByType(type, fallbackType);
290
300
  }
291
- var visualizers = creators.map((creator) => new creator(question, data, options));
301
+ var visualizers = creators.map((creator) => new creator(questionForCreator, data, optionsForCreator));
292
302
  if (visualizers.length > 1) {
293
303
  const alternativesVisualizerConstructor = VisualizationManager.getAltVisualizerSelector();
294
- let visualizer = new alternativesVisualizerConstructor(visualizers, question, data, options);
304
+ let visualizer = new alternativesVisualizerConstructor(visualizers, questionForCreator, data, optionsForCreator);
295
305
  return visualizer;
296
306
  }
297
307
  return visualizers[0];
@@ -717,11 +727,26 @@ class VisualizerBase {
717
727
  * @param data A data array with survey results to be visualized.
718
728
  */
719
729
  updateData(data) {
730
+ const dataPath = this.options.dataPath;
731
+ let dataToAssign = data;
732
+ if (!!dataPath && Array.isArray(data)) {
733
+ dataToAssign = [];
734
+ data.forEach(dataItem => {
735
+ if (!!dataItem && dataItem[dataPath] !== undefined) {
736
+ if (Array.isArray(dataItem[dataPath])) {
737
+ dataToAssign = dataToAssign.concat(dataItem[dataPath]);
738
+ }
739
+ else {
740
+ dataToAssign.push(dataItem[dataPath]);
741
+ }
742
+ }
743
+ });
744
+ }
720
745
  if (!this.options.dataProvider) {
721
- this.dataProvider.data = data;
746
+ this.dataProvider.data = dataToAssign;
722
747
  }
723
748
  if (this.hasFooter) {
724
- this.footerVisualizer.updateData(data);
749
+ this.footerVisualizer.updateData(dataToAssign);
725
750
  }
726
751
  }
727
752
  invokeOnUpdate() {
@@ -2664,7 +2689,7 @@ class AlternativeVisualizersWrapper extends VisualizerBase {
2664
2689
  }
2665
2690
  }
2666
2691
  constructor(visualizers, question, data, options) {
2667
- super(question, data, options);
2692
+ super(question, data, options, "alternative");
2668
2693
  this.visualizers = visualizers;
2669
2694
  this.visualizersWithSelection = [];
2670
2695
  this.onAfterVisualizerRenderCallback = () => {
@@ -9886,7 +9911,7 @@ class VisualizationPanel extends VisualizerBase {
9886
9911
  options.layoutEngine ||
9887
9912
  new MuuriLayoutEngine(this.allowDynamicLayout, "." + questionLayoutedElementClassName, this.allowDragDrop);
9888
9913
  this._layoutEngine.onMoveCallback = (order) => this.reorderVisibleElements(order);
9889
- this.showToolbar = true;
9914
+ this.showToolbar = isRoot;
9890
9915
  if (this.options.survey) {
9891
9916
  localization.currentLocale = this.options.survey.locale;
9892
9917
  }
@@ -9894,6 +9919,7 @@ class VisualizationPanel extends VisualizerBase {
9894
9919
  this._elements = this.buildElements(questions);
9895
9920
  }
9896
9921
  this.buildVisualizers(questions);
9922
+ this.updateData(this.surveyData);
9897
9923
  if (!this.haveCommercialLicense && this.isRoot) {
9898
9924
  this.registerToolbarItem("commercialLicense", () => {
9899
9925
  return createCommercialLicenseLink();
@@ -10458,34 +10484,27 @@ class VisualizationPanelDynamic extends VisualizerBase {
10458
10484
  };
10459
10485
  this.loadingData = false;
10460
10486
  var options = Object.assign({}, options);
10487
+ options.allowHideQuestions = false;
10461
10488
  options.allowDynamicLayout = false;
10462
10489
  options.dataProvider = undefined;
10490
+ options.dataPath = this.dataNames[0];
10463
10491
  this._panelVisualizer = new VisualizationPanel(this.getQuestions(), [], options, undefined, false);
10464
10492
  this._panelVisualizer.onAfterRender.add(this.onAfterRenderPanelCallback);
10465
10493
  this.updateData(data);
10466
10494
  }
10495
+ get contentVisualizer() {
10496
+ return this._panelVisualizer;
10497
+ }
10467
10498
  setLocale(newLocale) {
10468
10499
  super.setLocale(newLocale);
10469
10500
  this._panelVisualizer.locale = newLocale;
10470
10501
  }
10471
- get type() {
10472
- return "panelDynamic";
10473
- }
10474
- updatePanelVisualizerData() {
10475
- let panelData = [];
10476
- this.data.forEach((dataItem) => {
10477
- if (dataItem[this.question.name] !== undefined) {
10478
- panelData = panelData.concat(dataItem[this.question.name]);
10479
- }
10480
- });
10481
- this._panelVisualizer.updateData(panelData);
10482
- }
10483
10502
  updateData(data) {
10484
10503
  super.updateData(data);
10485
- this.updatePanelVisualizerData();
10504
+ this._panelVisualizer.updateData(data);
10486
10505
  }
10487
10506
  onDataChanged() {
10488
- this.updatePanelVisualizerData();
10507
+ this._panelVisualizer.updateData(this.dataProvider.filteredData);
10489
10508
  super.onDataChanged();
10490
10509
  }
10491
10510
  getQuestions() {
@@ -10507,11 +10526,8 @@ class VisualizationPanelDynamic extends VisualizerBase {
10507
10526
  VisualizationManager.registerVisualizer("paneldynamic", VisualizationPanelDynamic);
10508
10527
 
10509
10528
  class VisualizationMatrixDynamic extends VisualizationPanelDynamic {
10510
- constructor(question, data, options) {
10511
- super(question, data, options);
10512
- }
10513
- get type() {
10514
- return "matrixDynamic";
10529
+ constructor(question, data, options, name) {
10530
+ super(question, data, options, name || "matrixDynamic");
10515
10531
  }
10516
10532
  getQuestions() {
10517
10533
  const matrixdynamic = this.question;
@@ -10619,6 +10635,19 @@ class VisualizationMatrixDropdown extends VisualizerBase {
10619
10635
  }
10620
10636
  VisualizationManager.registerVisualizer("matrixdropdown", VisualizationMatrixDropdown);
10621
10637
 
10638
+ class VisualizationComposite extends VisualizationPanelDynamic {
10639
+ constructor(question, data, options, name) {
10640
+ super(question, data, options, name || "composite");
10641
+ }
10642
+ getQuestions() {
10643
+ const matrixdynamic = this.question;
10644
+ const innerQuestions = [];
10645
+ matrixdynamic.contentPanel.addQuestionsToList(innerQuestions);
10646
+ return innerQuestions;
10647
+ }
10648
+ }
10649
+ VisualizationManager.registerVisualizer("composite", VisualizationComposite);
10650
+
10622
10651
  var stopWords$3 = [
10623
10652
  "...",
10624
10653
  "a",
@@ -12627,5 +12656,5 @@ NpsVisualizer.DetractorScore = 6;
12627
12656
  NpsVisualizer.PromoterScore = 9;
12628
12657
  // VisualizationManager.registerVisualizer("rating", NpsVisualizer);
12629
12658
 
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 };
12659
+ 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, VisualizationComposite as g, hideEmptyAnswersInData as h, WordCloud as i, Text as j, StatisticsTableAdapter as k, StatisticsTable as l, StatisticsTableBoolean as m, NpsVisualizerWidget as n, NpsAdapter as o, NpsVisualizer as p, PivotModel as q, defaultStatisticsCalculator as r, textHelper as t };
12631
12660
  //# sourceMappingURL=shared2.mjs.map