|
@@ -1,347 +0,0 @@
|
|
|
-<!DOCTYPE html>
|
|
|
-<html>
|
|
|
-<head>
|
|
|
- <title>{% block title %}Device {{ device }}{% endblock %}</title>
|
|
|
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
|
- <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
|
|
- <link rel="stylesheet" type="text/css" href="codebase/dhtmlx.css"/>
|
|
|
- <script type=text/javascript src="{{ url_for('static', filename='jquery-2.2.1.js') }}"></script>
|
|
|
- <script src="codebase/dhtmlx.js"></script>
|
|
|
- <script src="pcilib_tree.js"></script>
|
|
|
- <script>
|
|
|
- var propsTree
|
|
|
-
|
|
|
- function checkError(json)
|
|
|
- {
|
|
|
- if(json.error)
|
|
|
- alert('Error:\n' + json.error)
|
|
|
- }
|
|
|
-
|
|
|
- function createPropertyTree(branch, id)
|
|
|
- {
|
|
|
- function getPropertyItemsOnLevel(branch, id)
|
|
|
- {
|
|
|
- pathToProperties = "{{ url_for('get_property_list_json') }}"
|
|
|
- completePath = pathToProperties + '?branch=' + branch
|
|
|
-
|
|
|
- $.getJSON(completePath,
|
|
|
- function(json) {
|
|
|
- checkError(json)
|
|
|
- parsePropertyItems(json, branch, id)
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- function parsePropertyItems(json, branch, id)
|
|
|
- {
|
|
|
- function updatePropertyValue(id, path)
|
|
|
- {
|
|
|
- pathToGetProperty = "{{ url_for('get_property_json') }}"
|
|
|
- completePath = pathToGetProperty + '?prop=' + path
|
|
|
-
|
|
|
- $.getJSON(completePath, function(json){
|
|
|
- checkError(json)
|
|
|
- propsTree.updateItem(id, 'value: ' + json.value);
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- function writePropertyValue(id, path)
|
|
|
- {
|
|
|
- value = window.prompt("Enter new property value");
|
|
|
-
|
|
|
- if(value != null)
|
|
|
- {
|
|
|
- pathToGetProperty = "{{ url_for('set_property_json') }}"
|
|
|
- completePath = pathToGetProperty + '?prop=' + path +'&val=' + value
|
|
|
-
|
|
|
- $.getJSON(completePath,
|
|
|
- function(json) {
|
|
|
- checkError(json)
|
|
|
- updatePropertyValue(id, path)
|
|
|
- })
|
|
|
- }
|
|
|
- else
|
|
|
- updatePropertyValue(id, path)
|
|
|
- }
|
|
|
-
|
|
|
- function setCurrentValueField(id, path, mode)
|
|
|
- {
|
|
|
- var propValId = id + 'CurrVal'
|
|
|
- var func = 0
|
|
|
-
|
|
|
- if(mode)
|
|
|
- func = function(){writePropertyValue(propValId, path)}
|
|
|
- else
|
|
|
- func = function(){updatePropertyValue(propValId, path)}
|
|
|
-
|
|
|
- propsTree.insertNewItem(id, propValId,
|
|
|
- 'value: ',
|
|
|
- func);
|
|
|
-
|
|
|
- updatePropertyValue(propValId, path)
|
|
|
- }
|
|
|
-
|
|
|
- for(var i = 0; i < json.length; i++)
|
|
|
- {
|
|
|
- propsTree.insertNewItem(id, json[i].path, json[i].name, 0);
|
|
|
-
|
|
|
- if(json[i].flags.indexOf("childs") != -1)
|
|
|
- {
|
|
|
- getPropertyItemsOnLevel(json[i].path, json[i].path)
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if(json[i].mode.indexOf("R") != -1)
|
|
|
- {
|
|
|
- var mode = (json[i].mode.indexOf("W") != -1)
|
|
|
- setCurrentValueField(json[i].path, json[i].path, mode)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //show aviable info
|
|
|
- if(json[i].description)
|
|
|
- propsTree.insertNewItem(json[i].path, json[i].path + 'Desc',
|
|
|
- 'description:\n' + json[i].description, 0);
|
|
|
- if(json[i].type)
|
|
|
- propsTree.insertNewItem(json[i].path, json[i].path + 'Type',
|
|
|
- 'type: ' + json[i].type, 0);
|
|
|
- if(json[i].unit)
|
|
|
- propsTree.insertNewItem(json[i].path, json[i].path + 'Unit',
|
|
|
- 'unit: ' + json[i].unit, 0);
|
|
|
-
|
|
|
- if(json[i].mode)
|
|
|
- {
|
|
|
- var modeId = json[i].path + 'Mode'
|
|
|
- propsTree.insertNewItem(json[i].path, modeId,
|
|
|
- 'mode', 0);
|
|
|
-
|
|
|
- for(var j = 0; j < json[i].mode.length; j++)
|
|
|
- propsTree.insertNewItem(modeId, modeId + j,
|
|
|
- json[i].mode[j], 0);
|
|
|
- propsTree.closeItem(modeId)
|
|
|
- }
|
|
|
-
|
|
|
- if(json[i].path)
|
|
|
- propsTree.insertNewItem(json[i].path, json[i].path + 'Path',
|
|
|
- 'path: ' + json[i].path, 0);
|
|
|
-
|
|
|
- propsTree.closeItem(json[i].path);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- getPropertyItemsOnLevel(branch, id)
|
|
|
- }
|
|
|
-
|
|
|
- var regTree
|
|
|
- function createRegistersList()
|
|
|
- {
|
|
|
- function parseJsonRegisterList(json)
|
|
|
- {
|
|
|
- checkError(json)
|
|
|
-
|
|
|
- function compareRegistersByBank(a,b)
|
|
|
- {
|
|
|
- if (a.bank < b.bank)
|
|
|
- return -1;
|
|
|
- else if (a.bank > b.bank)
|
|
|
- return 1;
|
|
|
- else
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- if(json.lenght <= 0)
|
|
|
- return
|
|
|
-
|
|
|
- //sort registers by bank
|
|
|
- json.sort(compareRegistersByBank)
|
|
|
-
|
|
|
- //create bank dirs
|
|
|
- var curBankName = json[0].bank
|
|
|
- var created = 0
|
|
|
- for(var i = 0; i < json.length; i++)
|
|
|
- {
|
|
|
- //create new bank tab if it has not created already
|
|
|
- if(json[i].bank != curBankName)
|
|
|
- {
|
|
|
- curBankName = json[i].bank
|
|
|
- created = 0
|
|
|
- }
|
|
|
- if(!created)
|
|
|
- {
|
|
|
- regTree.insertNewItem(0, json[i].bank, json[i].bank, 0);
|
|
|
- created = 1
|
|
|
- }
|
|
|
-
|
|
|
- //insert register info to bank
|
|
|
- var itemId = json[i].bank + "_" + json[i].name
|
|
|
- regTree.insertNewItem(json[i].bank, itemId, json[i].name)
|
|
|
-
|
|
|
- function updateRegisterValue(id, bank, name)
|
|
|
- {
|
|
|
- pathToGetProperty = "{{ url_for('read_register_json') }}"
|
|
|
- completePath = pathToGetProperty + '?bank=' + bank +
|
|
|
- '&name=' + name
|
|
|
-
|
|
|
- $.getJSON(completePath, function(json){
|
|
|
- checkError(json)
|
|
|
- regTree.updateItem(id, 'value: ' + json.value);
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- function writeRegisterValue(id, bank, name)
|
|
|
- {
|
|
|
- value = window.prompt("Enter new register value");
|
|
|
-
|
|
|
- if(value != null)
|
|
|
- {
|
|
|
- pathToGetProperty = "{{ url_for('write_register_json') }}"
|
|
|
- completePath = pathToGetProperty + '?bank=' + bank +
|
|
|
- '&name=' + name + '&val=' + value;
|
|
|
-
|
|
|
- $.getJSON(completePath,
|
|
|
- function(json) {
|
|
|
- checkError(json)
|
|
|
- updateRegisterValue(id, bank, name)
|
|
|
- })
|
|
|
- }
|
|
|
- else
|
|
|
- updateRegisterValue(id, bank, name)
|
|
|
- }
|
|
|
-
|
|
|
- function setCurrentValueField(id, bank, name, mode)
|
|
|
- {
|
|
|
- var regValId = id + 'CurrVal'
|
|
|
- var func = 0
|
|
|
-
|
|
|
- if(mode)
|
|
|
- func = function(){writeRegisterValue(regValId, bank, name)}
|
|
|
- else
|
|
|
- func = function(){updateRegisterValue(regValId, bank, name)}
|
|
|
-
|
|
|
- regTree.insertNewItem(id, regValId,
|
|
|
- 'value: ',
|
|
|
- func);
|
|
|
- updateRegisterValue(regValId, bank, name)
|
|
|
- }
|
|
|
-
|
|
|
- if(json[i].mode.indexOf("R") != -1)
|
|
|
- {
|
|
|
- var mode = (json[i].mode.indexOf("W") != -1)
|
|
|
- setCurrentValueField(itemId, json[i].bank, json[i].name, mode)
|
|
|
- }
|
|
|
-
|
|
|
- //show aviable info
|
|
|
- if(json[i].description)
|
|
|
- regTree.insertNewItem(itemId, itemId + 'Desc',
|
|
|
- 'description:\n' + json[i].description, 0);
|
|
|
- if(json[i].defvalue)
|
|
|
- regTree.insertNewItem(itemId, itemId + 'Defvalue',
|
|
|
- 'defvalue: ' + json[i].defvalue, 0);
|
|
|
-
|
|
|
- if(json[i].mode)
|
|
|
- {
|
|
|
- var modeId = itemId + 'Mode'
|
|
|
- regTree.insertNewItem(itemId, modeId,
|
|
|
- 'mode', 0);
|
|
|
-
|
|
|
- for(var j = 0; j < json[i].mode.length; j++)
|
|
|
- regTree.insertNewItem(modeId, modeId + j,
|
|
|
- json[i].mode[j], 0);
|
|
|
- regTree.closeItem(modeId)
|
|
|
- }
|
|
|
-
|
|
|
- if(json[i].range)
|
|
|
- {
|
|
|
- var rangeId = itemId + 'Range'
|
|
|
- regTree.insertNewItem(itemId, rangeId,
|
|
|
- 'range', 0);
|
|
|
- regTree.insertNewItem(rangeId, rangeId + 'Min',
|
|
|
- 'min: ' + json[i].range.min, 0);
|
|
|
- regTree.insertNewItem(rangeId, rangeId + 'Max',
|
|
|
- 'max: ' + json[i].range.max, 0);
|
|
|
- regTree.closeItem(rangeId)
|
|
|
- }
|
|
|
-
|
|
|
- if(json[i].values)
|
|
|
- {
|
|
|
- var valuesId = itemId + 'Values'
|
|
|
- regTree.insertNewItem(itemId, valuesId,
|
|
|
- 'values', 0);
|
|
|
-
|
|
|
- function addValueInfo(valuesId, value)
|
|
|
- {
|
|
|
- var valueId = valuesId + value.name
|
|
|
- regTree.insertNewItem(valuesId, valueId, value.name, 0);
|
|
|
-
|
|
|
- if(value.description)
|
|
|
- regTree.insertNewItem(valueId, valueId + 'Desc',
|
|
|
- 'description: ' + value.description, 0);
|
|
|
- if(value.value)
|
|
|
- regTree.insertNewItem(valueId, valueId + 'Value',
|
|
|
- 'value: ' + value.value, 0);
|
|
|
- if(value.min)
|
|
|
- regTree.insertNewItem(valueId, valueId + 'Min',
|
|
|
- 'min: ' + value.min, 0);
|
|
|
- if(value.max)
|
|
|
- regTree.insertNewItem(valueId, valueId + 'Max',
|
|
|
- 'max: ' + value.max, 0);
|
|
|
- }
|
|
|
-
|
|
|
- for(var j = 0; j < json[i].values.length; j++)
|
|
|
- {
|
|
|
- addValueInfo(valuesId, json[i].values[j])
|
|
|
- }
|
|
|
- regTree.closeItem(valuesId)
|
|
|
- }
|
|
|
-
|
|
|
- propsTree.closeItem(json[i].path);
|
|
|
-
|
|
|
- regTree.closeItem(itemId);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //get registers json list
|
|
|
- getRegistersListPath = "{{ url_for('get_registers_list_json') }}"
|
|
|
- $.getJSON(getRegistersListPath, parseJsonRegisterList);
|
|
|
- }
|
|
|
-
|
|
|
- function doOnLoad()
|
|
|
- {
|
|
|
- propsTree = new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
|
|
|
- propsTree.setImagePath("codebase/imgs/dhxtree_skyblue/");
|
|
|
- //generating properties list
|
|
|
- createPropertyTree('', 0)
|
|
|
-
|
|
|
- regTree = new dhtmlXTreeObject("treeboxbox_tree2","100%","100%",0,0,0,0,'SELECT')
|
|
|
- regTree.setImagePath("codebase/imgs/dhxtree_skyblue/");
|
|
|
- createRegistersList()
|
|
|
- }
|
|
|
- </script>
|
|
|
-</head>
|
|
|
-<body onload="doOnLoad()">
|
|
|
- {% block info %}
|
|
|
- <h2>Device {{ device }} model={{ model }} control page </h2>
|
|
|
- {% endblock %}
|
|
|
-
|
|
|
- {% block content %}
|
|
|
- {% endblock %}
|
|
|
- <table>
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <h3>Properties Tree</h3>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <h3>Registers Tree</h3>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td valign="top">
|
|
|
- <div id="treeboxbox_tree" style="background-color:#f5f5f5;border :1px solid Silver; overflow:auto;"></div>
|
|
|
- </td>
|
|
|
- <td valign="top">
|
|
|
- <div id="treeboxbox_tree2" style="background-color:#f5f5f5;border :1px solid Silver; overflow:auto;"></div>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
-</body>
|
|
|
-</html>
|