survey-analytics 2.2.5 → 2.3.0

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 (37) hide show
  1. package/fesm/shared.mjs +2 -1
  2. package/fesm/shared.mjs.map +1 -1
  3. package/fesm/shared2.mjs +24 -6
  4. package/fesm/shared2.mjs.map +1 -1
  5. package/fesm/survey.analytics.core.mjs +1 -1
  6. package/fesm/survey.analytics.mjs +80 -19
  7. package/fesm/survey.analytics.mjs.map +1 -1
  8. package/fesm/survey.analytics.tabulator.mjs +1 -1
  9. package/package.json +2 -2
  10. package/survey-analytics-tabulator.types/analytics-localization/english.d.ts +1 -0
  11. package/survey-analytics-tabulator.types/localizationManager.d.ts +1 -0
  12. package/survey-analytics.types/analytics-localization/english.d.ts +1 -0
  13. package/survey-analytics.types/config.d.ts +1 -0
  14. package/survey-analytics.types/localizationManager.d.ts +1 -0
  15. package/survey-analytics.types/plotly/chart-adapter.d.ts +1 -0
  16. package/survey-analytics.types/plotly/setup.d.ts +1 -0
  17. package/survey-analytics.types/ranking.d.ts +4 -0
  18. package/survey-analytics.types/visualizationMatrixDropdown.d.ts +1 -0
  19. package/survey-analytics.types/visualizationPanel.d.ts +4 -2
  20. package/survey.analytics.core.css +1 -1
  21. package/survey.analytics.core.js +39 -19
  22. package/survey.analytics.core.js.map +1 -1
  23. package/survey.analytics.core.min.css +1 -1
  24. package/survey.analytics.core.min.js +1 -1
  25. package/survey.analytics.core.min.js.LICENSE.txt +1 -1
  26. package/survey.analytics.css +1 -1
  27. package/survey.analytics.js +133 -50
  28. package/survey.analytics.js.map +1 -1
  29. package/survey.analytics.min.css +1 -1
  30. package/survey.analytics.min.js +1 -1
  31. package/survey.analytics.min.js.LICENSE.txt +1 -1
  32. package/survey.analytics.tabulator.css +1 -1
  33. package/survey.analytics.tabulator.js +2 -1
  34. package/survey.analytics.tabulator.js.map +1 -1
  35. package/survey.analytics.tabulator.min.css +1 -1
  36. package/survey.analytics.tabulator.min.js +1 -1
  37. package/survey.analytics.tabulator.min.js.LICENSE.txt +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - SurveyJS Dashboard library v2.2.5
2
+ * surveyjs - SurveyJS Dashboard library v2.3.0
3
3
  * Copyright (c) 2015-2025 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "pre-push-check": "npm run lint && npm run test",
19
19
  "postinstall": "playwright install chromium"
20
20
  },
21
- "version": "2.2.5",
21
+ "version": "2.3.0",
22
22
  "name": "survey-analytics",
23
23
  "description": "SurveyJS analytics Library.",
24
24
  "main": "survey.analytics.js",
@@ -90,7 +90,7 @@
90
90
  "peerDependencies": {
91
91
  "@types/plotly.js-dist-min": "^2.3.0",
92
92
  "@types/tabulator-tables": "^6.2.3",
93
- "survey-core": "2.2.5"
93
+ "survey-core": "2.3.0"
94
94
  },
95
95
  "husky": {
96
96
  "hooks": {
@@ -28,6 +28,7 @@ export declare var englishStrings: {
28
28
  chartType_gauge: string;
29
29
  chartType_bullet: string;
30
30
  chartType_line: string;
31
+ chartType_radar: string;
31
32
  hideButton: string;
32
33
  makePrivateButton: string;
33
34
  makePublicButton: string;
@@ -43,6 +43,7 @@ export declare var surveyStrings: {
43
43
  chartType_gauge: string;
44
44
  chartType_bullet: string;
45
45
  chartType_line: string;
46
+ chartType_radar: string;
46
47
  hideButton: string;
47
48
  makePrivateButton: string;
48
49
  makePublicButton: string;
@@ -28,6 +28,7 @@ export declare var englishStrings: {
28
28
  chartType_gauge: string;
29
29
  chartType_bullet: string;
30
30
  chartType_line: string;
31
+ chartType_radar: string;
31
32
  hideButton: string;
32
33
  makePrivateButton: string;
33
34
  makePublicButton: string;
@@ -35,6 +35,7 @@ export interface IVisualizerPanelElement {
35
35
  * - `"doughnut"`
36
36
  * - `"gauge"`
37
37
  * - `"bullet"`
38
+ * - `"radar"`
38
39
  */
39
40
  chartType?: string;
40
41
  /**
@@ -43,6 +43,7 @@ export declare var surveyStrings: {
43
43
  chartType_gauge: string;
44
44
  chartType_bullet: string;
45
45
  chartType_line: string;
46
+ chartType_radar: string;
46
47
  hideButton: string;
47
48
  makePrivateButton: string;
48
49
  makePublicButton: string;
@@ -8,6 +8,7 @@ export declare const plotlyChartTypes: {
8
8
  matrix: string[];
9
9
  matrixDropdownGrouped: string[];
10
10
  pivot: string[];
11
+ ranking: any[];
11
12
  };
12
13
  export declare class PlotlyChartAdapter implements IChartAdapter {
13
14
  protected model: SelectBase | VisualizerBase;
@@ -28,4 +28,5 @@ export declare class PlotlySetup {
28
28
  static setupVBar(model: SelectBase, answersData: IAnswersData): PlotlyOptions;
29
29
  static setupScatter(model: SelectBase, answersData: IAnswersData): PlotlyOptions;
30
30
  static setupGauge(model: NumberModel, answersData: IAnswersData): PlotlyOptions;
31
+ static setupRadar(model: SelectBase, answersData: IAnswersData): PlotlyOptions;
31
32
  }
@@ -1,5 +1,9 @@
1
1
  import { SelectBase } from "./selectBase";
2
+ import { QuestionRankingModel } from "survey-core";
2
3
  export declare class RankingModel extends SelectBase {
4
+ constructor(question: QuestionRankingModel, data: Array<{
5
+ [index: string]: any;
6
+ }>, options?: any, name?: string);
3
7
  getQuestionResults(): any[];
4
8
  getEmptyData(): any;
5
9
  protected getCalculatedValuesCore(): Array<any>;
@@ -8,6 +8,7 @@ export declare class VisualizationMatrixDropdown extends VisualizerBase {
8
8
  }>, options?: {
9
9
  [index: string]: any;
10
10
  }, name?: string);
11
+ get canGroupColumns(): boolean;
11
12
  protected setLocale(newLocale: string): void;
12
13
  get matrixDropdownVisualizer(): VisualizerBase;
13
14
  private onPanelAfterRenderCallback;
@@ -200,14 +200,16 @@ export interface IVisualizationPanelOptions {
200
200
  * - Matrix: `"bar"` | `"vbar"` | `"pie"` | `"doughnut"` | `"stackedbar"`
201
201
  * - Rating: `"bar"` | `"vbar"` | `"gauge"` | `"bullet"`
202
202
  * - Radiogroup, Checkbox, Dropdown, Image Picker: `"bar"` | `"vbar"` | `"pie"` | `"doughnut"`
203
+ * - Ranking: `"bar"` | `"vbar"` | `"pie"` | `"doughnut" | `"radar"`
203
204
  *
204
- * To set a type for an individual chart, access this chart in the `visualizers` array and set its `chartType` property to one of the values described above:
205
+ * To set a type for an individual chart, access this chart in the `visualizers` array or using the [`getVisualizer(questionName)`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#getVisualizer) method and set its `chartType` property to one of the values described above:
205
206
  *
206
207
  * ```js
207
208
  * const vizPanel = new SurveyAnalytics.VisualizationPanel( ... );
208
209
  * vizPanel.visualizers[0].chartType = "stackedbar";
210
+ * // --- or ---
211
+ * vizPanel.getVisualizer("my-question").chartType = "stackedbar";
209
212
  * ```
210
- *
211
213
  */
212
214
  defaultChartType?: string;
213
215
  /**
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - SurveyJS Dashboard library v2.2.5
2
+ * surveyjs - SurveyJS Dashboard library v2.3.0
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
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - SurveyJS Dashboard library v2.2.5
2
+ * surveyjs - SurveyJS Dashboard library v2.3.0
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
  */
@@ -7276,6 +7276,7 @@ var englishStrings = {
7276
7276
  chartType_gauge: "Gauge",
7277
7277
  chartType_bullet: "Bullet",
7278
7278
  chartType_line: "Line",
7279
+ chartType_radar: "Radar",
7279
7280
  hideButton: "Hide",
7280
7281
  makePrivateButton: "Make private",
7281
7282
  makePublicButton: "Make public",
@@ -10162,8 +10163,8 @@ __webpack_require__.r(__webpack_exports__);
10162
10163
 
10163
10164
  var RankingModel = /** @class */ (function (_super) {
10164
10165
  (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(RankingModel, _super);
10165
- function RankingModel() {
10166
- return _super !== null && _super.apply(this, arguments) || this;
10166
+ function RankingModel(question, data, options, name) {
10167
+ return _super.call(this, question, data, options, name || "ranking") || this;
10167
10168
  }
10168
10169
  RankingModel.prototype.getQuestionResults = function () {
10169
10170
  var name = this.question.name;
@@ -11860,7 +11861,7 @@ var VisualizationManager = /** @class */ (function () {
11860
11861
  if (constructor) {
11861
11862
  var visualizers = VisualizationManager.vizualizers[qType];
11862
11863
  if (!!visualizers) {
11863
- var vDescr = visualizers.filter(function (v) { return v.ctor === constructor; })[0];
11864
+ var vDescr = visualizers.filter(function (v) { return v.ctor === constructor || v.ctor.isPrototypeOf(constructor); })[0];
11864
11865
  if (!!vDescr) {
11865
11866
  var index = visualizers.indexOf(vDescr);
11866
11867
  if (index !== -1) {
@@ -11940,18 +11941,26 @@ __webpack_require__.r(__webpack_exports__);
11940
11941
  /* harmony export */ VisualizationMatrixDropdown: () => (/* binding */ VisualizationMatrixDropdown)
11941
11942
  /* harmony export */ });
11942
11943
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./src/utils/helpers.ts");
11943
- /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! survey-core */ "survey-core");
11944
- /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(survey_core__WEBPACK_IMPORTED_MODULE_1__);
11945
- /* harmony import */ var _visualizerBase__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./visualizerBase */ "./src/visualizerBase.ts");
11946
- /* harmony import */ var _visualizationManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./visualizationManager */ "./src/visualizationManager.ts");
11947
- /* harmony import */ var _visualizationPanel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./visualizationPanel */ "./src/visualizationPanel.ts");
11948
- /* harmony import */ var _dataProvider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dataProvider */ "./src/dataProvider.ts");
11949
-
11944
+ /* harmony import */ var _visualizerBase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./visualizerBase */ "./src/visualizerBase.ts");
11945
+ /* harmony import */ var _visualizationManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./visualizationManager */ "./src/visualizationManager.ts");
11946
+ /* harmony import */ var _visualizationPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./visualizationPanel */ "./src/visualizationPanel.ts");
11947
+ /* harmony import */ var _dataProvider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dataProvider */ "./src/dataProvider.ts");
11950
11948
 
11951
11949
 
11952
11950
 
11953
11951
 
11954
11952
 
11953
+ function isChoicesArraysEqual(choices1, choices2) {
11954
+ if (choices1.length !== choices2.length)
11955
+ return false;
11956
+ for (var i = 0; i < choices1.length; i++) {
11957
+ if (choices1[i].value !== choices2[i].value ||
11958
+ choices1[i].text !== choices2[i].text) {
11959
+ return false;
11960
+ }
11961
+ }
11962
+ return true;
11963
+ }
11955
11964
  var VisualizationMatrixDropdown = /** @class */ (function (_super) {
11956
11965
  (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(VisualizationMatrixDropdown, _super);
11957
11966
  function VisualizationMatrixDropdown(question, data, options, name) {
@@ -11969,19 +11978,30 @@ var VisualizationMatrixDropdown = /** @class */ (function (_super) {
11969
11978
  _this._childOptions.transposeData = true;
11970
11979
  _this._childOptions.seriesValues = question.rows.map(function (row) { return row.value; });
11971
11980
  _this._childOptions.seriesLabels = question.rows.map(function (row) { return row.text; });
11972
- var innerQuestions = _this.getQuestions();
11973
- var canGroupColumns = _this._childOptions.seriesValues.length == 1 && innerQuestions.every(function (innerQuestion) { return survey_core__WEBPACK_IMPORTED_MODULE_1__.Helpers.isArraysEqual(innerQuestion.choices, _this.question.choices); });
11974
- if (canGroupColumns) {
11975
- var creators = _visualizationManager__WEBPACK_IMPORTED_MODULE_3__.VisualizationManager.getVisualizersByType("matrixdropdown-grouped");
11981
+ if (_this.canGroupColumns) {
11982
+ var creators = _visualizationManager__WEBPACK_IMPORTED_MODULE_2__.VisualizationManager.getVisualizersByType("matrixdropdown-grouped");
11976
11983
  _this._matrixDropdownVisualizer = new creators[0](_this.question, [], _this._childOptions);
11977
11984
  }
11978
11985
  else {
11979
- _this._matrixDropdownVisualizer = new _visualizationPanel__WEBPACK_IMPORTED_MODULE_4__.VisualizationPanel(innerQuestions, [], _this._childOptions);
11986
+ var innerQuestions = _this.getQuestions();
11987
+ _this._matrixDropdownVisualizer = new _visualizationPanel__WEBPACK_IMPORTED_MODULE_3__.VisualizationPanel(innerQuestions, [], _this._childOptions);
11980
11988
  }
11981
11989
  _this._matrixDropdownVisualizer.onAfterRender.add(_this.onPanelAfterRenderCallback);
11982
11990
  _this.updateData(data);
11983
11991
  return _this;
11984
11992
  }
11993
+ Object.defineProperty(VisualizationMatrixDropdown.prototype, "canGroupColumns", {
11994
+ get: function () {
11995
+ var _this = this;
11996
+ var innerQuestions = this.getQuestions();
11997
+ var canGroupColumns = this._childOptions.seriesValues.length == 1 && innerQuestions.every(function (innerQuestion) {
11998
+ return innerQuestion.getType() !== "boolean" && isChoicesArraysEqual(innerQuestion.choices, _this.question.choices);
11999
+ });
12000
+ return canGroupColumns;
12001
+ },
12002
+ enumerable: false,
12003
+ configurable: true
12004
+ });
11985
12005
  VisualizationMatrixDropdown.prototype.setLocale = function (newLocale) {
11986
12006
  _super.prototype.setLocale.call(this, newLocale);
11987
12007
  this._childOptions.seriesLabels = this.question.rows.map(function (row) { return row.text; });
@@ -12002,7 +12022,7 @@ var VisualizationMatrixDropdown = /** @class */ (function (_super) {
12002
12022
  if (!!rawDataItem) {
12003
12023
  Object.keys(rawDataItem).forEach(function (key) {
12004
12024
  var nestedDataItem = Object.assign({}, rawDataItem[key]);
12005
- nestedDataItem[_dataProvider__WEBPACK_IMPORTED_MODULE_5__.DataProvider.seriesMarkerKey] = key;
12025
+ nestedDataItem[_dataProvider__WEBPACK_IMPORTED_MODULE_4__.DataProvider.seriesMarkerKey] = key;
12006
12026
  panelData.push(nestedDataItem);
12007
12027
  });
12008
12028
  }
@@ -12039,9 +12059,9 @@ var VisualizationMatrixDropdown = /** @class */ (function (_super) {
12039
12059
  this._matrixDropdownVisualizer.onAfterRender.remove(this.onPanelAfterRenderCallback);
12040
12060
  };
12041
12061
  return VisualizationMatrixDropdown;
12042
- }(_visualizerBase__WEBPACK_IMPORTED_MODULE_2__.VisualizerBase));
12062
+ }(_visualizerBase__WEBPACK_IMPORTED_MODULE_1__.VisualizerBase));
12043
12063
 
12044
- _visualizationManager__WEBPACK_IMPORTED_MODULE_3__.VisualizationManager.registerVisualizer("matrixdropdown", VisualizationMatrixDropdown);
12064
+ _visualizationManager__WEBPACK_IMPORTED_MODULE_2__.VisualizationManager.registerVisualizer("matrixdropdown", VisualizationMatrixDropdown);
12045
12065
 
12046
12066
 
12047
12067
  /***/ }),