Some small refactoring

This commit is contained in:
Ziver Koc 2021-04-29 01:10:45 +02:00
parent edaa23f0f6
commit 5716584772
15 changed files with 161 additions and 68 deletions

View file

@ -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>

View file

@ -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);
}

View file

@ -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>

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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

View file

@ -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);

View file

@ -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;
}

View file

@ -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;

View file

@ -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);

View file

@ -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;
}

View file

@ -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;
}