convert values range from templates to option element

This commit is contained in:
VLE2FE 2020-08-06 15:23:44 +02:00
parent 4376adc1eb
commit 56cd4dcbcc
4 changed files with 63 additions and 27 deletions

View File

@ -7,4 +7,10 @@ export class TemplateModel extends BaseModel {
version = 0; version = 0;
first_id: IdModel = null; first_id: IdModel = null;
parameters: {name: string, range: {[prop: string]: any}, rangeString?: string}[] = []; parameters: {name: string, range: {[prop: string]: any}, rangeString?: string}[] = [];
deserialize(input: any): this {
Object.assign(this, input);
return this;
}
} }

View File

@ -160,14 +160,23 @@
<option *ngFor="let c of d.arr.conditionTemplates" [value]="c._id">{{c.name}}</option> <option *ngFor="let c of d.arr.conditionTemplates" [value]="c._id">{{c.name}}</option>
</rb-form-select> </rb-form-select>
<rb-form-input *ngFor="let parameter of <ng-container *ngFor="let parameter of
d.id.conditionTemplates[gSample.condition.condition_template].parameters; index as i" d.id.conditionTemplates[gSample.condition.condition_template].parameters; index as i"
[name]="'conditionParameter-' + gIndex + '-' + i" [ngSwitch]="(parameter.range.values ? 1 : 0)">
[label]="parameter.name" appValidate="string" required <rb-form-select *ngSwitchCase="1"
[(ngModel)]="gSample.condition[parameter.name]" #parameterInput="ngModel"> [name]="'conditionParameter-' + gIndex + '-' + i"
<ng-template rbFormValidationMessage="failure">{{parameterInput.errors.failure}}</ng-template> [label]="parameter.name" [(ngModel)]="gSample.condition[parameter.name]" ngModel>
<ng-template rbFormValidationMessage="required">Cannot be empty</ng-template> <option *ngFor="let value of parameter.range.values" [value]="value">{{value}}</option>
</rb-form-input> <ng-template rbFormValidationMessage="required">Cannot be empty</ng-template>
</rb-form-select>
<rb-form-input *ngSwitchDefault
[name]="'conditionParameter-' + gIndex + '-' + i"
[label]="parameter.name" appValidate="string" required
[(ngModel)]="gSample.condition[parameter.name]" #parameterInput="ngModel">
<ng-template rbFormValidationMessage="failure">{{parameterInput.errors.failure}}</ng-template>
<ng-template rbFormValidationMessage="required">Cannot be empty</ng-template>
</rb-form-input>
</ng-container>
</div> </div>
</div> </div>
@ -182,21 +191,30 @@
<div *ngFor="let parameter of d.id.measurementTemplates[measurement.measurement_template].parameters; <div *ngFor="let parameter of d.id.measurementTemplates[measurement.measurement_template].parameters;
index as pIndex"> index as pIndex">
<rb-form-input *ngIf="!parameter.range.type" <ng-container [ngSwitch]="(parameter.range.type ? 1 : 0) + (parameter.range.values ? 2 : 0)">
[name]="'measurementParameter-' + gIndex + '-' + mIndex + '-' + pIndex" <rb-form-file *ngSwitchCase="1"
[label]="parameter.name" appValidate="string" [name]="'measurementParameter-' + gIndex + '-' + mIndex + '-' + pIndex"
[(ngModel)]="measurement.values[parameter.name]" #parameterInput="ngModel"> [label]="parameter.name" maxSize="10000000" multiple
<ng-template rbFormValidationMessage="failure">{{parameterInput.errors.failure}}</ng-template> [required]="measurement.values[parameter.name] &&
<ng-template rbFormValidationMessage="required">Cannot be empty</ng-template> !measurement.values[parameter.name].length"
</rb-form-input> (ngModelChange)="fileToArray($event, gIndex, mIndex, parameter.name)"
<rb-form-file *ngIf="parameter.range.type" placeholder="Select file or drag and drop" dragDrop ngModel>
[name]="'measurementParameter-' + gIndex + '-' + mIndex + '-' + pIndex" <ng-template rbFormValidationMessage="required">Cannot be empty</ng-template>
[label]="parameter.name" maxSize="10000000" multiple </rb-form-file>
[required]="measurement.values[parameter.name] && !measurement.values[parameter.name].length" <rb-form-select *ngSwitchCase="2"
(ngModelChange)="fileToArray($event, gIndex, mIndex, parameter.name)" [name]="'measurementParameter-' + gIndex + '-' + mIndex + '-' + pIndex"
placeholder="Select file or drag and drop" dragDrop ngModel> [label]="parameter.name" [(ngModel)]="measurement.values[parameter.name]" ngModel>
<ng-template rbFormValidationMessage="required">Cannot be empty</ng-template> <option *ngFor="let device of d.d.user.devices" [value]="device">{{device}}</option>
</rb-form-file> <ng-template rbFormValidationMessage="required">Cannot be empty</ng-template>
</rb-form-select>
<rb-form-input *ngSwitchDefault
[name]="'measurementParameter-' + gIndex + '-' + mIndex + '-' + pIndex"
[label]="parameter.name" appValidate="string"
[(ngModel)]="measurement.values[parameter.name]" #parameterInput="ngModel">
<ng-template rbFormValidationMessage="failure">{{parameterInput.errors.failure}}</ng-template>
<ng-template rbFormValidationMessage="required">Cannot be empty</ng-template>
</rb-form-input>
</ng-container>
<canvas baseChart *ngIf="parameter.range.type && charts[gIndex][mIndex][0].data.length > 0" <canvas baseChart *ngIf="parameter.range.type && charts[gIndex][mIndex][0].data.length > 0"
class="dpt-chart" class="dpt-chart"
[@inOut] [@inOut]

View File

@ -124,6 +124,17 @@ export class SampleComponent implements OnInit, AfterContentChecked {
this.loading--; this.loading--;
}); });
this.d.load('measurementTemplates', () => { this.d.load('measurementTemplates', () => {
this.d.load('user', () => {
this.defaultDevice = this.d.d.user.devices[0];
// spectrum device must be from user's devices list
this.d.arr.measurementTemplates.forEach(template => {
const device = template.parameters.find(e => e.name === 'device');
if (device) {
device.range.values = this.d.d.user.devices;
}
});
this.d.idReload('measurementTemplates');
});
this.loading--; this.loading--;
}); });
this.d.load('materialTemplates', () => { this.d.load('materialTemplates', () => {
@ -136,9 +147,6 @@ export class SampleComponent implements OnInit, AfterContentChecked {
this.availableCustomFields = this.d.arr.sampleNotesFields.map(e => e.name); this.availableCustomFields = this.d.arr.sampleNotesFields.map(e => e.name);
this.loading--; this.loading--;
}); });
this.d.load('user', () => {
this.defaultDevice = this.d.d.user.devices[0];
});
if (!this.new) { if (!this.new) {
this.loading++; this.loading++;
this.api.get<SampleModel>('/sample/' + this.route.snapshot.paramMap.get('id'), sData => { this.api.get<SampleModel>('/sample/' + this.route.snapshot.paramMap.get('id'), sData => {

View File

@ -40,7 +40,7 @@ export class DataService {
if (this.collectionMap[collection].array) { // array data if (this.collectionMap[collection].array) { // array data
this.arr[collection] = data this.arr[collection] = data
.map(e => this.collectionMap[collection].model ? new this.collectionMap[collection].model().deserialize(e) : e); .map(e => this.collectionMap[collection].model ? new this.collectionMap[collection].model().deserialize(e) : e);
this.id[collection] = this.arr[collection].reduce((s, e) => {s[e._id] = e; return s; }, {}); this.idReload(collection);
} }
else { // not array data else { // not array data
this.d[collection] = new this.collectionMap[collection].model().deserialize(data); this.d[collection] = new this.collectionMap[collection].model().deserialize(data);
@ -49,4 +49,8 @@ export class DataService {
}); });
} }
} }
idReload(collection) {
this.id[collection] = this.arr[collection].reduce((s, e) => {s[e._id] = e; return s; }, {});
}
} }