diff --git a/src/main/angular/src/app/api/bulk/Bulk.ts b/src/main/angular/src/app/api/bulk/Bulk.ts
index 7cbb7ed..f5edad5 100644
--- a/src/main/angular/src/app/api/bulk/Bulk.ts
+++ b/src/main/angular/src/app/api/bulk/Bulk.ts
@@ -30,4 +30,12 @@ export class Bulk {
return this.fromJson(json);
}
+ public static trackBy(index: number, item: Bulk): number {
+ return item.id;
+ }
+
+ public static compareName(a: Bulk, b: Bulk): number {
+ return a.name.localeCompare(b.name);
+ }
+
}
diff --git a/src/main/angular/src/app/api/bulk/bulkService.ts b/src/main/angular/src/app/api/bulk/bulkService.ts
index aae1a7c..0e3cb04 100644
--- a/src/main/angular/src/app/api/bulk/bulkService.ts
+++ b/src/main/angular/src/app/api/bulk/bulkService.ts
@@ -40,4 +40,8 @@ export class BulkService implements ISearchService {
this.api.getItem("bulk/create/", Bulk.fromJson, next, error);
}
+ delete(bulk: Bulk, next: () => void, error: (error: any) => void = NO_OP): void {
+ this.api.getItem("bulk/delete/" + bulk.id, _ => _, next, error);
+ }
+
}
diff --git a/src/main/angular/src/app/app-routing.module.ts b/src/main/angular/src/app/app-routing.module.ts
index 8a5eabe..ad5cf99 100644
--- a/src/main/angular/src/app/app-routing.module.ts
+++ b/src/main/angular/src/app/app-routing.module.ts
@@ -9,17 +9,25 @@ import {ChannelListComponent} from "./pages/channel-list/channel-list.component"
import {AreaListComponent} from "./pages/mobile/device-tree/area-list/area-list.component";
import {RoomListComponent} from "./pages/mobile/device-tree/room-list/room-list.component";
import {DeviceListComponent} from "./pages/mobile/device-tree/device-list/device-list.component";
+import {BulkListComponent} from "./pages/bulk/bulk-list/bulk-list.component";
+import {BulkComponent} from "./pages/bulk/bulk/bulk.component";
const routes: Routes = [
{path: 'Device', component: DeviceComponent},
{path: 'DeviceAllList', component: DeviceAllListComponent},
+
// {path: 'Channel', component: ChannelComponent},
{path: 'ChannelList', component: ChannelListComponent},
+
// {path: 'Property', component: PropertyComponent},
{path: 'PropertyList', component: PropertyListComponent},
+
{path: 'Schedule', component: ScheduleComponent},
{path: 'ScheduleList', component: ScheduleListComponent},
+ {path: 'Bulk', component: BulkComponent},
+ {path: 'BulkList', component: BulkListComponent},
+
{path: 'AreaList', component: AreaListComponent},
{path: 'RoomList', component: RoomListComponent},
{path: 'DeviceList', component: DeviceListComponent},
diff --git a/src/main/angular/src/app/app.component.html b/src/main/angular/src/app/app.component.html
index a87cc77..0e4a15e 100644
--- a/src/main/angular/src/app/app.component.html
+++ b/src/main/angular/src/app/app.component.html
@@ -7,6 +7,10 @@
Geräte
+
+ Massenverarbeitung
+
+
Eigenschaften
diff --git a/src/main/angular/src/app/app.module.ts b/src/main/angular/src/app/app.module.ts
index 960a845..2c55a20 100644
--- a/src/main/angular/src/app/app.module.ts
+++ b/src/main/angular/src/app/app.module.ts
@@ -18,6 +18,8 @@ import {ChannelListComponent} from './pages/channel-list/channel-list.component'
import {AreaListComponent} from './pages/mobile/device-tree/area-list/area-list.component';
import {RoomListComponent} from './pages/mobile/device-tree/room-list/room-list.component';
import {DeviceListComponent} from './pages/mobile/device-tree/device-list/device-list.component';
+import {BulkListComponent} from './pages/bulk/bulk-list/bulk-list.component';
+import {BulkComponent} from './pages/bulk/bulk/bulk.component';
@NgModule({
declarations: [
@@ -34,6 +36,8 @@ import {DeviceListComponent} from './pages/mobile/device-tree/device-list/device
AreaListComponent,
RoomListComponent,
DeviceListComponent,
+ BulkListComponent,
+ BulkComponent,
],
imports: [
BrowserModule,
diff --git a/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.html b/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.html
new file mode 100644
index 0000000..cd8328a
--- /dev/null
+++ b/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.html
@@ -0,0 +1,27 @@
+
+
+ | |
+ Bezeichnung |
+ |
+
+
+
+ |
+
+
+ |
+
+
+ {{bulk.name}}
+ |
+
+
+
+ |
+
+
+
+
+
+
+
diff --git a/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.less b/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.less
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.spec.ts b/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.spec.ts
new file mode 100644
index 0000000..3dda216
--- /dev/null
+++ b/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.spec.ts
@@ -0,0 +1,25 @@
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+
+import {BulkListComponent} from './bulk-list.component';
+
+describe('BulkListComponent', () => {
+ let component: BulkListComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [BulkListComponent]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(BulkListComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.ts b/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.ts
new file mode 100644
index 0000000..7a31cb2
--- /dev/null
+++ b/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.ts
@@ -0,0 +1,61 @@
+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";
+
+@Component({
+ selector: 'app-bulk-list',
+ templateUrl: './bulk-list.component.html',
+ styleUrls: ['./bulk-list.component.less']
+})
+export class BulkListComponent implements OnInit {
+
+ readonly faCheckCircle = faCheckCircle;
+
+ readonly faCircle = faCircle;
+
+ readonly faTimes = faTimesCircle;
+
+ readonly Bulk = Bulk;
+
+ bulks: Bulk[] = [];
+
+ constructor(
+ readonly bulkService: BulkService,
+ ) {
+ // nothing
+ }
+
+ ngOnInit(): void {
+ this.bulkService.findAll(list => this.bulks = list)
+ }
+
+ set(bulk: Bulk, key: string, value: any): void {
+ this.bulkService.set(bulk, key, value, bulk => this.addOrReplace(bulk));
+ }
+
+ private addOrReplace(bulk: Bulk): void {
+ const index: number = this.bulks.findIndex(s => s.id === bulk.id);
+ if (index < 0) {
+ this.bulks.push(bulk);
+ } else {
+ this.bulks[index] = bulk;
+ }
+ this.bulks = this.bulks.sort(Bulk.compareName)
+ }
+
+ private remove(bulk: Bulk): void {
+ this.bulks.splice(this.bulks.findIndex(s => s.id === bulk.id), 1);
+ }
+
+ create(): void {
+ this.bulkService.create(bulk => this.addOrReplace(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/angular/src/app/pages/bulk/bulk/bulk.component.html b/src/main/angular/src/app/pages/bulk/bulk/bulk.component.html
new file mode 100644
index 0000000..782a0f0
--- /dev/null
+++ b/src/main/angular/src/app/pages/bulk/bulk/bulk.component.html
@@ -0,0 +1 @@
+bulk works!
diff --git a/src/main/angular/src/app/pages/bulk/bulk/bulk.component.less b/src/main/angular/src/app/pages/bulk/bulk/bulk.component.less
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/angular/src/app/pages/bulk/bulk/bulk.component.spec.ts b/src/main/angular/src/app/pages/bulk/bulk/bulk.component.spec.ts
new file mode 100644
index 0000000..607ae11
--- /dev/null
+++ b/src/main/angular/src/app/pages/bulk/bulk/bulk.component.spec.ts
@@ -0,0 +1,25 @@
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+
+import {BulkComponent} from './bulk.component';
+
+describe('BulkComponent', () => {
+ let component: BulkComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [BulkComponent]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(BulkComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/main/angular/src/app/pages/bulk/bulk/bulk.component.ts b/src/main/angular/src/app/pages/bulk/bulk/bulk.component.ts
new file mode 100644
index 0000000..f6a33dd
--- /dev/null
+++ b/src/main/angular/src/app/pages/bulk/bulk/bulk.component.ts
@@ -0,0 +1,16 @@
+import {Component, OnInit} from '@angular/core';
+
+@Component({
+ selector: 'app-bulk',
+ templateUrl: './bulk.component.html',
+ styleUrls: ['./bulk.component.less']
+})
+export class BulkComponent implements OnInit {
+
+ constructor() {
+ }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/main/angular/src/app/pages/schedule-list/schedule-list.component.ts b/src/main/angular/src/app/pages/schedule-list/schedule-list.component.ts
index dabcce7..bf8a34f 100644
--- a/src/main/angular/src/app/pages/schedule-list/schedule-list.component.ts
+++ b/src/main/angular/src/app/pages/schedule-list/schedule-list.component.ts
@@ -13,6 +13,7 @@ export class ScheduleListComponent implements OnInit {
readonly faCheckCircle = faCheckCircle;
readonly faCircle = faCircle;
readonly faTimes = faTimesCircle;
+
readonly Schedule = Schedule;
schedules: Schedule[] = [];
diff --git a/src/main/angular/src/app/pages/schedule/schedule.component.html b/src/main/angular/src/app/pages/schedule/schedule.component.html
index 57483eb..be13587 100644
--- a/src/main/angular/src/app/pages/schedule/schedule.component.html
+++ b/src/main/angular/src/app/pages/schedule/schedule.component.html
@@ -29,7 +29,7 @@
Unschärfe |
Nächste Ausführung |
Eingeschaft setzen |
- Massenausführung |
+ Massenverarbeitung |
|
diff --git a/src/main/java/de/ph87/homeautomation/bulk/BulkController.java b/src/main/java/de/ph87/homeautomation/bulk/BulkController.java
index 63f6762..4dd5987 100644
--- a/src/main/java/de/ph87/homeautomation/bulk/BulkController.java
+++ b/src/main/java/de/ph87/homeautomation/bulk/BulkController.java
@@ -32,17 +32,17 @@ public class BulkController implements ISearchController {
return bulkReader.filter(filter);
}
- @DeleteMapping("delete")
- public void delete(@RequestBody final long id) {
+ @GetMapping("delete/{id}")
+ public void delete(@PathVariable final long id) {
bulkWriter.delete(id);
}
- @PostMapping("name/{id}")
+ @PostMapping("set/{id}/name")
public BulkDto name(@PathVariable final long id, @RequestBody final String name) {
return bulkWriter.set(id, bulk -> bulk.setName(name));
}
- @PostMapping("enabled/{id}")
+ @PostMapping("set/{id}/enabled")
public BulkDto enabled(@PathVariable final long id, @RequestBody final boolean enabled) {
return bulkWriter.set(id, bulk -> bulk.setEnabled(enabled));
}
@@ -79,6 +79,12 @@ public class BulkController implements ISearchController {
return bulkReader.findAllDtoLike("%" + term + "%").stream().map(this::toSearchResult).collect(Collectors.toList());
}
+ @GetMapping("findAll")
+ @Deprecated(since = "Use 'filter' instead", forRemoval = true)
+ public List findAll() {
+ return bulkReader.findAllDto();
+ }
+
private SearchResult toSearchResult(final BulkDto bulkDto) {
return new SearchResult(bulkDto.getId(), bulkDto.getName());
}
diff --git a/src/main/java/de/ph87/homeautomation/bulk/BulkReader.java b/src/main/java/de/ph87/homeautomation/bulk/BulkReader.java
index 97e9f08..62ba100 100644
--- a/src/main/java/de/ph87/homeautomation/bulk/BulkReader.java
+++ b/src/main/java/de/ph87/homeautomation/bulk/BulkReader.java
@@ -37,4 +37,9 @@ public class BulkReader {
return bulkRepository.findAllByNameLike(term).stream().map(bulkMapper::toDto).collect(Collectors.toList());
}
+ @Deprecated(since = "Use 'filter' instead", forRemoval = true)
+ public List findAllDto() {
+ return bulkRepository.findAll().stream().map(bulkMapper::toDto).collect(Collectors.toList());
+ }
+
}