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;
 | 
			
		||||
    overflow: auto;
 | 
			
		||||
  }
 | 
			
		||||
  button.addunassigned {
 | 
			
		||||
    margin-left: 1em;
 | 
			
		||||
  }
 | 
			
		||||
  .msgDetails .value {
 | 
			
		||||
      width: 5em;
 | 
			
		||||
      text-align: right;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										89
									
								
								web/index.js
								
								
								
								
							
							
						
						
									
										89
									
								
								web/index.js
								
								
								
								
							| 
						 | 
				
			
			@ -236,8 +236,8 @@ function checkChange(el, row) {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
let configDefinitions;
 | 
			
		||||
let xdrConfig;
 | 
			
		||||
let configDefinitions={};
 | 
			
		||||
let xdrConfig={};
 | 
			
		||||
function createInput(configItem, frame,clazz) {
 | 
			
		||||
    let el;
 | 
			
		||||
    if (configItem.type === 'boolean' || configItem.type === 'list') {
 | 
			
		||||
| 
						 | 
				
			
			@ -309,26 +309,33 @@ function getXdrCategories(){
 | 
			
		|||
    }
 | 
			
		||||
    return rt;
 | 
			
		||||
}
 | 
			
		||||
function getXdrSelectors(category){
 | 
			
		||||
    category=parseInt(category);
 | 
			
		||||
function getXdrCategoryName(cid){
 | 
			
		||||
    category=parseInt(cid);
 | 
			
		||||
    for (let c in xdrConfig){
 | 
			
		||||
        let base=xdrConfig[c];
 | 
			
		||||
        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 [];
 | 
			
		||||
}
 | 
			
		||||
function getXdrFields(category){
 | 
			
		||||
    category=parseInt(category);
 | 
			
		||||
    for (let c in xdrConfig){
 | 
			
		||||
        let base=xdrConfig[c];
 | 
			
		||||
        if (parseInt(base.id) == category){
 | 
			
		||||
    let base=getXdrCategory(category);
 | 
			
		||||
    return base.fields || [];
 | 
			
		||||
}
 | 
			
		||||
    }
 | 
			
		||||
    return [];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function createXdrLine(parent,label){
 | 
			
		||||
    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){
 | 
			
		||||
    let nc=classList[id];
 | 
			
		||||
    let rt=false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue