From 7e1a39e63bee67f5d14305b3f66e7d893c99d4ce Mon Sep 17 00:00:00 2001 From: Grzesiek Bylica Date: Mon, 3 Dec 2018 15:37:37 +0100 Subject: [PATCH 1/3] #761 correctings for reactivation data source httpRetriver --- .../form/SleepAndReactivationDS.vue | 90 ++++++++++++++----- .../jsp/dataSourceEdit/editHttpRetriever.jsp | 3 +- .../http/HttpRetrieverDataSourceRT.java | 4 +- .../http/HttpRetrieverDataSourceVO.java | 1 - .../mango/web/dwr/DataSourceEditDwr.java | 17 +++- .../ReactivationConnectHttpRetriever.java | 4 +- ...tivation.java => ReactivationManager.java} | 69 ++++++++++++-- .../web/mvc/api/ReactivationDsAPI.java | 86 +++++++++++++++++- 8 files changed, 229 insertions(+), 45 deletions(-) rename src/org/scada_lts/ds/reactivation/{MenagerReactivation.java => ReactivationManager.java} (61%) diff --git a/ScadaLTS-UI-1/src/components/form/SleepAndReactivationDS.vue b/ScadaLTS-UI-1/src/components/form/SleepAndReactivationDS.vue index 84c876a584..055564f092 100644 --- a/ScadaLTS-UI-1/src/components/form/SleepAndReactivationDS.vue +++ b/ScadaLTS-UI-1/src/components/form/SleepAndReactivationDS.vue @@ -15,7 +15,7 @@ + + + +
- + @@ -23,7 +23,15 @@ Hour Day - +
+
+ Start reactivation + Stop reactivation +
@@ -55,19 +63,25 @@ export default { INT_REACTIVATION_TYPE_TIME_MIN: 0, INT_REACTIVATION_TYPE_TIME_HOUR: 1, INT_REACTIVATION_TYPE_TIME_DAY: 2, + INT_REACTIVATION_NO_TIME: -1, STR_REACTIVATION_TYPE_NONE: "none", STR_REACTIVATION_TYPE_SLEEP: "sleep", STR_REACTIVATION_TYPE_STOP: "stop", TIME_REFRESH: 1000, + STR_REACTIVATION_RESPONSE_STARTED: "started", + STR_REACTIVATION_RESPONSE_STOPED: "stoped", + STR_REACTIVATION_RESPONSE_NO_CHANGE: "nothing_changed", + // reactivation: this.defaultReactivation(), reactivationTimeType: this.defaultTimeType(), - reactivationTimeValue: this.defaultValue(), - + reactivationTimeValue: this.defaultTimeValue(), idDs:0, + sleep:false, + runingReactivation: false, + timeToNextTryEnableDs:0 - timeToNextTryEnableDs: 0 }; }, methods: { @@ -77,16 +91,48 @@ export default { defaultTimeType() { return this.STR_REACTIVATION_TYPE_TIME_MIN }, - defaultValue() { + defaultTimeValue() { return 1 }, checkWhenNextTryEnableDs() { - const apiCheckReactivation = `./api/check-reactivation/${this.idDs}`; + const apiCheckReactivation = `./api/check-time-reactivation/${this.idDs}`; axios.get(apiCheckReactivation).then(response => { - this.timeToNextTryEnableDs = response.data; + if ( response.data == this.INT_REACTIVATION_NO_TIME) { + this.runingReactivation= false; + this.timeToNextTryEnableDs = 0; + } else { + this.timeToNextTryEnableDs = response.data; + this.runingReactivation= true; + } }).catch(error => { + this.runingReactivation = false; console.log(error); }); + }, + startReactivation() { + const apiStartReactivation= `./api/enable-reactivation/${this.idDs}`; + axios.post(apiStartReactivation).then(response => { + if ( + (response.data == this.STR_REACTIVATION_RESPONSE_STARTED) || + (response.data == this.STR_REACTIVATION_RESPONSE_NO_CHANGE) ) { + this.runingReactivation = true; + } + }).catch(error => { + console.log(error); + }); + }, + stopReactivation() { + const apiStopReactivation = `./api/disable-reactivation/${this.idDs}`; + axios.post(apiStopReactivation).then(response => { + if ( + (response.data == this.STR_REACTIVATION_RESPONSE_STOPED) || + (response.data == this.STR_REACTIVATION_RESPONSE_NO_CHANGE) ) { + this.runingReactivation = false; + this.timeToNextTryEnableDs = 0; + } + }).catch(error => { + console.log(error); + }); } }, created() { @@ -108,28 +154,19 @@ export default { this.reactivationTimeType = this.STR_REACTIVATION_TYPE_TIME_DAY } - this.reactivationValue = editDSNewUI.reactivation.value; + this.reactivationTimeValue = editDSNewUI.reactivation.value; this.idDs = editDSNewUI.id; setInterval( function() { - this.checkWhenNextTryEnableDs(); + this.checkWhenNextTryEnableDs(); }.bind(this), this.TIME_REFRESH ); }, watch: { - reactivationType() { - if (this.reactivationTimeType == this.STR_REACTIVATION_TYPE_TIME_MIN) { - editDSNewUI.reactivation.type = this.INT_REACTIVATION_TYPE_TIME_MIN - } else if (this.reactivationType == this.STR_REACTIVATION_TYPE_TIME_HOUR) { - editDSNewUI.reactivation.type = this.INT_REACTIVATION_TYPE_TIME_HOUR; - } else if (this.reactivationType == this.STR_REACTIVATION_TYPE_TIME_DAY) { - editDSNewUI.reactivation.type = this.INT_REACTIVATION_TYPE_TIME_DAY; - } - }, reactivation() { if (this.reactivation == this.STR_REACTIVATION_TYPE_SLEEP) { editDSNewUI.stop = false; @@ -142,14 +179,22 @@ export default { editDSNewUI.reactivation.sleep = false; } }, - reactivationValue() { - editDSNewUI.reactivation.value = this.reactivationValue; + reactivationTimeType() { + if (this.reactivationTimeType == this.STR_REACTIVATION_TYPE_TIME_MIN) { + editDSNewUI.reactivation.type = this.INT_REACTIVATION_TYPE_TIME_MIN + } else if (this.reactivationTimeType == this.STR_REACTIVATION_TYPE_TIME_HOUR) { + editDSNewUI.reactivation.type = this.INT_REACTIVATION_TYPE_TIME_HOUR; + } else if (this.reactivationTimeType == this.STR_REACTIVATION_TYPE_TIME_DAY) { + editDSNewUI.reactivation.type = this.INT_REACTIVATION_TYPE_TIME_DAY; + } + }, + reactivationTimeValue() { + editDSNewUI.reactivation.value = this.reactivationTimeValue; } }, filters: { infoTime: function (date) { var seconds = parseInt(date/1000); - var days = Math.floor(seconds / (3600*24)); seconds -= days*3600*24; var hrs = Math.floor(seconds / 3600); @@ -157,7 +202,6 @@ export default { var mnts = Math.floor(seconds / 60); seconds -= mnts*60; return days+" days, "+hrs+" Hrs, "+mnts+" Minutes, "+seconds+" Seconds"; - } }, }; diff --git a/WebContent/WEB-INF/jsp/dataSourceEdit/editHttpRetriever.jsp b/WebContent/WEB-INF/jsp/dataSourceEdit/editHttpRetriever.jsp index 6445cd7554..60da02d6d1 100644 --- a/WebContent/WEB-INF/jsp/dataSourceEdit/editHttpRetriever.jsp +++ b/WebContent/WEB-INF/jsp/dataSourceEdit/editHttpRetriever.jsp @@ -92,7 +92,7 @@ saveDataSourceCB ); } - + function appendPointListColumnFunctions(pointListColumnHeaders, pointListColumnFunctions) { pointListColumnHeaders[pointListColumnHeaders.length] = ""; pointListColumnFunctions[pointListColumnFunctions.length] = @@ -146,7 +146,6 @@ var timeRegexLen = $get("timeRegex").trim().length; display("timeFormatRow", timeRegexLen > 0); } - diff --git a/src/com/serotonin/mango/rt/dataSource/http/HttpRetrieverDataSourceRT.java b/src/com/serotonin/mango/rt/dataSource/http/HttpRetrieverDataSourceRT.java index c018c29582..20c4bbb272 100644 --- a/src/com/serotonin/mango/rt/dataSource/http/HttpRetrieverDataSourceRT.java +++ b/src/com/serotonin/mango/rt/dataSource/http/HttpRetrieverDataSourceRT.java @@ -37,7 +37,7 @@ import com.serotonin.web.i18n.LocalizableMessage; import org.scada_lts.ds.StartStopDsRT; import org.scada_lts.ds.model.ReactivationDs; -import org.scada_lts.ds.reactivation.MenagerReactivation; +import org.scada_lts.ds.reactivation.ReactivationManager; import org.scada_lts.ds.reactivation.ReactivationConnectHttpRetriever; import org.scada_lts.ds.state.SleepStateDs; import org.scada_lts.ds.state.StopChangeEnableStateDs; @@ -172,7 +172,7 @@ public String getData(String url, int timeoutSeconds, int retries, boolean stop, new Thread(stopDsRT).start(); } else if (retries == i && r.isSleep()) { ReactivationConnectHttpRetriever rhr = new ReactivationConnectHttpRetriever(); - MenagerReactivation.getInstance().addProcess(rhr, r, vo); + ReactivationManager.getInstance().addProcess(rhr, r, vo); StartStopDsRT stopDsRT = new StartStopDsRT(vo.getId(),false, new SleepStateDs()); new Thread(stopDsRT).start(); } diff --git a/src/com/serotonin/mango/vo/dataSource/http/HttpRetrieverDataSourceVO.java b/src/com/serotonin/mango/vo/dataSource/http/HttpRetrieverDataSourceVO.java index 999309b03f..4c0b787749 100644 --- a/src/com/serotonin/mango/vo/dataSource/http/HttpRetrieverDataSourceVO.java +++ b/src/com/serotonin/mango/vo/dataSource/http/HttpRetrieverDataSourceVO.java @@ -254,7 +254,6 @@ public void jsonSerialize(Map map) { serializeUpdatePeriodType(map, updatePeriodType); } - @Override public boolean checkToTrayEnable() { return isEnabled() || isStop() || reactivation.isSleep(); } diff --git a/src/com/serotonin/mango/web/dwr/DataSourceEditDwr.java b/src/com/serotonin/mango/web/dwr/DataSourceEditDwr.java index 990d0ce3c4..92dca52117 100644 --- a/src/com/serotonin/mango/web/dwr/DataSourceEditDwr.java +++ b/src/com/serotonin/mango/web/dwr/DataSourceEditDwr.java @@ -89,6 +89,7 @@ import com.serotonin.db.IntValuePair; import com.serotonin.io.StreamUtils; import org.scada_lts.ds.model.ReactivationDs; +import org.scada_lts.ds.reactivation.ReactivationManager; import org.scada_lts.modbus.SerialParameters; import com.serotonin.mango.Common; import com.serotonin.mango.DataTypes; @@ -139,7 +140,6 @@ import com.serotonin.mango.vo.dataSource.jmx.JmxPointLocatorVO; import com.serotonin.mango.vo.dataSource.mbus.MBusDataSourceVO; import com.serotonin.mango.vo.dataSource.mbus.MBusPointLocatorVO; -import com.serotonin.mango.vo.dataSource.mbus.MBusSearchByAddressing; import com.serotonin.mango.vo.dataSource.mbus.PrimaryAddressingSearch; import com.serotonin.mango.vo.dataSource.mbus.SecondaryAddressingSearch; import com.serotonin.mango.vo.dataSource.meta.MetaDataSourceVO; @@ -201,7 +201,6 @@ import com.serotonin.modbus4j.locator.BaseLocator; import com.serotonin.modbus4j.msg.ModbusRequest; import com.serotonin.modbus4j.msg.ReadResponse; -import com.serotonin.modbus4j.serial.SerialPortWrapper; import com.serotonin.util.IpAddressUtils; import com.serotonin.util.StringUtils; import com.serotonin.viconics.RequestFailureException; @@ -235,6 +234,7 @@ public DwrResponseI18n editInit() { } private DwrResponseI18n tryDataSourceSave(DataSourceVO ds) { + DwrResponseI18n response = new DwrResponseI18n(); ds.validate(response); @@ -1299,7 +1299,18 @@ public DwrResponseI18n saveHttpRetrieverDataSourceWithReactivationOptions(String ReactivationDs rDs = new ReactivationDs(sleep, typeReactivation, valueReactivation); ds.setReactivation(rDs); - return tryDataSourceSave(ds); + DwrResponseI18n result; + + if (ds.getId() > 0) { + ReactivationManager.getInstance().stopReactivation(ds.getId()); + } + result = tryDataSourceSave(ds); + + if (sleep) { + ReactivationManager.getInstance().startReactivation(ds.getId()); + } + + return result; } diff --git a/src/org/scada_lts/ds/reactivation/ReactivationConnectHttpRetriever.java b/src/org/scada_lts/ds/reactivation/ReactivationConnectHttpRetriever.java index c63207bc8b..684cc9c25f 100644 --- a/src/org/scada_lts/ds/reactivation/ReactivationConnectHttpRetriever.java +++ b/src/org/scada_lts/ds/reactivation/ReactivationConnectHttpRetriever.java @@ -28,7 +28,7 @@ public void execute(JobExecutionContext jobExecutionContext) throws JobExecution Key keyJob = jobExecutionContext.getJobDetail().getKey(); - Map.Entry entry = MenagerReactivation.getInstance().getId(keyJob.getName()); + Map.Entry entry = ReactivationManager.getInstance().getId(keyJob.getName()); int id = (int) entry.getValue(); String name = (String) entry.getKey(); @@ -46,7 +46,7 @@ public void execute(JobExecutionContext jobExecutionContext) throws JobExecution } finally { StartStopDsRT stopDsRT = new StartStopDsRT(id,true, new StartSleepStateDs()); new Thread(stopDsRT).start(); - MenagerReactivation.getInstance().removeInfoAboutJob(keyJob.getName()); + ReactivationManager.getInstance().removeInfoAboutJob(keyJob.getName()); } } else { // nothing to do diff --git a/src/org/scada_lts/ds/reactivation/MenagerReactivation.java b/src/org/scada_lts/ds/reactivation/ReactivationManager.java similarity index 61% rename from src/org/scada_lts/ds/reactivation/MenagerReactivation.java rename to src/org/scada_lts/ds/reactivation/ReactivationManager.java index d0a2b9b24e..4572049d1c 100644 --- a/src/org/scada_lts/ds/reactivation/MenagerReactivation.java +++ b/src/org/scada_lts/ds/reactivation/ReactivationManager.java @@ -1,12 +1,14 @@ package org.scada_lts.ds.reactivation; import com.serotonin.mango.vo.dataSource.DataSourceVO; +import com.serotonin.mango.vo.dataSource.http.HttpRetrieverDataSourceVO; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import org.quartz.utils.Key; import org.scada_lts.ds.model.ReactivationDs; +import org.scada_lts.mango.service.DataSourceService; import java.util.AbstractMap; import java.util.Date; @@ -16,9 +18,9 @@ /** * @autor grzegorz.bylica@gmail.com on 24.10.18 */ -public class MenagerReactivation { +public class ReactivationManager { - private static final Log LOG = LogFactory.getLog(MenagerReactivation.class); + private static final Log LOG = LogFactory.getLog(ReactivationManager.class); private static final long MINUTE_IN_MILISECONDS = 60_000; private static final long HOUR_IN_MILISECONDS = 3_600_000; @@ -29,10 +31,10 @@ public class MenagerReactivation { private ConcurrentHashMap> sleepDsIndexJobName = new ConcurrentHashMap>(); private ConcurrentHashMap sleepDsIndexIdDs = new ConcurrentHashMap<>(); - private static final MenagerReactivation instance = new MenagerReactivation(); + private static final ReactivationManager instance = new ReactivationManager(); private Scheduler scheduler; - public MenagerReactivation() { + public ReactivationManager() { try { this.scheduler = new StdSchedulerFactory().getScheduler(); this.scheduler.start(); @@ -41,7 +43,7 @@ public MenagerReactivation() { } } - public static MenagerReactivation getInstance() { + public static ReactivationManager getInstance() { return instance; } @@ -49,7 +51,7 @@ public void addProcess(StatefulJob sj, ReactivationDs rd, DataSourceVO vo) { LOG.info("addProcess"); JobDetail job = new JobDetail(); - job.setName(sj.toString()); + job.setName(vo.getXid()); job.setJobClass(sj.getClass()); AbstractMap.SimpleImmutableEntry dsInfo = new AbstractMap.SimpleImmutableEntry<>(vo.getName(), vo.getId()); @@ -93,14 +95,65 @@ public long getTimeToNextFire(int idDs) { int ERROR = -1; try { Key key = sleepDsIndexIdDs.get(idDs); - return scheduler.getTriggersOfJob(key.getName(), key.getGroup())[0].getNextFireTime().getTime() - new Date().getTime(); - } catch (SchedulerException e) { + + Trigger[] trigers = scheduler.getTriggersOfJob(key.getName(), key.getGroup()); + if (trigers.length > 0) { + return scheduler.getTriggersOfJob(key.getName(), key.getGroup())[0].getNextFireTime().getTime() - new Date().getTime(); + } else { + return ERROR; + } + } catch (Exception e) { LOG.error(e); } return ERROR; } + public boolean checkDsIsSleep(int idDs) { + boolean result = false; + + try { + Key key = sleepDsIndexIdDs.get(idDs); + Trigger[] triggers = scheduler.getTriggersOfJob(key.getName(), key.getGroup()); + if (triggers.length > 0) { + result = true; + } else { + sleepDsIndexIdDs.remove(idDs); + } + } catch (Exception e) { + result = false; + } + return result; + + } + + public void stopReactivation(int idDs) { + Key key = sleepDsIndexIdDs.get(idDs); + try { + if (key != null) { + scheduler.deleteJob(key.getName(), key.getGroup()); + } + } catch (SchedulerException e) { + LOG.error(e); + } finally { + if (key != null) { + removeInfoAboutJob(key.getName()); + } + } + } + + public void startReactivation(int idDs) { + Key key = sleepDsIndexIdDs.get(idDs); + try { + ReactivationConnectHttpRetriever rhr = new ReactivationConnectHttpRetriever(); + DataSourceService dsService = new DataSourceService(); + HttpRetrieverDataSourceVO vo = (HttpRetrieverDataSourceVO) dsService.getDataSource(idDs); + ReactivationManager.getInstance().addProcess(rhr, vo.getReactivation(), vo); + } catch (Exception e) { + LOG.error(e); + } + } + private long getAdditionalMilliseconds(ReactivationDs r) { if (r.getType() == ReactivationDs.TYPE_OF_SLEEP_MINUTE) { return r.getValue() * MINUTE_IN_MILISECONDS; diff --git a/src/org/scada_lts/web/mvc/api/ReactivationDsAPI.java b/src/org/scada_lts/web/mvc/api/ReactivationDsAPI.java index b20e73d715..ede48aeff7 100644 --- a/src/org/scada_lts/web/mvc/api/ReactivationDsAPI.java +++ b/src/org/scada_lts/web/mvc/api/ReactivationDsAPI.java @@ -4,7 +4,7 @@ import com.serotonin.mango.vo.User; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.scada_lts.ds.reactivation.MenagerReactivation; +import org.scada_lts.ds.reactivation.ReactivationManager; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; @@ -22,14 +22,19 @@ public class ReactivationDsAPI { private static final Log LOG = LogFactory.getLog(ReactivationDsAPI.class); - @RequestMapping(value = "/api/check-reactivation/{idDs}", method = RequestMethod.GET) - public ResponseEntity checkReactivation(@PathVariable(name="idDs") int idDs, HttpServletRequest request) { + private static final String REACTIVATION_RESPONSE_STARTED = "started"; + private static final String REACTIVATION_RESPONSE_STOPED = "stoped"; + private static final String REACTIVATION_RESPONSE_NO_CHANGE = "nothing_changed"; + + + @RequestMapping(value = "/api/check-time-reactivation/{idDs}", method = RequestMethod.GET) + public ResponseEntity checkTimeReactivation(@PathVariable(name="idDs") int idDs, HttpServletRequest request) { LOG.info("/api/check-reactivation/{idDs} idDs:" + idDs); try { User user = Common.getUser(request); if (user != null && user.isAdmin()) { - long time = MenagerReactivation.getInstance().getTimeToNextFire(idDs); + long time = ReactivationManager.getInstance().getTimeToNextFire(idDs); return new ResponseEntity(""+time, HttpStatus.OK); } else { return new ResponseEntity(HttpStatus.UNAUTHORIZED); @@ -38,4 +43,77 @@ public ResponseEntity checkReactivation(@PathVariable(name="idDs") int i return new ResponseEntity(e.toString(), HttpStatus.INTERNAL_SERVER_ERROR); } } + + @RequestMapping(value = "/api/check-enable-reactivation/{idDs}", method = RequestMethod.GET) + public ResponseEntity checkEnableReactivation(@PathVariable(name="idDs") int idDs, HttpServletRequest request) { + + LOG.info("/api/check-enable-reactivation/{idDs} idDs:" + idDs); + + try { + User user = Common.getUser(request); + if (user != null && user.isAdmin()) { + boolean sleep = ReactivationManager.getInstance().checkDsIsSleep(idDs); + return new ResponseEntity(""+sleep, HttpStatus.OK); + } else { + return new ResponseEntity(HttpStatus.UNAUTHORIZED); + } + }catch (Exception e) { + return new ResponseEntity(e.toString(), HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + @RequestMapping(value = "/api/disable-reactivation/{idDs}", method = RequestMethod.POST) + public ResponseEntity disableReactivation(@PathVariable(name="idDs") int idDs, HttpServletRequest request) { + + LOG.info("/api/disable-reactivation/{idDs} idDs:" + idDs); + + try { + User user = Common.getUser(request); + if (user != null && user.isAdmin()) { + boolean sleep = ReactivationManager.getInstance().checkDsIsSleep(idDs); + String result=""; + if (sleep) { + ReactivationManager.getInstance().stopReactivation(idDs); + result = REACTIVATION_RESPONSE_STOPED; + } else { + result = REACTIVATION_RESPONSE_NO_CHANGE; + } + return new ResponseEntity(""+result, HttpStatus.OK); + } else { + return new ResponseEntity(HttpStatus.UNAUTHORIZED); + } + }catch (Exception e) { + return new ResponseEntity(e.toString(), HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + + + + @RequestMapping(value = "/api/enable-reactivation/{idDs}", method = RequestMethod.POST) + public ResponseEntity enableReactivation(@PathVariable(name="idDs") int idDs, HttpServletRequest request) { + + LOG.info("/api/enable-reactivation/{idDs} idDs:" + idDs); + + try { + User user = Common.getUser(request); + if (user != null && user.isAdmin()) { + boolean sleep = ReactivationManager.getInstance().checkDsIsSleep(idDs); + String result=""; + if (!sleep) { + ReactivationManager.getInstance().startReactivation(idDs); + result = REACTIVATION_RESPONSE_STARTED; + } else { + result = REACTIVATION_RESPONSE_NO_CHANGE; + } + return new ResponseEntity(""+result, HttpStatus.OK); + } else { + return new ResponseEntity(HttpStatus.UNAUTHORIZED); + } + }catch (Exception e) { + return new ResponseEntity(e.toString(), HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + } From 516aae0d1c989556bc4cc1ea0fcf971e88a04e88 Mon Sep 17 00:00:00 2001 From: Grzesiek Bylica Date: Tue, 4 Dec 2018 12:09:05 +0100 Subject: [PATCH 2/3] #761 I removed the class "row" in the alarmList table - Because the class "row" is reserved for use in the Grid system --- WebContent/WEB-INF/snippet/alarmList.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebContent/WEB-INF/snippet/alarmList.jsp b/WebContent/WEB-INF/snippet/alarmList.jsp index 0a20aa94a8..c3f06e5ace 100644 --- a/WebContent/WEB-INF/snippet/alarmList.jsp +++ b/WebContent/WEB-INF/snippet/alarmList.jsp @@ -28,7 +28,7 @@ - Alt"> + Alt"> ${event.id} ${sst:time(event.activeTimestamp)} From e2fbdac94c2f35543da0bf9214e40bcbdbc8e99b Mon Sep 17 00:00:00 2001 From: Grzesiek Bylica Date: Tue, 4 Dec 2018 16:05:10 +0100 Subject: [PATCH 3/3] #761 I changed class css "row" to "rowTable" in views.jsp, and I added small correcting for RactivationManager.java --- WebContent/WEB-INF/jsp/views.jsp | 7 +++++++ WebContent/WEB-INF/snippet/alarmList.jsp | 2 +- src/org/scada_lts/ds/reactivation/ReactivationManager.java | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/WebContent/WEB-INF/jsp/views.jsp b/WebContent/WEB-INF/jsp/views.jsp index bbf78493a8..41f1f396a9 100644 --- a/WebContent/WEB-INF/jsp/views.jsp +++ b/WebContent/WEB-INF/jsp/views.jsp @@ -32,6 +32,13 @@ table { border-collapse: separate !important; border-spacing: 2px !important; + padding: 3px; + } + .rowTable { + background-color: #F0F0F0; + } + .rowTableAlt { + background-color: #DCDCDC; } diff --git a/WebContent/WEB-INF/snippet/alarmList.jsp b/WebContent/WEB-INF/snippet/alarmList.jsp index c3f06e5ace..122b4e8527 100644 --- a/WebContent/WEB-INF/snippet/alarmList.jsp +++ b/WebContent/WEB-INF/snippet/alarmList.jsp @@ -28,7 +28,7 @@ - Alt"> + Alt"> ${event.id} ${sst:time(event.activeTimestamp)} diff --git a/src/org/scada_lts/ds/reactivation/ReactivationManager.java b/src/org/scada_lts/ds/reactivation/ReactivationManager.java index 4572049d1c..cf556ba7b9 100644 --- a/src/org/scada_lts/ds/reactivation/ReactivationManager.java +++ b/src/org/scada_lts/ds/reactivation/ReactivationManager.java @@ -121,6 +121,7 @@ public boolean checkDsIsSleep(int idDs) { sleepDsIndexIdDs.remove(idDs); } } catch (Exception e) { + LOG.error(e); result = false; } return result;