show unmapped xdr records, allow to add them
This commit is contained in:
parent
9ad6fd2057
commit
87ab75e528
|
@ -147,6 +147,9 @@ body{
|
||||||
max-width: 16em;
|
max-width: 16em;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
button.addunassigned {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
.msgDetails .value {
|
.msgDetails .value {
|
||||||
width: 5em;
|
width: 5em;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
|
89
web/index.js
89
web/index.js
|
@ -236,8 +236,8 @@ function checkChange(el, row) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let configDefinitions;
|
let configDefinitions={};
|
||||||
let xdrConfig;
|
let xdrConfig={};
|
||||||
function createInput(configItem, frame,clazz) {
|
function createInput(configItem, frame,clazz) {
|
||||||
let el;
|
let el;
|
||||||
if (configItem.type === 'boolean' || configItem.type === 'list') {
|
if (configItem.type === 'boolean' || configItem.type === 'list') {
|
||||||
|
@ -309,26 +309,33 @@ function getXdrCategories(){
|
||||||
}
|
}
|
||||||
return rt;
|
return rt;
|
||||||
}
|
}
|
||||||
function getXdrSelectors(category){
|
function getXdrCategoryName(cid){
|
||||||
category=parseInt(category);
|
category=parseInt(cid);
|
||||||
for (let c in xdrConfig){
|
for (let c in xdrConfig){
|
||||||
let base=xdrConfig[c];
|
let base=xdrConfig[c];
|
||||||
if (parseInt(base.id) == category){
|
if (parseInt(base.id) == category){
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getXdrCategory(cid){
|
||||||
|
category=parseInt(cid);
|
||||||
|
for (let c in xdrConfig){
|
||||||
|
let base=xdrConfig[c];
|
||||||
|
if (parseInt(base.id) == category){
|
||||||
|
return base;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
function getXdrSelectors(category){
|
||||||
|
let base=getXdrCategory(category);
|
||||||
return base.selector || [];
|
return base.selector || [];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
function getXdrFields(category){
|
function getXdrFields(category){
|
||||||
category=parseInt(category);
|
let base=getXdrCategory(category);
|
||||||
for (let c in xdrConfig){
|
|
||||||
let base=xdrConfig[c];
|
|
||||||
if (parseInt(base.id) == category){
|
|
||||||
return base.fields || [];
|
return base.fields || [];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
function createXdrLine(parent,label){
|
function createXdrLine(parent,label){
|
||||||
let d=addEl('div','xdrline',parent);
|
let d=addEl('div','xdrline',parent);
|
||||||
|
@ -565,6 +572,60 @@ function findFreeXdr(data){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function convertUnassigned(value){
|
||||||
|
let rt={};
|
||||||
|
value=parseInt(value);
|
||||||
|
if (isNaN(value)) return;
|
||||||
|
//see GwXDRMappings::addUnknown
|
||||||
|
let instance=value & 0x1ff;
|
||||||
|
value = value >> 9;
|
||||||
|
let field=value & 0x7f;
|
||||||
|
value = value >> 7;
|
||||||
|
let selector=value & 0x7f;
|
||||||
|
value = value >> 7;
|
||||||
|
let cid=value & 0x7f;
|
||||||
|
let category=getXdrCategory(cid);
|
||||||
|
let cname=getXdrCategoryName(cid);
|
||||||
|
if (! cname) return rt;
|
||||||
|
let fieldName="";
|
||||||
|
(category.fields || []).forEach(function(f){
|
||||||
|
if (parseInt(f.v) == field) fieldName=f.l;
|
||||||
|
});
|
||||||
|
let selectorName=selector+"";
|
||||||
|
(category.selector ||[]).forEach(function(s){
|
||||||
|
if (parseInt(s.v) == selector) selectorName=s.l;
|
||||||
|
});
|
||||||
|
rt.l=cname+","+selectorName+","+fieldName+","+instance;
|
||||||
|
rt.v=cid+",1,"+selector+","+field+",1,"+instance+",";
|
||||||
|
return rt;
|
||||||
|
}
|
||||||
|
|
||||||
|
function unassignedAdd(ev) {
|
||||||
|
let dv = ev.target.getAttribute('data-value');
|
||||||
|
if (dv) {
|
||||||
|
findFreeXdr(dv);
|
||||||
|
hideOverlay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function loadUnassigned(){
|
||||||
|
getText("/api/xdrUnmapped")
|
||||||
|
.then(function(txt){
|
||||||
|
let ot="";
|
||||||
|
txt.split('\n').forEach(function(line){
|
||||||
|
let cv=convertUnassigned(line);
|
||||||
|
if (!cv || !cv.l) return;
|
||||||
|
ot+='<div class="xdrunassigned"><span>'+
|
||||||
|
cv.l+'</span>'+
|
||||||
|
'<button class="addunassigned" data-value="'+
|
||||||
|
cv.v+
|
||||||
|
'">+</button></div>';
|
||||||
|
})
|
||||||
|
showOverlay(ot,true);
|
||||||
|
forEl('.addunassigned',function(bt){
|
||||||
|
bt.onclick=unassignedAdd;
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
function toggleClass(el,id,classList){
|
function toggleClass(el,id,classList){
|
||||||
let nc=classList[id];
|
let nc=classList[id];
|
||||||
let rt=false;
|
let rt=false;
|
||||||
|
|
Loading…
Reference in New Issue