From e0d127d9a9e8afce9a7a6ec050727d4cf89afdc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zieli=C5=84ski?= Date: Fri, 20 Oct 2023 17:29:35 +0200 Subject: [PATCH] WIP: edit and duplicate layer --- .../layer-detail/layer-detail.component.html | 4 + .../layer-detail/layer-detail.component.ts | 8 +- .../layer-edit/layer-edit.component.html | 78 +------------------ .../layers/layer-edit/layer-edit.component.ts | 44 ++++------- .../src/app/modules/layers/layers.routes.ts | 1 + Frontend/src/environments/environment.ts | 4 +- 6 files changed, 28 insertions(+), 111 deletions(-) diff --git a/Frontend/src/app/modules/layers/layer-detail/layer-detail.component.html b/Frontend/src/app/modules/layers/layer-detail/layer-detail.component.html index 10e3da4..9535662 100644 --- a/Frontend/src/app/modules/layers/layer-detail/layer-detail.component.html +++ b/Frontend/src/app/modules/layers/layer-detail/layer-detail.component.html @@ -5,6 +5,10 @@ Layer details + +   diff --git a/Frontend/src/app/modules/layers/layer-detail/layer-detail.component.ts b/Frontend/src/app/modules/layers/layer-detail/layer-detail.component.ts index 6259ac0..b6ee624 100644 --- a/Frontend/src/app/modules/layers/layer-detail/layer-detail.component.ts +++ b/Frontend/src/app/modules/layers/layer-detail/layer-detail.component.ts @@ -4,8 +4,8 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { UntypedFormGroup, UntypedFormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatSort, MatSortModule } from '@angular/material/sort'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; -import { ActivatedRoute } from '@angular/router'; -import { Layer } from 'src/app/models/layer.model'; +import { ActivatedRoute, RouterLink } from '@angular/router'; +import { Layer, LayerType } from 'src/app/models/layer.model'; import { Record } from 'src/app/models/record.model'; import { NotificationsService } from 'src/app/services/notifications.service'; import { environment } from 'src/environments/environment'; @@ -22,7 +22,7 @@ import { MatCardModule } from '@angular/material/card'; standalone: true, imports: [FormsModule, ReactiveFormsModule, MatCardModule, MatButtonModule, MatGridListModule, MatFormFieldModule, MatInputModule, - NgIf, MatTableModule, MatSortModule, DecimalPipe, JsonPipe], + NgIf, MatTableModule, MatSortModule, DecimalPipe, JsonPipe, RouterLink], providers: [DatePipe] }) export class LayerDetailComponent implements OnInit { @@ -35,6 +35,8 @@ export class LayerDetailComponent implements OnInit { displayedColumns = environment.views.layers.recordColumns.split("|"); dataSource!: MatTableDataSource; + LayerType = LayerType; + @ViewChild(MatSort) sort!: MatSort; constructor( diff --git a/Frontend/src/app/modules/layers/layer-edit/layer-edit.component.html b/Frontend/src/app/modules/layers/layer-edit/layer-edit.component.html index b475ccc..467045f 100644 --- a/Frontend/src/app/modules/layers/layer-edit/layer-edit.component.html +++ b/Frontend/src/app/modules/layers/layer-edit/layer-edit.component.html @@ -1,77 +1 @@ -
-
- - - New layer - - - - - - - - - Name - - - Required - - - - - - - - GoogleSheet - - - Required - - - - - - - - - - - - - - - - - - - - - - - - Code - {{item.code}} - - - - Account - {{item.desc1}} - - - - Value - {{item.value | number:'1.2-2'}} - - - - - - - -
-
\ No newline at end of file +EDIT in progress \ No newline at end of file diff --git a/Frontend/src/app/modules/layers/layer-edit/layer-edit.component.ts b/Frontend/src/app/modules/layers/layer-edit/layer-edit.component.ts index 8805cad..349621a 100644 --- a/Frontend/src/app/modules/layers/layer-edit/layer-edit.component.ts +++ b/Frontend/src/app/modules/layers/layer-edit/layer-edit.component.ts @@ -4,12 +4,10 @@ import { UntypedFormBuilder, UntypedFormGroup, FormsModule, ReactiveFormsModule import { MatSort, MatSortModule } from '@angular/material/sort'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { Router, ActivatedRoute, RouterLink } from '@angular/router'; -import moment from 'moment'; import { AuthService } from 'src/app/auth/auth.service'; import { Layer } from 'src/app/models/layer.model'; import { Record } from 'src/app/models/record.model'; import { environment } from 'src/environments/environment'; -import { v4 as uuidv4 } from 'uuid'; import { MatIconModule } from '@angular/material/icon'; import { MatOptionModule } from '@angular/material/core'; import { MatSelectModule } from '@angular/material/select'; @@ -22,11 +20,11 @@ import { MatToolbarModule } from '@angular/material/toolbar'; import { MatCardModule } from '@angular/material/card'; @Component({ - selector: 'diunabi-layer-edit', - templateUrl: './layer-edit.component.html', - styleUrls: ['./layer-edit.component.scss'], - standalone: true, - imports: [FormsModule, ReactiveFormsModule, MatCardModule, MatToolbarModule, MatButtonModule, RouterLink, MatGridListModule, MatFormFieldModule, MatInputModule, NgIf, MatSelectModule, MatOptionModule, MatIconModule, MatTableModule, MatSortModule, DecimalPipe] + selector: 'diunabi-layer-edit', + templateUrl: './layer-edit.component.html', + styleUrls: ['./layer-edit.component.scss'], + standalone: true, + imports: [FormsModule, ReactiveFormsModule, MatCardModule, MatToolbarModule, MatButtonModule, RouterLink, MatGridListModule, MatFormFieldModule, MatInputModule, NgIf, MatSelectModule, MatOptionModule, MatIconModule, MatTableModule, MatSortModule, DecimalPipe] }) export class LayerEditComponent implements OnInit { @@ -44,15 +42,17 @@ export class LayerEditComponent implements OnInit { private http$: HttpClient, private route$: ActivatedRoute, private auth$: AuthService - ) { } + ) { + this.form = Layer.getForm(this.fb$); + } async ngOnInit() { - this.form = Layer.getForm(this.fb$); - this.document = new Layer({ - id: uuidv4(), createdById: this.auth$.user.id, createdAt: moment(), - modifiedAt: moment() - }) - this.document.fillForm(this.form); + this.document = await this.load(); + console.log(this.document); + } + + private async load(): Promise { + return await Layer.getById(this.route$.snapshot.paramMap.get('id') || "", this.http$); } async save() { if (this.form.invalid) { @@ -62,22 +62,8 @@ export class LayerEditComponent implements OnInit { const id = await Layer.add(this.document, this.http$); this.router$.navigate(['../../Detail', id], { relativeTo: this.route$ }); } - async onFileSelected(event: Event) { - const input = event.target as HTMLInputElement; - if (!input.files?.length) { return; } - const file = input.files[0]; - this.document.records = await Layer.parseFile(file, this.http$); - this.dataSource = new MatTableDataSource(this.document.records); - this.dataSource.sort = this.sort; - } + trackByUid(index: number, item: Record) { return item.id; } - async parseGoogleSheet() { - const id = this.form.get('sheetId')?.value; - this.document = await Layer.parseGoogleSheet(id, this.http$); - this.document.fillForm(this.form); - this.dataSource = new MatTableDataSource(this.document.records); - this.dataSource.sort = this.sort; - } } diff --git a/Frontend/src/app/modules/layers/layers.routes.ts b/Frontend/src/app/modules/layers/layers.routes.ts index 3e4217c..dd218fb 100644 --- a/Frontend/src/app/modules/layers/layers.routes.ts +++ b/Frontend/src/app/modules/layers/layers.routes.ts @@ -6,5 +6,6 @@ import { LayersListComponent } from './layers-list/layers-list.component'; export const LAYERS_ROUTES: Route[] = [ { path: '', component: LayersListComponent }, { path: 'Edit/:id', component: LayerEditComponent }, + { path: 'Edit/:id/:duplicate', component: LayerEditComponent }, { path: 'Detail/:id', component: LayerDetailComponent } ]; \ No newline at end of file diff --git a/Frontend/src/environments/environment.ts b/Frontend/src/environments/environment.ts index b4ed8cc..98dcec0 100644 --- a/Frontend/src/environments/environment.ts +++ b/Frontend/src/environments/environment.ts @@ -7,8 +7,8 @@ export const environment = { appName: "LOCAL_DiunaBI", production: false, api: { - url: "http://localhost:5400/api" - //url: "https://diunabi-morska.bim-it.pl/api" + //url: "http://localhost:5400/api" + url: "https://diunabi-morska.bim-it.pl/api" }, google: { clientId: "107631825312-bkfe438ehr9k9ecb2h76g802tj6advma.apps.googleusercontent.com"