Skip to content

Commit

Permalink
[#246] WIP DEM data set validation (#251)
Browse files Browse the repository at this point in the history
* First pass, DEM data set validation

* Validate DEM data set with additional schematrons

* Fix naming collision and test

* Refactor xsd/schematron validation for reuse in SOAP webservice implementation, consistency

* Finishing setup for schematron error conversion to json

* First pass, convert schematron errors to JSON

* Deprecated code cleanup, fix validation issue with employment/personnel record

* Always show validation errors

* First pass, linking to validation errors

* Fix test
  • Loading branch information
francisli committed Oct 4, 2023
1 parent a4a9196 commit 5d15a0c
Show file tree
Hide file tree
Showing 38 changed files with 372 additions and 707 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,10 @@ import { ActivatedRoute } from '@angular/router';
import { HttpResponse } from '@angular/common/http';
import { AgencyService, ApiService, NavigationService } from 'shared';

import { SchemaListComponent } from '../schema/schema-list.component';

@Component({
templateUrl: './configurations-list-demographics.component.html',
})
export class ConfigurationsListDemographicsComponent {
@ViewChild('list') list?: SchemaListComponent;

sectionColumns = [{ name: 'State ID', attr: ['dConfiguration.01'], class: 'col-3' }];

constructor(public agency: AgencyService, private api: ApiService, private navigation: NavigationService, public route: ActivatedRoute) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,11 @@ import { Component, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

import { AgencyService } from 'shared';
import { SchemaListComponent } from '../schema/schema-list.component';

@Component({
templateUrl: './contacts-list-demographics.component.html',
})
export class ContactsListDemographicsComponent {
@ViewChild('list') list?: SchemaListComponent;

sectionColumns = [
{ name: 'Last name', attr: ['dContact.02'], class: 'col-6' },
{ name: 'First name', attr: ['dContact.03'], class: 'col-5' },
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import { Component, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { HttpResponse } from '@angular/common/http';
import { AgencyService, ApiService } from 'shared';

import { SchemaListComponent } from '../schema/schema-list.component';
import { AgencyService, ApiService, XsdListComponent } from 'shared';

@Component({
templateUrl: './custom-configurations-list-demographics.component.html',
})
export class CustomConfigurationsListDemographicsComponent {
@ViewChild('list') list?: SchemaListComponent;
@ViewChild('list') list?: XsdListComponent;

sectionColumns = [{ name: 'Title', attr: ['dCustomConfiguration.01'], class: 'col-9' }];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import { NgbModule } from '@ng-bootstrap/ng-bootstrap';

import { SharedModule } from 'shared';

import { SchemaModule } from '../schema/schema.module';

import { FormsDemographicsModule } from './forms/forms-demographics.module';
import { VersionsDemographicsModule } from './versions/versions-demographics.module';

Expand Down Expand Up @@ -58,7 +56,6 @@ import { VehiclesRecordDemographicsComponent } from './vehicles-record-demograph
CommonModule,
FormsModule,
NgbModule,
SchemaModule,
SharedModule,
FormsDemographicsModule,
VersionsDemographicsModule,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import { Component, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

import { SchemaListComponent } from '../schema/schema-list.component';
import { AgencyService } from 'shared';

@Component({
templateUrl: './devices-list-demographics.component.html',
})
export class DevicesListDemographicsComponent {
@ViewChild('list') list?: SchemaListComponent;

sectionColumns = [
{ name: 'Serial No', attr: ['dDevice.01'], class: 'col-5' },
{ name: 'Name', attr: ['dDevice.02'], class: 'col-6' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,13 @@ import { HttpParams, HttpResponse } from '@angular/common/http';
import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs';

import { AgencyService, ApiService } from 'shared';

import { SchemaListComponent } from '../schema/schema-list.component';
import { AgencyService, ApiService, XsdListComponent } from 'shared';

@Component({
templateUrl: './facilities-list-demographics.component.html',
})
export class FacilitiesListDemographicsComponent implements OnInit {
@ViewChild('list') list?: SchemaListComponent;
@ViewChild('list') list?: XsdListComponent;

sectionColumns = [
{ name: 'Type', attr: ['dFacility.01'], class: 'col-5' },
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import { Component, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

import { SchemaListComponent } from '../schema/schema-list.component';
import { AgencyService } from 'shared';

@Component({
templateUrl: './locations-list-demographics.component.html',
})
export class LocationsListDemographicsComponent {
@ViewChild('list') list?: SchemaListComponent;

sectionColumns = [
{ name: 'Name', attr: ['dLocation.02'], class: 'col-3' },
{ name: 'Number', attr: ['dLocation.03'], class: 'col-3' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,13 @@ import { ActivatedRoute } from '@angular/router';

import { assign } from 'lodash';

import { AgencyService, ApiService, ModalComponent, NotificationService } from 'shared';

import { SchemaListComponent } from '../schema/schema-list.component';
import { AgencyService, ApiService, ModalComponent, NotificationService, XsdListComponent } from 'shared';

@Component({
templateUrl: './personnel-list-demographics.component.html',
})
export class PersonnelListDemographicsComponent {
@ViewChild('list') list?: SchemaListComponent;
@ViewChild('list') list?: XsdListComponent;
@ViewChild('refuseConfirmation') refuseConfirmation?: ModalComponent;

sectionColumns = [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import { Component, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

import { SchemaListComponent } from '../schema/schema-list.component';
import { AgencyService } from 'shared';

@Component({
templateUrl: './vehicles-list-demographics.component.html',
})
export class VehiclesListDemographicsComponent {
@ViewChild('list') list?: SchemaListComponent;

sectionColumns = [
{ name: 'Unit/Vehicle Number', attr: ['dVehicle.01'], class: 'col-3' },
{ name: 'VIN', attr: ['dVehicle.02'], class: 'col-3' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ <h1 class="h2">Version</h1>
<ul class="nav">
<li class="nav__item"><a tabIndex="0" class="nav__link nav__link--active" routerLink="">Details</a></li>
<li class="nav__item"><a tabIndex="0" class="nav__link" routerLink="preview">XML</a></li>
<li class="nav__item"><a tabIndex="0" class="nav__link" routerLink="validate">Validation</a></li>
</ul>
<shared-form
*ngIf="id"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ <h1 class="h2">Version</h1>
<ul class="nav">
<li class="nav__item"><a tabIndex="0" class="nav__link" routerLink="..">Details</a></li>
<li class="nav__item"><a tabIndex="0" class="nav__link nav__link--active">XML</a></li>
<li class="nav__item"><a tabIndex="0" class="nav__link" routerLink="../validate">Validation</a></li>
</ul>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3">
<h1 class="h2">Version</h1>
</div>
<div class="row">
<div class="col-md-6">
<ul class="nav">
<li class="nav__item"><a tabIndex="0" class="nav__link" routerLink="..">Details</a></li>
<li class="nav__item"><a tabIndex="0" class="nav__link" routerLink="../preview">XML</a></li>
<li class="nav__item"><a tabIndex="0" class="nav__link nav__link--active">Validation</a></li>
</ul>
</div>
</div>
<div>
<div *ngIf="validationErrors === undefined"><shared-loader></shared-loader></div>
<div *ngIf="validationErrors === null">No validation errors!</div>
<div *ngIf="validationErrors">
<div *ngFor="let error of validationErrors.errors">
{{ error.value }}: {{ error.message }} <a [routerLink]="['/demographics', error.section, error.id]">Fix</a>
</div>
</div>
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { HttpResponse } from '@angular/common/http';
import { ApiService } from 'shared';

@Component({
templateUrl: './validate-version-demographics.component.html',
})
export class ValidateVersionDemographicsComponent implements OnInit {
id: string = '';
validationErrors: any;

constructor(private api: ApiService, private route: ActivatedRoute) {}

ngOnInit() {
this.id = this.route.snapshot.params['id'];
this.api.versions.validate(this.id).subscribe((response: HttpResponse<any>) => (this.validationErrors = response.body));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { AgencyService, UserService } from 'shared';
import { EditVersionDemographicsComponent } from './edit-version-demographics.component';
import { ListVersionsDemographicsComponent } from './list-versions-demographics.component';
import { PreviewVersionDemographicsComponent } from './preview-version-demographics.component';
import { ValidateVersionDemographicsComponent } from './validate-version-demographics.component';

const appRoutes: Routes = [
{
Expand All @@ -20,6 +21,10 @@ const appRoutes: Routes = [
path: ':id/preview',
component: PreviewVersionDemographicsComponent,
},
{
path: ':id/validate',
component: ValidateVersionDemographicsComponent,
},
{
path: ':id',
component: EditVersionDemographicsComponent,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,15 @@ import { VersionsDemographicsRoutingModule } from './versions-demographics-routi
import { EditVersionDemographicsComponent } from './edit-version-demographics.component';
import { ListVersionsDemographicsComponent } from './list-versions-demographics.component';
import { PreviewVersionDemographicsComponent } from './preview-version-demographics.component';
import { ValidateVersionDemographicsComponent } from './validate-version-demographics.component';

@NgModule({
declarations: [EditVersionDemographicsComponent, ListVersionsDemographicsComponent, PreviewVersionDemographicsComponent],
declarations: [
EditVersionDemographicsComponent,
ListVersionsDemographicsComponent,
PreviewVersionDemographicsComponent,
ValidateVersionDemographicsComponent,
],
imports: [CommonModule, FormsModule, NgbModule, SharedModule, VersionsDemographicsRoutingModule],
providers: [],
})
Expand Down
73 changes: 0 additions & 73 deletions angular/projects/admin/src/app/schema/base-schema.component.ts

This file was deleted.

49 changes: 0 additions & 49 deletions angular/projects/admin/src/app/schema/schema-list.component.html

This file was deleted.

Loading

0 comments on commit 5d15a0c

Please sign in to comment.