Added scan button to Event and Sensor config pages

This commit is contained in:
Ziver Koc 2021-07-02 00:42:11 +02:00
parent 94bfbbd664
commit 81dc81a1ae
4 changed files with 79 additions and 6 deletions

View file

@ -62,9 +62,17 @@
<th>Configuration</th>
<th>
<form method="POST">
<button type="submit" class="btn btn-danger btn-xs pull-right" name="action" value="remove_all_detected_events">
<span class="glyphicon glyphicon-trash"></span>
</button>
<div class="btn-toolbar pull-right">
<button type="submit" class="btn btn-primary btn-xs" style="padding: 1px 20px;" name="action" value="start_scan" {{#scanning}}disabled{{/scanning}}>
{{#scanning}}<span class="glyphicon glyphicon-refresh anim-spin"></span>{{/scanning}}
{{^scanning}}<span class="glyphicon glyphicon-search"></span>{{/scanning}}
Scan
</button>
<button type="submit" class="btn btn-danger btn-xs pull-right" name="action" value="remove_all_detected_events">
<span class="glyphicon glyphicon-trash"></span>
</button>
</div>
</form>
</th>
</thead>

View file

@ -63,9 +63,17 @@
<th>Configuration</th>
<th>
<form method="POST">
<button type="submit" class="btn btn-danger btn-xs pull-right" name="action" value="remove_all_detected_sensors">
<span class="glyphicon glyphicon-trash"></span>
</button>
<div class="btn-toolbar pull-right">
<button type="submit" class="btn btn-primary btn-xs" style="padding: 1px 20px;" name="action" value="start_scan" {{#scanning}}disabled{{/scanning}}>
{{#scanning}}<span class="glyphicon glyphicon-refresh anim-spin"></span>{{/scanning}}
{{^scanning}}<span class="glyphicon glyphicon-search"></span>{{/scanning}}
Scan
</button>
<button type="submit" class="btn btn-danger btn-xs" name="action" value="remove_all_detected_sensors">
<span class="glyphicon glyphicon-trash"></span>
</button>
</div>
</form>
</th>
</thead>

View file

@ -2,6 +2,9 @@ package se.hal.page;
import se.hal.EventControllerManager;
import se.hal.HalContext;
import se.hal.intf.HalAbstractController;
import se.hal.intf.HalAbstractControllerManager;
import se.hal.intf.HalScannableController;
import se.hal.intf.HalWebPage;
import se.hal.util.ClassConfigurationFacade;
import se.hal.struct.Event;
@ -103,12 +106,33 @@ public class EventConfigWebPage extends HalWebPage {
case "remove_all_detected_events":
EventControllerManager.getInstance().clearDetectedDevices();
break;
case "start_scan":
for (HalAbstractController controller : HalAbstractControllerManager.getControllers()) {
if (controller instanceof HalScannableController) {
((HalScannableController) controller).startScan();
HalAlertManager.getInstance().addAlert(new UserMessage(
MessageLevel.SUCCESS, "Initiated scanning on controller: " + controller.getClass().getName(), MessageTTL.ONE_VIEW));
}
}
break;
}
}
// Is any scan active?
boolean scanning = false;
for (HalAbstractController controller : HalAbstractControllerManager.getControllers()) {
if (controller instanceof HalScannableController) {
scanning |= ((HalScannableController) controller).isScanning();
}
}
// Output
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
tmpl.set("user", localUser);
tmpl.set("scanning", scanning);
tmpl.set("localEvents", Event.getLocalEvents(db));
tmpl.set("detectedEvents", EventControllerManager.getInstance().getDetectedDevices());
tmpl.set("availableEventConfigClasses", EventControllerManager.getInstance().getAvailableDeviceConfigs());

View file

@ -2,6 +2,9 @@ package se.hal.page;
import se.hal.HalContext;
import se.hal.SensorControllerManager;
import se.hal.intf.HalAbstractController;
import se.hal.intf.HalAbstractControllerManager;
import se.hal.intf.HalScannableController;
import se.hal.intf.HalWebPage;
import se.hal.util.ClassConfigurationFacade;
import se.hal.struct.Sensor;
@ -52,7 +55,10 @@ public class SensorConfigWebPage extends HalWebPage {
User user;
switch(request.get("action")) {
// ----------------------------------------
// Local Sensors
// ----------------------------------------
case "create_local_sensor":
logger.info("Creating sensor: " + request.get("name"));
sensor = new Sensor();
@ -107,7 +113,21 @@ public class SensorConfigWebPage extends HalWebPage {
SensorControllerManager.getInstance().clearDetectedDevices();
break;
case "start_scan":
for (HalAbstractController controller : HalAbstractControllerManager.getControllers()) {
if (controller instanceof HalScannableController) {
((HalScannableController) controller).startScan();
HalAlertManager.getInstance().addAlert(new UserMessage(
MessageLevel.SUCCESS, "Initiated scanning on controller: " + controller.getClass().getName(), MessageTTL.ONE_VIEW));
}
}
break;
// ----------------------------------------
// External Users
// ----------------------------------------
case "create_external_user":
logger.info("Creating external user: " + request.get("hostname"));
user = new User();
@ -151,7 +171,10 @@ public class SensorConfigWebPage extends HalWebPage {
}
break;
// ----------------------------------------
// External Sensors
// ----------------------------------------
case "modify_external_sensor":
sensor = Sensor.getSensor(db, id);
if (sensor != null) {
@ -170,9 +193,19 @@ public class SensorConfigWebPage extends HalWebPage {
}
}
// Is any scan active?
boolean scanning = false;
for (HalAbstractController controller : HalAbstractControllerManager.getControllers()) {
if (controller instanceof HalScannableController) {
scanning |= ((HalScannableController) controller).isScanning();
}
}
// Output
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
tmpl.set("user", localUser);
tmpl.set("scanning", scanning);
tmpl.set("localSensors", Sensor.getLocalSensors(db));
tmpl.set("detectedSensors", SensorControllerManager.getInstance().getDetectedDevices());
tmpl.set("extUsers", User.getExternalUsers(db));