2026-02-25 17:53:09 +08:00

352 lines
8.6 KiB
Plaintext

var g_locationSkipList=[91];
var g_targetList=[91];
var g_subSystem={};
//showMessageDialog(res);
function initTreeWidgetBySkip(headerNames,splitFlag,skipList,useDefaultAction,devFlag) {
getSubSystem()
g_locationSkipList=skipList;
initTree(headerNames,splitFlag,false,devFlag);
if(useDefaultAction===true){
SForm.m_treeWidget.itemClicked.connect(slot_locationListItemClicked_default);
}
}
function initTreeWidgetByTarget(headerNames,splitFlag,targetList){
g_targetList=targetList;
initTree(headerNames,splitFlag,true);
}
//三层
function initTree(headerNames,splitFlag,useTarget,devFlag){
SForm.m_treeWidget.setHeaderNames(headerNames);
var res;
if(useTarget===true){
res=initTreeMapByTarget(splitFlag);
}else{
res=initTreeMapBySkip(splitFlag);
}
var treeMap=res[0];
var parentDescMap=res[1];
var childDescMap=res[2];
var tagLocationIdMap=res[3];
for (var key in treeMap){
var parentData=[key]
var parentDisplay=[parentDescMap[key]]
SForm.m_treeWidget.addItem(parentDisplay,parentData);
for (var i = 0; i < treeMap[key].length; i++) {
var childDisplay=[]
var childData=[]
childData.push(treeMap[key][i])
childDisplay.push(childDescMap[treeMap[key][i]]);
SForm.m_treeWidget.addItem(parentDescMap[key],childDisplay,childData);
var locationId=tagLocationIdMap[childData[0]]
var devs
if(devFlag==="BMS"){
devs=getBMSDevTagByLocation(locationId,childData[0])
}else if(devFlag==="PCS"){
devs=getPCSDevTagByLocation(locationId,childData[0])
}else if(devFlag==="XBCK"){
devs=getXBCKDevTagByLocation(locationId,childData[0])
}else{
showMessageDialog("Tree-ERR: not valid flag "+devFlag);
return
}
for(var j=0;j<devs[0].length;j++){
var childDisplay_dev=[]
var childData_dev=[]
childDisplay_dev.push(devs[1][j])
childData_dev.push(devs[0][j])
SForm.m_treeWidget.addItem(childDisplay[0],childDisplay_dev,childData_dev);
}
}
}
SForm.m_treeWidget.setItemSelected(0,0)
}
function slot_locationListItemClicked_default(index,text, data) {
var curTag = SForm.m_treeWidget.currentData();
if(curTag.indexOf("{") === -1){
return
}
//showMessageDialog(curTag);
var tmpObj=JSON.parse(curTag)
reLink_default(tmpObj.locationTag,tmpObj.tag,tmpObj.sub_system);
}
function initTreeMapBySkip(splitFlag){
//only two level
var treeMap={};
var reg=/^cnq(\d+)/;
var childDescMap={};
var parentDescMap={};
var tagLocationIdMap={};
for (var locationId = 1; locationId <100; locationId++) {
if (g_locationSkipList.indexOf(locationId) != -1)
{
continue;
}
var locationInfo = SDAO.getLocationInfoById(locationId);
if (locationInfo[0] !== -1) {
var tag= locationInfo[1];
var name= locationInfo[2];
var prefix = tag.match(reg);
if (!prefix){
continue;
}
if (prefix.length){
if (prefix in treeMap ){
treeMap[prefix].push(tag);
} else {
treeMap[prefix]=[tag];
parentDescMap[prefix]=splitDesc(name,splitFlag)[0];
}
} else {
continue;
}
childDescMap[tag]=splitDesc(name,splitFlag)[1];
tagLocationIdMap[tag]=locationId;
} else {
break;
}
}
return [treeMap,parentDescMap,childDescMap,tagLocationIdMap]
}
function initTreeMapByTarget(splitFlag){
//only two level
var treeMap={};
var reg=/^hl(\d+)/;
var childDescMap={};
var parentDescMap={};
for (var locationId = 1; locationId <100; locationId++) {
if (g_targetList.indexOf(locationId) != -1)
{
continue;
}
var locationInfo = SDAO.getLocationInfoById(locationId);
if (locationInfo[0] !== -1) {
var tag= locationInfo[1];
var name= locationInfo[2];
var prefix = tag.match(reg);
if (!prefix){
continue;
}
if (prefix.length){
if (prefix in treeMap ){
treeMap[prefix].push(tag);
} else {
treeMap[prefix]=[tag];
parentDescMap[prefix]=splitDesc(name,splitFlag)[0];
}
} else {
continue;
}
childDescMap[tag]=splitDesc(name,splitFlag)[1];
} else {
break;
}
}
return [treeMap,parentDescMap,childDescMap]
}
function splitDesc(desc,splitFlag){
var res=["##","##"]
var spiltRes=desc.split(splitFlag)
if (spiltRes.length==2){
res[0]=spiltRes[0]+splitFlag;
res[1]=spiltRes[1];
}
return res;
}
function reLink_default(reLinkTag_location,devTag,subSystem) {
var orginSeg;
var insertWithoutList = false;
var objKeyMap = SView.getAllObjKeyInfo();
for (var obj in objKeyMap) {
var code = "SView.getObjKeyInfo('" + obj + "')";
var tempKeyInfo = SView.execute(code);
var loactionName = SView.truncTag(tempKeyInfo, "d");
var keyInfo = tempKeyInfo.replace(new RegExp(loactionName, "g"), reLinkTag_location);
var devName = SView.truncTag(tempKeyInfo, "dev");
keyInfo=keyInfo.replace(new RegExp(devName, "g"), devTag);
var subSystemName = SView.truncTag(tempKeyInfo, "a");
keyInfo=keyInfo.replace(new RegExp(subSystemName, "g"), subSystem);
code = "SView.setObjKeyInfo('" + obj + "', '" + keyInfo + "', true)";
//showMessageDialog(keyInfo);
SView.execute(code);
}
SView.subscribe(true);
}
function getBMSDevTagByLocation(locationId,locationTag){
var sql="select tag_name,sub_system from dev_info where GROUP_TAG_NAME LIKE '%BMS%' and LOCATION_ID="+locationId;
var devs=SDAO.dbSelect(sql);
if(devs[0]==-1){
showMessageDialog("Query-ERR: "+sql);
return;
}
var displayArr=[]
var objArr=[]
for(var i=1;i<devs.length;i++){
var str=devs[i][0].toString()
var strArr=str.split('.');
if(strArr.length==2){
var devObj={}
devObj.locationTag=locationTag;
devObj.tag=strArr[1];
devObj.sub_system=g_subSystem[devs[i][1]];
var tagArr=devObj.tag.split("_");
if(tagArr.length==2){
devObj.display=tagArr[0]
}else{
continue
}
var objStr=JSON.stringify(devObj)
objArr.push(objStr);
displayArr.push(devObj.display);
}else{
continue
}
}
return [objArr,displayArr];
}
function getPCSDevTagByLocation(locationId,locationTag){
var sql="select tag_name,sub_system from dev_info where GROUP_TAG_NAME LIKE '%PCS%' and LOCATION_ID="+locationId;
var devs=SDAO.dbSelect(sql);
if(devs[0]==-1){
showMessageDialog("Query-ERR: "+sql);
return;
}
var displayArr=[]
var objArr=[]
for(var i=1;i<devs.length;i++){
var str=devs[i][0].toString()
var strArr=str.split('.');
if(strArr.length==2){
var devObj={}
devObj.locationTag=locationTag;
devObj.tag=strArr[1];
devObj.sub_system=g_subSystem[devs[i][1]];
var tagArr=devObj.tag.split("_");
if(tagArr.length==2){
devObj.display=tagArr[0]
}else{
continue
}
var objStr=JSON.stringify(devObj)
objArr.push(objStr);
displayArr.push(devObj.display);
}else{
continue
}
}
return [objArr,displayArr];
}
function getXBCKDevTagByLocation(locationId,locationTag){
var sql="select tag_name,sub_system from dev_info where GROUP_TAG_NAME LIKE '%XBCK%' and LOCATION_ID="+locationId;
var devs=SDAO.dbSelect(sql);
if(devs[0]==-1){
showMessageDialog("Query-ERR: "+sql);
return;
}
var displayArr=[]
var objArr=[]
for(var i=1;i<devs.length;i++){
var str=devs[i][0].toString()
var strArr=str.split('.');
if(strArr.length==2){
var devObj={}
devObj.locationTag=locationTag;
devObj.tag=strArr[1];
devObj.sub_system=g_subSystem[devs[i][1]];
var tagArr=devObj.tag.split("_");
if(tagArr.length==2){
devObj.display=tagArr[0]
}else{
continue
}
var objStr=JSON.stringify(devObj)
objArr.push(objStr);
displayArr.push(devObj.display);
}else{
continue
}
}
return [objArr,displayArr];
}
function getSubSystem(){
var sql="select sub_system_id,tag_name from sys_model_sub_system_info" ;
var subSystems=SDAO.dbSelect(sql);
if(subSystems[0]==-1){
showMessageDialog("Query-ERR: "+sql);
return;
}
for(var i=1;i<subSystems.length;i++){
var id=subSystems[i][0].toString()
var tagName=subSystems[i][1]
g_subSystem[id]=tagName
}
}