| // Copyright (c) 2000-2017 Ericsson Telecom AB // |
| // All rights reserved. This program and the accompanying materials are made available under the // |
| // terms of the Eclipse Public License v2.0 which accompanies this distribution, and is available at // |
| // https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html // |
| /////////////////////////////////////////////////////////////////////////////////////////////////////// |
| function CViewModel_RequestToggle(p_viewmodel, p_options) { |
| "use strict"; |
| |
| /** constructor */ |
| |
| var v_viewmodel = p_viewmodel; |
| var v_options = p_options; |
| |
| var v_binder; |
| var v_dataPaths = []; |
| var v_selections = []; |
| |
| var v_selected = 0; |
| var v_defaultFilter; |
| |
| var v_filters = []; |
| |
| /** public functions - interface for parent */ |
| |
| this.setSelectionToControl = function(p_selection) { |
| v_selections.push(p_selection); |
| }; |
| |
| this.setReponseDataPath = function(p_index, p_path) { |
| v_dataPaths[p_index] = p_path; |
| var request = v_viewmodel.getRequestFromPath(p_path); |
| v_filters[p_index] = request.getData.filter; |
| if (v_options.toggleGroups[1] != undefined && p_index >= v_options.toggleGroups[1]) { |
| request.getData.filter = {"dataValue": "false"}; |
| } |
| }; |
| |
| this.setBinder = function(p_binder) { |
| v_binder = p_binder; |
| }; |
| |
| /** public functions - interface for views */ |
| |
| this.select = function(groupIndex) { |
| v_selected = groupIndex; |
| |
| var firstDataPathIndex = v_options.toggleGroups[groupIndex]; |
| var lastDataPathIndex = v_options.toggleGroups[groupIndex + 1]; |
| if (lastDataPathIndex == undefined) { |
| lastDataPathIndex = v_dataPaths.length; |
| } |
| |
| for (var i = 0; i < firstDataPathIndex; ++i) { |
| setFilter(i, false); |
| } |
| |
| for (var i = firstDataPathIndex; i < lastDataPathIndex; ++i) { |
| setFilter(i, true); |
| } |
| |
| for (var i = lastDataPathIndex; i < v_dataPaths.length; ++i) { |
| setFilter(i, false); |
| } |
| |
| v_binder.notifyChange(true); |
| }; |
| |
| this.getList = function() { |
| return {"selections": [v_selected]}; |
| }; |
| |
| /** private functions */ |
| |
| function setFilter(dataPathIndex, setOriginal) { |
| var request = v_viewmodel.getRequestFromPath(v_dataPaths[dataPathIndex]); |
| if (request != undefined) { |
| if (setOriginal) { |
| request.getData.filter = v_filters[dataPathIndex]; |
| } else { |
| request.getData.filter = {"dataValue": "false"}; |
| } |
| } |
| } |
| } |
| |
| CViewModel_RequestToggle.getHelp = function() { |
| return "This viewmodel can be used to toggle the filter of the connected request groups between their original filters and a constant false filter."; |
| } |
| |
| CViewModel_RequestToggle.providesInterface = function() { |
| return ["select", "getList"]; |
| }; |
| |
| CViewModel_RequestToggle.getCustomDataSchema = function() { |
| return { |
| "$schema": "http://json-schema.org/draft-04/schema#", |
| "title": "Custom data for CViewModel_RequestToggle", |
| "type": "object", |
| "properties": { |
| "toggleGroups": { |
| "description": "The index of the first element in each group.", |
| "type": "array", |
| "format": "table", |
| "items": { |
| "title": "group", |
| "type": "integer", |
| "min": 0, |
| "uniqueItems": true, |
| "minItems": 1 |
| } |
| }, |
| "filterIndex": { |
| "type": "integer", |
| "description": "The data path index whose filter will be used as default.", |
| "default": 0 |
| } |
| }, |
| "additionalProperties": false, |
| "required": ["toggleGroups"] |
| }; |
| }; |
| |
| //# sourceURL=CustomizableApp\ViewModels\ViewModel_RequestToggle.js |