123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- 'use strict';
- define(['../../lib/@waca/core-client/js/core-client/ui/core/Class', 'underscore'], function (Class, _) {
-
- var Svc = Class.extend({
- init: function init(boardModel) {
- this.boardModel = boardModel;
-
-
-
-
- this._filterContextAdapters = {
- 'data': this._convertDataWidgetFilterContext
-
- };
- },
-
- getMappings: function getMappings(cbMappingMatches, dataSetId, containerPageId) {
- var returnMappings = [];
- if (!this.boardModel) {
- return returnMappings;
- }
- var fAddMapping = function fAddMapping(mapping) {
- if (cbMappingMatches(mapping)) {
- returnMappings.push(mapping);
- }
- };
- _.keys(this.boardModel.widgetInstances).forEach(function (widgetInstanceModel) {
- var widgetInstance = this.boardModel.widgetInstances[widgetInstanceModel];
- var mappings = widgetInstance.mapping;
- if (mappings && !Array.isArray(mappings)) {
- mappings = [mappings];
- }
- var dataSetMatches = widgetInstance.dataSet && widgetInstance.dataSet.id === dataSetId;
- if (dataSetMatches && mappings) {
-
- var pageIdMatches = !containerPageId;
- if (!pageIdMatches) {
- var pageForWidget = this.boardModel.layout.findTopLevelParentItem(widgetInstance.id);
- pageIdMatches = pageForWidget && pageForWidget.id === containerPageId;
- }
- if (pageIdMatches) {
- _.each(mappings, fAddMapping);
- }
- }
- }, this);
- return returnMappings;
- },
-
- getFilterContext: function getFilterContext(dataSetId, eventGroupId) {
- var returnResults = [];
- if (!this.boardModel) {
- return returnResults;
- }
- _.keys(this.boardModel.widgetInstances).forEach(function (widgetInstanceModel) {
- var widgetInstance = this.boardModel.widgetInstances[widgetInstanceModel];
- var filterContextAdapter = this._filterContextAdapters[widgetInstance.type];
- var dataSetMatches = !dataSetId || widgetInstance.dataSet && widgetInstance.dataSet.id === dataSetId;
- if (dataSetMatches && filterContextAdapter) {
-
- var groupIdMatches = !eventGroupId;
- if (!groupIdMatches) {
- var eventGroup = this.boardModel.eventGroups.findGroup(widgetInstance.id);
- groupIdMatches = eventGroup && eventGroup.id === eventGroupId;
- }
- if (groupIdMatches) {
- returnResults.push(filterContextAdapter(widgetInstance));
- }
- }
- }, this);
- return returnResults;
- },
-
- _convertDataWidgetFilterContext: function _convertDataWidgetFilterContext(widgetInstance) {
- return {
- id: widgetInstance.id,
- dataSet: widgetInstance.dataSet,
- filterContext: widgetInstance.filters
- };
- }
- });
- return Svc;
- });
|