diff --git a/src/main/angular/src/app/app-routing.module.ts b/src/main/angular/src/app/app-routing.module.ts index 3d4217b..0055f00 100644 --- a/src/main/angular/src/app/app-routing.module.ts +++ b/src/main/angular/src/app/app-routing.module.ts @@ -5,9 +5,9 @@ import {ScheduleEditorComponent} from "./pages/schedule/editor/schedule-editor.c import {DeviceListComponent} from "./pages/device/list/device-list.component"; import {DeviceEditorComponent} from "./pages/device/editor/device-editor.component"; import {PropertyListComponent} from "./pages/property/list/property-list.component"; -import {ChannelListComponent} from "./pages/channel-list/channel-list.component"; -import {BulkListComponent} from "./pages/bulk/bulk-list/bulk-list.component"; -import {BulkComponent} from "./pages/bulk/bulk/bulk.component"; +import {ChannelListComponent} from "./pages/channel/list/channel-list.component"; +import {BulkListComponent} from "./pages/bulk/list/bulk-list.component"; +import {BulkEditorComponent} from "./pages/bulk/editor/bulk-editor.component"; const routes: Routes = [ {path: 'Device', component: DeviceEditorComponent}, @@ -22,7 +22,7 @@ const routes: Routes = [ {path: 'Schedule', component: ScheduleEditorComponent}, {path: 'ScheduleList', component: ScheduleListComponent}, - {path: 'Bulk', component: BulkComponent}, + {path: 'Bulk', component: BulkEditorComponent}, {path: 'BulkList', component: BulkListComponent}, {path: '**', redirectTo: '/ScheduleList'}, diff --git a/src/main/angular/src/app/app.module.ts b/src/main/angular/src/app/app.module.ts index ebb1229..76cab52 100644 --- a/src/main/angular/src/app/app.module.ts +++ b/src/main/angular/src/app/app.module.ts @@ -5,7 +5,7 @@ import {AppRoutingModule} from './app-routing.module'; import {AppComponent} from './app.component'; import {HttpClientModule} from "@angular/common/http"; import {FormsModule} from "@angular/forms"; -import {EditFieldComponent} from './shared/edit-field/edit-field.component'; +import {TextComponent} from './shared/text/text.component'; import {ScheduleListComponent} from './pages/schedule/list/schedule-list.component'; import {FontAwesomeModule} from '@fortawesome/angular-fontawesome'; import {NumberComponent} from './shared/number/number.component'; @@ -14,14 +14,14 @@ import {SearchComponent} from './shared/search/search.component'; import {DeviceListComponent} from './pages/device/list/device-list.component'; import {DeviceEditorComponent} from './pages/device/editor/device-editor.component'; import {PropertyListComponent} from './pages/property/list/property-list.component'; -import {ChannelListComponent} from './pages/channel-list/channel-list.component'; -import {BulkListComponent} from './pages/bulk/bulk-list/bulk-list.component'; -import {BulkComponent} from './pages/bulk/bulk/bulk.component'; +import {ChannelListComponent} from './pages/channel/list/channel-list.component'; +import {BulkListComponent} from './pages/bulk/list/bulk-list.component'; +import {BulkEditorComponent} from './pages/bulk/editor/bulk-editor.component'; @NgModule({ declarations: [ AppComponent, - EditFieldComponent, + TextComponent, ScheduleEditorComponent, ScheduleListComponent, NumberComponent, @@ -32,7 +32,7 @@ import {BulkComponent} from './pages/bulk/bulk/bulk.component'; ChannelListComponent, DeviceListComponent, BulkListComponent, - BulkComponent, + BulkEditorComponent, ], imports: [ BrowserModule, diff --git a/src/main/angular/src/app/pages/bulk/bulk/bulk.component.html b/src/main/angular/src/app/pages/bulk/editor/bulk-editor.component.html similarity index 96% rename from src/main/angular/src/app/pages/bulk/bulk/bulk.component.html rename to src/main/angular/src/app/pages/bulk/editor/bulk-editor.component.html index e8b3729..82ca84c 100644 --- a/src/main/angular/src/app/pages/bulk/bulk/bulk.component.html +++ b/src/main/angular/src/app/pages/bulk/editor/bulk-editor.component.html @@ -1,6 +1,6 @@

- +

diff --git a/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.less b/src/main/angular/src/app/pages/bulk/editor/bulk-editor.component.less similarity index 100% rename from src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.less rename to src/main/angular/src/app/pages/bulk/editor/bulk-editor.component.less diff --git a/src/main/angular/src/app/pages/bulk/bulk/bulk.component.ts b/src/main/angular/src/app/pages/bulk/editor/bulk-editor.component.ts similarity index 91% rename from src/main/angular/src/app/pages/bulk/bulk/bulk.component.ts rename to src/main/angular/src/app/pages/bulk/editor/bulk-editor.component.ts index 87089ff..54a5356 100644 --- a/src/main/angular/src/app/pages/bulk/bulk/bulk.component.ts +++ b/src/main/angular/src/app/pages/bulk/editor/bulk-editor.component.ts @@ -7,11 +7,11 @@ import {BulkEntry} from "../../../api/bulk/BulkEntry"; import {faTimesCircle} from "@fortawesome/free-regular-svg-icons"; @Component({ - selector: 'app-bulk', - templateUrl: './bulk.component.html', - styleUrls: ['./bulk.component.less'] + selector: 'app-bulk-editor', + templateUrl: './bulk-editor.component.html', + styleUrls: ['./bulk-editor.component.less'] }) -export class BulkComponent implements OnInit { +export class BulkEditorComponent implements OnInit { readonly faTimes = faTimesCircle; diff --git a/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.html b/src/main/angular/src/app/pages/bulk/list/bulk-list.component.html similarity index 100% rename from src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.html rename to src/main/angular/src/app/pages/bulk/list/bulk-list.component.html diff --git a/src/main/angular/src/app/pages/bulk/bulk/bulk.component.less b/src/main/angular/src/app/pages/bulk/list/bulk-list.component.less similarity index 100% rename from src/main/angular/src/app/pages/bulk/bulk/bulk.component.less rename to src/main/angular/src/app/pages/bulk/list/bulk-list.component.less diff --git a/src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.ts b/src/main/angular/src/app/pages/bulk/list/bulk-list.component.ts similarity index 100% rename from src/main/angular/src/app/pages/bulk/bulk-list/bulk-list.component.ts rename to src/main/angular/src/app/pages/bulk/list/bulk-list.component.ts diff --git a/src/main/angular/src/app/pages/channel-list/channel-list.component.html b/src/main/angular/src/app/pages/channel/list/channel-list.component.html similarity index 100% rename from src/main/angular/src/app/pages/channel-list/channel-list.component.html rename to src/main/angular/src/app/pages/channel/list/channel-list.component.html diff --git a/src/main/angular/src/app/pages/channel-list/channel-list.component.less b/src/main/angular/src/app/pages/channel/list/channel-list.component.less similarity index 100% rename from src/main/angular/src/app/pages/channel-list/channel-list.component.less rename to src/main/angular/src/app/pages/channel/list/channel-list.component.less diff --git a/src/main/angular/src/app/pages/channel-list/channel-list.component.ts b/src/main/angular/src/app/pages/channel/list/channel-list.component.ts similarity index 85% rename from src/main/angular/src/app/pages/channel-list/channel-list.component.ts rename to src/main/angular/src/app/pages/channel/list/channel-list.component.ts index 0c21e87..3b30a46 100644 --- a/src/main/angular/src/app/pages/channel-list/channel-list.component.ts +++ b/src/main/angular/src/app/pages/channel/list/channel-list.component.ts @@ -1,7 +1,7 @@ import {Component, OnInit} from '@angular/core'; -import {ChannelService} from "../../api/channel/channel.service"; -import {Channel, KnxGroup, Logic} from "../../api/channel/Channel"; -import {Update} from "../../api/Update"; +import {ChannelService} from "../../../api/channel/channel.service"; +import {Channel, KnxGroup, Logic} from "../../../api/channel/Channel"; +import {Update} from "../../../api/Update"; @Component({ selector: 'app-channel-list', diff --git a/src/main/angular/src/app/pages/device/editor/device-editor.component.html b/src/main/angular/src/app/pages/device/editor/device-editor.component.html index a95b73e..995ed7f 100644 --- a/src/main/angular/src/app/pages/device/editor/device-editor.component.html +++ b/src/main/angular/src/app/pages/device/editor/device-editor.component.html @@ -7,7 +7,7 @@ @@ -24,7 +24,7 @@ @@ -47,7 +47,7 @@ diff --git a/src/main/angular/src/app/pages/property/list/property-list.component.html b/src/main/angular/src/app/pages/property/list/property-list.component.html index c99c331..9af4652 100644 --- a/src/main/angular/src/app/pages/property/list/property-list.component.html +++ b/src/main/angular/src/app/pages/property/list/property-list.component.html @@ -22,7 +22,7 @@ diff --git a/src/main/angular/src/app/shared/edit-field/edit-field.component.html b/src/main/angular/src/app/shared/text/text.component.html similarity index 100% rename from src/main/angular/src/app/shared/edit-field/edit-field.component.html rename to src/main/angular/src/app/shared/text/text.component.html diff --git a/src/main/angular/src/app/shared/edit-field/edit-field.component.less b/src/main/angular/src/app/shared/text/text.component.less similarity index 100% rename from src/main/angular/src/app/shared/edit-field/edit-field.component.less rename to src/main/angular/src/app/shared/text/text.component.less diff --git a/src/main/angular/src/app/shared/edit-field/edit-field.component.ts b/src/main/angular/src/app/shared/text/text.component.ts similarity index 80% rename from src/main/angular/src/app/shared/edit-field/edit-field.component.ts rename to src/main/angular/src/app/shared/text/text.component.ts index 2e08ba2..959d6a7 100644 --- a/src/main/angular/src/app/shared/edit-field/edit-field.component.ts +++ b/src/main/angular/src/app/shared/text/text.component.ts @@ -1,11 +1,11 @@ import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core'; @Component({ - selector: 'app-edit-field', - templateUrl: './edit-field.component.html', - styleUrls: ['./edit-field.component.less'] + selector: 'app-text', + templateUrl: './text.component.html', + styleUrls: ['./text.component.less'] }) -export class EditFieldComponent implements OnInit { +export class TextComponent implements OnInit { @ViewChild('input') input?: ElementRef; diff --git a/src/main/java/de/ph87/homeautomation/schedule/Schedule.java b/src/main/java/de/ph87/homeautomation/schedule/Schedule.java index 0ca72e6..b0c8498 100644 --- a/src/main/java/de/ph87/homeautomation/schedule/Schedule.java +++ b/src/main/java/de/ph87/homeautomation/schedule/Schedule.java @@ -1,10 +1,7 @@ package de.ph87.homeautomation.schedule; import de.ph87.homeautomation.schedule.entry.ScheduleEntry; -import lombok.AccessLevel; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; +import lombok.*; import javax.persistence.*; import java.util.HashSet; @@ -14,6 +11,7 @@ import java.util.Set; @Setter @ToString @Entity +@NoArgsConstructor public class Schedule { @Id @@ -30,4 +28,8 @@ public class Schedule { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER, mappedBy = "schedule") private Set entries = new HashSet<>(); + public Schedule(final String title) { + this.title = title; + } + } diff --git a/src/main/java/de/ph87/homeautomation/schedule/ScheduleCalculator.java b/src/main/java/de/ph87/homeautomation/schedule/ScheduleCalculator.java index bb74350..7ed8742 100644 --- a/src/main/java/de/ph87/homeautomation/schedule/ScheduleCalculator.java +++ b/src/main/java/de/ph87/homeautomation/schedule/ScheduleCalculator.java @@ -33,6 +33,8 @@ public class ScheduleCalculator { private final ApplicationEventPublisher applicationEventPublisher; + private final ScheduleMapper scheduleMapper; + @EventListener(ApplicationStartedEvent.class) public void calculateAllNext() { final ZonedDateTime now = ZonedDateTime.now(); @@ -40,7 +42,7 @@ public class ScheduleCalculator { } public void calculateSchedule(final Schedule schedule, final ZonedDateTime now) { - schedule.getEntries().forEach(scheduleEntry -> calculateEntry(schedule, scheduleEntry, now)); + schedule.getEntries().forEach(entry -> calculateEntry(schedule, entry, now)); final Optional nextEntry = schedule.getEntries().stream() .filter(entry -> entry.getNextFuzzyTimestamp() != null && entry.getNextFuzzyTimestamp().isAfter(now)) .min(Comparator.comparing(ScheduleEntry::getNextFuzzyTimestamp)); @@ -50,6 +52,7 @@ public class ScheduleCalculator { log.info("Next schedule for \"{}\": {}", schedule.getTitle(), nextEntry.get().getNextFuzzyTimestamp()); } applicationEventPublisher.publishEvent(new ScheduleThreadWakeUpEvent()); + scheduleMapper.publish(schedule, true); } private void calculateEntry(final Schedule schedule, final ScheduleEntry entry, final ZonedDateTime now) { diff --git a/src/main/java/de/ph87/homeautomation/schedule/ScheduleExecutionService.java b/src/main/java/de/ph87/homeautomation/schedule/ScheduleExecutor.java similarity index 71% rename from src/main/java/de/ph87/homeautomation/schedule/ScheduleExecutionService.java rename to src/main/java/de/ph87/homeautomation/schedule/ScheduleExecutor.java index 4b8c5ed..943c51b 100644 --- a/src/main/java/de/ph87/homeautomation/schedule/ScheduleExecutionService.java +++ b/src/main/java/de/ph87/homeautomation/schedule/ScheduleExecutor.java @@ -15,40 +15,40 @@ import java.util.Comparator; @Service @Transactional @RequiredArgsConstructor -public class ScheduleExecutionService { +public class ScheduleExecutor { private final ScheduleReader scheduleReader; - private final ScheduleCalculator scheduleCalculator; - - private final PropertyWriteService propertyWriteService; + private final PropertyWriteService propertyWriter; private final BulkExecutor bulkExecutor; + private final ScheduleWriter scheduleWriter; + public void executeAllLastDue() { - final ZonedDateTime now = ZonedDateTime.now(); - scheduleReader.findAll().forEach(schedule -> executeLastDue(schedule, now)); + scheduleReader.findAll().forEach(this::executeLastDue); } - private void executeLastDue(final Schedule schedule, final ZonedDateTime now) { + private void executeLastDue(final Schedule schedule) { + final ZonedDateTime now = ZonedDateTime.now(); schedule.getEntries().stream() .filter(entry -> entry.getNextFuzzyTimestamp() != null && !entry.getNextFuzzyTimestamp().isAfter(now)) .max(Comparator.comparing(ScheduleEntry::getNextFuzzyTimestamp)) - .ifPresent(entry -> executeEntry(schedule, entry, now)); + .ifPresent(entry -> executeEntry(schedule, entry)); } - private void executeEntry(final Schedule schedule, final ScheduleEntry entry, final ZonedDateTime now) { + private void executeEntry(final Schedule schedule, final ScheduleEntry entry) { log.info("Executing Schedule \"{}\" Entry {}", schedule.getTitle(), entry); - entry.setLastClearTimestamp(entry.getNextClearTimestamp()); - scheduleCalculator.calculateSchedule(schedule, now); if (entry.getProperty() != null) { log.debug("Schedule setting property: {} = {}", entry.getProperty().getTitle(), entry.getValue()); - propertyWriteService.writeToChannel(entry.getProperty(), entry.getValue()); + propertyWriter.writeToChannel(entry.getProperty(), entry.getValue()); } if (entry.getBulk() != null) { log.debug("Schedule executing Bulk: {}", entry.getBulk()); bulkExecutor.execute(entry.getBulk()); } + entry.setLastClearTimestamp(entry.getNextClearTimestamp()); + scheduleWriter.notifyChanged(schedule); } } diff --git a/src/main/java/de/ph87/homeautomation/schedule/ScheduleThreadService.java b/src/main/java/de/ph87/homeautomation/schedule/ScheduleThreadService.java index 5f7bea0..e23ef72 100644 --- a/src/main/java/de/ph87/homeautomation/schedule/ScheduleThreadService.java +++ b/src/main/java/de/ph87/homeautomation/schedule/ScheduleThreadService.java @@ -15,7 +15,7 @@ import java.time.ZonedDateTime; @RequiredArgsConstructor public class ScheduleThreadService extends AbstractThreadService { - private final ScheduleExecutionService scheduleExecutionService; + private final ScheduleExecutor scheduleExecutor; private final ScheduleEntryReader scheduleEntryReader; @@ -25,13 +25,13 @@ public class ScheduleThreadService extends AbstractThreadService { } @Override - protected void doStart() throws Exception { + protected void doStart() { // nothing } @Override - protected long doStep() throws InterruptedException { - scheduleExecutionService.executeAllLastDue(); + protected long doStep() { + scheduleExecutor.executeAllLastDue(); return scheduleEntryReader.getNextTimestamp().map(nextTimestamp -> Duration.between(ZonedDateTime.now(), nextTimestamp).toMillis()).orElse(0L); } diff --git a/src/main/java/de/ph87/homeautomation/schedule/ScheduleWriter.java b/src/main/java/de/ph87/homeautomation/schedule/ScheduleWriter.java index acb8c88..b77a90b 100644 --- a/src/main/java/de/ph87/homeautomation/schedule/ScheduleWriter.java +++ b/src/main/java/de/ph87/homeautomation/schedule/ScheduleWriter.java @@ -25,9 +25,9 @@ public class ScheduleWriter { private final ScheduleRepository scheduleRepository; public ScheduleDto create() { - final Schedule entry = new Schedule(); - entry.setTitle(generateUnusedName()); - return scheduleMapper.publish(scheduleRepository.save(entry), true); + final Schedule schedule = scheduleRepository.save(new Schedule(generateUnusedName())); + notifyChanged(schedule); + return scheduleMapper.toDto(schedule); } private String generateUnusedName() { @@ -42,14 +42,17 @@ public class ScheduleWriter { public ScheduleDto set(final long id, final BiConsumer setter, final T value) { final Schedule schedule = scheduleReader.getById(id); setter.accept(schedule, value); - scheduleCalculator.calculateSchedule(schedule, ZonedDateTime.now()); - return scheduleMapper.publish(schedule, true); + notifyChanged(schedule); + return scheduleMapper.toDto(schedule); } public void delete(final long id) { final Schedule schedule = scheduleReader.getById(id); scheduleRepository.delete(schedule); - scheduleMapper.publish(schedule, false); + } + + public void notifyChanged(final Schedule schedule) { + scheduleCalculator.calculateSchedule(schedule, ZonedDateTime.now()); } } diff --git a/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleEntryWriter.java b/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleEntryWriter.java index c0f5355..ff18b27 100644 --- a/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleEntryWriter.java +++ b/src/main/java/de/ph87/homeautomation/schedule/entry/ScheduleEntryWriter.java @@ -3,17 +3,14 @@ package de.ph87.homeautomation.schedule.entry; import de.ph87.homeautomation.bulk.BulkReader; import de.ph87.homeautomation.property.PropertyReader; import de.ph87.homeautomation.schedule.Schedule; -import de.ph87.homeautomation.schedule.ScheduleCalculator; -import de.ph87.homeautomation.schedule.ScheduleMapper; import de.ph87.homeautomation.schedule.ScheduleReader; +import de.ph87.homeautomation.schedule.ScheduleWriter; import de.ph87.homeautomation.web.BadRequestException; -import de.ph87.homeautomation.web.WebSocketService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.time.ZonedDateTime; import java.util.function.BiConsumer; import java.util.function.Consumer; @@ -31,36 +28,33 @@ public class ScheduleEntryWriter { private final ScheduleReader scheduleReader; - private final ScheduleCalculator scheduleCalculationService; - private final ScheduleEntryMapper scheduleEntryMapper; private final ScheduleEntryRepository scheduleEntryRepository; - private final WebSocketService webSocketService; - - private final ScheduleMapper scheduleMapper; - private final PropertyReader propertyReader; private final BulkReader bulkReader; + private final ScheduleWriter scheduleWriter; + public ScheduleEntryDto create(final long scheduleId) { final Schedule schedule = scheduleReader.getById(scheduleId); final ScheduleEntry entry = scheduleEntryRepository.save(new ScheduleEntry(schedule)); schedule.getEntries().add(entry); - return publish(entry, true, true); + scheduleWriter.notifyChanged(schedule); + return scheduleEntryMapper.toDto(entry); } - private ScheduleEntryDto setValue(final long id, final BiConsumer setter, final T value) { + private ScheduleEntryDto modifyValue(final long id, final BiConsumer setter, final T value) { return modify(id, entry -> setter.accept(entry, value)); } private ScheduleEntryDto modify(final long id, final Consumer setter) { final ScheduleEntry entry = scheduleEntryReader.getById(id); setter.accept(entry); - scheduleCalculationService.calculateSchedule(entry.getSchedule(), ZonedDateTime.now()); - return publish(entry, true, true); + scheduleWriter.notifyChanged(entry.getSchedule()); + return scheduleEntryMapper.toDto(entry); } public void delete(final long id) { @@ -68,7 +62,7 @@ public class ScheduleEntryWriter { setPosition(entry, entry.getSchedule().getEntries().size() - 1); entry.getSchedule().getEntries().remove(entry); scheduleEntryRepository.delete(entry); - publish(entry, false, true); + scheduleWriter.notifyChanged(entry.getSchedule()); } public ScheduleEntryDto setPosition(final long id, final int newPosition) { @@ -81,71 +75,71 @@ public class ScheduleEntryWriter { } public ScheduleEntryDto setEnabled(final long id, final boolean value) { - return setValue(id, ScheduleEntry::setEnabled, value); + return modifyValue(id, ScheduleEntry::setEnabled, value); } public ScheduleEntryDto setMonday(final long id, final boolean value) { - return setValue(id, ScheduleEntry::setMonday, value); + return modifyValue(id, ScheduleEntry::setMonday, value); } public ScheduleEntryDto setTuesday(final long id, final boolean value) { - return setValue(id, ScheduleEntry::setTuesday, value); + return modifyValue(id, ScheduleEntry::setTuesday, value); } public ScheduleEntryDto setWednesday(final long id, final boolean value) { - return setValue(id, ScheduleEntry::setWednesday, value); + return modifyValue(id, ScheduleEntry::setWednesday, value); } public ScheduleEntryDto setThursday(final long id, final boolean value) { - return setValue(id, ScheduleEntry::setThursday, value); + return modifyValue(id, ScheduleEntry::setThursday, value); } public ScheduleEntryDto setFriday(final long id, final boolean value) { - return setValue(id, ScheduleEntry::setFriday, value); + return modifyValue(id, ScheduleEntry::setFriday, value); } public ScheduleEntryDto setSaturday(final long id, final boolean value) { - return setValue(id, ScheduleEntry::setSaturday, value); + return modifyValue(id, ScheduleEntry::setSaturday, value); } public ScheduleEntryDto setSunday(final long id, final boolean value) { - return setValue(id, ScheduleEntry::setSunday, value); + return modifyValue(id, ScheduleEntry::setSunday, value); } public ScheduleEntryDto setType(final long id, final ScheduleEntryType value) { - return setValue(id, ScheduleEntry::setType, value); + return modifyValue(id, ScheduleEntry::setType, value); } public ScheduleEntryDto setZenith(final long id, final double value) { - return setValue(id, ScheduleEntry::setZenith, value); + return modifyValue(id, ScheduleEntry::setZenith, value); } public ScheduleEntryDto setHour(final long id, final int value) { - return setValue(id, ScheduleEntry::setHour, value); + return modifyValue(id, ScheduleEntry::setHour, value); } public ScheduleEntryDto setMinute(final long id, final int value) { - return setValue(id, ScheduleEntry::setMinute, value); + return modifyValue(id, ScheduleEntry::setMinute, value); } public ScheduleEntryDto setSecond(final long id, final int value) { - return setValue(id, ScheduleEntry::setSecond, value); + return modifyValue(id, ScheduleEntry::setSecond, value); } public ScheduleEntryDto setFuzzySeconds(final long id, final int value) { - return setValue(id, ScheduleEntry::setFuzzySeconds, value); + return modifyValue(id, ScheduleEntry::setFuzzySeconds, value); } public ScheduleEntryDto setValue(final long id, final double value) { - return setValue(id, ScheduleEntry::setValue, value); + return modifyValue(id, ScheduleEntry::setValue, value); } public ScheduleEntryDto setProperty(final long id, final Long propertyId) { - return setValue(id, ScheduleEntry::setProperty, propertyId == null ? null : propertyReader.getById(propertyId)); + return modifyValue(id, ScheduleEntry::setProperty, propertyId == null ? null : propertyReader.getById(propertyId)); } public ScheduleEntryDto setBulk(final long id, final Long bulkId) { - return setValue(id, ScheduleEntry::setBulk, bulkId == null ? null : bulkReader.getById(bulkId)); + return modifyValue(id, ScheduleEntry::setBulk, bulkId == null ? null : bulkReader.getById(bulkId)); } private void setPosition(final ScheduleEntry entry, final int newPosition) { @@ -158,19 +152,9 @@ public class ScheduleEntryWriter { for (final ScheduleEntry e : entry.getSchedule().getEntries()) { if (e.getPosition() >= min && e.getPosition() <= max) { e.setPosition(e.getPosition() + diff); - publish(e, true, false); } } entry.setPosition(newPosition); } - private ScheduleEntryDto publish(final ScheduleEntry entry, final boolean existing, final boolean publishSchedule) { - final ScheduleEntryDto dto = scheduleEntryMapper.toDto(entry); - webSocketService.send(ScheduleEntryDto.class, dto, existing); - if (publishSchedule) { - scheduleMapper.publish(entry.getSchedule(), true); - } - return dto; - } - }
Name - +
Name - +
Name - +
- + diff --git a/src/main/angular/src/app/pages/schedule/editor/schedule-editor.component.html b/src/main/angular/src/app/pages/schedule/editor/schedule-editor.component.html index 2524db9..5e24eb6 100644 --- a/src/main/angular/src/app/pages/schedule/editor/schedule-editor.component.html +++ b/src/main/angular/src/app/pages/schedule/editor/schedule-editor.component.html @@ -11,7 +11,7 @@
- +