show errors on invalid date input

This commit is contained in:
Michael Shamoon 2022-05-01 14:03:40 -07:00
parent 7ae31def4f
commit 2940686fba
2 changed files with 25 additions and 18 deletions

View File

@ -162,8 +162,8 @@
<div [ngbNavOutlet]="nav" class="mt-2"></div> <div [ngbNavOutlet]="nav" class="mt-2"></div>
<button type="button" class="btn btn-outline-secondary" (click)="discard()" i18n [disabled]="networkActive || !(isDirty$ | async)">Discard</button>&nbsp; <button type="button" class="btn btn-outline-secondary" (click)="discard()" i18n [disabled]="networkActive || !(isDirty$ | async)">Discard</button>&nbsp;
<button type="button" class="btn btn-outline-primary" (click)="saveEditNext()" *ngIf="hasNext()" i18n [disabled]="networkActive || !(isDirty$ | async)">Save & next</button>&nbsp; <button type="button" class="btn btn-outline-primary" (click)="saveEditNext()" *ngIf="hasNext()" i18n [disabled]="networkActive || !(isDirty$ | async) || error">Save & next</button>&nbsp;
<button type="submit" class="btn btn-primary" i18n [disabled]="networkActive || !(isDirty$ | async)">Save</button>&nbsp; <button type="submit" class="btn btn-primary" i18n [disabled]="networkActive || !(isDirty$ | async) || error">Save</button>&nbsp;
</form> </form>
</div> </div>

View File

@ -146,18 +146,24 @@ export class DocumentDetailComponent
this.documentForm.valueChanges this.documentForm.valueChanges
.pipe(takeUntil(this.unsubscribeNotifier)) .pipe(takeUntil(this.unsubscribeNotifier))
.subscribe((changes) => { .subscribe((changes) => {
this.error = null
if (this.ogDate) { if (this.ogDate) {
let newDate = new Date(normalizeDateStr(changes['created'])) try {
newDate.setHours( let newDate = new Date(normalizeDateStr(changes['created']))
this.ogDate.getHours(), newDate.setHours(
this.ogDate.getMinutes(), this.ogDate.getHours(),
this.ogDate.getSeconds(), this.ogDate.getMinutes(),
this.ogDate.getMilliseconds() this.ogDate.getSeconds(),
) this.ogDate.getMilliseconds()
this.documentForm.patchValue( )
{ created: newDate.toISOString() }, this.documentForm.patchValue(
{ emitEvent: false } { created: newDate.toISOString() },
) { emitEvent: false }
)
} catch (e) {
// catch this before we try to save and simulate an api error
this.error = { created: e.message }
}
} }
Object.assign(this.document, this.documentForm.value) Object.assign(this.document, this.documentForm.value)
@ -320,16 +326,17 @@ export class DocumentDetailComponent
this.documentsService this.documentsService
.get(this.documentId) .get(this.documentId)
.pipe(first()) .pipe(first())
.subscribe( .subscribe({
(doc) => { next: (doc) => {
Object.assign(this.document, doc) Object.assign(this.document, doc)
this.title = doc.title this.title = doc.title
this.documentForm.patchValue(doc) this.documentForm.patchValue(doc)
this.openDocumentService.setDirty(doc.id, false)
}, },
(error) => { error: () => {
this.router.navigate(['404']) this.router.navigate(['404'])
} },
) })
} }
save() { save() {