Some small refactoring
This commit is contained in:
parent
edaa23f0f6
commit
5716584772
15 changed files with 161 additions and 68 deletions
|
|
@ -122,9 +122,9 @@
|
|||
<div class="form-group">
|
||||
<label class="control-label">Type:</label>
|
||||
<select class="form-control" name="type">
|
||||
{{#availableEvents}}
|
||||
{{#availableEventConfigClasses}}
|
||||
<option>{{.getName()}}</option>
|
||||
{{/availableEvents}}
|
||||
{{/availableEventConfigClasses}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
|
@ -142,7 +142,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div id="event-data-conf-template" class="hidden">
|
||||
{{#localEventConf}}
|
||||
{{#availableEventObjectConfig}}
|
||||
<div id="{{.clazz.getName()}}">
|
||||
{{#.params}}
|
||||
<div class="form-group">
|
||||
|
|
@ -158,6 +158,6 @@
|
|||
</div>
|
||||
{{/.params}}
|
||||
</div>
|
||||
{{/localEventConf}}
|
||||
{{/availableEventObjectConfig}}
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,16 @@
|
|||
///////////////////////////////// Autostart
|
||||
// --------------------------------------------------------
|
||||
// Autostart
|
||||
// --------------------------------------------------------
|
||||
|
||||
$(function(){
|
||||
$(".toggle-switch").bootstrapSwitch();
|
||||
|
||||
$(".timestamp").relTimestamp();
|
||||
});
|
||||
|
||||
////////////////////////////////////// JQuery helper functions
|
||||
// --------------------------------------------------------
|
||||
// JQuery helper functions
|
||||
// --------------------------------------------------------
|
||||
|
||||
// $.attr() # returns all attributes of an element
|
||||
(function(old) {
|
||||
|
|
@ -28,7 +33,11 @@ $(function(){
|
|||
};
|
||||
})($.fn.attr);
|
||||
|
||||
// converts all timestamps to human readable time and date
|
||||
// --------------------------------------------------------
|
||||
// Timestamps
|
||||
// --------------------------------------------------------
|
||||
|
||||
// Converts all timestamps to human readable time and date
|
||||
$.fn.relTimestamp = function() {
|
||||
return this.each(function() {
|
||||
var timestamp = parseInt($(this).text());
|
||||
|
|
@ -45,10 +54,10 @@ $.fn.relTimestamp = function() {
|
|||
});
|
||||
};
|
||||
|
||||
// --------------------------------------------------------
|
||||
// Chart functions
|
||||
// --------------------------------------------------------
|
||||
|
||||
////////////////////////////////////// Hal functions
|
||||
|
||||
////////////// Chart functions
|
||||
function createChart(elementId, url, updateTime=-1){
|
||||
var tickConf = {count: 20};
|
||||
if (updateTime < 60*60*1000)
|
||||
|
|
@ -127,30 +136,33 @@ function getChartData(json){
|
|||
};
|
||||
}
|
||||
|
||||
////////////// Dynamic forms
|
||||
// --------------------------------------------------------
|
||||
// Dynamic forms
|
||||
// --------------------------------------------------------
|
||||
|
||||
var dynamicConf = {};
|
||||
|
||||
function initDynamicModalForm(modalId, formTemplateId = null, templateID = null){
|
||||
// read in all configurations into global variable (to skip naming issues)
|
||||
if (formTemplateId != null) {
|
||||
dynamicConf[formTemplateId] = [];
|
||||
$("#"+templateID+" div").each(function(){
|
||||
$("#" + templateID + " div").each(function(){
|
||||
dynamicConf[formTemplateId][$(this).attr("id")] = $(this).html();
|
||||
});
|
||||
// Update dynamic inputs
|
||||
$("#"+modalId+" select[name=type]").change(function(){
|
||||
$("#"+modalId+" #"+formTemplateId).html(dynamicConf[formTemplateId][$(this).val()]);
|
||||
$("#" + modalId + " select[name=type]").change(function(){
|
||||
$("#" + modalId + " #" + formTemplateId).html(dynamicConf[formTemplateId][$(this).val()]);
|
||||
});
|
||||
}
|
||||
|
||||
// click event
|
||||
$("#"+modalId).on('show.bs.modal', function (event) {
|
||||
$("#" + modalId).on('show.bs.modal', function (event) {
|
||||
var button = $(event.relatedTarget);
|
||||
var modal = $(this);
|
||||
|
||||
// Reset all inputs
|
||||
if (formTemplateId != null)
|
||||
modal.find("#"+formTemplateId).empty(); // clear form div
|
||||
modal.find("#" + formTemplateId).empty(); // clear form div
|
||||
|
||||
// select dynamic form
|
||||
var selector = modal.find("select[name=type]");
|
||||
|
|
@ -169,7 +181,7 @@ function initDynamicModalForm(modalId, formTemplateId = null, templateID = null)
|
|||
if (value=="true") input.attr("checked", "true");
|
||||
else input.removeAttr("checked");
|
||||
// Add default false value as a unchecked checkbox is not included in the post
|
||||
input.parent().prepend("<input type='hidden' name='"+input.attr("name")+"' value='false' />");
|
||||
input.parent().prepend("<input type='hidden' name='" + input.attr("name") + "' value='false' />");
|
||||
} else {
|
||||
input.val(value);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -224,9 +224,9 @@
|
|||
<div class="form-group">
|
||||
<label class="control-label">Type:</label>
|
||||
<select class="form-control" name="type">
|
||||
{{#availableSensors}}
|
||||
{{#availableSensorConfigClasses}}
|
||||
<option>{{.getName()}}</option>
|
||||
{{/availableSensors}}
|
||||
{{/availableSensorConfigClasses}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
|
|
@ -251,7 +251,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div id="sensor-data-conf-template" class="hidden">
|
||||
{{#localSensorConf}}
|
||||
{{#availableSensorObjectConfig}}
|
||||
<div id="{{.clazz.getName()}}">
|
||||
{{#.params}}
|
||||
<div class="form-group">
|
||||
|
|
@ -267,7 +267,7 @@
|
|||
</div>
|
||||
{{/.params}}
|
||||
</div>
|
||||
{{/localSensorConf}}
|
||||
{{/availableSensorObjectConfig}}
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ public class EventControllerManager extends HalAbstractControllerManager<HalEven
|
|||
* Registers a Event class type as usable by the manager
|
||||
*/
|
||||
@Override
|
||||
public void addAvailableDevice(Class<? extends HalEventConfig> eventClass) {
|
||||
public void addAvailableDeviceConfig(Class<? extends HalEventConfig> eventClass) {
|
||||
if (!availableEvents.contains(eventClass))
|
||||
availableEvents.add(eventClass);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ public class SensorControllerManager extends HalAbstractControllerManager<HalAbs
|
|||
* Registers a Sensor class type as usable by the manager
|
||||
*/
|
||||
@Override
|
||||
public void addAvailableDevice(Class<? extends HalSensorConfig> sensorConfigClass) {
|
||||
public void addAvailableDeviceConfig(Class<? extends HalSensorConfig> sensorConfigClass) {
|
||||
if (!availableSensors.contains(sensorConfigClass))
|
||||
availableSensors.add(sensorConfigClass);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public abstract class HalAbstractControllerManager<T extends HalAbstractControll
|
|||
|
||||
if (genericClasses.length >= 1 && genericClasses[0] != null) {
|
||||
for (Iterator<Class<C>> it = pluginManager.getClassIterator(genericClasses[0]); it.hasNext(); ) {
|
||||
addAvailableDevice(it.next());
|
||||
addAvailableDeviceConfig(it.next());
|
||||
}
|
||||
} else {
|
||||
logger.severe("Unable to retrieve Controller class from generics.");
|
||||
|
|
@ -63,7 +63,7 @@ public abstract class HalAbstractControllerManager<T extends HalAbstractControll
|
|||
/**
|
||||
* Registers a device configuration class type as usable by the manager
|
||||
*/
|
||||
public abstract void addAvailableDevice(Class<? extends C> deviceConfigClass);
|
||||
public abstract void addAvailableDeviceConfig(Class<? extends C> deviceConfigClass);
|
||||
|
||||
/**
|
||||
* @return a List of all available devices that can be registered with this manager
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@ package se.hal.intf;
|
|||
import java.util.concurrent.ScheduledExecutorService;
|
||||
|
||||
/**
|
||||
* Defines a stand alone process that will run parallel to Hal
|
||||
* Defines a standalone process that will run parallel to the main application
|
||||
*/
|
||||
public interface HalDaemon extends Runnable {
|
||||
|
||||
/**
|
||||
* Setup the execution of the daemon with the provided executor.
|
||||
*
|
||||
* @param executor the scheduler provided by HAL for the daemon to setup its execution.
|
||||
* @param executor the scheduler provided for the daemon to setup its execution.
|
||||
*/
|
||||
void initiate(ScheduledExecutorService executor);
|
||||
|
||||
|
|
|
|||
|
|
@ -22,14 +22,13 @@ public class EventConfigWebPage extends HalWebPage {
|
|||
private static final Logger logger = LogUtil.getLogger();
|
||||
private static final String TEMPLATE = HalContext.RESOURCE_WEB_ROOT + "/event_config.tmpl";
|
||||
|
||||
private ArrayList<ClassConfigurationData> eventConfigurations;
|
||||
private ArrayList<ClassConfigurationData> eventConfigurations = new ArrayList<>();
|
||||
|
||||
|
||||
public EventConfigWebPage() {
|
||||
super("event_config");
|
||||
super.getRootNav().createSubNav("Settings").createSubNav(this.getId(), "Event Settings").setWeight(200);
|
||||
|
||||
eventConfigurations = new ArrayList<>();
|
||||
for (Class c : EventControllerManager.getInstance().getAvailableDeviceConfigs())
|
||||
eventConfigurations.add(new ClassConfigurationData(c));
|
||||
}
|
||||
|
|
@ -50,7 +49,6 @@ public class EventConfigWebPage extends HalWebPage {
|
|||
Event event;
|
||||
|
||||
switch(request.get("action")) {
|
||||
// Local events
|
||||
case "create_local_event":
|
||||
logger.info("Creating new event: " + request.get("name"));
|
||||
event = new Event();
|
||||
|
|
@ -110,9 +108,9 @@ public class EventConfigWebPage extends HalWebPage {
|
|||
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
|
||||
tmpl.set("user", localUser);
|
||||
tmpl.set("localEvents", Event.getLocalEvents(db));
|
||||
tmpl.set("localEventConf", eventConfigurations);
|
||||
tmpl.set("detectedEvents", EventControllerManager.getInstance().getDetectedDevices());
|
||||
tmpl.set("availableEvents", EventControllerManager.getInstance().getAvailableDeviceConfigs());
|
||||
tmpl.set("availableEventConfigClasses", EventControllerManager.getInstance().getAvailableDeviceConfigs());
|
||||
tmpl.set("availableEventObjectConfig", eventConfigurations);
|
||||
|
||||
return tmpl;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,11 +174,11 @@ public class SensorConfigWebPage extends HalWebPage {
|
|||
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
|
||||
tmpl.set("user", localUser);
|
||||
tmpl.set("localSensors", Sensor.getLocalSensors(db));
|
||||
tmpl.set("localSensorConf", sensorConfigurations);
|
||||
tmpl.set("detectedSensors", SensorControllerManager.getInstance().getDetectedDevices());
|
||||
tmpl.set("extUsers", User.getExternalUsers(db));
|
||||
tmpl.set("extSensor", Sensor.getExternalSensors(db));
|
||||
tmpl.set("availableSensors", SensorControllerManager.getInstance().getAvailableDeviceConfigs());
|
||||
tmpl.set("availableSensorConfigClasses", SensorControllerManager.getInstance().getAvailableDeviceConfigs());
|
||||
tmpl.set("availableSensorObjectConfig", sensorConfigurations);
|
||||
|
||||
return tmpl;
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ public class SensorOverviewWebPage extends HalWebPage {
|
|||
DBConnection db = HalContext.getDB();
|
||||
int id = (ObjectUtil.isEmpty(request.get("id")) ? -1 : Integer.parseInt(request.get("id")));
|
||||
|
||||
// Save new input
|
||||
if (id >= 0) {
|
||||
Sensor sensor = Sensor.getSensor(db, id);
|
||||
|
||||
|
|
|
|||
|
|
@ -20,17 +20,17 @@ public class EventControllerManagerTest {
|
|||
public void addAvailableEventDevice(){
|
||||
assertEquals(0, manager.getAvailableDeviceConfigs().size());
|
||||
|
||||
manager.addAvailableDevice(TestEvent1.class);
|
||||
manager.addAvailableDeviceConfig(TestEvent1.class);
|
||||
assertEquals(1, manager.getAvailableDeviceConfigs().size());
|
||||
assertTrue(manager.getAvailableDeviceConfigs().contains(TestEvent1.class));
|
||||
|
||||
manager.addAvailableDevice(TestEvent2.class);
|
||||
manager.addAvailableDeviceConfig(TestEvent2.class);
|
||||
assertEquals(2, manager.getAvailableDeviceConfigs().size());
|
||||
assertTrue(manager.getAvailableDeviceConfigs().contains(TestEvent1.class));
|
||||
assertTrue(manager.getAvailableDeviceConfigs().contains(TestEvent2.class));
|
||||
|
||||
// Add duplicate Event
|
||||
manager.addAvailableDevice(TestEvent1.class);
|
||||
manager.addAvailableDeviceConfig(TestEvent1.class);
|
||||
assertEquals("No duplicate check",2, manager.getAvailableDeviceConfigs().size());
|
||||
}
|
||||
|
||||
|
|
@ -76,7 +76,7 @@ public class EventControllerManagerTest {
|
|||
private Event registerEvent(HalEventConfig config){
|
||||
Event Event = new Event();
|
||||
Event.setDeviceConfig(config);
|
||||
manager.addAvailableDevice(config.getClass());
|
||||
manager.addAvailableDeviceConfig(config.getClass());
|
||||
manager.register(Event);
|
||||
return Event;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,17 +20,17 @@ public class SensorControllerManagerTest {
|
|||
public void addAvailableDevice(){
|
||||
assertEquals(Collections.EMPTY_LIST, manager.getAvailableDeviceConfigs());
|
||||
|
||||
manager.addAvailableDevice(TestSensor1.class);
|
||||
manager.addAvailableDeviceConfig(TestSensor1.class);
|
||||
assertEquals(1, manager.getAvailableDeviceConfigs().size());
|
||||
assertTrue(manager.getAvailableDeviceConfigs().contains(TestSensor1.class));
|
||||
|
||||
manager.addAvailableDevice(TestSensor2.class);
|
||||
manager.addAvailableDeviceConfig(TestSensor2.class);
|
||||
assertEquals(2, manager.getAvailableDeviceConfigs().size());
|
||||
assertTrue(manager.getAvailableDeviceConfigs().contains(TestSensor1.class));
|
||||
assertTrue(manager.getAvailableDeviceConfigs().contains(TestSensor2.class));
|
||||
|
||||
// Add duplicate sensor
|
||||
manager.addAvailableDevice(TestSensor1.class);
|
||||
manager.addAvailableDeviceConfig(TestSensor1.class);
|
||||
assertEquals("No duplicate check",2, manager.getAvailableDeviceConfigs().size());
|
||||
}
|
||||
|
||||
|
|
@ -77,7 +77,7 @@ public class SensorControllerManagerTest {
|
|||
private Sensor registerSensor(HalSensorConfig config){
|
||||
Sensor sensor = new Sensor();
|
||||
sensor.setDeviceConfig(config);
|
||||
manager.addAvailableDevice(config.getClass());
|
||||
manager.addAvailableDeviceConfig(config.getClass());
|
||||
manager.register(sensor);
|
||||
return sensor;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue