From 12285b247329e7de79225808a0a94b4b278f4a9e Mon Sep 17 00:00:00 2001 From: ewandor Date: Wed, 1 Feb 2023 18:54:53 +0100 Subject: [PATCH] robustifying arrays and foreignkeys --- back/app/template/models.py | 8 +- back/app/template/schemas.py | 4 +- front/app/src/common/crud/crud.service.ts | 2 +- front/app/src/common/crud/types/array.type.ts | 3 +- .../src/common/crud/types/foreignkey.type.ts | 86 ++++++++++++++----- 5 files changed, 72 insertions(+), 31 deletions(-) diff --git a/back/app/template/models.py b/back/app/template/models.py index 034975b9..1725b646 100644 --- a/back/app/template/models.py +++ b/back/app/template/models.py @@ -32,22 +32,22 @@ class ProvisionTemplate(CrudDocument): fulltext_search = ['name', 'title', 'body'] -class ProvisionReference(BaseModel): +class ProvisionTemplateReference(BaseModel): provision_template_id: str = Field( foreignKey={ "reference": { "resource": "template/provision", "schema": "ProvisionTemplate", + "displayedFields": ['title', 'body'] }, - }, - props={"test": "test"} + } ) class ContractTemplate(CrudDocument): name: str parties: List[PartyTemplate] = [] - provisions: List[ProvisionReference] = Field( + provisions: List[ProvisionTemplateReference] = Field( default=[], props={"items-per-row": "1"} ) diff --git a/back/app/template/schemas.py b/back/app/template/schemas.py index 860a1be2..b7a895c0 100644 --- a/back/app/template/schemas.py +++ b/back/app/template/schemas.py @@ -1,7 +1,7 @@ from pydantic import BaseModel from typing import List -from .models import ContractTemplate, ProvisionTemplate, PartyTemplate, ProvisionReference +from .models import ContractTemplate, ProvisionTemplate, PartyTemplate, ProvisionTemplateReference from ..core.schemas import Writer from ..core.models import text_area @@ -17,7 +17,7 @@ class ContractTemplateCreate(Writer): class ContractTemplateUpdate(BaseModel): name: str parties: List[PartyTemplate] = [] - provisions: List[ProvisionReference] = [] + provisions: List[ProvisionTemplateReference] = [] class ProvisionTemplateRead(ProvisionTemplate): diff --git a/front/app/src/common/crud/crud.service.ts b/front/app/src/common/crud/crud.service.ts index f956d3e7..0bd88ab6 100644 --- a/front/app/src/common/crud/crud.service.ts +++ b/front/app/src/common/crud/crud.service.ts @@ -91,7 +91,7 @@ export class CrudService extends ApiService { } public get(resource: string, id: string) { - return this.http.get<{}>( + return this.http.get( `${this.api_root}/${resource.toLowerCase()}/${id}` ); } diff --git a/front/app/src/common/crud/types/array.type.ts b/front/app/src/common/crud/types/array.type.ts index 989130a6..3dfbd191 100644 --- a/front/app/src/common/crud/types/array.type.ts +++ b/front/app/src/common/crud/types/array.type.ts @@ -43,8 +43,7 @@ export class ArrayTypeComponent extends FieldArrayType implements OnInit { throw new Error("to value must be comprised between 0 and n - 1"); } value_list.splice(to, 0, value_list.splice(from, 1)[0]); - this.formControl.setValue(value_list); - this.field.fieldGroup!.splice(to, 0, this.field.fieldGroup!.splice(from, 1)[0]); + this.formControl.patchValue(value_list); } } diff --git a/front/app/src/common/crud/types/foreignkey.type.ts b/front/app/src/common/crud/types/foreignkey.type.ts index 90819474..5b914921 100644 --- a/front/app/src/common/crud/types/foreignkey.type.ts +++ b/front/app/src/common/crud/types/foreignkey.type.ts @@ -1,12 +1,12 @@ -import {AfterContentInit, Component, OnInit} from '@angular/core'; -import {Observable, OperatorFunction, switchMapTo, of, from, exhaustAll, mergeAll, concatAll} from 'rxjs'; -import { catchError } from 'rxjs/operators'; -import { debounceTime, distinctUntilChanged, map, tap, merge } from 'rxjs/operators'; -import { FieldType, FieldTypeConfig} from '@ngx-formly/core'; -import { ModalDismissReasons, NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import {CrudService, Filters, SortBy} from "../crud.service"; -import {formatDate} from "@angular/common"; +import { Component, OnInit } from '@angular/core'; +import { Observable, OperatorFunction, concatAll } from 'rxjs'; +import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators'; +import { FieldType, FieldTypeConfig, FormlyFieldConfig } from '@ngx-formly/core'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { CrudService, Filters } from "../crud.service"; +import { CrudFormlyJsonschemaService } from "../crud-formly-jsonschema.service"; +import { FormGroup } from "@angular/forms"; @Component({ selector: 'formly-foreignkey-type', @@ -48,6 +48,7 @@ import {formatDate} from "@angular/common"; +