Improved update & add logic #410
This commit is contained in:
parent
74dba4b981
commit
171aa63df9
@ -168,7 +168,7 @@ class ScheduledEvent(TableABC):
|
||||
UPDATE `ScheduledEvents`
|
||||
SET `Interval` = '{self._interval.value}',
|
||||
`Name` = '{self._name}',
|
||||
`Description` = '{self._start_time}',
|
||||
`Description` = {"NULL" if self._description is None else f"'{self._description}'"},
|
||||
`ChannelId` = {"NULL" if self._channel_id is None else f"'{self._channel_id}'"},
|
||||
`StartTime` = '{self._start_time}',
|
||||
`EndTime` = {"NULL" if self._end_time is None else f"'{self._end_time}'"},
|
||||
|
@ -69,13 +69,22 @@ class ScheduledEventMutation(QueryABC):
|
||||
scheduled_event = self._scheduled_events.get_scheduled_event_by_id(input["id"])
|
||||
self._can_user_mutate_data(scheduled_event.server, UserRoleEnum.moderator)
|
||||
|
||||
scheduled_event.short_name = input["shortName"] if "shortName" in input else scheduled_event.short_name
|
||||
scheduled_event.interval = input["interval"] if "interval" in input else scheduled_event.interval
|
||||
scheduled_event.interval = (
|
||||
ScheduledEventIntervalEnum(input["interval"]) if "interval" in input else scheduled_event.interval
|
||||
)
|
||||
scheduled_event.name = input["name"] if "name" in input else scheduled_event.name
|
||||
scheduled_event.description = input["description"] if "description" in input else scheduled_event.description
|
||||
scheduled_event.channel_id = input["channelId"] if "channelId" in input else scheduled_event.channel_id
|
||||
scheduled_event.start_time = input["startTime"] if "startTime" in input else scheduled_event.start_time
|
||||
scheduled_event.end_time = input["endTime"] if "endTime" in input else scheduled_event.end_time
|
||||
scheduled_event.start_time = (
|
||||
datetime.strptime(input["startTime"], "%Y-%m-%dT%H:%M:%S.%fZ")
|
||||
if "startTime" in input
|
||||
else scheduled_event.start_time
|
||||
)
|
||||
scheduled_event.end_time = (
|
||||
datetime.strptime(input["endTime"], "%Y-%m-%dT%H:%M:%S.%fZ")
|
||||
if "endTime" in input
|
||||
else scheduled_event.end_time
|
||||
)
|
||||
scheduled_event.entity_type = input["entityType"] if "entityType" in input else scheduled_event.entity_type
|
||||
scheduled_event.location = input["location"] if "location" in input else scheduled_event.location
|
||||
|
||||
|
@ -13,7 +13,7 @@ class ScheduledEventHistoryQuery(DataQueryWithHistoryABC):
|
||||
|
||||
self.set_field("id", lambda x, *_: x.id)
|
||||
self.set_field("id", lambda x, *_: x.id)
|
||||
self.set_field("interval", lambda x, *_: x.interval)
|
||||
self.set_field("interval", lambda x, *_: x.interval.value)
|
||||
self.set_field("name", lambda x, *_: x.name)
|
||||
self.set_field("description", lambda x, *_: x.description)
|
||||
self.set_field("channel_id", lambda x, *_: x.channel_id)
|
||||
|
@ -12,7 +12,7 @@ class ScheduledEventQuery(DataQueryWithHistoryABC):
|
||||
DataQueryWithHistoryABC.__init__(self, "ScheduledEvent", "ScheduledEventsHistory", ScheduledEventHistory, db)
|
||||
|
||||
self.set_field("id", lambda x, *_: x.id)
|
||||
self.set_field("interval", lambda x, *_: x.interval)
|
||||
self.set_field("interval", lambda x, *_: x.interval.value)
|
||||
self.set_field("name", lambda x, *_: x.name)
|
||||
self.set_field("description", lambda x, *_: x.description)
|
||||
self.set_field("channelId", lambda x, *_: x.channel_id)
|
||||
|
@ -33,9 +33,11 @@ export interface ScheduledEventFilter {
|
||||
server?: ServerFilter;
|
||||
}
|
||||
|
||||
export enum ScheduledEventInterval {
|
||||
daily = "daily",
|
||||
weekly = "weekly",
|
||||
monthly = "monthly",
|
||||
yearly = "yearly"
|
||||
}
|
||||
// export enum ScheduledEventInterval {
|
||||
// daily = "daily",
|
||||
// weekly = "weekly",
|
||||
// monthly = "monthly",
|
||||
// yearly = "yearly"
|
||||
// }
|
||||
|
||||
export type ScheduledEventInterval = "daily" | "weekly" | "monthly" | "month"
|
||||
|
@ -204,9 +204,10 @@ export class Mutations {
|
||||
`;
|
||||
|
||||
static updateScheduledEvent = `
|
||||
mutation updateScheduledEvent($interval: String,$name: String,$description: String,$channelId: String,$startTime: String, $endTime: String,$entityType: Int,$location: String, $serverId: ID) {
|
||||
mutation updateScheduledEvent($id: ID, $interval: String,$name: String,$description: String,$channelId: String,$startTime: String, $endTime: String,$entityType: Int,$location: String, $serverId: ID) {
|
||||
scheduledEvent {
|
||||
updateScheduledEvent(input: {
|
||||
id: $id,
|
||||
interval: $interval,
|
||||
name: $name,
|
||||
description: $description,
|
||||
|
@ -1,5 +1,5 @@
|
||||
<div class="edit-dialog">
|
||||
<p-dialog [contentStyle]="{'overflow':'visible'}" [header]="header" [(visible)]="visible" [modal]="true"
|
||||
<p-dialog [contentStyle]="{'overflow':'visible'}" [(visible)]="visible" [header]="header" [modal]="true"
|
||||
[draggable]="false" [resizable]="false"
|
||||
[style]="{ width: '500px', height: '575px' }">
|
||||
<form [formGroup]="inputForm">
|
||||
@ -80,7 +80,7 @@
|
||||
</div>
|
||||
<div class="btn-wrapper">
|
||||
<button pButton label="{{'common.abort' | translate}}" class="btn danger-btn"
|
||||
(click)="visible = false"></button>
|
||||
(click)="event = undefined"></button>
|
||||
<button *ngIf="activeIndex < 1" pButton label="{{'common.continue' | translate}}" class="btn"
|
||||
(click)="next()" [disabled]="!inputForm"></button>
|
||||
<button *ngIf="activeIndex == 1" pButton label="{{'common.save' | translate}}" class="btn"
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core";
|
||||
import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from "@angular/core";
|
||||
import {
|
||||
EventType,
|
||||
ScheduledEvent,
|
||||
@ -20,9 +20,28 @@ import { DatePipe } from "@angular/common";
|
||||
templateUrl: "./edit-scheduled-event-dialog.component.html",
|
||||
styleUrls: ["./edit-scheduled-event-dialog.component.scss"]
|
||||
})
|
||||
export class EditScheduledEventDialogComponent implements OnInit {
|
||||
@Input() event?: ScheduledEvent;
|
||||
@Output() save = new EventEmitter<ScheduledEvent>();
|
||||
export class EditScheduledEventDialogComponent implements OnInit, OnChanges {
|
||||
public _event?: ScheduledEvent;
|
||||
|
||||
@Input()
|
||||
set event(event: ScheduledEvent | undefined) {
|
||||
this._event = event;
|
||||
this.eventChange.emit(event);
|
||||
}
|
||||
|
||||
get event(): ScheduledEvent | undefined {
|
||||
return this._event;
|
||||
}
|
||||
|
||||
@Output() eventChange: EventEmitter<ScheduledEvent> = new EventEmitter<ScheduledEvent>();
|
||||
|
||||
get header() {
|
||||
if (this.event && this.event.createdAt === "" && this.event.modifiedAt === "") {
|
||||
return this.translate.instant("view.server.scheduled_events.edit_dialog.add_header");
|
||||
} else {
|
||||
return this.translate.instant("view.server.scheduled_events.edit_dialog.edit_header");
|
||||
}
|
||||
}
|
||||
|
||||
get visible() {
|
||||
return this.event != undefined;
|
||||
@ -36,14 +55,6 @@ export class EditScheduledEventDialogComponent implements OnInit {
|
||||
}
|
||||
}
|
||||
|
||||
get header() {
|
||||
if (this.event && this.event.createdAt === "" && this.event.modifiedAt === "") {
|
||||
return this.translate.instant("view.server.scheduled_events.edit_dialog.add_header");
|
||||
} else {
|
||||
return this.translate.instant("view.server.scheduled_events.edit_dialog.edit_header");
|
||||
}
|
||||
}
|
||||
|
||||
public activeIndex: number = 0;
|
||||
public inputForm!: FormGroup<{
|
||||
entityType: FormControl<number | undefined | null>;
|
||||
@ -62,12 +73,24 @@ export class EditScheduledEventDialogComponent implements OnInit {
|
||||
public guild: Guild = { channels: [], emojis: [], roles: [] };
|
||||
public times: string[] = [];
|
||||
public now = new Date();
|
||||
public interval = Object.keys(ScheduledEventInterval).map(k => (
|
||||
public interval = [
|
||||
{
|
||||
label: this.translate.instant(`view.server.scheduled_events.edit_dialog.location.intervals.${k}`),
|
||||
value: k
|
||||
label: this.translate.instant("view.server.scheduled_events.edit_dialog.location.intervals.daily"),
|
||||
value: "daily"
|
||||
},
|
||||
{
|
||||
label: this.translate.instant("view.server.scheduled_events.edit_dialog.location.intervals.weekly"),
|
||||
value: "weekly"
|
||||
},
|
||||
{
|
||||
label: this.translate.instant("view.server.scheduled_events.edit_dialog.location.intervals.monthly"),
|
||||
value: "monthly"
|
||||
},
|
||||
{
|
||||
label: this.translate.instant("view.server.scheduled_events.edit_dialog.location.intervals.yearly"),
|
||||
value: "yearly"
|
||||
}
|
||||
));
|
||||
];
|
||||
|
||||
constructor(
|
||||
private translate: TranslateService,
|
||||
@ -92,6 +115,10 @@ export class EditScheduledEventDialogComponent implements OnInit {
|
||||
this.setInputForm();
|
||||
}
|
||||
|
||||
public ngOnChanges() {
|
||||
this.setInputForm();
|
||||
}
|
||||
|
||||
public ngOnInit() {
|
||||
this.data.getServerFromRoute(this.route).then(server => {
|
||||
this.server = server;
|
||||
@ -154,9 +181,7 @@ export class EditScheduledEventDialogComponent implements OnInit {
|
||||
location: this.inputForm.controls.location.value ?? undefined,
|
||||
server: this.server
|
||||
};
|
||||
|
||||
this.save.emit(this.event);
|
||||
this.event = undefined;
|
||||
this.visible = false;
|
||||
}
|
||||
|
||||
public next() {
|
||||
|
@ -1,5 +1,6 @@
|
||||
<app-edit-scheduled-event-dialog [event]="editableScheduledEvent"
|
||||
(save)="onRowEditSave($event)"></app-edit-scheduled-event-dialog>
|
||||
<div *ngIf="editableScheduledEvent">
|
||||
<app-edit-scheduled-event-dialog [(event)]="editableScheduledEvent"></app-edit-scheduled-event-dialog>
|
||||
</div>
|
||||
|
||||
<h1>
|
||||
{{'view.server.scheduled_events.header' | translate}}
|
||||
@ -27,7 +28,7 @@
|
||||
|
||||
<div class="table-caption-btn-wrapper btn-wrapper">
|
||||
<button pButton label="{{'common.add' | translate}}" class="icon-btn btn"
|
||||
icon="pi pi-plus" (click)="addScheduledEvent(dt)"
|
||||
icon="pi pi-plus" (click)="addScheduledEvent()"
|
||||
[disabled]="isEditingNew || !user?.isModerator && !user?.isAdmin">
|
||||
</button>
|
||||
<button pButton label="{{'common.reset_filters' | translate}}" icon="pi pi-undo"
|
||||
|
@ -60,7 +60,20 @@ export class ScheduledEventsComponent extends ComponentWithTable implements OnIn
|
||||
private server: Server = {};
|
||||
public user: UserDTO | null = null;
|
||||
public query: string = Queries.scheduledEventWithHistoryQuery;
|
||||
public editableScheduledEvent?: ScheduledEvent = undefined;
|
||||
public _editableScheduledEvent?: ScheduledEvent = undefined;
|
||||
|
||||
set editableScheduledEvent(event: ScheduledEvent | undefined) {
|
||||
if (!event) {
|
||||
this.isEditingNew = false;
|
||||
} else if (this._editableScheduledEvent && event && this._editableScheduledEvent !== event) {
|
||||
this.onRowEditSave(event);
|
||||
}
|
||||
this._editableScheduledEvent = event;
|
||||
}
|
||||
|
||||
get editableScheduledEvent(): ScheduledEvent | undefined {
|
||||
return this._editableScheduledEvent;
|
||||
}
|
||||
|
||||
public constructor(
|
||||
private authService: AuthService,
|
||||
@ -221,7 +234,6 @@ export class ScheduledEventsComponent extends ComponentWithTable implements OnIn
|
||||
if (this.isEditingNew) {
|
||||
this.spinner.showSpinner();
|
||||
this.data.mutation<ScheduledEventMutationResult>(Mutations.createScheduledEvent, {
|
||||
id: newScheduledEvent.id,
|
||||
interval: newScheduledEvent.interval,
|
||||
name: newScheduledEvent.name,
|
||||
description: newScheduledEvent.description,
|
||||
@ -266,7 +278,6 @@ export class ScheduledEventsComponent extends ComponentWithTable implements OnIn
|
||||
this.toastService.success(this.translate.instant("view.server.ScheduledEvents.message.scheduled_event_update"), this.translate.instant("view.server.ScheduledEvents.message.scheduled_event_update_d", { name: newScheduledEvent.name }));
|
||||
this.loadNextPage();
|
||||
});
|
||||
this.editableScheduledEvent = undefined;
|
||||
}
|
||||
|
||||
public deleteScheduledEvent(ScheduledEvent: ScheduledEvent): void {
|
||||
@ -288,7 +299,7 @@ export class ScheduledEventsComponent extends ComponentWithTable implements OnIn
|
||||
});
|
||||
}
|
||||
|
||||
public addScheduledEvent(table: Table): void {
|
||||
public addScheduledEvent(): void {
|
||||
this.isEditingNew = true;
|
||||
this.editableScheduledEvent = JSON.parse(JSON.stringify(this.newScheduledEventTemplate));
|
||||
// const newScheduledEvent = JSON.parse(JSON.stringify(this.newScheduledEventTemplate));
|
||||
|
Loading…
Reference in New Issue
Block a user