diff --git a/src/main/angular/src/app/api/bulk/BulkService.ts b/src/main/angular/src/app/api/bulk/BulkService.ts
index dd11d4c..4a7c526 100644
--- a/src/main/angular/src/app/api/bulk/BulkService.ts
+++ b/src/main/angular/src/app/api/bulk/BulkService.ts
@@ -62,6 +62,10 @@ export class BulkService implements ISearchService {
this.api.getReturnItem("bulk/delete/" + bulk.id, _ => _, next);
}
+ run(bulk: Bulk, next?: () => void): void {
+ this.api.getReturnItem("bulk/run/" + bulk.id, _ => _, next);
+ }
+
setEntry(entry: BulkEntry, key: string, value: any, next: (result: BulkEntry) => void = NO_OP): void {
this.api.putReturnItem("BulkEntry/" + entry.id + "/set/" + key, value, next);
}
diff --git a/src/main/angular/src/app/pages/bulk/list/bulk-list.component.html b/src/main/angular/src/app/pages/bulk/list/bulk-list.component.html
index 6dd90c3..cb4c463 100644
--- a/src/main/angular/src/app/pages/bulk/list/bulk-list.component.html
+++ b/src/main/angular/src/app/pages/bulk/list/bulk-list.component.html
@@ -15,6 +15,10 @@
{{bulk.name}}
+
+
+ |
+
|
diff --git a/src/main/angular/src/app/pages/bulk/list/bulk-list.component.ts b/src/main/angular/src/app/pages/bulk/list/bulk-list.component.ts
index 6f5c216..361146f 100644
--- a/src/main/angular/src/app/pages/bulk/list/bulk-list.component.ts
+++ b/src/main/angular/src/app/pages/bulk/list/bulk-list.component.ts
@@ -1,7 +1,7 @@
import {Component, OnInit} from '@angular/core';
import {BulkService} from "../../../api/bulk/BulkService";
import {Bulk} from "../../../api/bulk/Bulk";
-import {faCheckCircle, faCircle, faTimesCircle} from "@fortawesome/free-regular-svg-icons";
+import {faCheckCircle, faCircle, faPlayCircle, faTimesCircle} from "@fortawesome/free-regular-svg-icons";
@Component({
selector: 'app-bulk-list',
@@ -16,6 +16,8 @@ export class BulkListComponent implements OnInit {
readonly faTimes = faTimesCircle;
+ readonly faPlay = faPlayCircle;
+
readonly Bulk = Bulk;
bulks: Bulk[] = [];
@@ -52,6 +54,12 @@ export class BulkListComponent implements OnInit {
this.bulkService.create(bulk => this.addOrReplace(bulk));
}
+ run(bulk: Bulk): void {
+ if (confirm("Zeitplan \"" + bulk.name + "\" wirklich ausführen?")) {
+ this.bulkService.run(bulk);
+ }
+ }
+
delete(bulk: Bulk): void {
if (confirm("Zeitplan \"" + bulk.name + "\" wirklich löschen?")) {
this.bulkService.delete(bulk, () => this.remove(bulk));
diff --git a/src/main/java/de/ph87/homeautomation/bulk/BulkController.java b/src/main/java/de/ph87/homeautomation/bulk/BulkController.java
index 0a2e8e2..63f1e02 100644
--- a/src/main/java/de/ph87/homeautomation/bulk/BulkController.java
+++ b/src/main/java/de/ph87/homeautomation/bulk/BulkController.java
@@ -32,6 +32,11 @@ public class BulkController implements ISearchController {
bulkWriter.delete(id);
}
+ @GetMapping("run/{id}")
+ public void run(@PathVariable final long id) {
+ bulkWriter.run(id);
+ }
+
@PostMapping("set/{id}/name")
public BulkDto name(@PathVariable final long id, @RequestBody final String name) {
return bulkWriter.set(id, bulk -> bulk.setName(name));
diff --git a/src/main/java/de/ph87/homeautomation/bulk/BulkWriter.java b/src/main/java/de/ph87/homeautomation/bulk/BulkWriter.java
index f774fce..87fc401 100644
--- a/src/main/java/de/ph87/homeautomation/bulk/BulkWriter.java
+++ b/src/main/java/de/ph87/homeautomation/bulk/BulkWriter.java
@@ -19,6 +19,8 @@ public class BulkWriter {
private final BulkMapper bulkMapper;
+ private final BulkExecutor bulkExecutor;
+
public Bulk create(final BulkCreateDto dto) {
final Bulk bulk = bulkRepository.save(new Bulk(dto));
log.info("Bulk created: {}", bulk);
@@ -31,6 +33,11 @@ public class BulkWriter {
log.info("Bulk deleted: {}", bulk);
}
+ public void run(final long id) {
+ final Bulk bulk = bulkReader.getById(id);
+ bulkExecutor.execute(bulk);
+ }
+
public BulkDto set(final long id, final Consumer consumer) {
final Bulk bulk = bulkReader.getById(id);
consumer.accept(bulk);