From ac744604edcb80ab9d1d3a0eee57c5b7ebe74c29 Mon Sep 17 00:00:00 2001 From: ewandor Date: Wed, 25 Jan 2023 21:02:07 +0100 Subject: [PATCH] Repairing Date & Datetime components --- back/app/entity/models.py | 6 +++--- back/app/entity/schemas.py | 8 +++----- front/app/src/common/crud/card/card.component.ts | 4 ++-- front/app/src/common/crud/types/date.type.ts | 10 +++++++--- front/app/src/common/crud/types/datetime.type.ts | 10 ++++++++-- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/back/app/entity/models.py b/back/app/entity/models.py index 6b292f96..63cbc33d 100644 --- a/back/app/entity/models.py +++ b/back/app/entity/models.py @@ -1,6 +1,6 @@ from enum import Enum from datetime import datetime, date -from typing import List, Literal +from typing import List, Literal, Optional from pymongo import TEXT, IndexModel from pydantic import Field, BaseModel, validator @@ -64,8 +64,8 @@ class Institution(BaseModel): class Entity(Document): _id: str - address: Indexed(str, index_type=TEXT) entity_data: Individual | Corporation | Institution = Field(..., discriminator='type') + address: Optional[str] = "" label: str = None @validator("label", always=True) @@ -79,7 +79,7 @@ class Entity(Document): bson_encoders = { date: lambda dt: dt if hasattr(dt, 'hour') else datetime(year=dt.year, month=dt.month, day=dt.day, - hour=0, minute=0, second=0) + hour=0, minute=0, second=0) } fulltext_search = ['label'] diff --git a/back/app/entity/schemas.py b/back/app/entity/schemas.py index 8d41c70a..50def168 100644 --- a/back/app/entity/schemas.py +++ b/back/app/entity/schemas.py @@ -1,6 +1,4 @@ -import uuid - -from datetime import datetime +from typing import Optional from pydantic import BaseModel, Field from .models import Entity, EntityType, Individual, Corporation @@ -12,10 +10,10 @@ class EntityRead(Entity): class EntityCreate(Writer): - address: str entity_data: Individual | Corporation = Field(..., discriminator='type') + address: Optional[str] = "" class EntityUpdate(BaseModel): - address: str entity_data: Individual | Corporation = Field(..., discriminator='type') + address: Optional[str] = "" diff --git a/front/app/src/common/crud/card/card.component.ts b/front/app/src/common/crud/card/card.component.ts index 676c1516..1f67e64e 100644 --- a/front/app/src/common/crud/card/card.component.ts +++ b/front/app/src/common/crud/card/card.component.ts @@ -59,8 +59,8 @@ export class CardComponent implements OnInit { this._loading$.next(true); if (this.isCreateForm()) { this.crudService.create(this.resource!, model).subscribe((response: any) => { - this._loading$.next(false); - this.router.navigateByUrl(response.id); + this._loading$.next(false); + this.router.navigate([`../${response.id}`], {relativeTo: this.route}); }); } else { this.crudService.update(this.resource!, model).subscribe((model: any) => { diff --git a/front/app/src/common/crud/types/date.type.ts b/front/app/src/common/crud/types/date.type.ts index 46dc1789..06b49fa1 100644 --- a/front/app/src/common/crud/types/date.type.ts +++ b/front/app/src/common/crud/types/date.type.ts @@ -39,16 +39,20 @@ import { FieldType, FieldTypeConfig } from '@ngx-formly/core'; }) export class DateTypeComponent extends FieldType implements OnInit { - public time : NgbTimeStruct = { hour: 12, minute: 0, second: 0 } - public date : NgbDateStruct = { year: 2023, month: 1, day: 9 } - public datetime : Date = new Date() + public date : NgbDateStruct; + public datetime : Date = new Date(); constructor() { super(); + this.date = this.getDateStruct(new Date()); } ngOnInit() { + if (this.formControl.value === undefined) { + this.changeDatetime({}); + } + this.formControl.valueChanges.subscribe(value => { this.datetime = new Date(value) this.date = this.getDateStruct(this.datetime); diff --git a/front/app/src/common/crud/types/datetime.type.ts b/front/app/src/common/crud/types/datetime.type.ts index 28cfc110..a7997c46 100644 --- a/front/app/src/common/crud/types/datetime.type.ts +++ b/front/app/src/common/crud/types/datetime.type.ts @@ -41,16 +41,22 @@ import { FieldType, FieldTypeConfig } from '@ngx-formly/core'; }) export class DatetimeTypeComponent extends FieldType implements OnInit { - public time : NgbTimeStruct = { hour: 12, minute: 0, second: 0 } - public date : NgbDateStruct = { year: 2023, month: 1, day: 9 } + public time : NgbTimeStruct; + public date : NgbDateStruct; public datetime : Date = new Date() constructor() { super(); + this.time = this.getTimeStruct(new Date()); + this.date = this.getDateStruct(new Date()); } ngOnInit() { + if (this.formControl.value === undefined) { + this.changeDatetime({}); + } + this.formControl.valueChanges.subscribe(value => { this.datetime = new Date(value) this.date = this.getDateStruct(this.datetime);