From e27bac2923d68a9e114e5d5e92a7e5e2642f95c3 Mon Sep 17 00:00:00 2001 From: Katarzyna Kwiatkowska <kkwiatkowska@pl.sii.eu> Date: Wed, 18 Oct 2017 15:49:58 +0200 Subject: [PATCH] #20024: Added 'if's to wherever a loop iterates over a variable which could potentially be null / undefined --- js/dss/dss-components/dss-action-selector.js | 235 +-- .../dss-components/dss-condition-selector.js | 1328 +++++++------ js/dss/dss-components/dss-device-selector.js | 113 +- js/dss/dss-components/dss-radiogroup.js | 26 +- .../dss-timereference-control.js | 84 +- js/dss/dss-components/dss-trigger-selector.js | 1687 +++++++++-------- .../dss-components/dss-weekday-selection.js | 80 +- js/dss/dss-datamodel.js | 1655 ++++++++-------- js/dss/dss-edit-dialog.js | 47 +- js/dss/dss-grid.js | 599 +++--- js/dss/dss-wizard-dialog.js | 113 +- 11 files changed, 3152 insertions(+), 2815 deletions(-) diff --git a/js/dss/dss-components/dss-action-selector.js b/js/dss/dss-components/dss-action-selector.js index edc7b479..516c750e 100644 --- a/js/dss/dss-components/dss-action-selector.js +++ b/js/dss/dss-components/dss-action-selector.js @@ -929,18 +929,20 @@ Ext.define('DSS.component.ActionConfigurator', { var oUserStates=dss.staticDataModel.getUserStates(); var sStringValue; var image=null; - for (var iIndex=0;iIndex<oUserStates.length;iIndex++) { - if (oUserStates[iIndex].name==stateName) { - if (value=='active') { - sStringValue=oUserStates[iIndex].setName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png" - } else { - sStringValue=oUserStates[iIndex].resetName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png" - } - sStringValue= Ext.String.format2(_("Customstate {state} change to {value}"),{state:oUserStates[iIndex].displayName,value:sStringValue}); - } - } + if (oUserStates) { + for (var iIndex=0;iIndex<oUserStates.length;iIndex++) { + if (oUserStates[iIndex].name==stateName) { + if (value=='active') { + sStringValue=oUserStates[iIndex].setName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png" + } else { + sStringValue=oUserStates[iIndex].resetName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png" + } + sStringValue= Ext.String.format2(_("Customstate {state} change to {value}"),{state:oUserStates[iIndex].displayName,value:sStringValue}); + } + } + } var sString = '<table><tr>'; if (image!=null) @@ -1267,16 +1269,18 @@ Ext.define('DSS.component.ActionConfigurator', { var oUserStates=dss.staticDataModel.getUserStates(); - for (var iIndex=0;iIndex<oUserStates.length;iIndex++) - if (oUserStates[iIndex].type=='custom-states') { - var Aktionen = [{ - name : oUserStates[iIndex].displayName, - _id : oUserStates[iIndex].name, - next : true, - icon : null - }]; - Ext.data.StoreManager.lookup('actionConfigurator_userStateStore').add(Aktionen); - } + if (oUserStates) { + for (var iIndex=0;iIndex<oUserStates.length;iIndex++) + if (oUserStates[iIndex].type=='custom-states') { + var Aktionen = [{ + name : oUserStates[iIndex].displayName, + _id : oUserStates[iIndex].name, + next : true, + icon : null + }]; + Ext.data.StoreManager.lookup('actionConfigurator_userStateStore').add(Aktionen); + } + } } @@ -1610,10 +1614,13 @@ Ext.define('DSS.component.ActionConfigurator', { } }); - for (var iIndex=0;iIndex<dss.staticDataModel.getZoneArray().length;iIndex++) { - var oStore=this.getDeviceStore(dss.staticDataModel.getZoneArray()[iIndex].ZoneID); - if (oStore.count()>0) - Ext.data.StoreManager.lookup('actionConfigurator_zoneDeviceStore').add(dss.staticDataModel.getZoneArray()[iIndex]); + var zoneArray = dss.staticDataModel.getZoneArray(); + if (zoneArray) { + for (var iIndex=0;iIndex<zoneArray.length;iIndex++) { + var oStore=this.getDeviceStore(dss.staticDataModel.getZoneArray()[iIndex].ZoneID); + if (oStore.count()>0) + Ext.data.StoreManager.lookup('actionConfigurator_zoneDeviceStore').add(dss.staticDataModel.getZoneArray()[iIndex]); + } } } }, @@ -1810,42 +1817,45 @@ Ext.define('DSS.component.ActionConfigurator', { }); } } else { - var oScenes = dss.staticDataModel.getScenes(ZoneID, groupID); - for ( var iIndex = 0; iIndex < oScenes.length; iIndex++) { - var oObject = {}; - oObject.id = oScenes[iIndex].id; - oObject.reachable = oScenes[iIndex].reachable; - oObject.icon = oScenes[iIndex].icon; - if (oScenes[iIndex].name == oScenes[iIndex].defaultName) - oObject.name = oScenes[iIndex].name; - else - oObject.name = oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; - - if (ZoneID==0) - if (groupID==0) { - if (oScenes[iIndex].id==90) - oObject.reachable = false; - if (oScenes[iIndex].id==91) - oObject.reachable = false; - } + var oScenes = dss.staticDataModel.getScenes(ZoneID, groupID); + if (oScenes) { + for ( var iIndex = 0; iIndex < oScenes.length; iIndex++) { + var oObject = {}; + oObject.id = oScenes[iIndex].id; + oObject.reachable = oScenes[iIndex].reachable; + oObject.icon = oScenes[iIndex].icon; + if (oScenes[iIndex].name == oScenes[iIndex].defaultName) + oObject.name = oScenes[iIndex].name; + else + oObject.name = oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; + + if (ZoneID==0) + if (groupID==0) { + if (oScenes[iIndex].id==90) + oObject.reachable = false; + if (oScenes[iIndex].id==91) + oObject.reachable = false; + } - Ext.data.StoreManager.lookup('actionConfigurator_szeneStore_' + ZoneID + '_' + groupID).add(oObject); + Ext.data.StoreManager.lookup('actionConfigurator_szeneStore_' + ZoneID + '_' + groupID).add(oObject); - if (oObject.undoable) { - oObject = {}; - oObject.id = -1 * oScenes[iIndex].id; - oObject.reachable = oScenes[iIndex].reachable; - oObject.icon = oScenes[iIndex].icon; + if (oObject.undoable) { + oObject = {}; + oObject.id = -1 * oScenes[iIndex].id; + oObject.reachable = oScenes[iIndex].reachable; + oObject.icon = oScenes[iIndex].icon; - if (oScenes[iIndex].name == oScenes[iIndex].defaultName) - oObject.name = _('Undo ') + oScenes[iIndex].name; - else - oObject.name = _('Undo ') + oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; - Ext.data.StoreManager.lookup('actionConfigurator_szeneStore_' + ZoneID + '_' + groupID).add(oObject); - } + if (oScenes[iIndex].name == oScenes[iIndex].defaultName) + oObject.name = _('Undo ') + oScenes[iIndex].name; + else + oObject.name = _('Undo ') + oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; + Ext.data.StoreManager.lookup('actionConfigurator_szeneStore_' + ZoneID + '_' + groupID).add(oObject); + } - }} + } + } + } } return Ext.data.StoreManager.lookup('actionConfigurator_szeneStore_' + ZoneID + '_' + groupID); @@ -1865,27 +1875,29 @@ Ext.define('DSS.component.ActionConfigurator', { } }); var oDevice = dss.staticDataModel.getDevicesForZone(ZoneID,0); - for (var iIndex=0;iIndex<oDevice.length;iIndex++) { - //var fShouldDo=(oDevice[iIndex].outputMode!=0); - var fShouldDo= ((oDevice[iIndex].outputMode != 0) && (oDevice[iIndex].outputMode != 30) && (oDevice[iIndex].outputMode != 64)); - - if (oDevice[iIndex].hasActions) - fShouldDo=true; - if (oDevice[iIndex].deviceCustomActions!=null) - if (Object.keys(oDevice[iIndex].deviceCustomActions).length>0) - fShouldDo=true; - if (oDevice[iIndex].deviceStandardActions!=null) - if (Object.keys(oDevice[iIndex].deviceStandardActions).length>0) - fShouldDo=true; - if (oDevice[iIndex].specialActions.actions!=null) - if (oDevice[iIndex].specialActions.actions.deviceActions!=null) - fShouldDo=true; - - if (!oDevice[iIndex].present) - if(!this.fIgnorePresence) - fShouldDo=false; - if (fShouldDo) - Ext.data.StoreManager.lookup('actionConfigurator_deviceStore_' + ZoneID).add(oDevice[iIndex]); + if (oDevice) { + for (var iIndex=0;iIndex<oDevice.length;iIndex++) { + //var fShouldDo=(oDevice[iIndex].outputMode!=0); + var fShouldDo= ((oDevice[iIndex].outputMode != 0) && (oDevice[iIndex].outputMode != 30) && (oDevice[iIndex].outputMode != 64)); + + if (oDevice[iIndex].hasActions) + fShouldDo=true; + if (oDevice[iIndex].deviceCustomActions!=null) + if (Object.keys(oDevice[iIndex].deviceCustomActions).length>0) + fShouldDo=true; + if (oDevice[iIndex].deviceStandardActions!=null) + if (Object.keys(oDevice[iIndex].deviceStandardActions).length>0) + fShouldDo=true; + if (oDevice[iIndex].specialActions.actions!=null) + if (oDevice[iIndex].specialActions.actions.deviceActions!=null) + fShouldDo=true; + + if (!oDevice[iIndex].present) + if(!this.fIgnorePresence) + fShouldDo=false; + if (fShouldDo) + Ext.data.StoreManager.lookup('actionConfigurator_deviceStore_' + ZoneID).add(oDevice[iIndex]); + } } } return Ext.data.StoreManager.lookup('actionConfigurator_deviceStore_' + ZoneID); @@ -1903,22 +1915,24 @@ Ext.define('DSS.component.ActionConfigurator', { }); var oGroups=dss.staticDataModel.getUsergroups(); - for (var iIndex=0;iIndex<oGroups.length;iIndex++) { - oGroupControlStore.add({ - id : oGroups[iIndex].id, - group : oGroups[iIndex].id, - name : oGroups[iIndex].name, - icon : dss.staticDataModel.getImagePathForGroup(0,oGroups[iIndex].id), - reachable : true - }); - if (oGroups[iIndex].color == 1) + if (oGroups) { + for (var iIndex=0;iIndex<oGroups.length;iIndex++) { oGroupControlStore.add({ - id : -1 * oGroups[iIndex].id, - group : null, - name : oGroups[iIndex].name + ' ' + _('blinking'), - icon : dss.staticDataModel.baseImagePath + 'sceneIcons/scene_blink.png', + id : oGroups[iIndex].id, + group : oGroups[iIndex].id, + name : oGroups[iIndex].name, + icon : dss.staticDataModel.getImagePathForGroup(0,oGroups[iIndex].id), reachable : true }); + if (oGroups[iIndex].color == 1) + oGroupControlStore.add({ + id : -1 * oGroups[iIndex].id, + group : null, + name : oGroups[iIndex].name + ' ' + _('blinking'), + icon : dss.staticDataModel.baseImagePath + 'sceneIcons/scene_blink.png', + reachable : true + }); + } } this.grids.lvlUserGroup = Ext.create('Ext.grid.Panel', { @@ -2294,11 +2308,13 @@ Ext.define('DSS.component.ActionConfigurator', { }); var oState=null; - for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) { - if (dss.staticDataModel.userStates[iIndex].name==stateID) { - oState = dss.staticDataModel.userStates[iIndex]; - } - } + if (dss.staticDataModel.userStates) { + for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) { + if (dss.staticDataModel.userStates[iIndex].name==stateID) { + oState = dss.staticDataModel.userStates[iIndex]; + } + } + } if (oState!=null) { var oItem={ name: stateID, @@ -3677,14 +3693,14 @@ Ext.define('DSS.component.ActionConfigurator', { } } }); - if (dss.staticDataModel.HLECache!=null) - if (dss.staticDataModel.HLECache.length>0) { - for (var iIndex=0;iIndex<dss.staticDataModel.HLECache.length;iIndex++) - oStore.add( { - name:dss.staticDataModel.HLECache[iIndex].name, - id:dss.staticDataModel.HLECache[iIndex].id - }); + if (dss.staticDataModel.HLECache) { + for (var iIndex=0;iIndex<dss.staticDataModel.HLECache.length;iIndex++) { + oStore.add( { + name:dss.staticDataModel.HLECache[iIndex].name, + id:dss.staticDataModel.HLECache[iIndex].id + }); } + } oStore.sort('name','ASC'); this.grids.lvlHighLevelEvent = Ext.create('Ext.grid.Panel', { height : this.iDefaultHeight, @@ -3843,11 +3859,14 @@ Ext.define('DSS.component.ActionConfigurator', { //if (zoneID!=0) { oSceneGroup0Store = this.getSceneStore(zoneID, 0); /*} else { - for (var iIndex=0;iIndex<dss.staticDataModel.getZoneArray().length;iIndex++) { - var firstZone=dss.staticDataModel.getZoneArray()[iIndex]; - if (firstZone.ZoneID!=0) { - oSceneGroup0Store = this.getSceneStore(firstZone.ZoneID, 0); - iIndex=dss.staticDataModel.getZoneArray().length; + var zoneArray = dss.staticDataModel.getZoneArray(); + if (zoneArray) { + for (var iIndex=0;iIndex<zoneArray.length;iIndex++) { + var firstZone=dss.staticDataModel.getZoneArray()[iIndex]; + if (firstZone.ZoneID!=0) { + oSceneGroup0Store = this.getSceneStore(firstZone.ZoneID, 0); + iIndex=dss.staticDataModel.getZoneArray().length; + } } } }*/ diff --git a/js/dss/dss-components/dss-condition-selector.js b/js/dss/dss-components/dss-condition-selector.js index 81071a71..58dafa7c 100644 --- a/js/dss/dss-components/dss-condition-selector.js +++ b/js/dss/dss-components/dss-condition-selector.js @@ -56,11 +56,11 @@ Ext.define('DSS.component.ConditionConfigurator', { } }); var oDeviceArray = dss.staticDataModel.getDevicesForZone(ZoneID, 0); - for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) - { - if ((oDeviceArray[iIndex].tasterMode==0)||(oDeviceArray[iIndex].tasterMode==15)) - Ext.data.StoreManager.lookup('conditionConfigurator_deviceStore_' + ZoneID).add(oDeviceArray[iIndex]); - + if (oDeviceArray) { + for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) { + if ((oDeviceArray[iIndex].tasterMode==0)||(oDeviceArray[iIndex].tasterMode==15)) + Ext.data.StoreManager.lookup('conditionConfigurator_deviceStore_' + ZoneID).add(oDeviceArray[iIndex]); + } } } return Ext.data.StoreManager.lookup('conditionConfigurator_deviceStore_' + ZoneID); @@ -161,18 +161,20 @@ Ext.define('DSS.component.ConditionConfigurator', { break; case 'addon-state': if (oAction.addonid=='system-addon-user-defined-states') { - for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) { - if (dss.staticDataModel.userStates[iIndex].name==oAction.stateName) { - var valueText; - var image; - if (oAction.stateValue==1) { - valueText=dss.staticDataModel.userStates[iIndex].setName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png"; - } else { - valueText=dss.staticDataModel.userStates[iIndex].resetName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png"; + if (dss.staticDataModel.userStates) { + for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) { + if (dss.staticDataModel.userStates[iIndex].name==oAction.stateName) { + var valueText; + var image; + if (oAction.stateValue==1) { + valueText=dss.staticDataModel.userStates[iIndex].setName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png"; + } else { + valueText=dss.staticDataModel.userStates[iIndex].resetName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png"; + } + return '<table><tr><td style="padding-right:5px;"><img src="' + image + '"></td><td style="'+sError+'">' + Ext.String.format2(_("Customstate {state} is {value}"),{state:dss.staticDataModel.userStates[iIndex].displayName,value:valueText}) + '</td></tr></table>'; } - return '<table><tr><td style="padding-right:5px;"><img src="' + image + '"></td><td style="'+sError+'">' + Ext.String.format2(_("Customstate {state} is {value}"),{state:dss.staticDataModel.userStates[iIndex].displayName,value:valueText}) + '</td></tr></table>'; } } } @@ -463,15 +465,17 @@ Ext.define('DSS.component.ConditionConfigurator', { } } } - for (var kIndex=0;kIndex<me.stateGridText.length;kIndex++) { - if (me.stateGridText[kIndex].name==oAction.name) - if (me.stateGridText[kIndex].value==oAction.value) { - var sIcon=dss.staticDataModel.getImagePathForState(oAction.name,oAction.value); - if (sIcon!=null) - return '<table><tr><td style="padding-right:5px;" colspan="1"><img src="' + sIcon + '"></td><td>' + me.stateGridText[kIndex].gridText + '</td><tr></table>'; - else - return '<table><tr><td style="padding-right:5px;" colspan="2">' + me.stateGridText[kIndex].gridText + '</td><tr></table>'; - } + if (me.stateGridText) { + for (var kIndex=0;kIndex<me.stateGridText.length;kIndex++) { + if (me.stateGridText[kIndex].name==oAction.name) + if (me.stateGridText[kIndex].value==oAction.value) { + var sIcon=dss.staticDataModel.getImagePathForState(oAction.name,oAction.value); + if (sIcon!=null) + return '<table><tr><td style="padding-right:5px;" colspan="1"><img src="' + sIcon + '"></td><td>' + me.stateGridText[kIndex].gridText + '</td><tr></table>'; + else + return '<table><tr><td style="padding-right:5px;" colspan="2">' + me.stateGridText[kIndex].gridText + '</td><tr></table>'; + } + } } if (oAction.name.indexOf('zone.0.group')>-1) { var sIcon=dss.staticDataModel.getImagePathForState(oAction.name,oAction.value); @@ -512,55 +516,57 @@ Ext.define('DSS.component.ConditionConfigurator', { var fSa = false; var fSo = false; var recObject=oAction.value; - if (recObject.length == 7) - return sString + _("daily") + "</span></td></tr></table>"; - for ( var iIndex = 0; iIndex < recObject.length; iIndex++) { - if (recObject[iIndex] == 'MO') - fMo = true; - if (recObject[iIndex] == 'TU') - fDi = true; - if (recObject[iIndex] == 'WE') - fMi = true; - if (recObject[iIndex] == 'TH') - fDo = true; - if (recObject[iIndex] == 'FR') - fFr = true; - if (recObject[iIndex] == 'SA') - fSa = true; - if (recObject[iIndex] == 'SU') - fSo = true; - } - sString += _('only ') ; - if (recObject.length == 2) - if (fSa) - if (fSo) - return sString + _('on weekends')+'</span></td></tr></table>'; - - if (recObject.length == 5) - if (fMo) + if (recObject) { + if (recObject.length == 7) + return sString + _("daily") + "</span></td></tr></table>"; + for ( var iIndex = 0; iIndex < recObject.length; iIndex++) { + if (recObject[iIndex] == 'MO') + fMo = true; + if (recObject[iIndex] == 'TU') + fDi = true; + if (recObject[iIndex] == 'WE') + fMi = true; + if (recObject[iIndex] == 'TH') + fDo = true; + if (recObject[iIndex] == 'FR') + fFr = true; + if (recObject[iIndex] == 'SA') + fSa = true; + if (recObject[iIndex] == 'SU') + fSo = true; + } + sString += _('only ') ; + if (recObject.length == 2) + if (fSa) + if (fSo) + return sString + _('on weekends')+'</span></td></tr></table>'; + + if (recObject.length == 5) + if (fMo) + if (fDi) + if (fMi) + if (fDo) + if (fFr) + return sString + _('MO-FR')+'</span></td></tr></table>'; + if (recObject.length == 1) { + if (fMo) + return sString + _("on monday")+"</span></td></tr></table>"; if (fDi) - if (fMi) - if (fDo) - if (fFr) - return sString + _('MO-FR')+'</span></td></tr></table>'; - if (recObject.length == 1) { - if (fMo) - return sString + _("on monday")+"</span></td></tr></table>"; - if (fDi) - return sString + _("on tuesday")+"</span></td></tr></table>"; - if (fMi) - return sString + _("on wednesday")+"</span></td></tr></table>"; - if (fDo) - return sString + _("on thursday")+"</span></td></tr></table>"; - if (fFr) - return sString + _("on friday")+"</span></td></tr></table>"; - if (fSa) - return sString + _("on saturday")+"</span></td></tr></table>"; - if (fSo) - return sString + _("on sunday")+"</span></td></tr></table>"; - } - if (recObject.length == 0) { - return sString + _("no time defined")+"</span></td></tr></table>"; + return sString + _("on tuesday")+"</span></td></tr></table>"; + if (fMi) + return sString + _("on wednesday")+"</span></td></tr></table>"; + if (fDo) + return sString + _("on thursday")+"</span></td></tr></table>"; + if (fFr) + return sString + _("on friday")+"</span></td></tr></table>"; + if (fSa) + return sString + _("on saturday")+"</span></td></tr></table>"; + if (fSo) + return sString + _("on sunday")+"</span></td></tr></table>"; + } + if (recObject.length == 0) { + return sString + _("no time defined")+"</span></td></tr></table>"; + } } if (fMo) @@ -712,18 +718,18 @@ Ext.define('DSS.component.ConditionConfigurator', { }); var oUserStates=dss.staticDataModel.getUserStates(); - - for (var iIndex=0;iIndex<oUserStates.length;iIndex++) { - var Aktionen = [{ - name : oUserStates[iIndex].displayName, - _id : oUserStates[iIndex].name, - next : true, - icon : null - }]; - Ext.data.StoreManager.lookup('conditionConfigurator_userStateStore').add(Aktionen); + if (oUserStates) { + for (var iIndex=0;iIndex<oUserStates.length;iIndex++) { + var Aktionen = [{ + name : oUserStates[iIndex].displayName, + _id : oUserStates[iIndex].name, + next : true, + icon : null + }]; + Ext.data.StoreManager.lookup('conditionConfigurator_userStateStore').add(Aktionen); + } } - } if (Ext.data.StoreManager.lookup('conditionConfigurator_l1Store') == null) { @@ -745,395 +751,433 @@ Ext.define('DSS.component.ConditionConfigurator', { var Aktionen = []; this.stateGridText=[]; var disID=0; - for (var iIndex=0;iIndex<conditionConfig.length;iIndex++) { - var oCondObject=conditionConfig[iIndex]; - disID++; - switch (oCondObject.type) { - case 'enabler': - Aktionen.push({ - name : (oCondObject.title!=null)?oCondObject.title:_('Enabled'), - type : 0, - next : true, - icon : null, - passive:false, - distiguishID:disID - }); - break; - case 'weekdays': - Aktionen.push({ - name : (oCondObject.title!=null)?oCondObject.title:_('Weekdays'), - type : 1, - next : true, - icon : null, - passive:false, - distiguishID:disID - }); - break; - case 'timeframe': - Aktionen.push({ - name : (oCondObject.title!=null)?oCondObject.title:_('Timeframe'), - type : 2, - next : true, - icon : null, - passive:false, - distiguishID:disID - }); - break; - case 'dateframe': + if (conditionConfig && Object.prototype.toString.call(conditionConfig) === '[object Array]') { + for (var iIndex=0;iIndex<conditionConfig.length;iIndex++) { + var oCondObject=conditionConfig[iIndex]; + disID++; + switch (oCondObject.type) { + case 'enabler': Aktionen.push({ - name : (oCondObject.title!=null)?oCondObject.title:_('Dateframe'), - type : 10, - next : true, - icon : null, - passive:false, - distiguishID:disID - }); - break; - case 'zonestate': - Aktionen.push({ - name : (oCondObject.title!=null)?oCondObject.title:_('ZoneState'), - type : 3, - next : true, - icon : null, - passive:false, - distiguishID:disID - }); - break; - case 'singleItem': - var oParameter=[]; - for (var jIndex=0;jIndex<oCondObject.entry.length;jIndex++) { - var fShouldAdd=true; - if (oCondObject.entry[jIndex].type=='state') { - fShouldAdd=false; - for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) { - if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name) - fShouldAdd=true; - else - for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { - if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) - fShouldAdd=true; - } - } - } - if (fShouldAdd) { - oParameter.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,title:oCondObject.entry[jIndex].title}); - this.stateGridText.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,gridText:oCondObject.entry[jIndex].gridText}); - for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) - for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { - if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) { - oParameter.push( - {name:dss.staticDataModel.StateCache[kIndex].name, - value:oCondObject.entry[jIndex].value, - title:oCondObject.entry[jIndex].title + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); - this.stateGridText.push( - {name:dss.staticDataModel.StateCache[kIndex].name, - value:oCondObject.entry[jIndex].value, - gridText:oCondObject.entry[jIndex].gridText + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); - } - } - } - } - if (oParameter.length>0) + name : (oCondObject.title!=null)?oCondObject.title:_('Enabled'), + type : 0, + next : true, + icon : null, + passive:false, + distiguishID:disID + }); + break; + case 'weekdays': Aktionen.push({ - name : oCondObject.title, - type : 4, + name : (oCondObject.title!=null)?oCondObject.title:_('Weekdays'), + type : 1, next : true, icon : null, passive:false, - parameter:oParameter, distiguishID:disID }); - break; - case 'multiItem': - var oParameter=[]; - for (var jIndex=0;jIndex<oCondObject.entry.length;jIndex++) { - - var fShouldAdd=true; - if (oCondObject.entry[jIndex].type=='state') { - fShouldAdd=false; - for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) { - if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name) - fShouldAdd=true; - else - for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { - if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) - fShouldAdd=true; - } - } - } - - if (fShouldAdd) { - oParameter.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,title:oCondObject.entry[jIndex].title,group:oCondObject.entry[jIndex].group}); - this.stateGridText.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,gridText:oCondObject.entry[jIndex].gridText}); - for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) - for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { - if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) { - oParameter.push( - {name:dss.staticDataModel.StateCache[kIndex].name, - value:oCondObject.entry[jIndex].value, - title:oCondObject.entry[jIndex].title + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); - this.stateGridText.push( - {name:dss.staticDataModel.StateCache[kIndex].name, - value:oCondObject.entry[jIndex].value, - gridText:oCondObject.entry[jIndex].gridText + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); - } - } - } - } - if (oParameter.length>0) + break; + case 'timeframe': + Aktionen.push({ + name : (oCondObject.title!=null)?oCondObject.title:_('Timeframe'), + type : 2, + next : true, + icon : null, + passive:false, + distiguishID:disID + }); + break; + case 'dateframe': + Aktionen.push({ + name : (oCondObject.title!=null)?oCondObject.title:_('Dateframe'), + type : 10, + next : true, + icon : null, + passive:false, + distiguishID:disID + }); + break; + case 'zonestate': Aktionen.push({ - name : oCondObject.title, - type : 5, + name : (oCondObject.title!=null)?oCondObject.title:_('ZoneState'), + type : 3, next : true, icon : null, passive:false, - parameter:oParameter, - distiguishID:-1*disID + distiguishID:disID }); - break; - case 'plainStates': - var oParameter=[]; - for (var jIndex=0;jIndex<oCondObject.entry.length;jIndex++) { - - var fShouldAdd=true; - if (oCondObject.entry[jIndex].type=='state') { - fShouldAdd=false; - for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) { - if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name) - fShouldAdd=true; - else - for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { - if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) - fShouldAdd=true; + break; + case 'singleItem': + var oParameter=[]; + if (oCondObject && oCondObject.entry) { + for (var jIndex=0;jIndex<oCondObject.entry.length;jIndex++) { + var fShouldAdd=true; + if (oCondObject.entry[jIndex].type=='state') { + fShouldAdd=false; + if (dss.staticDataModel.StateCache) { + for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) { + if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name) + fShouldAdd=true; + else + if (dss.staticDataModel.userGroups) { + for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { + if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) + fShouldAdd=true; + } + } + } + } + } + if (fShouldAdd) { + oParameter.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,title:oCondObject.entry[jIndex].title}); + this.stateGridText.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,gridText:oCondObject.entry[jIndex].gridText}); + if (dss.staticDataModel.StateCache) { + for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) { + for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { + if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) { + oParameter.push( + {name:dss.staticDataModel.StateCache[kIndex].name, + value:oCondObject.entry[jIndex].value, + title:oCondObject.entry[jIndex].title + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); + this.stateGridText.push( + {name:dss.staticDataModel.StateCache[kIndex].name, + value:oCondObject.entry[jIndex].value, + gridText:oCondObject.entry[jIndex].gridText + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); + } + } + } } + } } } + if (oParameter.length>0) + Aktionen.push({ + name : oCondObject.title, + type : 4, + next : true, + icon : null, + passive:false, + parameter:oParameter, + distiguishID:disID + }); + break; + case 'multiItem': + var oParameter=[]; + if (oCondObject && oCondObject.entry) { + for (var jIndex=0;jIndex<oCondObject.entry.length;jIndex++) { + + var fShouldAdd=true; + if (oCondObject.entry[jIndex].type=='state') { + fShouldAdd=false; + if (dss.staticDataModel.StateCache) { + for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) { + if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name) + fShouldAdd=true; + else + if (dss.staticDataModel.userGroups) { + for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { + if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) + fShouldAdd=true; + } + } + } + } + } - if (fShouldAdd) { - oParameter.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,title:oCondObject.entry[jIndex].title,group:oCondObject.entry[jIndex].group}); - this.stateGridText.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,gridText:oCondObject.entry[jIndex].gridText}); - for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) - for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { - if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) { - oParameter.push( - {name:dss.staticDataModel.StateCache[kIndex].name, - value:oCondObject.entry[jIndex].value, - title:oCondObject.entry[jIndex].title + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); - this.stateGridText.push( - {name:dss.staticDataModel.StateCache[kIndex].name, - value:oCondObject.entry[jIndex].value, - gridText:oCondObject.entry[jIndex].gridText + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); + if (fShouldAdd) { + oParameter.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,title:oCondObject.entry[jIndex].title,group:oCondObject.entry[jIndex].group}); + this.stateGridText.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,gridText:oCondObject.entry[jIndex].gridText}); + if (dss.staticDataModel.StateCache && dss.staticDataModel.userGroups) { + for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) { + for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { + if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) { + oParameter.push( + {name:dss.staticDataModel.StateCache[kIndex].name, + value:oCondObject.entry[jIndex].value, + title:oCondObject.entry[jIndex].title + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); + this.stateGridText.push( + {name:dss.staticDataModel.StateCache[kIndex].name, + value:oCondObject.entry[jIndex].value, + gridText:oCondObject.entry[jIndex].gridText + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); + } + } + } } } + } + } + if (oParameter.length>0) + Aktionen.push({ + name : oCondObject.title, + type : 5, + next : true, + icon : null, + passive:false, + parameter:oParameter, + distiguishID:-1*disID + }); + break; + case 'plainStates': + var oParameter=[]; + if (oCondObject && oCondObject.entry) { + for (var jIndex=0;jIndex<oCondObject.entry.length;jIndex++) { + + var fShouldAdd=true; + if (oCondObject.entry[jIndex].type=='state') { + fShouldAdd=false; + if (dss.staticDataModel.StateCache) { + for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) { + if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name) + fShouldAdd=true; + else + if (dss.staticDataModel.userGroups) { + for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { + if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) + fShouldAdd=true; + } + } + } + } + } + + if (fShouldAdd) { + oParameter.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,title:oCondObject.entry[jIndex].title,group:oCondObject.entry[jIndex].group}); + this.stateGridText.push({name:oCondObject.entry[jIndex].name,value:oCondObject.entry[jIndex].value,gridText:oCondObject.entry[jIndex].gridText}); + if (dss.staticDataModel.StateCache && dss.staticDataModel.userGroups) { + for (var kIndex=0;kIndex<dss.staticDataModel.StateCache.length;kIndex++) { + for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) { + if (dss.staticDataModel.StateCache[kIndex].name == oCondObject.entry[jIndex].name+".group" + dss.staticDataModel.userGroups[lIndex].id) { + oParameter.push( + {name:dss.staticDataModel.StateCache[kIndex].name, + value:oCondObject.entry[jIndex].value, + title:oCondObject.entry[jIndex].title + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); + this.stateGridText.push( + {name:dss.staticDataModel.StateCache[kIndex].name, + value:oCondObject.entry[jIndex].value, + gridText:oCondObject.entry[jIndex].gridText + ' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name}); + } + } + } + } + } + } } - } - Aktionen.push({ - name : oCondObject.title, - type : 8, - next : true, - icon : null, - passive:false, - parameter:oParameter, - distiguishID:-1*disID - }); - break; - case 'userDefinedState': - Aktionen.push({ - name : (oCondObject.title!=null)?oCondObject.title:_('user state'), - type : 7, - next : true, - icon : null, - passive:(dss.staticDataModel.getUserStates().length==0), - distiguishID:disID - }); - break; - case 'vdcDeviceState': - var fShowDeviceState=false; - for (var jIndex=0;jIndex<dss.staticDataModel.deviceCache.length;jIndex++) { - if (dss.staticDataModel.deviceCache[jIndex].hasStates) - if (dss.staticDataModel.deviceCache[jIndex].present) - fShowDeviceState=true; - } - if (fShowDeviceState) { Aktionen.push({ - name : (oCondObject.title!=null)?oCondObject.title:_('device states'), - type : 11, + name : oCondObject.title, + type : 8, next : true, icon : null, passive:false, - distiguishID:disID + parameter:oParameter, + distiguishID:-1*disID }); - } - break; - case 'globalApplication': - if (dss.staticDataModel.globalApplicationsAvaible) + break; + case 'userDefinedState': Aktionen.push({ - name : (oCondObject.title!=null)?oCondObject.title:_('Enabled'), - type : 12, + name : (oCondObject.title!=null)?oCondObject.title:_('user state'), + type : 7, next : true, icon : null, - passive:false, + passive:(dss.staticDataModel.getUserStates().length==0), distiguishID:disID }); - break; + break; + case 'vdcDeviceState': + var fShowDeviceState=false; + if (dss.staticDataModel.deviceCache) { + for (var jIndex=0;jIndex<dss.staticDataModel.deviceCache.length;jIndex++) { + if (dss.staticDataModel.deviceCache[jIndex].hasStates) + if (dss.staticDataModel.deviceCache[jIndex].present) + fShowDeviceState=true; + } + } + if (fShowDeviceState) { + Aktionen.push({ + name : (oCondObject.title!=null)?oCondObject.title:_('device states'), + type : 11, + next : true, + icon : null, + passive:false, + distiguishID:disID + }); + } + break; + case 'globalApplication': + if (dss.staticDataModel.globalApplicationsAvaible) + Aktionen.push({ + name : (oCondObject.title!=null)?oCondObject.title:_('Enabled'), + type : 12, + next : true, + icon : null, + passive:false, + distiguishID:disID + }); + break; - case 'deviceState': - var oStateDevices=[]; - var fPassive=false; - for (var jIndex=0;jIndex<dss.staticDataModel.getAKMDeviceArray().length;jIndex++) { - var fShouldAdd=true; - if (oCondObject.filterFunc!=null) - if (!oCondObject.filterFunc(dss.staticDataModel.getAKMDeviceArray()[jIndex])) + case 'deviceState': + var oStateDevices=[]; + var fPassive=false; + var akmDeviceArray = dss.staticDataModel.getAKMDeviceArray(); + if (akmDeviceArray) { + for (var jIndex=0;jIndex<akmDeviceArray.length;jIndex++) { + var fShouldAdd=true; + if (oCondObject.filterFunc!=null) + if (!oCondObject.filterFunc(akmDeviceArray[jIndex])) + fShouldAdd=false; + + if ((akmDeviceArray[jIndex].present!=true)&&(!this.fIgnorePresence)) fShouldAdd=false; - if ((dss.staticDataModel.getAKMDeviceArray()[jIndex].present!=true)&&(!this.fIgnorePresence)) - fShouldAdd=false; - - if (fShouldAdd) - oStateDevices.push(dss.staticDataModel.getAKMDeviceArray()[jIndex]); + if (fShouldAdd) + oStateDevices.push(akmDeviceArray[jIndex]); - } + } + } - for (var jIndex=0;jIndex<dss.staticDataModel.deviceCache.length;jIndex++) { - if (dss.staticDataModel.deviceCache[jIndex].specialActions!=null) - if (dss.staticDataModel.deviceCache[jIndex].specialActions.conditions!=null) - if (dss.staticDataModel.deviceCache[jIndex].specialActions.conditions.akmEvent!=null) { - var fDataExisting=false; - for (var kIndex=0;kIndex<oStateDevices.length;kIndex++) { - if (oStateDevices[kIndex].dSUID==dss.staticDataModel.deviceCache[jIndex].dSUID) { - fDataExisting=true; + if (dss.staticDataModel.deviceCache) { + for (var jIndex=0;jIndex<dss.staticDataModel.deviceCache.length;jIndex++) { + if (dss.staticDataModel.deviceCache[jIndex].specialActions!=null) + if (dss.staticDataModel.deviceCache[jIndex].specialActions.conditions!=null) + if (dss.staticDataModel.deviceCache[jIndex].specialActions.conditions.akmEvent!=null) { + var fDataExisting=false; + for (var kIndex=0;kIndex<oStateDevices.length;kIndex++) { + if (oStateDevices[kIndex].dSUID==dss.staticDataModel.deviceCache[jIndex].dSUID) { + fDataExisting=true; + } + } + if (!fDataExisting) + if ((dss.staticDataModel.deviceCache[jIndex].present!=false)||(this.fIgnorePresence)) + oStateDevices.push(dss.staticDataModel.deviceCache[jIndex]); } - } - if (!fDataExisting) - if ((dss.staticDataModel.deviceCache[jIndex].present!=false)||(this.fIgnorePresence)) - oStateDevices.push(dss.staticDataModel.deviceCache[jIndex]); - } - } + } + } - if (Ext.data.StoreManager.lookup('conditionConfigurator_zoneAKMStore') == null) { - Ext.create('Ext.data.Store', { - storeId : 'conditionConfigurator_zoneAKMStore', - fields : [ 'ZoneID', 'name' ], - proxy : { - type : 'memory', - reader : { - type : 'json', - root : 'items' + if (Ext.data.StoreManager.lookup('conditionConfigurator_zoneAKMStore') == null) { + Ext.create('Ext.data.Store', { + storeId : 'conditionConfigurator_zoneAKMStore', + fields : [ 'ZoneID', 'name' ], + proxy : { + type : 'memory', + reader : { + type : 'json', + root : 'items' + } } - } - }); - var oZone=[]; - for (var jIndex=0;jIndex<oStateDevices.length;jIndex++) - if (oZone.indexOf(oStateDevices[jIndex].ZoneID)<0){ - oZone.push(oStateDevices[jIndex].ZoneID); - } - for (var jIndex=0;jIndex<oZone.length;jIndex++) - Ext.data.StoreManager.lookup('conditionConfigurator_zoneAKMStore').add({ - ZoneID:oZone[jIndex], - name:dss.staticDataModel.getNameForZone(oZone[jIndex]) }); - } + var oZone=[]; + for (var jIndex=0;jIndex<oStateDevices.length;jIndex++) + if (oZone.indexOf(oStateDevices[jIndex].ZoneID)<0){ + oZone.push(oStateDevices[jIndex].ZoneID); + } + for (var jIndex=0;jIndex<oZone.length;jIndex++) + Ext.data.StoreManager.lookup('conditionConfigurator_zoneAKMStore').add({ + ZoneID:oZone[jIndex], + name:dss.staticDataModel.getNameForZone(oZone[jIndex]) + }); + } - if (Ext.data.StoreManager.lookup('conditionConfigurator_deviceAKMStore') == null) { - Ext.create('Ext.data.Store', { - storeId : 'conditionConfigurator_deviceAKMStore', - fields : [ 'dSID', 'dSUID', 'name', 'icon', 'present' ], - proxy : { - type : 'memory', - reader : { - type : 'json', - root : 'items' + if (Ext.data.StoreManager.lookup('conditionConfigurator_deviceAKMStore') == null) { + Ext.create('Ext.data.Store', { + storeId : 'conditionConfigurator_deviceAKMStore', + fields : [ 'dSID', 'dSUID', 'name', 'icon', 'present' ], + proxy : { + type : 'memory', + reader : { + type : 'json', + root : 'items' + } } + }); + for (var jIndex=0;jIndex<oStateDevices.length;jIndex++) + { + Ext.data.StoreManager.lookup('conditionConfigurator_deviceAKMStore').add(oStateDevices[jIndex] ); } - }); - for (var jIndex=0;jIndex<oStateDevices.length;jIndex++) - { - Ext.data.StoreManager.lookup('conditionConfigurator_deviceAKMStore').add(oStateDevices[jIndex] ); } - } - if (oStateDevices.length==0) - fPassive=true; - Aktionen.push({ - name : oCondObject.title, - type : 6, - next : true, - icon : null, - passive:fPassive, - parameter:oStateDevices, - distiguishID:-1*disID - }); - break; - case 'clusterstate': - if (!dss.staticDataModel.clusterAvaible) - break; - var oClusters = []; - var fPassive = false; - - var oUsergroups = dss.staticDataModel.getUsergroups(); - for (var jIndex = 0; jIndex < oUsergroups.length; jIndex++) { - var fShouldAdd = true; - if (oCondObject.filterFunc != null) { - if (!oCondObject.filterFunc(oUsergroups[jIndex])) { - fShouldAdd = false; + if (oStateDevices.length==0) + fPassive=true; + Aktionen.push({ + name : oCondObject.title, + type : 6, + next : true, + icon : null, + passive:fPassive, + parameter:oStateDevices, + distiguishID:-1*disID + }); + break; + case 'clusterstate': + if (!dss.staticDataModel.clusterAvaible) + break; + var oClusters = []; + var fPassive = false; + + var oUsergroups = dss.staticDataModel.getUsergroups(); + if (oUsergroups) { + for (var jIndex = 0; jIndex < oUsergroups.length; jIndex++) { + var fShouldAdd = true; + if (oCondObject.filterFunc != null) { + if (!oCondObject.filterFunc(oUsergroups[jIndex])) { + fShouldAdd = false; + } + } + if ((oUsergroups[jIndex].present == false) && (!this.fIgnorePresence)) { + fShouldAdd = false; + } + if (fShouldAdd) { + oClusters.push(oUsergroups[jIndex]); + } } } - if ((oUsergroups[jIndex].present == false) && (!this.fIgnorePresence)) { - fShouldAdd = false; - } - if (fShouldAdd) { - oClusters.push(oUsergroups[jIndex]); - } - } - if (Ext.data.StoreManager.lookup('conditionConfigurator_clusterStore') == null) { - Ext.create('Ext.data.Store', { - storeId : 'conditionConfigurator_clusterStore', - fields : [ '_id', 'name', 'reachable', 'color' ], - proxy : { - type : 'memory', - reader : { - type : 'json', - root : 'items' + if (Ext.data.StoreManager.lookup('conditionConfigurator_clusterStore') == null) { + Ext.create('Ext.data.Store', { + storeId : 'conditionConfigurator_clusterStore', + fields : [ '_id', 'name', 'reachable', 'color' ], + proxy : { + type : 'memory', + reader : { + type : 'json', + root : 'items' + } } + }); + for (var jIndex = 0; jIndex < oClusters.length; jIndex++) { + Ext.data.StoreManager.lookup('conditionConfigurator_clusterStore').add(oClusters[jIndex]); } + } + Aktionen.push({ + name : (oCondObject.title != null) ? oCondObject.title : _('Cluster State'), + type : 9, + next : true, + icon : null, + passive: fPassive, + parameter: oClusters, + distiguishID: disID }); - for (var jIndex = 0; jIndex < oClusters.length; jIndex++) { - Ext.data.StoreManager.lookup('conditionConfigurator_clusterStore').add(oClusters[jIndex]); - } - } - Aktionen.push({ - name : (oCondObject.title != null) ? oCondObject.title : _('Cluster State'), - type : 9, - next : true, - icon : null, - passive: fPassive, - parameter: oClusters, - distiguishID: disID - }); - break; - case 'climateState': - // check if apartment_controller state exists - if not, the item should be non-selectable - var apartmentControllerStateExists = dss.ajaxSyncRequest('/json/property/query2', { - 'query' : '/usr/addon-states/heating-controller/apartment_controller(state)' - }); - try { - apartmentControllerStateExists = JSON.parse(apartmentControllerStateExists); - apartmentControllerStateExists = apartmentControllerStateExists && apartmentControllerStateExists.ok && - apartmentControllerStateExists.result && Object.keys(apartmentControllerStateExists.result).length; - } catch (e) { - apartmentControllerStateExists = false; - } - Aktionen.push({ - name: (oCondObject.title != null) ? oCondObject.title : _('Heating Modes'), - type: 13, - next: true, - icon: null, - passive: !apartmentControllerStateExists, - distiguishID: disID - }); - break; + break; + case 'climateState': + // check if apartment_controller state exists - if not, the item should be non-selectable + var apartmentControllerStateExists = dss.ajaxSyncRequest('/json/property/query2', { + 'query' : '/usr/addon-states/heating-controller/apartment_controller(state)' + }); + try { + apartmentControllerStateExists = JSON.parse(apartmentControllerStateExists); + apartmentControllerStateExists = apartmentControllerStateExists && apartmentControllerStateExists.ok && + apartmentControllerStateExists.result && Object.keys(apartmentControllerStateExists.result).length; + } catch (e) { + apartmentControllerStateExists = false; + } + Aktionen.push({ + name: (oCondObject.title != null) ? oCondObject.title : _('Heating Modes'), + type: 13, + next: true, + icon: null, + passive: !apartmentControllerStateExists, + distiguishID: disID + }); + break; + } } } @@ -1256,19 +1300,20 @@ Ext.define('DSS.component.ConditionConfigurator', { } }); var oScenes = dss.staticDataModel.getScenes(ZoneID, groupID); - for ( var iIndex = 0; iIndex < oScenes.length; iIndex++) { - var oObject = {}; - oObject.id = oScenes[iIndex].id; - oObject._id = oScenes[iIndex].id; - oObject.reachable = oScenes[iIndex].reachable; - oObject.icon = oScenes[iIndex].icon; - if (oScenes[iIndex].name == oScenes[iIndex].defaultName) - oObject.name = oScenes[iIndex].name; - else - oObject.name = oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; - Ext.data.StoreManager.lookup('conditionConfigurator_szeneStore_' + ZoneID + '_' + groupID).add(oObject); + if (oScenes) { + for ( var iIndex = 0; iIndex < oScenes.length; iIndex++) { + var oObject = {}; + oObject.id = oScenes[iIndex].id; + oObject._id = oScenes[iIndex].id; + oObject.reachable = oScenes[iIndex].reachable; + oObject.icon = oScenes[iIndex].icon; + if (oScenes[iIndex].name == oScenes[iIndex].defaultName) + oObject.name = oScenes[iIndex].name; + else + oObject.name = oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; + Ext.data.StoreManager.lookup('conditionConfigurator_szeneStore_' + ZoneID + '_' + groupID).add(oObject); + } } - } return Ext.data.StoreManager.lookup('conditionConfigurator_szeneStore_' + ZoneID + '_' + groupID); @@ -1302,45 +1347,47 @@ Ext.define('DSS.component.ConditionConfigurator', { } if (!fSkip) { var bIsWindowHandle = dss.staticDataModel.IsWindowHandle(oDevice); - for (var iIndex=0;iIndex<oDevice.binaryInputs.length;iIndex++) { - if (!bIsWindowHandle) { - var oItem={ - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,false), - '_id':2, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,false), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,false), - 'index':oDevice.binaryInputs[iIndex].index}; - oStore.add(oItem); - oItem={ - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,true), - '_id':1, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,true), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,true), - 'index':oDevice.binaryInputs[iIndex].index}; - oStore.add(oItem); - } else { - if (oDevice.binaryInputs[iIndex].type == 15) { // BinaryInputIDWindowTilt + if (oDevice.binaryInputs) { + for (var iIndex=0;iIndex<oDevice.binaryInputs.length;iIndex++) { + if (!bIsWindowHandle) { var oItem={ - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), - '_id':dss.whState.WH_Closed, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,false), + '_id':2, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,false), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,false), 'index':oDevice.binaryInputs[iIndex].index}; oStore.add(oItem); oItem={ - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), - '_id':dss.whState.WH_Open, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), - 'index':oDevice.binaryInputs[iIndex].index}; - oStore.add(oItem); - oItem={ - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), - '_id':dss.whState.WH_Tilted, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,true), + '_id':1, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,true), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,true), 'index':oDevice.binaryInputs[iIndex].index}; oStore.add(oItem); + } else { + if (oDevice.binaryInputs[iIndex].type == 15) { // BinaryInputIDWindowTilt + var oItem={ + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), + '_id':dss.whState.WH_Closed, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), + 'index':oDevice.binaryInputs[iIndex].index}; + oStore.add(oItem); + oItem={ + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), + '_id':dss.whState.WH_Open, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), + 'index':oDevice.binaryInputs[iIndex].index}; + oStore.add(oItem); + oItem={ + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), + '_id':dss.whState.WH_Tilted, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), + 'index':oDevice.binaryInputs[iIndex].index}; + oStore.add(oItem); + } } } } @@ -1857,13 +1904,15 @@ Ext.define('DSS.component.ConditionConfigurator', { } } }); - for (var iIndex=0;iIndex<oParams.length;iIndex++) { - var oItem={name:oParams[iIndex].name, - value:oParams[iIndex].value, - title:oParams[iIndex].title, - icon:dss.staticDataModel.getImagePathForState(oParams[iIndex].name,oParams[iIndex].value), - passive:false}; - oSystemStateControlStore.add(oItem); + if (oParams && Object.prototype.toString.call(oParams) === '[object Array]') { + for (var iIndex=0;iIndex<oParams.length;iIndex++) { + var oItem={name:oParams[iIndex].name, + value:oParams[iIndex].value, + title:oParams[iIndex].title, + icon:dss.staticDataModel.getImagePathForState(oParams[iIndex].name,oParams[iIndex].value), + passive:false}; + oSystemStateControlStore.add(oItem); + } } this.grids.lvlSystemState = Ext.create('Ext.grid.Panel', { @@ -1930,9 +1979,11 @@ Ext.define('DSS.component.ConditionConfigurator', { }); var oState=null; - for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) { - if (dss.staticDataModel.userStates[iIndex].name==stateID) { - oState = dss.staticDataModel.userStates[iIndex]; + if (dss.staticDataModel.userStates) { + for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) { + if (dss.staticDataModel.userStates[iIndex].name==stateID) { + oState = dss.staticDataModel.userStates[iIndex]; + } } } if (oState!=null) { @@ -1992,13 +2043,16 @@ Ext.define('DSS.component.ConditionConfigurator', { oCondiObject.stateName=record.get('name'); oCondiObject.stateValue=(record.get('value')=='active')?1:2; - for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) - if (dss.staticDataModel.userStates[iIndex].name==oCondiObject.stateName) { - if (record.get('value')=='active') - oCondiObject.name= dss.staticDataModel.userStates[iIndex].setName; - else - oCondiObject.name= dss.staticDataModel.userStates[iIndex].resetName; + if (dss.staticDataModel.userStates) { + for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) { + if (dss.staticDataModel.userStates[iIndex].name==oCondiObject.stateName) { + if (record.get('value')=='active') + oCondiObject.name= dss.staticDataModel.userStates[iIndex].setName; + else + oCondiObject.name= dss.staticDataModel.userStates[iIndex].resetName; + } } + } oCondiObject.addonid='system-addon-user-defined-states'; this.parent.setSelectedSubItem(oCondiObject,distiguishID); @@ -2189,20 +2243,22 @@ Ext.define('DSS.component.ConditionConfigurator', { } } }); - for (var iIndex=0;iIndex<oParams.length;iIndex++) { - var oItem={name:oParams[iIndex].name, - value:oParams[iIndex].value, - title:oParams[iIndex].title, - group:oParams[iIndex].group, - icon:dss.staticDataModel.getImagePathForState(oParams[iIndex].name,oParams[iIndex].value), - passive:false}; - this.gridStore.each(function (oRecord) { - if (oRecord.get('pos')==distiguishID) - if (oRecord.get('condition').group==oParams[iIndex].group) - if (ignoreGroup!=oParams[iIndex].group) - oItem.passive=true; - }); - oSystemStateControlStore.add(oItem); + if (oParams && Object.prototype.toString.call(oParams) === '[object Array]') { + for (var iIndex=0;iIndex<oParams.length;iIndex++) { + var oItem={name:oParams[iIndex].name, + value:oParams[iIndex].value, + title:oParams[iIndex].title, + group:oParams[iIndex].group, + icon:dss.staticDataModel.getImagePathForState(oParams[iIndex].name,oParams[iIndex].value), + passive:false}; + this.gridStore.each(function (oRecord) { + if (oRecord.get('pos')==distiguishID) + if (oRecord.get('condition').group==oParams[iIndex].group) + if (ignoreGroup!=oParams[iIndex].group) + oItem.passive=true; + }); + oSystemStateControlStore.add(oItem); + } } this.grids.lvlSystemState = Ext.create('Ext.grid.Panel', { @@ -2305,66 +2361,69 @@ Ext.define('DSS.component.ConditionConfigurator', { }); var fSplitter=false; - for (var iIndex=0;iIndex<dss.staticDataModel.getStates().length;iIndex++) { - var oState=dss.staticDataModel.getStates()[iIndex]; - var oStateArray=oState.name.split('.'); - if (oStateArray[0]=='zone') { - if (oStateArray[1]==""+zoneID) { - if ((oStateArray[2]!='light') && (oStateArray[2]!='heating')) { - if (!fSplitter) { + var states = dss.staticDataModel.getStates(); + if (states) { + for (var iIndex=0;iIndex<states.length;iIndex++) { + var oState=states[iIndex]; + var oStateArray=oState.name.split('.'); + if (oStateArray[0]=='zone') { + if (oStateArray[1]==""+zoneID) { + if ((oStateArray[2]!='light') && (oStateArray[2]!='heating')) { + if (!fSplitter) { + oGroupControlStore.add({ + group : -1, + name : '-', + passive:'-', + icon : null, + reachable : true + }); + fSplitter=true; + } + var sIcon,sText; + if (oStateArray[2]=='motion') { + sIcon=dss.staticDataModel.getImagePathForAKMValue(5,true); + sText=Ext.String.format2(_("{#editor_trigger_zonestates}motion is active")); + } + else if (oStateArray[2]=='presence') { + sIcon=dss.staticDataModel.getImagePathForAKMValue(1,true); + sText=Ext.String.format2(_("{#editor_trigger_zonestates}presence is active")); + } + else { + sIcon=dss.staticDataModel.getImagePathForAKMValue(0,true); + sText=Ext.String.format2(_("{#editor_condition_zonestates_generic}{state} is active"),{state:oStateArray[2]}); + } + oGroupControlStore.add({ - group : -1, - name : '-', - passive:'-', - icon : null, - reachable : true + id : -2, + _id : -2, + state : oState.name, + name : sText, + icon : sIcon, + group:null }); - fSplitter=true; - } - var sIcon,sText; - if (oStateArray[2]=='motion') { - sIcon=dss.staticDataModel.getImagePathForAKMValue(5,true); - sText=Ext.String.format2(_("{#editor_trigger_zonestates}motion is active")); - } - else if (oStateArray[2]=='presence') { - sIcon=dss.staticDataModel.getImagePathForAKMValue(1,true); - sText=Ext.String.format2(_("{#editor_trigger_zonestates}presence is active")); - } - else { - sIcon=dss.staticDataModel.getImagePathForAKMValue(0,true); - sText=Ext.String.format2(_("{#editor_condition_zonestates_generic}{state} is active"),{state:oStateArray[2]}); - } - oGroupControlStore.add({ - id : -2, - _id : -2, - state : oState.name, - name : sText, - icon : sIcon, - group:null - }); + if (oStateArray[2]=='motion') { + sIcon=dss.staticDataModel.getImagePathForAKMValue(5,false); + sText=Ext.String.format2(_("{#editor_trigger_zonestates}motion is inactive")); + } + else if (oStateArray[2]=='presence') { + sIcon=dss.staticDataModel.getImagePathForAKMValue(1,true); + sText=Ext.String.format2(_("{#editor_trigger_zonestates}presence is inactive")); + } + else { + sIcon=dss.staticDataModel.getImagePathForAKMValue(0,false); + sText=Ext.String.format2(_("{#editor_condition_zonestates_generic}{state} is inactive"),{state:oStateArray[2]}); + } - if (oStateArray[2]=='motion') { - sIcon=dss.staticDataModel.getImagePathForAKMValue(5,false); - sText=Ext.String.format2(_("{#editor_trigger_zonestates}motion is inactive")); - } - else if (oStateArray[2]=='presence') { - sIcon=dss.staticDataModel.getImagePathForAKMValue(1,true); - sText=Ext.String.format2(_("{#editor_trigger_zonestates}presence is inactive")); - } - else { - sIcon=dss.staticDataModel.getImagePathForAKMValue(0,false); - sText=Ext.String.format2(_("{#editor_condition_zonestates_generic}{state} is inactive"),{state:oStateArray[2]}); + oGroupControlStore.add({ + id : -3, + _id : -3, + state : oState.name, + name : sText, + icon : sIcon, + group:null + }); } - - oGroupControlStore.add({ - id : -3, - _id : -3, - state : oState.name, - name : sText, - icon : sIcon, - group:null - }); } } } @@ -2813,12 +2872,14 @@ Ext.define('DSS.component.ConditionConfigurator', { }); var oDeviceArray=[]; - for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].hasStates) - if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { - oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); - } + if (dss.staticDataModel.deviceCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].hasStates) + if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { + oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); + } + } } @@ -2854,12 +2915,14 @@ Ext.define('DSS.component.ConditionConfigurator', { }, constructGridDeviceStateRoom: function (distiguishID) { var oRoomArray=[]; - for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].hasStates) - if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { - oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); - } + if (dss.staticDataModel.deviceCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].hasStates) + if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { + oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); + } + } } var oRoomDeviceStateControlStore = Ext.create('Ext.data.Store', { fields : [ 'ZoneID', {name:'name',sortType:'asUCText'} ], @@ -2946,7 +3009,7 @@ Ext.define('DSS.component.ConditionConfigurator', { oGAValueStore.add(oItem); } var scenes=dss.staticDataModel.getScenes(0,GroupID); - if (scenes.length>0){ + if (scenes && scenes.length>0){ oGAValueStore.add({ name: '-', value: null, @@ -3044,16 +3107,20 @@ Ext.define('DSS.component.ConditionConfigurator', { } }); var oArray=[]; - for (var iIndex=0;iIndex<dss.staticDataModel.nameCache.length;iIndex++) { - if (dss.staticDataModel.nameCache[iIndex].ZoneID==0) - for (var jIndex=0;jIndex<dss.staticDataModel.nameCache[iIndex].groups.length;jIndex++) - if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].group>63) { - var oGroup={'GroupID':dss.staticDataModel.nameCache[iIndex].groups[jIndex].group, - 'name':dss.staticDataModel.nameCache[iIndex].groups[jIndex].name}; - if (dss.staticDataModel.getDevicesForZone(0,dss.staticDataModel.nameCache[iIndex].groups[jIndex].group).length==0) - oGroup.passive=true; - oArray.push(oGroup); + if (dss.staticDataModel.nameCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.nameCache.length;iIndex++) { + if (dss.staticDataModel.nameCache[iIndex].ZoneID==0 && dss.staticDataModel.nameCache[iIndex].groups) { + for (var jIndex=0;jIndex<dss.staticDataModel.nameCache[iIndex].groups.length;jIndex++) { + if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].group>63) { + var oGroup={'GroupID':dss.staticDataModel.nameCache[iIndex].groups[jIndex].group, + 'name':dss.staticDataModel.nameCache[iIndex].groups[jIndex].name}; + if (dss.staticDataModel.getDevicesForZone(0,dss.staticDataModel.nameCache[iIndex].groups[jIndex].group).length==0) + oGroup.passive=true; + oArray.push(oGroup); + } } + } + } } oGAControlStore.add(oArray); oGAControlStore.sort('name'); @@ -3368,9 +3435,11 @@ Ext.define('DSS.component.ConditionConfigurator', { if (oDevice != null) { var typeIndex = parseInt(nameArray[2], 10); var type = 255; - for (var k = 0; k < oDevice.binaryInputs.length; k++) { - if (oDevice.binaryInputs[k].index == typeIndex) { - type = oDevice.binaryInputs[k].type; + if (oDevice.binaryInputs) { + for (var k = 0; k < oDevice.binaryInputs.length; k++) { + if (oDevice.binaryInputs[k].index == typeIndex) { + type = oDevice.binaryInputs[k].type; + } } } this.constructGridLvlAKM(-1); @@ -3816,9 +3885,11 @@ Ext.define('DSS.component.ConditionConfigurator', { if (oDevice!=null) { var typeIndex=parseInt(oArray[2],10); var type=255; - for (var lIndex=0;lIndex<oDevice.binaryInputs.length;lIndex++) - if (oDevice.binaryInputs[lIndex].index==typeIndex) - type=oDevice.binaryInputs[lIndex].type; + if (oDevice.binaryInputs) { + for (var lIndex=0;lIndex<oDevice.binaryInputs.length;lIndex++) + if (oDevice.binaryInputs[lIndex].index==typeIndex) + type=oDevice.binaryInputs[lIndex].type; + } lvl1Store.each(function (record) { if (record.get('type')==6) { @@ -3865,18 +3936,24 @@ Ext.define('DSS.component.ConditionConfigurator', { if (!fAdded) { lvl1Store.each(function (record) { if (record.get('type')==4) { - for (var lIndex=0;lIndex<record.get('parameter').length;lIndex++) - if (record.get('parameter')[lIndex].name==values.systemState[kIndex].name) - if (record.get('parameter')[lIndex].value==values.systemState[kIndex].value) - oObject.pos=record.get('distiguishID'); + var param = record.get('parameter'); + if (param) { + for (var lIndex=0;lIndex<param.length;lIndex++) + if (param[lIndex].name==values.systemState[kIndex].name) + if (param[lIndex].value==values.systemState[kIndex].value) + oObject.pos=record.get('distiguishID'); + } } if (record.get('type')==5) { - for (var lIndex=0;lIndex<record.get('parameter').length;lIndex++) - if (record.get('parameter')[lIndex].name==values.systemState[kIndex].name) - if (record.get('parameter')[lIndex].value==values.systemState[kIndex].value) { - oObject.pos=record.get('distiguishID'); - oObject.condition.group=record.get('parameter')[lIndex].group; - } + var param = record.get('parameter'); + if (param) { + for (var lIndex=0;lIndex<param.length;lIndex++) + if (param[lIndex].name==values.systemState[kIndex].name) + if (param[lIndex].value==values.systemState[kIndex].value) { + oObject.pos=record.get('distiguishID'); + oObject.condition.group=param[lIndex].group; + } + } } if (record.get('type')==12) { if (values.systemState[kIndex].name.indexOf('zone.0.group')>-1) { @@ -4038,46 +4115,45 @@ Ext.define('DSS.component.ConditionConfigurator', { break; } }); - if (this.hiddenValues!=null) - if (this.hiddenValues.length>0) { - for (var iIndex=0;iIndex<this.hiddenValues.length;iIndex++) { - switch (this.hiddenValues[iIndex].condition.type) { - case 'timeframe': - if (localValues.timeframe==null) - localValues.timeframe=[]; - localValues.timeframe.push(this.hiddenValues[iIndex].condition.value); - break; - case 'zonestate': - if (localValues.zoneState==null) - localValues.zoneState=[]; - localValues.zoneState.push(this.hiddenValues[iIndex].condition.value); - break; - case 'state': - if (localValues.systemState==null) - localValues.systemState=[]; - localValues.systemState.push({name:this.hiddenValues[iIndex].condition.name,value:this.hiddenValues[iIndex].condition.value}); - break; - case 'enabler': - localValues.enabled=this.hiddenValues[iIndex].condition.value; - break; - case 'weekdays': - localValues.weekdays=this.hiddenValues[iIndex].condition.value; - break; - case 'addon-state': - if (localValues.addonStates==null) - localValues.addonStates={}; - if (localValues.addonStates[this.hiddenValues[iIndex].condition.addonid]==null) - localValues.addonStates[this.hiddenValues[iIndex].condition.addonid]=[]; - localValues.addonStates[this.hiddenValues[iIndex].condition.addonid].push({name:this.hiddenValues[iIndex].condition.stateName,value:this.hiddenValues[iIndex].condition.stateValue,addonState:this.hiddenValues[iIndex].condition.addonid}); + if (this.hiddenValues) { + for (var iIndex=0;iIndex<this.hiddenValues.length;iIndex++) { + switch (this.hiddenValues[iIndex].condition.type) { + case 'timeframe': + if (localValues.timeframe==null) + localValues.timeframe=[]; + localValues.timeframe.push(this.hiddenValues[iIndex].condition.value); break; - case 'dateframe': - if (localValues.date==null) - localValues.date=[]; - localValues.date.push(this.hiddenValues[iIndex].condition.value); + case 'zonestate': + if (localValues.zoneState==null) + localValues.zoneState=[]; + localValues.zoneState.push(this.hiddenValues[iIndex].condition.value); break; - } + case 'state': + if (localValues.systemState==null) + localValues.systemState=[]; + localValues.systemState.push({name:this.hiddenValues[iIndex].condition.name,value:this.hiddenValues[iIndex].condition.value}); + break; + case 'enabler': + localValues.enabled=this.hiddenValues[iIndex].condition.value; + break; + case 'weekdays': + localValues.weekdays=this.hiddenValues[iIndex].condition.value; + break; + case 'addon-state': + if (localValues.addonStates==null) + localValues.addonStates={}; + if (localValues.addonStates[this.hiddenValues[iIndex].condition.addonid]==null) + localValues.addonStates[this.hiddenValues[iIndex].condition.addonid]=[]; + localValues.addonStates[this.hiddenValues[iIndex].condition.addonid].push({name:this.hiddenValues[iIndex].condition.stateName,value:this.hiddenValues[iIndex].condition.stateValue,addonState:this.hiddenValues[iIndex].condition.addonid}); + break; + case 'dateframe': + if (localValues.date==null) + localValues.date=[]; + localValues.date.push(this.hiddenValues[iIndex].condition.value); + break; } } + } return localValues; } }); diff --git a/js/dss/dss-components/dss-device-selector.js b/js/dss/dss-components/dss-device-selector.js index e2078046..c0a7f913 100644 --- a/js/dss/dss-components/dss-device-selector.js +++ b/js/dss/dss-components/dss-device-selector.js @@ -22,7 +22,7 @@ Ext.define('DSS.component.DeviceSelector', { }, initStores : function() { if (Ext.data.StoreManager.lookup('deviceSelector_zoneStore'+this.myID) == null) { - + Ext.create('Ext.data.Store', { storeId : 'deviceSelector_zoneStore' + this.myID, fields : [ 'ZoneID', 'name' , 'passive'], @@ -35,43 +35,46 @@ Ext.define('DSS.component.DeviceSelector', { } }); var oArray=dss.staticDataModel.getZoneArray(); - - for (var iIndex=0;iIndex<oArray.length;iIndex++) { - Ext.create('Ext.data.Store', { - storeId : 'deviceSelector_deviceStore_' + oArray[iIndex].ZoneID + this.myID, - fields : [ 'dSID', 'dSUID', 'name', 'icon', 'present' ], - proxy : { - type : 'memory', - reader : { - type : 'json', - root : 'items' + if (oArray) { + for (var iIndex=0;iIndex<oArray.length;iIndex++) { + Ext.create('Ext.data.Store', { + storeId : 'deviceSelector_deviceStore_' + oArray[iIndex].ZoneID + this.myID, + fields : [ 'dSID', 'dSUID', 'name', 'icon', 'present' ], + proxy : { + type : 'memory', + reader : { + type : 'json', + root : 'items' + } } - } - }); - var oObject={ - ZoneID:oArray[iIndex].ZoneID, - name:oArray[iIndex].name, - passive:true - }; - - var oDeviceArray=dss.staticDataModel.getDevicesForZone(oArray[iIndex].ZoneID,0); - for (var jIndex=0;jIndex<oDeviceArray.length;jIndex++) { - var oDeviceObject=oDeviceArray[jIndex]; - if (oDeviceObject.present) { - if (this.filterFunc==null) { - oObject.passive = false; - Ext.data.StoreManager.lookup('deviceSelector_deviceStore_' + oArray[iIndex].ZoneID + this.myID).add(oDeviceObject); - } else - if (this.filterFunc(oDeviceArray[jIndex])) { - oObject.passive = false; - Ext.data.StoreManager.lookup('deviceSelector_deviceStore_' + oArray[iIndex].ZoneID + this.myID).add(oDeviceObject); + }); + var oObject={ + ZoneID:oArray[iIndex].ZoneID, + name:oArray[iIndex].name, + passive:true + }; + + var oDeviceArray=dss.staticDataModel.getDevicesForZone(oArray[iIndex].ZoneID,0); + if (oDeviceArray) { + for (var jIndex=0;jIndex<oDeviceArray.length;jIndex++) { + var oDeviceObject=oDeviceArray[jIndex]; + if (oDeviceObject.present) { + if (this.filterFunc==null) { + oObject.passive = false; + Ext.data.StoreManager.lookup('deviceSelector_deviceStore_' + oArray[iIndex].ZoneID + this.myID).add(oDeviceObject); + } else + if (this.filterFunc(oDeviceArray[jIndex])) { + oObject.passive = false; + Ext.data.StoreManager.lookup('deviceSelector_deviceStore_' + oArray[iIndex].ZoneID + this.myID).add(oDeviceObject); + } } + } } + Ext.data.StoreManager.lookup('deviceSelector_zoneStore' + this.myID).add(oObject); } - Ext.data.StoreManager.lookup('deviceSelector_zoneStore' + this.myID).add(oObject); } } - }, + }, defMacGridRenderer : function(val, metadata, record, colIdx, store, view) { var fHasIcon=false; if (record.get('icon') != null) @@ -82,22 +85,22 @@ Ext.define('DSS.component.DeviceSelector', { if ((record.get('dSID') != null) || (record.get('dSUID') != null)) // ist ein device -> kein weiterbutton { fHasNext=false; - } + } - var fIsPassive=false; + var fIsPassive=false; if (record.get('passive')!=null) if (record.get('passive')) fIsPassive=true; - + if (fIsPassive) { fHasNext=false; // spalte disabled -> niemals weiterbutton } - + var sReturn='<table style="height:16px;width:100%"><tr>'; var iColspaceCounter=3; if (fHasIcon) { - iColspaceCounter--; + iColspaceCounter--; sReturn+='<td><img src="' + record.get('icon') + '" style="margin-right: 5px;"></td>'; } @@ -111,7 +114,7 @@ Ext.define('DSS.component.DeviceSelector', { if (fHasNext) { sReturn+='<td>></td>'; } - return sReturn +'</tr></table>'; + return sReturn +'</tr></table>'; }, getDeviceStore : function (zoneID) { return Ext.data.StoreManager.lookup('deviceSelector_deviceStore_' + zoneID + this.myID); @@ -164,7 +167,7 @@ Ext.define('DSS.component.DeviceSelector', { }); this.macPanel.add(this.grids.lvlDevice); - + }, constructMacGrids : function() { var oZoneStore; @@ -180,7 +183,7 @@ Ext.define('DSS.component.DeviceSelector', { } } }); - + oZoneStore = Ext.data.StoreManager.lookup('deviceSelector_zoneStore'+this.myID); oZoneStore.each(function(record) { var oNewRecord = record.copy(); @@ -188,7 +191,7 @@ Ext.define('DSS.component.DeviceSelector', { oZoneControlStore.add(oNewRecord); }); oZoneControlStore.sort('name'); - + this.grids.lvlRoom = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -205,22 +208,22 @@ Ext.define('DSS.component.DeviceSelector', { dataIndex : 'name', flex : 1, renderer :function(val, metadata, record, colIdx, store, view) { - var fIsPassive=false; + var fIsPassive=false; if (record.get('passive')!=null) if (record.get('passive')) fIsPassive=true; - + var sReturn='<table style="height:16px;width:100%"><tr>'; if (fIsPassive) { sReturn+='<td style="color:#888888;" colspan="2" width="100%">' + record.get('name') + '</td>'; } else { sReturn+='<td width="100%">' + record.get('name') + '</td><td>></td>'; } - return sReturn +'</tr></table>'; + return sReturn +'</tr></table>'; } } ] }); - + this.grids.lvlRoom.parent = this; this.grids.lvlRoom.on('itemclick', function(grid, record) { this.up().remove(this.up().up().grids.lvlDevice); @@ -232,26 +235,26 @@ Ext.define('DSS.component.DeviceSelector', { this.macPanel.add(this.grids.lvlRoom); } else { this.grids.lvlRoom.getStore().removeAll(); - var mThis=this; + var mThis=this; oZoneStore = Ext.data.StoreManager.lookup('deviceSelector_zoneStore'+this.myID); oZoneStore.each(function(record) { var oNewRecord = record.copy(); if (oNewRecord.get('ZoneID') != 0) mThis.grids.lvlRoom.getStore().add(oNewRecord); - }); + }); } }, constructor : function (config) { this.macPanel = null; this.selectedDSUID=null; - + this.grids={}; if (config.filterFunc!=null) this.filterFunc=config.filterFunc; else this.filterFunc=null; if (config.specialDeviceRenderer!=null) - this.specialDeviceRenderer=config.specialDeviceRenderer; + this.specialDeviceRenderer=config.specialDeviceRenderer; else this.specialDeviceRenderer=null; if (config.myID==null) @@ -279,7 +282,7 @@ Ext.define('DSS.component.DeviceSelector', { }); this.callParent(arguments); - + }, reset : function() { this.setValue(null); @@ -294,7 +297,7 @@ Ext.define('DSS.component.DeviceSelector', { if (oRecordZone != -1) { this.grids.lvlRoom.getSelectionModel().select(oRecordZone); this.constructGridLvlDevice(oDevice.ZoneID); - + var oRecordDevice = this.grids.lvlDevice.store.find('dSUID', values,0,false,false,true); if (oRecordDevice != -1) { this.grids.lvlDevice.getSelectionModel().select(oRecordDevice); @@ -310,8 +313,10 @@ Ext.define('DSS.component.DeviceSelector', { if ( this.grids.lvlDevice) { var recordList = this.grids.lvlDevice.getSelectionModel().getSelection(); var dSUID = []; - for (var jIndex = 0; jIndex < recordList.length; jIndex++) { - dSUID.push(recordList[jIndex].get('dSUID')); + if (recordList) { + for (var jIndex = 0; jIndex < recordList.length; jIndex++) { + dSUID.push(recordList[jIndex].get('dSUID')); + } } return dSUID; } else { @@ -321,4 +326,4 @@ Ext.define('DSS.component.DeviceSelector', { return this.selectedDSUID; } } -}); \ No newline at end of file +}); diff --git a/js/dss/dss-components/dss-radiogroup.js b/js/dss/dss-components/dss-radiogroup.js index 8e6fee33..c7a9b867 100644 --- a/js/dss/dss-components/dss-radiogroup.js +++ b/js/dss/dss-components/dss-radiogroup.js @@ -9,15 +9,17 @@ Ext.define('DSS.component.RadioControl', { if (config.labelWidth==null) config.labelWidth=100; var subItems=[]; - for (var iIndex=0;iIndex<config.data.length;iIndex++) { - var pValue=config.data[iIndex]; - if (pValue.value!=null) - if (pValue.label!=null) - subItems.push({ - name:config.radioid, - boxLabel:pValue.label, - inputValue:pValue.value}); - } + if (config.data && Object.prototype.toString.call(config.data) === '[object Array]') { + for (var iIndex=0;iIndex<config.data.length;iIndex++) { + var pValue=config.data[iIndex]; + if (pValue.value!=null) + if (pValue.label!=null) + subItems.push({ + name:config.radioid, + boxLabel:pValue.label, + inputValue:pValue.value}); + } + } this.radioCntrl=Ext.create('Ext.form.RadioGroup', { fieldLabel : config.label, items : subItems, @@ -31,13 +33,13 @@ Ext.define('DSS.component.RadioControl', { align: 'left' }, style : { - color: '#005138' + color: '#005138' }, height:75, listeners: { 'change': function() {mThis.fireEvent('change');} } - }); + }); Ext.apply(this, { items : [ this.radioCntrl ] }); @@ -55,4 +57,4 @@ Ext.define('DSS.component.RadioControl', { getValue : function(){ return this.radioCntrl.getValue(); } -}); \ No newline at end of file +}); diff --git a/js/dss/dss-components/dss-timereference-control.js b/js/dss/dss-components/dss-timereference-control.js index f1d99a6a..f19eb819 100644 --- a/js/dss/dss-components/dss-timereference-control.js +++ b/js/dss/dss-components/dss-timereference-control.js @@ -50,7 +50,7 @@ Ext.define('DSS.component.TimeReference', { if (config.fFeatureEnabled.fSunriseEnabled!=null) this.fFeatureEnabled.fSunriseEnabled=config.fFeatureEnabled.fSunriseEnabled; } - + if (config.fAlternativeDisplay!=null) this.fAlternativeDisplay=config.fAlternativeDisplay; if (this.fAlternativeDisplay==true) { @@ -61,7 +61,7 @@ Ext.define('DSS.component.TimeReference', { width:250, padding: "0 0 0 0" }); - + } else { this.lblSummary = Ext.create('Ext.form.field.Display', { border : 0, @@ -182,8 +182,8 @@ Ext.define('DSS.component.TimeReference', { } } - }); - + }); + this.oDeltaCylcer= Ext.create('Ext.button.Cycle', { margin : '0 5 0 0', menu : { @@ -207,8 +207,8 @@ Ext.define('DSS.component.TimeReference', { } }); - - + + var oDateTypeItemArray = []; var fChecked=false; if (this.fFeatureEnabled.fStaticEnabled) { @@ -229,7 +229,7 @@ Ext.define('DSS.component.TimeReference', { oObject.checked=true; fChecked=true; oDateTypeItemArray.push(oObject); - } + } if (this.fFeatureEnabled.fSunsetEnabled) { var oObject={ @@ -246,7 +246,7 @@ Ext.define('DSS.component.TimeReference', { var oObject={ itemId : 'chk-dawn', text : _('dawn') - }; + }; if (!fChecked ) oObject.checked=true; fChecked=true; @@ -263,14 +263,14 @@ Ext.define('DSS.component.TimeReference', { fChecked=true; oDateTypeItemArray.push(oObject); } - - if (config.additionalAbsoluteValues!=null) { + + if (config.additionalAbsoluteValues) { for (var iIndex=0;iIndex<config.additionalAbsoluteValues.length;iIndex++) { oDateTypeItemArray.push({itemId:config.additionalAbsoluteValues[iIndex].id, text: _(config.additionalAbsoluteValues[iIndex].label)}); } } - + this.oDateTypeCylcer = Ext.create('Ext.button.Cycle', { margin : '0 5 0 0', menu : { @@ -283,11 +283,11 @@ Ext.define('DSS.component.TimeReference', { change : function(btn,item) { var basePanel=this.up().up(); if ((basePanel.oDeltaCylcer.isVisible()) && (item.getItemId()=='chk-time')){ - basePanel.oControlHour.setValue(12); - basePanel.oControlMinute.setValue(0); - } + basePanel.oControlHour.setValue(12); + basePanel.oControlMinute.setValue(0); + } if ((!basePanel.oDeltaCylcer.isVisible()) && (item.getItemId()!='chk-time')){ - basePanel.oControlHour.setValue(0); + basePanel.oControlHour.setValue(0); basePanel.oControlMinute.setValue(0); } basePanel.oDeltaCylcer.setVisible(item.getItemId()!='chk-time'); @@ -300,7 +300,7 @@ Ext.define('DSS.component.TimeReference', { } } }); - + this.oControlHour = Ext.create('Ext.form.field.Number', { allowBlank : false, blankText : _('This field is required'), @@ -339,16 +339,16 @@ Ext.define('DSS.component.TimeReference', { me.fireEvent('change'); } } - }); + }); + - this.pnlDiff = Ext.create('Ext.panel.Panel', { heigth : 0, border : "1 0 0 0", width : "100%", padding: "7 0 15 0" }); - + this.oLimitPanel.add(this.oLimitType); this.oLimitPanel.add(this.oLimitHour); this.oLimitPanel.add(this.oLimitMinute); @@ -356,33 +356,33 @@ Ext.define('DSS.component.TimeReference', { this.oLimitPanel.add(this.lblLimitAnzeige); else this.oLimitPanel.add(this.lblSummary); - + this.oDatePanel.add(this.oDateTypeCylcer); this.oDatePanel.add(this.oControlHour); - this.oDatePanel.add(this.oControlMinute); + this.oDatePanel.add(this.oControlMinute); this.oDatePanel.add(this.lblAnzeige); - + this.oDatePanel.add(this.oDeltaCylcer); var oItemsArray=[this.lblSummary, this.pnlDiff, this.oDatePanel ,this.oLimitPanel]; - + if (this.fAlternativeDisplay==true) oItemsArray=[ this.oDatePanel ,this.oLimitPanel]; - + if (this.randomize!=null) oItemsArray.push(this.oControlRandom); - Ext.apply(this, { + Ext.apply(this, { items : oItemsArray }); if (this.fAlternativeDisplay==true) - Ext.apply(this, { + Ext.apply(this, { padding: "7 0 7 0" }); var me=this; var oReplay=function() {me.updateSummary();}; - + window.setInterval(oReplay,30*1000); me.updateSummary(); - this.callParent(arguments); + this.callParent(arguments); this.mixins.observable.constructor.call(this, config); this.addEvents({ "change" : true @@ -392,12 +392,12 @@ Ext.define('DSS.component.TimeReference', { var sTimeNow = ""; var timeArray = new Array(); var sText = ""; - + var oDateNow=dss.staticDataModel.getDSSTime(); var nHours = oDateNow.getHours(); var nMinutes = oDateNow.getMinutes(); sTimeNow = ((nHours > 9)?''+nHours : '0'+nHours) + ":" + ((nMinutes > 9)?''+nMinutes : '0'+nMinutes); - + sText=Ext.String.format2(_("Time now: {TimeNow}"), {TimeNow:sTimeNow}); if (this.fAlternativeDisplay==true) { sText=_(""); @@ -407,7 +407,7 @@ Ext.define('DSS.component.TimeReference', { sText+=" " + Ext.String.format2(_("Sunrise of the present day at {time}"),{time:dss.staticDataModel.nowSunrise}); break; case 'chk-sunset': - sText+=" " + Ext.String.format2(_("Sunset of the present day at {time}"),{time:dss.staticDataModel.nowSunset}); + sText+=" " + Ext.String.format2(_("Sunset of the present day at {time}"),{time:dss.staticDataModel.nowSunset}); break; case 'chk-dawn': sText+=" " + Ext.String.format2(_("Dawn of the present day at {time}"),{time:dss.staticDataModel.nowDawn}); @@ -422,7 +422,7 @@ Ext.define('DSS.component.TimeReference', { this.oDateTypeCylcer.setActiveItem('chk-time'); this.oLimitType.setActiveItem('chk-limitNo'); this.oDeltaCylcer.setActiveItem('chk-after'); - this.oControlHour.setValue(12); + this.oControlHour.setValue(12); this.oControlMinute.setValue(0); this.oLimitHour.setValue(0); this.oLimitMinute.setValue(0); @@ -436,38 +436,38 @@ Ext.define('DSS.component.TimeReference', { if (value.offset<0) this.oDeltaCylcer.setActiveItem('chk-before'); else - this.oDeltaCylcer.setActiveItem('chk-after'); + this.oDeltaCylcer.setActiveItem('chk-after'); switch (value.timeBase) { case 'daily': this.oDateTypeCylcer.setActiveItem('chk-time'); this.oControlMinute.setValue(min); - this.oControlHour.setValue(hou); + this.oControlHour.setValue(hou); break; case 'sunset': this.oDateTypeCylcer.setActiveItem('chk-sunset'); this.oControlMinute.setValue(min); - this.oControlHour.setValue(hou); + this.oControlHour.setValue(hou); break; case 'sunrise': this.oDateTypeCylcer.setActiveItem('chk-sunrise'); this.oControlMinute.setValue(min); - this.oControlHour.setValue(hou); + this.oControlHour.setValue(hou); break; case 'dusk': this.oDateTypeCylcer.setActiveItem('chk-dusk'); this.oControlMinute.setValue(min); - this.oControlHour.setValue(hou); + this.oControlHour.setValue(hou); break; case 'dawn': this.oDateTypeCylcer.setActiveItem('chk-dawn'); this.oControlMinute.setValue(min); - this.oControlHour.setValue(hou); + this.oControlHour.setValue(hou); break; default: this.oDateTypeCylcer.setActiveItem(value.timeBase); this.oControlMinute.setValue(min); - this.oControlHour.setValue(hou); + this.oControlHour.setValue(hou); break; } @@ -490,8 +490,8 @@ Ext.define('DSS.component.TimeReference', { } else { this.oLimitType.setActiveItem('chk-limitNo'); } - - if (this.randomize!=null) { + + if (this.randomize!=null) { if (value.random!=null) this.oControlRandom.setValue(true); else @@ -519,7 +519,7 @@ Ext.define('DSS.component.TimeReference', { if (this.oLimitType.getActiveItem().getItemId()=='chk-limitBefore') { fValid &= this.oLimitHour.isValid() && this.oLimitMinute.isValid(); } - + return true; }, getValue: function () { diff --git a/js/dss/dss-components/dss-trigger-selector.js b/js/dss/dss-components/dss-trigger-selector.js index a85874ce..bd8851da 100644 --- a/js/dss/dss-components/dss-trigger-selector.js +++ b/js/dss/dss-components/dss-trigger-selector.js @@ -15,8 +15,8 @@ Ext.define('DSS.component.TriggerConfigurator', { defMacGridRenderer : function(val, metadata, record, colIdx, store, view) { if (record.get('name') == '-') { return '<table style="height:10px;width:100%;"><tr style="height:10px;"><td width="100%"><hr></td></tr></table>'; - } - var fHasIcon=false; + } + var fHasIcon=false; if (record.get('icon') != null) { fHasIcon=true; @@ -48,7 +48,7 @@ Ext.define('DSS.component.TriggerConfigurator', { fIsCheckable=true; } - var fIsPassive=false; + var fIsPassive=false; if (record.get('passive')!=null) if (record.get('passive')) fIsPassive=true; @@ -56,17 +56,17 @@ Ext.define('DSS.component.TriggerConfigurator', { fHasNext=false; // spalte disabled -> niemals weiterbutton fIsChecked=false; // spalte disabled -> kann nicht gechecked sein } - + var sReturn='<table style="height:16px;width:100%;"><tr>'; var iColspaceCounter=3; if (fHasIcon) { - iColspaceCounter--; + iColspaceCounter--; sReturn+='<td><img src="' + record.get('icon') + '" style="margin-right: 5px;"></td>'; } if (fIsCheckable) { - iColspaceCounter--; + iColspaceCounter--; if (record.get('checked') == true) { sReturn+='<td style="padding-right: 5px;"><div style="width:13px;height:13px;background-image:url(' + dss.staticDataModel.baseImagePath + 'dss/checkbox.gif); background-position: 0px -13px;" /></td>'; @@ -84,7 +84,7 @@ Ext.define('DSS.component.TriggerConfigurator', { if (fHasNext) { sReturn+='<td>></td>'; } - return sReturn +'</tr></table>'; + return sReturn +'</tr></table>'; }, initStores : function(fShowUserstates) { if (Ext.data.StoreManager.lookup('triggerConfigurator_l1Store') == null) { @@ -107,7 +107,7 @@ Ext.define('DSS.component.TriggerConfigurator', { icon : null, passive: (dss.staticDataModel.getAKMDeviceArray().length==0) }]; - + Aktionen.push({ name : _("consumptionmessage"), _id : 3, @@ -121,7 +121,7 @@ Ext.define('DSS.component.TriggerConfigurator', { next : true, icon : null }); - + if (dss.staticDataModel.clusterAvaible) Aktionen.push({ name : _('cluster trigger'), @@ -130,7 +130,7 @@ Ext.define('DSS.component.TriggerConfigurator', { icon : null, passive:(dss.staticDataModel.getUsergroups().length==0) }); - + Aktionen.push({ name : '-', _id : -1, @@ -138,7 +138,7 @@ Ext.define('DSS.component.TriggerConfigurator', { next : false, icon : null }); - + Aktionen.push({ name : _('user def. actions'), _id : 2, @@ -147,16 +147,16 @@ Ext.define('DSS.component.TriggerConfigurator', { passive:(dss.staticDataModel.getHLE().length==0) }); if (dss.staticDataModel.getUserStates().length>0) { - Aktionen.push( { + Aktionen.push( { name : _('user states'), _id : 8, next : true, icon : null, - passive:(dss.staticDataModel.getUserStates().length==0) + passive:(dss.staticDataModel.getUserStates().length==0) }); } - - + + Aktionen.push({ name : '-', _id : -1, @@ -164,7 +164,7 @@ Ext.define('DSS.component.TriggerConfigurator', { next : false, icon : null }); - + Aktionen.push( { name : _("access trigger"), _id : 4, @@ -196,9 +196,9 @@ Ext.define('DSS.component.TriggerConfigurator', { }); Ext.data.StoreManager.lookup('triggerConfigurator_l1Store').add(Aktionen); } - + if (Ext.data.StoreManager.lookup('triggerConfigurator_userStateStore') == null) { - + Ext.create('Ext.data.Store', { storeId : 'triggerConfigurator_userStateStore', fields : [ '_id', 'name', 'next', 'icon' ,'type'], @@ -210,20 +210,20 @@ Ext.define('DSS.component.TriggerConfigurator', { } } }); - + var oUserStates=dss.staticDataModel.getUserStates(); - - for (var iIndex=0;iIndex<oUserStates.length;iIndex++) { - var Aktionen = [{ - name : oUserStates[iIndex].displayName, - _id : oUserStates[iIndex].name, - next : true, - icon : null, - type: oUserStates[iIndex].type - }]; - Ext.data.StoreManager.lookup('triggerConfigurator_userStateStore').add(Aktionen); - } - + if (oUserStates) { + for (var iIndex=0;iIndex<oUserStates.length;iIndex++) { + var Aktionen = [{ + name : oUserStates[iIndex].displayName, + _id : oUserStates[iIndex].name, + next : true, + icon : null, + type: oUserStates[iIndex].type + }]; + Ext.data.StoreManager.lookup('triggerConfigurator_userStateStore').add(Aktionen); + } + } } if (Ext.data.StoreManager.lookup('triggerConfigurator_zoneZoneStore') == null) { @@ -252,13 +252,16 @@ Ext.define('DSS.component.TriggerConfigurator', { } } }); - for (var iIndex=0;iIndex<dss.staticDataModel.getZoneArray().length;iIndex++) { - if (this.getDeviceStore(dss.staticDataModel.getZoneArray()[iIndex].ZoneID).count()>0) { - Ext.data.StoreManager.lookup('triggerConfigurator_deviceZoneStore').add(dss.staticDataModel.getZoneArray()[iIndex]); - } + var zoneArray = dss.staticDataModel.getZoneArray(); + if (zoneArray) { + for (var iIndex=0;iIndex<zoneArray.length;iIndex++) { + if (this.getDeviceStore(zoneArray[iIndex].ZoneID).count()>0) { + Ext.data.StoreManager.lookup('triggerConfigurator_deviceZoneStore').add(zoneArray[iIndex]); + } + } } } - + if (Ext.data.StoreManager.lookup('triggerConfigurator_clusterStore') == null) { Ext.create('Ext.data.Store', { storeId : 'triggerConfigurator_clusterStore', @@ -287,19 +290,23 @@ Ext.define('DSS.component.TriggerConfigurator', { }); var oArray=dss.staticDataModel.getZoneArray(); var deviceArray=dss.staticDataModel.getSensorDeviceArray(); - for (var iIndex=0;iIndex<oArray.length;iIndex++) { - var fAdd=false; - for (var jIndex=0;jIndex<deviceArray.length;jIndex++) { - if (deviceArray[jIndex].ZoneID==oArray[iIndex].ZoneID) - fAdd=true; - } - if (fAdd) { - Ext.data.StoreManager.lookup('triggerConfigurator_zoneSensorStore').add(oArray[iIndex]); + if (oArray) { + for (var iIndex=0;iIndex<oArray.length;iIndex++) { + var fAdd=false; + if (deviceArray) { + for (var jIndex=0;jIndex<deviceArray.length;jIndex++) { + if (deviceArray[jIndex].ZoneID==oArray[iIndex].ZoneID) + fAdd=true; + } + } + if (fAdd) { + Ext.data.StoreManager.lookup('triggerConfigurator_zoneSensorStore').add(oArray[iIndex]); + } } } } if (Ext.data.StoreManager.lookup('triggerConfigurator_zoneAKMStore') == null) { - + Ext.create('Ext.data.Store', { storeId : 'triggerConfigurator_zoneAKMStore', fields : [ 'ZoneID', 'name' ], @@ -313,28 +320,34 @@ Ext.define('DSS.component.TriggerConfigurator', { }); var oArray=dss.staticDataModel.getZoneArray(); var deviceArray=dss.staticDataModel.getAKMDeviceArray(); - for (var iIndex=0;iIndex<oArray.length;iIndex++) { - var fAdd=false; - for (var jIndex=0;jIndex<deviceArray.length;jIndex++) { - if (deviceArray[jIndex].ZoneID==oArray[iIndex].ZoneID) - fAdd=true; - } - for (var jIndex=0;jIndex<dss.staticDataModel.deviceCache.length;jIndex++) { - if (dss.staticDataModel.deviceCache[jIndex].present) - if (dss.staticDataModel.deviceCache[jIndex].ZoneID==oArray[iIndex].ZoneID) - if (dss.staticDataModel.deviceCache[jIndex].specialActions!=null) - if (dss.staticDataModel.deviceCache[jIndex].specialActions.triggers!=null) - if (dss.staticDataModel.deviceCache[jIndex].specialActions.triggers.binaryInputs!=null) - for (var sKey in dss.staticDataModel.deviceCache[jIndex].specialActions.triggers.binaryInputs) { - fAdd=true; - } - } - if (fAdd) { - Ext.data.StoreManager.lookup('triggerConfigurator_zoneAKMStore').add(oArray[iIndex]); + if (oArray) { + for (var iIndex=0;iIndex<oArray.length;iIndex++) { + var fAdd=false; + if (deviceArray) { + for (var jIndex=0;jIndex<deviceArray.length;jIndex++) { + if (deviceArray[jIndex].ZoneID==oArray[iIndex].ZoneID) + fAdd=true; + } + } + if (dss.staticDataModel.deviceCache) { + for (var jIndex=0;jIndex<dss.staticDataModel.deviceCache.length;jIndex++) { + if (dss.staticDataModel.deviceCache[jIndex].present) + if (dss.staticDataModel.deviceCache[jIndex].ZoneID==oArray[iIndex].ZoneID) + if (dss.staticDataModel.deviceCache[jIndex].specialActions!=null) + if (dss.staticDataModel.deviceCache[jIndex].specialActions.triggers!=null) + if (dss.staticDataModel.deviceCache[jIndex].specialActions.triggers.binaryInputs!=null) + for (var sKey in dss.staticDataModel.deviceCache[jIndex].specialActions.triggers.binaryInputs) { + fAdd=true; + } + } + } + if (fAdd) { + Ext.data.StoreManager.lookup('triggerConfigurator_zoneAKMStore').add(oArray[iIndex]); + } } } } - + if (Ext.data.StoreManager.lookup('triggerConfigurator_accessStore') == null) { var Aktionen = [{ name : dss.staticDataModel.getNameForScene(0, 0, 73), @@ -365,7 +378,7 @@ Ext.define('DSS.component.TriggerConfigurator', { }); Ext.data.StoreManager.lookup('triggerConfigurator_accessStore').add(Aktionen); } - + if (Ext.data.StoreManager.lookup('triggerConfigurator_weatherStore') == null) { var Aktionen = [{ name : _("Sun protection"), @@ -403,24 +416,26 @@ Ext.define('DSS.component.TriggerConfigurator', { next : false, icon : dss.staticDataModel.getImagePathForState('hail', 'inactive') }]; - + var fFrost=false; var fSun=false; var fHeating=false; var fService=false; - for (var iIndex=0;iIndex<dss.staticDataModel.StateCache.length;iIndex++) { - if (dss.staticDataModel.StateCache[iIndex].name=='frost') - fFrost=true; - if (dss.staticDataModel.StateCache[iIndex].name=='sun') - fSun=true; - if (dss.staticDataModel.StateCache[iIndex].name=='heating_mode') - fHeating=true; - if (dss.staticDataModel.StateCache[iIndex].name=='service') - fService=true; + if (dss.staticDataModel.StateCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.StateCache.length;iIndex++) { + if (dss.staticDataModel.StateCache[iIndex].name=='frost') + fFrost=true; + if (dss.staticDataModel.StateCache[iIndex].name=='sun') + fSun=true; + if (dss.staticDataModel.StateCache[iIndex].name=='heating_mode') + fHeating=true; + if (dss.staticDataModel.StateCache[iIndex].name=='service') + fService=true; + } } - + if (fFrost) { - Aktionen.push({ + Aktionen.push({ name : dss.staticDataModel.getNameForState('frost', 'active'), _id : 'frost_active', next : false, @@ -433,7 +448,7 @@ Ext.define('DSS.component.TriggerConfigurator', { icon : dss.staticDataModel.getImagePathForState('frost', 'inactive') }); } - + if (fSun) { Aktionen.push({ name : dss.staticDataModel.getNameForState('sun', 'active'), @@ -448,7 +463,7 @@ Ext.define('DSS.component.TriggerConfigurator', { icon : dss.staticDataModel.getImagePathForState('sun', 'inactive') }); } - + if (fHeating) { Aktionen.push({ name : dss.staticDataModel.getNameForState('heating_mode', 'off'), @@ -475,7 +490,7 @@ Ext.define('DSS.component.TriggerConfigurator', { icon : dss.staticDataModel.getImagePathForState('heating_mode', 'auto') }); } - + if (fService) { Aktionen.push({ name : dss.staticDataModel.getNameForState('service', 'active'), @@ -490,7 +505,7 @@ Ext.define('DSS.component.TriggerConfigurator', { icon : dss.staticDataModel.getImagePathForState('service', 'inactive') }); } - + Ext.create('Ext.data.Store', { storeId : 'triggerConfigurator_weatherStore', fields : [ '_id', 'name', 'next', 'icon' ], @@ -618,7 +633,7 @@ Ext.define('DSS.component.TriggerConfigurator', { }); Ext.data.StoreManager.lookup('triggerConfigurator_securityStore').add(Aktionen); } - + }, getGroupStore : function(ZoneID) { if (Ext.data.StoreManager.lookup('triggerConfigurator_groupStore_' + ZoneID) == null) { @@ -653,80 +668,84 @@ Ext.define('DSS.component.TriggerConfigurator', { }); if ((ZoneID==0)&& (groupID==64)) { var fSplitter=false; - for (var iIndex=0;iIndex<dss.staticDataModel.StateCache.length;iIndex++) { - if (dss.staticDataModel.StateCache[iIndex].name.indexOf('zone.0.group.64')>-1) { - var oState=dss.staticDataModel.StateCache[iIndex]; - - Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add({ - 'stateid':oState.name, - 'reachable':true, - 'name':dss.staticDataModel.getNameForState(oState.name, 'inactive'), - 'value':'inactive', - 'icon': dss.staticDataModel.getImagePathForState(oState.name, 'inactive'), - 'valueandstate':oState.name+'_inactive'}); - Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add({ - 'stateid':oState.name, - 'name':dss.staticDataModel.getNameForState(oState.name, 'active'), - 'reachable':true, - 'value':'active', - 'icon': dss.staticDataModel.getImagePathForState(oState.name, 'active'), - 'valueandstate':oState.name+'_active'}); - - } - fSplitter=true; - } + if (dss.staticDataModel.StateCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.StateCache.length;iIndex++) { + if (dss.staticDataModel.StateCache[iIndex].name.indexOf('zone.0.group.64')>-1) { + var oState=dss.staticDataModel.StateCache[iIndex]; + + Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add({ + 'stateid':oState.name, + 'reachable':true, + 'name':dss.staticDataModel.getNameForState(oState.name, 'inactive'), + 'value':'inactive', + 'icon': dss.staticDataModel.getImagePathForState(oState.name, 'inactive'), + 'valueandstate':oState.name+'_inactive'}); + Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add({ + 'stateid':oState.name, + 'name':dss.staticDataModel.getNameForState(oState.name, 'active'), + 'reachable':true, + 'value':'active', + 'icon': dss.staticDataModel.getImagePathForState(oState.name, 'active'), + 'valueandstate':oState.name+'_active'}); + + } + fSplitter=true; + } + } if (fSplitter) { - Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add( - {'_id':'','reachable':true,'name':'-','stateid':''}); + Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add( + {'_id':'','reachable':true,'name':'-','stateid':''}); } } - + var oScenes = dss.staticDataModel.getScenes(ZoneID, groupID); - for ( var iIndex = 0; iIndex < oScenes.length; iIndex++) { - var oObject = {}; - oObject._id = oScenes[iIndex].id; - oObject.reachable = oScenes[iIndex].reachable; - oObject.icon = oScenes[iIndex].icon; - oObject.stateid=''; - if (oScenes[iIndex].name == oScenes[iIndex].defaultName) - oObject.name = oScenes[iIndex].name; - else - oObject.name = oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; - Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add(oObject); - - if (oObject.undoable) { - oObject = {}; - oObject._id = -1 * oScenes[iIndex].id; + if (oScenes) { + for ( var iIndex = 0; iIndex < oScenes.length; iIndex++) { + var oObject = {}; + oObject._id = oScenes[iIndex].id; oObject.reachable = oScenes[iIndex].reachable; oObject.icon = oScenes[iIndex].icon; + oObject.stateid=''; if (oScenes[iIndex].name == oScenes[iIndex].defaultName) - oObject.name = _('Undo ') + oScenes[iIndex].name; + oObject.name = oScenes[iIndex].name; else - oObject.name = _('Undo ') + oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; + oObject.name = oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add(oObject); - } - - if (oScenes[iIndex].id==0) { - if (groupID>63) { - - } else if (groupID==2) { - Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add({ - _id:0, - name:_('all closed'), - icon: oScenes[iIndex].icon, - reachable : oScenes[iIndex].reachable, - forced:true - }); - } else { - Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add({ - _id:0, - name:_('all off'), - icon: oScenes[iIndex].icon, - reachable : oScenes[iIndex].reachable, - forced:true - }); + + if (oObject.undoable) { + oObject = {}; + oObject._id = -1 * oScenes[iIndex].id; + oObject.reachable = oScenes[iIndex].reachable; + oObject.icon = oScenes[iIndex].icon; + if (oScenes[iIndex].name == oScenes[iIndex].defaultName) + oObject.name = _('Undo ') + oScenes[iIndex].name; + else + oObject.name = _('Undo ') + oScenes[iIndex].defaultName + ' - ' + oScenes[iIndex].name; + Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add(oObject); + } + + if (oScenes[iIndex].id==0) { + if (groupID>63) { + + } else if (groupID==2) { + Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add({ + _id:0, + name:_('all closed'), + icon: oScenes[iIndex].icon, + reachable : oScenes[iIndex].reachable, + forced:true + }); + } else { + Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID).add({ + _id:0, + name:_('all off'), + icon: oScenes[iIndex].icon, + reachable : oScenes[iIndex].reachable, + forced:true + }); + } } - } + } } } return Ext.data.StoreManager.lookup('triggerConfigurator_szeneStore_' + ZoneID + '_' + groupID); @@ -746,13 +765,16 @@ Ext.define('DSS.component.TriggerConfigurator', { } }); var oDeviceArray = dss.staticDataModel.getSensorDeviceArray(); - for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) - { - if ((dSUID==-1) || (oDeviceArray[iIndex].dSUID==dSUID)) { - for (var jIndex=0;jIndex<oDeviceArray[iIndex].sensorEvents.length;jIndex++) - Ext.data.StoreManager.lookup('triggerConfigurator_sensorMessageStore_' + dSUID).add({name:oDeviceArray[iIndex].sensorEvents[jIndex].name,_id:oDeviceArray[iIndex].sensorEvents[jIndex].id}); + if (oDeviceArray) { + for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) { + if ((dSUID==-1) || (oDeviceArray[iIndex].dSUID==dSUID)) { + if (oDeviceArray[iIndex].sensorEvents) { + for (var jIndex=0;jIndex<oDeviceArray[iIndex].sensorEvents.length;jIndex++) + Ext.data.StoreManager.lookup('triggerConfigurator_sensorMessageStore_' + dSUID).add({name:oDeviceArray[iIndex].sensorEvents[jIndex].name,_id:oDeviceArray[iIndex].sensorEvents[jIndex].id}); + } + } } - } + } } return Ext.data.StoreManager.lookup('triggerConfigurator_sensorMessageStore_' + dSUID); }, @@ -770,15 +792,15 @@ Ext.define('DSS.component.TriggerConfigurator', { } }); var oDeviceArray = dss.staticDataModel.getSensorDeviceArray(); - for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) - { - if ((ZoneID==0) || (ZoneID==oDeviceArray[iIndex].ZoneID)) - Ext.data.StoreManager.lookup('triggerConfigurator_deviceSensorStore_' + ZoneID).add(oDeviceArray[iIndex]); + if (oDeviceArray) { + for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) { + if ((ZoneID==0) || (ZoneID==oDeviceArray[iIndex].ZoneID)) + Ext.data.StoreManager.lookup('triggerConfigurator_deviceSensorStore_' + ZoneID).add(oDeviceArray[iIndex]); + } } - } return Ext.data.StoreManager.lookup('triggerConfigurator_deviceSensorStore_' + ZoneID); - }, + }, getDeviceAKMStore : function(ZoneID) { if (Ext.data.StoreManager.lookup('triggerConfigurator_deviceAKMStore_' + ZoneID) == null) { Ext.create('Ext.data.Store', { @@ -794,34 +816,37 @@ Ext.define('DSS.component.TriggerConfigurator', { }); var oDeviceArray = dss.staticDataModel.getAKMDeviceArray(); var targetArray=[]; - for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) - { - if ((ZoneID==0) || (ZoneID==oDeviceArray[iIndex].ZoneID)) - targetArray.push(oDeviceArray[iIndex]); + if (oDeviceArray) { + for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) { + if ((ZoneID==0) || (ZoneID==oDeviceArray[iIndex].ZoneID)) + targetArray.push(oDeviceArray[iIndex]); + } } - - for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { - var fAdd=false; - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].ZoneID==ZoneID) - if (dss.staticDataModel.deviceCache[iIndex].specialActions!=null) - if (dss.staticDataModel.deviceCache[iIndex].specialActions.triggers!=null) - if (dss.staticDataModel.deviceCache[iIndex].specialActions.triggers.binaryInputs!=null) - for (var sKey in dss.staticDataModel.deviceCache[iIndex].specialActions.triggers.binaryInputs) { - fAdd=true; - } - if (fAdd) - for (var jIndex=0;jIndex<targetArray.length;jIndex++) { - if (targetArray[jIndex].dSUID==dss.staticDataModel.deviceCache[iIndex].dSUID) - fAdd=false; - } - if (fAdd) { - targetArray.push(dss.staticDataModel.deviceCache[iIndex]); - } + + if (dss.staticDataModel.deviceCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { + var fAdd=false; + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].ZoneID==ZoneID) + if (dss.staticDataModel.deviceCache[iIndex].specialActions!=null) + if (dss.staticDataModel.deviceCache[iIndex].specialActions.triggers!=null) + if (dss.staticDataModel.deviceCache[iIndex].specialActions.triggers.binaryInputs!=null) + for (var sKey in dss.staticDataModel.deviceCache[iIndex].specialActions.triggers.binaryInputs) { + fAdd=true; + } + if (fAdd) + for (var jIndex=0;jIndex<targetArray.length;jIndex++) { + if (targetArray[jIndex].dSUID==dss.staticDataModel.deviceCache[iIndex].dSUID) + fAdd=false; + } + if (fAdd) { + targetArray.push(dss.staticDataModel.deviceCache[iIndex]); + } + } } Ext.data.StoreManager.lookup('triggerConfigurator_deviceAKMStore_' + ZoneID).add(targetArray); - } - + } + return Ext.data.StoreManager.lookup('triggerConfigurator_deviceAKMStore_' + ZoneID); }, getDeviceStore : function(ZoneID) { @@ -838,53 +863,56 @@ Ext.define('DSS.component.TriggerConfigurator', { } }); var oDeviceArray = dss.staticDataModel.getDevicesForZone(ZoneID, 0); - for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) - { - var fShouldAdd=false; - if (oDeviceArray[iIndex].hasStates) - fShouldAdd=true; - if (oDeviceArray[iIndex].deviceEvents!=null) - if (Object.keys(oDeviceArray[iIndex].deviceEvents).length>0) - fShouldAdd=true; - if (oDeviceArray[iIndex].deviceCustomActions!=null) - if (Object.keys(oDeviceArray[iIndex].deviceCustomActions).length>0) - fShouldAdd=true; - if (oDeviceArray[iIndex].deviceStandardActions!=null) - if (Object.keys(oDeviceArray[iIndex].deviceStandardActions).length>0) - fShouldAdd=true; - if (oDeviceArray[iIndex].deviceActions!=null) - if (Object.keys(oDeviceArray[iIndex].deviceActions).length>0) - fShouldAdd=true; - - if (((oDeviceArray[iIndex].tasterMode == 0) && (oDeviceArray[iIndex].buttonType != 65))||(oDeviceArray[iIndex].tasterMode==15)) - fShouldAdd=true; - else - if (oDeviceArray[iIndex].specialActions!=null) - if (oDeviceArray[iIndex].specialActions.triggers!=null) { - if (oDeviceArray[iIndex].specialActions.triggers.deviceMsg!=null) - fShouldAdd=true; - if (oDeviceArray[iIndex].specialActions.triggers.deviceAction!=null) - fShouldAdd=true; - } - if (fShouldAdd) - Ext.data.StoreManager.lookup('triggerConfigurator_deviceStore_' + ZoneID).add(oDeviceArray[iIndex]); + if (oDeviceArray) { + for (var iIndex=0;iIndex<oDeviceArray.length;iIndex++) { + var fShouldAdd=false; + if (oDeviceArray[iIndex].hasStates) + fShouldAdd=true; + if (oDeviceArray[iIndex].deviceEvents!=null) + if (Object.keys(oDeviceArray[iIndex].deviceEvents).length>0) + fShouldAdd=true; + if (oDeviceArray[iIndex].deviceCustomActions!=null) + if (Object.keys(oDeviceArray[iIndex].deviceCustomActions).length>0) + fShouldAdd=true; + if (oDeviceArray[iIndex].deviceStandardActions!=null) + if (Object.keys(oDeviceArray[iIndex].deviceStandardActions).length>0) + fShouldAdd=true; + if (oDeviceArray[iIndex].deviceActions!=null) + if (Object.keys(oDeviceArray[iIndex].deviceActions).length>0) + fShouldAdd=true; + + if (((oDeviceArray[iIndex].tasterMode == 0) && (oDeviceArray[iIndex].buttonType != 65))||(oDeviceArray[iIndex].tasterMode==15)) + fShouldAdd=true; + else + if (oDeviceArray[iIndex].specialActions!=null) + if (oDeviceArray[iIndex].specialActions.triggers!=null) { + if (oDeviceArray[iIndex].specialActions.triggers.deviceMsg!=null) + fShouldAdd=true; + if (oDeviceArray[iIndex].specialActions.triggers.deviceAction!=null) + fShouldAdd=true; + } + if (fShouldAdd) + Ext.data.StoreManager.lookup('triggerConfigurator_deviceStore_' + ZoneID).add(oDeviceArray[iIndex]); + } } - } + } return Ext.data.StoreManager.lookup('triggerConfigurator_deviceStore_' + ZoneID); }, constructGridLvlRoomStateState: function (zoneID) { var oStates=dss.staticDataModel.getStates(); var oShowStates=[]; - for (var iIndex=0;iIndex<oStates.length;iIndex++) { - var sSplitName=oStates[iIndex].name.split("."); - if (sSplitName.length==3) - if (sSplitName[0]=='zone') - if ((sSplitName[1]==''+zoneID) && (sSplitName[2] != 'heating')){ - oShowStates.push(oStates[iIndex]); - } - } + if (oStates) { + for (var iIndex=0;iIndex<oStates.length;iIndex++) { + var sSplitName=oStates[iIndex].name.split("."); + if (sSplitName.length==3) + if (sSplitName[0]=='zone') + if ((sSplitName[1]==''+zoneID) && (sSplitName[2] != 'heating')){ + oShowStates.push(oStates[iIndex]); + } + } + } oShowStates.sort(function (o1,o2) {if (o1.name.toUpperCase()<o2.name.toUpperCase())return -1; else return 1;}); - + var oRoomStateStateControlStore = Ext.create('Ext.data.Store', { fields : [ 'name','stateid','value','icon','tooltip','valueandstate'], proxy : { @@ -907,21 +935,21 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oNameArray[2]=='light') { oItem.icon=dss.staticDataModel.getImagePathForScene(0,1,5); oItem.name=Ext.String.format2(_("{#editor_trigger_zonestates}light is active"),{}); - } + } else if (oNameArray[2]=='motion') { oItem.icon=dss.staticDataModel.getImagePathForAKMValue(5,true); oItem.name=Ext.String.format2(_("{#editor_trigger_zonestates}motion is active"),{}); - } + } else if (oNameArray[2]=='presence') { oItem.icon=dss.staticDataModel.getImagePathForAKMValue(1,true); oItem.name=Ext.String.format2(_("{#editor_trigger_zonestates}presence is active"),{}); - } + } else { oItem.icon=dss.staticDataModel.getImagePathForAKMValue(0,true); oItem.name=Ext.String.format2(_("{#editor_trigger_zonestates}{state} is active"),{'state':oNameArray[2]}); - } + } oNewArray.push(oItem); - + oItem={ 'stateid':oShowStates[iIndex].name, 'value':'inactive', @@ -939,12 +967,12 @@ Ext.define('DSS.component.TriggerConfigurator', { else if (oNameArray[2]=='presence') { oItem.icon=dss.staticDataModel.getImagePathForAKMValue(1,false); oItem.name=Ext.String.format2(_("{#editor_trigger_zonestates}presence is inactive"),{}); - } + } else { oItem.icon=dss.staticDataModel.getImagePathForAKMValue(0,false); oItem.name=Ext.String.format2(_("{#editor_trigger_zonestates}{state} is inactive"),{'state':oNameArray[2]}); - } - oNewArray.push(oItem); + } + oNewArray.push(oItem); } oRoomStateStateControlStore.add(oNewArray); @@ -962,34 +990,36 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, - renderer : this.defMacGridRenderer + flex : 1, + renderer : this.defMacGridRenderer } ] }); this.grids.lvlRoomStateState.parent = this; - + var me=this; this.grids.lvlRoomStateState.on('itemdblclick', function(grid, record) { if (me.isValid()) me.fireEvent('valueDoubleClicked', me); }); - + this.macPanel.add(this.grids.lvlRoomStateState); - + }, constructGridLvlClusterStateState: function (clusterID) { var oStates = dss.staticDataModel.getStates(); var oShowStates = []; - for (var iIndex = 0; iIndex < oStates.length; iIndex++) { - var sSplitName = oStates[iIndex].name.split("."); - if ((sSplitName.length != 3) && (sSplitName[0] != 'cluster')) { - continue; - } - if ((sSplitName[1] == ''+clusterID) && (sSplitName[2] == 'operation_lock')) { - oShowStates.push(oStates[iIndex]); + if (oStates) { + for (var iIndex = 0; iIndex < oStates.length; iIndex++) { + var sSplitName = oStates[iIndex].name.split("."); + if ((sSplitName.length != 3) && (sSplitName[0] != 'cluster')) { + continue; + } + if ((sSplitName[1] == ''+clusterID) && (sSplitName[2] == 'operation_lock')) { + oShowStates.push(oStates[iIndex]); + } } } oShowStates.sort(function (o1,o2) { if (o1.name.toUpperCase() < o2.name.toUpperCase()) return -1; else return 1;}); @@ -1058,14 +1088,14 @@ Ext.define('DSS.component.TriggerConfigurator', { me.fireEvent('valueDoubleClicked', me); }); - + this.grids.lvlClusterStateState.parent = this; this.macPanel.add(this.grids.lvlClusterStateState); }, constructGridLvlDeviceStateValue: function (dSUID,type) { var oStates=dss.staticDataModel.getDeviceStates(dSUID); - + var oStateDeviceValueControlStore = Ext.create('Ext.data.Store', { fields : [ 'type', {name:'name',sortType:'asUCText'},'selector' ], proxy : { @@ -1081,15 +1111,15 @@ Ext.define('DSS.component.TriggerConfigurator', { if (sKey==type) { for (var sSubKey in oStates[sKey].options) oValueArray.push({type:sSubKey,name:oStates[sKey].options[sSubKey],selector:'dev.' + dSUID + '.' + type}); - } + } } - oStateDeviceValueControlStore.add(oValueArray); + oStateDeviceValueControlStore.add(oValueArray); oStateDeviceValueControlStore.sort('name'); var width=(this.getWidth()-(this.iDefaultWidth*4))-2; - if (this.grids.lvlDeviceActionClass.store.count()==1) + if (this.grids.lvlDeviceActionClass.store.count()==1) width+=this.iDefaultWidth; - + this.grids.lvlDeviceStateValue = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -1107,7 +1137,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { return '<table style="height:16px;width:100%"><tr><td width="100%">' + record.get('name') + '</td></tr></table>'; } @@ -1124,13 +1154,13 @@ Ext.define('DSS.component.TriggerConfigurator', { if (me.isValid()) me.fireEvent('valueDoubleClicked', me); }); - + this.macPanel.add(this.grids.lvlDeviceStateValue); }, /* constructGridLvlDeviceStateState: function (dSUID) { var oStates=dss.staticDataModel.getDeviceStates(dSUID); - + var oStateDeviceStateControlStore = Ext.create('Ext.data.Store', { fields : [ 'type', 'name' ], proxy : { @@ -1146,9 +1176,9 @@ Ext.define('DSS.component.TriggerConfigurator', { oStateArray.push({type:sKey,name:oStates[sKey].title}); } oStateDeviceStateControlStore.add(oStateArray); - + oStateDeviceStateControlStore.sort('name'); - + this.grids.lvlDeviceStateState = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -1163,7 +1193,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { return '<table style="height:16px;width:100%"><tr><td width="100%">' + record.get('name') + '</td><td>></td></tr></table>'; } @@ -1174,11 +1204,11 @@ Ext.define('DSS.component.TriggerConfigurator', { this.grids.lvlDeviceStateState.on('itemclick', function(grid, record) { this.parent.macPanel.remove(this.parent.grids.lvlDeviceStateValue); var type = record.get('type'); - this.parent.constructGridLvlDeviceStateValue(dSUID,type); + this.parent.constructGridLvlDeviceStateValue(dSUID,type); }); this.macPanel.add(this.grids.lvlDeviceStateState); - - + + }, *//* constructGridLvlDeviceStateDevice: function (zoneID) { @@ -1192,15 +1222,17 @@ Ext.define('DSS.component.TriggerConfigurator', { } } }); - + var oDeviceArray=[]; - for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].hasStates) - if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { - oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); - } - } + if (dss.staticDataModel.deviceCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].hasStates) + if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { + oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); + } + } + } oDeviceControlStore.sort('name'); @@ -1231,17 +1263,19 @@ Ext.define('DSS.component.TriggerConfigurator', { }); this.macPanel.add(this.grids.lvlDeviceStateDevice); - + },*//* constructGridLvlDeviceStateRoom: function () { var oRoomArray=[]; - for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].hasStates) - if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { - oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); - } - } + if (dss.staticDataModel.deviceCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].hasStates) + if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { + oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); + } + } + } var oRoomDeviceStateControlStore = Ext.create('Ext.data.Store', { fields : [ 'ZoneID', 'name' ], proxy : { @@ -1258,7 +1292,7 @@ Ext.define('DSS.component.TriggerConfigurator', { } oRoomDeviceStateControlStore.add(oArray); oRoomDeviceStateControlStore.sort('name'); - + this.grids.lvlDeviceStateRoom = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -1273,7 +1307,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { return '<table style="height:16px;width:100%"><tr><td width="100%">' + record.get('name') + '</td><td>></td></tr></table>'; } @@ -1286,10 +1320,10 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.macPanel.remove(this.parent.grids.lvlDeviceStateState); this.parent.macPanel.remove(this.parent.grids.lvlDeviceStateValue); var zoneID = record.get('ZoneID'); - this.parent.constructGridLvlDeviceStateDevice(zoneID); + this.parent.constructGridLvlDeviceStateDevice(zoneID); }); this.macPanel.add(this.grids.lvlDeviceStateRoom); - + },*/ constructGridLvlRoomStateRoom: function () { var oRoomStateControlStore = Ext.create('Ext.data.Store', { @@ -1310,7 +1344,7 @@ Ext.define('DSS.component.TriggerConfigurator', { oRoomStateControlStore.add(oNewRecord); }); oRoomStateControlStore.sort('name'); - + this.grids.lvlRoomStateRoom = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -1325,7 +1359,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { return '<table style="height:16px;width:100%"><tr><td width="100%">' + record.get('name') + '</td><td>></td></tr></table>'; } @@ -1335,15 +1369,15 @@ Ext.define('DSS.component.TriggerConfigurator', { this.grids.lvlRoomStateRoom.parent = this; this.grids.lvlRoomStateRoom.on('itemclick', function(grid, record) { this.parent.macPanel.remove(this.parent.grids.lvlRoomStateState); - + var zoneID = record.get('ZoneID'); - this.parent.constructGridLvlRoomStateState(zoneID); + this.parent.constructGridLvlRoomStateState(zoneID); }); this.macPanel.add(this.grids.lvlRoomStateRoom); - }, + }, constructGridLvlDeviceEventEvent: function (dSUID) { var oEvents=dss.staticDataModel.getDevice(dSUID).deviceEvents; - + var oStateDeviceEventControlStore = Ext.create('Ext.data.Store', { fields : [ 'event','dSUID', {name:'name',sortType:'asUCText'} ], proxy : { @@ -1359,10 +1393,10 @@ Ext.define('DSS.component.TriggerConfigurator', { oEventArray.push({event:sKey,dSUID:dSUID,name:oEvents[sKey].title}); } oStateDeviceEventControlStore.add(oEventArray); - + oStateDeviceEventControlStore.sort('name'); var width=(this.getWidth()-(this.iDefaultWidth*3))-2; - if (this.grids.lvlDeviceActionClass.store.count()==1) + if (this.grids.lvlDeviceActionClass.store.count()==1) width+=this.iDefaultWidth; this.grids.lvlDeviceEventEvent = Ext.create('Ext.grid.Panel', { hideHeaders:true, @@ -1381,7 +1415,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { return '<table style="height:16px;width:100%"><tr><td width="100%">' + record.get('name') + '</td></tr></table>'; } @@ -1408,10 +1442,10 @@ Ext.define('DSS.component.TriggerConfigurator', { me.grids[sKey].setHeight(me.iDefaultHeight); } }); - + this.macPanel.add(this.grids.lvlDeviceEventEvent); - - + + }, /* constructGridLvlDeviceEventDevice: function (zoneID) { @@ -1426,16 +1460,18 @@ Ext.define('DSS.component.TriggerConfigurator', { } } }); - + var oDeviceArray=[]; - for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].deviceEvents!=null) - if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceEvents).length>0) - if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { - oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); - } - } + if (dss.staticDataModel.deviceCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].deviceEvents!=null) + if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceEvents).length>0) + if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { + oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); + } + } + } oDeviceControlStore.sort('name'); @@ -1465,18 +1501,20 @@ Ext.define('DSS.component.TriggerConfigurator', { }); this.macPanel.add(this.grids.lvlDeviceEventDevice); - + },*//* constructGridLvlDeviceEventRoom: function () { var oRoomArray=[]; - for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].deviceEvents!=null) - if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceEvents).length>0) - if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { - oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); - } - } + if (dss.staticDataModel.deviceCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].deviceEvents!=null) + if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceEvents).length>0) + if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { + oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); + } + } + } var oRoomDeviceEventControlStore = Ext.create('Ext.data.Store', { fields : [ 'ZoneID', 'name' ], proxy : { @@ -1493,7 +1531,7 @@ Ext.define('DSS.component.TriggerConfigurator', { } oRoomDeviceEventControlStore.add(oArray); oRoomDeviceEventControlStore.sort('name'); - + this.grids.lvlDeviceEventRoom = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -1508,7 +1546,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { return '<table style="height:16px;width:100%"><tr><td width="100%">' + record.get('name') + '</td><td>></td></tr></table>'; } @@ -1520,12 +1558,12 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.macPanel.remove(this.parent.grids.lvlDeviceEventDevice); this.parent.macPanel.remove(this.parent.grids.lvlDeviceEventEvent); var zoneID = record.get('ZoneID'); - this.parent.constructGridLvlDeviceEventDevice(zoneID); + this.parent.constructGridLvlDeviceEventDevice(zoneID); }); this.macPanel.add(this.grids.lvlDeviceEventRoom); },*/ constructGridLvlDeviceActionAction: function (dSUID) { - + var oStateDeviceActionControlStore = Ext.create('Ext.data.Store', { fields : [ 'action','dSUID', 'name' ], proxy : { @@ -1549,7 +1587,7 @@ Ext.define('DSS.component.TriggerConfigurator', { if (Object.keys(oDeviceActions).length>0) if (Object.keys(oStandard).length>0) oActionArray.push({action:'',dSUID:dSUID,name:'-'}); - + for (var sKey in oDeviceActions) { oActionArray.push({action:sKey,dSUID:dSUID,name:oDeviceActions[sKey].title}); } @@ -1557,18 +1595,18 @@ Ext.define('DSS.component.TriggerConfigurator', { if (Object.keys(oCustom).length>0) if (Object.keys(oDeviceActions).length>0) oActionArray.push({action:'',dSUID:dSUID,name:'-'}); - + for (var sKey in oCustom) { oActionArray.push({action:sKey,dSUID:dSUID,name:oCustom[sKey].title}); } - - + + oStateDeviceActionControlStore.add(oActionArray); - + var width=(this.getWidth()-(this.iDefaultWidth*4))-2; - if (this.grids.lvlDeviceActionClass.store.count()==1) + if (this.grids.lvlDeviceActionClass.store.count()==1) width+=this.iDefaultWidth; - + this.grids.lvlDeviceActionAction = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -1586,7 +1624,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { if (record.get('name')=='-') return '<table style="height:16px;width:100%;"><tr style="height:16px;"><td width="100%"><hr></td></tr></table>'; @@ -1606,10 +1644,10 @@ Ext.define('DSS.component.TriggerConfigurator', { if (me.isValid()) me.fireEvent('valueDoubleClicked', me); }); - + this.macPanel.add(this.grids.lvlDeviceActionAction); - - + + }, /* constructGridLvlDeviceActionDevice: function (zoneID) { @@ -1624,25 +1662,27 @@ Ext.define('DSS.component.TriggerConfigurator', { } } }); - + var oDeviceArray=[]; - for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { - var fSkip=false; - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].deviceCustomActions!=null) - if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceCustomActions).length>0) - if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { - oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); - fSkip=true; - } - if (!fSkip) - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].deviceStandardActions!=null) - if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceStandardActions).length>0) - if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { - oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); - } - } + if (dss.staticDataModel.deviceCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { + var fSkip=false; + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].deviceCustomActions!=null) + if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceCustomActions).length>0) + if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { + oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); + fSkip=true; + } + if (!fSkip) + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].deviceStandardActions!=null) + if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceStandardActions).length>0) + if (dss.staticDataModel.deviceCache[iIndex].ZoneID==zoneID) { + oDeviceControlStore.add(dss.staticDataModel.deviceCache[iIndex]); + } + } + } oDeviceControlStore.sort('name'); @@ -1672,25 +1712,27 @@ Ext.define('DSS.component.TriggerConfigurator', { }); this.macPanel.add(this.grids.lvlDeviceActionDevice); - + },*//* constructGridLvlDeviceActionRoom: function () { var oRoomArray=[]; - for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].deviceCustomActions!=null) - if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceCustomActions).length>0) - if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { - oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); - } - - if (dss.staticDataModel.deviceCache[iIndex].present) - if (dss.staticDataModel.deviceCache[iIndex].deviceStandardActions!=null) - if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceStandardActions).length>0) - if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { - oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); - } - } + if (dss.staticDataModel.deviceCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.deviceCache.length;iIndex++) { + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].deviceCustomActions!=null) + if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceCustomActions).length>0) + if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { + oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); + } + + if (dss.staticDataModel.deviceCache[iIndex].present) + if (dss.staticDataModel.deviceCache[iIndex].deviceStandardActions!=null) + if (Object.keys(dss.staticDataModel.deviceCache[iIndex].deviceStandardActions).length>0) + if (oRoomArray.indexOf(dss.staticDataModel.deviceCache[iIndex].ZoneID)<0) { + oRoomArray.push(dss.staticDataModel.deviceCache[iIndex].ZoneID); + } + } + } var oRoomDeviceActionControlStore = Ext.create('Ext.data.Store', { fields : [ 'ZoneID', 'name' ], proxy : { @@ -1707,7 +1749,7 @@ Ext.define('DSS.component.TriggerConfigurator', { } oRoomDeviceActionControlStore.add(oArray); oRoomDeviceActionControlStore.sort('name'); - + this.grids.lvlDeviceActionRoom = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -1722,7 +1764,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { return '<table style="height:16px;width:100%"><tr><td width="100%">' + record.get('name') + '</td><td>></td></tr></table>'; } @@ -1734,11 +1776,11 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.macPanel.remove(this.parent.grids.lvlDeviceActionDevice); this.parent.macPanel.remove(this.parent.grids.lvlDeviceActionAction); var zoneID = record.get('ZoneID'); - this.parent.constructGridLvlDeviceActionDevice(zoneID); + this.parent.constructGridLvlDeviceActionDevice(zoneID); }); this.macPanel.add(this.grids.lvlDeviceActionRoom); - - }, + + }, */ constructGridLvlClusterStateCluster: function () { var oClusterStateControlStore = Ext.create('Ext.data.Store', { @@ -1803,13 +1845,13 @@ Ext.define('DSS.component.TriggerConfigurator', { }); var oDevice=dss.staticDataModel.getDevice(dSUID); - + var fSkip=false; if (oDevice.specialActions!=null) if (oDevice.specialActions.triggers!=null) - if (oDevice.specialActions.triggers.binaryInputs!=null) { - for (var sKey in oDevice.specialActions.triggers.binaryInputs) - if (oDevice.specialActions.triggers.binaryInputs[sKey].id==type) { + if (oDevice.specialActions.triggers.binaryInputs!=null) { + for (var sKey in oDevice.specialActions.triggers.binaryInputs) + if (oDevice.specialActions.triggers.binaryInputs[sKey].id==type) { var oItem={ 'index':oDevice.specialActions.triggers.binaryInputs[sKey].id, 'name':oDevice.specialActions.triggers.binaryInputs[sKey].name, @@ -1817,77 +1859,80 @@ Ext.define('DSS.component.TriggerConfigurator', { 'tooltip':'', 'icon': null}; oStore.add(oItem); - + fSkip=true; } } - - if (!fSkip) { + + if (!fSkip) { if (dss.staticDataModel.getDeviceType(oDevice) == 10) { //TNY - for (var iIndex=0;iIndex<oDevice.binaryInputs.length;iIndex++) { - if (oDevice.binaryInputs[iIndex].type == type) { - var oItem={ - 'index':oDevice.binaryInputs[iIndex].index, - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,false), - '_id':false, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,false), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,false)}; - oStore.add(oItem); - oItem={ - 'index':oDevice.binaryInputs[iIndex].index, - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,true), - '_id':true, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,true), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,true)}; - oStore.add(oItem); - } - } - + if (oDevice.binaryInputs) { + for (var iIndex=0;iIndex<oDevice.binaryInputs.length;iIndex++) { + if (oDevice.binaryInputs[iIndex].type == type) { + var oItem={ + 'index':oDevice.binaryInputs[iIndex].index, + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,false), + '_id':false, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,false), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,false)}; + oStore.add(oItem); + oItem={ + 'index':oDevice.binaryInputs[iIndex].index, + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,true), + '_id':true, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,true), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,true)}; + oStore.add(oItem); + } + } + } } else { var bIsWindowHandle = dss.staticDataModel.IsWindowHandle(oDevice); - for (var iIndex=0;iIndex<oDevice.binaryInputs.length;iIndex++) { - if (!bIsWindowHandle) { - var oItem={ - 'index':oDevice.binaryInputs[iIndex].index, - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,false), - '_id':false, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,false), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,false)}; - oStore.add(oItem); - - oItem={ - 'index':oDevice.binaryInputs[iIndex].index, - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,true), - '_id':true, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,true), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,true)}; - oStore.add(oItem); - } else { - if (oDevice.binaryInputs[iIndex].type == 15) { // BinaryInputIDWindowTilt - var oItem={ - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), - '_id':dss.whState.WH_Closed, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), - 'index':oDevice.binaryInputs[iIndex].index}; - oStore.add(oItem); - oItem={ - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), - '_id':dss.whState.WH_Open, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), - 'index':oDevice.binaryInputs[iIndex].index}; - oStore.add(oItem); - oItem={ - 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), - '_id':dss.whState.WH_Tilted, - 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), - 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), - 'index':oDevice.binaryInputs[iIndex].index}; - oStore.add(oItem); - } - } - } + if (oDevice.binaryInputs) { + for (var iIndex=0;iIndex<oDevice.binaryInputs.length;iIndex++) { + if (!bIsWindowHandle) { + var oItem={ + 'index':oDevice.binaryInputs[iIndex].index, + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,false), + '_id':false, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,false), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,false)}; + oStore.add(oItem); + + oItem={ + 'index':oDevice.binaryInputs[iIndex].index, + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,true), + '_id':true, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,true), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,true)}; + oStore.add(oItem); + } else { + if (oDevice.binaryInputs[iIndex].type == 15) { // BinaryInputIDWindowTilt + var oItem={ + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), + '_id':dss.whState.WH_Closed, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Closed), + 'index':oDevice.binaryInputs[iIndex].index}; + oStore.add(oItem); + oItem={ + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), + '_id':dss.whState.WH_Open, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Open), + 'index':oDevice.binaryInputs[iIndex].index}; + oStore.add(oItem); + oItem={ + 'name':dss.staticDataModel.getNameForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), + '_id':dss.whState.WH_Tilted, + 'tooltip':dss.staticDataModel.getTooltipForState(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), + 'icon': dss.staticDataModel.getImagePathForAKMValue(oDevice.binaryInputs[iIndex].type,dss.whState.WH_Tilted), + 'index':oDevice.binaryInputs[iIndex].index}; + oStore.add(oItem); + } + } + } + } } } this.grids.lvlDeviceAKMValue = Ext.create('Ext.grid.Panel', { @@ -1897,7 +1942,7 @@ Ext.define('DSS.component.TriggerConfigurator', { autoScroll : true, viewConfig : { stripeRows : true - }, + }, store : oStore, columns : [ { sortable : false, @@ -1914,11 +1959,11 @@ Ext.define('DSS.component.TriggerConfigurator', { me.fireEvent('valueDoubleClicked', me); }); - + this.grids.lvlDeviceAKMValue.parent = this; this.macPanel.add(this.grids.lvlDeviceAKMValue); - }, + }, constructGridLvlDeviceAKMs : function(zoneID) { var oDeviceControlStore = Ext.create('Ext.data.Store', { fields : [ 'dSID', 'dSUID', {name:'name',sortType:'asUCText'}, 'icon', 'present','type' ], @@ -1941,7 +1986,7 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oDevice.specialActions.triggers!=null) if (oDevice.specialActions.triggers.binaryInputs!=null) { var typeArray=[]; - for (var sKey in oDevice.specialActions.triggers.binaryInputs) + for (var sKey in oDevice.specialActions.triggers.binaryInputs) if (typeArray.indexOf(oDevice.specialActions.triggers.binaryInputs[sKey].id)==-1) { var oObject={ dSUID:oNewRecord.get('dSUID'), @@ -1957,16 +2002,18 @@ Ext.define('DSS.component.TriggerConfigurator', { } if (!fSkip) { if (dss.staticDataModel.getDeviceType(oDevice) == 10 /*TNY*/) { - for (var kIndex=0;kIndex<oDevice.binaryInputs.length;kIndex++) { - type=oDevice.binaryInputs[kIndex].type; - if (type!=255) { - var oInput = oNewRecord.copy(); - var typeName = dss.staticDataModel.getNameForAKMType(type); - oInput.data.name = typeName; - oInput.data.type = type; - oDeviceControlStore.add(oInput); - } - } + if (oDevice.binaryInputs) { + for (var kIndex=0;kIndex<oDevice.binaryInputs.length;kIndex++) { + type=oDevice.binaryInputs[kIndex].type; + if (type!=255) { + var oInput = oNewRecord.copy(); + var typeName = dss.staticDataModel.getNameForAKMType(type); + oInput.data.name = typeName; + oInput.data.type = type; + oDeviceControlStore.add(oInput); + } + } + } } else { oDeviceControlStore.add(oNewRecord); } @@ -2054,7 +2101,7 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.macPanel.remove(this.parent.grids.lvlAKMDevice); this.parent.macPanel.remove(this.parent.grids.lvlUserstate); this.parent.macPanel.remove(this.parent.grids.lvlUserstateValue); - this.parent.macPanel.remove(this.parent.grids.lvlDeviceActionClass); + this.parent.macPanel.remove(this.parent.grids.lvlDeviceActionClass); this.parent.macPanel.remove(this.parent.grids.lvlDeviceEventEvent); this.parent.macPanel.remove(this.parent.grids.lvlDeviceActionAction); var zoneID = record.get('ZoneID'); @@ -2080,7 +2127,7 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oDeviceObject.specialActions.triggers!=null) { if (oDeviceObject.specialActions.triggers.deviceMsg!=null) { fSpecial=true; - for (var sKey in oDeviceObject.specialActions.triggers.deviceMsg) { + for (var sKey in oDeviceObject.specialActions.triggers.deviceMsg) { oDeviceActionControlStore.add({ _id : oDeviceObject.specialActions.triggers.deviceMsg[sKey].id, name : oDeviceObject.specialActions.triggers.deviceMsg[sKey].name, @@ -2089,10 +2136,10 @@ Ext.define('DSS.component.TriggerConfigurator', { type:'deviceMSG' }); } - } + } if (oDeviceObject.specialActions.triggers.deviceAction!=null) { fSpecial=true; - for (var sKey in oDeviceObject.specialActions.triggers.deviceAction) { + for (var sKey in oDeviceObject.specialActions.triggers.deviceAction) { oDeviceActionControlStore.add({ _id : oDeviceObject.specialActions.triggers.deviceAction[sKey].id, name : oDeviceObject.specialActions.triggers.deviceAction[sKey].name, @@ -2101,10 +2148,10 @@ Ext.define('DSS.component.TriggerConfigurator', { type:'deviceMSG' }); } - } + } if (oDeviceObject.specialActions.triggers.deviceActions!=null) { fSpecial=true; - for (var sKey in oDeviceObject.specialActions.triggers.deviceActions) { + for (var sKey in oDeviceObject.specialActions.triggers.deviceActions) { oDeviceActionControlStore.add({ _id : oDeviceObject.specialActions.triggers.deviceActions[sKey].action, name : oDeviceObject.specialActions.triggers.deviceActions[sKey].name, @@ -2113,7 +2160,7 @@ Ext.define('DSS.component.TriggerConfigurator', { type:'deviceMSG' }); } - } + } } if (!fSpecial) if (oDeviceObject.tasterMode == 15) { @@ -2183,8 +2230,8 @@ Ext.define('DSS.component.TriggerConfigurator', { next : false, type:'deviceMSG' }); - - + + oDeviceActionControlStore.add({ _id : 1200, name : _('1x click upper switch'), @@ -2220,9 +2267,9 @@ Ext.define('DSS.component.TriggerConfigurator', { next : false, type:'deviceMSG' }); - - - } else { + + + } else { oDeviceActionControlStore.add({ _id : 0, name : _('1x click'), @@ -2282,7 +2329,7 @@ Ext.define('DSS.component.TriggerConfigurator', { }); } var width=(this.getWidth()-(this.iDefaultWidth*4))-2; - if (this.grids.lvlDeviceActionClass.store.count()==1) + if (this.grids.lvlDeviceActionClass.store.count()==1) width+=this.iDefaultWidth; this.grids.lvlDeviceAction = Ext.create('Ext.grid.Panel', { hideHeaders:true, @@ -2312,12 +2359,12 @@ Ext.define('DSS.component.TriggerConfigurator', { if (me.isValid()) me.fireEvent('valueDoubleClicked', me); }); - + this.macPanel.add(this.grids.lvlDeviceAction); - }, + }, constructGridLvlAccess : function() { - + this.grids.lvlAccess = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -2345,15 +2392,15 @@ Ext.define('DSS.component.TriggerConfigurator', { this.grids.lvlAccess.on('itemclick', function(grid, record) { if (record.get('_id') == -1) { this.getSelectionModel().deselect(record); - } + } }); - + var me=this; this.grids.lvlAccess.on('itemdblclick', function(grid, record) { if (me.isValid()) me.fireEvent('valueDoubleClicked', me); }); - + this.macPanel.add(this.grids.lvlAccess); }, @@ -2390,7 +2437,7 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.constructGridLvlSunProtection(); } }); - + var me=this; this.grids.lvlWeather.on('itemdblclick', function(grid, record) { if (me.isValid()) @@ -2428,7 +2475,7 @@ Ext.define('DSS.component.TriggerConfigurator', { this.getSelectionModel().deselect(record); } }); - + var me=this; this.grids.lvlSunProtection.on('itemdblclick', function(grid, record) { if (me.isValid()) @@ -2447,13 +2494,15 @@ Ext.define('DSS.component.TriggerConfigurator', { } } }); - + var oState=null; - for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) { - if (dss.staticDataModel.userStates[iIndex].name==stateID) { - oState = dss.staticDataModel.userStates[iIndex]; - } - } + if (dss.staticDataModel.userStates) { + for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) { + if (dss.staticDataModel.userStates[iIndex].name==stateID) { + oState = dss.staticDataModel.userStates[iIndex]; + } + } + } if (oState!=null) { var oItem={ _id: 'active', @@ -2467,8 +2516,8 @@ Ext.define('DSS.component.TriggerConfigurator', { passive: false}; oAddonStateStore.add(oItem); } - - + + this.grids.lvlUserstateValue = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -2496,15 +2545,15 @@ Ext.define('DSS.component.TriggerConfigurator', { this.grids.lvlUserstateValue.on('itemclick', function(grid, record) { if (record.get('_id') == -1) { this.getSelectionModel().deselect(record); - } + } }); - + var me=this; this.grids.lvlUserstateValue.on('itemdblclick', function(grid, record) { if (me.isValid()) me.fireEvent('valueDoubleClicked', me); }); - + this.macPanel.add(this.grids.lvlUserstateValue); }, constructGridLvlUserstate : function() { @@ -2537,8 +2586,8 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.macPanel.remove(this.parent.grids.lvlUserstateValue); this.parent.constructGridLvlUserstateValue(record.get('_id') ); }); - - + + this.macPanel.add(this.grids.lvlUserstate); }, constructGridLvlPanic : function() { @@ -2570,15 +2619,15 @@ Ext.define('DSS.component.TriggerConfigurator', { this.grids.lvlPanic.on('itemclick', function(grid, record) { if (record.get('_id') == -1) { this.getSelectionModel().deselect(record); - } + } }); - + var me=this; this.grids.lvlPanic.on('itemdblclick', function(grid, record) { if (me.isValid()) me.fireEvent('valueDoubleClicked', me); }); - + this.macPanel.add(this.grids.lvlPanic); }, constructGridLvlDeviceActionClass: function(dSUID) { @@ -2598,14 +2647,14 @@ Ext.define('DSS.component.TriggerConfigurator', { var dsidActions=false; if (((oDevice.tasterMode == 0) && (oDevice.buttonType != 65))||(oDevice.tasterMode==15)) - dsidActions=true; - + dsidActions=true; + if (oDevice.deviceEvents!=null) if (Object.keys(oDevice.deviceEvents).length>0) { oDeviceControlStore.add({_id:1,name:_('device events'),dsuid:dSUID}); dsidActions=false; } - + var actions=false; if (oDevice.deviceCustomActions!=null) if (Object.keys(oDevice.deviceCustomActions).length>0) @@ -2633,11 +2682,11 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oDevice.specialActions.triggers.deviceMsg!=null) dsidActions=true; if (oDevice.specialActions.triggers.deviceAction!=null) - dsidActions=true; + dsidActions=true; } if (dsidActions) oDeviceControlStore.add({_id:4,name:_('taster action'),dsuid:dSUID}); - + this.grids.lvlDeviceActionClass = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -2673,7 +2722,7 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.constructGridLvlDeviceActionAction(dSUID); break; case 3: //device states - this.parent.constructGridLvlDeviceStateValue(dSUID,record.get('type')); + this.parent.constructGridLvlDeviceStateValue(dSUID,record.get('type')); break; case 4: //device messages this.parent.constructGridLvlDeviceActions(dSUID); @@ -2688,12 +2737,12 @@ Ext.define('DSS.component.TriggerConfigurator', { switch (oRecordDeviceClass.get('_id')) { case 1: //device events this.constructGridLvlDeviceEventEvent(dSUID); - return true; + return true; case 2: // device actions this.constructGridLvlDeviceActionAction(dSUID); return true; case 3: //device states - this.constructGridLvlDeviceStateValue(dSUID,record.get('type')); + this.constructGridLvlDeviceStateValue(dSUID,record.get('type')); return true; case 4: //device messages this.constructGridLvlDeviceActions(dSUID); @@ -2718,10 +2767,13 @@ Ext.define('DSS.component.TriggerConfigurator', { oDeviceStore.each(function(record) { var oNewRecord = record.copy(); var fAKM=false; - for (var iIndex=0;iIndex<dss.staticDataModel.getAKMDeviceArray().length;iIndex++) { - if (oNewRecord.get('dSUID')==dss.staticDataModel.getAKMDeviceArray()[iIndex].dSUID) - fAKM=true; - } + var akmDeviceArray = dss.staticDataModel.getAKMDeviceArray(); + if (akmDeviceArray) { + for (var iIndex=0;iIndex<akmDeviceArray.length;iIndex++) { + if (oNewRecord.get('dSUID')==akmDeviceArray[iIndex].dSUID) + fAKM=true; + } + } if (!fAKM) if ((oNewRecord.get('present'))||me.fIgnorePresence) oDeviceControlStore.add(oNewRecord); @@ -2755,7 +2807,7 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.macPanel.remove(this.parent.grids.lvlDeviceScene); this.parent.macPanel.remove(this.parent.grids.lvlDeviceStateValue); - + var dSID = record.get('dSID'); var dSUID = record.get('dSUID'); this.parent.constructGridLvlDeviceActionClass(dSUID); @@ -2781,7 +2833,7 @@ Ext.define('DSS.component.TriggerConfigurator', { zoneID=0; var oSceneStore = this.getSceneStore(zoneID, groupID); if ((zoneID==0) && (groupID>63)) { - + } else { oSceneControlStore.add({ _id : -3, @@ -2790,7 +2842,7 @@ Ext.define('DSS.component.TriggerConfigurator', { reachable : true, checkable : true, checked : fAll - + }); oSceneControlStore.add({ _id : -1, @@ -2806,7 +2858,7 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oNewRecord.get('_id') < 64) oSceneControlStore.add(oNewRecord); }); - + this.grids.lvlScene = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -2836,8 +2888,8 @@ Ext.define('DSS.component.TriggerConfigurator', { if (me.isValid()) me.fireEvent('valueDoubleClicked', me); }); - - + + this.grids.lvlScene.on('itemclick', function(grid, record) { if (record.get('_id') == -1) { this.getSelectionModel().deselect(record); @@ -2923,7 +2975,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { return '<table style="height:16px;width:100%"><tr><td width="100%">' + record.get('name') + '</td><td>></td></tr></table>'; } @@ -2939,7 +2991,7 @@ Ext.define('DSS.component.TriggerConfigurator', { zoneID = 0; this.parent.constructGridLvlGroup(zoneID); }); - + var me=this; this.grids.lvlRoomRoom.on('itemdblclick', function(grid, record) { if (me.isValid()) @@ -2987,7 +3039,7 @@ Ext.define('DSS.component.TriggerConfigurator', { hideable : false, text : _('room'), dataIndex : 'name', - flex : 1, + flex : 1, renderer : function(val, metadata, record, colIdx, store, view) { return '<table style="height:16px;width:100%"><tr><td width="100%">' + record.get('name') + '</td><td>></td></tr></table>'; } @@ -3009,7 +3061,7 @@ Ext.define('DSS.component.TriggerConfigurator', { zoneID = 0; this.parent.constructGridLvlDevice(zoneID); }); - + var me=this; this.grids.lvlDeviceRoom.on('itemdblclick', function(grid, record) { if (me.isValid()) @@ -3028,14 +3080,14 @@ Ext.define('DSS.component.TriggerConfigurator', { } } }); - if (dss.staticDataModel.HLECache!=null) - if (dss.staticDataModel.HLECache.length>0) { - for (var iIndex=0;iIndex<dss.staticDataModel.HLECache.length;iIndex++) - oStore.add( { - name:dss.staticDataModel.HLECache[iIndex].name, - _id:dss.staticDataModel.HLECache[iIndex].id - }); + if (dss.staticDataModel.HLECache) { + for (var iIndex=0;iIndex<dss.staticDataModel.HLECache.length;iIndex++) { + oStore.add( { + name:dss.staticDataModel.HLECache[iIndex].name, + _id:dss.staticDataModel.HLECache[iIndex].id + }); } + } oStore.sort('name','ASC'); this.grids.lvlHighLevelEvent = Ext.create('Ext.grid.Panel', { hideHeaders:true, @@ -3061,8 +3113,8 @@ Ext.define('DSS.component.TriggerConfigurator', { } ] }); this.grids.lvlHighLevelEvent.parent = this; - - + + var me=this; this.grids.lvlHighLevelEvent.on('itemdblclick', function(grid, record) { if (me.isValid()) @@ -3101,7 +3153,7 @@ Ext.define('DSS.component.TriggerConfigurator', { case 22: case 23: fOK=false; - break; + break; } if (fOK) { oGroupControlStore.add(oNewRecord); @@ -3171,7 +3223,7 @@ Ext.define('DSS.component.TriggerConfigurator', { } } }); - + var me=this; this.grids.lvlGroup.on('itemdblclick', function(grid, record) { if (me.isValid()) @@ -3198,7 +3250,7 @@ Ext.define('DSS.component.TriggerConfigurator', { var oNewRecord = record.copy(); oStore.add(oNewRecord); }); - + this.grids.lvlSensorMessage = Ext.create('Ext.grid.Panel', { hideHeaders:true, height : this.iDefaultHeight, @@ -3224,13 +3276,13 @@ Ext.define('DSS.component.TriggerConfigurator', { }); this.grids.lvlSensorMessage.parent = this; this.macPanel.add(this.grids.lvlSensorMessage); - + var me=this; this.grids.lvlSensorMessage.on('itemdblclick', function(grid, record) { if (me.isValid()) me.fireEvent('valueDoubleClicked', me); }); - + }, constructGridLvlSensorDevice:function(zoneID) { var oDeviceControlStore = Ext.create('Ext.data.Store', { @@ -3350,7 +3402,7 @@ Ext.define('DSS.component.TriggerConfigurator', { } } }); - + lvl1Store = Ext.data.StoreManager.lookup('triggerConfigurator_l1Store'); lvl1Store.each(function(record) { var oNewRecord = record.copy(); @@ -3379,7 +3431,7 @@ Ext.define('DSS.component.TriggerConfigurator', { }); this.grids.lvl1.getSelectionModel().store = this.grids.lvl1.store; this.grids.lvl1.parent = this; - + this.grids.lvl1.on('itemclick', function(grid, record) { this.parent.macPanel.remove(this.parent.grids.lvlDeviceAction); this.parent.macPanel.remove(this.parent.grids.lvlRoomRoom); @@ -3390,7 +3442,7 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.macPanel.remove(this.parent.grids.lvlDevice); this.parent.macPanel.remove(this.parent.grids.lvlSensorRoom); this.parent.macPanel.remove(this.parent.grids.lvlSensorDevice); - this.parent.macPanel.remove(this.parent.grids.lvlSensorMessage); + this.parent.macPanel.remove(this.parent.grids.lvlSensorMessage); this.parent.macPanel.remove(this.parent.grids.lvlWeather); this.parent.macPanel.remove(this.parent.grids.lvlPanic); this.parent.macPanel.remove(this.parent.grids.lvlAccess); @@ -3412,7 +3464,7 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.macPanel.remove(this.parent.grids.lvlDeviceEventEvent); this.parent.macPanel.remove(this.parent.grids.lvlDeviceActionAction); - + var fIsPassive=false; if (record.get('passive')!=null) { if (record.get('passive')==true) { @@ -3459,11 +3511,11 @@ Ext.define('DSS.component.TriggerConfigurator', { this.parent.constructGridLvlUserstate(); } else if (record.get('_id') == 9) { this.getSelectionModel().deselectAll(); - this.getSelectionModel().select(record); + this.getSelectionModel().select(record); this.parent.constructGridLvlRoomStateRoom(); } else if (record.get('_id') == 10) { this.getSelectionModel().deselectAll(); - this.getSelectionModel().select(record); + this.getSelectionModel().select(record); this.parent.constructGridLvlDeviceStateRoom(); } else if (record.get('_id') == 11) { this.getSelectionModel().deselectAll(); @@ -3477,10 +3529,10 @@ Ext.define('DSS.component.TriggerConfigurator', { } } this.parent.macPanel.doLayout(); - }); + }); } else { this.grids.lvl1.getStore().removeAll(); - var mThis=this; + var mThis=this; lvl1Store = Ext.data.StoreManager.lookup('triggerConfigurator_l1Store'); lvl1Store.each(function(record) { var oNewRecord = record.copy(); @@ -3496,11 +3548,11 @@ Ext.define('DSS.component.TriggerConfigurator', { this.fEnableUsergroup=false; if (config.enableUsergroup!=null) this.fEnableUsergroup=config.enableUsergroup; - + this.ShowUserstates=true; if (config.userStates) this.ShowUserstates=config.userStates; - + this.fHeatingOperationMode=false; if (config.heatingOperationMode!=null) this.fHeatingOperationMode=config.heatingOperationMode; @@ -3509,9 +3561,9 @@ Ext.define('DSS.component.TriggerConfigurator', { if (config.ignorePresence!=null) this.fIgnorePresence=config.ignorePresence; - + Ext.data.StoreManager.on('clear',function () {mThis.initStores(mThis.ShowUserstates);mThis.constructMacGrids();}); - + this.initStores(this.ShowUserstates); this.constructMacGrids(); @@ -3548,7 +3600,7 @@ Ext.define('DSS.component.TriggerConfigurator', { this.macPanel.remove(this.grids.lvlSensorMessage); this.macPanel.remove(this.grids.lvlWeather); this.macPanel.remove(this.grids.lvlPanic); - this.macPanel.remove(this.grids.lvlAccess); + this.macPanel.remove(this.grids.lvlAccess); this.macPanel.remove(this.grids.lvlDeviceAKMValue); this.macPanel.remove(this.grids.lvlAKMDevice); this.macPanel.remove(this.grids.lvlAKMRoom); @@ -3567,7 +3619,7 @@ Ext.define('DSS.component.TriggerConfigurator', { this.macPanel.remove(this.grids.lvlDeviceEventEvent); this.macPanel.remove(this.grids.lvlDeviceActionAction); - + var fGridConstructed = false; this.grids.lvl1.getSelectionModel().deselectAll(); @@ -3576,7 +3628,7 @@ Ext.define('DSS.component.TriggerConfigurator', { { return; } - + for ( var vIndex = 0; vIndex < values.length; vIndex++) { var oValue = values[vIndex]; switch (oValue.type) { @@ -3588,7 +3640,7 @@ Ext.define('DSS.component.TriggerConfigurator', { var oRecordZone = this.grids.lvlDeviceRoom.store.find('ZoneID', zoneID,0,false,false,true); if (oRecordZone != -1) this.grids.lvlDeviceRoom.getSelectionModel().select(oRecordZone); - else + else break; this.constructGridLvlDevice(zoneID); var oRecordDevice = this.grids.lvlDevice.store.find('dSUID', oValue.dsuid,0,false,false,true); @@ -3617,7 +3669,7 @@ Ext.define('DSS.component.TriggerConfigurator', { var oRecordZone = this.grids.lvlDeviceRoom.store.find('ZoneID', zoneID,0,false,false,true); if (oRecordZone != -1) this.grids.lvlDeviceRoom.getSelectionModel().select(oRecordZone); - else + else break; this.constructGridLvlDevice(zoneID); var oRecordDevice = this.grids.lvlDevice.store.find('dSUID', oValue.dsuid,0,false,false,true); @@ -3626,11 +3678,11 @@ Ext.define('DSS.component.TriggerConfigurator', { else break; var fConstructed=this.constructGridLvlDeviceActionClass(oValue.dsuid); - + var oRecordDevice = this.grids.lvlDeviceActionClass.store.find('_id', 2,0,false,false,true); if (oRecordDevice != -1) this.grids.lvlDeviceActionClass.getSelectionModel().select(oRecordDevice); - else + else break; if (!fConstructed) this.constructGridLvlDeviceActionAction(oValue.dsuid); @@ -3642,18 +3694,18 @@ Ext.define('DSS.component.TriggerConfigurator', { case 'device-sensor': var zoneID = dss.staticDataModel.getDevice(oValue.dsuid).ZoneID; if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',3,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',3,false,false,true),true); this.constructGridLvlSensor(); var oRecordZone = this.grids.lvlSensorRoom.store.find('ZoneID', zoneID,0,false,false,true); if (oRecordZone != -1) this.grids.lvlSensorRoom.getSelectionModel().select(oRecordZone); - else + else break; this.constructGridLvlSensorDevice(zoneID); var oRecordDevice = this.grids.lvlSensorDevice.store.find('dSUID', oValue.dsuid,0,false,false,true); if (oRecordDevice != -1) this.grids.lvlSensorDevice.getSelectionModel().select(oRecordDevice); - else + else break; this.constructGridLvlSensorMessage(oValue.dsuid); } @@ -3665,7 +3717,7 @@ Ext.define('DSS.component.TriggerConfigurator', { case 'device-binary-input': var zoneID = dss.staticDataModel.getDevice(oValue.dsuid).ZoneID; if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',1,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',1,false,false,true),true); this.constructGridLvlRoom(); var oRecordZone = this.grids.lvlDeviceRoom.store.find('ZoneID', zoneID,0,false,false,true); if (oRecordZone != -1) @@ -3681,22 +3733,22 @@ Ext.define('DSS.component.TriggerConfigurator', { this.constructGridLvlDeviceActions(oValue.dsuid); } if (oValue.state==1) { - var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1002,0,false,false,true); + var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1002,0,false,false,true); if (iIndex!=-1) this.grids.lvlDeviceAction.getSelectionModel().select(iIndex,true); } if (oValue.state==0) { - var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1003,0,false,false,true); + var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1003,0,false,false,true); if (iIndex!=-1) this.grids.lvlDeviceAction.getSelectionModel().select(iIndex,true); } - + break; case 'device-action': case 'device-msg': var zoneID = dss.staticDataModel.getDevice(oValue.dsuid).ZoneID; if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',1,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',1,false,false,true),true); this.constructGridLvlDeviceRoom(); var oRecordZone = this.grids.lvlDeviceRoom.store.find('ZoneID', zoneID,0,false,false,true); @@ -3726,17 +3778,17 @@ Ext.define('DSS.component.TriggerConfigurator', { } else if ((oValue.msg == 0) && (oValue.buttonIndex!=null)) { if (oValue.buttonIndex==2) { - var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1000,0,false,false,true); + var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1000,0,false,false,true); if (iIndex!=-1) this.grids.lvlDeviceAction.getSelectionModel().select(iIndex,true); } if (oValue.buttonIndex==1) { - var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1001,0,false,false,true); + var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1001,0,false,false,true); if (iIndex!=-1) this.grids.lvlDeviceAction.getSelectionModel().select(iIndex,true); } } else if (oValue.msg == 7) { - var iIndex = this.grids.lvlDeviceAction.store.find('_id', 0,0,false,false,true); + var iIndex = this.grids.lvlDeviceAction.store.find('_id', 0,0,false,false,true); if (iIndex!=-1) this.grids.lvlDeviceAction.getSelectionModel().select(iIndex,true); } else if (oValue.msg == 8) { @@ -3755,15 +3807,15 @@ Ext.define('DSS.component.TriggerConfigurator', { break; case 'undo-zone-scene': { - if (oValue.zone == 0) + if (oValue.zone == 0) switch (oValue.scene) { - case 65: + case 65: case 74: case 83: case 84: case 85: if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',6,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',6,false,false,true),true); this.constructGridLvlPanic(); } var oRecordScene = this.grids.lvlPanic.store.find('_id', 1000+oValue.scene,0,false,false,true); @@ -3777,7 +3829,7 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oValue["addon-id"]=='system-addon-user-defined-states') { var stateName=oValue.name; if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',8,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',8,false,false,true),true); this.constructGridLvlUserstate(); } var oRecordScene = this.grids.lvlUserstate.store.find('_id', stateName,0,false,false,true); @@ -3788,66 +3840,68 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oRecordValue != -1) this.grids.lvlUserstateValue.getSelectionModel().select(oRecordValue,true); } - break; + break; } break; } case 'state-change': - + var idString =oValue.name; var valueString=oValue.state; var oUserStates=dss.staticDataModel.getUserStates(); var oParameter={}; var fSkipAfterUserstateFound=false; - for (var jIndex=0;jIndex<oUserStates.length;jIndex++) { - if (oUserStates[jIndex].name==idString) { - if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',8,false,false,true),true); - this.constructGridLvlUserstate(); - } - var oRecordScene = this.grids.lvlUserstate.store.find('_id', idString,0,false,false,true); - if (oRecordScene != -1) { - this.grids.lvlUserstate.getSelectionModel().select(oRecordScene,true); - this.constructGridLvlUserstateValue(idString); - var oRecordValue = this.grids.lvlUserstateValue.store.find('_id', valueString,0,false,false,true); - if (oRecordValue != -1) - this.grids.lvlUserstateValue.getSelectionModel().select(oRecordValue,true); - } - fSkipAfterUserstateFound=true; - } - } + if (oUserStates) { + for (var jIndex=0;jIndex<oUserStates.length;jIndex++) { + if (oUserStates[jIndex].name==idString) { + if (!fGridConstructed) { + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',8,false,false,true),true); + this.constructGridLvlUserstate(); + } + var oRecordScene = this.grids.lvlUserstate.store.find('_id', idString,0,false,false,true); + if (oRecordScene != -1) { + this.grids.lvlUserstate.getSelectionModel().select(oRecordScene,true); + this.constructGridLvlUserstateValue(idString); + var oRecordValue = this.grids.lvlUserstateValue.store.find('_id', valueString,0,false,false,true); + if (oRecordValue != -1) + this.grids.lvlUserstateValue.getSelectionModel().select(oRecordValue,true); + } + fSkipAfterUserstateFound=true; + } + } + } if (fSkipAfterUserstateFound) break; - + if (idString.indexOf('zone.0.group')>-1) { if (idString.indexOf('zone.0.group.64')>-1) { - - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',0,false,false,true),true); - if (!fGridConstructed) { + + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',0,false,false,true),true); + if (!fGridConstructed) { this.constructGridLvlRoomRoom(); var oRecordZone = this.grids.lvlRoomRoom.store.find('ZoneID', -1,0,false,false,true); if (oRecordZone != -1) this.grids.lvlRoomRoom.getSelectionModel().select(oRecordZone); - else { + else { break; - } + } this.constructGridLvlGroup(0); } var oRecordGroup = this.grids.lvlGroup.store.find('group', 64,0,false,false,true); if (oRecordGroup != -1) this.grids.lvlGroup.getSelectionModel().select(oRecordGroup); - else { + else { break; } if (!fGridConstructed) { this.constructGridLvlGroupScene(0, 64, false, false); } - + var oRecordScene = this.grids.lvlScene.store.find('valueandstate', oValue.name + '_' + oValue.state,0,false,false,true); if (oRecordScene != -1) { this.grids.lvlScene.getSelectionModel().select(oRecordScene,true); } - break; + break; } } // name, state : 'active', 'inactive' @@ -3864,7 +3918,7 @@ Ext.define('DSS.component.TriggerConfigurator', { var oRecordZone = this.grids.lvlDeviceRoom.store.find('ZoneID', oDevice.ZoneID,0,false,false,true); if (oRecordZone != -1) this.grids.lvlDeviceRoom.getSelectionModel().select(oRecordZone); - else + else break; this.constructGridLvlDevice(oDevice.ZoneID); var oRecordDevice = this.grids.lvlDevice.store.find('dSUID', oDevice.dSUID,0,false,false,true); @@ -3878,7 +3932,7 @@ Ext.define('DSS.component.TriggerConfigurator', { if (this.grids.lvlDeviceActionClass.store.getAt(iIndex).get('_id')==3) if (this.grids.lvlDeviceActionClass.store.getAt(iIndex).get('type')==oArray[2]) oRecordDeviceClass=iIndex; - } + } if (oRecordDeviceClass != -1) this.grids.lvlDeviceActionClass.getSelectionModel().select(oRecordDeviceClass); else @@ -3893,7 +3947,7 @@ Ext.define('DSS.component.TriggerConfigurator', { break; } else { if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',7,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',7,false,false,true),true); this.constructGridLvlAKM(); var oRecordZone=this.grids.lvlAKMRoom.store.find('ZoneID', oDevice.ZoneID,0,false,false,true); if (oRecordZone != -1) { @@ -3909,7 +3963,7 @@ Ext.define('DSS.component.TriggerConfigurator', { oRecordDevice=iIndex; } } - if (oRecordDevice != -1) + if (oRecordDevice != -1) oRecordDevice=this.grids.lvlAKMDevice.store.find('dSUID', oArray[1],0,false,false,true); if (oRecordDevice != -1) { this.grids.lvlAKMDevice.getSelectionModel().select(oRecordDevice,true); @@ -3917,7 +3971,7 @@ Ext.define('DSS.component.TriggerConfigurator', { } } } - + var oRecordValue=this.grids.lvlDeviceAKMValue.store.findBy(function(record) { if ((""+record.get('index'))==(""+oArray[2])) { if (record.get('_id')===true) @@ -3935,7 +3989,7 @@ Ext.define('DSS.component.TriggerConfigurator', { } return false; }); - + if (oRecordValue != -1) this.grids.lvlDeviceAKMValue.getSelectionModel().select(oRecordValue,true); break; @@ -3953,7 +4007,7 @@ Ext.define('DSS.component.TriggerConfigurator', { var oRecordState=this.grids.lvlRoomStateState.getStore().find('valueandstate',oValue.name+'_'+oValue.state); if (oRecordState!=null) this.grids.lvlRoomStateState.getSelectionModel().select(oRecordState); - + } break; } @@ -3977,7 +4031,7 @@ Ext.define('DSS.component.TriggerConfigurator', { } if (oValue.name=='fire') { if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',6,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',6,false,false,true),true); this.constructGridLvlPanic(); } var oRecordScene = this.grids.lvlPanic.store.find('_id', oValue.name + '_' + oValue.state,0,false,false,true); @@ -3985,18 +4039,18 @@ Ext.define('DSS.component.TriggerConfigurator', { this.grids.lvlPanic.getSelectionModel().select(oRecordScene,true); } else { if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',5,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',5,false,false,true),true); this.constructGridLvlWeather(); } var oRecordScene = this.grids.lvlWeather.store.find('_id', oValue.name + '_' + oValue.state,0,false,false,true); if (oRecordScene != -1) - this.grids.lvlWeather.getSelectionModel().select(oRecordScene,true); + this.grids.lvlWeather.getSelectionModel().select(oRecordScene,true); } - + break; case 'zone-scene': if (oValue.zone == 0) { - + switch (oValue.scene) { case 65: case 74: @@ -4004,7 +4058,7 @@ Ext.define('DSS.component.TriggerConfigurator', { case 84: case 85: if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',6,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',6,false,false,true),true); this.constructGridLvlPanic(); } var oRecordScene = this.grids.lvlPanic.store.find('_id', oValue.scene,0,false,false,true); @@ -4015,7 +4069,7 @@ Ext.define('DSS.component.TriggerConfigurator', { case 72: case 71: if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',4,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',4,false,false,true),true); this.constructGridLvlAccess(); } var oRecordScene = this.grids.lvlAccess.store.find('_id', oValue.scene,0,false,false,true); @@ -4023,21 +4077,21 @@ Ext.define('DSS.component.TriggerConfigurator', { this.grids.lvlAccess.getSelectionModel().select(oRecordScene,true); break; } - - - + + + } else { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',0,false,false,true),true); - if (!fGridConstructed) { + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',0,false,false,true),true); + if (!fGridConstructed) { this.constructGridLvlRoomRoom(); var oRecordZone = this.grids.lvlRoomRoom.store.find('ZoneID', oValue.zone,0,false,false,true); if (oRecordZone != -1) this.grids.lvlRoomRoom.getSelectionModel().select(oRecordZone); else { - + break; } - + if (oValue.zone == -1) this.constructGridLvlGroup(0); else @@ -4048,7 +4102,7 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oRecordGroup != -1) this.grids.lvlGroup.getSelectionModel().select(oRecordGroup,true); else { - + break; } } else { @@ -4056,7 +4110,7 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oRecordGroup != -1) this.grids.lvlGroup.getSelectionModel().select(oRecordGroup); else { - + break; } if (!fGridConstructed) { @@ -4080,19 +4134,19 @@ Ext.define('DSS.component.TriggerConfigurator', { oRecordScene++; this.grids.lvlScene.getSelectionModel().select(oRecordScene,true); } else { - + break; } } } } - + break; case 'device-scene': var zoneID = dss.staticDataModel.getDevice(oValue.dsuid).ZoneID; if (!fGridConstructed) { - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',1,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',1,false,false,true),true); this.constructGridLvlDeviceRoom(); var oRecordZone = this.grids.lvlDeviceRoom.store.find('ZoneID', zoneID,0,false,false,true); if (oRecordZone != -1) @@ -4103,9 +4157,9 @@ Ext.define('DSS.component.TriggerConfigurator', { var oRecordDevice = this.grids.lvlDevice.store.find('dSUID', oValue.dsuid,0,false,false,true); if (oRecordDevice != -1) this.grids.lvlDevice.getSelectionModel().select(oRecordDevice); - else + else break; - + var fConstructed = this.constructGridLvlDeviceActionClass(oValue.dsuid); var oRecordDeviceClass = this.grids.lvlDeviceActionClass.store.find('_id', 4,0,false,false,true); if (oRecordDeviceClass != -1) @@ -4124,17 +4178,17 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oDevice.buttonType==65) { switch (oValue.scene) { case 15: - var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1004,0,false,false,true); + var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1004,0,false,false,true); if (iIndex!=-1) this.grids.lvlDeviceAction.getSelectionModel().select(iIndex,true); break; case 50: - var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1006,0,false,false,true); + var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1006,0,false,false,true); if (iIndex!=-1) this.grids.lvlDeviceAction.getSelectionModel().select(iIndex,true); break; case 51: - var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1005,0,false,false,true); + var iIndex = this.grids.lvlDeviceAction.store.find('_id', 1005,0,false,false,true); if (iIndex!=-1) this.grids.lvlDeviceAction.getSelectionModel().select(iIndex,true); break; @@ -4146,7 +4200,7 @@ Ext.define('DSS.component.TriggerConfigurator', { case 'custom-event': if (!fGridConstructed) this.constructGridLvlHigh(); - this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',2,false,false,true),true); + this.grids.lvl1.getSelectionModel().select(this.grids.lvl1.store.find('_id',2,false,false,true),true); var oRecord = this.grids.lvlHighLevelEvent.store.find('_id', oValue.event,0,false,false,true); if (oRecord != -1) this.grids.lvlHighLevelEvent.getSelectionModel().select(oRecord,true); @@ -4178,69 +4232,74 @@ Ext.define('DSS.component.TriggerConfigurator', { var oReturnValue = []; try { var oSelectionLVL1 = this.grids.lvl1.getSelectionModel().getSelection(); - for ( var iIndex = 0; iIndex < oSelectionLVL1.length; iIndex++) { - + for ( var iIndex = 0; oSelectionLVL1 && iIndex < oSelectionLVL1.length; iIndex++) { + if (oSelectionLVL1[iIndex].get('_id') == 4) { // access trigger var oSelectionScene = this.grids.lvlAccess.getSelectionModel().getSelection(); - - for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { - if (oSelectionScene[kIndex].get('_id')<1000) { - var oObject = { - type : 'zone-scene', - zone : 0, - group : 0, - scene : oSelectionScene[kIndex].get('_id') - }; - oReturnValue.push(oObject); - } else { - var oObject = { - type : 'undo-zone-scene', - zone : 0, - group : 0, - scene : oSelectionScene[kIndex].get('_id')-1000 - }; - oReturnValue.push(oObject); - } + if (oSelectionScene) { + for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { + if (oSelectionScene[kIndex].get('_id')<1000) { + var oObject = { + type : 'zone-scene', + zone : 0, + group : 0, + scene : oSelectionScene[kIndex].get('_id') + }; + oReturnValue.push(oObject); + } else { + var oObject = { + type : 'undo-zone-scene', + zone : 0, + group : 0, + scene : oSelectionScene[kIndex].get('_id')-1000 + }; + oReturnValue.push(oObject); + } + } } } if (oSelectionLVL1[iIndex].get('_id') == 9) { var oSelectionScene = this.grids.lvlRoomStateState.getSelectionModel().getSelection(); // zonestate - // name, state : 'active', 'inactive' - for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { - var sValue=oSelectionScene[kIndex].get('value'); - var stateName=oSelectionScene[kIndex].get('stateid'); - var oObject = { - type : 'state-change', - name : stateName, - state : sValue - }; - oReturnValue.push(oObject); + // name, state : 'active', 'inactive' + if (oSelectionScene) { + for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { + var sValue=oSelectionScene[kIndex].get('value'); + var stateName=oSelectionScene[kIndex].get('stateid'); + var oObject = { + type : 'state-change', + name : stateName, + state : sValue + }; + oReturnValue.push(oObject); + } } - } + } if (oSelectionLVL1[iIndex].get('_id') == 11) { var oSelectionScene = this.grids.lvlClusterStateState.getSelectionModel().getSelection(); // clusterstate // name, state : 'active', 'inactive' - for (var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { - var sValue = oSelectionScene[kIndex].get('value'); - var stateName = oSelectionScene[kIndex].get('stateid'); - var oObject = { - type : 'state-change', - name : stateName, - state : sValue - }; - oReturnValue.push(oObject); + if (oSelectionScene) { + for (var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { + var sValue = oSelectionScene[kIndex].get('value'); + var stateName = oSelectionScene[kIndex].get('stateid'); + var oObject = { + type : 'state-change', + name : stateName, + state : sValue + }; + oReturnValue.push(oObject); + } } } if (oSelectionLVL1[iIndex].get('_id') == 8) { var stateName = this.grids.lvlUserstate.getSelectionModel().getSelection()[0].get('_id'); var stateType = this.grids.lvlUserstate.getSelectionModel().getSelection()[0].get('type'); var stateValue = this.grids.lvlUserstateValue.getSelectionModel().getSelection()[0].get('_id'); - + // usertate - // name, state : 'active', 'inactive' + // name, state : 'active', 'inactive' if ((stateType=='zone-sensor-states')||(stateType=='device-sensor-states')) { var oObject = { type : 'state-change', @@ -4252,78 +4311,82 @@ Ext.define('DSS.component.TriggerConfigurator', { var oObject = { type : 'addon-state-change', name : stateName, - state : stateValue, + state : stateValue, "addon-id":"system-addon-user-defined-states", "addonId":"system-addon-user-defined-states" }; oReturnValue.push(oObject); } - } + } if (oSelectionLVL1[iIndex].get('_id') == 5) { var oSelectionScene = this.grids.lvlWeather.getSelectionModel().getSelection(); // weather - // name, state : 'active', 'inactive' - for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { - var sValue=oSelectionScene[kIndex].get('_id'); - if (sValue !== 'sun') { - var stateName=sValue.substr(0,sValue.lastIndexOf('_')); - var stateValue=sValue.substr(sValue.lastIndexOf('_')+1); - var oObject = { - type : 'state-change', - name : stateName, - state : stateValue - }; - } else { - var oSelectionSunProtection = this.grids.lvlSunProtection.getSelectionModel().getSelection(); - for ( var pIndex = 0; pIndex < oSelectionSunProtection.length; pIndex++) { - var eventName = oSelectionSunProtection[pIndex].get('eventName'); - var direction = oSelectionSunProtection[pIndex].get('direction'); - var value = oSelectionSunProtection[pIndex].get('value'); - var oObject = { - type : 'event', - name : eventName, - parameter : { - value : value, - direction : direction - } - }; + // name, state : 'active', 'inactive' + if (oSelectionScene) { + for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { + var sValue=oSelectionScene[kIndex].get('_id'); + if (sValue !== 'sun') { + var stateName=sValue.substr(0,sValue.lastIndexOf('_')); + var stateValue=sValue.substr(sValue.lastIndexOf('_')+1); + var oObject = { + type : 'state-change', + name : stateName, + state : stateValue + }; + } else { + var oSelectionSunProtection = this.grids.lvlSunProtection.getSelectionModel().getSelection(); + for ( var pIndex = 0; pIndex < oSelectionSunProtection.length; pIndex++) { + var eventName = oSelectionSunProtection[pIndex].get('eventName'); + var direction = oSelectionSunProtection[pIndex].get('direction'); + var value = oSelectionSunProtection[pIndex].get('value'); + var oObject = { + type : 'event', + name : eventName, + parameter : { + value : value, + direction : direction + } + }; + } } + oReturnValue.push(oObject); } - oReturnValue.push(oObject); } } if (oSelectionLVL1[iIndex].get('_id') == 6) { var oSelectionScene = this.grids.lvlPanic.getSelectionModel().getSelection(); // panic - for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { - if ((""+oSelectionScene[kIndex].get('_id')).indexOf('_')>=0) { - var sValue=oSelectionScene[kIndex].get('_id'); - var stateName=sValue.substr(0,sValue.lastIndexOf('_')); - var stateValue=sValue.substr(sValue.lastIndexOf('_')+1); - var oObject = { - type : 'state-change', - name : stateName, - state : stateValue + if (oSelectionScene) { + for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { + if ((""+oSelectionScene[kIndex].get('_id')).indexOf('_')>=0) { + var sValue=oSelectionScene[kIndex].get('_id'); + var stateName=sValue.substr(0,sValue.lastIndexOf('_')); + var stateValue=sValue.substr(sValue.lastIndexOf('_')+1); + var oObject = { + type : 'state-change', + name : stateName, + state : stateValue + }; + oReturnValue.push(oObject); + } else + if (oSelectionScene[kIndex].get('_id')<1000) { + var oObject = { + type : 'zone-scene', + zone : 0, + group : 0, + scene : oSelectionScene[kIndex].get('_id') }; - oReturnValue.push(oObject); - } else - if (oSelectionScene[kIndex].get('_id')<1000) { - var oObject = { - type : 'zone-scene', - zone : 0, - group : 0, - scene : oSelectionScene[kIndex].get('_id') - }; - oReturnValue.push(oObject); - } else { - var oObject = { - type : 'undo-zone-scene', - zone : 0, - group : 0, - scene : oSelectionScene[kIndex].get('_id')-1000 - }; - oReturnValue.push(oObject); - } + oReturnValue.push(oObject); + } else { + var oObject = { + type : 'undo-zone-scene', + zone : 0, + group : 0, + scene : oSelectionScene[kIndex].get('_id')-1000 + }; + oReturnValue.push(oObject); + } + } } } if (oSelectionLVL1[iIndex].get('_id') == 7) { @@ -4360,43 +4423,47 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oSelectionLVL1[iIndex].get('_id') == 0) { // zone scene var iZoneID = this.grids.lvlRoomRoom.getSelectionModel().getSelection()[0].get('ZoneID'); var oSelectionGroup = this.grids.lvlGroup.getSelectionModel().getSelection(); - for ( var jIndex = 0; jIndex < oSelectionGroup.length; jIndex++) { - if (oSelectionGroup[jIndex].get('group') == null) { - var oObject = { - type : 'zone-scene', - zone : iZoneID, - group : 0, - scene : oSelectionGroup[jIndex].get('_id') - }; - oReturnValue.push(oObject); - } else { - var iGroupID = oSelectionGroup[jIndex].get('group'); - var oSelectionScene = this.grids.lvlScene.getSelectionModel().getSelection(); - for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { - - if (oSelectionScene[kIndex].get('stateid')!='') { - oObject = { - type : 'state-change', - name : oSelectionScene[kIndex].get('stateid'), - state : oSelectionScene[kIndex].get('value') - }; - oReturnValue.push(oObject); - } else { - - var oObject = { - type : 'zone-scene', - zone : iZoneID, - group : iGroupID, - scene : oSelectionScene[kIndex].get('_id') - }; - if (oSelectionScene[kIndex].get('forced')!=null) - if (oSelectionScene[kIndex].get('forced')!="") - oObject.forced=oSelectionScene[kIndex].get('forced'); - - //else - // oObject.forced=false; - oReturnValue.push(oObject); - } + if (oSelectionGroup) { + for ( var jIndex = 0; jIndex < oSelectionGroup.length; jIndex++) { + if (oSelectionGroup[jIndex].get('group') == null) { + var oObject = { + type : 'zone-scene', + zone : iZoneID, + group : 0, + scene : oSelectionGroup[jIndex].get('_id') + }; + oReturnValue.push(oObject); + } else { + var iGroupID = oSelectionGroup[jIndex].get('group'); + var oSelectionScene = this.grids.lvlScene.getSelectionModel().getSelection(); + if (oSelectionScene) { + for ( var kIndex = 0; kIndex < oSelectionScene.length; kIndex++) { + + if (oSelectionScene[kIndex].get('stateid')!='') { + oObject = { + type : 'state-change', + name : oSelectionScene[kIndex].get('stateid'), + state : oSelectionScene[kIndex].get('value') + }; + oReturnValue.push(oObject); + } else { + + var oObject = { + type : 'zone-scene', + zone : iZoneID, + group : iGroupID, + scene : oSelectionScene[kIndex].get('_id') + }; + if (oSelectionScene[kIndex].get('forced')!=null) + if (oSelectionScene[kIndex].get('forced')!="") + oObject.forced=oSelectionScene[kIndex].get('forced'); + + //else + // oObject.forced=false; + oReturnValue.push(oObject); + } + } + } } } } @@ -4404,54 +4471,63 @@ Ext.define('DSS.component.TriggerConfigurator', { if (oSelectionLVL1[iIndex].get('_id') == 1) { // taster var oDSID = this.grids.lvlDevice.getSelectionModel().getSelection()[0].get('dSID'); var oDSUID = this.grids.lvlDevice.getSelectionModel().getSelection()[0].get('dSUID'); - - + + var actionType=this.grids.lvlDeviceActionClass.getSelectionModel().getSelection()[0].get('_id'); if (actionType==1) { //device events - for ( var jIndex = 0; jIndex < this.grids.lvlDeviceEventEvent.getSelectionModel().getSelection().length; jIndex++) { - var event=this.grids.lvlDeviceEventEvent.getSelectionModel().getSelection()[jIndex].get('event'); - var oObject = { - type : 'device-named-event', - dsuid : oDSUID, - id : event - }; - oReturnValue.push(oObject); - } + var selection = this.grids.lvlDeviceEventEvent.getSelectionModel().getSelection(); + if (selection) { + for ( var jIndex = 0; jIndex < selection.length; jIndex++) { + var event=selection[jIndex].get('event'); + var oObject = { + type : 'device-named-event', + dsuid : oDSUID, + id : event + }; + oReturnValue.push(oObject); + } + } } if (actionType==2) { //device actions - for ( var jIndex = 0; jIndex < this.grids.lvlDeviceActionAction.getSelectionModel().getSelection().length; jIndex++) { - var action=this.grids.lvlDeviceActionAction.getSelectionModel().getSelection()[jIndex].get('action'); - var oObject = { - type : 'device-named-action', - dsuid : oDSUID, - id : action - }; - oReturnValue.push(oObject); - } + var selection = this.grids.lvlDeviceActionAction.getSelectionModel().getSelection(); + if (selection) { + for ( var jIndex = 0; jIndex < selection.length; jIndex++) { + var action=selection[jIndex].get('action'); + var oObject = { + type : 'device-named-action', + dsuid : oDSUID, + id : action + }; + oReturnValue.push(oObject); + } + } } if (actionType==3) { //device states - for ( var jIndex = 0; jIndex < this.grids.lvlDeviceStateValue.getSelectionModel().getSelection().length; jIndex++) { - var value=this.grids.lvlDeviceStateValue.getSelectionModel().getSelection()[jIndex].get('type'); - var state=this.grids.lvlDeviceStateValue.getSelectionModel().getSelection()[jIndex].get('selector'); - var oObject = { - type : 'state-change', - name : state, - state : value - }; - oReturnValue.push(oObject); - } + var selection = this.grids.lvlDeviceStateValue.getSelectionModel().getSelection(); + if (selection) { + for ( var jIndex = 0; jIndex < selection.length; jIndex++) { + var value=selection[jIndex].get('type'); + var state=selection[jIndex].get('selector'); + var oObject = { + type : 'state-change', + name : state, + state : value + }; + oReturnValue.push(oObject); + } + } } if (actionType==4) { var oSelectionDeviceAction = this.grids.lvlDeviceAction.getSelectionModel().getSelection(); - + var oDevice = dss.staticDataModel.getDevice(oDSUID); - - - for ( var jIndex = 0; jIndex < oSelectionDeviceAction.length; jIndex++) { - + + + for ( var jIndex = 0; oSelectionDeviceAction && jIndex < oSelectionDeviceAction.length; jIndex++) { + var fSpecial=false; if (oDevice.specialActions.triggers!=null) { if (oDevice.specialActions.triggers.deviceMsg!=null) { @@ -4478,7 +4554,7 @@ Ext.define('DSS.component.TriggerConfigurator', { type : 'device-action', action : oDevice.specialActions.triggers.deviceAction[sKey].id }; - oReturnValue.push(oObject); + oReturnValue.push(oObject); } } } @@ -4492,13 +4568,13 @@ Ext.define('DSS.component.TriggerConfigurator', { type : 'device-action', action : oDevice.specialActions.triggers.deviceActions[sKey].action }; - oReturnValue.push(oObject); + oReturnValue.push(oObject); } } } - + } - if (!fSpecial) { + if (!fSpecial) { if ((oSelectionDeviceAction[jIndex].get('_id') > 15) && (oSelectionDeviceAction[jIndex].get('_id') < 1000)) { var oObject = { dsid : oDSID, @@ -4673,7 +4749,7 @@ Ext.define('DSS.component.TriggerConfigurator', { msg : 3 }; oReturnValue.push(oObject1); - + } else if (oSelectionDeviceAction[jIndex].get('_id') == 1106) { var oObject1 = { dsid : oDSID, @@ -4768,32 +4844,35 @@ Ext.define('DSS.component.TriggerConfigurator', { } if (oSelectionLVL1[iIndex].get('_id') == 2) { // highlvl var oSelectionHighLVL = this.grids.lvlHighLevelEvent.getSelectionModel().getSelection(); - for ( var jIndex = 0; jIndex < oSelectionHighLVL.length; jIndex++) { - var oObject = { - type : 'custom-event', - event : oSelectionHighLVL[jIndex].get('_id') - }; - oReturnValue.push(oObject); + if (oSelectionHighLVL) { + for ( var jIndex = 0; jIndex < oSelectionHighLVL.length; jIndex++) { + var oObject = { + type : 'custom-event', + event : oSelectionHighLVL[jIndex].get('_id') + }; + oReturnValue.push(oObject); + } } } if (oSelectionLVL1[iIndex].get('_id') == 3) { // sensor var oDSID = this.grids.lvlSensorDevice.getSelectionModel().getSelection()[0].get('dSID'); var oDSUID = this.grids.lvlSensorDevice.getSelectionModel().getSelection()[0].get('dSUID'); var oSelectionMSG = this.grids.lvlSensorMessage.getSelectionModel().getSelection(); - for ( var jIndex = 0; jIndex < oSelectionMSG.length; jIndex++) { - var oObject = { - type : 'device-sensor', - dsid :oDSID, - dsuid :oDSUID, - eventid : oSelectionMSG[jIndex].get('_id') - }; - oReturnValue.push(oObject); + if (oSelectionMSG) { + for ( var jIndex = 0; jIndex < oSelectionMSG.length; jIndex++) { + var oObject = { + type : 'device-sensor', + dsid :oDSID, + dsuid :oDSUID, + eventid : oSelectionMSG[jIndex].get('_id') + }; + oReturnValue.push(oObject); + } } } } - } + } catch (e){} return oReturnValue; } }); // DSS.component.Trigger - diff --git a/js/dss/dss-components/dss-weekday-selection.js b/js/dss/dss-components/dss-weekday-selection.js index ee5871b5..56ba8ba4 100644 --- a/js/dss/dss-components/dss-weekday-selection.js +++ b/js/dss/dss-components/dss-weekday-selection.js @@ -19,7 +19,7 @@ Ext.define('DSS.component.WeekdaySelection', { oControlSO:null, fOnlyWeekdays:false, setHeight:function(iHeight) { - + }, updateDisplay:function(){ var fMo=this.up().oControlMO.pressed; @@ -37,43 +37,43 @@ Ext.define('DSS.component.WeekdaySelection', { sText+=_('MO') + ', '; sSingular=_('on monday'); } - + if (fDi) { iCount++; sText+=_('TU') + ', '; - sSingular=_('on tuesday'); + sSingular=_('on tuesday'); } - + if (fMi) { iCount++; sText+=_('WE') + ', '; - sSingular=_('on wednesday'); + sSingular=_('on wednesday'); } - + if (fDo) { iCount++; sText+=_('TH') + ', '; - sSingular=_('on thursday'); + sSingular=_('on thursday'); } - + if (fFr) { iCount++; sText+=_('FR') + ', '; - sSingular=_('on friday'); + sSingular=_('on friday'); } - + if (fSa) { iCount++; sText+=_('SA') + ', '; - sSingular=_('on saturday'); + sSingular=_('on saturday'); } - + if (fSo) { iCount++; sText+=_('SU') + ', '; - sSingular=_('on sunday'); + sSingular=_('on sunday'); } - + if (iCount==2) if (fSa) if (fSo) { @@ -95,13 +95,13 @@ Ext.define('DSS.component.WeekdaySelection', { if (iCount==1) this.up().lblAnzeige.setValue("("+sSingular+")"); else - this.up().lblAnzeige.setValue("("+sText.substring(0,sText.length-2)+")"); + this.up().lblAnzeige.setValue("("+sText.substring(0,sText.length-2)+")"); this.up().fireEvent('change',this.up().getValue()); }, constructor : function(config) { if (config.fOnlyWeekdays!=null) this.fOnlyWeekdays=config.fOnlyWeekdays; - + this.lblAnzeige = Ext.create('Ext.form.field.Display', { border : 0, width:200, @@ -128,7 +128,7 @@ Ext.define('DSS.component.WeekdaySelection', { } } }); - + this.oControlMO = Ext.create('Ext.button.Button', { width : 26, margin : '0 3 0 0', @@ -178,7 +178,7 @@ Ext.define('DSS.component.WeekdaySelection', { enableToggle : true, listeners: {toggle:this.updateDisplay} }); - + this.oControlDate = Ext.create('Ext.form.field.Date', { allowBlank : false, blankText : _('This field is required'), @@ -204,7 +204,7 @@ Ext.define('DSS.component.WeekdaySelection', { fieldLabel : config.label, labelWidth : config.labelWidth, border : 1, - layout :{type: 'hbox',align:'top'}, + layout :{type: 'hbox',align:'top'}, margin : '10 0 0 10', items : [this.oControlType, this.oControlMO, this.oControlDI, this.oControlMI, this.oControlDO, this.oControlFR, this.oControlSA, this.oControlSO,this.lblAnzeige,this.oControlDate] }); @@ -243,7 +243,9 @@ Ext.define('DSS.component.WeekdaySelection', { if (value.recurrenceBase=="absolute") { this.toggleRecurring(false); this.oControlType.setActiveItem('chk-static'); - this.oControlDate.setValue(new Date(value.timeArray[0])); + if (value.timeArray && value.timeArray.length) { + this.oControlDate.setValue(new Date(value.timeArray[0])); + } } else { this.toggleRecurring(true); if (!this.fOnlyWeekdays) @@ -255,29 +257,31 @@ Ext.define('DSS.component.WeekdaySelection', { this.oControlFR.toggle(false); this.oControlSA.toggle(false); this.oControlSO.toggle(false); - for ( var jIndex = 0; jIndex < value.timeArray.length; jIndex++) { - var dataFragment=value.timeArray[jIndex]; - if (dataFragment == 'MO') - this.oControlMO.toggle(true); - if (dataFragment == 'TU') - this.oControlDI.toggle(true); - if (dataFragment == 'WE') - this.oControlMI.toggle(true); - if (dataFragment == 'TH') - this.oControlDO.toggle(true); - if (dataFragment == 'FR') - this.oControlFR.toggle(true); - if (dataFragment == 'SA') - this.oControlSA.toggle(true); - if (dataFragment == 'SU') - this.oControlSO.toggle(true); + if (value.timeArray) { + for ( var jIndex = 0; jIndex < value.timeArray.length; jIndex++) { + var dataFragment=value.timeArray[jIndex]; + if (dataFragment == 'MO') + this.oControlMO.toggle(true); + if (dataFragment == 'TU') + this.oControlDI.toggle(true); + if (dataFragment == 'WE') + this.oControlMI.toggle(true); + if (dataFragment == 'TH') + this.oControlDO.toggle(true); + if (dataFragment == 'FR') + this.oControlFR.toggle(true); + if (dataFragment == 'SA') + this.oControlSA.toggle(true); + if (dataFragment == 'SU') + this.oControlSO.toggle(true); + } } } }, isValid:function() { if (this.oControlType.getActiveItem().getItemId()=="chk-static") { return this.oControlDate.validate(); - } else { + } else { if (this.oControlMO.pressed) return true; if (this.oControlDI.pressed) @@ -300,7 +304,7 @@ Ext.define('DSS.component.WeekdaySelection', { if (this.oControlType.getActiveItem().getItemId()=="chk-static") { oValue={timeArray:[],recurrenceBase:"absolute"}; oValue.timeArray.push(Ext.Date.format(this.oControlDate.getValue(), "Y-m-d")); - } else { + } else { oValue={timeArray:[],recurrenceBase:"weekly"}; if (this.oControlMO.pressed) oValue.timeArray.push('MO'); diff --git a/js/dss/dss-datamodel.js b/js/dss/dss-datamodel.js index f6305fb0..8e9ad603 100644 --- a/js/dss/dss-datamodel.js +++ b/js/dss/dss-datamodel.js @@ -65,7 +65,7 @@ dss.validValue = { completlyWrong : 2 }; -dss.whState = +dss.whState = { WH_Invalid : 0, WH_Closed : 1, @@ -83,7 +83,7 @@ dss.getCookie = function(cname) { if (c.indexOf(name) == 0) return c.substring(name.length,c.length); } return ""; -}; +}; dss.ajaxSyncRequest = function(surl, params) { var xmlHttp = null; @@ -111,7 +111,7 @@ dss.ajaxSyncRequest = function(surl, params) { } if (xmlHttp) { xmlHttp.open('GET', surl + paramString, false); - if (csrf!="") + if (csrf!="") xmlHttp.setRequestHeader("X-Csrf-Token", csrf); xmlHttp.send(null); return xmlHttp.responseText.replace(/-nan/g, '0'); @@ -149,7 +149,7 @@ dss.ajaxAssyncRequestWithoutAnswer = function(surl, params, callback) { callback(xmlHttp.responseText.replace(/-nan/g, '0')); }; xmlHttp.open('GET', surl + paramString, true); - if (csrf!="") + if (csrf!="") xmlHttp.setRequestHeader("X-Csrf-Token", csrf); xmlHttp.send(null); } @@ -186,7 +186,7 @@ dss.ajaxAssyncRequestWithoutAnswerPost = function(surl, params, callback) { callback(xmlHttp.responseText.replace(/-nan/g, '0')); }; xmlHttp.open('POST', surl, true); - if (csrf!="") + if (csrf!="") xmlHttp.setRequestHeader("X-Csrf-Token", csrf); xmlHttp.send(paramString); } @@ -276,30 +276,36 @@ dss.staticDataModel.getUserStates = function() { }; dss.staticDataModel.getUserStateValueName = function (state) { - for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) - if (dss.staticDataModel.userStates[iIndex].name==state) { - if (dss.staticDataModel.userStates[iIndex].value==1) - return dss.staticDataModel.userStates[iIndex].setName; - if (dss.staticDataModel.userStates[iIndex].value==2) - return dss.staticDataModel.userStates[iIndex].resetName; - } + if (dss.staticDataModel.userStates) { + for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) + if (dss.staticDataModel.userStates[iIndex].name==state) { + if (dss.staticDataModel.userStates[iIndex].value==1) + return dss.staticDataModel.userStates[iIndex].setName; + if (dss.staticDataModel.userStates[iIndex].value==2) + return dss.staticDataModel.userStates[iIndex].resetName; + } + } }; dss.staticDataModel.getUserStateValue = function (state) { - for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) - if (dss.staticDataModel.userStates[iIndex].name==state) { - if (dss.staticDataModel.userStates[iIndex].value==1) - return true; - if (dss.staticDataModel.userStates[iIndex].value==2) - return false; - } + if (dss.staticDataModel.userStates) { + for (var iIndex=0;iIndex<dss.staticDataModel.userStates.length;iIndex++) + if (dss.staticDataModel.userStates[iIndex].name==state) { + if (dss.staticDataModel.userStates[iIndex].value==1) + return true; + if (dss.staticDataModel.userStates[iIndex].value==2) + return false; + } + } }; dss.staticDataModel.getHLENameFromId = function(id) { - for (var iIndex = 0; iIndex < dss.staticDataModel.HLECache.length; iIndex++) { - if (dss.staticDataModel.HLECache[iIndex].id == id) - return dss.staticDataModel.HLECache[iIndex].name; - } + if (dss.staticDataModel.HLECache) { + for (var iIndex = 0; iIndex < dss.staticDataModel.HLECache.length; iIndex++) { + if (dss.staticDataModel.HLECache[iIndex].id == id) + return dss.staticDataModel.HLECache[iIndex].name; + } + } return id; }; @@ -332,7 +338,7 @@ dss.staticDataModel.initHeatingCache = function() { var sString = dss.ajaxSyncRequest('/json/apartment/getTemperatureControlConfig', {}); var result = Ext.JSON.decode(sString); - if (result.ok) { + if (result.ok && result.result && result.result.zones) { for (var iIndex = 0; iIndex < result.result.zones.length; iIndex++) { var zoneNode = result.result.zones[iIndex]; dss.staticDataModel.heating[zoneNode.id] = { @@ -387,127 +393,133 @@ dss.staticDataModel.initSpecialActions = function() { var resultObj = Ext.JSON.decode(sResult); if (resultObj.ok) { dss.staticDataModel.specialAction={}; - for (var iIndex=0;iIndex<resultObj.result.data.length;iIndex++) { - var gtin=resultObj.result.data[iIndex].gtin; - var type=resultObj.result.data[iIndex].type; - var elementid=resultObj.result.data[iIndex].id; - var value=resultObj.result.data[iIndex].value; - if (dss.staticDataModel.specialAction[gtin]==null) - dss.staticDataModel.specialAction[gtin]={}; - switch (type) { - case "0": { - if (dss.staticDataModel.specialAction[gtin].triggers==null) - dss.staticDataModel.specialAction[gtin].triggers={}; - switch (value) { - case "zone-scene": - if (dss.staticDataModel.specialAction[gtin].triggers.zoneScene==null) - dss.staticDataModel.specialAction[gtin].triggers.zoneScene={}; - dss.staticDataModel.specialAction[gtin].triggers.zoneScene[elementid]={}; - break; - case "device": { - if (dss.staticDataModel.specialAction[gtin].triggers.deviceMsg==null) - dss.staticDataModel.specialAction[gtin].triggers.deviceMsg={}; - dss.staticDataModel.specialAction[gtin].triggers.deviceMsg[elementid]={}; - break; - } - case "device-binary-input": - // not supportet yet -> RK ist hier zu faul vorab zu denken - if (dss.staticDataModel.specialAction[gtin].triggers.binaryInputs==null) - dss.staticDataModel.specialAction[gtin].triggers.binaryInputs={}; - dss.staticDataModel.specialAction[gtin].triggers.binaryInputs[elementid]={}; - break; - case "device-sensor": - if (dss.staticDataModel.specialAction[gtin].triggers.deviceEvents==null) - dss.staticDataModel.specialAction[gtin].triggers.deviceEvents={}; - dss.staticDataModel.specialAction[gtin].triggers.deviceEvents[elementid]={}; - break; - case "device-action": { - if (dss.staticDataModel.specialAction[gtin].triggers.deviceActions==null) - dss.staticDataModel.specialAction[gtin].triggers.deviceActions={}; - dss.staticDataModel.specialAction[gtin].triggers.deviceActions[elementid]={}; - break; - } - } - break; - } - case "1": { - if (dss.staticDataModel.specialAction[gtin].actions==null) - dss.staticDataModel.specialAction[gtin].actions={}; - switch (value) { - case "zone-action": - if (dss.staticDataModel.specialAction[gtin].actions.zoneScene==null) - dss.staticDataModel.specialAction[gtin].actions.zoneScene={}; - dss.staticDataModel.specialAction[gtin].actions.zoneScene[elementid]={}; - break; - case "device-action-scene":{ - if (dss.staticDataModel.specialAction[gtin].actions.deviceActions==null) - dss.staticDataModel.specialAction[gtin].actions.deviceActions={}; - dss.staticDataModel.specialAction[gtin].actions.deviceActions[elementid]={}; - break; - } - case "device-action-value":{ - if (dss.staticDataModel.specialAction[gtin].actions.deviceActions==null) - dss.staticDataModel.specialAction[gtin].actions.deviceActions={}; - dss.staticDataModel.specialAction[gtin].actions.deviceActions[elementid]={}; - break; - } - } - break; - } - case "2": { - if (dss.staticDataModel.specialAction[gtin].conditions==null) - dss.staticDataModel.specialAction[gtin].conditions={}; - switch (value) { - case "sensor-event": - // not supportet yet -> RK ist hier zu faul vorab zu denken - if (dss.staticDataModel.specialAction[gtin].conditions.akmEvent==null) - dss.staticDataModel.specialAction[gtin].conditions.akmEvent={}; - dss.staticDataModel.specialAction[gtin].conditions.akmEvent[elementid]={}; - break; - } - break; - } - } - } + if (resultObj.result && resultObj.result.data) { + for (var iIndex=0;iIndex<resultObj.result.data.length;iIndex++) { + var gtin=resultObj.result.data[iIndex].gtin; + var type=resultObj.result.data[iIndex].type; + var elementid=resultObj.result.data[iIndex].id; + var value=resultObj.result.data[iIndex].value; + if (dss.staticDataModel.specialAction[gtin]==null) + dss.staticDataModel.specialAction[gtin]={}; + switch (type) { + case "0": { + if (dss.staticDataModel.specialAction[gtin].triggers==null) + dss.staticDataModel.specialAction[gtin].triggers={}; + switch (value) { + case "zone-scene": + if (dss.staticDataModel.specialAction[gtin].triggers.zoneScene==null) + dss.staticDataModel.specialAction[gtin].triggers.zoneScene={}; + dss.staticDataModel.specialAction[gtin].triggers.zoneScene[elementid]={}; + break; + case "device": { + if (dss.staticDataModel.specialAction[gtin].triggers.deviceMsg==null) + dss.staticDataModel.specialAction[gtin].triggers.deviceMsg={}; + dss.staticDataModel.specialAction[gtin].triggers.deviceMsg[elementid]={}; + break; + } + case "device-binary-input": + // not supportet yet -> RK ist hier zu faul vorab zu denken + if (dss.staticDataModel.specialAction[gtin].triggers.binaryInputs==null) + dss.staticDataModel.specialAction[gtin].triggers.binaryInputs={}; + dss.staticDataModel.specialAction[gtin].triggers.binaryInputs[elementid]={}; + break; + case "device-sensor": + if (dss.staticDataModel.specialAction[gtin].triggers.deviceEvents==null) + dss.staticDataModel.specialAction[gtin].triggers.deviceEvents={}; + dss.staticDataModel.specialAction[gtin].triggers.deviceEvents[elementid]={}; + break; + case "device-action": { + if (dss.staticDataModel.specialAction[gtin].triggers.deviceActions==null) + dss.staticDataModel.specialAction[gtin].triggers.deviceActions={}; + dss.staticDataModel.specialAction[gtin].triggers.deviceActions[elementid]={}; + break; + } + } + break; + } + case "1": { + if (dss.staticDataModel.specialAction[gtin].actions==null) + dss.staticDataModel.specialAction[gtin].actions={}; + switch (value) { + case "zone-action": + if (dss.staticDataModel.specialAction[gtin].actions.zoneScene==null) + dss.staticDataModel.specialAction[gtin].actions.zoneScene={}; + dss.staticDataModel.specialAction[gtin].actions.zoneScene[elementid]={}; + break; + case "device-action-scene":{ + if (dss.staticDataModel.specialAction[gtin].actions.deviceActions==null) + dss.staticDataModel.specialAction[gtin].actions.deviceActions={}; + dss.staticDataModel.specialAction[gtin].actions.deviceActions[elementid]={}; + break; + } + case "device-action-value":{ + if (dss.staticDataModel.specialAction[gtin].actions.deviceActions==null) + dss.staticDataModel.specialAction[gtin].actions.deviceActions={}; + dss.staticDataModel.specialAction[gtin].actions.deviceActions[elementid]={}; + break; + } + } + break; + } + case "2": { + if (dss.staticDataModel.specialAction[gtin].conditions==null) + dss.staticDataModel.specialAction[gtin].conditions={}; + switch (value) { + case "sensor-event": + // not supportet yet -> RK ist hier zu faul vorab zu denken + if (dss.staticDataModel.specialAction[gtin].conditions.akmEvent==null) + dss.staticDataModel.specialAction[gtin].conditions.akmEvent={}; + dss.staticDataModel.specialAction[gtin].conditions.akmEvent[elementid]={}; + break; + } + break; + } + } + } + } } - + var sResult = dss.ajaxSyncRequest('/json/database/query', { 'sql' : "select parameter.value,parameter.name,parameter.element_id from parameter where not(parameter.name='type')", 'database' : 'system-addon-scene-responder' }); - + var resultObj = Ext.JSON.decode(sResult); if (resultObj.ok) { for (var gtin in dss.staticDataModel.specialAction) for (var type in dss.staticDataModel.specialAction[gtin]) for (var subtype in dss.staticDataModel.specialAction[gtin][type]) for (var elementID in dss.staticDataModel.specialAction[gtin][type][subtype]) { - for (var iIndex=0;iIndex<resultObj.result.data.length;iIndex++) { - if (elementID==resultObj.result.data[iIndex].element_id) { - dss.staticDataModel.specialAction[gtin][type][subtype][elementID][resultObj.result.data[iIndex].name]=resultObj.result.data[iIndex].value; - } - } + if (resultObj.result && resultObj.result.data) { + for (var iIndex=0;iIndex<resultObj.result.data.length;iIndex++) { + if (elementID==resultObj.result.data[iIndex].element_id) { + dss.staticDataModel.specialAction[gtin][type][subtype][elementID][resultObj.result.data[iIndex].name]=resultObj.result.data[iIndex].value; + } + } + } } } - + sResult=dss.ajaxSyncRequest('/json/database/query', { 'sql' : "select name.name,name.langcode,name.element_id from name", 'database' : 'system-addon-scene-responder' }); - + var resultObj = Ext.JSON.decode(sResult); if (resultObj.ok) { for (var gtin in dss.staticDataModel.specialAction) for (var type in dss.staticDataModel.specialAction[gtin]) for (var subtype in dss.staticDataModel.specialAction[gtin][type]) for (var elementID in dss.staticDataModel.specialAction[gtin][type][subtype]) { - for (var iIndex=0;iIndex<resultObj.result.data.length;iIndex++) { - if (elementID==resultObj.result.data[iIndex].element_id) { - if (dss.staticDataModel.specialAction[gtin][type][subtype][elementID].name==null) - dss.staticDataModel.specialAction[gtin][type][subtype][elementID].name={}; - dss.staticDataModel.specialAction[gtin][type][subtype][elementID].name[resultObj.result.data[iIndex].langcode]=resultObj.result.data[iIndex].name; - } - } + if (resultObj.result && resultObj.result.data) { + for (var iIndex=0;iIndex<resultObj.result.data.length;iIndex++) { + if (elementID==resultObj.result.data[iIndex].element_id) { + if (dss.staticDataModel.specialAction[gtin][type][subtype][elementID].name==null) + dss.staticDataModel.specialAction[gtin][type][subtype][elementID].name={}; + dss.staticDataModel.specialAction[gtin][type][subtype][elementID].name[resultObj.result.data[iIndex].langcode]=resultObj.result.data[iIndex].name; + } + } + } } } @@ -515,7 +527,7 @@ dss.staticDataModel.initSpecialActions = function() { if (dss.staticDataModel.specialAction[sEANKey].actions != null) { for ( var sActionType in dss.staticDataModel.specialAction[sEANKey].actions) { for ( var sActionIndex in dss.staticDataModel.specialAction[sEANKey].actions[sActionType]) { - dss.staticDataModel.specialAction[sEANKey].actions[sActionType][sActionIndex].name = + dss.staticDataModel.specialAction[sEANKey].actions[sActionType][sActionIndex].name = dss.staticDataModel.localizeName(dss.staticDataModel.specialAction[sEANKey].actions[sActionType][sActionIndex].name); } @@ -576,7 +588,7 @@ dss.staticDataModel.initUserStateCache = function() { 'query' : '/usr/addon-states/system-addon-user-defined-states/*(name,displayName,setName,resetName,value,type)' }); var result = Ext.JSON.decode(sString); - if (result.ok) { + if (result.ok && result.result) { dss.staticDataModel.userStates = result.result["system-addon-user-defined-states"]; if (dss.staticDataModel.userStates === undefined) { dss.staticDataModel.userStates = []; @@ -616,25 +628,29 @@ dss.staticDataModel.getMeter = function(dSUID) { if (dss.staticDataModel.MeterCache === null) dss.staticDataModel.initCaches(); if (DSS.types.dsuid.isDSUID(dSUID)) { - for (var iIndex = 0; iIndex < dss.staticDataModel.MeterCache.length; iIndex++) { - if (dss.staticDataModel.MeterCache[iIndex].dSUID && (dss.staticDataModel.MeterCache[iIndex].dSUID === dSUID)) { - return dss.staticDataModel.MeterCache[iIndex]; - } - } + if (dss.staticDataModel.MeterCache) { + for (var iIndex = 0; iIndex < dss.staticDataModel.MeterCache.length; iIndex++) { + if (dss.staticDataModel.MeterCache[iIndex].dSUID && (dss.staticDataModel.MeterCache[iIndex].dSUID === dSUID)) { + return dss.staticDataModel.MeterCache[iIndex]; + } + } + } } else { // we still got a dSID so lets try whether we find a matching - for (var iIndex = 0; iIndex < dss.staticDataModel.MeterCache.length; iIndex++) { - if (dss.staticDataModel.MeterCache[iIndex].dSID && (dss.staticDataModel.MeterCache[iIndex].dSID === dSUID)) { - return dss.staticDataModel.MeterCache[iIndex]; - } else { - if (dss.staticDataModel.MeterCache[iIndex].dSUID) { - tempdSUID = DSS.types.dsuid.dsid_to_dsuid(dSUID); - if (dss.staticDataModel.MeterCache[iIndex].dSUID === tempdSUID) { - return dss.staticDataModel.MeterCache[iIndex]; - } - } - } - } + if (dss.staticDataModel.MeterCache) { + for (var iIndex = 0; iIndex < dss.staticDataModel.MeterCache.length; iIndex++) { + if (dss.staticDataModel.MeterCache[iIndex].dSID && (dss.staticDataModel.MeterCache[iIndex].dSID === dSUID)) { + return dss.staticDataModel.MeterCache[iIndex]; + } else { + if (dss.staticDataModel.MeterCache[iIndex].dSUID) { + tempdSUID = DSS.types.dsuid.dsid_to_dsuid(dSUID); + if (dss.staticDataModel.MeterCache[iIndex].dSUID === tempdSUID) { + return dss.staticDataModel.MeterCache[iIndex]; + } + } + } + } + } } return null; }; @@ -646,10 +662,12 @@ dss.staticDataModel.getMeterName = function(MeterDSUID) { dsuid : DSS.types.dsuid.shortdSUID(MeterDSUID) }); - for (var iIndex = 0; iIndex < dss.staticDataModel.MeterCache.length; iIndex++) - if (dss.staticDataModel.MeterCache[iIndex].dSUID == MeterDSUID) - if (dss.staticDataModel.MeterCache[iIndex].name != "") - return dss.staticDataModel.MeterCache[iIndex].name; + if (dss.staticDataModel.MeterCache) { + for (var iIndex = 0; iIndex < dss.staticDataModel.MeterCache.length; iIndex++) + if (dss.staticDataModel.MeterCache[iIndex].dSUID == MeterDSUID) + if (dss.staticDataModel.MeterCache[iIndex].name != "") + return dss.staticDataModel.MeterCache[iIndex].name; + } return baseName; }; @@ -668,7 +686,7 @@ dss.staticDataModel.getImagePathForState = function(stateName, stateValue) { if ((stateValue == 'inactive') || (stateValue == '2')) return dss.staticDataModel.baseImagePath + 'state/akm_service_no.png'; } - + switch (stateName.split('.')[0]) { case 'rain': if ((stateValue == 'active') || (stateValue == '1')) @@ -826,7 +844,7 @@ dss.staticDataModel.getImagePathForConditionState = function(ConditionActive) { dss.staticDataModel.getNameForState = function(stateName, stateValue) { switch (stateName) { - + case 'zone.0.group.64.status.malfunction': if (stateValue == 'active') return _('Malfunction detected'); @@ -839,7 +857,7 @@ dss.staticDataModel.getNameForState = function(stateName, stateValue) { if (stateValue == 'inactive') return _('no Service needed'); break; - + case 'rain': if (stateValue == 'active') return _('rain active'); @@ -892,7 +910,7 @@ dss.staticDataModel.getNameForState = function(stateName, stateValue) { if (stateValue == 'auto') return _('heating mode auto'); break; - + case 'heating_mode': if (stateValue == 'off') return _('heating mode off'); @@ -1004,7 +1022,7 @@ dss.staticDataModel.initSunriseTimes = function() { /** * Returns the distroVersion of the dSS. If not yet stored it will be read from * the property tree. - * + * * @return distroVersionString */ dss.staticDataModel.getdSSVersion = function() { @@ -1025,7 +1043,7 @@ dss.staticDataModel.getdSSVersion = function() { /** * Returns the distroVersion of the dSS. If not yet stored it will be read from * the property tree. - * + * * @return distroVersionString */ dss.staticDataModel.getdSSFeed = function() { @@ -1068,11 +1086,11 @@ dss.staticDataModel.initDeviceCache = function() { if (resultObj.result.devices!=null) { for ( var iIndex = 0; iIndex < resultObj.result.devices.length; iIndex++) { var oDevObject = resultObj.result.devices[iIndex]; - + if (oDevObject.ZoneID === 65534) { continue; } - + var newObject = { dSID : oDevObject.dSID, dSUID : oDevObject.dSUID, @@ -1097,22 +1115,24 @@ dss.staticDataModel.initDeviceCache = function() { newObject.hasActions=oDevObject.hasActions; } else newObject.hasActions=false; - + newObject.hasStates=false; newObject.hasEvents=false; if (oDevObject.isVdcDevice) { if (oDevObject[oDevObject.dSUID]!=null) { oVDC_DSID.push(oDevObject.dSUID); var oArray=oDevObject[oDevObject.dSUID]; - for (var jIndex=0;jIndex<oArray.length;jIndex++) { - if (oArray[jIndex].states!=null) - if (oArray[jIndex].states.length>0) - newObject.hasStates=true; - } + if (oArray) { + for (var jIndex=0;jIndex<oArray.length;jIndex++) { + if (oArray[jIndex].states!=null) + if (oArray[jIndex].states.length>0) + newObject.hasStates=true; + } + } } } var subObject = oDevObject[oDevObject.dSUID]; - for (var jIndex = 0; jIndex < subObject.length; jIndex++) { + for (var jIndex = 0; subObject && jIndex < subObject.length; jIndex++) { if (subObject[jIndex].outputChannels != null) { for (var kIndex=0;kIndex<subObject[jIndex].outputChannels.length;kIndex++) { newObject.moc.push(subObject[jIndex].outputChannels[kIndex].channelID); @@ -1160,7 +1180,7 @@ dss.staticDataModel.initDeviceCache = function() { newObject.specialActions.actions={}; if (newObject.specialActions.actions[sKeyType]==null) newObject.specialActions.actions[sKeyType]={}; - for (var sSubSubKey in dss.staticDataModel.specialDSIDAction[oDevObject.dSUID].actions[sKeyType]) + for (var sSubSubKey in dss.staticDataModel.specialDSIDAction[oDevObject.dSUID].actions[sKeyType]) newObject.specialActions.actions[sKeyType][sSubSubKey]= dss.staticDataModel.specialDSIDAction[oDevObject.dSUID].actions[sKeyType][sSubSubKey]; } } @@ -1171,10 +1191,10 @@ dss.staticDataModel.initDeviceCache = function() { if (newObject.specialActions.triggers[sKeyType]==null) newObject.specialActions.triggers[sKeyType]={}; newObject.specialActions.triggers[sKeyType]=[]; - for (var sSubSubKey in dss.staticDataModel.specialDSIDAction[oDevObject.dSUID].triggers[sKeyType]) + for (var sSubSubKey in dss.staticDataModel.specialDSIDAction[oDevObject.dSUID].triggers[sKeyType]) newObject.specialActions.triggers[sKeyType][sSubSubKey]=dss.staticDataModel.specialDSIDAction[oDevObject.dSUID].triggers[sKeyType][sSubSubKey]; } - } + } } if (subObject[jIndex].modelFeatures!= null) { for (var sKey in subObject[jIndex]) { @@ -1182,7 +1202,7 @@ dss.staticDataModel.initDeviceCache = function() { newObject.modelFeatures[sKey]=subObject[jIndex][sKey]; } } - + if (subObject[jIndex].button != null) { if (subObject[jIndex].id != null) newObject.tasterMode = subObject[jIndex].id; @@ -1262,71 +1282,83 @@ dss.staticDataModel.initDeviceCache = function() { } var zone0Index = -1; var groupToAdd = []; - for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache.length; iIndex++) { - var oZone = dss.staticDataModel.nameCache[iIndex]; - if (oZone.ZoneID === 0) { - zone0Index = iIndex; - } - if (oZone.name == "") { - if (oZone.ZoneID == 0) - oZone.name = _('All rooms'); - else - oZone.name = Ext.String.format2(_("Room ID {zone}"), { - zone : oZone.ZoneID - }); - } - for (var jIndex = 0; jIndex < oZone.groups.length; jIndex++) { - var oGroup = oZone.groups[jIndex]; - oGroup.icon = dss.staticDataModel.getImagePathForGroup(oZone.ZoneID, oGroup.group); - oGroup.name = dss.staticDataModel.getNameForGroup(oZone.ZoneID, oGroup.group); - oGroup.sensors = []; - oGroup.reachable = false; - if (oGroup.group == 0) - oGroup.reachable = true; - if (0 < oGroup.connectedDevices) { - oGroup.reachable = true; - if (-1 === groupToAdd.indexOf(oGroup.group)) { - groupToAdd.push(oGroup.group); - } - } - for (var iDeviceIndex = 0; iDeviceIndex < dss.staticDataModel.deviceCache.length; iDeviceIndex++) - if ((dss.staticDataModel.deviceCache[iDeviceIndex].ZoneID == oZone.ZoneID) || (oZone.ZoneID == 0)) - if (dss.staticDataModel.deviceCache[iDeviceIndex].GroupMembership != null) - for (var iDeviceGroupIndex = 0; iDeviceGroupIndex < dss.staticDataModel.deviceCache[iDeviceIndex].GroupMembership.length; iDeviceGroupIndex++) - if (dss.staticDataModel.deviceCache[iDeviceIndex].GroupMembership[iDeviceGroupIndex] == oGroup.group) - oGroup.reachable = true; - dss.staticDataModel.nameCache[iIndex].groups[jIndex] = oGroup; - } - } + if (dss.staticDataModel.nameCache) { + for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache.length; iIndex++) { + var oZone = dss.staticDataModel.nameCache[iIndex]; + if (oZone && oZone.ZoneID === 0) { + zone0Index = iIndex; + } + if (oZone && oZone.name == "") { + if (oZone.ZoneID == 0) + oZone.name = _('All rooms'); + else + oZone.name = Ext.String.format2(_("Room ID {zone}"), { + zone : oZone.ZoneID + }); + } + if (oZone && oZone.groups) { + for (var jIndex = 0; jIndex < oZone.groups.length; jIndex++) { + var oGroup = oZone.groups[jIndex]; + oGroup.icon = dss.staticDataModel.getImagePathForGroup(oZone.ZoneID, oGroup.group); + oGroup.name = dss.staticDataModel.getNameForGroup(oZone.ZoneID, oGroup.group); + oGroup.sensors = []; + oGroup.reachable = false; + if (oGroup.group == 0) + oGroup.reachable = true; + if (0 < oGroup.connectedDevices) { + oGroup.reachable = true; + if (-1 === groupToAdd.indexOf(oGroup.group)) { + groupToAdd.push(oGroup.group); + } + } + if (dss.staticDataModel.deviceCache) { + for (var iDeviceIndex = 0; iDeviceIndex < dss.staticDataModel.deviceCache.length; iDeviceIndex++) + if ((dss.staticDataModel.deviceCache[iDeviceIndex].ZoneID == oZone.ZoneID) || (oZone.ZoneID == 0)) + if (dss.staticDataModel.deviceCache[iDeviceIndex].GroupMembership != null) + for (var iDeviceGroupIndex = 0; iDeviceGroupIndex < dss.staticDataModel.deviceCache[iDeviceIndex].GroupMembership.length; iDeviceGroupIndex++) + if (dss.staticDataModel.deviceCache[iDeviceIndex].GroupMembership[iDeviceGroupIndex] == oGroup.group) + oGroup.reachable = true; + } + dss.staticDataModel.nameCache[iIndex].groups[jIndex] = oGroup; + } + } + } + } if (groupToAdd.length > 0) { oZone = dss.staticDataModel.nameCache[zone0Index]; - for (var jIndex = 0; jIndex < oZone.groups.length; jIndex++) { - var oGroup = oZone.groups[jIndex]; - if (-1 !== groupToAdd.indexOf(oGroup.group)) { - oGroup.icon = dss.staticDataModel.getImagePathForGroup(oZone.ZoneID, oGroup.group); - oGroup.name = dss.staticDataModel.getNameForGroup(oZone.ZoneID, oGroup.group); - oGroup.reachable = true; - dss.staticDataModel.nameCache[zone0Index].groups[jIndex] = oGroup; - } - } + if (oZone && oZone.groups) { + for (var jIndex = 0; jIndex < oZone.groups.length; jIndex++) { + var oGroup = oZone.groups[jIndex]; + if (-1 !== groupToAdd.indexOf(oGroup.group)) { + oGroup.icon = dss.staticDataModel.getImagePathForGroup(oZone.ZoneID, oGroup.group); + oGroup.name = dss.staticDataModel.getNameForGroup(oZone.ZoneID, oGroup.group); + oGroup.reachable = true; + dss.staticDataModel.nameCache[zone0Index].groups[jIndex] = oGroup; + } + } + } } dss.staticDataModel.userGroups = []; - for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache.length; iIndex++) { - if (dss.staticDataModel.nameCache[iIndex].ZoneID == 0) { - for (var jIndex = 0; jIndex < dss.staticDataModel.nameCache[iIndex].groups.length; jIndex++) { - if (dss.staticDataModel.isClusterGroup(dss.staticDataModel.nameCache[iIndex].groups[jIndex].group)) - if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].color !== 0) { - dss.staticDataModel.userGroups.push({ - id : dss.staticDataModel.nameCache[iIndex].groups[jIndex].group, - name : dss.staticDataModel.nameCache[iIndex].groups[jIndex].name, - reachable : dss.staticDataModel.nameCache[iIndex].groups[jIndex].reachable, - color : dss.staticDataModel.nameCache[iIndex].groups[jIndex].color - }); - } - } - } - } + if (dss.staticDataModel.nameCache) { + for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache.length; iIndex++) { + if (dss.staticDataModel.nameCache[iIndex].ZoneID == 0) { + if (dss.staticDataModel.nameCache[iIndex].groups) { + for (var jIndex = 0; jIndex < dss.staticDataModel.nameCache[iIndex].groups.length; jIndex++) { + if (dss.staticDataModel.isClusterGroup(dss.staticDataModel.nameCache[iIndex].groups[jIndex].group)) + if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].color !== 0) { + dss.staticDataModel.userGroups.push({ + id : dss.staticDataModel.nameCache[iIndex].groups[jIndex].group, + name : dss.staticDataModel.nameCache[iIndex].groups[jIndex].name, + reachable : dss.staticDataModel.nameCache[iIndex].groups[jIndex].reachable, + color : dss.staticDataModel.nameCache[iIndex].groups[jIndex].color + }); + } + } + } + } + } + } for (var iIndex=0;iIndex<oVDC_DSID.length;iIndex++) dss.staticDataModel.getActions(oVDC_DSID[iIndex]); @@ -1336,7 +1368,7 @@ dss.staticDataModel.getActions = function(dsid) { var device=dss.staticDataModel.getDevice(dsid); if (device==null) return; - if (!device.hasActions) + if (!device.hasActions) return; if (device.deviceStandardActions==null) { var sResult = Ext.JSON.decode(dss.ajaxSyncRequest('/json/device/getInfo', { @@ -1359,7 +1391,7 @@ dss.staticDataModel.getActions = function(dsid) { device.deviceEvents=[]; device.deviceActions=[]; } - } + } } dss.staticDataModel.getStandardActions = function(dsid) { @@ -1404,7 +1436,7 @@ dss.staticDataModel.getDeviceStates = function (dsid) { dss.staticDataModel.initZoneSensorCache = function() { // json/property/query2?query=/apartment/zones/*(ZoneID)/groups/*(group)/sensor/*(*) - + var sResult = dss.ajaxSyncRequest('/json/property/query2', { 'query' : dss.staticDataModel.sQueryStringZoneSensor }); @@ -1425,14 +1457,17 @@ dss.staticDataModel.initZoneSensorCache = function() { } } } - for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache.length; iIndex++) { - if (dss.staticDataModel.nameCache[iIndex].ZoneID==zoneID) - for (var jIndex=0;jIndex<dss.staticDataModel.nameCache[iIndex].groups.length;jIndex++) { - if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].group==groupID) - if (dss.staticDataModel.nameCache[iIndex].groups[jIndex]!=null) - dss.staticDataModel.nameCache[iIndex].groups[jIndex].sensors=sensorObj; - } - } + if (dss.staticDataModel.nameCache) { + for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache.length; iIndex++) { + if (dss.staticDataModel.nameCache[iIndex].ZoneID==zoneID && dss.staticDataModel.nameCache[iIndex].groups) { + for (var jIndex=0;jIndex<dss.staticDataModel.nameCache[iIndex].groups.length;jIndex++) { + if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].group==groupID) + if (dss.staticDataModel.nameCache[iIndex].groups[jIndex]!=null) + dss.staticDataModel.nameCache[iIndex].groups[jIndex].sensors=sensorObj; + } + } + } + } } } } @@ -1483,17 +1518,19 @@ dss.staticDataModel.getNameForSensortype = function(type) { return _("Time"); default: return _("Sensor type") + " " + type; - } + } }; dss.staticDataModel.hasDeviceStates = function(dsuid) { var states = dss.staticDataModel.getStates(); - for (var iIndex = 0; iIndex < states.length; iIndex++) { - var oState = states[iIndex]; - if (oState.name.indexOf(dsuid) != -1) - return true; - } + if (states) { + for (var iIndex = 0; iIndex < states.length; iIndex++) { + var oState = states[iIndex]; + if (oState.name.indexOf(dsuid) != -1) + return true; + } + } return false; }; @@ -1525,14 +1562,16 @@ dss.staticDataModel.initHLECache = function() { for ( var sKey in resultObj.result.states[iIndex]) { if (sKey != 'name') if (sKey != 'value') { - for (var jIndex = 0; jIndex < resultObj.result.states[iIndex][sKey].length; jIndex++) - for ( var sSubKey in resultObj.result.states[iIndex][sKey][jIndex]) { - var oValue = { - name : sSubKey, - value : resultObj.result.states[iIndex][sKey][jIndex][sSubKey] - }; - oObjectState.valuerange.push(oValue); - } + if (resultObj.result.states[iIndex][sKey]) { + for (var jIndex = 0; jIndex < resultObj.result.states[iIndex][sKey].length; jIndex++) + for ( var sSubKey in resultObj.result.states[iIndex][sKey][jIndex]) { + var oValue = { + name : sSubKey, + value : resultObj.result.states[iIndex][sKey][jIndex][sSubKey] + }; + oObjectState.valuerange.push(oValue); + } + } } } if (oObjectState.valuerange.length == 0) { @@ -1583,20 +1622,24 @@ dss.staticDataModel.getStates = function() { dss.staticDataModel.initHLECache(); var oResult = []; - for (var iIndex = 0; iIndex < dss.staticDataModel.StateCache.length; iIndex++) { - var valuerange = []; - for (var jIndex = 0; jIndex < dss.staticDataModel.StateCache[iIndex].valuerange.length; jIndex++) { - valuerange.push({ - name : dss.staticDataModel.StateCache[iIndex].valuerange[jIndex].name, - value : dss.staticDataModel.StateCache[iIndex].valuerange[jIndex].value - }); - } - oResult.push({ - value : dss.staticDataModel.StateCache[iIndex].value, - name : dss.staticDataModel.StateCache[iIndex].name, - valuerange : valuerange - }); - } + if (dss.staticDataModel.StateCache) { + for (var iIndex = 0; iIndex < dss.staticDataModel.StateCache.length; iIndex++) { + var valuerange = []; + if (dss.staticDataModel.StateCache[iIndex].valuerange) { + for (var jIndex = 0; jIndex < dss.staticDataModel.StateCache[iIndex].valuerange.length; jIndex++) { + valuerange.push({ + name : dss.staticDataModel.StateCache[iIndex].valuerange[jIndex].name, + value : dss.staticDataModel.StateCache[iIndex].valuerange[jIndex].value + }); + } + } + oResult.push({ + value : dss.staticDataModel.StateCache[iIndex].value, + name : dss.staticDataModel.StateCache[iIndex].name, + valuerange : valuerange + }); + } + } return oResult; }; @@ -1617,15 +1660,17 @@ dss.staticDataModel.getZoneArray = function() { dss.staticDataModel.initCaches(); var oResult = []; - for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache.length; iIndex++) { - if (dss.staticDataModel.nameCache[iIndex].ZoneID === 65534) { - continue; - } - oResult.push({ - ZoneID : dss.staticDataModel.nameCache[iIndex].ZoneID, - name : dss.staticDataModel.nameCache[iIndex].name - }); - } + if (dss.staticDataModel.nameCache) { + for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache.length; iIndex++) { + if (dss.staticDataModel.nameCache[iIndex].ZoneID === 65534) { + continue; + } + oResult.push({ + ZoneID : dss.staticDataModel.nameCache[iIndex].ZoneID, + name : dss.staticDataModel.nameCache[iIndex].name + }); + } + } return oResult; }; @@ -1633,21 +1678,25 @@ dss.staticDataModel.getDevicesForZone = function(zoneID, groupID) { if (dss.staticDataModel.nameCache == null) dss.staticDataModel.initCaches(); var oRetArray = []; - for (var i = 0; i < dss.staticDataModel.deviceCache.length; i++) { - var oDeviceObject = dss.staticDataModel.deviceCache[i]; - var fAdded = false; - for (var j = 0; j < oDeviceObject.GroupMembership.length; j++) { - var oDeviceGroup = oDeviceObject.GroupMembership[j]; - if (oDeviceGroup == 8) - oDeviceGroup = oDeviceObject.buttonActiveGroup; - if ((oDeviceObject.ZoneID == zoneID) || (zoneID == 0)) - if ((oDeviceGroup == groupID) || (groupID == 0)) - if (!fAdded) { - oRetArray.push(oDeviceObject); - fAdded = true; - } - } - } + if (dss.staticDataModel.deviceCache) { + for (var i = 0; i < dss.staticDataModel.deviceCache.length; i++) { + var oDeviceObject = dss.staticDataModel.deviceCache[i]; + var fAdded = false; + if (oDeviceObject.GroupMembership) { + for (var j = 0; j < oDeviceObject.GroupMembership.length; j++) { + var oDeviceGroup = oDeviceObject.GroupMembership[j]; + if (oDeviceGroup == 8) + oDeviceGroup = oDeviceObject.buttonActiveGroup; + if ((oDeviceObject.ZoneID == zoneID) || (zoneID == 0)) + if ((oDeviceGroup == groupID) || (groupID == 0)) + if (!fAdded) { + oRetArray.push(oDeviceObject); + fAdded = true; + } + } + } + } + } return oRetArray; }; dss.staticDataModel.getNameForSensorEvent = function(device, eventid) { @@ -2026,13 +2075,16 @@ dss.staticDataModel.getNameForGroup = function(zoneID, group) { break; } - for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) - if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) - for (var iGroupIndex = 0; iGroupIndex < dss.staticDataModel.nameCache[iZoneIndex].groups.length; iGroupIndex++) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].group == group) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name && (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name != baseName)) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name && (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name != baseName2)) - return dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name; + if (dss.staticDataModel.nameCache) { + for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) + if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) + if (dss.staticDataModel.nameCache[iZoneIndex].groups) + for (var iGroupIndex = 0; iGroupIndex < dss.staticDataModel.nameCache[iZoneIndex].groups.length; iGroupIndex++) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].group == group) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name && (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name != baseName)) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name && (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name != baseName2)) + return dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].name; + } return defaultName; }; @@ -2076,7 +2128,7 @@ dss.staticDataModel.getDefaultNameForScene = function(zoneID, group, scene) { case 73: defaultName = _('Bell'); break; - + case 74: defaultName = _('Alarm 1'); break; @@ -2110,7 +2162,7 @@ dss.staticDataModel.getDefaultNameForScene = function(zoneID, group, scene) { case 76: defaultName = _('Fire'); break; - + case 65: defaultName = _('Panic'); break; @@ -2424,17 +2476,20 @@ dss.staticDataModel.getNameForScene = function(zoneID, group, scene) { break; } - for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) - if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) - for (var iGroupIndex = 0; iGroupIndex < dss.staticDataModel.nameCache[iZoneIndex].groups.length; iGroupIndex++) - if ((dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].group == group) && (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes !== undefined)) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes.length !== undefined) - for (var iSceneIndex = 0; iSceneIndex < dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes.length; iSceneIndex++) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].scene == scene) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].name != null) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].name != '') - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].name != baseName) - return dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].name; + if (dss.staticDataModel.nameCache) { + for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) + if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) + if (dss.staticDataModel.nameCache[iZoneIndex].groups) + for (var iGroupIndex = 0; iGroupIndex < dss.staticDataModel.nameCache[iZoneIndex].groups.length; iGroupIndex++) + if ((dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].group == group) && (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes !== undefined)) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes.length !== undefined) + for (var iSceneIndex = 0; iSceneIndex < dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes.length; iSceneIndex++) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].scene == scene) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].name != null) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].name != '') + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].name != baseName) + return dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].scenes[iSceneIndex].name; + } return dss.staticDataModel.getDefaultNameForScene(zoneID, group, scene); }; @@ -2448,44 +2503,54 @@ dss.staticDataModel.getNameForZone = function(zoneID) { baseName = _('whole installation'); if (zoneID == -1) baseName = _('any room'); - for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) - if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) - if (dss.staticDataModel.nameCache[iZoneIndex].name != "") - return dss.staticDataModel.nameCache[iZoneIndex].name; + if (dss.staticDataModel.nameCache) { + for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) + if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) + if (dss.staticDataModel.nameCache[iZoneIndex].name != "") + return dss.staticDataModel.nameCache[iZoneIndex].name; + } return baseName; }; dss.staticDataModel.hasConnectedDevicesForGroup = function(zoneID, group) { - - for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) - if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) - for (var iGroupIndex = 0; iGroupIndex < dss.staticDataModel.nameCache[iZoneIndex].groups.length; iGroupIndex++) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].group == group) - return (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].connectedDevices!=0); + if (dss.staticDataModel.nameCache == null) + dss.staticDataModel.initCaches(); + if (dss.staticDataModel.nameCache) { + for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) + if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) + if (dss.staticDataModel.nameCache[iZoneIndex].groups) + for (var iGroupIndex = 0; iGroupIndex < dss.staticDataModel.nameCache[iZoneIndex].groups.length; iGroupIndex++) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].group == group) + return (dss.staticDataModel.nameCache[iZoneIndex].groups[iGroupIndex].connectedDevices!=0); + } return false; } dss.staticDataModel.getGroupForZone = function(zoneID) { if (dss.staticDataModel.nameCache == null) dss.staticDataModel.initCaches(); - for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) - if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) { - var oResult = []; - for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache[iZoneIndex].groups.length; iIndex++) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group != 6) - if (dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group != 7) - if ((dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group < 16) - || ((zoneID == 0) && dss.staticDataModel.isClusterGroup(dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group)) - || ((zoneID == 0) && dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group>63)) - oResult.push({ - 'group' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group, - 'name' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].name, - 'icon' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].icon, - 'reachable' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].reachable, - 'connectedDevices' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].connectedDevices - }); - return oResult; - } + if (dss.staticDataModel.nameCache) { + for (var iZoneIndex = 0; iZoneIndex < dss.staticDataModel.nameCache.length; iZoneIndex++) + if (dss.staticDataModel.nameCache[iZoneIndex].ZoneID == zoneID) { + var oResult = []; + if (dss.staticDataModel.nameCache[iZoneIndex].groups) { + for (var iIndex = 0; iIndex < dss.staticDataModel.nameCache[iZoneIndex].groups.length; iIndex++) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group != 6) + if (dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group != 7) + if ((dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group < 16) + || ((zoneID == 0) && dss.staticDataModel.isClusterGroup(dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group)) + || ((zoneID == 0) && dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group>63)) + oResult.push({ + 'group' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].group, + 'name' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].name, + 'icon' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].icon, + 'reachable' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].reachable, + 'connectedDevices' : dss.staticDataModel.nameCache[iZoneIndex].groups[iIndex].connectedDevices + }); + } + return oResult; + } + } return null; }; @@ -2494,10 +2559,12 @@ dss.staticDataModel.getDevice = function(dSUID) { dss.staticDataModel.initCaches(); } if (DSS.types.dsuid.isDSUID(dSUID)) { - for (var i = 0; i < dss.staticDataModel.deviceCache.length; i++) { - if (dSUID == dss.staticDataModel.deviceCache[i].dSUID) - return dss.staticDataModel.deviceCache[i]; - } + if (dss.staticDataModel.deviceCache) { + for (var i = 0; i < dss.staticDataModel.deviceCache.length; i++) { + if (dSUID == dss.staticDataModel.deviceCache[i].dSUID) + return dss.staticDataModel.deviceCache[i]; + } + } return { dSID : DSS.types.dsuid.dsuid_to_dsid(dSUID), dSUID : dSUID, @@ -2506,10 +2573,12 @@ dss.staticDataModel.getDevice = function(dSUID) { specialActions: {} }; } else { - for (var i = 0; i < dss.staticDataModel.deviceCache.length; i++) { - if (dSUID == dss.staticDataModel.deviceCache[i].dSID) - return dss.staticDataModel.deviceCache[i]; - } + if (dss.staticDataModel.deviceCache) { + for (var i = 0; i < dss.staticDataModel.deviceCache.length; i++) { + if (dSUID == dss.staticDataModel.deviceCache[i].dSID) + return dss.staticDataModel.deviceCache[i]; + } + } return { dSID : dSUID, dSUID : DSS.types.dsuid.dsuid_from_dsid(dSUID), @@ -2693,18 +2762,20 @@ dss.staticDataModel.getImagePathForScene = function(zoneID, groupID, sceneID, fU dss.staticDataModel.getScene = function(zoneId, groupId, sceneID) { var oSceneArray = dss.staticDataModel.getScenes(zoneId, groupId); - for (var iIndex = 0; iIndex < oSceneArray.length; iIndex++) { - if (oSceneArray[iIndex].id == sceneID) - return oSceneArray[iIndex]; - } + if (oSceneArray) { + for (var iIndex = 0; iIndex < oSceneArray.length; iIndex++) { + if (oSceneArray[iIndex].id == sceneID) + return oSceneArray[iIndex]; + } + } return null; }; dss.staticDataModel.getScenes = function(zoneId, groupId) { if (dss.staticDataModel.nameCache == null) dss.staticDataModel.initCaches(); - - + + var oDeviceArray = dss.staticDataModel.getDevicesForZone(zoneId, groupId); var oRetArray = []; @@ -2726,19 +2797,21 @@ dss.staticDataModel.getScenes = function(zoneId, groupId) { if (zoneId==0) if (groupId>63) { - for (var iIndex=0;iIndex<dss.staticDataModel.nameCache.length;iIndex++) { - if ( dss.staticDataModel.nameCache[iIndex].ZoneID==0) { - for (var jIndex=0;jIndex<dss.staticDataModel.nameCache[iIndex].groups.length;jIndex++) { - if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].group==64) { - if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].activeBasicScenes!=null) - sceneArray= JSON.parse('[' +dss.staticDataModel.nameCache[iIndex].groups[jIndex].activeBasicScenes+']'); - } - } - } - } + if (dss.staticDataModel.nameCache) { + for (var iIndex=0;iIndex<dss.staticDataModel.nameCache.length;iIndex++) { + if ( dss.staticDataModel.nameCache[iIndex].ZoneID==0 && dss.staticDataModel.nameCache[iIndex].groups) { + for (var jIndex=0;jIndex<dss.staticDataModel.nameCache[iIndex].groups.length;jIndex++) { + if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].group==64) { + if (dss.staticDataModel.nameCache[iIndex].groups[jIndex].activeBasicScenes!=null) + sceneArray= JSON.parse('[' +dss.staticDataModel.nameCache[iIndex].groups[jIndex].activeBasicScenes+']'); + } + } + } + } + } } - - + + for (var iIndex = 0; iIndex < sceneArray.length; iIndex++) { var oSzeneObject = { id : sceneArray[iIndex], @@ -2755,149 +2828,150 @@ dss.staticDataModel.getScenes = function(zoneId, groupId) { oRetArray.push(oSzeneObject); } - + function searchAndEnableScene(id) { for ( var iIndex = 0; iIndex < oRetArray.length; iIndex++) if (oRetArray[iIndex].id == id) oRetArray[iIndex].reachable = true; } - + function searchAndSetUndo(id,undo) { for ( var iIndex = 0; iIndex < oRetArray.length; iIndex++) if (oRetArray[iIndex].id == id) oRetArray[iIndex].undoable = undo; } - + if (groupId != 7) if (groupId != 6) if (groupId != 0) { - for ( var iDeviceIndex = 0; iDeviceIndex < oDeviceArray.length; iDeviceIndex++) { - var oDev = oDeviceArray[iDeviceIndex]; - - if (oDev.productID == 12488) - if ((oDev.functionID == 33052) || (oDev.functionID == 33044)) - if (groupId != 8) { - searchAndEnableScene(0); - searchAndEnableScene(5); - searchAndEnableScene(17); - searchAndEnableScene(18); - searchAndEnableScene(19); - } - - if (oDev.tasterMode>0) { - if (groupId == 2) - { - searchAndEnableScene(56); - searchAndEnableScene(15); + if (oDeviceArray) { + for ( var iDeviceIndex = 0; iDeviceIndex < oDeviceArray.length; iDeviceIndex++) { + var oDev = oDeviceArray[iDeviceIndex]; + + if (oDev.productID == 12488) + if ((oDev.functionID == 33052) || (oDev.functionID == 33044)) + if (groupId != 8) { + searchAndEnableScene(0); + searchAndEnableScene(5); + searchAndEnableScene(17); + searchAndEnableScene(18); + searchAndEnableScene(19); + } + + if (oDev.tasterMode>0) { + if (groupId == 2) + { + searchAndEnableScene(56); + searchAndEnableScene(15); + } + if (groupId == 1) + { + searchAndEnableScene(40); + } } - if (groupId == 1) - { - searchAndEnableScene(40); + + switch (oDev.tasterMode) { + case 0: + searchAndEnableScene(17); + searchAndEnableScene(18); + searchAndEnableScene(19); + searchAndEnableScene(5); + searchAndEnableScene(0); + break; + case 1: + searchAndEnableScene(1); + searchAndEnableScene(6); + searchAndEnableScene(17); + searchAndEnableScene(18); + searchAndEnableScene(19); + break; + case 2: + searchAndEnableScene(2); + searchAndEnableScene(7); + searchAndEnableScene(17); + searchAndEnableScene(18); + searchAndEnableScene(19); + break; + case 3: + searchAndEnableScene(3); + searchAndEnableScene(8); + searchAndEnableScene(17); + searchAndEnableScene(18); + searchAndEnableScene(19); + break; + case 4: + searchAndEnableScene(4); + searchAndEnableScene(9); + searchAndEnableScene(17); + searchAndEnableScene(18); + searchAndEnableScene(19); + break; + case 5: + searchAndEnableScene(0); + searchAndEnableScene(5); + searchAndEnableScene(17); + searchAndEnableScene(18); + searchAndEnableScene(19); + break; + case 6: + searchAndEnableScene(32); + searchAndEnableScene(33); + searchAndEnableScene(20); + searchAndEnableScene(21); + searchAndEnableScene(22); + break; + case 7: + searchAndEnableScene(34); + searchAndEnableScene(35); + searchAndEnableScene(23); + searchAndEnableScene(24); + searchAndEnableScene(25); + break; + case 8: + searchAndEnableScene(36); + searchAndEnableScene(37); + searchAndEnableScene(26); + searchAndEnableScene(27); + searchAndEnableScene(28); + break; + case 9: + searchAndEnableScene(38); + searchAndEnableScene(39); + searchAndEnableScene(29); + searchAndEnableScene(30); + searchAndEnableScene(31); + break; + case 10: + searchAndEnableScene(1); + searchAndEnableScene(6); + searchAndEnableScene(20); + searchAndEnableScene(21); + searchAndEnableScene(22); + break; + case 11: + searchAndEnableScene(2); + searchAndEnableScene(7); + searchAndEnableScene(23); + searchAndEnableScene(24); + searchAndEnableScene(25); + break; + case 12: + searchAndEnableScene(3); + searchAndEnableScene(8); + searchAndEnableScene(26); + searchAndEnableScene(27); + searchAndEnableScene(28); + break; + case 13: + searchAndEnableScene(4); + searchAndEnableScene(9); + searchAndEnableScene(29); + searchAndEnableScene(30); + searchAndEnableScene(31); + break; } } - - switch (oDev.tasterMode) { - case 0: - searchAndEnableScene(17); - searchAndEnableScene(18); - searchAndEnableScene(19); - searchAndEnableScene(5); - searchAndEnableScene(0); - break; - case 1: - searchAndEnableScene(1); - searchAndEnableScene(6); - searchAndEnableScene(17); - searchAndEnableScene(18); - searchAndEnableScene(19); - break; - case 2: - searchAndEnableScene(2); - searchAndEnableScene(7); - searchAndEnableScene(17); - searchAndEnableScene(18); - searchAndEnableScene(19); - break; - case 3: - searchAndEnableScene(3); - searchAndEnableScene(8); - searchAndEnableScene(17); - searchAndEnableScene(18); - searchAndEnableScene(19); - break; - case 4: - searchAndEnableScene(4); - searchAndEnableScene(9); - searchAndEnableScene(17); - searchAndEnableScene(18); - searchAndEnableScene(19); - break; - case 5: - searchAndEnableScene(0); - searchAndEnableScene(5); - searchAndEnableScene(17); - searchAndEnableScene(18); - searchAndEnableScene(19); - break; - case 6: - searchAndEnableScene(32); - searchAndEnableScene(33); - searchAndEnableScene(20); - searchAndEnableScene(21); - searchAndEnableScene(22); - break; - case 7: - searchAndEnableScene(34); - searchAndEnableScene(35); - searchAndEnableScene(23); - searchAndEnableScene(24); - searchAndEnableScene(25); - break; - case 8: - searchAndEnableScene(36); - searchAndEnableScene(37); - searchAndEnableScene(26); - searchAndEnableScene(27); - searchAndEnableScene(28); - break; - case 9: - searchAndEnableScene(38); - searchAndEnableScene(39); - searchAndEnableScene(29); - searchAndEnableScene(30); - searchAndEnableScene(31); - break; - case 10: - searchAndEnableScene(1); - searchAndEnableScene(6); - searchAndEnableScene(20); - searchAndEnableScene(21); - searchAndEnableScene(22); - break; - case 11: - searchAndEnableScene(2); - searchAndEnableScene(7); - searchAndEnableScene(23); - searchAndEnableScene(24); - searchAndEnableScene(25); - break; - case 12: - searchAndEnableScene(3); - searchAndEnableScene(8); - searchAndEnableScene(26); - searchAndEnableScene(27); - searchAndEnableScene(28); - break; - case 13: - searchAndEnableScene(4); - searchAndEnableScene(9); - searchAndEnableScene(29); - searchAndEnableScene(30); - searchAndEnableScene(31); - break; - } } - } if ((zoneId != 0) && (groupId == 0)) { searchAndEnableScene(67); @@ -2908,18 +2982,20 @@ dss.staticDataModel.getScenes = function(zoneId, groupId) { if ((zoneId == 0) && (groupId == 0)) { - for (var i = 0; i < dss.staticDataModel.deviceCache.length; i++) { - var oDeviceObject = dss.staticDataModel.deviceCache[i]; - if (oDeviceObject.functionID == 0x7010) - searchAndEnableScene(73); // klingel - if (oDeviceObject.functionID == 0x6001) { - searchAndEnableScene(65); // panik - } - if (oDeviceObject.functionID == 0x7050) { - searchAndEnableScene(71); // kommen - searchAndEnableScene(72); // gehen - } - } + if (dss.staticDataModel.deviceCache) { + for (var i = 0; i < dss.staticDataModel.deviceCache.length; i++) { + var oDeviceObject = dss.staticDataModel.deviceCache[i]; + if (oDeviceObject.functionID == 0x7010) + searchAndEnableScene(73); // klingel + if (oDeviceObject.functionID == 0x6001) { + searchAndEnableScene(65); // panik + } + if (oDeviceObject.functionID == 0x7050) { + searchAndEnableScene(71); // kommen + searchAndEnableScene(72); // gehen + } + } + } searchAndEnableScene(67); searchAndEnableScene(68); searchAndEnableScene(69); @@ -2941,16 +3017,16 @@ dss.staticDataModel.getScenes = function(zoneId, groupId) { searchAndEnableScene(19); // preset4 } - + if (dss.staticDataModel.hasConnectedDevicesForGroup(zoneId, groupId)) { searchAndEnableScene(0); // preset0 searchAndEnableScene(5); // preset1 searchAndEnableScene(17); // preset2 searchAndEnableScene(18); // preset3 - searchAndEnableScene(19); // preset4 + searchAndEnableScene(19); // preset4 } - + searchAndSetUndo(76, true); searchAndSetUndo(74, true); searchAndSetUndo(83, true); @@ -2972,10 +3048,12 @@ dss.staticDataModel.getUserGroupColor = function(groupID) { dss.staticDataModel.getUserGroupName = function(groupID) { var oArray = dss.staticDataModel.getUsergroups(); - for (var iIndex = 0; iIndex < oArray.length; iIndex++) { - if (oArray[iIndex].id == groupID) - return oArray[iIndex].name; - } + if (oArray) { + for (var iIndex = 0; iIndex < oArray.length; iIndex++) { + if (oArray[iIndex].id == groupID) + return oArray[iIndex].name; + } + } return ""; }; @@ -3221,21 +3299,25 @@ dss.staticDataModel.getTooltipForState = function(type, value) { dss.staticDataModel.IsWindowHandle = function(oDevice) { var bResult = false; - for (var iIndex = 0; iIndex < oDevice.binaryInputs.length; iIndex++) { - if (oDevice.binaryInputs[iIndex].type == 15) { - bResult = true; - break; - } - } + if (oDevice && oDevice.binaryInputs) { + for (var iIndex = 0; iIndex < oDevice.binaryInputs.length; iIndex++) { + if (oDevice.binaryInputs[iIndex].type == 15) { + bResult = true; + break; + } + } + } return bResult; }; dss.staticDataModel.GetWindowHandleBinaryInputIndex = function(oDevice) { - for (var iIndex = 0; iIndex < oDevice.binaryInputs.length; iIndex++) { - if (oDevice.binaryInputs[iIndex].type == 15) { - return iIndex; - } - } + if (oDevice && oDevice.binaryInputs) { + for (var iIndex = 0; iIndex < oDevice.binaryInputs.length; iIndex++) { + if (oDevice.binaryInputs[iIndex].type == 15) { + return iIndex; + } + } + } return -1; }; @@ -3254,7 +3336,7 @@ dss.parsePropertyQueryAnswer = function(oJsonObject, paramDef) { var oReturnArray = []; for ( var sKey in oJsonObject.result) { var oRootArray = oJsonObject.result[sKey]; - for (var iIndex = 0; iIndex < oRootArray.length; iIndex++) { + for (var iIndex = 0; oRootArray && iIndex < oRootArray.length; iIndex++) { var oObject = {}; var oIteratorObject = oRootArray[iIndex]; for (var sIndex = 0; sIndex < paramDef.length; sIndex++) { @@ -3274,27 +3356,29 @@ dss.parsePropertyQueryAnswer = function(oJsonObject, paramDef) { for ( var subIndex in oIteratorObject) { if (typeof (oIteratorObject[subIndex]) == "object") { var aArray = oIteratorObject[subIndex]; - for (var jIndex = 0; jIndex < aArray.length; jIndex++) { - var oArrayObject = aArray[jIndex]; - if (oArrayObject[oKeyParameter] != null) { - - for (var kIndex = 0; kIndex < oArrayObject[oKeyParameter].length; kIndex++) { - var resultObject = oArrayObject[oKeyParameter][kIndex]; - var oActionObject = {}; - for ( var oKey in resultObject) { - oActionObject[oKey] = resultObject[oKey]; - if (oKey == 'type') - if (oActionObject[oKey] == 'bus-zone-scene') - oActionObject[oKey] = 'zone-scene'; - if (oKey == 'addon-id') { - oActionObject['addonId']=oActionObject[oKey]; - } - } - oObject[oKeyParameter].push(oActionObject); - } - - } - } + if (aArray) { + for (var jIndex = 0; jIndex < aArray.length; jIndex++) { + var oArrayObject = aArray[jIndex]; + if (oArrayObject[oKeyParameter] != null) { + + for (var kIndex = 0; kIndex < oArrayObject[oKeyParameter].length; kIndex++) { + var resultObject = oArrayObject[oKeyParameter][kIndex]; + var oActionObject = {}; + for ( var oKey in resultObject) { + oActionObject[oKey] = resultObject[oKey]; + if (oKey == 'type') + if (oActionObject[oKey] == 'bus-zone-scene') + oActionObject[oKey] = 'zone-scene'; + if (oKey == 'addon-id') { + oActionObject['addonId']=oActionObject[oKey]; + } + } + oObject[oKeyParameter].push(oActionObject); + } + + } + } + } } } } else if ((paramDef[sIndex].type == 'condition')) { @@ -3309,21 +3393,20 @@ dss.parsePropertyQueryAnswer = function(oJsonObject, paramDef) { for ( var subIndex in oIteratorObject) { if (typeof (oIteratorObject[subIndex]) == "object") { var aArray = oIteratorObject[subIndex]; - for (var jIndex = 0; jIndex < aArray.length; jIndex++) { + for (var jIndex = 0; aArray && jIndex < aArray.length; jIndex++) { var oArrayObject = aArray[jIndex]; if (oArrayObject[oKeyParameter] != null) { if (oArrayObject['enabled'] != null) { oConditionObject.enabled = oArrayObject['enabled']; } - if (oArrayObject['conditions']!=null) - if (oArrayObject['conditions']!=null) { - for (var kIndex=0;kIndex<oArrayObject['conditions'].length;kIndex++) { - if (oArrayObject['conditions'][kIndex]!=null) - if (oArrayObject['conditions'][kIndex].date!=null) { - oConditionObject.date=oArrayObject['conditions'][kIndex].date; - } - } + if (oArrayObject['conditions']!=null) { + for (var kIndex=0;kIndex<oArrayObject['conditions'].length;kIndex++) { + if (oArrayObject['conditions'][kIndex]!=null) + if (oArrayObject['conditions'][kIndex].date!=null) { + oConditionObject.date=oArrayObject['conditions'][kIndex].date; + } } + } if ((oArrayObject['time-start'] != null) && (oArrayObject['time-end'] != null)) { var startArray = oArrayObject['time-start'].split(':'); var iStart = parseInt(startArray[0], 10) * 3600 + parseInt(startArray[1], 10) * 60 + parseInt(startArray[2], 10); @@ -3339,7 +3422,7 @@ dss.parsePropertyQueryAnswer = function(oJsonObject, paramDef) { offset : iEnd } } ]; - } + } if (oArrayObject['weekdays'] != null) { var weekArray = oArrayObject['weekdays'].split(','); oConditionObject.weekdays = []; @@ -3428,45 +3511,51 @@ dss.parsePropertyQueryAnswer = function(oJsonObject, paramDef) { for ( var subIndex in oIteratorObject) { if (typeof (oIteratorObject[subIndex]) == "object") { var aArray = oIteratorObject[subIndex]; - for (var jIndex = 0; jIndex < aArray.length; jIndex++) { - var oArrayObject = aArray[jIndex]; - if (oArrayObject.conditions != null) - if (oArrayObject.enabled != null) - oObject[oKeyParameter] = !oArrayObject.enabled; - } + if (aArray) { + for (var jIndex = 0; jIndex < aArray.length; jIndex++) { + var oArrayObject = aArray[jIndex]; + if (oArrayObject.conditions != null) + if (oArrayObject.enabled != null) + oObject[oKeyParameter] = !oArrayObject.enabled; + } + } } } } else if ((paramDef[sIndex].type == 'condition/state')) { for ( var subIndex in oIteratorObject) { if (typeof (oIteratorObject[subIndex]) == "object") { var aArray = oIteratorObject[subIndex]; - for (var jIndex = 0; jIndex < aArray.length; jIndex++) { - var oArrayObject = aArray[jIndex]; - if (oArrayObject.conditions != null) { - for (var kIndex = 0; kIndex < oArrayObject.conditions.length; kIndex++) { - if (oArrayObject.conditions[kIndex] != null) { - if (oArrayObject.conditions[kIndex][paramDef[sIndex].name] != null) - oObject[oKeyParameter] = oArrayObject.conditions[kIndex][paramDef[sIndex].name]; - } - } - } - } + if (aArray) { + for (var jIndex = 0; jIndex < aArray.length; jIndex++) { + var oArrayObject = aArray[jIndex]; + if (oArrayObject.conditions != null) { + for (var kIndex = 0; kIndex < oArrayObject.conditions.length; kIndex++) { + if (oArrayObject.conditions[kIndex] != null) { + if (oArrayObject.conditions[kIndex][paramDef[sIndex].name] != null) + oObject[oKeyParameter] = oArrayObject.conditions[kIndex][paramDef[sIndex].name]; + } + } + } + } + } } } } else if ((paramDef[sIndex].type == 'message')) { for ( var subIndex in oIteratorObject) { if (typeof (oIteratorObject[subIndex]) == "object") { var aArray = oIteratorObject[subIndex]; - for (var jIndex = 0; jIndex < aArray.length; jIndex++) { - var oArrayObject = aArray[jIndex]; - if (oArrayObject.message != null) { - oObject[oKeyParameter] = {}; - oObject[oKeyParameter].messageType = oArrayObject.messageType; - oObject[oKeyParameter].receiver = oArrayObject.receiver; - oObject[oKeyParameter].subject = escape(dss.unescapeProperty(oArrayObject.subject)); - oObject[oKeyParameter].message = escape(dss.unescapeProperty(oArrayObject.messageBody)); - } - } + if (aArray) { + for (var jIndex = 0; jIndex < aArray.length; jIndex++) { + var oArrayObject = aArray[jIndex]; + if (oArrayObject.message != null) { + oObject[oKeyParameter] = {}; + oObject[oKeyParameter].messageType = oArrayObject.messageType; + oObject[oKeyParameter].receiver = oArrayObject.receiver; + oObject[oKeyParameter].subject = escape(dss.unescapeProperty(oArrayObject.subject)); + oObject[oKeyParameter].message = escape(dss.unescapeProperty(oArrayObject.messageBody)); + } + } + } } } } else if ((paramDef[sIndex].type == 'recurrence')) { @@ -3474,23 +3563,25 @@ dss.parsePropertyQueryAnswer = function(oJsonObject, paramDef) { for ( var subIndex in oIteratorObject) { if (typeof (oIteratorObject[subIndex]) == "object") { var aArray = oIteratorObject[subIndex]; - for (var jIndex = 0; jIndex < aArray.length; jIndex++) { - var oArrayObject = aArray[jIndex]; - if (oArrayObject.recurrenceBase != null) - oTimeObject.recurrenceBase = oArrayObject.recurrenceBase; - if (oArrayObject.time != null) { - oTimeObject.timeArray = []; - for ( var oKey in oArrayObject.time) { - var oSubArray = oArrayObject.time[oKey]; - for ( var aKey in oSubArray) { - if (oSubArray[aKey] != null) - if (typeof (oSubArray[aKey]) == 'string') - oTimeObject.timeArray.push(oSubArray[aKey]); - - } - } - } - } + if (aArray) { + for (var jIndex = 0; jIndex < aArray.length; jIndex++) { + var oArrayObject = aArray[jIndex]; + if (oArrayObject.recurrenceBase != null) + oTimeObject.recurrenceBase = oArrayObject.recurrenceBase; + if (oArrayObject.time != null) { + oTimeObject.timeArray = []; + for ( var oKey in oArrayObject.time) { + var oSubArray = oArrayObject.time[oKey]; + for ( var aKey in oSubArray) { + if (oSubArray[aKey] != null) + if (typeof (oSubArray[aKey]) == 'string') + oTimeObject.timeArray.push(oSubArray[aKey]); + + } + } + } + } + } } } oObject[oKeyParameter] = oTimeObject; @@ -3499,19 +3590,21 @@ dss.parsePropertyQueryAnswer = function(oJsonObject, paramDef) { for ( var subIndex in oIteratorObject) { if (typeof (oIteratorObject[subIndex]) == "object") { var aArray = oIteratorObject[subIndex]; - for (var jIndex = 0; jIndex < aArray.length; jIndex++) { - var oArrayObject = aArray[jIndex]; - if (oArrayObject.timeBase != null) - oTimeObject.timeBase = oArrayObject.timeBase; - if (oArrayObject.offset != null) - oTimeObject.offset = oArrayObject.offset; - if (oArrayObject.limitBefore != null) - oTimeObject.limitBefore = oArrayObject.limitBefore; - if (oArrayObject.limitAfter != null) - oTimeObject.limitAfter = oArrayObject.limitAfter; - if (oArrayObject.random != null) - oTimeObject.random = oArrayObject.random; - } + if (aArray) { + for (var jIndex = 0; jIndex < aArray.length; jIndex++) { + var oArrayObject = aArray[jIndex]; + if (oArrayObject.timeBase != null) + oTimeObject.timeBase = oArrayObject.timeBase; + if (oArrayObject.offset != null) + oTimeObject.offset = oArrayObject.offset; + if (oArrayObject.limitBefore != null) + oTimeObject.limitBefore = oArrayObject.limitBefore; + if (oArrayObject.limitAfter != null) + oTimeObject.limitAfter = oArrayObject.limitAfter; + if (oArrayObject.random != null) + oTimeObject.random = oArrayObject.random; + } + } } } oObject[oKeyParameter] = oTimeObject; @@ -3531,14 +3624,16 @@ dss.validateTriggerObject = function(oTriggerObject) { var stateName = oTriggerObject.name; var oUserStates = dss.staticDataModel.getUserStates(); var stateValue = oTriggerObject.state; - for (var iIndex = 0; iIndex < oUserStates.length; iIndex++) { - if (oUserStates[iIndex].name == stateName) { - if (stateValue == 'active') - return dss.validValue.ok; - if (stateValue == 'inactive') - return dss.validValue.ok; - } - } + if (oUserStates) { + for (var iIndex = 0; iIndex < oUserStates.length; iIndex++) { + if (oUserStates[iIndex].name == stateName) { + if (stateValue == 'active') + return dss.validValue.ok; + if (stateValue == 'inactive') + return dss.validValue.ok; + } + } + } return dss.validValue.completlyWrong; } else { if (oTriggerObject.state!=null) @@ -3546,7 +3641,7 @@ dss.validateTriggerObject = function(oTriggerObject) { return dss.validValue.ok; return dss.validValue.completlyWrong; } - } + } case 'device-named-event': { var idString =oTriggerObject['id']; var oDevice=dss.staticDataModel.getDevice(oTriggerObject.dsuid); @@ -3558,10 +3653,10 @@ dss.validateTriggerObject = function(oTriggerObject) { return dss.validValue.temporaryWrong; // nicht vorhandene Geraete } if (oDevice!=null) - if (oDevice.deviceEvents!=null) + if (oDevice.deviceEvents!=null) if (oDevice.deviceEvents[oTriggerObject.id]!=null) return dss.validValue.ok; - return dss.validValue.completlyWrong; + return dss.validValue.completlyWrong; } case 'device-named-action': { var idString =oTriggerObject['id']; @@ -3574,18 +3669,18 @@ dss.validateTriggerObject = function(oTriggerObject) { return dss.validValue.temporaryWrong; // nicht vorhandene Geraete } if (oDevice!=null) - if (oDevice.deviceCustomActions!=null) + if (oDevice.deviceCustomActions!=null) if (oDevice.deviceCustomActions[oTriggerObject.id]!=null) return dss.validValue.ok; if (oDevice!=null) - if (oDevice.deviceStandardActions!=null) + if (oDevice.deviceStandardActions!=null) if (oDevice.deviceStandardActions[oTriggerObject.id]!=null) return dss.validValue.ok; if (oDevice!=null) - if (oDevice.deviceActions!=null) + if (oDevice.deviceActions!=null) if (oDevice.deviceActions[oTriggerObject.id]!=null) return dss.validValue.ok; - return dss.validValue.completlyWrong; + return dss.validValue.completlyWrong; } case 'event': { switch (oTriggerObject.name) { @@ -3602,53 +3697,55 @@ dss.validateTriggerObject = function(oTriggerObject) { var stateName = oTriggerObject.name; var oUserStates = dss.staticDataModel.getUserStates(); var stateValue = oTriggerObject.state; - for (var iIndex = 0; iIndex < oUserStates.length; iIndex++) { - if (oUserStates[iIndex].name == stateName) { - if (stateValue == 'active') - return dss.validValue.ok; - if (stateValue == 'inactive') - return dss.validValue.ok; - } - } + if (oUserStates) { + for (var iIndex = 0; iIndex < oUserStates.length; iIndex++) { + if (oUserStates[iIndex].name == stateName) { + if (stateValue == 'active') + return dss.validValue.ok; + if (stateValue == 'inactive') + return dss.validValue.ok; + } + } + } var oArray = oTriggerObject.name.split('.'); if (oArray.length == 3) if (oArray[0] == 'dev') { var oDevice = dss.staticDataModel.getDevice(oArray[1]); if (oDevice != null) { - + if ((oDevice.hasStates) && (dss.staticDataModel.getDeviceStates(oArray[1]))) { var states=dss.staticDataModel.getDeviceStates(oArray[1]); for (var sKey in states) { if (sKey==oArray[2]) { for (var sSubkey in states[sKey].options) { if (sSubkey==oTriggerObject.state) { - return dss.validValue.ok; + return dss.validValue.ok; } } } } - } - - - var typeIndex = parseInt(oArray[2], 10); + } + + + var typeIndex = parseInt(oArray[2], 10); if (oDevice.specialActions!=null) if (oDevice.specialActions.triggers!=null) - if (oDevice.specialActions.triggers.binaryInputs!=null) { - for (var sKey in oDevice.specialActions.triggers.binaryInputs) + if (oDevice.specialActions.triggers.binaryInputs!=null) { + for (var sKey in oDevice.specialActions.triggers.binaryInputs) if (("" + oDevice.specialActions.triggers.binaryInputs[sKey].id)==("" + typeIndex)) { if (oTriggerObject.state=='active') if (oDevice.specialActions.triggers.binaryInputs[sKey].value==2) { return dss.validValue.ok; } - + if (oTriggerObject.state=='inactive') if (oDevice.specialActions.triggers.binaryInputs[sKey].value==1) { return dss.validValue.ok; - } + } } } - + if (oDevice.binaryInputs != null) { var type = 255; for (var kIndex = 0; kIndex < oDevice.binaryInputs.length; kIndex++) @@ -3677,26 +3774,32 @@ dss.validateTriggerObject = function(oTriggerObject) { return dss.validValue.completlyWrong; } if (oArray[0] == 'zone') { - for (var iIndex = 0; iIndex < dss.staticDataModel.getStates().length; iIndex++) - if (dss.staticDataModel.getStates()[iIndex].name == oTriggerObject.name) { - if (oTriggerObject.state == 'active') - return dss.validValue.ok; - if (oTriggerObject.state == 'inactive') - return dss.validValue.ok; - } + var states = dss.staticDataModel.getStates(); + if (states) { + for (var iIndex = 0; iIndex < states.length; iIndex++) + if (states[iIndex].name == oTriggerObject.name) { + if (oTriggerObject.state == 'active') + return dss.validValue.ok; + if (oTriggerObject.state == 'inactive') + return dss.validValue.ok; + } + } return dss.validValue.completlyWrong; } if (oArray[0] == 'cluster') { - for (var iIndex = 0; iIndex < dss.staticDataModel.getStates().length; iIndex++) { - if (dss.staticDataModel.getStates()[iIndex].name == oTriggerObject.name) { - if (oTriggerObject.state == 'active') { - return dss.validValue.ok; - } - if (oTriggerObject.state == 'inactive') { - return dss.validValue.ok; - } - } - } + var states = dss.staticDataModel.getStates(); + if (states) { + for (var iIndex = 0; iIndex < states.length; iIndex++) { + if (states[iIndex].name == oTriggerObject.name) { + if (oTriggerObject.state == 'active') { + return dss.validValue.ok; + } + if (oTriggerObject.state == 'inactive') { + return dss.validValue.ok; + } + } + } + } return dss.validValue.completlyWrong; } @@ -3772,7 +3875,7 @@ dss.validateTriggerObject = function(oTriggerObject) { return dss.validValue.ok; case 15: return dss.validValue.ok; - } + } } if (oDevice.tasterMode != 0) { return dss.validValue.completlyWrong; // reconfigured device @@ -3798,8 +3901,8 @@ dss.validateTriggerObject = function(oTriggerObject) { return dss.validValue.temporaryWrong; // nicht vorhandene Geraete // -> Fehler } - - + + var fSpecial=false; if (oDevice.specialActions!=null) if (oDevice.specialActions.triggers!=null) @@ -3808,10 +3911,10 @@ dss.validateTriggerObject = function(oTriggerObject) { if (oDevice.specialActions.triggers.deviceMsg[sKey].id==oTriggerObject.msg) { return dss.validValue.ok; } - } + } } - - + + if (oDevice.tasterMode != 15) { // the device is not anymore configured // as pushbutton return dss.validValue.completlyWrong; @@ -3855,7 +3958,7 @@ dss.validateTriggerObject = function(oTriggerObject) { if (dss.staticDataModel.specialDSIDAction[oTriggerObject.dsuid]!=null) if (dss.staticDataModel.specialDSIDAction[oTriggerObject.dsuid].triggers!=null) if (dss.staticDataModel.specialDSIDAction[oTriggerObject.dsuid].triggers.deviceAction!=null){ - for (var sKey in dss.staticDataModel.specialDSIDAction[oTriggerObject.dsuid].triggers.deviceAction) + for (var sKey in dss.staticDataModel.specialDSIDAction[oTriggerObject.dsuid].triggers.deviceAction) if (dss.staticDataModel.specialDSIDAction[oTriggerObject.dsuid].triggers.deviceAction[sKey].id==oTriggerObject.action) return dss.validValue.ok; } @@ -3866,14 +3969,14 @@ dss.validateTriggerObject = function(oTriggerObject) { if (oDevice.specialActions.triggers.deviceActions[sKey].action==oTriggerObject.action) { return dss.validValue.ok; } - } + } } - + if (oDevice.tasterMode != 15) { // the device is not anymore configured // as pushbutton return dss.validValue.completlyWrong; } - + return dss.validValue.completlyWrong; } case 'device-binary-input': { @@ -3916,16 +4019,18 @@ dss.validateTriggerObject = function(oTriggerObject) { // sind // immer falsch var oGroups = dss.staticDataModel.getGroupForZone(oTriggerObject.zone); - for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { - if (oGroups[iIndex].group == oTriggerObject.group) - return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // nur - // wenn - // gruppe - // erreichbar - // ist, dann - // kann aktion - // laufen - } + if (oGroups) { + for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { + if (oGroups[iIndex].group == oTriggerObject.group) + return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // nur + // wenn + // gruppe + // erreichbar + // ist, dann + // kann aktion + // laufen + } + } return dss.validValue.completlyWrong; // gruppe ist nicht in // der liste mit drin } else { @@ -3940,10 +4045,12 @@ dss.validateTriggerObject = function(oTriggerObject) { // Zone var oZones = dss.staticDataModel.getZoneArray(); var fValue = false; - for (var iIndex = 0; iIndex < oZones.length; iIndex++) { - if (oZones[iIndex].ZoneID == oTriggerObject.zone) - fValue = true; - } + if (oZones) { + for (var iIndex = 0; iIndex < oZones.length; iIndex++) { + if (oZones[iIndex].ZoneID == oTriggerObject.zone) + fValue = true; + } + } if (oTriggerObject.zone == -1) fValue = true; @@ -3971,16 +4078,18 @@ dss.validateTriggerObject = function(oTriggerObject) { return dss.validValue.ok; var oGroups = dss.staticDataModel.getGroupForZone(oTriggerObject.zone); - for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { - if (oGroups[iIndex].group == oTriggerObject.group) - return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // nur - // wenn - // gruppe - // erreichbar - // ist, dann - // kann aktion - // laufen - } + if (oGroups) { + for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { + if (oGroups[iIndex].group == oTriggerObject.group) + return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // nur + // wenn + // gruppe + // erreichbar + // ist, dann + // kann aktion + // laufen + } + } return dss.validValue.completlyWrong; // gruppe ist nicht in // der liste mit drin } @@ -3988,11 +4097,14 @@ dss.validateTriggerObject = function(oTriggerObject) { break; case 'custom-event': { - for (var iIndex = 0; iIndex < dss.staticDataModel.getHLE().length; iIndex++) { - if ("" + dss.staticDataModel.getHLE()[iIndex].id == oTriggerObject.event) { - return dss.validValue.ok; - } - } + var hle = dss.staticDataModel.getHLE(); + if (hle) { + for (var iIndex = 0; iIndex < hle.length; iIndex++) { + if ("" + hle[iIndex].id == oTriggerObject.event) { + return dss.validValue.ok; + } + } + } return dss.validValue.completlyWrong; } } @@ -4019,7 +4131,7 @@ dss.validateActionObject = function(oActionObject) { return dss.validValue.completlyWrong; iIndex++; } - return dss.validValue.ok; + return dss.validValue.ok; } case 'device-action': { var oDevice = dss.staticDataModel.getDevice(oActionObject.dsuid); @@ -4031,7 +4143,7 @@ dss.validateActionObject = function(oActionObject) { return dss.validValue.temporaryWrong; // nicht vorhandene Geraete // -> Fehler } - + var actions=dss.staticDataModel.getStandardActions(oActionObject.dsuid); for (var sKey in actions) { if (sKey==oActionObject.id) @@ -4042,7 +4154,7 @@ dss.validateActionObject = function(oActionObject) { if (sKey==oActionObject.id) return dss.validValue.ok; } - actions=dss.staticDataModel.getCustomActions(oActionObject.dsuid); + actions=dss.staticDataModel.getCustomActions(oActionObject.dsuid); for (var sKey in actions) { if (sKey==oActionObject.id) return dss.validValue.ok; @@ -4054,14 +4166,16 @@ dss.validateActionObject = function(oActionObject) { var stateName = oActionObject.statename; var oUserStates = dss.staticDataModel.getUserStates(); var stateValue = oActionObject.state; - for (var iIndex = 0; iIndex < oUserStates.length; iIndex++) { - if (oUserStates[iIndex].name == stateName) { - if (oActionObject.state == 'active') - return dss.validValue.ok; - if (oActionObject.state == 'inactive') - return dss.validValue.ok; - } - } + if (oUserStates) { + for (var iIndex = 0; iIndex < oUserStates.length; iIndex++) { + if (oUserStates[iIndex].name == stateName) { + if (oActionObject.state == 'active') + return dss.validValue.ok; + if (oActionObject.state == 'inactive') + return dss.validValue.ok; + } + } + } return dss.validValue.completlyWrong; } else { if (oActionObject.state!=null) @@ -4070,20 +4184,20 @@ dss.validateActionObject = function(oActionObject) { return dss.validValue.completlyWrong; } } - + case 'change-state': { switch (oActionObject.statename) { case 'fire': case 'hail': case 'rain': - case 'wind': + case 'wind': if (oActionObject.state == 'active') return dss.validValue.ok; if (oActionObject.state == 'inactive') return dss.validValue.ok; - break; - - case 'heating_water_system': + break; + + case 'heating_water_system': if (oActionObject.state=='off') return dss.validValue.ok; if (oActionObject.state=='cold water') @@ -4092,7 +4206,7 @@ dss.validateActionObject = function(oActionObject) { return dss.validValue.ok; return dss.validValue.completlyWrong; break; - + } } case 'zone-value': { @@ -4102,14 +4216,14 @@ dss.validateActionObject = function(oActionObject) { case 'heating-mode': { if (dss.staticDataModel.ClimateControllerSettingsCache != null && (dss.staticDataModel.ClimateControllerSettingsCache.capabilities.heatingSupported == true || - dss.staticDataModel.ClimateControllerSettingsCache.capabilities.coolingSupported == true) && + dss.staticDataModel.ClimateControllerSettingsCache.capabilities.coolingSupported == true) && dss.staticDataModel.heating[oActionObject.zone].receiveOperationMode && oActionObject.mode < 7) { return dss.validValue.ok; } return dss.validValue.completlyWrong; break; - } + } case 'zone-scene': { if (oActionObject.zone == 0) { // Apartment @@ -4127,16 +4241,18 @@ dss.validateActionObject = function(oActionObject) { // sind // immer falsch var oGroups = dss.staticDataModel.getGroupForZone(oActionObject.zone); - for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { - if (oGroups[iIndex].group == oActionObject.group) - return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // nur - // wenn - // gruppe - // erreichbar - // ist, dann - // kann aktion - // laufen - } + if (oGroups) { + for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { + if (oGroups[iIndex].group == oActionObject.group) + return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // nur + // wenn + // gruppe + // erreichbar + // ist, dann + // kann aktion + // laufen + } + } return dss.validValue.completlyWrong; // gruppe ist nicht in // der liste mit drin } else { @@ -4151,10 +4267,12 @@ dss.validateActionObject = function(oActionObject) { // Zone var oZones = dss.staticDataModel.getZoneArray(); var fValue = false; - for (var iIndex = 0; iIndex < oZones.length; iIndex++) { - if (oZones[iIndex].ZoneID == oActionObject.zone) - fValue = true; - } + if (oZones) { + for (var iIndex = 0; iIndex < oZones.length; iIndex++) { + if (oZones[iIndex].ZoneID == oActionObject.zone) + fValue = true; + } + } if (oActionObject.group == 6) if (oActionObject.scene < 64) return dss.validValue.completlyWrong; // zone is not valid @@ -4182,16 +4300,18 @@ dss.validateActionObject = function(oActionObject) { // sind // immer falsch var oGroups = dss.staticDataModel.getGroupForZone(oActionObject.zone); - for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { - if (oGroups[iIndex].group == oActionObject.group) - return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // nur - // wenn - // gruppe - // erreichbar - // ist, dann - // kann aktion - // laufen - } + if (oGroups) { + for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { + if (oGroups[iIndex].group == oActionObject.group) + return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // nur + // wenn + // gruppe + // erreichbar + // ist, dann + // kann aktion + // laufen + } + } return dss.validValue.completlyWrong; // gruppe ist nicht in // der liste mit drin } @@ -4313,34 +4433,41 @@ dss.validateActionObject = function(oActionObject) { } var oZones = dss.staticDataModel.getZoneArray(); var fValue = dss.validValue.completlyWrong; - for (var iIndex = 0; iIndex < oZones.length; iIndex++) { - if (oZones[iIndex].ZoneID == oActionObject.zone) - fValue = dss.validValue.ok; - } + if (oZones) { + for (var iIndex = 0; iIndex < oZones.length; iIndex++) { + if (oZones[iIndex].ZoneID == oActionObject.zone) + fValue = dss.validValue.ok; + } + } if (fValue == dss.validValue.completlyWrong) return dss.validValue.completlyWrong; if (oActionObject.group != 1) // nur licht darf blinken return dss.validValue.completlyWrong; var oGroups = dss.staticDataModel.getGroupForZone(oActionObject.zone); - for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { - if (oGroups[iIndex].group == oActionObject.group) - return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // falls - // licht - // da - // ist, - // dann blinkt es nur - // dann, wenn es - // reachable ist - } + if (oGroups) { + for (var iIndex = 0; iIndex < oGroups.length; iIndex++) { + if (oGroups[iIndex].group == oActionObject.group) + return (oGroups[iIndex].reachable ? dss.validValue.ok : dss.validValue.temporaryWrong); // falls + // licht + // da + // ist, + // dann blinkt es nur + // dann, wenn es + // reachable ist + } + } return dss.validValue.completlyWrong; break; } case 'custom-event': { - for (var iIndex = 0; iIndex < dss.staticDataModel.getHLE().length; iIndex++) { - if ("" + dss.staticDataModel.getHLE()[iIndex].id == oActionObject.event) { - return dss.validValue.ok; - } - } + var hle = dss.staticDataModel.getHLE(); + if (hle) { + for (var iIndex = 0; iIndex < hle.length; iIndex++) { + if ("" + dss.staticDataModel.getHLE()[iIndex].id == oActionObject.event) { + return dss.validValue.ok; + } + } + } return dss.validValue.completlyWrong; break; } @@ -4572,7 +4699,7 @@ dss.refreshListener = function() { else dss.endSubscription(); } - + }); } @@ -4584,7 +4711,7 @@ dss.endSubscription = function() { subscriptionID : id, name : name }); - + } dss.kelvinToMired = function (kelvin) { @@ -4605,7 +4732,7 @@ dss.MiredToKelvin = function (mired) { /** * Gettext translation method - * + * * @param {String} * msgid The string to translate * @param {String} @@ -4631,9 +4758,9 @@ function formatDelayString(delay) { var hasSeconds=(delay%60)>0; var hasMinutes=((Math.floor(delay/60))%60)>0; var hasHours=(delay>=3600); - + var pad = function(i) { return (i < 10 ? '0'+i : i); }; - + if (!hasHours) { if (!hasMinutes) { return delay + " " + _('sec.'); @@ -4658,5 +4785,3 @@ function formatDelayString(delay) { } return delay + " " + _('sec.'); } - - diff --git a/js/dss/dss-edit-dialog.js b/js/dss/dss-edit-dialog.js index ec5977bf..985c1aab 100644 --- a/js/dss/dss-edit-dialog.js +++ b/js/dss/dss-edit-dialog.js @@ -12,7 +12,7 @@ Ext.define('DSS.component.Editor', { var oControl; switch (subConfig.type) { case 'combobox' : { - + oControl = Ext.create('DSS.component.ComboboxControl', { data:subConfig.data, labelWidth:subConfig.labelWidth, @@ -29,26 +29,26 @@ Ext.define('DSS.component.Editor', { this.editControls[subConfig.id] = oControl; oControl.dssEditor=this; return oControl; - + break; } case 'radio' : { - + oControl = Ext.create('DSS.component.RadioControl', { - data:subConfig.data, + data:subConfig.data, labelWidth:subConfig.labelWidth, label:subConfig.label, radioid:subConfig.id, myID:subConfig.id }); - + if ((subConfig.flex == null) || (!subConfig.flex)) this.innerHeight -= 27 * subConfig.data.length; this.editControls[subConfig.id] = oControl; oControl.dssEditor=this; return oControl; - + break; } case 'hidden': { @@ -77,7 +77,7 @@ Ext.define('DSS.component.Editor', { try { var iHeight=oControl.getHeight(); this.innerHeight -= iHeight; - } + } catch (e) { this.innerHeight -= 22; } @@ -292,12 +292,12 @@ Ext.define('DSS.component.Editor', { this.editControls[subConfig.id] = oControl; if ((subConfig.flex == null) || (!subConfig.flex)) this.innerHeight -= 150; - + oControl.dssEditor=this; return oControl; break; } - case 'TitterMsgControl' : + case 'TitterMsgControl' : { oControl = Ext.create('DSS.component.TitterMessageEditor', { labelWidth:subConfig.labelWidth, @@ -307,7 +307,7 @@ Ext.define('DSS.component.Editor', { this.editControls[subConfig.id] = oControl; if ((subConfig.flex == null) || (!subConfig.flex)) this.innerHeight -= 150; - + oControl.dssEditor=this; return oControl; break; @@ -327,9 +327,9 @@ Ext.define('DSS.component.Editor', { if (subConfig.randomize) this.innerHeight -= (54 + 26); else - this.innerHeight -= 54; + this.innerHeight -= 54; } - + this.editControls[subConfig.id] = oControl; oControl.dssEditor=this; return oControl; @@ -344,7 +344,7 @@ Ext.define('DSS.component.Editor', { defaultFirstTabOnEdit:0, constructor : function(config) { config.closeAction = 'hide'; - config.modal = true; + config.modal = true; config.height = 500; config.width = 800; config.layout = 'fit'; @@ -367,8 +367,8 @@ Ext.define('DSS.component.Editor', { if (config.saveTitle!=null) { sSaveText=config.saveTitle; } - - if ((config.hideCancel==null) ||(config.hideCancel==false)) { + + if ((config.hideCancel==null) ||(config.hideCancel==false)) { me.buttonCancel = Ext.create('Ext.Button', { text : sCancelText, handler : function() { @@ -423,14 +423,14 @@ Ext.define('DSS.component.Editor', { flexControl = null; this.innerHeight = tabbedHeight; - if (config.tabControls[iIndex].content.length > 0) { + if (config.tabControls[iIndex].content && config.tabControls[iIndex].content.length > 0) { var oTabPanel = Ext.create('Ext.panel.Panel', { title : config.tabControls[iIndex].tabLabel, border : '0' }); this.oTabPanels["" + iIndex]={panel:oTabPanel,title:config.tabControls[iIndex].tabLabel}; if (config.tabControls[iIndex].tabDescription!=null) { - + oTabPanel.add(Ext.create('Ext.form.field.Display', { border : 0, height:18, @@ -480,12 +480,12 @@ Ext.define('DSS.component.Editor', { oButtons.push(me.buttonSave); if (me.buttonCancel!=null) oButtons.push(me.buttonCancel); - + var insideItems; if (config.tabControls!=null) insideItems=oStaticSubitems; else { - insideItems=Ext.create("Ext.panel.Panel", { + insideItems=Ext.create("Ext.panel.Panel", { bodyPadding : 10, border:"1px", margin:"10 10 10 10", @@ -493,8 +493,8 @@ Ext.define('DSS.component.Editor', { }); insideItems.updateLayout(); } - - + + Ext.apply(me, { items : [ { xtype : 'panel', @@ -552,7 +552,7 @@ Ext.define('DSS.component.Editor', { this.oTabPanelParent.setActiveTab(this.defaultFirstTabOnNew); } else { this.oTabPanelParent.setActiveTab(this.defaultFirstTabOnEdit); - } + } for ( var sKey in this.oTabPanels) { this.oTabPanels[sKey].panel.setTitle(this.oTabPanels[sKey].title); } @@ -564,7 +564,7 @@ Ext.define('DSS.component.Editor', { var fisValid = true; for (var sKey in this.oTabPanels) this.oTabPanels[sKey].panel.setTitle(this.oTabPanels[sKey].title); - + for ( var sKey in this.editControls) { if (!this.editControls[sKey].isValid()) { fisValid = false; @@ -587,4 +587,3 @@ Ext.define('DSS.component.Editor', { this.editControls[sControl].setDisabled(!fEnable); } }); - diff --git a/js/dss/dss-grid.js b/js/dss/dss-grid.js index 52e49dad..58817bd0 100644 --- a/js/dss/dss-grid.js +++ b/js/dss/dss-grid.js @@ -68,13 +68,15 @@ function checkWeekdaysConditions(weekDayArray) { var iIndex; var oNow = new Date(); var currentCondState = false; - if (weekDayArray.length == 7) { - //daily so its true - currentCondState = true; - } else { - for (iIndex = 0; iIndex < weekDayArray.length; iIndex++) { - if ( dayOfWeekAsInteger(weekDayArray[iIndex]) == oNow.getDay() ) { - currentCondState = true; + if (weekDayArray) { + if (weekDayArray.length == 7) { + //daily so its true + currentCondState = true; + } else { + for (iIndex = 0; iIndex < weekDayArray.length; iIndex++) { + if ( dayOfWeekAsInteger(weekDayArray[iIndex]) == oNow.getDay() ) { + currentCondState = true; + } } } } @@ -535,55 +537,57 @@ Ext.define('DSS.component.conditionCcolumn', { var fFr = false; var fSa = false; var fSo = false; - if (recObject.length == 7) - return sString + _("daily"); - for ( var iIndex = 0; iIndex < recObject.length; iIndex++) { - if (recObject[iIndex] == 'MO') - fMo = true; - if (recObject[iIndex] == 'TU') - fDi = true; - if (recObject[iIndex] == 'WE') - fMi = true; - if (recObject[iIndex] == 'TH') - fDo = true; - if (recObject[iIndex] == 'FR') - fFr = true; - if (recObject[iIndex] == 'SA') - fSa = true; - if (recObject[iIndex] == 'SU') - fSo = true; - } - sString += _('only ') ; - if (recObject.length == 2) - if (fSa) - if (fSo) - return sString + _('on weekends'); - - if (recObject.length == 5) - if (fMo) + if (recObject) { + if (recObject.length == 7) + return sString + _("daily"); + for ( var iIndex = 0; iIndex < recObject.length; iIndex++) { + if (recObject[iIndex] == 'MO') + fMo = true; + if (recObject[iIndex] == 'TU') + fDi = true; + if (recObject[iIndex] == 'WE') + fMi = true; + if (recObject[iIndex] == 'TH') + fDo = true; + if (recObject[iIndex] == 'FR') + fFr = true; + if (recObject[iIndex] == 'SA') + fSa = true; + if (recObject[iIndex] == 'SU') + fSo = true; + } + sString += _('only ') ; + if (recObject.length == 2) + if (fSa) + if (fSo) + return sString + _('on weekends'); + + if (recObject.length == 5) + if (fMo) + if (fDi) + if (fMi) + if (fDo) + if (fFr) + return sString + _('MO-FR'); + if (recObject.length == 1) { + if (fMo) + return sString + _("on monday"); if (fDi) - if (fMi) - if (fDo) - if (fFr) - return sString + _('MO-FR'); - if (recObject.length == 1) { - if (fMo) - return sString + _("on monday"); - if (fDi) - return sString + _("on tuesday"); - if (fMi) - return sString + _("on wednesday"); - if (fDo) - return sString + _("on thursday"); - if (fFr) - return sString + _("on friday"); - if (fSa) - return sString + _("on saturday"); - if (fSo) - return sString + _("on sunday"); - } - if (recObject.length == 0) { - return sString + _("no time defined"); + return sString + _("on tuesday"); + if (fMi) + return sString + _("on wednesday"); + if (fDo) + return sString + _("on thursday"); + if (fFr) + return sString + _("on friday"); + if (fSa) + return sString + _("on saturday"); + if (fSo) + return sString + _("on sunday"); + } + if (recObject.length == 0) { + return sString + _("no time defined"); + } } if (fMo) @@ -631,40 +635,41 @@ Ext.define('DSS.component.conditionCcolumn', { var fShow=true; if (customRendererOptions.hideGenericSystemStates) { fShow=false; - for (var kIndex=0;kIndex<customRendererOptions.filterSystemState.length;kIndex++) { - if (customRendererOptions.filterSystemState[kIndex]==oRecord.systemState[iIndex].name) - fShow=true; - } + if (customRendererOptions.filterSystemState) { + for (var kIndex=0;kIndex<customRendererOptions.filterSystemState.length;kIndex++) { + if (customRendererOptions.filterSystemState[kIndex]==oRecord.systemState[iIndex].name) + fShow=true; + } + } } var sIcon=dss.staticDataModel.getImagePathForState(oRecord.systemState[iIndex].name,oRecord.systemState[iIndex].value); var fShown=false; if (fShow) { - if (customRendererOptions.stateTitles!=null) - if (customRendererOptions.stateTitles.length!=null) - for (var kIndex=0;kIndex<customRendererOptions.stateTitles.length;kIndex++) { - var sStateName=oRecord.systemState[iIndex].name; - var sSuffix=""; - if (sStateName.split('.').length==2) { - for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) - if (sStateName.split('.')[1] == "group" + dss.staticDataModel.userGroups[lIndex].id) { - sStateName=sStateName.split('.')[0]; - sSuffix=' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name; - } + if (customRendererOptions.stateTitles) + for (var kIndex=0;kIndex<customRendererOptions.stateTitles.length;kIndex++) { + var sStateName=oRecord.systemState[iIndex].name; + var sSuffix=""; + if (sStateName.split('.').length==2 && dss.staticDataModel.userGroups) { + for (var lIndex=0;lIndex<dss.staticDataModel.userGroups.length;lIndex++) + if (sStateName.split('.')[1] == "group" + dss.staticDataModel.userGroups[lIndex].id) { + sStateName=sStateName.split('.')[0]; + sSuffix=' ' + _('in') + ' ' + dss.staticDataModel.userGroups[lIndex].name; + } + } + if (customRendererOptions.stateTitles[kIndex].name==sStateName) + if (customRendererOptions.stateTitles[kIndex].value==oRecord.systemState[iIndex].value) { + if (sIcon!=null) { + numberOfRows++; + sResult+='<tr><td style="padding-right:5px;" colspan="1"><img src="' + sIcon + '"></td><td>' + customRendererOptions.stateTitles[kIndex].title + sSuffix + '</td></tr>'; + } else { + numberOfRows++; + sResult+='<tr><td colspan="2">' + customRendererOptions.stateTitles[kIndex].title + sSuffix + '</td></tr>'; + } + sTooltip += createTooltipEntry(customRendererOptions.stateTitles[kIndex].title + sSuffix, tmpStatus); + overallCondState = overallCondState && tmpStatus; + fShown=true; } - if (customRendererOptions.stateTitles[kIndex].name==sStateName) - if (customRendererOptions.stateTitles[kIndex].value==oRecord.systemState[iIndex].value) { - if (sIcon!=null) { - numberOfRows++; - sResult+='<tr><td style="padding-right:5px;" colspan="1"><img src="' + sIcon + '"></td><td>' + customRendererOptions.stateTitles[kIndex].title + sSuffix + '</td></tr>'; - } else { - numberOfRows++; - sResult+='<tr><td colspan="2">' + customRendererOptions.stateTitles[kIndex].title + sSuffix + '</td></tr>'; - } - sTooltip += createTooltipEntry(customRendererOptions.stateTitles[kIndex].title + sSuffix, tmpStatus); - overallCondState = overallCondState && tmpStatus; - fShown=true; - } - } + } } if (!fShown) { var sError=""; @@ -873,19 +878,21 @@ Ext.define('DSS.component.conditionCcolumn', { tmpStatus = checkAddonStateConditions(oRecord.addonStates[iIndex]); if (oRecord.addonStates [iIndex].scriptID=='system-addon-user-defined-states') { - for (var jIndex=0;jIndex<dss.staticDataModel.userStates.length;jIndex++) - if (dss.staticDataModel.userStates[jIndex].name==oRecord.addonStates [iIndex].name) { - var valueText; - if (oRecord.addonStates[iIndex].value==1) { - valueText=dss.staticDataModel.userStates[jIndex].setName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png"; - } else { - valueText=dss.staticDataModel.userStates[jIndex].resetName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png"; - } - textString=Ext.String.format2(_("Customstate {state} is {value}"),{state:dss.staticDataModel.userStates[jIndex].displayName,value:valueText}); - sTmpString='<td style=""><img src="' + image + '"></td><td>' + textString; - } + if (dss.staticDataModel.userStates) { + for (var jIndex=0;jIndex<dss.staticDataModel.userStates.length;jIndex++) + if (dss.staticDataModel.userStates[jIndex].name==oRecord.addonStates [iIndex].name) { + var valueText; + if (oRecord.addonStates[iIndex].value==1) { + valueText=dss.staticDataModel.userStates[jIndex].setName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png"; + } else { + valueText=dss.staticDataModel.userStates[jIndex].resetName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png"; + } + textString=Ext.String.format2(_("Customstate {state} is {value}"),{state:dss.staticDataModel.userStates[jIndex].displayName,value:valueText}); + sTmpString='<td style=""><img src="' + image + '"></td><td>' + textString; + } + } } if (oRecord.addonStates[iIndex].scriptID == 'heating-controller') { @@ -956,7 +963,7 @@ Ext.define('DSS.component.triggerColumn', { var f1tip = false; var f2tip = false; var f3tip = false; - for ( var iIndex = 0; iIndex < oRecord.length; iIndex++) { + for ( var iIndex = 0; oRecord && iIndex < oRecord.length; iIndex++) { var oAction = oRecord[iIndex]; @@ -976,18 +983,20 @@ Ext.define('DSS.component.triggerColumn', { var oUserStates=dss.staticDataModel.getUserStates(); var oParameter={}; var image; - for (var jIndex=0;jIndex<oUserStates.length;jIndex++) { - if (oUserStates[jIndex].name==idString) { - oParameter.state=oUserStates[jIndex].displayName; - if (oAction.state=='active') { - oParameter.value=oUserStates[jIndex].setName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png"; - } else { - oParameter.value=oUserStates[jIndex].resetName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png"; - } - } - } + if (oUserStates) { + for (var jIndex=0;jIndex<oUserStates.length;jIndex++) { + if (oUserStates[jIndex].name==idString) { + oParameter.state=oUserStates[jIndex].displayName; + if (oAction.state=='active') { + oParameter.value=oUserStates[jIndex].setName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png"; + } else { + oParameter.value=oUserStates[jIndex].resetName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png"; + } + } + } + } var sString= '<td style="'+sError+'padding-right:5px;"></td>'; if (image!=null) @@ -1102,20 +1111,22 @@ Ext.define('DSS.component.triggerColumn', { var oUserStates=dss.staticDataModel.getUserStates(); var oParameter={}; var fSkipAfterUserstateFound=false; - for (var jIndex=0;jIndex<oUserStates.length;jIndex++) { - if (oUserStates[jIndex].name==idString) { - oParameter.state=oUserStates[jIndex].displayName; - if (oAction.state=='active') - oParameter.value=oUserStates[jIndex].setName; - else - oParameter.value=oUserStates[jIndex].resetName; - var sString = '<td style="'+sError+'padding-right:5px;"></td>'; - sString += '<td style="'+sError+'">' + Ext.String.format2(_('Customstate {state} is {value}'),oParameter); - sString += "</td>"; - sResult += sString; - fSkipAfterUserstateFound=true; - } - } + if (oUserStates) { + for (var jIndex=0;jIndex<oUserStates.length;jIndex++) { + if (oUserStates[jIndex].name==idString) { + oParameter.state=oUserStates[jIndex].displayName; + if (oAction.state=='active') + oParameter.value=oUserStates[jIndex].setName; + else + oParameter.value=oUserStates[jIndex].resetName; + var sString = '<td style="'+sError+'padding-right:5px;"></td>'; + sString += '<td style="'+sError+'">' + Ext.String.format2(_('Customstate {state} is {value}'),oParameter); + sString += "</td>"; + sResult += sString; + fSkipAfterUserstateFound=true; + } + } + } if (fSkipAfterUserstateFound) break; @@ -1177,11 +1188,13 @@ Ext.define('DSS.component.triggerColumn', { if (!fSkip) { var bIsWindowHandle = dss.staticDataModel.IsWindowHandle(oDevice); var type=255; - for (var kIndex=0;kIndex<oDevice.binaryInputs.length;kIndex++) { - if (oDevice.binaryInputs[kIndex].index==typeIndex) { - type=oDevice.binaryInputs[kIndex].type; - } - } + if (oDevice.binaryInputs) { + for (var kIndex=0;kIndex<oDevice.binaryInputs.length;kIndex++) { + if (oDevice.binaryInputs[kIndex].index==typeIndex) { + type=oDevice.binaryInputs[kIndex].type; + } + } + } if (!bIsWindowHandle) { if (oAction.state=='active') { oParameter.state_value= dss.staticDataModel.getNameForAKMValue(type,true); @@ -1522,11 +1535,13 @@ Ext.define('DSS.component.actionColumn', { var sResult = "<table>"; var fShowDelay=false; - for ( var iIndex = 0; iIndex < oRecord.length; iIndex++) { - var oAction = oRecord[iIndex]; - if (oAction.delay!=null) - if (oAction.delay!=0) - fShowDelay=true; + if (oRecord) { + for ( var iIndex = 0; iIndex < oRecord.length; iIndex++) { + var oAction = oRecord[iIndex]; + if (oAction.delay!=null) + if (oAction.delay!=0) + fShowDelay=true; + } } if (fShowDelay) { @@ -1538,7 +1553,7 @@ Ext.define('DSS.component.actionColumn', { }); } - for ( iIndex = 0; iIndex < oRecord.length; iIndex++) { + for ( iIndex = 0; oRecord && iIndex < oRecord.length; iIndex++) { var oAction = oRecord[iIndex]; var fValid= dss.validateActionObject(oAction); @@ -1628,19 +1643,21 @@ Ext.define('DSS.component.actionColumn', { var oUserStates=dss.staticDataModel.getUserStates(); var sStringValue; var image; - for (var jIndex=0;jIndex<oUserStates.length;jIndex++) { - if (oUserStates[jIndex].name==stateName) { - var valueText; - if (value=='active') { - valueText=oUserStates[jIndex].setName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png"; - } else { - valueText=oUserStates[jIndex].resetName; - image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png"; - } - sStringValue= Ext.String.format2(_("Customstate {state} change to {value}"),{state:oUserStates[jIndex].displayName,value:valueText}); - } - } + if (oUserStates) { + for (var jIndex=0;jIndex<oUserStates.length;jIndex++) { + if (oUserStates[jIndex].name==stateName) { + var valueText; + if (value=='active') { + valueText=oUserStates[jIndex].setName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_active.png"; + } else { + valueText=oUserStates[jIndex].resetName; + image=dss.staticDataModel.baseImagePath + "state/uds_state_inactive.png"; + } + sStringValue= Ext.String.format2(_("Customstate {state} change to {value}"),{state:oUserStates[jIndex].displayName,value:valueText}); + } + } + } var sString = '<td style="'+sError+'padding-right:5px;"></td>'; if (image!=null) @@ -2227,84 +2244,86 @@ Ext.define('DSS.component.recurrenceColumn', { var fSo = false; if (val.timeArray!=null) { var recObject = val.timeArray; - if (recObject.length == 7) { - var fActive=view.up().isFieldActive(record); - if (!fActive) - return '<span style="color:grey;">'+sString + _("daily") + "</span>"+'</span>'; - else - return sString + _("daily") + "</span>"; - } + if (recObject) { + if (recObject.length == 7) { + var fActive=view.up().isFieldActive(record); + if (!fActive) + return '<span style="color:grey;">'+sString + _("daily") + "</span>"+'</span>'; + else + return sString + _("daily") + "</span>"; + } - for ( var iIndex = 0; iIndex < recObject.length; iIndex++) { - if (recObject[iIndex] == 'MO') - fMo = true; - if (recObject[iIndex] == 'TU') - fDi = true; - if (recObject[iIndex] == 'WE') - fMi = true; - if (recObject[iIndex] == 'TH') - fDo = true; - if (recObject[iIndex] == 'FR') - fFr = true; - if (recObject[iIndex] == 'SA') - fSa = true; - if (recObject[iIndex] == 'SU') - fSo = true; - } - if (recObject.length == 2) - if (fSa) - if (fSo) { - var fActive=view.up().isFieldActive(record); - if (!fActive) - return '<span style="color:grey;">'+sString + _('on weekends')+'</span>'+'</span>'; - else - return sString + _('on weekends')+'</span>'; - } + for ( var iIndex = 0; iIndex < recObject.length; iIndex++) { + if (recObject[iIndex] == 'MO') + fMo = true; + if (recObject[iIndex] == 'TU') + fDi = true; + if (recObject[iIndex] == 'WE') + fMi = true; + if (recObject[iIndex] == 'TH') + fDo = true; + if (recObject[iIndex] == 'FR') + fFr = true; + if (recObject[iIndex] == 'SA') + fSa = true; + if (recObject[iIndex] == 'SU') + fSo = true; + } + if (recObject.length == 2) + if (fSa) + if (fSo) { + var fActive=view.up().isFieldActive(record); + if (!fActive) + return '<span style="color:grey;">'+sString + _('on weekends')+'</span>'+'</span>'; + else + return sString + _('on weekends')+'</span>'; + } - if (recObject.length == 5) - if (fMo) + if (recObject.length == 5) + if (fMo) + if (fDi) + if (fMi) + if (fDo) + if (fFr) { + var fActive=view.up().isFieldActive(record); + if (!fActive) + return '<span style="color:grey;">'+sString + _('MO-FR')+'</span>'+'</span>'; + else + return sString + _('MO-FR')+'</span>'; + } + if (recObject.length == 1) { + if (fMo) + sString += _("on monday")+"</span>"; if (fDi) - if (fMi) - if (fDo) - if (fFr) { - var fActive=view.up().isFieldActive(record); - if (!fActive) - return '<span style="color:grey;">'+sString + _('MO-FR')+'</span>'+'</span>'; - else - return sString + _('MO-FR')+'</span>'; - } - if (recObject.length == 1) { - if (fMo) - sString += _("on monday")+"</span>"; - if (fDi) - sString += _("on tuesday")+"</span>"; - if (fMi) - sString += _("on wednesday")+"</span>"; - if (fDo) - sString += _("on thursday")+"</span>"; - if (fFr) - sString += _("on friday")+"</span>"; - if (fSa) - sString += _("on saturday")+"</span>"; - if (fSo) - sString += _("on sunday")+"</span>"; - - var fActive=view.up().isFieldActive(record); - if (!fActive) - return '<span style="color:grey;">'+sString+'</span>'; - else - return sString; + sString += _("on tuesday")+"</span>"; + if (fMi) + sString += _("on wednesday")+"</span>"; + if (fDo) + sString += _("on thursday")+"</span>"; + if (fFr) + sString += _("on friday")+"</span>"; + if (fSa) + sString += _("on saturday")+"</span>"; + if (fSo) + sString += _("on sunday")+"</span>"; + + var fActive=view.up().isFieldActive(record); + if (!fActive) + return '<span style="color:grey;">'+sString+'</span>'; + else + return sString; - } - if (recObject.length == 0) { + } + if (recObject.length == 0) { - var fActive=view.up().isFieldActive(record); - if (!fActive) - return '<span style="color:grey;">'+sString + _("no time defined")+'</span></span>'; - else - return sString + _("no time defined")+"</span>"; + var fActive=view.up().isFieldActive(record); + if (!fActive) + return '<span style="color:grey;">'+sString + _("no time defined")+'</span></span>'; + else + return sString + _("no time defined")+"</span>"; + } } } else { var fActive=view.up().isFieldActive(record); @@ -2630,72 +2649,74 @@ Ext.apply(Ext.data.SortTypes, { var fFr = false; var fSa = false; var fSo = false; - if (recObject.length == 7) - return 0; - for ( var iIndex = 0; iIndex < recObject.length; iIndex++) { - if (recObject[iIndex] == 'MO') - fMo = true; - if (recObject[iIndex] == 'TU') - fDi = true; - if (recObject[iIndex] == 'WE') - fMi = true; - if (recObject[iIndex] == 'TH') - fDo = true; - if (recObject[iIndex] == 'FR') - fFr = true; - if (recObject[iIndex] == 'SA') - fSa = true; - if (recObject[iIndex] == 'SU') - fSo = true; - } - if (fSa) - if (fSo) - if (!fMo) - if (!fDi) - if (!fMi) - if (!fDo) - if (!fFr) - return 20; - if (!fSa) - if (!fSo) - if (fMo) - if (fDi) - if (fMi) - if (fDo) - if (fFr) - return 10; - if (recObject.length!=1) { - var iReturnValue=100; - if (fMo) - iReturnValue+=1; - if (fDi) - iReturnValue+=2; - if (fMi) - iReturnValue+=4; - if (fDo) - iReturnValue+=8; - if (fFr) - iReturnValue+=16; - if (fSa) - iReturnValue+=32; - if (fSa) - iReturnValue+=64; - return iReturnValue; - } else { - if (fMo) - return 201; - if (fDi) - return 202; - if (fMi) - return 203; - if (fDo) - return 204; - if (fFr) - return 205; + if (recObject) { + if (recObject.length == 7) + return 0; + for ( var iIndex = 0; iIndex < recObject.length; iIndex++) { + if (recObject[iIndex] == 'MO') + fMo = true; + if (recObject[iIndex] == 'TU') + fDi = true; + if (recObject[iIndex] == 'WE') + fMi = true; + if (recObject[iIndex] == 'TH') + fDo = true; + if (recObject[iIndex] == 'FR') + fFr = true; + if (recObject[iIndex] == 'SA') + fSa = true; + if (recObject[iIndex] == 'SU') + fSo = true; + } if (fSa) - return 206; - if (fSo) - return 207; + if (fSo) + if (!fMo) + if (!fDi) + if (!fMi) + if (!fDo) + if (!fFr) + return 20; + if (!fSa) + if (!fSo) + if (fMo) + if (fDi) + if (fMi) + if (fDo) + if (fFr) + return 10; + if (recObject.length!=1) { + var iReturnValue=100; + if (fMo) + iReturnValue+=1; + if (fDi) + iReturnValue+=2; + if (fMi) + iReturnValue+=4; + if (fDo) + iReturnValue+=8; + if (fFr) + iReturnValue+=16; + if (fSa) + iReturnValue+=32; + if (fSa) + iReturnValue+=64; + return iReturnValue; + } else { + if (fMo) + return 201; + if (fDi) + return 202; + if (fMi) + return 203; + if (fDo) + return 204; + if (fFr) + return 205; + if (fSa) + return 206; + if (fSo) + return 207; + } } } return 1000; @@ -3021,7 +3042,7 @@ Ext.define('DSS.gridPanel' ,{ this.on({ selectionchange: function(view, selections, options) { if (me.inactiveField!=null) { - if (selections.length > 0) { + if (selections) { for (var iIndex=0;iIndex<selections.length;iIndex++) { if (selections[iIndex].get(me.inactiveField)==true) { view.deselect(selections[iIndex]); @@ -3135,9 +3156,11 @@ Ext.define('DSS.gridPanel' ,{ }, editSelectedRecord: function () { var oParams = {}; - for (var iIndex=0;iIndex<this.curSelectedEvent.fields.items.length;iIndex++) { - var sKey=this.curSelectedEvent.fields.items[iIndex].name; - oParams[sKey] = this.curSelectedEvent.get(sKey); + if (this.curSelectedEvent && this.curSelectedEvent.fields && this.curSelectedEvent.fields.items) { + for (var iIndex=0;iIndex<this.curSelectedEvent.fields.items.length;iIndex++) { + var sKey=this.curSelectedEvent.fields.items[iIndex].name; + oParams[sKey] = this.curSelectedEvent.get(sKey); + } } this.editorWindow.show(); this.editorWindow.setValues(oParams); diff --git a/js/dss/dss-wizard-dialog.js b/js/dss/dss-wizard-dialog.js index 86e5b399..de3aa8a5 100644 --- a/js/dss/dss-wizard-dialog.js +++ b/js/dss/dss-wizard-dialog.js @@ -13,7 +13,7 @@ Ext.define('DSS.component.Wizard', { makeControl : function(subConfig) { var oControl; switch (subConfig.type) { - + case 'hidden': { var oPseudoControl = { value : null @@ -40,7 +40,7 @@ Ext.define('DSS.component.Wizard', { try { var iHeight=oControl.getHeight(); this.innerHeight -= iHeight; - } + } catch (e) { this.innerHeight -= 22; } @@ -65,21 +65,24 @@ Ext.define('DSS.component.Wizard', { validatePage: function () { var fNext=true; var pageDef=this.pageDefinition[this.actIndex]; - if (pageDef!=null) + if (pageDef && pageDef.controls) { for (var iIndex=0;iIndex<pageDef.controls.length;iIndex++) { var id=pageDef.controls[iIndex].id; if (this.editControls[id].isValid()==false) fNext=false; } + } this.buttonNext.setDisabled(!fNext); this.buttonFinish.setDisabled(!fNext); }, takeOverValue:function() { var pageDef=this.pageDefinition[this.actIndex]; - for (var iIndex=0;iIndex<pageDef.controls.length;iIndex++) { - var id=pageDef.controls[iIndex].id; - this.value[id]=this.editControls[id].getValue(); - } + if (pageDef && pageDef.controls) { + for (var iIndex=0;iIndex<pageDef.controls.length;iIndex++) { + var id=pageDef.controls[iIndex].id; + this.value[id]=this.editControls[id].getValue(); + } + } }, constructor : function(config) { config.closeAction = 'hide'; @@ -95,11 +98,11 @@ Ext.define('DSS.component.Wizard', { this.editControls={}; this.oPages=[]; this.innerHeight = 427; - + this.addEvents({ change : true }); - + var me = this; var sCancelText=_('cancel'); if (config.cancelTitle!=null) { @@ -127,8 +130,8 @@ Ext.define('DSS.component.Wizard', { if (config.finishFunc!=null) { this.finishFunc=config.finishFunc; } - - if ((config.hideBack==null) ||(config.hideBack==false)) { + + if ((config.hideBack==null) ||(config.hideBack==false)) { me.buttonBack = Ext.create('Ext.Button', { text : sBackText, handler : function() { @@ -139,11 +142,11 @@ Ext.define('DSS.component.Wizard', { me.leftPanel.getSelectionModel().select(nextRecord); else me.leftPanel.getSelectionModel().deselectAll(); - + } }); } - if ((config.hideCancel==null) ||(config.hideCancel==false)) { + if ((config.hideCancel==null) ||(config.hideCancel==false)) { me.buttonCancel = Ext.create('Ext.Button', { text : sCancelText, handler : function() { @@ -207,7 +210,7 @@ Ext.define('DSS.component.Wizard', { } } }) - + if (config.startDescription != null) { this.oStartPage=Ext.create('Ext.panel.Panel', { border : 0, @@ -221,7 +224,7 @@ Ext.define('DSS.component.Wizard', { this.leftStore.add({ _id:-3, name:'', - value:null + value:null }); for (var iIndex=0;iIndex<config.pages.length;iIndex++) { var pageDef=config.pages[iIndex]; @@ -229,22 +232,21 @@ Ext.define('DSS.component.Wizard', { definition:pageDef, name:pageDef.shortTitle, _id:iIndex+1, - value:null}); + value:null}); var items=[ { xtype:'label', text:pageDef.longDescription }]; - if (pageDef.controls!=null) - if (pageDef.controls.length>0) { - for(var kIndex=0;kIndex<pageDef.controls.length;kIndex++){ - var oControl=this.makeControl(pageDef.controls[kIndex]); - oControl.on('change', function() { - me.validatePage(); - }); - - items.push(oControl); - } - } + if (pageDef.controls) { + for(var kIndex=0;kIndex<pageDef.controls.length;kIndex++){ + var oControl=this.makeControl(pageDef.controls[kIndex]); + oControl.on('change', function() { + me.validatePage(); + }); + + items.push(oControl); + } + } var page=Ext.create('Ext.panel.Panel', { border : 0, width:"100%", @@ -253,8 +255,8 @@ Ext.define('DSS.component.Wizard', { hidden:true }); this.oPages.push(page); - - + + } var fSkipLeftFinish=false; if (config.hideLeftFinish!=null) @@ -271,8 +273,8 @@ Ext.define('DSS.component.Wizard', { value:null }); } - } - + } + this.displayBottomText=Ext.create('Ext.form.field.Display', { border : 0, value:'', @@ -283,7 +285,7 @@ Ext.define('DSS.component.Wizard', { flex:1 }); var oButtons=[this.displayBottomText]; - + if (me.buttonStart!=null) oButtons.push(me.buttonStart); if (me.buttonBack!=null) @@ -294,16 +296,16 @@ Ext.define('DSS.component.Wizard', { oButtons.push(me.buttonFinish); if (me.buttonCancel!=null) oButtons.push(me.buttonCancel); - - var insideItems=Ext.create("Ext.panel.Panel", { + + var insideItems=Ext.create("Ext.panel.Panel", { bodyPadding : 10, border:"1px", items:this.oPages }); insideItems.add(this.oStartPage); insideItems.updateLayout(); - - + + this.leftPanel=Ext.create('Ext.grid.Panel', { store:this.leftStore, border : 0, @@ -327,7 +329,7 @@ Ext.define('DSS.component.Wizard', { }], width:100 }); - + this.leftPanel.on('beforeselect', function(grid, record) { var fResult=true; if (record.get('_id')<0) @@ -344,17 +346,17 @@ Ext.define('DSS.component.Wizard', { else me.leftPanel.getSelectionModel().deselectAll(); } - } + } return fResult; }); - + this.leftPanel.on('selectionchange',function(view, selections) { if (selections.length==1) { var index=selections[0].get('_id'); me.setStep(index-1); - } + } }); - + this.topIndicator=Ext.create('Ext.form.Label' , { text: 'Wizzard!' }) @@ -364,7 +366,7 @@ Ext.define('DSS.component.Wizard', { padding: '10 0 0 10', height:40 }); - + Ext.apply(me, { items : [{ xtype : 'panel', @@ -396,26 +398,28 @@ Ext.define('DSS.component.Wizard', { if (oStartValues!=null) { this.value=oStartValues; } - + this.show(); if (this.oStartPage!=null) this.setStep(-1); else - this.setStep(0); - + this.setStep(0); + }, setStep: function (selIndex) { this.actIndex=selIndex; if (this.oStartPage!=null) this.oStartPage.setVisible(selIndex==-1) - for (var iIndex=0;iIndex<this.oPages.length;iIndex++) - this.oPages[iIndex].setVisible(iIndex==selIndex); + if (this.oPages) { + for (var iIndex=0;iIndex<this.oPages.length;iIndex++) + this.oPages[iIndex].setVisible(iIndex==selIndex); + } this.buttonStart.setVisible(selIndex==-1); this.buttonNext.setVisible((selIndex<(this.oPages.length-1)) && (selIndex>=0)); this.buttonFinish.setVisible(selIndex==(this.oPages.length-1)); this.buttonBack.setVisible(selIndex>0); - + if (selIndex==-1) { this.topIndicator.setText(this.startLongTitle); } else { @@ -425,11 +429,12 @@ Ext.define('DSS.component.Wizard', { if (this.actIndex==-1) return; var pageDef=this.pageDefinition[this.actIndex]; - for (var iIndex=0;iIndex<pageDef.controls.length;iIndex++) { - var id=pageDef.controls[iIndex].id; - this.editControls[id].setValue(this.value[id],this.value); - } + if (pageDef && pageDef.controls) { + for (var iIndex=0;iIndex<pageDef.controls.length;iIndex++) { + var id=pageDef.controls[iIndex].id; + this.editControls[id].setValue(this.value[id],this.value); + } + } } - -}); +}); -- GitLab