From f68aebc3de9a3c63c8bfc37e2147c88fd6f59c44 Mon Sep 17 00:00:00 2001 From: Mark Friedrich Date: Sat, 20 Apr 2019 22:27:35 +0200 Subject: [PATCH] - fixed a bug in "signature reader" where "typeId" to "typeName" match failed, closed #747 --- js/app/ui/module/system_signature.js | 35 +++++++++++++------ js/app/util.js | 27 -------------- .../v1.5.1/app/ui/module/system_signature.js | 35 +++++++++++++------ public/js/v1.5.1/app/util.js | 27 -------------- 4 files changed, 50 insertions(+), 74 deletions(-) diff --git a/js/app/ui/module/system_signature.js b/js/app/ui/module/system_signature.js index 9103e508..1a9c4870 100644 --- a/js/app/ui/module/system_signature.js +++ b/js/app/ui/module/system_signature.js @@ -639,8 +639,22 @@ define([ // wormhole type cant be extracted from signature string -> skip function call if(sigGroupId !== 5){ - // try to get "typeId" by description string - typeId = Util.getSignatureTypeIdByName(systemData, sigGroupId, sigDescription); + // try to get "typeId" from description string + let sigDescriptionLowerCase = sigDescription.toLowerCase(); + + let typeOptions = getAllSignatureNames( + systemData, + systemData.type.id, + Util.getAreaIdBySecurity(systemData.security), + sigGroupId + ); + + for(let [key, name] of Object.entries(Util.flattenXEditableSelectArray(typeOptions))){ + if(name.toLowerCase() === sigDescriptionLowerCase){ + typeId = parseInt(key); + break; + } + } // set signature name as "description" if signature matching failed sigDescription = (typeId === 0) ? sigDescription : ''; @@ -651,7 +665,7 @@ define([ // map array values to signature Object let signatureObj = { systemId: systemData.id, - name: $.trim( rowData[0] ).toLowerCase(), + name: $.trim(rowData[0]).toLowerCase(), groupId: sigGroupId, typeId: typeId, description: sigDescription @@ -2494,11 +2508,16 @@ define([ } }; + let getPromiseForRow = (action, rowId) => { + return new Promise((resolve, reject) => { + resolve({action: action, rowId: rowId}); + }); + }; + // update signatures ------------------------------------------------------------------------------------------ allRows.every(function(rowIdx, tableLoop, rowLoop){ let row = this; let rowData = row.data(); - let rowElement = row.nodes().to$(); for(let i = 0; i < signaturesData.length; i++){ if(signaturesData[i].id === rowData.id){ @@ -2513,9 +2532,7 @@ define([ row.cells(row.id(true), ['id:name', 'group:name', 'type:name', 'description:name', 'connection:name', 'updated:name']) .every(rowUpdate); - promisesChanged.push(new Promise((resolve, reject) => { - resolve({action: 'changed', rowId: rowId}); - })); + promisesChanged.push(getPromiseForRow('changed', rowId)); } rowIdsExist.push(rowId); @@ -2556,9 +2573,7 @@ define([ let rowElement = row.nodes().to$(); rowElement.pulseBackgroundColor('added'); - promisesAdded.push(new Promise((resolve, reject) => { - resolve({action: 'added', rowId: rowId}); - })); + promisesAdded.push(getPromiseForRow('added', rowId)); } // done ------------------------------------------------------------------------------------------------------- diff --git a/js/app/util.js b/js/app/util.js index 5b76da5c..c1627dff 100644 --- a/js/app/util.js +++ b/js/app/util.js @@ -2258,32 +2258,6 @@ define([ return signatureNames; }; - /** - * get the typeID of a signature name - * @param systemData - * @param sigGroupId - * @param name - * @returns {number} - */ - let getSignatureTypeIdByName = (systemData, sigGroupId, name) => { - let signatureTypeId = 0; - let areaId = getAreaIdBySecurity(systemData.security); - if(areaId > 0){ - let signatureNames = getAllSignatureNames(systemData.type.id, areaId, sigGroupId); - name = name.toLowerCase(); - for(let prop in signatureNames){ - if( - signatureNames.hasOwnProperty(prop) && - signatureNames[prop].toLowerCase() === name - ){ - signatureTypeId = parseInt(prop); - break; - } - } - } - return signatureTypeId; - }; - /** * get array key that points to map data catching mapId * @param data @@ -3242,7 +3216,6 @@ define([ getStatusInfoForSystem: getStatusInfoForSystem, getSignatureGroupOptions: getSignatureGroupOptions, getAllSignatureNames: getAllSignatureNames, - getSignatureTypeIdByName: getSignatureTypeIdByName, getAreaIdBySecurity: getAreaIdBySecurity, setCurrentMapUserData: setCurrentMapUserData, getCurrentMapUserData: getCurrentMapUserData, diff --git a/public/js/v1.5.1/app/ui/module/system_signature.js b/public/js/v1.5.1/app/ui/module/system_signature.js index 9103e508..1a9c4870 100644 --- a/public/js/v1.5.1/app/ui/module/system_signature.js +++ b/public/js/v1.5.1/app/ui/module/system_signature.js @@ -639,8 +639,22 @@ define([ // wormhole type cant be extracted from signature string -> skip function call if(sigGroupId !== 5){ - // try to get "typeId" by description string - typeId = Util.getSignatureTypeIdByName(systemData, sigGroupId, sigDescription); + // try to get "typeId" from description string + let sigDescriptionLowerCase = sigDescription.toLowerCase(); + + let typeOptions = getAllSignatureNames( + systemData, + systemData.type.id, + Util.getAreaIdBySecurity(systemData.security), + sigGroupId + ); + + for(let [key, name] of Object.entries(Util.flattenXEditableSelectArray(typeOptions))){ + if(name.toLowerCase() === sigDescriptionLowerCase){ + typeId = parseInt(key); + break; + } + } // set signature name as "description" if signature matching failed sigDescription = (typeId === 0) ? sigDescription : ''; @@ -651,7 +665,7 @@ define([ // map array values to signature Object let signatureObj = { systemId: systemData.id, - name: $.trim( rowData[0] ).toLowerCase(), + name: $.trim(rowData[0]).toLowerCase(), groupId: sigGroupId, typeId: typeId, description: sigDescription @@ -2494,11 +2508,16 @@ define([ } }; + let getPromiseForRow = (action, rowId) => { + return new Promise((resolve, reject) => { + resolve({action: action, rowId: rowId}); + }); + }; + // update signatures ------------------------------------------------------------------------------------------ allRows.every(function(rowIdx, tableLoop, rowLoop){ let row = this; let rowData = row.data(); - let rowElement = row.nodes().to$(); for(let i = 0; i < signaturesData.length; i++){ if(signaturesData[i].id === rowData.id){ @@ -2513,9 +2532,7 @@ define([ row.cells(row.id(true), ['id:name', 'group:name', 'type:name', 'description:name', 'connection:name', 'updated:name']) .every(rowUpdate); - promisesChanged.push(new Promise((resolve, reject) => { - resolve({action: 'changed', rowId: rowId}); - })); + promisesChanged.push(getPromiseForRow('changed', rowId)); } rowIdsExist.push(rowId); @@ -2556,9 +2573,7 @@ define([ let rowElement = row.nodes().to$(); rowElement.pulseBackgroundColor('added'); - promisesAdded.push(new Promise((resolve, reject) => { - resolve({action: 'added', rowId: rowId}); - })); + promisesAdded.push(getPromiseForRow('added', rowId)); } // done ------------------------------------------------------------------------------------------------------- diff --git a/public/js/v1.5.1/app/util.js b/public/js/v1.5.1/app/util.js index 5b76da5c..c1627dff 100644 --- a/public/js/v1.5.1/app/util.js +++ b/public/js/v1.5.1/app/util.js @@ -2258,32 +2258,6 @@ define([ return signatureNames; }; - /** - * get the typeID of a signature name - * @param systemData - * @param sigGroupId - * @param name - * @returns {number} - */ - let getSignatureTypeIdByName = (systemData, sigGroupId, name) => { - let signatureTypeId = 0; - let areaId = getAreaIdBySecurity(systemData.security); - if(areaId > 0){ - let signatureNames = getAllSignatureNames(systemData.type.id, areaId, sigGroupId); - name = name.toLowerCase(); - for(let prop in signatureNames){ - if( - signatureNames.hasOwnProperty(prop) && - signatureNames[prop].toLowerCase() === name - ){ - signatureTypeId = parseInt(prop); - break; - } - } - } - return signatureTypeId; - }; - /** * get array key that points to map data catching mapId * @param data @@ -3242,7 +3216,6 @@ define([ getStatusInfoForSystem: getStatusInfoForSystem, getSignatureGroupOptions: getSignatureGroupOptions, getAllSignatureNames: getAllSignatureNames, - getSignatureTypeIdByName: getSignatureTypeIdByName, getAreaIdBySecurity: getAreaIdBySecurity, setCurrentMapUserData: setCurrentMapUserData, getCurrentMapUserData: getCurrentMapUserData,