issue-77 #105
@ -1,5 +1,7 @@
 | 
				
			|||||||
package core.api.models.timemanager.tasks.repeatinginfo;
 | 
					package core.api.models.timemanager.tasks.repeatinginfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.annotation.JsonFormat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.time.LocalDate;
 | 
					import java.time.LocalDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class TaskRepeatDayInfo {
 | 
					public class TaskRepeatDayInfo {
 | 
				
			||||||
@ -7,7 +9,8 @@ public class TaskRepeatDayInfo {
 | 
				
			|||||||
    private int offset;
 | 
					    private int offset;
 | 
				
			||||||
    private DeadlineStrategy deadlineStrategy;
 | 
					    private DeadlineStrategy deadlineStrategy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private LocalDate endDate;
 | 
					    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
 | 
				
			||||||
 | 
					    private LocalDate endingDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int getOffset() {
 | 
					    public int getOffset() {
 | 
				
			||||||
        return offset;
 | 
					        return offset;
 | 
				
			||||||
@ -25,11 +28,11 @@ public class TaskRepeatDayInfo {
 | 
				
			|||||||
        this.deadlineStrategy = deadlineStrategy;
 | 
					        this.deadlineStrategy = deadlineStrategy;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public LocalDate getEndDate() {
 | 
					    public LocalDate getEndingDate() {
 | 
				
			||||||
        return endDate;
 | 
					        return endingDate;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setEndDate(LocalDate endDate) {
 | 
					    public void setEndingDate(LocalDate endingDate) {
 | 
				
			||||||
        this.endDate = endDate;
 | 
					        this.endingDate = endingDate;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -30,7 +30,7 @@ public class TaskSeriesService {
 | 
				
			|||||||
        LocalDate currentTaskDate = rootTask.getStartDate().plusDays(taskRepeatInfo.getOffset());
 | 
					        LocalDate currentTaskDate = rootTask.getStartDate().plusDays(taskRepeatInfo.getOffset());
 | 
				
			||||||
        TaskSerie taskSerie = new TaskSerie();
 | 
					        TaskSerie taskSerie = new TaskSerie();
 | 
				
			||||||
        int index = 1;
 | 
					        int index = 1;
 | 
				
			||||||
        while(currentTaskDate.isBefore(taskRepeatInfo.getEndDate())) {
 | 
					        while(currentTaskDate.isBefore(taskRepeatInfo.getEndingDate())) {
 | 
				
			||||||
            Task task = Task.cloneTask(rootTask);
 | 
					            Task task = Task.cloneTask(rootTask);
 | 
				
			||||||
            task.setStartDate(currentTaskDate);
 | 
					            task.setStartDate(currentTaskDate);
 | 
				
			||||||
            if(taskRepeatInfo.getDeadlineStrategy() == DeadlineStrategy.DEADLINE_EQUAL_START) {
 | 
					            if(taskRepeatInfo.getDeadlineStrategy() == DeadlineStrategy.DEADLINE_EQUAL_START) {
 | 
				
			||||||
@ -45,6 +45,7 @@ public class TaskSeriesService {
 | 
				
			|||||||
            index++;
 | 
					            index++;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        taskSeriesRepository.save(taskSerie);
 | 
				
			||||||
        taskRepository.saveAll(taskSerie.getTasks());
 | 
					        taskRepository.saveAll(taskSerie.getTasks());
 | 
				
			||||||
        return ServiceExitCode.OK;
 | 
					        return ServiceExitCode.OK;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,7 @@ api/properties.service.ts
 | 
				
			|||||||
api/schedule.service.ts
 | 
					api/schedule.service.ts
 | 
				
			||||||
api/task.service.ts
 | 
					api/task.service.ts
 | 
				
			||||||
api/taskgroup.service.ts
 | 
					api/taskgroup.service.ts
 | 
				
			||||||
 | 
					api/taskseries.service.ts
 | 
				
			||||||
api/users.service.ts
 | 
					api/users.service.ts
 | 
				
			||||||
configuration.ts
 | 
					configuration.ts
 | 
				
			||||||
encoder.ts
 | 
					encoder.ts
 | 
				
			||||||
@ -47,6 +48,7 @@ model/simpleStatusResponse.ts
 | 
				
			|||||||
model/taskEntityInfo.ts
 | 
					model/taskEntityInfo.ts
 | 
				
			||||||
model/taskFieldInfo.ts
 | 
					model/taskFieldInfo.ts
 | 
				
			||||||
model/taskOverviewInfo.ts
 | 
					model/taskOverviewInfo.ts
 | 
				
			||||||
 | 
					model/taskRepeatDayInfo.ts
 | 
				
			||||||
model/taskScheduleStopResponse.ts
 | 
					model/taskScheduleStopResponse.ts
 | 
				
			||||||
model/taskShortInfo.ts
 | 
					model/taskShortInfo.ts
 | 
				
			||||||
model/taskTaskgroupInfo.ts
 | 
					model/taskTaskgroupInfo.ts
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,7 @@ import { PropertiesService } from './api/properties.service';
 | 
				
			|||||||
import { ScheduleService } from './api/schedule.service';
 | 
					import { ScheduleService } from './api/schedule.service';
 | 
				
			||||||
import { TaskService } from './api/task.service';
 | 
					import { TaskService } from './api/task.service';
 | 
				
			||||||
import { TaskgroupService } from './api/taskgroup.service';
 | 
					import { TaskgroupService } from './api/taskgroup.service';
 | 
				
			||||||
 | 
					import { TaskseriesService } from './api/taskseries.service';
 | 
				
			||||||
import { UsersService } from './api/users.service';
 | 
					import { UsersService } from './api/users.service';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@NgModule({
 | 
					@NgModule({
 | 
				
			||||||
 | 
				
			|||||||
@ -14,6 +14,8 @@ export * from './task.service';
 | 
				
			|||||||
import { TaskService } from './task.service';
 | 
					import { TaskService } from './task.service';
 | 
				
			||||||
export * from './taskgroup.service';
 | 
					export * from './taskgroup.service';
 | 
				
			||||||
import { TaskgroupService } from './taskgroup.service';
 | 
					import { TaskgroupService } from './taskgroup.service';
 | 
				
			||||||
 | 
					export * from './taskseries.service';
 | 
				
			||||||
 | 
					import { TaskseriesService } from './taskseries.service';
 | 
				
			||||||
export * from './users.service';
 | 
					export * from './users.service';
 | 
				
			||||||
import { UsersService } from './users.service';
 | 
					import { UsersService } from './users.service';
 | 
				
			||||||
export const APIS = [AccountService, HistoryService, LoginService, NtfyService, PropertiesService, ScheduleService, TaskService, TaskgroupService, UsersService];
 | 
					export const APIS = [AccountService, HistoryService, LoginService, NtfyService, PropertiesService, ScheduleService, TaskService, TaskgroupService, TaskseriesService, UsersService];
 | 
				
			||||||
 | 
				
			|||||||
@ -29,6 +29,7 @@ export * from './simpleStatusResponse';
 | 
				
			|||||||
export * from './taskEntityInfo';
 | 
					export * from './taskEntityInfo';
 | 
				
			||||||
export * from './taskFieldInfo';
 | 
					export * from './taskFieldInfo';
 | 
				
			||||||
export * from './taskOverviewInfo';
 | 
					export * from './taskOverviewInfo';
 | 
				
			||||||
 | 
					export * from './taskRepeatDayInfo';
 | 
				
			||||||
export * from './taskScheduleStopResponse';
 | 
					export * from './taskScheduleStopResponse';
 | 
				
			||||||
export * from './taskShortInfo';
 | 
					export * from './taskShortInfo';
 | 
				
			||||||
export * from './taskTaskgroupInfo';
 | 
					export * from './taskTaskgroupInfo';
 | 
				
			||||||
 | 
				
			|||||||
@ -23,7 +23,7 @@ export interface NtfyInformation {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * username of ntfy account for publishing news
 | 
					     * username of ntfy account for publishing news
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    ntfy_user: string;
 | 
					    ntfy_user?: string;
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * token to ntfy useraccount
 | 
					     * token to ntfy useraccount
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
				
			|||||||
@ -91,6 +91,8 @@ import {MatGridListModule} from "@angular/material/grid-list";
 | 
				
			|||||||
import { StopScheduleManuallyComponent } from './dashboard/active-schedule/stop-schedule-manually/stop-schedule-manually.component';
 | 
					import { StopScheduleManuallyComponent } from './dashboard/active-schedule/stop-schedule-manually/stop-schedule-manually.component';
 | 
				
			||||||
import { ConnectionSettingsComponent } from './user-settings/connection-settings/connection-settings.component';
 | 
					import { ConnectionSettingsComponent } from './user-settings/connection-settings/connection-settings.component';
 | 
				
			||||||
import { NtfySettingsComponent } from './user-settings/connection-settings/ntfy-settings/ntfy-settings.component';
 | 
					import { NtfySettingsComponent } from './user-settings/connection-settings/ntfy-settings/ntfy-settings.component';
 | 
				
			||||||
 | 
					import { TaskSeriesCreatorComponent } from './tasks/task-series-creator/task-series-creator.component';
 | 
				
			||||||
 | 
					import {MatStepperModule} from "@angular/material/stepper";
 | 
				
			||||||
@NgModule({
 | 
					@NgModule({
 | 
				
			||||||
  declarations: [
 | 
					  declarations: [
 | 
				
			||||||
    AppComponent,
 | 
					    AppComponent,
 | 
				
			||||||
@ -138,6 +140,7 @@ import { NtfySettingsComponent } from './user-settings/connection-settings/ntfy-
 | 
				
			|||||||
    StopScheduleManuallyComponent,
 | 
					    StopScheduleManuallyComponent,
 | 
				
			||||||
    ConnectionSettingsComponent,
 | 
					    ConnectionSettingsComponent,
 | 
				
			||||||
    NtfySettingsComponent,
 | 
					    NtfySettingsComponent,
 | 
				
			||||||
 | 
					    TaskSeriesCreatorComponent,
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  imports: [
 | 
					  imports: [
 | 
				
			||||||
    BrowserModule,
 | 
					    BrowserModule,
 | 
				
			||||||
@ -181,6 +184,7 @@ import { NtfySettingsComponent } from './user-settings/connection-settings/ntfy-
 | 
				
			|||||||
    NgApexchartsModule,
 | 
					    NgApexchartsModule,
 | 
				
			||||||
    MatButtonToggleModule,
 | 
					    MatButtonToggleModule,
 | 
				
			||||||
    MatGridListModule,
 | 
					    MatGridListModule,
 | 
				
			||||||
 | 
					    MatStepperModule,
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  providers: [
 | 
					  providers: [
 | 
				
			||||||
    HttpClientModule,
 | 
					    HttpClientModule,
 | 
				
			||||||
 | 
				
			|||||||
@ -29,7 +29,7 @@
 | 
				
			|||||||
          <button mat-flat-button class="borderless-btn" color="primary" [routerLink]="['/taskgroups', taskgroup!.taskgroupID, 'tasks', task!.taskID, 'schedule']">Schedule</button>
 | 
					          <button mat-flat-button class="borderless-btn" color="primary" [routerLink]="['/taskgroups', taskgroup!.taskgroupID, 'tasks', task!.taskID, 'schedule']">Schedule</button>
 | 
				
			||||||
          <button mat-flat-button class="yellowBtn" (click)="startTaskNow()">Start now</button>
 | 
					          <button mat-flat-button class="yellowBtn" (click)="startTaskNow()">Start now</button>
 | 
				
			||||||
          <button mat-flat-button class="grayBtn" (click)="openTaskEditor()">Edit</button>
 | 
					          <button mat-flat-button class="grayBtn" (click)="openTaskEditor()">Edit</button>
 | 
				
			||||||
          <!--<button mat-raised-button>Copy</button>-->
 | 
					          <button mat-flat-button class="lightBlueBtn" (click)="openRepeatingTaskEditor()">Copy</button>
 | 
				
			||||||
          <button mat-flat-button class="greenBtn"  *ngIf="task!.finishable" (click)="finishTask()">{{task!.finished ? 'Reopen':'Finish'}}</button>
 | 
					          <button mat-flat-button class="greenBtn"  *ngIf="task!.finishable" (click)="finishTask()">{{task!.finished ? 'Reopen':'Finish'}}</button>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -17,6 +17,7 @@ import {TaskEditorData} from "../task-editor/TaskEditorData";
 | 
				
			|||||||
import * as moment from "moment";
 | 
					import * as moment from "moment";
 | 
				
			||||||
import {ScheduleDashboardComponent} from "../../schedules/schedule-dashboard/schedule-dashboard.component";
 | 
					import {ScheduleDashboardComponent} from "../../schedules/schedule-dashboard/schedule-dashboard.component";
 | 
				
			||||||
import {TaskStatusService} from "../task-status.service";
 | 
					import {TaskStatusService} from "../task-status.service";
 | 
				
			||||||
 | 
					import {TaskSeriesCreatorComponent} from "../task-series-creator/task-series-creator.component";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
  selector: 'app-task-detail-overview',
 | 
					  selector: 'app-task-detail-overview',
 | 
				
			||||||
@ -158,4 +159,11 @@ export class TaskDetailOverviewComponent implements OnInit {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  openRepeatingTaskEditor() {
 | 
				
			||||||
 | 
					    const dialogRef = this.dialog.open(TaskSeriesCreatorComponent, {
 | 
				
			||||||
 | 
					      data: this.task!,
 | 
				
			||||||
 | 
					      minWidth: "400px"
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -24,7 +24,7 @@ export class NtfySettingsComponent {
 | 
				
			|||||||
      next: resp => {
 | 
					      next: resp => {
 | 
				
			||||||
        this.host_formCtrl.setValue(resp.ntfy_host);
 | 
					        this.host_formCtrl.setValue(resp.ntfy_host);
 | 
				
			||||||
        this.topic_formCtrl.setValue(resp.ntfy_topic);
 | 
					        this.topic_formCtrl.setValue(resp.ntfy_topic);
 | 
				
			||||||
        this.user_formCtrl.setValue(resp.ntfy_user);
 | 
					        this.user_formCtrl.setValue(resp.ntfy_user!);
 | 
				
			||||||
        this.token_formCtrl.setValue(resp.ntfy_token!);
 | 
					        this.token_formCtrl.setValue(resp.ntfy_token!);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user