Fix/update admin (WIP)

This commit is contained in:
phil 2024-03-25 17:21:39 +05:30
parent 4994d8314a
commit 339d8f2210
11 changed files with 49 additions and 44 deletions

View file

@ -3,7 +3,8 @@ import { Router, RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/ro
import { Observable, forkJoin } from 'rxjs' import { Observable, forkJoin } from 'rxjs'
import { map } from 'rxjs/operators' import { map } from 'rxjs/operators'
import { AdminBasket, AdminBasketDataService } from './data.service' import { AdminBasketDataService } from './data.service'
import { AdminBasket } from '../../openapi'
@Injectable() @Injectable()
export class BasketResolver { export class BasketResolver {

View file

@ -6,7 +6,8 @@ import { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms
import { MatTableDataSource } from '@angular/material/table' import { MatTableDataSource } from '@angular/material/table'
import { AdminDataService } from '../../admin-data.service' import { AdminDataService } from '../../admin-data.service'
import { AdminBasketFile, AdminBasket } from '../data.service' import { AdminBasketFile } from '../data.service'
import { AdminBasket } from '../../../openapi'
import { MatSnackBar } from '@angular/material/snack-bar' import { MatSnackBar } from '@angular/material/snack-bar'
import { HtmlSnackbarComponent } from '../../../custom-snackbar/custom-snackbar.component' import { HtmlSnackbarComponent } from '../../../custom-snackbar/custom-snackbar.component'
@ -33,14 +34,14 @@ export class AdminBasketUploadComponent implements OnInit, OnChanges {
formGroup: UntypedFormGroup = new UntypedFormGroup({}) formGroup: UntypedFormGroup = new UntypedFormGroup({})
ngOnInit() { ngOnInit() {
let defaults = this.adminDataService.surveyMeta.defaults let dflt = this.adminDataService.surveyMeta.default
this.formGroup = new UntypedFormGroup({ this.formGroup = new UntypedFormGroup({
'store_misc': new UntypedFormControl(defaults['store_misc'], [Validators.required]), 'store_misc': new UntypedFormControl(dflt['store_misc'], [Validators.required]),
'store_line_work': new UntypedFormControl(defaults['store_line_work'], [Validators.required]), 'store_line_work': new UntypedFormControl(dflt['store_line_work'], [Validators.required]),
'status': new UntypedFormControl(defaults['status'], [Validators.required]), 'status': new UntypedFormControl(dflt.status, [Validators.required]),
'project': new UntypedFormControl(defaults['project'], [Validators.required]), 'project': new UntypedFormControl(dflt.project, [Validators.required]),
'surveyor': new UntypedFormControl(defaults['surveyor'], [Validators.required]), 'surveyor': new UntypedFormControl(dflt.surveyor, [Validators.required]),
'equipment': new UntypedFormControl(defaults['equipment'], [Validators.required]), 'equipment': new UntypedFormControl(dflt.equipment, [Validators.required]),
'autoImport': new UntypedFormControl(true), 'autoImport': new UntypedFormControl(true),
}) })
this.setupRequired() this.setupRequired()

View file

@ -10,7 +10,8 @@ import { MatSort } from '@angular/material/sort'
import { MatTableDataSource } from '@angular/material/table' import { MatTableDataSource } from '@angular/material/table'
import { AdminDataService } from '../admin-data.service' import { AdminDataService } from '../admin-data.service'
import { AdminBasketDataService, AdminBasket, AdminBasketFile } from './data.service' import { AdminBasketDataService, AdminBasketFile } from './data.service'
import { AdminBasket } from '../../openapi'
import { HtmlSnackbarComponent } from '../../custom-snackbar/custom-snackbar.component' import { HtmlSnackbarComponent } from '../../custom-snackbar/custom-snackbar.component'
@Component({ @Component({
@ -79,7 +80,7 @@ export class AdminBasketComponent implements OnInit {
importItem(item: AdminBasketFile, dryRun: boolean) { importItem(item: AdminBasketFile, dryRun: boolean) {
this.adminBasketDataService.importItem(this.basket.name, item.id, dryRun).subscribe( this.adminBasketDataService.importItem(this.basket.name, item.id, dryRun).subscribe(
resp => { resp => {
this.basket.files.find(row => row.id == item.id).time = new Date(resp.time) this.basket.files.find(row => row.id == item.id).time = new Date(resp.time).toLocaleString()
this.snackBar.openFromComponent(HtmlSnackbarComponent, { this.snackBar.openFromComponent(HtmlSnackbarComponent, {
data: resp, data: resp,
//duration: 3000 //duration: 3000

View file

@ -6,6 +6,7 @@ import { map } from 'rxjs/operators'
// import { Apollo, gql } from 'apollo-angular' // import { Apollo, gql } from 'apollo-angular'
import { Project } from '../admin-data.service' import { Project } from '../admin-data.service'
import { AdminService, AdminBasket, BasketNameOnly } from '../../openapi'
export class AdminBasketFile { export class AdminBasketFile {
constructor( constructor(
@ -25,15 +26,15 @@ export class AdminBasketFile {
) {} ) {}
} }
export class AdminBasket { // export class AdminBasket {
constructor( // constructor(
public name: string, // public name: string,
public files?: AdminBasketFile[], // public files?: AdminBasketFile[],
public columns?: string[], // public columns?: string[],
public uploadFields?: string[], // public uploadFields?: string[],
public projects?: Project[], // public projects?: Project[],
) {} // ) {}
} // }
export class BasketImportResult { export class BasketImportResult {
constructor( constructor(
@ -122,21 +123,12 @@ export class AdminBasketUploadFieldData {
export class AdminBasketDataService { export class AdminBasketDataService {
constructor( constructor(
// private apollo: Apollo, // private apollo: Apollo,
public adminService: AdminService,
) {} ) {}
getBaskets(): Observable<AdminBasket[]> { getBaskets(): Observable<BasketNameOnly[]> {
// Get the list a basket names // Get the list a basket names
console.warn('Migrate Graphql') return this.adminService.getBasketsApiAdminBasketGet()
return observableOf()
// return this.apollo.query({
// query: getAdminBasketsQuery,
// }).pipe(map(
// res => res['data']['admin_baskets'].map(
// (data: object) => new AdminBasket(
// data['name'],
// )
// )
// ))
} }
getBasketUploadFieldData(): Observable<AdminBasketUploadFieldData> { getBasketUploadFieldData(): Observable<AdminBasketUploadFieldData> {
@ -160,6 +152,7 @@ export class AdminBasketDataService {
getBasket(name: string): Observable<AdminBasket> { getBasket(name: string): Observable<AdminBasket> {
// Get all info and content of a basket // Get all info and content of a basket
return this.adminService.getBasketApiAdminBasketNameGet(name)
console.warn('Migrate Graphql') console.warn('Migrate Graphql')
return observableOf() return observableOf()
// return this.apollo.query({ // return this.apollo.query({

View file

@ -1,7 +1,7 @@
import { Component, Input } from '@angular/core' import { Component, Input } from '@angular/core'
import { AuthenticationService } from '../../_services/authentication.service' import { AuthenticationService } from '../../_services/authentication.service'
import { AdminBasket } from '../admin-basket/data.service' import { AdminBasket } from '../../openapi'
@Component({ @Component({
selector: 'gisaf-admin-menu', selector: 'gisaf-admin-menu',

View file

@ -1,11 +1,10 @@
import { Injectable } from '@angular/core' import { Injectable } from '@angular/core'
import { Router, RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router' import { Router, RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router'
import { Observable, forkJoin } from 'rxjs' import { Observable, forkJoin } from 'rxjs'
import { map } from 'rxjs/operators'
import { AdminDataService } from './admin-data.service' import { AdminDataService } from './admin-data.service'
import { SurveyMeta } from './admin-data.service' import { AdminBasketDataService } from './admin-basket/data.service'
import { AdminBasketDataService, AdminBasket } from './admin-basket/data.service' import { BasketNameOnly, SurveyMeta } from '../openapi'
@Injectable() @Injectable()
@ -19,11 +18,11 @@ export class AdminResolver {
resolve( resolve(
route: ActivatedRouteSnapshot, route: ActivatedRouteSnapshot,
state: RouterStateSnapshot, state: RouterStateSnapshot,
): Observable<[AdminBasket[], SurveyMeta/*, object[]*/]> { ): Observable<[BasketNameOnly[], SurveyMeta]> {
return forkJoin( return forkJoin([
this.basketDataService.getBaskets(), this.basketDataService.getBaskets(),
this.dataService.getSurveyMeta(), this.dataService.getSurveyMeta(),
//this.dataService.getModelsMenuBar(), //this.dataService.getModelsMenuBar(),
) ])
} }
} }

View file

@ -2,8 +2,7 @@ import { Component, ViewChild, OnInit } from '@angular/core'
import { ActivatedRoute } from '@angular/router' import { ActivatedRoute } from '@angular/router'
import { AdminListComponent } from './admin-list/admin-list.component' import { AdminListComponent } from './admin-list/admin-list.component'
import { SurveyMeta } from './admin-data.service' import { AdminBasket, SurveyMeta } from '../openapi'
import { AdminBasket } from './admin-basket/data.service'
@Component({ @Component({
selector: 'gisaf-admin', selector: 'gisaf-admin',

View file

@ -12,6 +12,7 @@ export type { Attachment } from './models/Attachment';
export type { BaseMapWithStores } from './models/BaseMapWithStores'; export type { BaseMapWithStores } from './models/BaseMapWithStores';
export type { BaseStyle } from './models/BaseStyle'; export type { BaseStyle } from './models/BaseStyle';
export type { BasketDefault } from './models/BasketDefault'; export type { BasketDefault } from './models/BasketDefault';
export type { BasketNameOnly } from './models/BasketNameOnly';
export type { Body_login_for_access_token_api_token_post } from './models/Body_login_for_access_token_api_token_post'; export type { Body_login_for_access_token_api_token_post } from './models/Body_login_for_access_token_api_token_post';
export type { BootstrapData } from './models/BootstrapData'; export type { BootstrapData } from './models/BootstrapData';
export type { CategoryGroup } from './models/CategoryGroup'; export type { CategoryGroup } from './models/CategoryGroup';

View file

@ -3,11 +3,12 @@
/* tslint:disable */ /* tslint:disable */
/* eslint-disable */ /* eslint-disable */
import type { FileImport } from './FileImport'; import type { FileImport } from './FileImport';
import type { Project } from './Project';
export type AdminBasket = { export type AdminBasket = {
name: string; name: string;
files: Array<FileImport>; files: Array<FileImport>;
columns: Array<string>; columns: Array<string>;
uploadFields: Array<string>; uploadFields: Array<string>;
projects?: Array<string>; projects?: Array<Project>;
}; };

View file

@ -0,0 +1,8 @@
/* generated using openapi-typescript-codegen -- do no edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type BasketNameOnly = {
name: string;
};

View file

@ -6,6 +6,7 @@ import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import type { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import type { AdminBasket } from '../models/AdminBasket'; import type { AdminBasket } from '../models/AdminBasket';
import type { BasketNameOnly } from '../models/BasketNameOnly';
import { OpenAPI } from '../core/OpenAPI'; import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request'; import { request as __request } from '../core/request';
@Injectable({ @Injectable({
@ -15,10 +16,10 @@ export class AdminService {
constructor(public readonly http: HttpClient) {} constructor(public readonly http: HttpClient) {}
/** /**
* Get Baskets * Get Baskets
* @returns any Successful Response * @returns BasketNameOnly Successful Response
* @throws ApiError * @throws ApiError
*/ */
public getBasketsApiAdminBasketGet(): Observable<any> { public getBasketsApiAdminBasketGet(): Observable<Array<BasketNameOnly>> {
return __request(OpenAPI, this.http, { return __request(OpenAPI, this.http, {
method: 'GET', method: 'GET',
url: '/api/admin/basket', url: '/api/admin/basket',