survey-analytics 1.12.54 → 1.12.55

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 (47) hide show
  1. package/fesm/shared.mjs +479 -15
  2. package/fesm/shared.mjs.map +1 -1
  3. package/fesm/shared2.mjs +783 -247
  4. package/fesm/shared2.mjs.map +1 -1
  5. package/fesm/survey.analytics.core.mjs +2 -2
  6. package/fesm/survey.analytics.mjs +27 -8
  7. package/fesm/survey.analytics.mjs.map +1 -1
  8. package/fesm/survey.analytics.mongo.mjs +221 -0
  9. package/fesm/survey.analytics.mongo.mjs.map +1 -0
  10. package/fesm/survey.analytics.tabulator.mjs +68 -26
  11. package/fesm/survey.analytics.tabulator.mjs.map +1 -1
  12. package/package.json +2 -2
  13. package/survey-analytics-tabulator.types/analytics-localization/finnish.d.ts +16 -0
  14. package/survey-analytics-tabulator.types/analytics-localization/swedish.d.ts +16 -0
  15. package/survey-analytics.types/analytics-localization/finnish.d.ts +16 -0
  16. package/survey-analytics.types/analytics-localization/swedish.d.ts +16 -0
  17. package/survey-analytics.types/entries/mongo.d.ts +1 -0
  18. package/survey-analytics.types/entries/summary.core.d.ts +1 -0
  19. package/survey-analytics.types/mongo/index.d.ts +16 -0
  20. package/survey-analytics.types/mongo/pipelines.d.ts +1 -0
  21. package/survey-analytics.types/mongo/result-transformers.d.ts +35 -0
  22. package/survey-analytics.types/statisticCalculators.d.ts +12 -2
  23. package/survey-analytics.types/visualizationComposite.d.ts +8 -0
  24. package/survey.analytics.core.css +1 -1
  25. package/survey.analytics.core.d.ts +1 -0
  26. package/survey.analytics.core.js +1365 -271
  27. package/survey.analytics.core.js.map +1 -1
  28. package/survey.analytics.core.min.css +1 -1
  29. package/survey.analytics.core.min.js +1 -1
  30. package/survey.analytics.core.min.js.LICENSE.txt +1 -1
  31. package/survey.analytics.css +1 -1
  32. package/survey.analytics.datatables.css +1 -1
  33. package/survey.analytics.datatables.js +1 -1
  34. package/survey.analytics.datatables.min.css +1 -1
  35. package/survey.analytics.datatables.min.js.LICENSE.txt +1 -1
  36. package/survey.analytics.js +1 -1
  37. package/survey.analytics.min.css +1 -1
  38. package/survey.analytics.min.js.LICENSE.txt +1 -1
  39. package/survey.analytics.mongo.d.ts +1 -0
  40. package/survey.analytics.mongo.js +359 -0
  41. package/survey.analytics.mongo.js.map +1 -0
  42. package/survey.analytics.mongo.min.js +2 -0
  43. package/survey.analytics.mongo.min.js.LICENSE.txt +5 -0
  44. package/survey.analytics.tabulator.css +1 -1
  45. package/survey.analytics.tabulator.js +1 -1
  46. package/survey.analytics.tabulator.min.css +1 -1
  47. package/survey.analytics.tabulator.min.js.LICENSE.txt +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - SurveyJS Dashboard library v2.3.6
2
+ * surveyjs - SurveyJS Dashboard library v2.3.11
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
  */
@@ -6859,7 +6859,7 @@ __webpack_require__.r(__webpack_exports__);
6859
6859
  var AlternativeVisualizersWrapper = /** @class */ (function (_super) {
6860
6860
  (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(AlternativeVisualizersWrapper, _super);
6861
6861
  function AlternativeVisualizersWrapper(visualizers, question, data, options) {
6862
- var _this = _super.call(this, question, data, options) || this;
6862
+ var _this = _super.call(this, question, data, options, "alternative") || this;
6863
6863
  _this.visualizers = visualizers;
6864
6864
  _this.visualizersWithSelection = [];
6865
6865
  _this.onAfterVisualizerRenderCallback = function () {
@@ -6885,14 +6885,16 @@ var AlternativeVisualizersWrapper = /** @class */ (function (_super) {
6885
6885
  _this.visualizersWithSelection.push(visualizer);
6886
6886
  }
6887
6887
  });
6888
- _this.registerToolbarItem("changeVisualizer", function () {
6889
- return _this.visualizerSelector = _utils_index__WEBPACK_IMPORTED_MODULE_3__.DocumentHelper.createSelector(_this.visualizers.map(function (visualizer) {
6890
- return {
6891
- value: visualizer.type,
6892
- text: _localizationManager__WEBPACK_IMPORTED_MODULE_2__.localization.getString("visualizer_" + visualizer.type),
6893
- };
6894
- }), function (option) { return _this.visualizer.type === option.value; }, function (e) { return _this.setVisualizer(e.target.value); });
6895
- }, 0);
6888
+ if (_this.options.allowChangeVisualizerType !== false) {
6889
+ _this.registerToolbarItem("changeVisualizer", function () {
6890
+ return _this.visualizerSelector = _utils_index__WEBPACK_IMPORTED_MODULE_3__.DocumentHelper.createSelector(_this.visualizers.map(function (visualizer) {
6891
+ return {
6892
+ value: visualizer.type,
6893
+ text: _localizationManager__WEBPACK_IMPORTED_MODULE_2__.localization.getString("visualizer_" + visualizer.type),
6894
+ };
6895
+ }), function (option) { return _this.visualizer.type === option.value; }, function (e) { return _this.setVisualizer(e.target.value); });
6896
+ }, 0);
6897
+ }
6896
6898
  _this.visualizer = visualizers[0];
6897
6899
  _this.visualizer.onAfterRender.add(_this.onAfterVisualizerRenderCallback);
6898
6900
  _this.visualizer.onStateChanged.add(_this.onVisualizerStateChangedCallback);
@@ -7228,7 +7230,39 @@ var arabicStrings = {
7228
7230
  // [Auto-translated] "Groups:"
7229
7231
  axisYAlternativeSelectorTitle: "المجموعات:",
7230
7232
  // [Auto-translated] "Not selected"
7231
- notSelected: "غير محدد"
7233
+ notSelected: "غير محدد",
7234
+ // [Auto-translated] "Default"
7235
+ intervalMode_default: "افتراضي",
7236
+ // [Auto-translated] "Decades"
7237
+ intervalMode_decades: "عقود",
7238
+ // [Auto-translated] "Years"
7239
+ intervalMode_years: "اعوام",
7240
+ // [Auto-translated] "Quarters"
7241
+ intervalMode_quarters: "ارباع",
7242
+ // [Auto-translated] "Months"
7243
+ intervalMode_months: "أشهر",
7244
+ // [Auto-translated] "Days"
7245
+ intervalMode_days: "أيام",
7246
+ // [Auto-translated] "Custom"
7247
+ intervalMode_custom: "تقليد",
7248
+ // [Auto-translated] "Auto"
7249
+ intervalMode_auto: "تلقائي",
7250
+ // [Auto-translated] "Intervals:"
7251
+ intervalModeTitle: "فترات:",
7252
+ // [Auto-translated] "Show individual values"
7253
+ noRunningTotals: "إظهار القيم الفردية",
7254
+ // [Auto-translated] "Show running totals"
7255
+ runningTotals: "إظهار الإجماليات الجارية",
7256
+ // [Auto-translated] "Compare periods"
7257
+ groupDateSeries: "مقارنة الفترات",
7258
+ // [Auto-translated] "View timeline"
7259
+ ungroupDateSeries: "عرض الجدول الزمني",
7260
+ // [Auto-translated] "None"
7261
+ noneAggregateText: "اي",
7262
+ // [Auto-translated] "Aggregate:"
7263
+ selectAggregateText: "تجميع:",
7264
+ // [Auto-translated] "Year ends with"
7265
+ groupedYearsAxisTitle: "ينتهي العام ب"
7232
7266
  };
7233
7267
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "ar", strings: arabicStrings, nativeName: "العربية" });
7234
7268
 
@@ -7412,7 +7446,39 @@ var dutchStrings = {
7412
7446
  // [Auto-translated] "Groups:"
7413
7447
  axisYAlternativeSelectorTitle: "Groepen:",
7414
7448
  // [Auto-translated] "Not selected"
7415
- notSelected: "Niet geselecteerd"
7449
+ notSelected: "Niet geselecteerd",
7450
+ // [Auto-translated] "Default"
7451
+ intervalMode_default: "Verstek",
7452
+ // [Auto-translated] "Decades"
7453
+ intervalMode_decades: "Decennia",
7454
+ // [Auto-translated] "Years"
7455
+ intervalMode_years: "Jaren",
7456
+ // [Auto-translated] "Quarters"
7457
+ intervalMode_quarters: "Vertrekken",
7458
+ // [Auto-translated] "Months"
7459
+ intervalMode_months: "Maanden",
7460
+ // [Auto-translated] "Days"
7461
+ intervalMode_days: "Dagen",
7462
+ // [Auto-translated] "Custom"
7463
+ intervalMode_custom: "Gewoonte",
7464
+ // [Auto-translated] "Auto"
7465
+ intervalMode_auto: "Auto",
7466
+ // [Auto-translated] "Intervals:"
7467
+ intervalModeTitle: "Intervallen:",
7468
+ // [Auto-translated] "Show individual values"
7469
+ noRunningTotals: "Toon individuele waarden",
7470
+ // [Auto-translated] "Show running totals"
7471
+ runningTotals: "Toon lopende totalen",
7472
+ // [Auto-translated] "Compare periods"
7473
+ groupDateSeries: "Vergelijk periodes",
7474
+ // [Auto-translated] "View timeline"
7475
+ ungroupDateSeries: "Tijdlijn bekijken",
7476
+ // [Auto-translated] "None"
7477
+ noneAggregateText: "Geen",
7478
+ // [Auto-translated] "Aggregate:"
7479
+ selectAggregateText: "Aggregaat:",
7480
+ // [Auto-translated] "Year ends with"
7481
+ groupedYearsAxisTitle: "Het jaar eindigt met"
7416
7482
  };
7417
7483
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "nl", strings: dutchStrings, nativeName: "Nederlands" });
7418
7484
 
@@ -7515,6 +7581,22 @@ var englishStrings = {
7515
7581
  axisXAlternativeSelectorTitle: "Segments:",
7516
7582
  axisYAlternativeSelectorTitle: "Groups:",
7517
7583
  notSelected: "Not selected",
7584
+ intervalMode_default: "Default",
7585
+ intervalMode_decades: "Decades",
7586
+ intervalMode_years: "Years",
7587
+ intervalMode_quarters: "Quarters",
7588
+ intervalMode_months: "Months",
7589
+ intervalMode_days: "Days",
7590
+ intervalMode_custom: "Custom",
7591
+ intervalMode_auto: "Auto",
7592
+ intervalModeTitle: "Intervals:",
7593
+ noRunningTotals: "Show individual values",
7594
+ runningTotals: "Show running totals",
7595
+ groupDateSeries: "Compare periods",
7596
+ ungroupDateSeries: "View timeline",
7597
+ noneAggregateText: "None",
7598
+ selectAggregateText: "Aggregate:",
7599
+ groupedYearsAxisTitle: "Year ends with",
7518
7600
  license: "To use the Dashboard library in your application, a <a href='https://surveyjs.io/licensing' target='_blank'>developer license</a> is required. If you have an active license, please <a href='https://surveyjs.io/remove-alert-banner' target='_blank'>set up your license key</a> and ensure you're using the <a href='https://surveyjs.io/stay-updated/release-notes' target='_blank'>latest version</a>.",
7519
7601
  license2: "This banner appears because your maintenance subscription for the Dashboard library expired on {date}. You may continue using <a href='https://surveyjs.io/stay-updated/release-notes' target='_blank'>all versions released up to that date</a>. To remove this banner in the latest version, please <a href='https://surveyjs.io/manage#license-manager' target='_blank'>renew your subscription</a> and <a href='https://surveyjs.io/remove-alert-banner' target='_blank'>set up a new license key</a>."
7520
7602
  };
@@ -7703,7 +7785,39 @@ var farsiStrings = {
7703
7785
  // [Auto-translated] "Groups:"
7704
7786
  axisYAlternativeSelectorTitle: "گروه:",
7705
7787
  // [Auto-translated] "Not selected"
7706
- notSelected: "انتخاب نشده است"
7788
+ notSelected: "انتخاب نشده است",
7789
+ // [Auto-translated] "Default"
7790
+ intervalMode_default: "پیش فرض",
7791
+ // [Auto-translated] "Decades"
7792
+ intervalMode_decades: "دهه",
7793
+ // [Auto-translated] "Years"
7794
+ intervalMode_years: "سال",
7795
+ // [Auto-translated] "Quarters"
7796
+ intervalMode_quarters: "چهارم",
7797
+ // [Auto-translated] "Months"
7798
+ intervalMode_months: "ماه‌ها",
7799
+ // [Auto-translated] "Days"
7800
+ intervalMode_days: "روز‌ها",
7801
+ // [Auto-translated] "Custom"
7802
+ intervalMode_custom: "سفارشی",
7803
+ // [Auto-translated] "Auto"
7804
+ intervalMode_auto: "خودکار",
7805
+ // [Auto-translated] "Intervals:"
7806
+ intervalModeTitle: "فواصل:",
7807
+ // [Auto-translated] "Show individual values"
7808
+ noRunningTotals: "نمایش ارزش های فردی",
7809
+ // [Auto-translated] "Show running totals"
7810
+ runningTotals: "نمایش مجموع در حال اجرا",
7811
+ // [Auto-translated] "Compare periods"
7812
+ groupDateSeries: "دوره ها را مقایسه کنید",
7813
+ // [Auto-translated] "View timeline"
7814
+ ungroupDateSeries: "مشاهده جدول زمانی",
7815
+ // [Auto-translated] "None"
7816
+ noneAggregateText: "هیچ کدام",
7817
+ // [Auto-translated] "Aggregate:"
7818
+ selectAggregateText: "مجموع:",
7819
+ // [Auto-translated] "Year ends with"
7820
+ groupedYearsAxisTitle: "سال به پایان می رسد با"
7707
7821
  };
7708
7822
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "fa", strings: farsiStrings, nativeName: "فارسی" });
7709
7823
 
@@ -7887,7 +8001,39 @@ var finnishStrings = {
7887
8001
  // [Auto-translated] "Groups:"
7888
8002
  axisYAlternativeSelectorTitle: "Ryhmät:",
7889
8003
  // [Auto-translated] "Not selected"
7890
- notSelected: "Ei valittu"
8004
+ notSelected: "Ei valittu",
8005
+ // [Auto-translated] "Default"
8006
+ intervalMode_default: "Laiminlyönti",
8007
+ // [Auto-translated] "Decades"
8008
+ intervalMode_decades: "Vuosikymmeniä",
8009
+ // [Auto-translated] "Years"
8010
+ intervalMode_years: "Vuosia",
8011
+ // [Auto-translated] "Quarters"
8012
+ intervalMode_quarters: "Neljäsosaa",
8013
+ // [Auto-translated] "Months"
8014
+ intervalMode_months: "Kuukautta",
8015
+ // [Auto-translated] "Days"
8016
+ intervalMode_days: "Päivää",
8017
+ // [Auto-translated] "Custom"
8018
+ intervalMode_custom: "Tapa",
8019
+ // [Auto-translated] "Auto"
8020
+ intervalMode_auto: "Auto",
8021
+ // [Auto-translated] "Intervals:"
8022
+ intervalModeTitle: "Välein:",
8023
+ // [Auto-translated] "Show individual values"
8024
+ noRunningTotals: "Näytä yksittäiset arvot",
8025
+ // [Auto-translated] "Show running totals"
8026
+ runningTotals: "Näytä juoksevat kokonaismäärät",
8027
+ // [Auto-translated] "Compare periods"
8028
+ groupDateSeries: "Vertaile kausia",
8029
+ // [Auto-translated] "View timeline"
8030
+ ungroupDateSeries: "Näytä aikajana",
8031
+ // [Auto-translated] "None"
8032
+ noneAggregateText: "Ei lainkaan",
8033
+ // [Auto-translated] "Aggregate:"
8034
+ selectAggregateText: "Aggregaatti:",
8035
+ // [Auto-translated] "Year ends with"
8036
+ groupedYearsAxisTitle: "Vuosi päättyy"
7891
8037
  };
7892
8038
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "fi", strings: finnishStrings, nativeName: "Suomi" });
7893
8039
 
@@ -8071,7 +8217,39 @@ var frenchStrings = {
8071
8217
  // [Auto-translated] "Groups:"
8072
8218
  axisYAlternativeSelectorTitle: "Groupe:",
8073
8219
  // [Auto-translated] "Not selected"
8074
- notSelected: "Non sélectionné"
8220
+ notSelected: "Non sélectionné",
8221
+ // [Auto-translated] "Default"
8222
+ intervalMode_default: "Faire défaut",
8223
+ // [Auto-translated] "Decades"
8224
+ intervalMode_decades: "Décennies",
8225
+ // [Auto-translated] "Years"
8226
+ intervalMode_years: "Années",
8227
+ // [Auto-translated] "Quarters"
8228
+ intervalMode_quarters: "Quartier",
8229
+ // [Auto-translated] "Months"
8230
+ intervalMode_months: "Mois",
8231
+ // [Auto-translated] "Days"
8232
+ intervalMode_days: "Jours",
8233
+ // [Auto-translated] "Custom"
8234
+ intervalMode_custom: "Coutume",
8235
+ // [Auto-translated] "Auto"
8236
+ intervalMode_auto: "Auto",
8237
+ // [Auto-translated] "Intervals:"
8238
+ intervalModeTitle: "Intervalles:",
8239
+ // [Auto-translated] "Show individual values"
8240
+ noRunningTotals: "Afficher les valeurs individuelles",
8241
+ // [Auto-translated] "Show running totals"
8242
+ runningTotals: "Afficher les totaux cumulés",
8243
+ // [Auto-translated] "Compare periods"
8244
+ groupDateSeries: "Comparer les périodes",
8245
+ // [Auto-translated] "View timeline"
8246
+ ungroupDateSeries: "Voir la chronologie",
8247
+ // [Auto-translated] "None"
8248
+ noneAggregateText: "Aucun",
8249
+ // [Auto-translated] "Aggregate:"
8250
+ selectAggregateText: "Agrégat:",
8251
+ // [Auto-translated] "Year ends with"
8252
+ groupedYearsAxisTitle: "L’exercice se termine avec"
8075
8253
  };
8076
8254
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "fr", strings: frenchStrings, nativeName: "Français" });
8077
8255
 
@@ -8255,7 +8433,39 @@ var germanStrings = {
8255
8433
  // [Auto-translated] "Groups:"
8256
8434
  axisYAlternativeSelectorTitle: "Gruppen:",
8257
8435
  // [Auto-translated] "Not selected"
8258
- notSelected: "Nicht ausgewählt"
8436
+ notSelected: "Nicht ausgewählt",
8437
+ // [Auto-translated] "Default"
8438
+ intervalMode_default: "Vorgabe",
8439
+ // [Auto-translated] "Decades"
8440
+ intervalMode_decades: "Dekaden",
8441
+ // [Auto-translated] "Years"
8442
+ intervalMode_years: "Jahre",
8443
+ // [Auto-translated] "Quarters"
8444
+ intervalMode_quarters: "Quartier",
8445
+ // [Auto-translated] "Months"
8446
+ intervalMode_months: "Monate",
8447
+ // [Auto-translated] "Days"
8448
+ intervalMode_days: "Tage",
8449
+ // [Auto-translated] "Custom"
8450
+ intervalMode_custom: "Gewohnheit",
8451
+ // [Auto-translated] "Auto"
8452
+ intervalMode_auto: "Auto",
8453
+ // [Auto-translated] "Intervals:"
8454
+ intervalModeTitle: "Intervalle:",
8455
+ // [Auto-translated] "Show individual values"
8456
+ noRunningTotals: "Einzelne Werte anzeigen",
8457
+ // [Auto-translated] "Show running totals"
8458
+ runningTotals: "Laufende Summen anzeigen",
8459
+ // [Auto-translated] "Compare periods"
8460
+ groupDateSeries: "Zeiträume vergleichen",
8461
+ // [Auto-translated] "View timeline"
8462
+ ungroupDateSeries: "Zeitleiste anzeigen",
8463
+ // [Auto-translated] "None"
8464
+ noneAggregateText: "Nichts",
8465
+ // [Auto-translated] "Aggregate:"
8466
+ selectAggregateText: "Aggregat:",
8467
+ // [Auto-translated] "Year ends with"
8468
+ groupedYearsAxisTitle: "Das Jahr endet mit"
8259
8469
  };
8260
8470
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "de", strings: germanStrings, nativeName: "Deutsch" });
8261
8471
 
@@ -8439,7 +8649,39 @@ var italianStrings = {
8439
8649
  // [Auto-translated] "Groups:"
8440
8650
  axisYAlternativeSelectorTitle: "Gruppi:",
8441
8651
  // [Auto-translated] "Not selected"
8442
- notSelected: "Non selezionato"
8652
+ notSelected: "Non selezionato",
8653
+ // [Auto-translated] "Default"
8654
+ intervalMode_default: "Default",
8655
+ // [Auto-translated] "Decades"
8656
+ intervalMode_decades: "Decenni",
8657
+ // [Auto-translated] "Years"
8658
+ intervalMode_years: "Anni",
8659
+ // [Auto-translated] "Quarters"
8660
+ intervalMode_quarters: "Quarti",
8661
+ // [Auto-translated] "Months"
8662
+ intervalMode_months: "Mesi",
8663
+ // [Auto-translated] "Days"
8664
+ intervalMode_days: "Giorni",
8665
+ // [Auto-translated] "Custom"
8666
+ intervalMode_custom: "Costume",
8667
+ // [Auto-translated] "Auto"
8668
+ intervalMode_auto: "Automatico",
8669
+ // [Auto-translated] "Intervals:"
8670
+ intervalModeTitle: "Intervalli:",
8671
+ // [Auto-translated] "Show individual values"
8672
+ noRunningTotals: "Mostra i singoli valori",
8673
+ // [Auto-translated] "Show running totals"
8674
+ runningTotals: "Mostra totali parziali",
8675
+ // [Auto-translated] "Compare periods"
8676
+ groupDateSeries: "Confronta i periodi",
8677
+ // [Auto-translated] "View timeline"
8678
+ ungroupDateSeries: "Visualizza la timeline",
8679
+ // [Auto-translated] "None"
8680
+ noneAggregateText: "Nessuno",
8681
+ // [Auto-translated] "Aggregate:"
8682
+ selectAggregateText: "Aggregato:",
8683
+ // [Auto-translated] "Year ends with"
8684
+ groupedYearsAxisTitle: "L'anno si chiude con"
8443
8685
  };
8444
8686
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "it", strings: italianStrings, nativeName: "Italiano" });
8445
8687
 
@@ -8623,7 +8865,39 @@ var japaneseStrings = {
8623
8865
  // [Auto-translated] "Groups:"
8624
8866
  axisYAlternativeSelectorTitle: "グループ:",
8625
8867
  // [Auto-translated] "Not selected"
8626
- notSelected: "選択されていない"
8868
+ notSelected: "選択されていない",
8869
+ // [Auto-translated] "Default"
8870
+ intervalMode_default: "デフォルト",
8871
+ // [Auto-translated] "Decades"
8872
+ intervalMode_decades: "数 十 年",
8873
+ // [Auto-translated] "Years"
8874
+ intervalMode_years: "月日",
8875
+ // [Auto-translated] "Quarters"
8876
+ intervalMode_quarters: "四半期",
8877
+ // [Auto-translated] "Months"
8878
+ intervalMode_months: "月",
8879
+ // [Auto-translated] "Days"
8880
+ intervalMode_days: "日",
8881
+ // [Auto-translated] "Custom"
8882
+ intervalMode_custom: "習慣",
8883
+ // [Auto-translated] "Auto"
8884
+ intervalMode_auto: "自動",
8885
+ // [Auto-translated] "Intervals:"
8886
+ intervalModeTitle: "間隔:",
8887
+ // [Auto-translated] "Show individual values"
8888
+ noRunningTotals: "個々の値を表示する",
8889
+ // [Auto-translated] "Show running totals"
8890
+ runningTotals: "累計を表示する",
8891
+ // [Auto-translated] "Compare periods"
8892
+ groupDateSeries: "期間の比較",
8893
+ // [Auto-translated] "View timeline"
8894
+ ungroupDateSeries: "タイムラインの表示",
8895
+ // [Auto-translated] "None"
8896
+ noneAggregateText: "何一つ",
8897
+ // [Auto-translated] "Aggregate:"
8898
+ selectAggregateText: "骨材:",
8899
+ // [Auto-translated] "Year ends with"
8900
+ groupedYearsAxisTitle: "年末は"
8627
8901
  };
8628
8902
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "ja", strings: japaneseStrings, nativeName: "日本語" });
8629
8903
 
@@ -8807,7 +9081,39 @@ var norwegianStrings = {
8807
9081
  // [Auto-translated] "Groups:"
8808
9082
  axisYAlternativeSelectorTitle: "Grupper:",
8809
9083
  // [Auto-translated] "Not selected"
8810
- notSelected: "Ikke valgt"
9084
+ notSelected: "Ikke valgt",
9085
+ // [Auto-translated] "Default"
9086
+ intervalMode_default: "Standard",
9087
+ // [Auto-translated] "Decades"
9088
+ intervalMode_decades: "Tiår",
9089
+ // [Auto-translated] "Years"
9090
+ intervalMode_years: "År",
9091
+ // [Auto-translated] "Quarters"
9092
+ intervalMode_quarters: "Kvartaler",
9093
+ // [Auto-translated] "Months"
9094
+ intervalMode_months: "Måneder",
9095
+ // [Auto-translated] "Days"
9096
+ intervalMode_days: "Dager",
9097
+ // [Auto-translated] "Custom"
9098
+ intervalMode_custom: "Skikk",
9099
+ // [Auto-translated] "Auto"
9100
+ intervalMode_auto: "Auto",
9101
+ // [Auto-translated] "Intervals:"
9102
+ intervalModeTitle: "Intervaller:",
9103
+ // [Auto-translated] "Show individual values"
9104
+ noRunningTotals: "Vis individuelle verdier",
9105
+ // [Auto-translated] "Show running totals"
9106
+ runningTotals: "Vis løpende totaler",
9107
+ // [Auto-translated] "Compare periods"
9108
+ groupDateSeries: "Sammenlign perioder",
9109
+ // [Auto-translated] "View timeline"
9110
+ ungroupDateSeries: "Vis tidslinje",
9111
+ // [Auto-translated] "None"
9112
+ noneAggregateText: "Ingen",
9113
+ // [Auto-translated] "Aggregate:"
9114
+ selectAggregateText: "Samlet:",
9115
+ // [Auto-translated] "Year ends with"
9116
+ groupedYearsAxisTitle: "Året avsluttes med"
8811
9117
  };
8812
9118
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "no", strings: norwegianStrings, nativeName: "Norsk" });
8813
9119
 
@@ -8991,7 +9297,39 @@ var plStrings = {
8991
9297
  // [Auto-translated] "Groups:"
8992
9298
  axisYAlternativeSelectorTitle: "Grupy:",
8993
9299
  // [Auto-translated] "Not selected"
8994
- notSelected: "Nie wybrano"
9300
+ notSelected: "Nie wybrano",
9301
+ // [Auto-translated] "Default"
9302
+ intervalMode_default: "Domyślny",
9303
+ // [Auto-translated] "Decades"
9304
+ intervalMode_decades: "Dziesięciolecia",
9305
+ // [Auto-translated] "Years"
9306
+ intervalMode_years: "Lata",
9307
+ // [Auto-translated] "Quarters"
9308
+ intervalMode_quarters: "Kwartałów",
9309
+ // [Auto-translated] "Months"
9310
+ intervalMode_months: "Miesiące",
9311
+ // [Auto-translated] "Days"
9312
+ intervalMode_days: "Dni",
9313
+ // [Auto-translated] "Custom"
9314
+ intervalMode_custom: "Zwyczaj",
9315
+ // [Auto-translated] "Auto"
9316
+ intervalMode_auto: "Automatycznie",
9317
+ // [Auto-translated] "Intervals:"
9318
+ intervalModeTitle: "Odstępach czasu:",
9319
+ // [Auto-translated] "Show individual values"
9320
+ noRunningTotals: "Pokaż poszczególne wartości",
9321
+ // [Auto-translated] "Show running totals"
9322
+ runningTotals: "Pokazywanie sum bieżących",
9323
+ // [Auto-translated] "Compare periods"
9324
+ groupDateSeries: "Porównywanie okresów",
9325
+ // [Auto-translated] "View timeline"
9326
+ ungroupDateSeries: "Wyświetl oś czasu",
9327
+ // [Auto-translated] "None"
9328
+ noneAggregateText: "Żaden",
9329
+ // [Auto-translated] "Aggregate:"
9330
+ selectAggregateText: "Kruszywo:",
9331
+ // [Auto-translated] "Year ends with"
9332
+ groupedYearsAxisTitle: "Rok kończy się na"
8995
9333
  };
8996
9334
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "pl", strings: plStrings, nativeName: "Polski" });
8997
9335
 
@@ -9175,7 +9513,39 @@ var portugueseStrings = {
9175
9513
  // [Auto-translated] "Groups:"
9176
9514
  axisYAlternativeSelectorTitle: "Grupos:",
9177
9515
  // [Auto-translated] "Not selected"
9178
- notSelected: "Não selecionado"
9516
+ notSelected: "Não selecionado",
9517
+ // [Auto-translated] "Default"
9518
+ intervalMode_default: "Inadimplência",
9519
+ // [Auto-translated] "Decades"
9520
+ intervalMode_decades: "Décadas",
9521
+ // [Auto-translated] "Years"
9522
+ intervalMode_years: "Anos",
9523
+ // [Auto-translated] "Quarters"
9524
+ intervalMode_quarters: "Quartos",
9525
+ // [Auto-translated] "Months"
9526
+ intervalMode_months: "Meses",
9527
+ // [Auto-translated] "Days"
9528
+ intervalMode_days: "Dias",
9529
+ // [Auto-translated] "Custom"
9530
+ intervalMode_custom: "Costume",
9531
+ // [Auto-translated] "Auto"
9532
+ intervalMode_auto: "Automático",
9533
+ // [Auto-translated] "Intervals:"
9534
+ intervalModeTitle: "Intervalos:",
9535
+ // [Auto-translated] "Show individual values"
9536
+ noRunningTotals: "Mostrar valores individuais",
9537
+ // [Auto-translated] "Show running totals"
9538
+ runningTotals: "Mostrar totais acumulados",
9539
+ // [Auto-translated] "Compare periods"
9540
+ groupDateSeries: "Comparar períodos",
9541
+ // [Auto-translated] "View timeline"
9542
+ ungroupDateSeries: "Ver linha do tempo",
9543
+ // [Auto-translated] "None"
9544
+ noneAggregateText: "Nenhum",
9545
+ // [Auto-translated] "Aggregate:"
9546
+ selectAggregateText: "Agregado:",
9547
+ // [Auto-translated] "Year ends with"
9548
+ groupedYearsAxisTitle: "O ano termina com"
9179
9549
  };
9180
9550
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "pt", strings: portugueseStrings, nativeName: "Português" });
9181
9551
 
@@ -9359,7 +9729,39 @@ var russianStrings = {
9359
9729
  // [Auto-translated] "Groups:"
9360
9730
  axisYAlternativeSelectorTitle: "Группы:",
9361
9731
  // [Auto-translated] "Not selected"
9362
- notSelected: "Не выбрано"
9732
+ notSelected: "Не выбрано",
9733
+ // [Auto-translated] "Default"
9734
+ intervalMode_default: "По умолчанию",
9735
+ // [Auto-translated] "Decades"
9736
+ intervalMode_decades: "Десятилетий",
9737
+ // [Auto-translated] "Years"
9738
+ intervalMode_years: "Годы",
9739
+ // [Auto-translated] "Quarters"
9740
+ intervalMode_quarters: "Квартира",
9741
+ // [Auto-translated] "Months"
9742
+ intervalMode_months: "Месяцы",
9743
+ // [Auto-translated] "Days"
9744
+ intervalMode_days: "Дни недели",
9745
+ // [Auto-translated] "Custom"
9746
+ intervalMode_custom: "Обычай",
9747
+ // [Auto-translated] "Auto"
9748
+ intervalMode_auto: "Авто",
9749
+ // [Auto-translated] "Intervals:"
9750
+ intervalModeTitle: "Интервалы:",
9751
+ // [Auto-translated] "Show individual values"
9752
+ noRunningTotals: "Отображение отдельных значений",
9753
+ // [Auto-translated] "Show running totals"
9754
+ runningTotals: "Показать промежуточные итоги",
9755
+ // [Auto-translated] "Compare periods"
9756
+ groupDateSeries: "Сравнение периодов",
9757
+ // [Auto-translated] "View timeline"
9758
+ ungroupDateSeries: "Просмотр временной шкалы",
9759
+ // [Auto-translated] "None"
9760
+ noneAggregateText: "Никакой",
9761
+ // [Auto-translated] "Aggregate:"
9762
+ selectAggregateText: "Совокупность:",
9763
+ // [Auto-translated] "Year ends with"
9764
+ groupedYearsAxisTitle: "Год заканчивается с"
9363
9765
  };
9364
9766
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "ru", strings: russianStrings, nativeName: "Русский" });
9365
9767
 
@@ -9543,7 +9945,39 @@ var spanishStrings = {
9543
9945
  // [Auto-translated] "Groups:"
9544
9946
  axisYAlternativeSelectorTitle: "Grupos:",
9545
9947
  // [Auto-translated] "Not selected"
9546
- notSelected: "No seleccionado"
9948
+ notSelected: "No seleccionado",
9949
+ // [Auto-translated] "Default"
9950
+ intervalMode_default: "Predeterminado",
9951
+ // [Auto-translated] "Decades"
9952
+ intervalMode_decades: "Décadas",
9953
+ // [Auto-translated] "Years"
9954
+ intervalMode_years: "Años",
9955
+ // [Auto-translated] "Quarters"
9956
+ intervalMode_quarters: "Alojamiento",
9957
+ // [Auto-translated] "Months"
9958
+ intervalMode_months: "Meses",
9959
+ // [Auto-translated] "Days"
9960
+ intervalMode_days: "Días",
9961
+ // [Auto-translated] "Custom"
9962
+ intervalMode_custom: "Costumbre",
9963
+ // [Auto-translated] "Auto"
9964
+ intervalMode_auto: "Automático",
9965
+ // [Auto-translated] "Intervals:"
9966
+ intervalModeTitle: "Intervalos:",
9967
+ // [Auto-translated] "Show individual values"
9968
+ noRunningTotals: "Mostrar valores individuales",
9969
+ // [Auto-translated] "Show running totals"
9970
+ runningTotals: "Mostrar totales acumulados",
9971
+ // [Auto-translated] "Compare periods"
9972
+ groupDateSeries: "Comparar períodos",
9973
+ // [Auto-translated] "View timeline"
9974
+ ungroupDateSeries: "Ver cronograma",
9975
+ // [Auto-translated] "None"
9976
+ noneAggregateText: "Ninguno",
9977
+ // [Auto-translated] "Aggregate:"
9978
+ selectAggregateText: "Agregado:",
9979
+ // [Auto-translated] "Year ends with"
9980
+ groupedYearsAxisTitle: "El año termina con"
9547
9981
  };
9548
9982
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "es", strings: spanishStrings, nativeName: "Español" });
9549
9983
 
@@ -9727,7 +10161,39 @@ var swedishStrings = {
9727
10161
  // [Auto-translated] "Groups:"
9728
10162
  axisYAlternativeSelectorTitle: "Grupper:",
9729
10163
  // [Auto-translated] "Not selected"
9730
- notSelected: "Inte valt"
10164
+ notSelected: "Inte valt",
10165
+ // [Auto-translated] "Default"
10166
+ intervalMode_default: "Standard",
10167
+ // [Auto-translated] "Decades"
10168
+ intervalMode_decades: "Årtionden",
10169
+ // [Auto-translated] "Years"
10170
+ intervalMode_years: "År",
10171
+ // [Auto-translated] "Quarters"
10172
+ intervalMode_quarters: "Bostad",
10173
+ // [Auto-translated] "Months"
10174
+ intervalMode_months: "Månader",
10175
+ // [Auto-translated] "Days"
10176
+ intervalMode_days: "Dagar",
10177
+ // [Auto-translated] "Custom"
10178
+ intervalMode_custom: "Sed",
10179
+ // [Auto-translated] "Auto"
10180
+ intervalMode_auto: "Bil",
10181
+ // [Auto-translated] "Intervals:"
10182
+ intervalModeTitle: "Mellanrum:",
10183
+ // [Auto-translated] "Show individual values"
10184
+ noRunningTotals: "Visa individuella värden",
10185
+ // [Auto-translated] "Show running totals"
10186
+ runningTotals: "Visa löpande totaler",
10187
+ // [Auto-translated] "Compare periods"
10188
+ groupDateSeries: "Jämför perioder",
10189
+ // [Auto-translated] "View timeline"
10190
+ ungroupDateSeries: "Visa tidslinjen",
10191
+ // [Auto-translated] "None"
10192
+ noneAggregateText: "Ingen",
10193
+ // [Auto-translated] "Aggregate:"
10194
+ selectAggregateText: "Aggregat:",
10195
+ // [Auto-translated] "Year ends with"
10196
+ groupedYearsAxisTitle: "Året slutar med"
9731
10197
  };
9732
10198
  (0,_localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale)({ localeCode: "sv", strings: swedishStrings, nativeName: "Svenska" });
9733
10199
 
@@ -9839,6 +10305,10 @@ var DataProvider = /** @class */ (function () {
9839
10305
  if (_data === void 0) { _data = []; }
9840
10306
  this._data = _data;
9841
10307
  this.filterValues = {};
10308
+ /**
10309
+ * Fires when data has been changed.
10310
+ */
10311
+ this.onFilterChanged = new survey_core__WEBPACK_IMPORTED_MODULE_0__.Event();
9842
10312
  /**
9843
10313
  * Fires when data has been changed.
9844
10314
  */
@@ -9885,13 +10355,17 @@ var DataProvider = /** @class */ (function () {
9885
10355
  var filterValueType = typeof filterValue;
9886
10356
  var questionValue = item[key];
9887
10357
  if (Array.isArray(questionValue)) {
9888
- if (filterValueType !== "object")
10358
+ if (filterValueType === "object") {
10359
+ return !questionArrayValueContainsValue(questionValue, filterValue);
10360
+ }
10361
+ else {
9889
10362
  return questionValue.indexOf(filterValue) == -1;
10363
+ }
9890
10364
  }
9891
10365
  if (typeof questionValue === "object") {
9892
10366
  if (filterValueType !== "object")
9893
10367
  return true;
9894
- return !questionContainsValue(questionValue, filterValue);
10368
+ return !questionValueContainsValue(questionValue, filterValue);
9895
10369
  }
9896
10370
  var seriesValue = item[DataProvider.seriesMarkerKey];
9897
10371
  if (!!seriesValue && filterValueType === "object") {
@@ -9927,16 +10401,38 @@ var DataProvider = /** @class */ (function () {
9927
10401
  var filterChanged = true;
9928
10402
  if (selectedValue !== undefined) {
9929
10403
  filterChanged = this.filterValues[questionName] !== selectedValue;
9930
- this.filterValues[questionName] = selectedValue;
10404
+ if (filterChanged) {
10405
+ this.filterValues[questionName] = selectedValue;
10406
+ }
9931
10407
  }
9932
10408
  else {
9933
10409
  filterChanged = this.filterValues[questionName] !== undefined;
9934
- delete this.filterValues[questionName];
10410
+ if (filterChanged) {
10411
+ delete this.filterValues[questionName];
10412
+ }
9935
10413
  }
9936
10414
  if (filterChanged) {
10415
+ this.raiseFilterChanged(questionName, selectedValue);
9937
10416
  this.raiseDataChanged();
9938
10417
  }
9939
10418
  };
10419
+ /**
10420
+ * Resets filter.
10421
+ */
10422
+ DataProvider.prototype.resetFilter = function () {
10423
+ var _this = this;
10424
+ if (Object.keys(this.filterValues).length === 0) {
10425
+ return;
10426
+ }
10427
+ Object.keys(this.filterValues).forEach(function (key) { return delete _this.filterValues[key]; });
10428
+ this.raiseFilterChanged();
10429
+ this.raiseDataChanged();
10430
+ };
10431
+ DataProvider.prototype.raiseFilterChanged = function (questionName, selectedValue) {
10432
+ if (!this.onFilterChanged.isEmpty) {
10433
+ this.onFilterChanged.fire(this, { questionName: questionName, selectedValue: selectedValue });
10434
+ }
10435
+ };
9940
10436
  DataProvider.prototype.raiseDataChanged = function (questionName) {
9941
10437
  this._filteredData = undefined;
9942
10438
  if (!this.onDataChanged.isEmpty) {
@@ -9947,11 +10443,33 @@ var DataProvider = /** @class */ (function () {
9947
10443
  var _this = this;
9948
10444
  return Object.keys(this.filterValues).map(function (key) { return ({ field: key, type: "=", value: _this.filterValues[key] }); });
9949
10445
  };
10446
+ DataProvider.prototype.fixDropdownData = function (dataNames) {
10447
+ (this.data || []).forEach(function (dataItem) {
10448
+ var rawDataItem = dataItem[dataNames[0]];
10449
+ if (!!rawDataItem && typeof rawDataItem === "object" && !Array.isArray(rawDataItem)) {
10450
+ var arrayData_1 = [];
10451
+ Object.keys(rawDataItem).forEach(function (key) {
10452
+ var nestedDataItem = Object.assign({}, rawDataItem[key]);
10453
+ nestedDataItem[DataProvider.seriesMarkerKey] = key;
10454
+ arrayData_1.push(nestedDataItem);
10455
+ });
10456
+ dataItem[dataNames[0]] = arrayData_1;
10457
+ }
10458
+ });
10459
+ };
9950
10460
  DataProvider.seriesMarkerKey = "__sa_series_name";
9951
10461
  return DataProvider;
9952
10462
  }());
9953
10463
 
9954
- function questionContainsValue(questionValue, filterValue) {
10464
+ function questionArrayValueContainsValue(questionValues, filterValue) {
10465
+ for (var i = 0; i < questionValues.length; i++) {
10466
+ if (questionValueContainsValue(questionValues[i], filterValue)) {
10467
+ return true;
10468
+ }
10469
+ }
10470
+ return false;
10471
+ }
10472
+ function questionValueContainsValue(questionValue, filterValue) {
9955
10473
  var questionValueKeys = Object.keys(questionValue);
9956
10474
  var filterValueKeys = Object.keys(filterValue);
9957
10475
  if (filterValueKeys.length > questionValueKeys.length)
@@ -10027,7 +10545,9 @@ var FilterInfo = /** @class */ (function () {
10027
10545
  "use strict";
10028
10546
  __webpack_require__.r(__webpack_exports__);
10029
10547
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10030
- /* harmony export */ HistogramModel: () => (/* binding */ HistogramModel)
10548
+ /* harmony export */ HistogramModel: () => (/* binding */ HistogramModel),
10549
+ /* harmony export */ getBestIntervalMode: () => (/* binding */ getBestIntervalMode),
10550
+ /* harmony export */ intervalCalculators: () => (/* binding */ intervalCalculators)
10031
10551
  /* harmony export */ });
10032
10552
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./src/utils/helpers.ts");
10033
10553
  /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! survey-core */ "survey-core");
@@ -10036,12 +10556,154 @@ __webpack_require__.r(__webpack_exports__);
10036
10556
  /* harmony import */ var _selectBase__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./selectBase */ "./src/selectBase.ts");
10037
10557
  /* harmony import */ var _visualizationManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./visualizationManager */ "./src/visualizationManager.ts");
10038
10558
  /* harmony import */ var _statisticCalculators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./statisticCalculators */ "./src/statisticCalculators.ts");
10559
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils */ "./src/utils/index.ts");
10560
+ /* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./localizationManager */ "./src/localizationManager.ts");
10561
+
10562
+
10039
10563
 
10040
10564
 
10041
10565
 
10042
10566
 
10043
10567
 
10044
10568
 
10569
+ function getQuarter(date) {
10570
+ switch (Math.floor(date.getMonth() / 3) + 1) {
10571
+ case 1: return "I";
10572
+ case 2: return "II";
10573
+ case 3: return "III";
10574
+ case 4: return "IV";
10575
+ }
10576
+ }
10577
+ function getBestIntervalMode(min, max) {
10578
+ var start = new Date(min);
10579
+ var end = new Date(max);
10580
+ var totalMonths = (end.getFullYear() - start.getFullYear()) * 12 + (end.getMonth() - start.getMonth());
10581
+ if (totalMonths > 10 * 12)
10582
+ return "decades";
10583
+ if (totalMonths > 2 * 12)
10584
+ return "years";
10585
+ if (totalMonths > 1 * 12)
10586
+ return "quarters";
10587
+ if (totalMonths > 4)
10588
+ return "months";
10589
+ return "days";
10590
+ }
10591
+ var intervalCalculators = {
10592
+ decades: function (min, max) {
10593
+ var intervals = [];
10594
+ var start = new Date(min);
10595
+ start.setFullYear(Math.floor(start.getFullYear() / 10) * 10);
10596
+ start.setMonth(0);
10597
+ start.setDate(1);
10598
+ start.setHours(0, 0, 0, 0);
10599
+ var startYear = start.getFullYear();
10600
+ var end = new Date(max);
10601
+ var endYear = end.getFullYear();
10602
+ while (startYear <= endYear) {
10603
+ var intervalStart = new Date(startYear, 0, 1);
10604
+ var intervalEnd = new Date(startYear + 10, 0, 1);
10605
+ intervals.push({
10606
+ start: intervalStart.getTime(),
10607
+ end: intervalEnd.getTime(),
10608
+ label: "" + startYear + "s"
10609
+ });
10610
+ startYear += 10;
10611
+ }
10612
+ return intervals;
10613
+ },
10614
+ years: function (min, max) {
10615
+ var intervals = [];
10616
+ var start = new Date(min);
10617
+ start.setMonth(0);
10618
+ start.setDate(1);
10619
+ start.setHours(0, 0, 0, 0);
10620
+ var startYear = start.getFullYear();
10621
+ var end = new Date(max);
10622
+ var endYear = end.getFullYear();
10623
+ while (startYear <= endYear) {
10624
+ var intervalStart = new Date(startYear, 0, 1);
10625
+ var intervalEnd = new Date(startYear + 1, 0, 1);
10626
+ intervals.push({
10627
+ start: intervalStart.getTime(),
10628
+ end: intervalEnd.getTime(),
10629
+ label: "" + startYear
10630
+ });
10631
+ startYear++;
10632
+ }
10633
+ return intervals;
10634
+ },
10635
+ months: function (min, max) {
10636
+ var intervals = [];
10637
+ var start = new Date(min);
10638
+ start.setDate(1);
10639
+ start.setHours(0, 0, 0, 0);
10640
+ var startYear = start.getFullYear();
10641
+ var startMonth = start.getMonth();
10642
+ var end = new Date(max);
10643
+ var endYear = end.getFullYear();
10644
+ var endMonth = end.getMonth();
10645
+ while (startYear < endYear || (startYear === endYear && startMonth <= endMonth)) {
10646
+ var intervalStart = new Date(startYear, startMonth, 1);
10647
+ var intervalEnd = new Date(startYear, startMonth + 1, 1);
10648
+ intervals.push({
10649
+ start: intervalStart.getTime(),
10650
+ end: intervalEnd.getTime(),
10651
+ label: intervalStart.toLocaleDateString(undefined, { year: "numeric", month: "short" })
10652
+ });
10653
+ startMonth++;
10654
+ if (startMonth >= 12) {
10655
+ startMonth = 0;
10656
+ startYear++;
10657
+ }
10658
+ }
10659
+ return intervals;
10660
+ },
10661
+ quarters: function (min, max) {
10662
+ var intervals = [];
10663
+ var start = new Date(min);
10664
+ start.setDate(1);
10665
+ start.setHours(0, 0, 0, 0);
10666
+ var startYear = start.getFullYear();
10667
+ var startMonth = start.getMonth();
10668
+ var end = new Date(max);
10669
+ var endYear = end.getFullYear();
10670
+ var endMonth = end.getMonth();
10671
+ while (startYear < endYear || (startYear === endYear && startMonth <= endMonth)) {
10672
+ var intervalStart = new Date(startYear, startMonth, 1);
10673
+ var intervalEnd = new Date(startYear, startMonth + 3, 1);
10674
+ intervals.push({
10675
+ start: intervalStart.getTime(),
10676
+ end: intervalEnd.getTime(),
10677
+ label: getQuarter(intervalStart) + " " + intervalStart.getFullYear().toString()
10678
+ });
10679
+ startMonth += 3;
10680
+ if (startMonth >= 12) {
10681
+ startMonth = startMonth % 12;
10682
+ startYear++;
10683
+ }
10684
+ }
10685
+ return intervals;
10686
+ },
10687
+ days: function (min, max) {
10688
+ var intervals = [];
10689
+ var start = new Date(min);
10690
+ start.setHours(0, 0, 0, 0);
10691
+ var end = new Date(max);
10692
+ end.setHours(0, 0, 0, 0);
10693
+ while (start <= end) {
10694
+ var intervalStart = new Date(start);
10695
+ var intervalEnd = new Date(start);
10696
+ intervalEnd.setDate(intervalEnd.getDate() + 1);
10697
+ intervals.push({
10698
+ start: intervalStart.getTime(),
10699
+ end: intervalEnd.getTime(),
10700
+ label: intervalStart.toLocaleDateString()
10701
+ });
10702
+ start.setDate(start.getDate() + 1);
10703
+ }
10704
+ return intervals;
10705
+ }
10706
+ };
10045
10707
  var HistogramModel = /** @class */ (function (_super) {
10046
10708
  (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(HistogramModel, _super);
10047
10709
  function HistogramModel(question, data, options, name) {
@@ -10051,6 +10713,14 @@ var HistogramModel = /** @class */ (function (_super) {
10051
10713
  _this._continuousData = undefined;
10052
10714
  _this._cachedIntervals = undefined;
10053
10715
  _this._intervalPrecision = 2;
10716
+ _this.showRunningTotalsBtn = undefined;
10717
+ _this.showGroupedBtn = undefined;
10718
+ _this.changeIntervalsModeSelector = undefined;
10719
+ _this.aggregateDataNameSelector = undefined;
10720
+ _this.intervalModes = ["auto", "decades", "years", "quarters", "months", "days"];
10721
+ _this._showRunningTotals = false;
10722
+ _this._showGrouped = false;
10723
+ _this._aggregateDataName = "";
10054
10724
  _this._transposeData = false;
10055
10725
  if (_this.options.intervalPrecision !== undefined) {
10056
10726
  _this._intervalPrecision = _this.options.intervalPrecision;
@@ -10062,8 +10732,63 @@ var HistogramModel = /** @class */ (function (_super) {
10062
10732
  else {
10063
10733
  _this.valueType = "number";
10064
10734
  }
10735
+ _this._intervalsMode = _this.valueType === "date" ? "auto" : "default";
10736
+ if (_this.allowChangeIntervals) {
10737
+ _this.registerToolbarItem("changeIntervalsMode", function () {
10738
+ _this.changeIntervalsModeSelector = _utils__WEBPACK_IMPORTED_MODULE_6__.DocumentHelper.createSelector(_this.intervalModes.map(function (intervalModeValue) {
10739
+ return {
10740
+ value: intervalModeValue,
10741
+ text: _localizationManager__WEBPACK_IMPORTED_MODULE_7__.localization.getString("intervalMode_" + intervalModeValue),
10742
+ };
10743
+ }), function (option) { return _this.intervalsMode === option.value; }, function (e) {
10744
+ _this.intervalsMode = e.target.value;
10745
+ }, _localizationManager__WEBPACK_IMPORTED_MODULE_7__.localization.getString("intervalModeTitle"));
10746
+ return _this.changeIntervalsModeSelector;
10747
+ });
10748
+ }
10749
+ if (_this.possibleAggregateDataNames.length > 0) {
10750
+ _this.registerToolbarItem("aggregateDataName", function () {
10751
+ var choices = _this.possibleAggregateDataNames.map(function (dataName) {
10752
+ return typeof dataName === "string" ? { value: dataName, text: dataName } : dataName;
10753
+ });
10754
+ choices.unshift({ value: "", text: _localizationManager__WEBPACK_IMPORTED_MODULE_7__.localization.getString("noneAggregateText") }),
10755
+ _this.aggregateDataNameSelector = _utils__WEBPACK_IMPORTED_MODULE_6__.DocumentHelper.createSelector(choices, function (option) { return _this.aggregateDataName === option.value; }, function (e) {
10756
+ _this.aggregateDataName = e.target.value;
10757
+ }, _localizationManager__WEBPACK_IMPORTED_MODULE_7__.localization.getString("selectAggregateText"));
10758
+ _this.updateAggregateDataNameSelector();
10759
+ return _this.aggregateDataNameSelector;
10760
+ });
10761
+ }
10762
+ if (_this.allowChangeIntervals && _this.options.allowRunningTotals) {
10763
+ _this.registerToolbarItem("showRunningTotals", function () {
10764
+ _this.showRunningTotalsBtn = _utils__WEBPACK_IMPORTED_MODULE_6__.DocumentHelper.createButton(function () {
10765
+ _this.showRunningTotals = !_this.showRunningTotals;
10766
+ });
10767
+ _this.updateShowRunningTotalsBtn();
10768
+ return _this.showRunningTotalsBtn;
10769
+ });
10770
+ }
10771
+ if (_this.allowChangeIntervals && _this.options.allowCompareDatePeriods) {
10772
+ _this.registerToolbarItem("showGrouped", function () {
10773
+ _this.showGroupedBtn = _utils__WEBPACK_IMPORTED_MODULE_6__.DocumentHelper.createButton(function () {
10774
+ _this.showGrouped = !_this.showGrouped;
10775
+ });
10776
+ _this.updateShowGroupedBtn();
10777
+ return _this.showGroupedBtn;
10778
+ });
10779
+ }
10065
10780
  return _this;
10066
10781
  }
10782
+ HistogramModel.prototype.updateIntervalsModeSelector = function () {
10783
+ if (!!this.changeIntervalsModeSelector) {
10784
+ this.changeIntervalsModeSelector.getElementsByTagName("select")[0].value = this.intervalsMode;
10785
+ }
10786
+ };
10787
+ HistogramModel.prototype.updateAggregateDataNameSelector = function () {
10788
+ if (!!this.aggregateDataNameSelector) {
10789
+ this.aggregateDataNameSelector.getElementsByTagName("select")[0].value = this.aggregateDataName;
10790
+ }
10791
+ };
10067
10792
  HistogramModel.prototype.reset = function () {
10068
10793
  this._continuousData = undefined;
10069
10794
  this._cachedValues = undefined;
@@ -10105,6 +10830,17 @@ var HistogramModel = /** @class */ (function (_super) {
10105
10830
  this.reset();
10106
10831
  _super.prototype.onDataChanged.call(this);
10107
10832
  };
10833
+ HistogramModel.prototype.onSelectionChanged = function (item) {
10834
+ if (item !== undefined && this.onDataItemSelected !== undefined) {
10835
+ if (this.valueType === "date") {
10836
+ var currIntervalCalueIndex = this.intervalModes.indexOf(this.intervalsMode);
10837
+ if (currIntervalCalueIndex > 0 && currIntervalCalueIndex < this.intervalModes.length - 1) {
10838
+ this.intervalsMode = this.intervalModes[currIntervalCalueIndex + 1];
10839
+ }
10840
+ }
10841
+ }
10842
+ _super.prototype.onSelectionChanged.call(this, item);
10843
+ };
10108
10844
  HistogramModel.prototype.getContinuousValues = function () {
10109
10845
  var _this = this;
10110
10846
  if (this._cachedValues === undefined) {
@@ -10115,20 +10851,26 @@ var HistogramModel = /** @class */ (function (_super) {
10115
10851
  this._continuousData = {};
10116
10852
  series.forEach(function (seriesValue) { return _this._continuousData[seriesValue] = []; });
10117
10853
  var hash_1 = {};
10118
- this.data.forEach(function (dataItem) {
10119
- var answerData = dataItem[_this.name];
10120
- if (answerData !== undefined) {
10121
- var seriesValue = dataItem[_dataProvider__WEBPACK_IMPORTED_MODULE_2__.DataProvider.seriesMarkerKey] || "";
10122
- // TODO: _continuousData should be sorted in order to speed-up statistics calculation in the getData function
10123
- _this._continuousData[seriesValue].push(_this.getContinuousValue(answerData));
10124
- hash_1[answerData] = answerData;
10125
- }
10854
+ this.data.forEach(function (dataRow) {
10855
+ var nestedDataRows = (0,_statisticCalculators__WEBPACK_IMPORTED_MODULE_5__.getNestedDataRows)(dataRow, _this);
10856
+ nestedDataRows.forEach(function (nestedDataRow) {
10857
+ var answerData = nestedDataRow[_this.dataNames[0]];
10858
+ if (answerData !== undefined) {
10859
+ var seriesValue = nestedDataRow[_dataProvider__WEBPACK_IMPORTED_MODULE_2__.DataProvider.seriesMarkerKey] || "";
10860
+ // TODO: _continuousData should be sorted in order to speed-up statistics calculation in the getData function
10861
+ _this._continuousData[seriesValue].push({ continuous: _this.getContinuousValue(answerData), row: nestedDataRow });
10862
+ hash_1[answerData] = answerData;
10863
+ }
10864
+ });
10126
10865
  });
10127
- this._cachedValues = Object.keys(hash_1).map(function (key) { return ({ original: hash_1[key], continuous: _this.getContinuousValue(key) }); });
10866
+ this._cachedValues = Object.keys(hash_1).map(function (key) { return ({ original: hash_1[key], continuous: _this.getContinuousValue(key), row: hash_1[key].row }); });
10128
10867
  this._cachedValues.sort(function (a, b) { return a.continuous - b.continuous; });
10129
10868
  }
10130
10869
  return this._cachedValues;
10131
10870
  };
10871
+ HistogramModel.prototype.isSupportSoftUpdateContent = function () {
10872
+ return false;
10873
+ };
10132
10874
  HistogramModel.prototype.isSupportMissingAnswers = function () {
10133
10875
  return false;
10134
10876
  };
@@ -10185,18 +10927,24 @@ var HistogramModel = /** @class */ (function (_super) {
10185
10927
  if (continuousValues.length) {
10186
10928
  var start = continuousValues[0].continuous;
10187
10929
  var end = continuousValues[continuousValues.length - 1].continuous;
10188
- var intervalsCount = HistogramModel.IntervalsCount;
10189
- var delta = (end - start) / intervalsCount;
10190
- for (var i = 0; i < intervalsCount; ++i) {
10191
- var next = start + delta;
10192
- var istart = this.toPrecision(start);
10193
- var inext = this.toPrecision(next);
10194
- this._cachedIntervals.push({
10195
- start: istart,
10196
- end: i < intervalsCount - 1 ? inext : inext + delta / 100,
10197
- label: "" + this.getString(istart) + "-" + this.getString(inext)
10198
- });
10199
- start = next;
10930
+ var intervalsMode = this.intervalsMode === "auto" ? getBestIntervalMode(start, end) : this.intervalsMode;
10931
+ if (intervalCalculators[intervalsMode] !== undefined) {
10932
+ this._cachedIntervals = intervalCalculators[intervalsMode](start, end);
10933
+ }
10934
+ else {
10935
+ var intervalsCount = HistogramModel.IntervalsCount;
10936
+ var delta = (end - start) / intervalsCount;
10937
+ for (var i = 0; i < intervalsCount; ++i) {
10938
+ var next = start + delta;
10939
+ var istart = this.toPrecision(start);
10940
+ var inext = this.toPrecision(next);
10941
+ this._cachedIntervals.push({
10942
+ start: istart,
10943
+ end: i < intervalsCount - 1 ? inext : inext + delta / 100,
10944
+ label: "" + this.getString(istart) + "-" + this.getString(inext)
10945
+ });
10946
+ start = next;
10947
+ }
10200
10948
  }
10201
10949
  }
10202
10950
  }
@@ -10205,12 +10953,241 @@ var HistogramModel = /** @class */ (function (_super) {
10205
10953
  enumerable: false,
10206
10954
  configurable: true
10207
10955
  });
10956
+ Object.defineProperty(HistogramModel.prototype, "intervalsMode", {
10957
+ get: function () {
10958
+ if (this.hasCustomIntervals)
10959
+ return "custom";
10960
+ return this._intervalsMode;
10961
+ },
10962
+ set: function (val) {
10963
+ if (this.allowChangeIntervals && this._intervalsMode !== val) {
10964
+ this._intervalsMode = val;
10965
+ if (!this.canShowGroupedDateSeries) {
10966
+ this._showGrouped = false;
10967
+ }
10968
+ this.updateIntervalsModeSelector();
10969
+ this.updateShowGroupedBtn();
10970
+ this.onDataChanged();
10971
+ }
10972
+ },
10973
+ enumerable: false,
10974
+ configurable: true
10975
+ });
10976
+ Object.defineProperty(HistogramModel.prototype, "allowChangeIntervals", {
10977
+ get: function () {
10978
+ return this.valueType === "date" && !this.hasCustomIntervals && this.options.allowChangeIntervals === true;
10979
+ },
10980
+ enumerable: false,
10981
+ configurable: true
10982
+ });
10983
+ Object.defineProperty(HistogramModel.prototype, "showRunningTotals", {
10984
+ get: function () {
10985
+ return this._showRunningTotals;
10986
+ },
10987
+ set: function (val) {
10988
+ this._showRunningTotals = val;
10989
+ this.updateShowRunningTotalsBtn();
10990
+ this.stateChanged("showRunningTotals", val);
10991
+ this.refreshContent();
10992
+ },
10993
+ enumerable: false,
10994
+ configurable: true
10995
+ });
10996
+ HistogramModel.prototype.updateShowRunningTotalsBtn = function () {
10997
+ if (!!this.showRunningTotalsBtn) {
10998
+ this.showRunningTotalsBtn.innerText = this.showRunningTotals
10999
+ ? _localizationManager__WEBPACK_IMPORTED_MODULE_7__.localization.getString("noRunningTotals")
11000
+ : _localizationManager__WEBPACK_IMPORTED_MODULE_7__.localization.getString("runningTotals");
11001
+ }
11002
+ };
11003
+ Object.defineProperty(HistogramModel.prototype, "showGrouped", {
11004
+ get: function () {
11005
+ return this._showGrouped;
11006
+ },
11007
+ set: function (val) {
11008
+ this._showGrouped = val;
11009
+ this.updateShowGroupedBtn();
11010
+ this.stateChanged("showGrouped", val);
11011
+ this.refreshContent();
11012
+ },
11013
+ enumerable: false,
11014
+ configurable: true
11015
+ });
11016
+ HistogramModel.prototype.updateShowGroupedBtn = function () {
11017
+ if (!!this.showGroupedBtn) {
11018
+ this.showGroupedBtn.innerText = this.showGrouped
11019
+ ? _localizationManager__WEBPACK_IMPORTED_MODULE_7__.localization.getString("ungroupDateSeries")
11020
+ : _localizationManager__WEBPACK_IMPORTED_MODULE_7__.localization.getString("groupDateSeries");
11021
+ this.showGroupedBtn.style.display = this.canShowGroupedDateSeries ? "inline" : "none";
11022
+ }
11023
+ };
11024
+ Object.defineProperty(HistogramModel.prototype, "canShowGroupedDateSeries", {
11025
+ get: function () {
11026
+ return ["years", "quarters", "months"].indexOf(this.intervalsMode) !== -1;
11027
+ },
11028
+ enumerable: false,
11029
+ configurable: true
11030
+ });
11031
+ Object.defineProperty(HistogramModel.prototype, "aggregateDataName", {
11032
+ get: function () {
11033
+ return this._aggregateDataName;
11034
+ },
11035
+ set: function (val) {
11036
+ if (this._aggregateDataName !== val) {
11037
+ this._aggregateDataName = val;
11038
+ this.onDataChanged();
11039
+ }
11040
+ },
11041
+ enumerable: false,
11042
+ configurable: true
11043
+ });
11044
+ Object.defineProperty(HistogramModel.prototype, "possibleAggregateDataNames", {
11045
+ get: function () {
11046
+ var _a, _b;
11047
+ return (_b = (_a = this.questionOptions) === null || _a === void 0 ? void 0 : _a.aggregateDataNames) !== null && _b !== void 0 ? _b : [];
11048
+ },
11049
+ enumerable: false,
11050
+ configurable: true
11051
+ });
10208
11052
  HistogramModel.prototype.convertFromExternalData = function (externalCalculatedData) {
10209
11053
  return [externalCalculatedData];
10210
11054
  };
10211
11055
  HistogramModel.prototype.getCalculatedValuesCore = function () {
10212
11056
  var continuousValues = this.getContinuousValues();
10213
- return (0,_statisticCalculators__WEBPACK_IMPORTED_MODULE_5__.histogramStatisticsCalculator)(this._continuousData, this.intervals, this.getSeriesValues());
11057
+ return (0,_statisticCalculators__WEBPACK_IMPORTED_MODULE_5__.histogramStatisticsCalculator)(this._continuousData, this.intervals, this, [this.aggregateDataName].filter(function (name) { return !!name; }));
11058
+ };
11059
+ HistogramModel.prototype.getCalculatedValues = function () {
11060
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
11061
+ var values, result, i, j;
11062
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_a) {
11063
+ switch (_a.label) {
11064
+ case 0: return [4 /*yield*/, _super.prototype.getCalculatedValues.call(this)];
11065
+ case 1:
11066
+ values = _a.sent();
11067
+ result = JSON.parse(JSON.stringify(values));
11068
+ if (this.showRunningTotals) {
11069
+ for (i = 0; i < result.length; i++) {
11070
+ for (j = 1; j < result[i].length; j++) {
11071
+ result[i][j] += result[i][j - 1];
11072
+ }
11073
+ }
11074
+ }
11075
+ return [2 /*return*/, result];
11076
+ }
11077
+ });
11078
+ });
11079
+ };
11080
+ HistogramModel.prototype.getGroupedDateAnswersData = function () {
11081
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
11082
+ var datasets, colors, labels, seriesLabels, intervals, start, end, startYear, endYear, groupedDatasets, year, i, interval, intervalDate, decade, yearInDecade, decadeIndex, groupedDatasets, year, i, interval, intervalDate, quarter, year, yearIndex, groupedDatasets, year, i, interval, intervalDate, month, year, yearIndex, texts;
11083
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_a) {
11084
+ switch (_a.label) {
11085
+ case 0: return [4 /*yield*/, this.getCalculatedValues()];
11086
+ case 1:
11087
+ datasets = (_a.sent());
11088
+ colors = this.getColors();
11089
+ labels = this.getLabels();
11090
+ seriesLabels = this.getSeriesLabels();
11091
+ intervals = [].concat(this.intervals);
11092
+ start = new Date(intervals[0].start);
11093
+ end = new Date(intervals[intervals.length - 1].end);
11094
+ startYear = start.getFullYear();
11095
+ endYear = end.getFullYear();
11096
+ if (this.intervalsMode === "years") {
11097
+ seriesLabels = [];
11098
+ groupedDatasets = [];
11099
+ for (year = Math.floor(startYear / 10) * 10; year <= endYear; year += 10) {
11100
+ seriesLabels.push(year.toString() + "s");
11101
+ groupedDatasets.push(new Array(10).fill(0));
11102
+ }
11103
+ for (i = 0; i < intervals.length; i++) {
11104
+ interval = intervals[i];
11105
+ intervalDate = new Date(interval.start);
11106
+ decade = Math.floor(intervalDate.getFullYear() / 10) * 10;
11107
+ yearInDecade = intervalDate.getFullYear() - decade;
11108
+ decadeIndex = Math.floor((decade - Math.floor(startYear / 10) * 10) / 10);
11109
+ groupedDatasets[decadeIndex][yearInDecade] = datasets[0][i];
11110
+ }
11111
+ datasets = groupedDatasets;
11112
+ labels = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
11113
+ }
11114
+ else if (this.intervalsMode === "quarters") {
11115
+ seriesLabels = [];
11116
+ groupedDatasets = [];
11117
+ for (year = startYear; year <= endYear; year++) {
11118
+ seriesLabels.push(year.toString());
11119
+ groupedDatasets.push(new Array(4).fill(0));
11120
+ }
11121
+ for (i = 0; i < intervals.length; i++) {
11122
+ interval = intervals[i];
11123
+ intervalDate = new Date(interval.start);
11124
+ quarter = Math.floor(intervalDate.getMonth() / 3);
11125
+ year = intervalDate.getFullYear();
11126
+ yearIndex = year - startYear;
11127
+ groupedDatasets[yearIndex][quarter] = datasets[0][i];
11128
+ }
11129
+ datasets = groupedDatasets;
11130
+ labels = ["I", "II", "III", "IV"];
11131
+ }
11132
+ else if (this.intervalsMode === "months") {
11133
+ seriesLabels = [];
11134
+ groupedDatasets = [];
11135
+ for (year = startYear; year <= endYear; year++) {
11136
+ seriesLabels.push(year.toString());
11137
+ groupedDatasets.push(new Array(12).fill(0));
11138
+ }
11139
+ for (i = 0; i < intervals.length; i++) {
11140
+ interval = intervals[i];
11141
+ intervalDate = new Date(interval.start);
11142
+ month = intervalDate.getMonth();
11143
+ year = intervalDate.getFullYear();
11144
+ yearIndex = year - startYear;
11145
+ groupedDatasets[yearIndex][month] = datasets[0][i];
11146
+ }
11147
+ datasets = groupedDatasets;
11148
+ labels = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
11149
+ }
11150
+ texts = datasets;
11151
+ return [2 /*return*/, {
11152
+ datasets: datasets,
11153
+ labels: labels,
11154
+ colors: colors,
11155
+ texts: texts,
11156
+ seriesLabels: seriesLabels,
11157
+ }];
11158
+ }
11159
+ });
11160
+ });
11161
+ };
11162
+ /**
11163
+ * Returns object with all infotmation for data visualization: datasets, labels, colors, additional texts (percentage).
11164
+ */
11165
+ HistogramModel.prototype.getAnswersData = function () {
11166
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__awaiter)(this, void 0, void 0, function () {
11167
+ var answersData, continuousValues, start, end, intervalsMode;
11168
+ return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__generator)(this, function (_a) {
11169
+ switch (_a.label) {
11170
+ case 0:
11171
+ if (!this.showGrouped) {
11172
+ return [2 /*return*/, _super.prototype.getAnswersData.call(this)];
11173
+ }
11174
+ return [4 /*yield*/, this.getGroupedDateAnswersData()];
11175
+ case 1:
11176
+ answersData = _a.sent();
11177
+ continuousValues = this.getContinuousValues();
11178
+ if (continuousValues.length) {
11179
+ start = continuousValues[0].continuous;
11180
+ end = continuousValues[continuousValues.length - 1].continuous;
11181
+ intervalsMode = this.intervalsMode === "auto" ? getBestIntervalMode(start, end) : this.intervalsMode;
11182
+ if (intervalsMode === "years" && this.showGrouped) {
11183
+ answersData.labelsTitle = _localizationManager__WEBPACK_IMPORTED_MODULE_7__.localization.getString("groupedYearsAxisTitle");
11184
+ }
11185
+ }
11186
+ this.onAnswersDataReady.fire(this, answersData);
11187
+ return [2 /*return*/, answersData];
11188
+ }
11189
+ });
11190
+ });
10214
11191
  };
10215
11192
  HistogramModel.prototype.getValueType = function () {
10216
11193
  return this.valueType;
@@ -10944,19 +11921,21 @@ var NumberModel = /** @class */ (function (_super) {
10944
11921
  _this.chartTypes = _this._chartAdapter.getChartTypes();
10945
11922
  _this.chartType = _this.chartTypes[0];
10946
11923
  }
10947
- _this.registerToolbarItem("changeChartType", function () {
10948
- if (_this.chartTypes.length > 1) {
10949
- return _utils_index__WEBPACK_IMPORTED_MODULE_3__.DocumentHelper.createSelector(_this.chartTypes.map(function (chartType) {
10950
- return {
10951
- value: chartType,
10952
- text: _localizationManager__WEBPACK_IMPORTED_MODULE_2__.localization.getString("chartType_" + chartType),
10953
- };
10954
- }), function (option) { return _this.chartType === option.value; }, function (e) {
10955
- _this.setChartType(e.target.value);
10956
- });
10957
- }
10958
- return null;
10959
- });
11924
+ if (_this.options.allowChangeVisualizerType !== false) {
11925
+ _this.registerToolbarItem("changeChartType", function () {
11926
+ if (_this.chartTypes.length > 1) {
11927
+ return _utils_index__WEBPACK_IMPORTED_MODULE_3__.DocumentHelper.createSelector(_this.chartTypes.map(function (chartType) {
11928
+ return {
11929
+ value: chartType,
11930
+ text: _localizationManager__WEBPACK_IMPORTED_MODULE_2__.localization.getString("chartType_" + chartType),
11931
+ };
11932
+ }), function (option) { return _this.chartType === option.value; }, function (e) {
11933
+ _this.setChartType(e.target.value);
11934
+ });
11935
+ }
11936
+ return null;
11937
+ });
11938
+ }
10960
11939
  return _this;
10961
11940
  }
10962
11941
  NumberModel.prototype.onDataChanged = function () {
@@ -11032,7 +12011,7 @@ var NumberModel = /** @class */ (function (_super) {
11032
12011
  if (this._resultAverage === undefined ||
11033
12012
  this._resultMin === undefined ||
11034
12013
  this._resultMax === undefined) {
11035
- _a = (0,_statisticCalculators__WEBPACK_IMPORTED_MODULE_5__.mathStatisticsCalculator)(this.surveyData, this.dataNames[0]), this._resultAverage = _a[0], this._resultMin = _a[1], this._resultMax = _a[2];
12014
+ _a = (0,_statisticCalculators__WEBPACK_IMPORTED_MODULE_5__.mathStatisticsCalculator)(this.surveyData, this), this._resultAverage = _a[0], this._resultMin = _a[1], this._resultMax = _a[2];
11036
12015
  }
11037
12016
  return [this._resultAverage, this._resultMin, this._resultMax];
11038
12017
  };
@@ -11723,19 +12702,21 @@ var SelectBase = /** @class */ (function (_super) {
11723
12702
  _this._chartType = _this.options.defaultChartType;
11724
12703
  }
11725
12704
  }
11726
- _this.registerToolbarItem("changeChartType", function () {
11727
- if (_this.chartTypes.length > 1) {
11728
- return _utils_index__WEBPACK_IMPORTED_MODULE_4__.DocumentHelper.createSelector(_this.chartTypes.map(function (chartType) {
11729
- return {
11730
- value: chartType,
11731
- text: _localizationManager__WEBPACK_IMPORTED_MODULE_3__.localization.getString("chartType_" + chartType),
11732
- };
11733
- }), function (option) { return _this.chartType === option.value; }, function (e) {
11734
- _this.setChartType(e.target.value);
11735
- });
11736
- }
11737
- return null;
11738
- });
12705
+ if (_this.options.allowChangeVisualizerType !== false) {
12706
+ _this.registerToolbarItem("changeChartType", function () {
12707
+ if (_this.chartTypes.length > 1) {
12708
+ return _utils_index__WEBPACK_IMPORTED_MODULE_4__.DocumentHelper.createSelector(_this.chartTypes.map(function (chartType) {
12709
+ return {
12710
+ value: chartType,
12711
+ text: _localizationManager__WEBPACK_IMPORTED_MODULE_3__.localization.getString("chartType_" + chartType),
12712
+ };
12713
+ }), function (option) { return _this.chartType === option.value; }, function (e) {
12714
+ _this.setChartType(e.target.value);
12715
+ });
12716
+ }
12717
+ return null;
12718
+ });
12719
+ }
11739
12720
  _this.registerToolbarItem("changeAnswersOrder", function () {
11740
12721
  if (_this.isSupportAnswersOrder()) {
11741
12722
  _this.choicesOrderSelector = _utils_index__WEBPACK_IMPORTED_MODULE_4__.DocumentHelper.createSelector([
@@ -11916,6 +12897,11 @@ var SelectBase = /** @class */ (function (_super) {
11916
12897
  }
11917
12898
  };
11918
12899
  SelectBase.prototype.getSelectedItemByText = function (itemText) {
12900
+ var _a;
12901
+ if (this.question instanceof survey_core__WEBPACK_IMPORTED_MODULE_1__.QuestionRatingModel) {
12902
+ var rateValues = this.question.rateValues;
12903
+ return (_a = rateValues === null || rateValues === void 0 ? void 0 : rateValues.filter(function (choice) { return choice.text === itemText; })[0]) !== null && _a !== void 0 ? _a : new survey_core__WEBPACK_IMPORTED_MODULE_1__.ItemValue(parseFloat(itemText), itemText);
12904
+ }
11919
12905
  var selBase = this.question;
11920
12906
  if (this.question.hasOther && itemText == selBase.otherText) {
11921
12907
  return selBase.otherItem;
@@ -11924,14 +12910,17 @@ var SelectBase = /** @class */ (function (_super) {
11924
12910
  return selBase.choices.filter(function (choice) { return choice.text === itemText; })[0];
11925
12911
  }
11926
12912
  };
11927
- SelectBase.prototype.setSelection = function (item) {
12913
+ SelectBase.prototype.onSelectionChanged = function (item) {
11928
12914
  var _a;
12915
+ if (this.onDataItemSelected !== undefined) {
12916
+ this.onDataItemSelected(item !== undefined ? item.value : undefined, item !== undefined ? item.text : "");
12917
+ }
12918
+ this.stateChanged("filter", (_a = this.selectedItem) === null || _a === void 0 ? void 0 : _a.value);
12919
+ };
12920
+ SelectBase.prototype.setSelection = function (item) {
11929
12921
  if (this.selectedItem !== item) {
11930
12922
  this.selectedItem = item;
11931
- if (this.onDataItemSelected !== undefined) {
11932
- this.onDataItemSelected(item !== undefined ? item.value : undefined, item !== undefined ? item.text : "");
11933
- }
11934
- this.stateChanged("filter", (_a = this.selectedItem) === null || _a === void 0 ? void 0 : _a.value);
12923
+ this.onSelectionChanged(item);
11935
12924
  }
11936
12925
  };
11937
12926
  Object.defineProperty(SelectBase.prototype, "selection", {
@@ -12156,22 +13145,6 @@ var SelectBase = /** @class */ (function (_super) {
12156
13145
  }
12157
13146
  return percentages;
12158
13147
  };
12159
- SelectBase.prototype.answersDataReady = function (answersData) {
12160
- var result = {};
12161
- if (this.hideEmptyAnswers) {
12162
- result = hideEmptyAnswersInData(answersData);
12163
- }
12164
- else {
12165
- result = answersData;
12166
- }
12167
- if (this.topN > 0) {
12168
- result.datasets[0] = result.datasets[0].slice(-this.topN);
12169
- result.labels = result.labels.slice(-this.topN);
12170
- result.colors = result.colors.slice(-this.topN);
12171
- result.texts[0] = result.texts[0].slice(-this.topN);
12172
- }
12173
- return result;
12174
- };
12175
13148
  /**
12176
13149
  * Returns object with all infotmation for data visualization: datasets, labels, colors, additional texts (percentage).
12177
13150
  */
@@ -12213,7 +13186,15 @@ var SelectBase = /** @class */ (function (_super) {
12213
13186
  texts: texts,
12214
13187
  seriesLabels: seriesLabels,
12215
13188
  };
12216
- answersData = this.answersDataReady(answersData);
13189
+ if (this.hideEmptyAnswers) {
13190
+ answersData = hideEmptyAnswersInData(answersData);
13191
+ }
13192
+ if (this.topN > 0) {
13193
+ answersData.datasets[0] = answersData.datasets[0].slice(-this.topN);
13194
+ answersData.labels = answersData.labels.slice(-this.topN);
13195
+ answersData.colors = answersData.colors.slice(-this.topN);
13196
+ answersData.texts[0] = answersData.texts[0].slice(-this.topN);
13197
+ }
12217
13198
  this.onAnswersDataReady.fire(this, answersData);
12218
13199
  return [2 /*return*/, answersData];
12219
13200
  }
@@ -12316,6 +13297,7 @@ _visualizationManager__WEBPACK_IMPORTED_MODULE_5__.VisualizationManager.register
12316
13297
  __webpack_require__.r(__webpack_exports__);
12317
13298
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12318
13299
  /* harmony export */ defaultStatisticsCalculator: () => (/* binding */ defaultStatisticsCalculator),
13300
+ /* harmony export */ getNestedDataRows: () => (/* binding */ getNestedDataRows),
12319
13301
  /* harmony export */ histogramStatisticsCalculator: () => (/* binding */ histogramStatisticsCalculator),
12320
13302
  /* harmony export */ mathStatisticsCalculator: () => (/* binding */ mathStatisticsCalculator)
12321
13303
  /* harmony export */ });
@@ -12348,51 +13330,59 @@ function defaultStatisticsCalculator(data, dataInfo) {
12348
13330
  return valuesIndex[val.value];
12349
13331
  return valuesIndex[val];
12350
13332
  };
12351
- data.forEach(function (row) {
12352
- dataNames.forEach(function (dataName, index) {
12353
- var rowValue = row[dataName];
12354
- if (rowValue !== undefined || processMissingAnswers) {
12355
- var rowValues = Array.isArray(rowValue) ? rowValue : [rowValue];
12356
- if (series.length > 0) {
12357
- var rowName = row[_dataProvider__WEBPACK_IMPORTED_MODULE_0__.DataProvider.seriesMarkerKey];
12358
- if (rowName !== undefined) {
12359
- // Series are labelled by seriesMarkerKey in row data
12360
- var seriesNo_1 = seriesIndex[rowName] || 0;
12361
- rowValues.forEach(function (val) {
12362
- var valIndex = getValueIndex(val);
12363
- statistics[index][seriesNo_1][valIndex]++;
12364
- });
12365
- }
12366
- else {
12367
- // Series are the keys in question value (matrix question)
12368
- // TODO: think about the de-normalization and combine with the previous case
12369
- rowValues.forEach(function (val) {
12370
- series.forEach(function (seriesName) {
12371
- if (val[seriesName] !== undefined) {
12372
- var seriesNo_2 = seriesIndex[seriesName] || 0;
12373
- var values_1 = Array.isArray(val[seriesName]) ? val[seriesName] : [val[seriesName]];
12374
- values_1.forEach(function (value) {
12375
- var valIndex = getValueIndex(value);
12376
- statistics[index][seriesNo_2][valIndex]++;
12377
- });
12378
- }
12379
- });
12380
- });
12381
- }
13333
+ var processDataRow = function (dataRow, dataName, index) {
13334
+ var rowValue = dataRow[dataName];
13335
+ if (rowValue !== undefined || processMissingAnswers) {
13336
+ var rowValues = Array.isArray(rowValue) ? rowValue : [rowValue];
13337
+ if (series.length > 0) {
13338
+ var rowName = dataRow[_dataProvider__WEBPACK_IMPORTED_MODULE_0__.DataProvider.seriesMarkerKey];
13339
+ if (rowName !== undefined) {
13340
+ // Series are labelled by seriesMarkerKey in row data
13341
+ var seriesNo_1 = seriesIndex[rowName] || 0;
13342
+ rowValues.forEach(function (val) {
13343
+ var valIndex = getValueIndex(val);
13344
+ statistics[index][seriesNo_1][valIndex]++;
13345
+ });
12382
13346
  }
12383
13347
  else {
12384
- // No series
13348
+ // Series are the keys in question value (matrix question)
13349
+ // TODO: think about the de-normalization and combine with the previous case
12385
13350
  rowValues.forEach(function (val) {
12386
- var valIndex = getValueIndex(val);
12387
- statistics[0][0][valIndex]++;
13351
+ series.forEach(function (seriesName) {
13352
+ if (val[seriesName] !== undefined) {
13353
+ var seriesNo_2 = seriesIndex[seriesName] || 0;
13354
+ var values_1 = Array.isArray(val[seriesName]) ? val[seriesName] : [val[seriesName]];
13355
+ values_1.forEach(function (value) {
13356
+ var valIndex = getValueIndex(value);
13357
+ statistics[index][seriesNo_2][valIndex]++;
13358
+ });
13359
+ }
13360
+ });
12388
13361
  });
12389
13362
  }
12390
13363
  }
13364
+ else {
13365
+ // No series
13366
+ rowValues.forEach(function (val) {
13367
+ var valIndex = getValueIndex(val);
13368
+ statistics[0][0][valIndex]++;
13369
+ });
13370
+ }
13371
+ }
13372
+ };
13373
+ data.forEach(function (dataRow) {
13374
+ var nestedDataRows = getNestedDataRows(dataRow, dataInfo);
13375
+ nestedDataRows.forEach(function (nestedDataRow) {
13376
+ dataNames.forEach(function (dataName, index) {
13377
+ processDataRow(nestedDataRow, dataName, index);
13378
+ });
12391
13379
  });
12392
13380
  });
12393
13381
  return dataInfo.dataNames.length > 1 ? statistics : statistics[0];
12394
13382
  }
12395
- function histogramStatisticsCalculator(data, intervals, seriesValues) {
13383
+ function histogramStatisticsCalculator(data, intervals, dataInfo, aggregateDataNames) {
13384
+ if (aggregateDataNames === void 0) { aggregateDataNames = []; }
13385
+ var seriesValues = dataInfo.getSeriesValues();
12396
13386
  var statistics = [];
12397
13387
  if (seriesValues.length === 0) {
12398
13388
  seriesValues.push("");
@@ -12400,31 +13390,51 @@ function histogramStatisticsCalculator(data, intervals, seriesValues) {
12400
13390
  for (var i = 0; i < seriesValues.length; ++i) {
12401
13391
  statistics.push(intervals.map(function (i) { return 0; }));
12402
13392
  data[seriesValues[i]].forEach(function (dataValue) {
13393
+ var _loop_1 = function (j) {
13394
+ if (intervals[j].start <= dataValue.continuous && (dataValue.continuous < intervals[j].end || j == intervals.length - 1)) {
13395
+ if (aggregateDataNames.length > 0) {
13396
+ aggregateDataNames.forEach(function (aggregateDataName) {
13397
+ var aggregateDataValue = dataValue.row[aggregateDataName];
13398
+ var numberValue = parseFloat(aggregateDataValue);
13399
+ if (aggregateDataValue !== undefined && !isNaN(numberValue)) {
13400
+ statistics[i][j] += numberValue;
13401
+ }
13402
+ });
13403
+ }
13404
+ else {
13405
+ statistics[i][j]++;
13406
+ }
13407
+ return "break";
13408
+ }
13409
+ };
12403
13410
  for (var j = 0; j < intervals.length; ++j) {
12404
- if (intervals[j].start <= dataValue && (dataValue < intervals[j].end || j == intervals.length - 1)) {
12405
- statistics[i][j]++;
13411
+ var state_1 = _loop_1(j);
13412
+ if (state_1 === "break")
12406
13413
  break;
12407
- }
12408
13414
  }
12409
13415
  });
12410
13416
  }
12411
13417
  return statistics;
12412
13418
  }
12413
- function mathStatisticsCalculator(data, dataName) {
13419
+ function mathStatisticsCalculator(data, dataInfo) {
12414
13420
  var resultMin = Number.MAX_VALUE, resultMax = -Number.MAX_VALUE, resultAverage = 0;
12415
13421
  var actualAnswerCount = 0;
12416
- data.forEach(function (rowData) {
12417
- if (rowData[dataName] !== undefined) {
12418
- var questionValue = +rowData[dataName];
12419
- actualAnswerCount++;
12420
- resultAverage += questionValue;
12421
- if (resultMin > questionValue) {
12422
- resultMin = questionValue;
12423
- }
12424
- if (resultMax < questionValue) {
12425
- resultMax = questionValue;
13422
+ data.forEach(function (dataRow) {
13423
+ var nestedDataRows = getNestedDataRows(dataRow, dataInfo);
13424
+ nestedDataRows.forEach(function (nestedDataRow) {
13425
+ var answerData = nestedDataRow[dataInfo.dataNames[0]];
13426
+ if (answerData !== undefined) {
13427
+ var questionValue = +answerData;
13428
+ actualAnswerCount++;
13429
+ resultAverage += questionValue;
13430
+ if (resultMin > questionValue) {
13431
+ resultMin = questionValue;
13432
+ }
13433
+ if (resultMax < questionValue) {
13434
+ resultMax = questionValue;
13435
+ }
12426
13436
  }
12427
- }
13437
+ });
12428
13438
  });
12429
13439
  if (actualAnswerCount > 0) {
12430
13440
  resultAverage = resultAverage / actualAnswerCount;
@@ -12432,6 +13442,25 @@ function mathStatisticsCalculator(data, dataName) {
12432
13442
  resultAverage = Math.ceil(resultAverage * 100) / 100;
12433
13443
  return [resultAverage, resultMin, resultMax];
12434
13444
  }
13445
+ function getNestedDataRows(dataRow, dataInfo) {
13446
+ var nestedDataRows = [];
13447
+ if (!dataInfo.dataPath) {
13448
+ nestedDataRows = [dataRow];
13449
+ }
13450
+ else {
13451
+ if (dataRow[dataInfo.dataPath] === undefined)
13452
+ return [];
13453
+ if (typeof dataRow[dataInfo.dataPath] !== "object")
13454
+ return [];
13455
+ if (Array.isArray(dataRow[dataInfo.dataPath])) {
13456
+ nestedDataRows = dataRow[dataInfo.dataPath];
13457
+ }
13458
+ else {
13459
+ nestedDataRows = [dataRow[dataInfo.dataPath]];
13460
+ }
13461
+ }
13462
+ return nestedDataRows;
13463
+ }
12435
13464
 
12436
13465
 
12437
13466
  /***/ }),
@@ -13276,6 +14305,42 @@ function toPrecision(value, precision) {
13276
14305
  }
13277
14306
 
13278
14307
 
14308
+ /***/ }),
14309
+
14310
+ /***/ "./src/visualizationComposite.ts":
14311
+ /*!***************************************!*\
14312
+ !*** ./src/visualizationComposite.ts ***!
14313
+ \***************************************/
14314
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
14315
+
14316
+ "use strict";
14317
+ __webpack_require__.r(__webpack_exports__);
14318
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
14319
+ /* harmony export */ VisualizationComposite: () => (/* binding */ VisualizationComposite)
14320
+ /* harmony export */ });
14321
+ /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./src/utils/helpers.ts");
14322
+ /* harmony import */ var _visualizationManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./visualizationManager */ "./src/visualizationManager.ts");
14323
+ /* harmony import */ var _visualizationPanelDynamic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./visualizationPanelDynamic */ "./src/visualizationPanelDynamic.ts");
14324
+
14325
+
14326
+
14327
+ var VisualizationComposite = /** @class */ (function (_super) {
14328
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(VisualizationComposite, _super);
14329
+ function VisualizationComposite(question, data, options, name) {
14330
+ return _super.call(this, question, data, options, name || "composite") || this;
14331
+ }
14332
+ VisualizationComposite.prototype.getQuestions = function () {
14333
+ var questionComposite = this.question;
14334
+ var innerQuestions = [];
14335
+ questionComposite.contentPanel.addQuestionsToList(innerQuestions);
14336
+ return innerQuestions;
14337
+ };
14338
+ return VisualizationComposite;
14339
+ }(_visualizationPanelDynamic__WEBPACK_IMPORTED_MODULE_2__.VisualizationPanelDynamic));
14340
+
14341
+ _visualizationManager__WEBPACK_IMPORTED_MODULE_1__.VisualizationManager.registerVisualizer("composite", VisualizationComposite);
14342
+
14343
+
13279
14344
  /***/ }),
13280
14345
 
13281
14346
  /***/ "./src/visualizationManager.ts":
@@ -13416,8 +14481,6 @@ __webpack_require__.r(__webpack_exports__);
13416
14481
  /* harmony import */ var _visualizerBase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./visualizerBase */ "./src/visualizerBase.ts");
13417
14482
  /* harmony import */ var _visualizationManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./visualizationManager */ "./src/visualizationManager.ts");
13418
14483
  /* harmony import */ var _visualizationPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./visualizationPanel */ "./src/visualizationPanel.ts");
13419
- /* harmony import */ var _dataProvider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataProvider */ "./src/dataProvider.ts");
13420
-
13421
14484
 
13422
14485
 
13423
14486
 
@@ -13438,28 +14501,29 @@ var VisualizationMatrixDropdown = /** @class */ (function (_super) {
13438
14501
  function VisualizationMatrixDropdown(question, data, options, name) {
13439
14502
  if (options === void 0) { options = {}; }
13440
14503
  var _this = _super.call(this, question, data, options, name || "matrixDropdown") || this;
13441
- _this._matrixDropdownVisualizer = undefined;
14504
+ _this._contentVisualizer = undefined;
13442
14505
  _this.onPanelAfterRenderCallback = function () {
13443
14506
  _this.afterRender(_this.contentContainer);
13444
14507
  };
13445
14508
  _this.loadingData = false;
13446
14509
  _this._childOptions = Object.assign({}, options);
13447
14510
  _this._childOptions.disableLocaleSwitch = true;
13448
- _this._childOptions.dataProvider = undefined;
13449
14511
  _this._childOptions.allowDynamicLayout = false;
13450
14512
  _this._childOptions.transposeData = true;
14513
+ _this._childOptions.dataProvider = _this.dataProvider;
14514
+ _this._childOptions.dataPath = _this.dataNames[0];
13451
14515
  _this._childOptions.seriesValues = question.rows.map(function (row) { return row.value; });
13452
14516
  _this._childOptions.seriesLabels = question.rows.map(function (row) { return row.text; });
14517
+ _this.dataProvider.fixDropdownData(_this.dataNames);
13453
14518
  if (_this.canGroupColumns) {
13454
14519
  var creators = _visualizationManager__WEBPACK_IMPORTED_MODULE_2__.VisualizationManager.getVisualizersByType("matrixdropdown-grouped");
13455
- _this._matrixDropdownVisualizer = new creators[0](_this.question, [], _this._childOptions);
14520
+ _this._contentVisualizer = new creators[0](_this.question, [], _this._childOptions);
13456
14521
  }
13457
14522
  else {
13458
14523
  var innerQuestions = _this.getQuestions();
13459
- _this._matrixDropdownVisualizer = new _visualizationPanel__WEBPACK_IMPORTED_MODULE_3__.VisualizationPanel(innerQuestions, [], _this._childOptions, undefined, false);
14524
+ _this._contentVisualizer = new _visualizationPanel__WEBPACK_IMPORTED_MODULE_3__.VisualizationPanel(innerQuestions, [], _this._childOptions, undefined, false);
13460
14525
  }
13461
- _this._matrixDropdownVisualizer.onAfterRender.add(_this.onPanelAfterRenderCallback);
13462
- _this.updateData(data);
14526
+ _this._contentVisualizer.onAfterRender.add(_this.onPanelAfterRenderCallback);
13463
14527
  return _this;
13464
14528
  }
13465
14529
  Object.defineProperty(VisualizationMatrixDropdown.prototype, "canGroupColumns", {
@@ -13477,37 +14541,18 @@ var VisualizationMatrixDropdown = /** @class */ (function (_super) {
13477
14541
  VisualizationMatrixDropdown.prototype.setLocale = function (newLocale) {
13478
14542
  _super.prototype.setLocale.call(this, newLocale);
13479
14543
  this._childOptions.seriesLabels = this.question.rows.map(function (row) { return row.text; });
13480
- this._matrixDropdownVisualizer.locale = newLocale;
14544
+ this._contentVisualizer.locale = newLocale;
13481
14545
  };
13482
- Object.defineProperty(VisualizationMatrixDropdown.prototype, "matrixDropdownVisualizer", {
14546
+ Object.defineProperty(VisualizationMatrixDropdown.prototype, "contentVisualizer", {
13483
14547
  get: function () {
13484
- return this._matrixDropdownVisualizer;
14548
+ return this._contentVisualizer;
13485
14549
  },
13486
14550
  enumerable: false,
13487
14551
  configurable: true
13488
14552
  });
13489
- VisualizationMatrixDropdown.prototype.updateDropdownVisualizerData = function () {
13490
- var _this = this;
13491
- var panelData = [];
13492
- this.data.forEach(function (dataItem) {
13493
- var rawDataItem = dataItem[_this.question.name];
13494
- if (!!rawDataItem) {
13495
- Object.keys(rawDataItem).forEach(function (key) {
13496
- var nestedDataItem = Object.assign({}, rawDataItem[key]);
13497
- nestedDataItem[_dataProvider__WEBPACK_IMPORTED_MODULE_4__.DataProvider.seriesMarkerKey] = key;
13498
- panelData.push(nestedDataItem);
13499
- });
13500
- }
13501
- });
13502
- this._matrixDropdownVisualizer.updateData(panelData);
13503
- };
13504
14553
  VisualizationMatrixDropdown.prototype.updateData = function (data) {
13505
14554
  _super.prototype.updateData.call(this, data);
13506
- this.updateDropdownVisualizerData();
13507
- };
13508
- VisualizationMatrixDropdown.prototype.onDataChanged = function () {
13509
- this.updateDropdownVisualizerData();
13510
- _super.prototype.onDataChanged.call(this);
14555
+ this.dataProvider.fixDropdownData(this.dataNames);
13511
14556
  };
13512
14557
  VisualizationMatrixDropdown.prototype.getQuestions = function () {
13513
14558
  var matrixdropdown = this.question;
@@ -13520,15 +14565,15 @@ var VisualizationMatrixDropdown = /** @class */ (function (_super) {
13520
14565
  });
13521
14566
  };
13522
14567
  VisualizationMatrixDropdown.prototype.destroyContent = function (container) {
13523
- this._matrixDropdownVisualizer.clear();
14568
+ this._contentVisualizer.clear();
13524
14569
  _super.prototype.destroyContent.call(this, this.contentContainer);
13525
14570
  };
13526
14571
  VisualizationMatrixDropdown.prototype.renderContent = function (container) {
13527
- this._matrixDropdownVisualizer.render(container);
14572
+ this._contentVisualizer.render(container);
13528
14573
  };
13529
14574
  VisualizationMatrixDropdown.prototype.destroy = function () {
13530
14575
  _super.prototype.destroy.call(this);
13531
- this._matrixDropdownVisualizer.onAfterRender.remove(this.onPanelAfterRenderCallback);
14576
+ this._contentVisualizer.onAfterRender.remove(this.onPanelAfterRenderCallback);
13532
14577
  };
13533
14578
  return VisualizationMatrixDropdown;
13534
14579
  }(_visualizerBase__WEBPACK_IMPORTED_MODULE_1__.VisualizerBase));
@@ -13557,16 +14602,9 @@ __webpack_require__.r(__webpack_exports__);
13557
14602
 
13558
14603
  var VisualizationMatrixDynamic = /** @class */ (function (_super) {
13559
14604
  (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(VisualizationMatrixDynamic, _super);
13560
- function VisualizationMatrixDynamic(question, data, options) {
13561
- return _super.call(this, question, data, options) || this;
14605
+ function VisualizationMatrixDynamic(question, data, options, name) {
14606
+ return _super.call(this, question, data, options, name || "matrixDynamic") || this;
13562
14607
  }
13563
- Object.defineProperty(VisualizationMatrixDynamic.prototype, "type", {
13564
- get: function () {
13565
- return "matrixDynamic";
13566
- },
13567
- enumerable: false,
13568
- configurable: true
13569
- });
13570
14608
  VisualizationMatrixDynamic.prototype.getQuestions = function () {
13571
14609
  var matrixdynamic = this.question;
13572
14610
  var visibleRows = matrixdynamic.visibleRows;
@@ -13616,9 +14654,13 @@ __webpack_require__.r(__webpack_exports__);
13616
14654
  /* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./localizationManager */ "./src/localizationManager.ts");
13617
14655
  /* harmony import */ var _filterInfo__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./filterInfo */ "./src/filterInfo.ts");
13618
14656
  /* harmony import */ var _layoutEngine__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./layoutEngine */ "./src/layoutEngine.ts");
13619
- /* harmony import */ var _svgbundle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./svgbundle */ "./src/svgbundle.ts");
13620
- /* harmony import */ var _visualizationPanel_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./visualizationPanel.scss */ "./src/visualizationPanel.scss");
14657
+ /* harmony import */ var _dataProvider__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dataProvider */ "./src/dataProvider.ts");
14658
+ /* harmony import */ var _svgbundle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./svgbundle */ "./src/svgbundle.ts");
13621
14659
  /* harmony import */ var _visualizationManager__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./visualizationManager */ "./src/visualizationManager.ts");
14660
+ /* harmony import */ var _visualizationPanel_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./visualizationPanel.scss */ "./src/visualizationPanel.scss");
14661
+ /* harmony import */ var _visualizationPanelDynamic__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./visualizationPanelDynamic */ "./src/visualizationPanelDynamic.ts");
14662
+
14663
+
13622
14664
 
13623
14665
 
13624
14666
 
@@ -13637,7 +14679,7 @@ var questionLayoutedElementClassName = "sa-question-layouted";
13637
14679
  if (!!document) {
13638
14680
  var templateHolder = document.createElement("div");
13639
14681
  templateHolder.style.display = "none";
13640
- templateHolder.innerHTML = _svgbundle__WEBPACK_IMPORTED_MODULE_9__.svgTemplate;
14682
+ templateHolder.innerHTML = _svgbundle__WEBPACK_IMPORTED_MODULE_10__.svgTemplate;
13641
14683
  document.head.appendChild(templateHolder);
13642
14684
  }
13643
14685
  /**
@@ -13668,7 +14710,7 @@ var VisualizationPanel = /** @class */ (function (_super) {
13668
14710
  _this.renderedQuestionsCount = 0;
13669
14711
  _this.onAfterRenderQuestionCallback = function (sender, options) {
13670
14712
  _this.renderedQuestionsCount++;
13671
- if (_this.renderedQuestionsCount == _this.questions.length) {
14713
+ if (_this.renderedQuestionsCount == _this.visibleElements.length) {
13672
14714
  _this.renderedQuestionsCount = 0;
13673
14715
  _this.layoutEngine.update();
13674
14716
  _this.afterRender(_this.contentContainer);
@@ -13749,7 +14791,7 @@ var VisualizationPanel = /** @class */ (function (_super) {
13749
14791
  _this._layoutEngine.onMoveCallback = function (order) {
13750
14792
  return _this.reorderVisibleElements(order);
13751
14793
  };
13752
- _this.showToolbar = true;
14794
+ _this.showToolbar = isRoot;
13753
14795
  if (_this.options.survey) {
13754
14796
  _localizationManager__WEBPACK_IMPORTED_MODULE_6__.localization.currentLocale = _this.options.survey.locale;
13755
14797
  }
@@ -13766,11 +14808,7 @@ var VisualizationPanel = /** @class */ (function (_super) {
13766
14808
  if (_this.supportSelection !== false) {
13767
14809
  _this.registerToolbarItem("resetFilter", function () {
13768
14810
  return _utils_index__WEBPACK_IMPORTED_MODULE_5__.DocumentHelper.createButton(function () {
13769
- _this.visualizers.forEach(function (visualizer) {
13770
- if (visualizer instanceof _selectBase__WEBPACK_IMPORTED_MODULE_3__.SelectBase || visualizer instanceof _alternativeVizualizersWrapper__WEBPACK_IMPORTED_MODULE_4__.AlternativeVisualizersWrapper) {
13771
- visualizer.setSelection(undefined);
13772
- }
13773
- });
14811
+ _this.resetFilter();
13774
14812
  }, _localizationManager__WEBPACK_IMPORTED_MODULE_6__.localization.getString("resetFilter"));
13775
14813
  }, 900);
13776
14814
  }
@@ -13831,6 +14869,18 @@ var VisualizationPanel = /** @class */ (function (_super) {
13831
14869
  }
13832
14870
  return _this;
13833
14871
  }
14872
+ VisualizationPanel.prototype.resetFilter = function () {
14873
+ var _a;
14874
+ (_a = this.dataProvider) === null || _a === void 0 ? void 0 : _a.resetFilter();
14875
+ this.visualizers.forEach(function (visualizer) {
14876
+ if (visualizer instanceof _selectBase__WEBPACK_IMPORTED_MODULE_3__.SelectBase || visualizer instanceof _alternativeVizualizersWrapper__WEBPACK_IMPORTED_MODULE_4__.AlternativeVisualizersWrapper) {
14877
+ visualizer.setSelection(undefined);
14878
+ }
14879
+ if (visualizer instanceof _visualizationPanelDynamic__WEBPACK_IMPORTED_MODULE_13__.VisualizationPanelDynamic) {
14880
+ visualizer.resetFilter();
14881
+ }
14882
+ });
14883
+ };
13834
14884
  VisualizationPanel.prototype.reorderVisibleElements = function (order) {
13835
14885
  var _this = this;
13836
14886
  var newElements = [];
@@ -13941,13 +14991,15 @@ var VisualizationPanel = /** @class */ (function (_super) {
13941
14991
  var _this = this;
13942
14992
  questions.forEach(function (question) {
13943
14993
  var visualizerOptions = Object.assign({}, _this.options);
13944
- var visualizerData = _this.surveyData;
14994
+ if (visualizerOptions.dataProvider === undefined) {
14995
+ visualizerOptions.dataProvider = _this.dataProvider;
14996
+ }
13945
14997
  var visualizer;
13946
14998
  if (Array.isArray(question)) {
13947
- visualizer = new (_visualizationManager__WEBPACK_IMPORTED_MODULE_11__.VisualizationManager.getPivotVisualizerConstructor())(question, visualizerData, visualizerOptions, undefined, false);
14999
+ visualizer = new (_visualizationManager__WEBPACK_IMPORTED_MODULE_11__.VisualizationManager.getPivotVisualizerConstructor())(question, [], visualizerOptions, undefined, false);
13948
15000
  }
13949
15001
  else {
13950
- visualizer = _this.createVisualizer(question, visualizerOptions, visualizerData);
15002
+ visualizer = _this.createVisualizer(question, visualizerOptions, []);
13951
15003
  }
13952
15004
  if (!visualizer) {
13953
15005
  return;
@@ -14020,7 +15072,7 @@ var VisualizationPanel = /** @class */ (function (_super) {
14020
15072
  question = Array.isArray(question) ? question[0] : question;
14021
15073
  var element = _this.getElement(question.name);
14022
15074
  if (!!element) {
14023
- element.displayName = _this.processText(question.title);
15075
+ element.displayName = _this.getTitle(question);
14024
15076
  }
14025
15077
  });
14026
15078
  this.visualizers.forEach(function (v) {
@@ -14088,7 +15140,7 @@ var VisualizationPanel = /** @class */ (function (_super) {
14088
15140
  question = Array.isArray(question) ? question[0] : question;
14089
15141
  return {
14090
15142
  name: question.name,
14091
- displayName: _this.processText(question.title),
15143
+ displayName: _this.getTitle(question),
14092
15144
  isVisible: true,
14093
15145
  isPublic: true,
14094
15146
  };
@@ -14277,7 +15329,24 @@ var VisualizationPanel = /** @class */ (function (_super) {
14277
15329
  * @see IVisualizationPanelOptions.allowSelection
14278
15330
  */
14279
15331
  VisualizationPanel.prototype.setFilter = function (questionName, selectedValue) {
14280
- this.dataProvider.setFilter(questionName, selectedValue);
15332
+ var _a, _b;
15333
+ if (!this.dataPath) {
15334
+ this.dataProvider.setFilter(questionName, selectedValue);
15335
+ }
15336
+ else {
15337
+ if (selectedValue !== undefined && selectedValue !== null) {
15338
+ if (typeof selectedValue === "object" && Object.keys(selectedValue)[0]) {
15339
+ var seriesValue = Object.keys(selectedValue)[0];
15340
+ this.dataProvider.setFilter(this.dataPath, (_a = {}, _a[questionName] = selectedValue[seriesValue], _a[_dataProvider__WEBPACK_IMPORTED_MODULE_9__.DataProvider.seriesMarkerKey] = seriesValue, _a));
15341
+ }
15342
+ else {
15343
+ this.dataProvider.setFilter(this.dataPath, (_b = {}, _b[questionName] = selectedValue, _b));
15344
+ }
15345
+ }
15346
+ else {
15347
+ this.dataProvider.setFilter(this.dataPath, undefined);
15348
+ }
15349
+ }
14281
15350
  };
14282
15351
  VisualizationPanel.prototype.getState = function () {
14283
15352
  var _this = this;
@@ -14405,62 +15474,48 @@ var VisualizationPanelDynamic = /** @class */ (function (_super) {
14405
15474
  function VisualizationPanelDynamic(question, data, options, name) {
14406
15475
  if (options === void 0) { options = {}; }
14407
15476
  var _this = _super.call(this, question, data, options, name || "panelDynamic") || this;
14408
- _this._panelVisualizer = undefined;
15477
+ _this._contentVisualizer = undefined;
14409
15478
  _this.onAfterRenderPanelCallback = function () {
14410
15479
  _this.afterRender(_this.contentContainer);
14411
15480
  };
14412
15481
  _this.loadingData = false;
14413
15482
  var options = Object.assign({}, options);
15483
+ options.allowHideQuestions = false;
14414
15484
  options.allowDynamicLayout = false;
14415
- options.dataProvider = undefined;
14416
- _this._panelVisualizer = new _visualizationPanel__WEBPACK_IMPORTED_MODULE_3__.VisualizationPanel(_this.getQuestions(), [], options, undefined, false);
14417
- _this._panelVisualizer.onAfterRender.add(_this.onAfterRenderPanelCallback);
14418
- _this.updateData(data);
15485
+ options.dataProvider = _this.dataProvider;
15486
+ options.dataPath = _this.dataNames[0];
15487
+ _this._contentVisualizer = new _visualizationPanel__WEBPACK_IMPORTED_MODULE_3__.VisualizationPanel(_this.getQuestions(), [], options, undefined, false);
15488
+ _this._contentVisualizer.onAfterRender.add(_this.onAfterRenderPanelCallback);
14419
15489
  return _this;
14420
15490
  }
14421
- VisualizationPanelDynamic.prototype.setLocale = function (newLocale) {
14422
- _super.prototype.setLocale.call(this, newLocale);
14423
- this._panelVisualizer.locale = newLocale;
14424
- };
14425
- Object.defineProperty(VisualizationPanelDynamic.prototype, "type", {
15491
+ Object.defineProperty(VisualizationPanelDynamic.prototype, "contentVisualizer", {
14426
15492
  get: function () {
14427
- return "panelDynamic";
15493
+ return this._contentVisualizer;
14428
15494
  },
14429
15495
  enumerable: false,
14430
15496
  configurable: true
14431
15497
  });
14432
- VisualizationPanelDynamic.prototype.updatePanelVisualizerData = function () {
14433
- var _this = this;
14434
- var panelData = [];
14435
- this.data.forEach(function (dataItem) {
14436
- if (dataItem[_this.question.name] !== undefined) {
14437
- panelData = panelData.concat(dataItem[_this.question.name]);
14438
- }
14439
- });
14440
- this._panelVisualizer.updateData(panelData);
14441
- };
14442
- VisualizationPanelDynamic.prototype.updateData = function (data) {
14443
- _super.prototype.updateData.call(this, data);
14444
- this.updatePanelVisualizerData();
15498
+ VisualizationPanelDynamic.prototype.setLocale = function (newLocale) {
15499
+ _super.prototype.setLocale.call(this, newLocale);
15500
+ this._contentVisualizer.locale = newLocale;
14445
15501
  };
14446
- VisualizationPanelDynamic.prototype.onDataChanged = function () {
14447
- this.updatePanelVisualizerData();
14448
- _super.prototype.onDataChanged.call(this);
15502
+ VisualizationPanelDynamic.prototype.resetFilter = function () {
15503
+ this.contentVisualizer.resetFilter();
14449
15504
  };
14450
15505
  VisualizationPanelDynamic.prototype.getQuestions = function () {
14451
15506
  var paneldynamic = this.question;
14452
15507
  return paneldynamic.template.questions;
14453
15508
  };
14454
15509
  VisualizationPanelDynamic.prototype.destroyContent = function (container) {
14455
- this._panelVisualizer.clear();
15510
+ this._contentVisualizer.clear();
14456
15511
  _super.prototype.destroyContent.call(this, this.contentContainer);
14457
15512
  };
14458
15513
  VisualizationPanelDynamic.prototype.renderContent = function (container) {
14459
- this._panelVisualizer.render(container);
15514
+ this._contentVisualizer.render(container);
14460
15515
  };
14461
15516
  VisualizationPanelDynamic.prototype.destroy = function () {
14462
15517
  _super.prototype.destroy.call(this);
14463
- this._panelVisualizer.onAfterRender.remove(this.onAfterRenderPanelCallback);
15518
+ this._contentVisualizer.onAfterRender.remove(this.onAfterRenderPanelCallback);
14464
15519
  };
14465
15520
  return VisualizationPanelDynamic;
14466
15521
  }(_visualizerBase__WEBPACK_IMPORTED_MODULE_1__.VisualizerBase));
@@ -14685,6 +15740,13 @@ var VisualizerBase = /** @class */ (function () {
14685
15740
  enumerable: false,
14686
15741
  configurable: true
14687
15742
  });
15743
+ Object.defineProperty(VisualizerBase.prototype, "dataPath", {
15744
+ get: function () {
15745
+ return this.options.dataPath;
15746
+ },
15747
+ enumerable: false,
15748
+ configurable: true
15749
+ });
14688
15750
  Object.defineProperty(VisualizerBase.prototype, "hasHeader", {
14689
15751
  /**
14690
15752
  * Indicates whether the visualizer displays a header. This property is `true` when a visualized question has a correct answer.
@@ -14829,6 +15891,22 @@ var VisualizerBase = /** @class */ (function () {
14829
15891
  }
14830
15892
  return undefined;
14831
15893
  };
15894
+ Object.defineProperty(VisualizerBase.prototype, "title", {
15895
+ /**
15896
+ * Returns the visualizer's title.
15897
+ */
15898
+ get: function () {
15899
+ return this.getTitle(this.question);
15900
+ },
15901
+ enumerable: false,
15902
+ configurable: true
15903
+ });
15904
+ VisualizerBase.prototype.getTitle = function (question) {
15905
+ var _a;
15906
+ if (question === undefined)
15907
+ return "";
15908
+ return this.processText(((_a = question.locTitle) === null || _a === void 0 ? void 0 : _a.renderedHtml) ? question.locTitle.renderedHtml : question.title);
15909
+ };
14832
15910
  Object.defineProperty(VisualizerBase.prototype, "type", {
14833
15911
  /**
14834
15912
  * Returns the visualizer's type.
@@ -14873,9 +15951,7 @@ var VisualizerBase = /** @class */ (function () {
14873
15951
  * @param data A data array with survey results to be visualized.
14874
15952
  */
14875
15953
  VisualizerBase.prototype.updateData = function (data) {
14876
- if (!this.options.dataProvider) {
14877
- this.dataProvider.data = data;
14878
- }
15954
+ this.dataProvider.data = data;
14879
15955
  if (this.hasFooter) {
14880
15956
  this.footerVisualizer.updateData(data);
14881
15957
  }
@@ -15367,7 +16443,10 @@ __webpack_require__.r(__webpack_exports__);
15367
16443
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
15368
16444
  /* harmony export */ VisualizerFactory: () => (/* binding */ VisualizerFactory)
15369
16445
  /* harmony export */ });
15370
- /* harmony import */ var _visualizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./visualizationManager */ "./src/visualizationManager.ts");
16446
+ /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-core */ "survey-core");
16447
+ /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_core__WEBPACK_IMPORTED_MODULE_0__);
16448
+ /* harmony import */ var _visualizationManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./visualizationManager */ "./src/visualizationManager.ts");
16449
+
15371
16450
 
15372
16451
  /**
15373
16452
  * An object that allows you to create individual visualizers without creating a [visualization panel](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel).
@@ -15398,16 +16477,26 @@ var VisualizerFactory = /** @class */ (function () {
15398
16477
  VisualizerFactory.createVisualizer = function (question, data, options) {
15399
16478
  var type = question.getType();
15400
16479
  var creators = [];
16480
+ var questionForCreator = question;
16481
+ var optionsForCreator = Object.assign({}, options);
15401
16482
  if (type === "text" && question.inputType) {
15402
- creators = _visualizationManager__WEBPACK_IMPORTED_MODULE_0__.VisualizationManager.getVisualizersByType(question.inputType, type);
16483
+ creators = _visualizationManager__WEBPACK_IMPORTED_MODULE_1__.VisualizationManager.getVisualizersByType(question.inputType, type);
15403
16484
  }
15404
16485
  else {
15405
- creators = _visualizationManager__WEBPACK_IMPORTED_MODULE_0__.VisualizationManager.getVisualizersByType(type);
16486
+ var fallbackType = undefined;
16487
+ if (question instanceof survey_core__WEBPACK_IMPORTED_MODULE_0__.QuestionCustomModel) {
16488
+ fallbackType = question.getDynamicType();
16489
+ // questionForCreator = question.contentQuestion;
16490
+ }
16491
+ else if (question instanceof survey_core__WEBPACK_IMPORTED_MODULE_0__.QuestionCompositeModel) {
16492
+ fallbackType = "composite";
16493
+ }
16494
+ creators = _visualizationManager__WEBPACK_IMPORTED_MODULE_1__.VisualizationManager.getVisualizersByType(type, fallbackType);
15406
16495
  }
15407
- var visualizers = creators.map(function (creator) { return new creator(question, data, options); });
16496
+ var visualizers = creators.map(function (creator) { return new creator(questionForCreator, data, optionsForCreator); });
15408
16497
  if (visualizers.length > 1) {
15409
- var alternativesVisualizerConstructor = _visualizationManager__WEBPACK_IMPORTED_MODULE_0__.VisualizationManager.getAltVisualizerSelector();
15410
- var visualizer = new alternativesVisualizerConstructor(visualizers, question, data, options);
16498
+ var alternativesVisualizerConstructor = _visualizationManager__WEBPACK_IMPORTED_MODULE_1__.VisualizationManager.getAltVisualizerSelector();
16499
+ var visualizer = new alternativesVisualizerConstructor(visualizers, questionForCreator, data, optionsForCreator);
15411
16500
  return visualizer;
15412
16501
  }
15413
16502
  return visualizers[0];
@@ -17323,22 +18412,23 @@ __webpack_require__.r(__webpack_exports__);
17323
18412
  /* harmony export */ AlternativeVisualizersWrapper: () => (/* reexport safe */ _alternativeVizualizersWrapper__WEBPACK_IMPORTED_MODULE_28__.AlternativeVisualizersWrapper),
17324
18413
  /* harmony export */ BooleanModel: () => (/* reexport safe */ _boolean__WEBPACK_IMPORTED_MODULE_19__.BooleanModel),
17325
18414
  /* harmony export */ DataProvider: () => (/* reexport safe */ _dataProvider__WEBPACK_IMPORTED_MODULE_15__.DataProvider),
17326
- /* harmony export */ DocumentHelper: () => (/* reexport safe */ _utils_index__WEBPACK_IMPORTED_MODULE_36__.DocumentHelper),
18415
+ /* harmony export */ DocumentHelper: () => (/* reexport safe */ _utils_index__WEBPACK_IMPORTED_MODULE_37__.DocumentHelper),
17327
18416
  /* harmony export */ HistogramModel: () => (/* reexport safe */ _histogram__WEBPACK_IMPORTED_MODULE_20__.HistogramModel),
17328
18417
  /* harmony export */ Matrix: () => (/* reexport safe */ _matrix__WEBPACK_IMPORTED_MODULE_18__.Matrix),
17329
- /* harmony export */ NpsAdapter: () => (/* reexport safe */ _nps__WEBPACK_IMPORTED_MODULE_33__.NpsAdapter),
17330
- /* harmony export */ NpsVisualizer: () => (/* reexport safe */ _nps__WEBPACK_IMPORTED_MODULE_33__.NpsVisualizer),
17331
- /* harmony export */ NpsVisualizerWidget: () => (/* reexport safe */ _nps__WEBPACK_IMPORTED_MODULE_33__.NpsVisualizerWidget),
18418
+ /* harmony export */ NpsAdapter: () => (/* reexport safe */ _nps__WEBPACK_IMPORTED_MODULE_34__.NpsAdapter),
18419
+ /* harmony export */ NpsVisualizer: () => (/* reexport safe */ _nps__WEBPACK_IMPORTED_MODULE_34__.NpsVisualizer),
18420
+ /* harmony export */ NpsVisualizerWidget: () => (/* reexport safe */ _nps__WEBPACK_IMPORTED_MODULE_34__.NpsVisualizerWidget),
17332
18421
  /* harmony export */ NumberModel: () => (/* reexport safe */ _number__WEBPACK_IMPORTED_MODULE_21__.NumberModel),
17333
- /* harmony export */ PivotModel: () => (/* reexport safe */ _pivot__WEBPACK_IMPORTED_MODULE_35__.PivotModel),
18422
+ /* harmony export */ PivotModel: () => (/* reexport safe */ _pivot__WEBPACK_IMPORTED_MODULE_36__.PivotModel),
17334
18423
  /* harmony export */ PostponeHelper: () => (/* reexport safe */ _visualizerBase__WEBPACK_IMPORTED_MODULE_22__.PostponeHelper),
17335
- /* harmony export */ RankingModel: () => (/* reexport safe */ _ranking__WEBPACK_IMPORTED_MODULE_34__.RankingModel),
18424
+ /* harmony export */ RankingModel: () => (/* reexport safe */ _ranking__WEBPACK_IMPORTED_MODULE_35__.RankingModel),
17336
18425
  /* harmony export */ SelectBase: () => (/* reexport safe */ _selectBase__WEBPACK_IMPORTED_MODULE_17__.SelectBase),
17337
- /* harmony export */ StatisticsTable: () => (/* reexport safe */ _statistics_table__WEBPACK_IMPORTED_MODULE_32__.StatisticsTable),
17338
- /* harmony export */ StatisticsTableAdapter: () => (/* reexport safe */ _statistics_table__WEBPACK_IMPORTED_MODULE_32__.StatisticsTableAdapter),
17339
- /* harmony export */ StatisticsTableBoolean: () => (/* reexport safe */ _statistics_table__WEBPACK_IMPORTED_MODULE_32__.StatisticsTableBoolean),
17340
- /* harmony export */ Text: () => (/* reexport safe */ _text__WEBPACK_IMPORTED_MODULE_31__.Text),
17341
- /* harmony export */ TextTableAdapter: () => (/* reexport safe */ _text__WEBPACK_IMPORTED_MODULE_31__.TextTableAdapter),
18426
+ /* harmony export */ StatisticsTable: () => (/* reexport safe */ _statistics_table__WEBPACK_IMPORTED_MODULE_33__.StatisticsTable),
18427
+ /* harmony export */ StatisticsTableAdapter: () => (/* reexport safe */ _statistics_table__WEBPACK_IMPORTED_MODULE_33__.StatisticsTableAdapter),
18428
+ /* harmony export */ StatisticsTableBoolean: () => (/* reexport safe */ _statistics_table__WEBPACK_IMPORTED_MODULE_33__.StatisticsTableBoolean),
18429
+ /* harmony export */ Text: () => (/* reexport safe */ _text__WEBPACK_IMPORTED_MODULE_32__.Text),
18430
+ /* harmony export */ TextTableAdapter: () => (/* reexport safe */ _text__WEBPACK_IMPORTED_MODULE_32__.TextTableAdapter),
18431
+ /* harmony export */ VisualizationComposite: () => (/* reexport safe */ _visualizationComposite__WEBPACK_IMPORTED_MODULE_29__.VisualizationComposite),
17342
18432
  /* harmony export */ VisualizationManager: () => (/* reexport safe */ _visualizationManager__WEBPACK_IMPORTED_MODULE_23__.VisualizationManager),
17343
18433
  /* harmony export */ VisualizationMatrixDropdown: () => (/* reexport safe */ _visualizationMatrixDropdown__WEBPACK_IMPORTED_MODULE_27__.VisualizationMatrixDropdown),
17344
18434
  /* harmony export */ VisualizationMatrixDynamic: () => (/* reexport safe */ _visualizationMatrixDynamic__WEBPACK_IMPORTED_MODULE_26__.VisualizationMatrixDynamic),
@@ -17346,13 +18436,15 @@ __webpack_require__.r(__webpack_exports__);
17346
18436
  /* harmony export */ VisualizationPanelDynamic: () => (/* reexport safe */ _visualizationPanelDynamic__WEBPACK_IMPORTED_MODULE_25__.VisualizationPanelDynamic),
17347
18437
  /* harmony export */ VisualizerBase: () => (/* reexport safe */ _visualizerBase__WEBPACK_IMPORTED_MODULE_22__.VisualizerBase),
17348
18438
  /* harmony export */ VisualizerFactory: () => (/* reexport safe */ _visualizerFactory__WEBPACK_IMPORTED_MODULE_16__.VisualizerFactory),
17349
- /* harmony export */ WordCloud: () => (/* reexport safe */ _wordcloud_wordcloud__WEBPACK_IMPORTED_MODULE_29__.WordCloud),
17350
- /* harmony export */ WordCloudAdapter: () => (/* reexport safe */ _wordcloud_wordcloud__WEBPACK_IMPORTED_MODULE_29__.WordCloudAdapter),
18439
+ /* harmony export */ WordCloud: () => (/* reexport safe */ _wordcloud_wordcloud__WEBPACK_IMPORTED_MODULE_30__.WordCloud),
18440
+ /* harmony export */ WordCloudAdapter: () => (/* reexport safe */ _wordcloud_wordcloud__WEBPACK_IMPORTED_MODULE_30__.WordCloudAdapter),
18441
+ /* harmony export */ getBestIntervalMode: () => (/* reexport safe */ _histogram__WEBPACK_IMPORTED_MODULE_20__.getBestIntervalMode),
17351
18442
  /* harmony export */ hideEmptyAnswersInData: () => (/* reexport safe */ _selectBase__WEBPACK_IMPORTED_MODULE_17__.hideEmptyAnswersInData),
18443
+ /* harmony export */ intervalCalculators: () => (/* reexport safe */ _histogram__WEBPACK_IMPORTED_MODULE_20__.intervalCalculators),
17352
18444
  /* harmony export */ localization: () => (/* reexport safe */ _localizationManager__WEBPACK_IMPORTED_MODULE_0__.localization),
17353
18445
  /* harmony export */ setupLocale: () => (/* reexport safe */ _localizationManager__WEBPACK_IMPORTED_MODULE_0__.setupLocale),
17354
18446
  /* harmony export */ surveyStrings: () => (/* reexport safe */ _localizationManager__WEBPACK_IMPORTED_MODULE_0__.surveyStrings),
17355
- /* harmony export */ textHelper: () => (/* reexport safe */ _wordcloud_stopwords_index__WEBPACK_IMPORTED_MODULE_30__.textHelper)
18447
+ /* harmony export */ textHelper: () => (/* reexport safe */ _wordcloud_stopwords_index__WEBPACK_IMPORTED_MODULE_31__.textHelper)
17356
18448
  /* harmony export */ });
17357
18449
  /* harmony import */ var _localizationManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../localizationManager */ "./src/localizationManager.ts");
17358
18450
  /* harmony import */ var _analytics_localization_farsi__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../analytics-localization/farsi */ "./src/analytics-localization/farsi.ts");
@@ -17383,14 +18475,15 @@ __webpack_require__.r(__webpack_exports__);
17383
18475
  /* harmony import */ var _visualizationMatrixDynamic__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../visualizationMatrixDynamic */ "./src/visualizationMatrixDynamic.ts");
17384
18476
  /* harmony import */ var _visualizationMatrixDropdown__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../visualizationMatrixDropdown */ "./src/visualizationMatrixDropdown.ts");
17385
18477
  /* harmony import */ var _alternativeVizualizersWrapper__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../alternativeVizualizersWrapper */ "./src/alternativeVizualizersWrapper.ts");
17386
- /* harmony import */ var _wordcloud_wordcloud__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../wordcloud/wordcloud */ "./src/wordcloud/wordcloud.ts");
17387
- /* harmony import */ var _wordcloud_stopwords_index__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../wordcloud/stopwords/index */ "./src/wordcloud/stopwords/index.ts");
17388
- /* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../text */ "./src/text.ts");
17389
- /* harmony import */ var _statistics_table__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../statistics-table */ "./src/statistics-table.ts");
17390
- /* harmony import */ var _nps__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../nps */ "./src/nps.ts");
17391
- /* harmony import */ var _ranking__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../ranking */ "./src/ranking.ts");
17392
- /* harmony import */ var _pivot__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../pivot */ "./src/pivot.ts");
17393
- /* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../utils/index */ "./src/utils/index.ts");
18478
+ /* harmony import */ var _visualizationComposite__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../visualizationComposite */ "./src/visualizationComposite.ts");
18479
+ /* harmony import */ var _wordcloud_wordcloud__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../wordcloud/wordcloud */ "./src/wordcloud/wordcloud.ts");
18480
+ /* harmony import */ var _wordcloud_stopwords_index__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../wordcloud/stopwords/index */ "./src/wordcloud/stopwords/index.ts");
18481
+ /* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../text */ "./src/text.ts");
18482
+ /* harmony import */ var _statistics_table__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../statistics-table */ "./src/statistics-table.ts");
18483
+ /* harmony import */ var _nps__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../nps */ "./src/nps.ts");
18484
+ /* harmony import */ var _ranking__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../ranking */ "./src/ranking.ts");
18485
+ /* harmony import */ var _pivot__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../pivot */ "./src/pivot.ts");
18486
+ /* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../utils/index */ "./src/utils/index.ts");
17394
18487
 
17395
18488
  //localization
17396
18489
 
@@ -17428,6 +18521,7 @@ __webpack_require__.r(__webpack_exports__);
17428
18521
 
17429
18522
 
17430
18523
 
18524
+
17431
18525
 
17432
18526
 
17433
18527
  })();