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