blob: 6ff3a5150118b3b44c890652fb4db51dfe7166b3 [file] [log] [blame]
// 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 v1.0 which accompanies this distribution, and is available at //
// http://www.eclipse.org/legal/epl-v10.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function CViewModel_JSONEditor(p_viewmodel, p_options) {
"use strict";
/** constructor */
var v_viewmodel = p_viewmodel;
var v_options = p_options;
var v_dataPaths = [];
/** public functions - interface for parent */
this.setSelectionToControl = function(p_selection) {};
this.setBinder = function(p_binder) {};
this.setReponseDataPath = function(p_index, p_path) {
v_dataPaths[p_index] = p_path;
};
/** public functions - interface for views */
this.getJSONData = function(callback) {
callback(getResponse(0));
};
this.setJSONData = function(json) {
var response = v_viewmodel.getResponseElement(v_dataPaths[0]);
if (response != undefined && response.node != undefined) {
if (response.node.tp == 5) {
v_viewmodel.setResponseElement(v_dataPaths[0], a2hex(JSON.stringify(json)));
} else {
v_viewmodel.setResponseElement(v_dataPaths[0], JSON.stringify(json));
}
}
};
this.getSchema = function() {
if (v_dataPaths.length > 1) {
return getResponse(1);
} else {
return v_options.schema;
}
};
function getResponse(index) {
var returnValue;
var response = v_viewmodel.getResponseElement(v_dataPaths[index]);
if (response != undefined && response.node != undefined) {
if (response.node.tp == 5) {
return JSON.parse(hex2a(response.node.val));
} else {
return JSON.parse(response.node.val);
}
} else {
return {};
}
}
}
CViewModel_JSONEditor.getHelp = function() {
return "A viewmodel that can be used for editing json data using a json schema.";
}
CViewModel_JSONEditor.providesInterface = function() {
return ["getJSONData", "setJSONData", "getSchema"];
};
CViewModel_JSONEditor.getCustomDataSchema = function() {
return {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Custom data for CViewModel_JSONEditor",
"type": "object",
"properties": {
"schema": {
"description": "The json schema that the json editor will use if a second data connection is not present.",
"type": "object"
}
},
"additionalProperties": false
};
};
CViewModel_JSONEditor.expectsConnection = function() {
var dataConnections = [
{
"valueType": ["charstringType", "octetstringType"]
},
{
"valueType": ["charstringType", "octetstringType"],
"optional": true
}
];
var selectionConnections = [];
return {
"dataConnections": dataConnections,
"selectionConnections": selectionConnections
};
};
//# sourceURL=CustomizableApp\ViewModels\ViewModel_CodeEditor.js