123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- 'use strict';
- define(['underscore', '../../../../lib/@waca/core-client/js/core-client/ui/core/Events'], function (_, Events) {
- 'use strict';
- var VisModelManagerLeftover = null;
- VisModelManagerLeftover = Events.extend({
- init: function init(options) {
- VisModelManagerLeftover.inherited('init', this, arguments);
- this.content = options.content;
- this.widgetModel = options.widgetModel;
- this.ownerWidget = options.ownerWidget;
- this.dashboardApi = options.dashboardApi;
- },
-
- _isCustomDataSelectionEnabled: function _isCustomDataSelectionEnabled() {
- return this.dashboardApi.getAppConfig('enableCustomDataSelection') || this.supportsCustomDataSelection();
- },
- supportsCustomDataSelection: function supportsCustomDataSelection() {
- return this.content.getFeature('Visualization').getDefinition().getProperty('supportsCustomDataSelection');
- },
-
- getCustomDataDecoration: function getCustomDataDecoration(decoration) {
- var decorations = [];
- if (this._isCustomDataSelectionEnabled()) {
- var customData = this.widgetModel.get('customData');
- if (customData && customData[decoration]) {
- customData[decoration].forEach(function (item) {
- decorations.push({
- id: item.id,
- value: item.value
- });
- });
- }
- }
- return decorations;
- },
-
- setCustomDataDecoration: function setCustomDataDecoration(decorationName, customDataDecorations, options) {
- if (this._isCustomDataSelectionEnabled() && this._isCustomDataUpdateNeeded(customDataDecorations)) {
-
- var idArray = customDataDecorations.map(function (decoration) {
- return {
- id: decoration.id,
- value: decoration.value
- };
- });
- var payload = {};
- payload[decorationName] = idArray;
- this.widgetModel.set({
- 'customData': payload
- }, options);
- }
- },
-
- getDecoratedCustomData: function getDecoratedCustomData(decorationName) {
- var decorations = this.getCustomDataDecoration(decorationName);
- var ids = decorations.map(function (decoration) {
- return decoration.id;
- });
- return this.getCustomData(ids);
- },
-
- getCustomData: function getCustomData(ids) {
- var customData = this.ownerWidget.getCustomData() || [];
-
- if (ids) {
- customData = customData.filter(function (payload) {
- return ids.find(function (id) {
- return id === payload.id;
- });
- });
- }
- return customData;
- },
-
- _isCustomDataUpdateNeeded: function _isCustomDataUpdateNeeded(customDataDecorations) {
- var currCustomData = this.widgetModel.get('customData');
- return currCustomData && currCustomData.selected && currCustomData.selected.length || customDataDecorations && customDataDecorations.length;
- }
- });
- return VisModelManagerLeftover;
- });
|