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

View File

@ -35,8 +35,12 @@ export class Property {
return item.name;
}
public static compareName(a: Property, b: Property): number {
return a.name.localeCompare(b.name);
public static compareTypeThenTitle(a: Property, b: Property): number {
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">
<div class="device" *ngSwitchCase="'DeviceSwitch'" [ngClass]="getSwitchClassList(device)">
<div class="title">

View File

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

View File

@ -11,6 +11,8 @@ import {SceneService} from "../../api/scene/scene.service";
})
export class PropertyListComponent implements OnInit {
Property = Property;
properties: Property[] = [];
scenes: Scene[] = [];
@ -23,7 +25,7 @@ export class PropertyListComponent implements OnInit {
}
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.sceneService.findAll(scenes => this.scenes = scenes, Scene.compareNumber);

View File

@ -48,24 +48,39 @@ public class DemoDataService {
private final SceneWriteService sceneWriteService;
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_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_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 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 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 szene_haus = createProperty("szene_haus", PropertyType.SCENE, "Szene Haus ", null, knx(0, 0, 21));
if (deviceRepository.count() == 0) {
deviceWriteService.createDeviceSwitch("Ambiente EG", ambiente_eg);
deviceWriteService.createDeviceSwitch("Ambiente OG", ambiente_og);
deviceWriteService.createDeviceSwitch("Bad Licht", bad_licht);
deviceWriteService.createDeviceShutter("Wohnzimmer Rollladen", wohnzimmer_rollladen);
deviceWriteService.createDeviceShutter("Schlafzimmer Rollladen", schlafzimmer_rollladen);
deviceWriteService.createDeviceShutter("Flur Rollladen", flur_og_rollladen);
deviceWriteService.createDeviceSwitch(fernseher);
deviceWriteService.createDeviceSwitch(verstaerker);
deviceWriteService.createDeviceSwitch(garten_steckdosen);
deviceWriteService.createDeviceSwitch(terrasse);
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) {
@ -116,17 +131,6 @@ public class DemoDataService {
createSunset(scheduleFlurRollladen, true, BETWEEN_OFFICIAL_AND_CIVIL, 0, 100);
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);
createTime(scheduleSzeneHaus, true, 6, 0, 0, 0, 31);
createTime(scheduleSzeneHaus, true, 8, 30, 0, 0, 30);

View File

@ -24,17 +24,25 @@ public class DeviceWriteService {
private final DeviceReadService deviceReadService;
public DeviceDto createDeviceSwitch(final Property stateProperty) {
return createDeviceSwitch(null, stateProperty);
}
public DeviceDto createDeviceSwitch(final String title, final Property stateProperty) {
final DeviceSwitch deviceSwitch = new DeviceSwitch();
deviceSwitch.setTitle(title);
deviceSwitch.setTitle(getTitle(title, stateProperty));
deviceSwitch.setStateProperty(stateProperty);
deviceRepository.save(deviceSwitch);
return deviceReadService.toDto(deviceSwitch);
}
public DeviceDto createDeviceShutter(final Property positionProperty) {
return createDeviceShutter(null, positionProperty);
}
public DeviceDto createDeviceShutter(final String title, final Property positionProperty) {
final DeviceShutter deviceShutter = new DeviceShutter();
deviceShutter.setTitle(title);
deviceShutter.setTitle(getTitle(title, positionProperty));
deviceShutter.setPositionProperty(positionProperty);
deviceRepository.save(deviceShutter);
return deviceReadService.toDto(deviceShutter);
@ -71,13 +79,23 @@ public class DeviceWriteService {
public DeviceDto create(final String type) {
switch (type) {
case "DeviceSwitch":
return createDeviceSwitch(generateUnusedTitle(), null);
return createDeviceSwitch(null, null);
case "DeviceShutter":
return createDeviceShutter(generateUnusedTitle(), null);
return createDeviceShutter(null, null);
}
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() {
int index = 0;
String title = null;

View File

@ -7,6 +7,13 @@ import java.util.function.Supplier;
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) {
if (value == null) {
return orElseGet.get();