summaryrefslogtreecommitdiffstats
path: root/pyserver/templates
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@suren.me>2016-03-02 23:36:19 +0100
committerSuren A. Chilingaryan <csa@suren.me>2016-03-02 23:36:19 +0100
commitf7636162ba124c0d6b5accaa72c842033f3e2309 (patch)
tree9ae5ceddde46e7c511bba899b869f54c6fef6283 /pyserver/templates
parent7e39a6c8ae5c3f95b3b2895c4ce8d858c7ad3b79 (diff)
parent02d0026e2df2ba5c68c0c1a67aec4437c9e8e8f3 (diff)
downloadpcitool-f7636162ba124c0d6b5accaa72c842033f3e2309.tar.gz
pcitool-f7636162ba124c0d6b5accaa72c842033f3e2309.tar.bz2
pcitool-f7636162ba124c0d6b5accaa72c842033f3e2309.tar.xz
pcitool-f7636162ba124c0d6b5accaa72c842033f3e2309.zip
Further improvements of Python scripting and web-interface API for register manipulations by Vasiliy Chernov
Diffstat (limited to 'pyserver/templates')
-rw-r--r--pyserver/templates/base.html194
-rw-r--r--pyserver/templates/property_info.html91
-rw-r--r--pyserver/templates/register_info.html9
-rw-r--r--pyserver/templates/registers/table_cell.html100
-rw-r--r--pyserver/templates/registers/table_header.html10
-rw-r--r--pyserver/templates/registers/table_scripts.html42
-rw-r--r--pyserver/templates/registers_list.html12
7 files changed, 458 insertions, 0 deletions
diff --git a/pyserver/templates/base.html b/pyserver/templates/base.html
new file mode 100644
index 0000000..a2df1e9
--- /dev/null
+++ b/pyserver/templates/base.html
@@ -0,0 +1,194 @@
+<!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="{{ url_for('static', filename='codebase/dhtmlx.css') }}"/>
+ <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='base.css') }}"/>
+ <script type=text/javascript src="{{ url_for('static', filename='jquery-2.2.1.js') }}"></script>
+ <script src="{{ url_for('static', filename='codebase/dhtmlx.js') }}"></script>
+ <script src="{{ url_for('static', filename='check_err.js') }}"></script>
+ <script>
+ var propsTree
+ function createPropertyTree(branch, id) {
+
+ function getPropertyItemsOnLevel(branch, id) {
+ var pathToProperties = "{{ url_for('process_json_command', command = 'get_property_list') }}"
+ var completePath = pathToProperties + '?branch=' + branch
+
+ $.getJSON(completePath,
+ function(json) {
+ checkError(json)
+ parsePropertyItems(json, branch, id)
+ });
+ }
+
+ function parsePropertyItems(json, branch, id) {
+
+ checkError(json)
+ json = json.properties
+
+ function loadPropertyInfo(branch) {
+
+ var pathToProperties = "{{ url_for('get_property_list') }}"
+ var completePath = pathToProperties + '?branch=' + branch
+
+ $("#prop_info_place").load(completePath)
+ }
+
+
+ function setPropertyField(id, name, branch) {
+
+ var func = function(){loadPropertyInfo(branch)}
+ propsTree.insertNewItem(id, branch,
+ name,
+ func);
+ propsTree.closeAllItems()
+ }
+
+ for(var i = 0; i < json.length; i++) {
+
+ setPropertyField(id, json[i].name, json[i].path)
+ if(json[i].flags.indexOf("childs") != -1)
+ getPropertyItemsOnLevel(json[i].path, json[i].path)
+ }
+ }
+
+ getPropertyItemsOnLevel(branch, id)
+ }
+
+ var regTree
+ function createRegistersList() {
+ function parseJsonRegisterList(json) {
+ checkError(json)
+ json = json.registers
+
+ function loadRegistersList(bank) {
+ var pathToGetRegisterList = "{{ url_for('get_registers_list') }}"
+ var completePath = pathToGetRegisterList + '?bank=' + bank
+
+ $("#reg_info_place").load(completePath)
+ }
+
+ function loadRegisterInfo(bank, name) {
+ var pathToGetRegister = "{{ url_for('get_register_info') }}"
+ var completePath = pathToGetRegister + '?bank=' + bank +
+ '&name=' + name
+
+ $("#reg_info_place").load(completePath)
+ }
+
+ function setRegisterField(id, bank, name) {
+
+ var itemId = bank + "_" + name
+ var func = function(){loadRegisterInfo(bank, name)}
+
+ regTree.insertNewItem(id, itemId, name, func)
+ regTree.closeAllItems()
+ }
+
+ function setbankField(bank) {
+
+ var func = function(){loadRegistersList(bank)}
+ regTree.insertNewItem(0, bank, bank, func);
+ regTree.closeAllItems()
+ }
+
+ checkError(json)
+ if(json.lenght <= 0)
+ return
+
+ //sort registers by bank
+ function compareRegistersByBank(a,b) {
+ if (a.bank < b.bank)
+ return -1;
+ else if (a.bank > b.bank)
+ return 1;
+ else
+ return 0;
+ }
+ 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) {
+ setbankField(json[i].bank )
+ created = 1
+ }
+
+
+ //insert register info to bank
+
+ setRegisterField(json[i].bank, json[i].bank, json[i].name)
+ }
+ }
+
+ //get registers json list
+ var getRegistersListPath = "{{ url_for('process_json_command', command = 'get_registers_list') }}"
+ $.getJSON(getRegistersListPath, parseJsonRegisterList);
+ }
+
+ function doOnLoad()
+ {
+ propsTree = new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ propsTree.setImagePath("{{ url_for('static', filename='codebase/imgs/dhxtree_skyblue/') }}");
+ //generating properties list
+ createPropertyTree('', 0)
+
+ regTree = new dhtmlXTreeObject("treeboxbox_tree2","100%","100%",0,0,0,0,'SELECT')
+ regTree.setImagePath("{{ url_for('static', filename='codebase/imgs/dhxtree_skyblue/') }}");
+ createRegistersList()
+ }
+ </script>
+</head>
+<body onload="doOnLoad()">
+ {% block info %}
+ <div class="block1" >
+ <h2>Device {{ device }} model={{ model }} control page </h2>
+ </div>
+ {% endblock %}
+
+ <div class="tabs">
+ <input type="radio" name="current" checked="checked" id="props_id"/>
+ <label for="props_id">Properties</label>
+ <input type="radio" name="current" id="labels_id"/>
+ <label for="labels_id">Registers</label>
+ <div>
+ <table>
+ <tr>
+ <td valign="top">
+ <div id="treeboxbox_tree" class = "tree"></div>
+ </td>
+ <td valign="top" id="prop_info_place" />
+ </tr>
+ </table>
+ </div>
+ <div>
+ <table>
+ <tr>
+ <td valign="top">
+ <div id="treeboxbox_tree2" class="tree"></div>
+ </td>
+ <td valign="top" id="reg_info_place" />
+ </tr>
+ </table>
+ </div>
+ </div>
+ {% block content %}
+ {% endblock %}
+ <div class="block1" >
+ <a href="{{ url_for('process_json_command', command='help') }}">Json API usage</a>
+ </div>
+</body>
+</html>
diff --git a/pyserver/templates/property_info.html b/pyserver/templates/property_info.html
new file mode 100644
index 0000000..62ea1ba
--- /dev/null
+++ b/pyserver/templates/property_info.html
@@ -0,0 +1,91 @@
+{% block content %}
+
+{% if standalone %}
+<script src="{{ url_for('static', filename='codebase/dhtmlx.js') }}"></script>
+<script src="{{ url_for('static', filename='check_err.js') }}"></script>
+{% endif %}
+
+<script>
+ function updateProperty(prop) {
+ var pathToGetProperty = "{{ url_for('process_json_command', command = 'get_property') }}"
+ var completePath = pathToGetProperty + '?prop=' + prop
+
+ $.getJSON(completePath, function(json){
+ checkError(json)
+ var valFieldId = "#set_val_" + prop.split('/').join("_")
+ $(valFieldId).val(json.value)
+ })
+ }
+
+ function setProperty(prop)
+ {
+ var value = document.getElementById("set_val_" + prop.split('/').join("_")).value;
+ if(value == "")
+ return
+
+ var pathToGetProperty = "{{ url_for('process_json_command', command = 'set_property') }}"
+ var completePath = pathToGetProperty + '?prop=' + prop +
+ '&value=' + value;
+
+ $.getJSON(completePath,
+ function(json) {
+ checkError(json)
+ updateProperty(prop)
+ })
+ };
+</script>
+
+<table class="infoTable">
+ <tr class="infoTable">
+ <td class="infoTable">Name</td>
+ <td class="infoTable">Description</td>
+ <td class="infoTable">Value</td>
+ <td class="infoTable">Mode</td>
+ <td class="infoTable">Type</td>
+ <td class="infoTable">Unit</td>
+ <td class="infoTable">Path</td>
+ </tr>
+ {% for property in properties %}
+ <tr class="infoTable">
+ <td class="infoTable">{{ property.name }}</td>
+ <td class="infoTable">
+ {% if 'description' in property %}
+ {{ property.description }}
+ {% endif %}
+ </td>
+ <td class="infoTable">
+ <table>
+ {% if 'R' in property.mode %}
+ <tr>
+ <td>
+ <input type="text"
+ name="set_val_{{ property.path.replace('/', '_') }}"
+ id="set_val_{{ property.path.replace('/', '_') }}"
+ value="{{ value[property.path] }}" />
+ </td>
+ {% if 'W' in property.mode %}
+ <td>
+ <input type="button" value="set" style="width:100%;height:100%" onclick="setProperty('{{ property.path }}')">
+ </td>
+ {% endif %}
+ <td>
+ <input type="button" value="update" style="width:100%;height:100%" onclick="updateProperty('{{ property.path }}')">
+ </td>
+ </tr>
+ {% endif %}
+ </table>
+ </td>
+ <td class="infoTable">
+ <ul>
+ {% for m in property.mode %}
+ {{ m + '; '}}
+ {% endfor %}
+ </ul>
+ </td>
+ <td class="infoTable"> {{ property.type }} </td>
+ <td class="infoTable"> {{ property.unit }} </td>
+ <td class="infoTable"> {{ property.path }} </td>
+ </tr>
+ {% endfor %}
+</table>
+{% endblock %}
diff --git a/pyserver/templates/register_info.html b/pyserver/templates/register_info.html
new file mode 100644
index 0000000..3efebd7
--- /dev/null
+++ b/pyserver/templates/register_info.html
@@ -0,0 +1,9 @@
+{% block content %}
+
+{% include 'registers/table_scripts.html' %}
+
+<table class="infoTable">
+ {% include 'registers/table_header.html' %}
+ {% include 'registers/table_cell.html' %}
+</table>
+{% endblock %}
diff --git a/pyserver/templates/registers/table_cell.html b/pyserver/templates/registers/table_cell.html
new file mode 100644
index 0000000..d394d42
--- /dev/null
+++ b/pyserver/templates/registers/table_cell.html
@@ -0,0 +1,100 @@
+<tr class="infoTable">
+ <td class="infoTable"> {{ register.name }} </td>
+ {% if 'description' in register %}
+ <td class="infoTable"> {{ register.description }} </td>
+ {% else %}
+ <td class="infoTable"> </td>
+ {% endif %}
+ <td class="infoTable">
+ <table>
+ {% if 'R' in register.mode %}
+ <tr class="infoTable">
+ <td>
+ <input type="text"
+ name="set_val_box_{{ register.bank }}_{{ register.name }}"
+ id="set_val_box_{{ register.bank }}_{{ register.name }}"
+ value="{{ value[register.name] }}" />
+ </td>
+ {% if 'W' in register.mode %}
+ <td>
+ <input type="button" value="set"
+ style="width:100%;height:100%"
+ onclick="writeRegister('{{ register.bank }}', '{{ register.name }}')">
+ </td>
+ {% endif %}
+ <td>
+ <input type="button" value="update"
+ style="width:100%;height:100%"
+ onclick="updateRegister('{{ register.bank }}', '{{ register.name }}')">
+ </td>
+ </tr>
+ {% endif %}
+ </table>
+ </td>
+ <td class="infoTable">{{ register.defvalue }}</td>
+ <td class="infoTable">{{ register.bank }}</td>
+ <td class="infoTable">
+ <ul>
+ {% for m in register.mode %}
+ {{ m + '; '}}
+ {% endfor %}
+ </ul>
+ </td>
+ {% if 'range' in register %}
+ <td class="infoTable">
+ <table>
+ <tr class="infoTable">
+ <td class="infoTable"> min </td>
+ <td class="infoTable"> max </td>
+ </tr>
+ <tr class="infoTable">
+ <td class="infoTable"> {{ register.range.min }} </td>
+ <td class="infoTable"> {{ register.range.max }} </td>
+ </tr>
+ </table>
+ </td>
+ {% else %}
+ <td class="infoTable"> </td>
+ {% endif %}
+ {% if 'values' in register %}
+ <td class="infoTable">
+ <table>
+ <tr>
+ {% for v in register['values'] %}
+ <td>
+ <table>
+ {% if 'name' in v %}
+ <tr class="infoTable">
+ <td class="infoTable"> Name </td>
+ <td class="infoTable"> {{v.name}} </td>
+ </tr>
+ {% endif %}
+ {% if 'description' in v %}
+ <tr class="infoTable">
+ <td class="infoTable"> Description </td>
+ <td class="infoTable"> {{ v.description }} </td>
+ </tr>
+ {% endif %}
+ <tr class="infoTable">
+ <td class="infoTable"> Min </td>
+ <td class="infoTable"> {{ v.min }} </td>
+ </tr>
+ <tr class="infoTable">
+ <td class="infoTable"> Max </td>
+ <td class="infoTable"> {{ v.max }} </td>
+ </tr>
+ <tr class="infoTable">
+ <td class="infoTable"> Value </td>
+ <td class="infoTable"> {{ v.value }} </td>
+ </tr>
+ </table>
+ </td>
+ {% endfor %}
+ </tr>
+ </table>
+ </td>
+ {% else %}
+ <td class="infoTable"> </td>
+ {% endif %}
+</tr>
+
diff --git a/pyserver/templates/registers/table_header.html b/pyserver/templates/registers/table_header.html
new file mode 100644
index 0000000..4c46713
--- /dev/null
+++ b/pyserver/templates/registers/table_header.html
@@ -0,0 +1,10 @@
+<tr class="infoTable">
+ <td class="infoTable"> Name </td>
+ <td class="infoTable"> Description </td>
+ <td class="infoTable"> Value </td>
+ <td class="infoTable">Default value</td>
+ <td class="infoTable">Bank</td>
+ <td class="infoTable">Mode</td>
+ <td class="infoTable">Range</td>
+ <td class="infoTable">Values</td>
+</tr>
diff --git a/pyserver/templates/registers/table_scripts.html b/pyserver/templates/registers/table_scripts.html
new file mode 100644
index 0000000..a772b9f
--- /dev/null
+++ b/pyserver/templates/registers/table_scripts.html
@@ -0,0 +1,42 @@
+{% if standalone %}
+<script src="{{ url_for('static', filename='codebase/dhtmlx.js') }}"></script>
+<script src="{{ url_for('static', filename='check_err.js') }}"></script>
+{% endif %}
+
+<script>
+ /*
+ $("#set_val_box").keyup(function(event){
+ if(event.keyCode == 13){
+ $("#set_val_button").click();
+ }
+ });
+ */
+
+ function updateRegister(bank, name) {
+ var pathToReadRegister = "{{ url_for('process_json_command', command = 'read_register') }}"
+ var completePath = pathToReadRegister + '?bank=' + bank +
+ '&reg=' + name
+
+ $.getJSON(completePath, function(json){
+ checkError(json)
+ $("#set_val_box_" + bank + "_" + name).val(json.value)
+ })
+ }
+
+ function writeRegister(bank, name)
+ {
+ var value = document.getElementById("set_val_box_" + bank + "_" + name).value;
+ if(value == "")
+ return
+
+ var pathToReadRegister = "{{ url_for('process_json_command', command = 'write_register') }}"
+ var completePath = pathToReadRegister + '?bank=' + bank +
+ '&reg=' + name + '&value=' + value;
+
+ $.getJSON(completePath,
+ function(json) {
+ checkError(json)
+ updateRegister(bank, name)
+ })
+ };
+</script>
diff --git a/pyserver/templates/registers_list.html b/pyserver/templates/registers_list.html
new file mode 100644
index 0000000..26a6721
--- /dev/null
+++ b/pyserver/templates/registers_list.html
@@ -0,0 +1,12 @@
+{% block content %}
+{% include 'registers/table_scripts.html' %}
+
+<table class="infoTable">
+{% include 'registers/table_header.html' %}
+{% for register in registers %}
+ {% include 'registers/table_cell.html' %}
+{% endfor %}
+</table>
+{% endblock %}
+
+