| // Copyright (c) 2000-2019 Ericsson Telecom AB 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 RequestConsole_RequestEditor_ViewModel(p_model, p_parent) {
|
| "use strict";
|
|
|
| var v_model = p_model;
|
| var v_parent = p_parent;
|
| var dataSourceUtils = new DataSourceUtils();
|
| var v_desktopData;
|
| var v_binder;
|
|
|
| var v_help;
|
| var v_requests = [];
|
| var v_requestBuilder = new DSHelpToRequest_manual();
|
| v_requestBuilder.setRequest(v_requests);
|
|
|
| var v_this = this;
|
|
|
| ///////////////////// GENERAL FUNCTIONS /////////////////////
|
|
|
| this.init = function(p_callback) {
|
| function helpArrived(ok, help) {
|
| if (ok) {
|
| v_help = help;
|
| p_callback(true);
|
| } else {
|
| p_callback(false, "Error getting help");
|
| }
|
| }
|
|
|
| v_model.getDsRestAPI().getHelp(helpArrived);
|
| };
|
|
|
| this.setBinder = function(p_binder) {
|
| v_binder = p_binder;
|
| };
|
|
|
| this.setSetup = function(setup) {
|
| v_requests = setup.request.getData();
|
| v_requestBuilder.setRequest(v_requests);
|
| };
|
|
|
| this.modelChanged = function() {
|
| if (v_binder)
|
| v_binder.modelChanged();
|
| }
|
|
|
| ///////////////////// FUNCTIONS FOR VIEW VISUALIZATION /////////////////////
|
|
|
| this.getHelp = function(refresh, toSort, elementIcon) {
|
| function helpArrived(ok, p_help) {
|
| if (ok) {
|
| v_help = p_help;
|
| var help = new HelpTreeBuilder(mcopy(v_help)).getHelpTree(toSort);
|
| v_requestBuilder.setHelp(help);
|
| var jsTreeData = dataSourceUtils.convertHelpToTreeDataArray(help.sources, elementIcon);
|
| refresh(jsTreeData);
|
| } else {
|
| alert("Failed to get help");
|
| refresh([]);
|
| }
|
| }
|
| v_model.getDsRestAPI().getHelp(helpArrived);
|
| };
|
|
|
| this.getRawHelp = function() {
|
| return v_help;
|
| };
|
|
|
| this.getRequestTree = function(refresh) {
|
| var jsTreeData = dataSourceUtils.convertRequestToTreeDataArray(v_requests);
|
| refresh(jsTreeData);
|
| };
|
|
|
| this.getFilterAsTree = function(p_path) {
|
| var filter = v_requestBuilder.getFilterPart(p_path, []);
|
| var treeData = [];
|
| if (filter != undefined) {
|
| traverseFilter(filter, treeData);
|
| }
|
| return treeData;
|
| };
|
|
|
| function traverseFilter(filter, treeData, paramName) {
|
| var treeNode;
|
| var treeNodeText = "";
|
| if (paramName != undefined) {
|
| treeNodeText = paramName + ": ";
|
| }
|
| if (filter.dataValue != undefined) {
|
| treeNode = {"text": treeNodeText + filter.dataValue};
|
| treeData.push(treeNode);
|
| } else if (filter.request != undefined) {
|
| treeNode = {"text": treeNodeText + filter.request.element, "children": []};
|
| treeData.push(treeNode);
|
| if (filter.request.params != undefined && filter.request.params.length > 0) {
|
| for (var i = 0; i < filter.request.params.length; ++i) {
|
| traverseFilter(filter.request.params[i].paramValue, treeNode.children, filter.request.params[i].paramName);
|
| }
|
| }
|
| if (filter.request.remapTo != undefined) {
|
| traverseFilter(filter.request.remapTo, treeNode.children, "remapTo");
|
| }
|
| }
|
| }
|
|
|
| this.findSelectionsAndFilters = function() {
|
| traverseRequest(v_requests, [], selectionOrFilterChanged);
|
| };
|
|
|
| function selectionOrFilterChanged(node, path) {
|
| if (node.getData)
|
| v_binder.selectionOrFilterChanged(path, node.getData.selection != undefined, node.getData.filter != undefined, node.getData.rangeFilter != undefined, node.getData.writableInfo != undefined, "getData");
|
| else if (node.setData)
|
| v_binder.selectionOrFilterChanged(path, node.setData.selection != undefined, node.setData.filter != undefined, node.setData.rangeFilter != undefined, node.setData.writableInfo != undefined, "setData");
|
| }
|
|
|
| function traverseRequest(list, path, processGetData) {
|
| for (var i = 0; i < list.length; ++i) {
|
| path.push(i);
|
| processGetData(list[i], path);
|
| if (list[i].getData && list[i].getData.children != undefined) {
|
| traverseRequest(list[i].getData.children, path, processGetData);
|
| } else if (list[i].setData && list[i].setData.children != undefined) {
|
| traverseRequest(list[i].setData.children, path, processGetData);
|
| }
|
| path.pop();
|
| }
|
| }
|
|
|
| this.selectionAdded = function(p_path) {
|
| var request = v_this.getRequestFromPath(p_path);
|
| if (request.getData.selection == undefined) {
|
| request.getData.selection = [0];
|
| }
|
| selectionOrFilterChanged(request, p_path);
|
| v_parent.setupChanged("Selection added");
|
| };
|
|
|
| this.setDesktopData = function(p_data) {
|
| v_desktopData = p_data;
|
| };
|
|
|
| this.getDesktopData = function() {
|
| return v_desktopData;
|
| };
|
|
|
| this.getRequestSchema = function() {
|
| return v_model.getRequestSchema();
|
| }
|
|
|
| ///////////////////// FUNCTIONS FOR REQUEST EDITING /////////////////////
|
|
|
| this.createRequest = function(p_helpPath, p_position, partialRefresh) {
|
| var request = v_requestBuilder.createRequest(p_helpPath, p_position);
|
| partialRefresh([p_position], dataSourceUtils.convertRequestToTreeDataArray([request])[0]);
|
| v_parent.setupChanged('Request added: "' + request.getData.element + '"');
|
| };
|
|
|
| this.createEmptyRequest = function(p_position, partialRefresh) {
|
| var request = v_requestBuilder.createEmptyRequest(p_position);
|
| partialRefresh([p_position], dataSourceUtils.convertRequestToTreeDataArray([request])[0]);
|
| v_parent.setupChanged("Empty request added");
|
| };
|
|
|
| this.addChildRequest = function(p_helpPath, p_requestPath, p_position, partialRefresh) {
|
| var childRequest = v_requestBuilder.addChildRequest(p_helpPath, mcopy(p_requestPath), p_position);
|
| p_requestPath.push(p_position);
|
| partialRefresh(p_requestPath, dataSourceUtils.convertRequestToTreeDataArray([childRequest])[0]);
|
| v_parent.setupChanged('Child request added: "' + childRequest.getData.element + '"');
|
| };
|
|
|
| this.addEmptyChildRequest = function(p_requestPath, p_position, partialRefresh) {
|
| var childRequest = v_requestBuilder.addEmptyChildRequest(mcopy(p_requestPath), p_position);
|
| p_requestPath.push(p_position);
|
| partialRefresh(p_requestPath, dataSourceUtils.convertRequestToTreeDataArray([childRequest])[0]);
|
| v_parent.setupChanged("Empty child request added");
|
| };
|
|
|
| this.copyRequest = function(p_path, partialRefresh) {
|
| var childRequest = v_requestBuilder.copyRequest(mcopy(p_path));
|
| p_path[p_path.length - 1] += 1;
|
| partialRefresh(p_path, dataSourceUtils.convertRequestToTreeDataArray([childRequest])[0]);
|
| v_parent.setupChanged('Request copied');
|
| };
|
|
|
| this.convertToSizeOf = function(p_path, refresh) {
|
| var request = v_this.getRequestFromPath(p_path);
|
| if (request.getData)
|
| convertTo(request.getData, "sizeOf");
|
| else {
|
| convertTo(request.setData, "sizeOf");
|
| request.getData = request.setData;
|
| delete request.setData.content;
|
| delete request.setData.tp;
|
| delete request.setData;
|
| }
|
| refresh(p_path, "sizeOf");
|
| v_parent.setupChanged('Request converted to "sizeOf"');
|
| };
|
|
|
| this.convertToSetData = function(p_path, refresh) {
|
| var request = v_this.getRequestFromPath(p_path);
|
| if (request.getData) {
|
| request.setData = request.getData;
|
| request.setData.content = "";
|
| request.setData.tp = 0;
|
| delete request.getData;
|
| } else {
|
| request.getData = request.setData;
|
| delete request.setData.content;
|
| delete request.setData.tp;
|
| delete request.setData;
|
| }
|
| selectionOrFilterChanged(request, p_path);
|
| v_parent.setupChanged('Request converted to "setData"');
|
| };
|
|
|
| this.convertToDataElementPresent = function(p_path, refresh) {
|
| var request = v_this.getRequestFromPath(p_path);
|
| if (request.getData)
|
| convertTo(request.getData, "dataElementPresent");
|
| else {
|
| convertTo(request.setData, "dataElementPresent");
|
| request.getData = request.setData;
|
| delete request.setData.content;
|
| delete request.setData.tp;
|
| delete request.setData;
|
| }
|
| refresh(p_path, "dataElementPresent");
|
| v_parent.setupChanged('Request converted to "dataElementPresent"');
|
| };
|
|
|
| this.matches = function(string, path) {
|
| var request = v_requestBuilder.getRequestCopy(path);
|
| return JSON.stringify(request).toLowerCase().indexOf(string) != -1;
|
| };
|
|
|
| function convertTo(request, p_element) {
|
| var source = request.source;
|
| var element = request.element;
|
| var ptcname = request.ptcname;
|
| var params = request.params;
|
| if (params == undefined) {
|
| params = [];
|
| }
|
|
|
| request.source = "DataSource";
|
| request.element = p_element;
|
| request.ptcname = undefined;
|
| request.filter = undefined;
|
| request.rangeFilter = undefined;
|
| request.params = [{
|
| "paramName": "Source",
|
| "paramValue": source
|
| }, {
|
| "paramName": "Element",
|
| "paramValue": element
|
| }];
|
| if (ptcname != undefined) {
|
| request.params.push({
|
| "paramName": "PTCName",
|
| "paramValue": ptcname
|
| })
|
| }
|
|
|
| for (var i = 0; i < params.length; ++i) {
|
| request.params.push({
|
| "paramName": "ParamName",
|
| "paramValue": params[i].paramName
|
| });
|
| request.params.push({
|
| "paramName": "ParamValue",
|
| "paramValue": params[i].paramValue
|
| });
|
| }
|
| }
|
|
|
| this.isValidToAddRequest = v_requestBuilder.isValidToAddRequest;
|
| this.isValidToCreateRequest = v_requestBuilder.isValidToCreateRequest;
|
| this.isValidToMoveRequest = v_requestBuilder.isValidToMoveRequest;
|
|
|
| this.moveRequest = function(p_fromPath, p_toPath, p_position) {
|
| v_requestBuilder.moveRequest(p_fromPath, p_toPath, p_position);
|
| v_parent.setupChanged("Request moved");
|
| };
|
|
|
| this.deleteRequest = function(data) {
|
| v_requestBuilder.deleteRequest(data);
|
| v_parent.setupChanged("Request deleted");
|
| };
|
|
|
| this.getRequest = v_requestBuilder.getRequest;
|
| this.getRequestFromPath = v_requestBuilder.getRequestFromPath;
|
| this.getRequestCopy = v_requestBuilder.getRequestCopy;
|
|
|
| ///////////////////// FUNCTIONS FOR FILTER EDITING /////////////////////
|
|
|
| this.getFilterPart = v_requestBuilder.getFilterPart;
|
| this.getFilterPartCopy = v_requestBuilder.getFilterPartCopy;
|
| this.addFilterPart = function(p_requestPath, p_filterPath, p_paramName) {
|
| v_requestBuilder.addFilterPart(p_requestPath, p_filterPath, p_paramName);
|
| v_parent.setupChanged("Filter added");
|
| };
|
| this.deleteFilterPart = function(p_requestPath, p_filterPath) {
|
| v_requestBuilder.deleteFilterPart(p_requestPath, p_filterPath);
|
| v_parent.setupChanged("Filter deleted");
|
| };
|
| this.convertFilterPartToRequest = function(p_requestPath, p_filterPath, p_helpPath) {
|
| v_requestBuilder.convertFilterPartToRequest(p_requestPath, p_filterPath, p_helpPath);
|
| v_parent.setupChanged("Filter type converted to request");
|
| };
|
| this.convertFilterPartToDataValue = function(p_requestPath, p_filterPath, p_newValue) {
|
| v_requestBuilder.convertFilterPartToDataValue(p_requestPath, p_filterPath, p_newValue);
|
| v_parent.setupChanged("Filter type converted to data value");
|
| };
|
| this.isValidToConvertFilterToRequest = v_requestBuilder.isValidToConvertFilterToRequest;
|
| this.changeParamNameOfFilterRequest = function(p_requestPath, p_filterPath, p_paramName) {
|
| v_requestBuilder.changeParamNameOfFilterRequest(p_requestPath, p_filterPath, p_paramName);
|
| v_parent.setupChanged("Filter param name changed");
|
| };
|
| this.isValidToAddParamToFilterRequest = v_requestBuilder.isValidToAddParamToFilterRequest;
|
| this.convertToDataElementPresentInFilter = function(p_requestPath, p_filterPath) {
|
| var filter = v_requestBuilder.getFilterPart(p_requestPath, p_filterPath);
|
| var params = filter.request.params;
|
| convertTo(filter.request, "dataElementPresent");
|
| for (var i = 0; i < filter.request.params.length; ++i) {
|
| if (filter.request.params[i].paramValue.dataValue == undefined) {
|
| filter.request.params[i].paramValue = {"dataValue": filter.request.params[i].paramValue};
|
| }
|
| }
|
| v_parent.setupChanged('Filter element converted to "dataElementPresent"');
|
| };
|
| }
|
| //# sourceURL=RequestConsole\ViewModels\ViewModel_RequestEditor.js
|