Added more DemoData + Clean up

This commit is contained in:
Patrick Haßel 2021-11-08 14:39:06 +01:00
parent 3a5cfad535
commit 5a74795569
8 changed files with 67 additions and 28 deletions

View File

@ -36,7 +36,11 @@ export abstract class Device {
return item.title; return item.title;
} }
public static compareTitle(a: Device, b: Device): number { public static compareTypeThenTitle(a: Device, b: Device): number {
const type: number = -a.type.localeCompare(b.type);
if (type !== 0) {
return type;
}
return a.title.localeCompare(b.title); return a.title.localeCompare(b.title);
} }

View File

@ -35,8 +35,12 @@ export class Property {
return item.name; return item.name;
} }
public static compareName(a: Property, b: Property): number { public static compareTypeThenTitle(a: Property, b: Property): number {
return a.name.localeCompare(b.name); const type: number = -a.type.localeCompare(b.type);
if (type !== 0) {
return type;
}
return a.title.localeCompare(b.title);
} }
} }

View File

@ -1,4 +1,4 @@
<ng-container *ngFor="let device of devices.sort(Device.compareTitle); trackBy: Device.trackBy"> <ng-container *ngFor="let device of devices.sort(Device.compareTypeThenTitle); trackBy: Device.trackBy">
<ng-container [ngSwitch]="device.type"> <ng-container [ngSwitch]="device.type">
<div class="device" *ngSwitchCase="'DeviceSwitch'" [ngClass]="getSwitchClassList(device)"> <div class="device" *ngSwitchCase="'DeviceSwitch'" [ngClass]="getSwitchClassList(device)">
<div class="title"> <div class="title">

View File

@ -6,7 +6,7 @@
<th>Wert</th> <th>Wert</th>
<th>Zeitstempel</th> <th>Zeitstempel</th>
</tr> </tr>
<tr *ngFor="let property of properties"> <tr *ngFor="let property of properties.sort(Property.compareTypeThenTitle)">
<td> <td>
<app-edit-field [initial]="property.title" (valueChange)="setProperty(property, 'title', $event)"></app-edit-field> <app-edit-field [initial]="property.title" (valueChange)="setProperty(property, 'title', $event)"></app-edit-field>
</td> </td>

View File

@ -11,6 +11,8 @@ import {SceneService} from "../../api/scene/scene.service";
}) })
export class PropertyListComponent implements OnInit { export class PropertyListComponent implements OnInit {
Property = Property;
properties: Property[] = []; properties: Property[] = [];
scenes: Scene[] = []; scenes: Scene[] = [];
@ -23,7 +25,7 @@ export class PropertyListComponent implements OnInit {
} }
ngOnInit(): void { ngOnInit(): void {
this.propertyService.findAll(properties => this.properties = properties, Property.compareName); this.propertyService.findAll(properties => this.properties = properties, Property.compareTypeThenTitle);
this.propertyService.subscribe(update => this.updateProperty(update.payload, update.existing)); this.propertyService.subscribe(update => this.updateProperty(update.payload, update.existing));
this.sceneService.findAll(scenes => this.scenes = scenes, Scene.compareNumber); this.sceneService.findAll(scenes => this.scenes = scenes, Scene.compareNumber);

View File

@ -48,24 +48,39 @@ public class DemoDataService {
private final SceneWriteService sceneWriteService; private final SceneWriteService sceneWriteService;
public void insertDemoData() { public void insertDemoData() {
final Property fernseher = createProperty("fernseher.eg", PropertyType.SWITCH, "Fernseher", knx(0, 0, 20), knx(0, 0, 4));
final Property verstaerker = createProperty("verstaerker", PropertyType.SWITCH, "Verstärker", knx(0, 3, 57), knx(0, 3, 56));
final Property garten_steckdosen = createProperty("garten.steckdosen", PropertyType.SWITCH, "Garten Steckdosen", knx(0, 4, 12), knx(0, 4, 11));
final Property terrasse = createProperty("terrasse", PropertyType.SWITCH, "Terrasse Licht", knx(0, 4, 1), knx(0, 4, 0));
final Property ambiente_eg = createProperty("ambiente.eg", PropertyType.SWITCH, "Ambiente EG", knx(0, 3, 81), knx(0, 3, 80)); final Property ambiente_eg = createProperty("ambiente.eg", PropertyType.SWITCH, "Ambiente EG", knx(0, 3, 81), knx(0, 3, 80));
final Property ambiente_og = createProperty("ambiente.og", PropertyType.SWITCH, "Ambiente OG", knx(0, 6, 2), knx(0, 6, 3)); final Property ambiente_og = createProperty("ambiente.og", PropertyType.SWITCH, "Ambiente OG", knx(0, 6, 2), knx(0, 6, 3));
final Property bad_licht = createProperty("bad.licht", PropertyType.SWITCH, "Bad Licht", knx(0, 5, 19), knx(0, 3, 73)); final Property bad_licht = createProperty("bad.licht", PropertyType.SWITCH, "Bad Licht", knx(0, 5, 19), knx(0, 3, 73));
final Property bad_licht_mitte = createProperty("bad.licht.mitte", PropertyType.SWITCH, "Bad Licht Mitte", knx(0, 3, 30), knx(0, 3, 29));
final Property flur_eg_licht = createProperty("flur.eg.licht", PropertyType.SWITCH, "Flur EG Licht", knx(0, 4, 8), knx(0, 5, 14)); final Property flur_eg_licht = createProperty("flur.eg.licht", PropertyType.SWITCH, "Flur EG Licht", knx(0, 4, 8), knx(0, 5, 14));
final Property wohnzimmer_rollladen = createProperty("wohnzimmer.rollladen", PropertyType.SHUTTER, "Wohnzimmer Rollladen", null, knx(0, 4, 24)); final Property wohnzimmer_rollladen = createProperty("wohnzimmer.rollladen", PropertyType.SHUTTER, "Wohnzimmer Rollladen", null, knx(0, 4, 24));
final Property schlafzimmer_rollladen = createProperty("schlafzimmer_rollladen", PropertyType.SHUTTER, "Schlafzimmer Rollladen", null, knx(0, 3, 3)); final Property schlafzimmer_rollladen = createProperty("schlafzimmer_rollladen", PropertyType.SHUTTER, "Schlafzimmer Rollladen", null, knx(0, 3, 3));
final Property flur_og_rollladen = createProperty("flur_og_rollladen", PropertyType.SHUTTER, "Flur OG Rollladen", null, knx(0, 5, 13)); final Property flur_og_rollladen = createProperty("flur_og_rollladen", PropertyType.SHUTTER, "Flur OG Rollladen", null, knx(0, 5, 13));
final Property helligkeit = createProperty("helligkeit", PropertyType.LUX, "Helligkeit", knx(0, 5, 6), null); final Property helligkeit = createProperty("helligkeit", PropertyType.LUX, "Helligkeit", knx(0, 5, 6), null);
final Property szene_haus = createProperty("szene_haus", PropertyType.SCENE, "Szene Haus ", null, knx(0, 0, 21)); final Property szene_haus = createProperty("szene_haus", PropertyType.SCENE, "Szene Haus ", null, knx(0, 0, 21));
if (deviceRepository.count() == 0) { if (deviceRepository.count() == 0) {
deviceWriteService.createDeviceSwitch("Ambiente EG", ambiente_eg); deviceWriteService.createDeviceSwitch(fernseher);
deviceWriteService.createDeviceSwitch("Ambiente OG", ambiente_og); deviceWriteService.createDeviceSwitch(verstaerker);
deviceWriteService.createDeviceSwitch("Bad Licht", bad_licht); deviceWriteService.createDeviceSwitch(garten_steckdosen);
deviceWriteService.createDeviceShutter("Wohnzimmer Rollladen", wohnzimmer_rollladen); deviceWriteService.createDeviceSwitch(terrasse);
deviceWriteService.createDeviceShutter("Schlafzimmer Rollladen", schlafzimmer_rollladen);
deviceWriteService.createDeviceShutter("Flur Rollladen", flur_og_rollladen); deviceWriteService.createDeviceSwitch(ambiente_eg);
deviceWriteService.createDeviceSwitch(ambiente_og);
deviceWriteService.createDeviceSwitch(bad_licht);
deviceWriteService.createDeviceSwitch(flur_eg_licht);
deviceWriteService.createDeviceShutter(wohnzimmer_rollladen);
deviceWriteService.createDeviceShutter(schlafzimmer_rollladen);
deviceWriteService.createDeviceShutter(flur_og_rollladen);
} }
if (sceneRepository.count() == 0) { if (sceneRepository.count() == 0) {
@ -116,17 +131,6 @@ public class DemoDataService {
createSunset(scheduleFlurRollladen, true, BETWEEN_OFFICIAL_AND_CIVIL, 0, 100); createSunset(scheduleFlurRollladen, true, BETWEEN_OFFICIAL_AND_CIVIL, 0, 100);
scheduleRepository.save(scheduleFlurRollladen); scheduleRepository.save(scheduleFlurRollladen);
final Schedule scheduleBadLichtMitte = createSchedule(false, "Bad Licht Mitte", bad_licht_mitte);
createTime(scheduleBadLichtMitte, true, 10, 30, 0, MIN30, true);
createTime(scheduleBadLichtMitte, true, 11, 30, 0, MIN30, false);
createTime(scheduleBadLichtMitte, true, 15, 30, 0, MIN30, true);
createTime(scheduleBadLichtMitte, true, 16, 30, 0, MIN30, false);
createTime(scheduleBadLichtMitte, true, 21, 0, 0, MIN30, true);
createTime(scheduleBadLichtMitte, true, 22, 0, 0, MIN30, false);
createTime(scheduleBadLichtMitte, true, 0, 0, 0, MIN30, true);
createTime(scheduleBadLichtMitte, true, 1, 0, 0, MIN30, false);
scheduleRepository.save(scheduleBadLichtMitte);
final Schedule scheduleSzeneHaus = createSchedule(true, "Dekoration", szene_haus); final Schedule scheduleSzeneHaus = createSchedule(true, "Dekoration", szene_haus);
createTime(scheduleSzeneHaus, true, 6, 0, 0, 0, 31); createTime(scheduleSzeneHaus, true, 6, 0, 0, 0, 31);
createTime(scheduleSzeneHaus, true, 8, 30, 0, 0, 30); createTime(scheduleSzeneHaus, true, 8, 30, 0, 0, 30);

View File

@ -24,17 +24,25 @@ public class DeviceWriteService {
private final DeviceReadService deviceReadService; private final DeviceReadService deviceReadService;
public DeviceDto createDeviceSwitch(final Property stateProperty) {
return createDeviceSwitch(null, stateProperty);
}
public DeviceDto createDeviceSwitch(final String title, final Property stateProperty) { public DeviceDto createDeviceSwitch(final String title, final Property stateProperty) {
final DeviceSwitch deviceSwitch = new DeviceSwitch(); final DeviceSwitch deviceSwitch = new DeviceSwitch();
deviceSwitch.setTitle(title); deviceSwitch.setTitle(getTitle(title, stateProperty));
deviceSwitch.setStateProperty(stateProperty); deviceSwitch.setStateProperty(stateProperty);
deviceRepository.save(deviceSwitch); deviceRepository.save(deviceSwitch);
return deviceReadService.toDto(deviceSwitch); return deviceReadService.toDto(deviceSwitch);
} }
public DeviceDto createDeviceShutter(final Property positionProperty) {
return createDeviceShutter(null, positionProperty);
}
public DeviceDto createDeviceShutter(final String title, final Property positionProperty) { public DeviceDto createDeviceShutter(final String title, final Property positionProperty) {
final DeviceShutter deviceShutter = new DeviceShutter(); final DeviceShutter deviceShutter = new DeviceShutter();
deviceShutter.setTitle(title); deviceShutter.setTitle(getTitle(title, positionProperty));
deviceShutter.setPositionProperty(positionProperty); deviceShutter.setPositionProperty(positionProperty);
deviceRepository.save(deviceShutter); deviceRepository.save(deviceShutter);
return deviceReadService.toDto(deviceShutter); return deviceReadService.toDto(deviceShutter);
@ -71,13 +79,23 @@ public class DeviceWriteService {
public DeviceDto create(final String type) { public DeviceDto create(final String type) {
switch (type) { switch (type) {
case "DeviceSwitch": case "DeviceSwitch":
return createDeviceSwitch(generateUnusedTitle(), null); return createDeviceSwitch(null, null);
case "DeviceShutter": case "DeviceShutter":
return createDeviceShutter(generateUnusedTitle(), null); return createDeviceShutter(null, null);
} }
throw new RuntimeException("Not implemented type: " + type); throw new RuntimeException("Not implemented type: " + type);
} }
private String getTitle(final String title, final Property property) {
if (title != null) {
return title;
} else if (property != null) {
return property.getTitle();
} else {
return generateUnusedTitle();
}
}
private String generateUnusedTitle() { private String generateUnusedTitle() {
int index = 0; int index = 0;
String title = null; String title = null;

View File

@ -7,6 +7,13 @@ import java.util.function.Supplier;
public class Helpers { public class Helpers {
public static <T> T orElseGet(final T value, final T orElse) {
if (value == null) {
return orElse;
}
return value;
}
public static <T> T orElseGet(final T value, final Supplier<T> orElseGet) { public static <T> T orElseGet(final T value, final Supplier<T> orElseGet) {
if (value == null) { if (value == null) {
return orElseGet.get(); return orElseGet.get();