convert values range from templates to option element
This commit is contained in:
		@@ -7,4 +7,10 @@ export class TemplateModel extends BaseModel {
 | 
			
		||||
  version = 0;
 | 
			
		||||
  first_id: IdModel = null;
 | 
			
		||||
  parameters: {name: string, range: {[prop: string]: any}, rangeString?: string}[] = [];
 | 
			
		||||
 | 
			
		||||
  deserialize(input: any): this {
 | 
			
		||||
    Object.assign(this, input);
 | 
			
		||||
 | 
			
		||||
    return this;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -160,14 +160,23 @@
 | 
			
		||||
            <option *ngFor="let c of d.arr.conditionTemplates" [value]="c._id">{{c.name}}</option>
 | 
			
		||||
          </rb-form-select>
 | 
			
		||||
 | 
			
		||||
          <rb-form-input *ngFor="let parameter of
 | 
			
		||||
                         d.id.conditionTemplates[gSample.condition.condition_template].parameters; index as i"
 | 
			
		||||
                         [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 *ngFor="let parameter of
 | 
			
		||||
                        d.id.conditionTemplates[gSample.condition.condition_template].parameters; index as i"
 | 
			
		||||
                        [ngSwitch]="(parameter.range.values ? 1 : 0)">
 | 
			
		||||
            <rb-form-select *ngSwitchCase="1"
 | 
			
		||||
                            [name]="'conditionParameter-' + gIndex + '-' + i"
 | 
			
		||||
                            [label]="parameter.name" [(ngModel)]="gSample.condition[parameter.name]" ngModel>
 | 
			
		||||
              <option *ngFor="let value of parameter.range.values" [value]="value">{{value}}</option>
 | 
			
		||||
              <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>
 | 
			
		||||
 | 
			
		||||
@@ -182,21 +191,30 @@
 | 
			
		||||
 | 
			
		||||
          <div *ngFor="let parameter of d.id.measurementTemplates[measurement.measurement_template].parameters;
 | 
			
		||||
               index as pIndex">
 | 
			
		||||
            <rb-form-input *ngIf="!parameter.range.type"
 | 
			
		||||
                           [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>
 | 
			
		||||
            <rb-form-file *ngIf="parameter.range.type"
 | 
			
		||||
                          [name]="'measurementParameter-' + gIndex + '-' + mIndex + '-' + pIndex"
 | 
			
		||||
                          [label]="parameter.name" maxSize="10000000" multiple
 | 
			
		||||
                          [required]="measurement.values[parameter.name] && !measurement.values[parameter.name].length"
 | 
			
		||||
                          (ngModelChange)="fileToArray($event, gIndex, mIndex, parameter.name)"
 | 
			
		||||
                          placeholder="Select file or drag and drop" dragDrop ngModel>
 | 
			
		||||
              <ng-template rbFormValidationMessage="required">Cannot be empty</ng-template>
 | 
			
		||||
            </rb-form-file>
 | 
			
		||||
            <ng-container [ngSwitch]="(parameter.range.type ? 1 : 0) + (parameter.range.values ? 2 : 0)">
 | 
			
		||||
              <rb-form-file *ngSwitchCase="1"
 | 
			
		||||
                            [name]="'measurementParameter-' + gIndex + '-' + mIndex + '-' + pIndex"
 | 
			
		||||
                            [label]="parameter.name" maxSize="10000000" multiple
 | 
			
		||||
                            [required]="measurement.values[parameter.name] &&
 | 
			
		||||
                            !measurement.values[parameter.name].length"
 | 
			
		||||
                            (ngModelChange)="fileToArray($event, gIndex, mIndex, parameter.name)"
 | 
			
		||||
                            placeholder="Select file or drag and drop" dragDrop ngModel>
 | 
			
		||||
                <ng-template rbFormValidationMessage="required">Cannot be empty</ng-template>
 | 
			
		||||
              </rb-form-file>
 | 
			
		||||
              <rb-form-select *ngSwitchCase="2"
 | 
			
		||||
                              [name]="'measurementParameter-' + gIndex + '-' + mIndex + '-' + pIndex"
 | 
			
		||||
                              [label]="parameter.name" [(ngModel)]="measurement.values[parameter.name]" ngModel>
 | 
			
		||||
                <option *ngFor="let device of d.d.user.devices" [value]="device">{{device}}</option>
 | 
			
		||||
                <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"
 | 
			
		||||
                    class="dpt-chart"
 | 
			
		||||
                    [@inOut]
 | 
			
		||||
 
 | 
			
		||||
@@ -124,6 +124,17 @@ export class SampleComponent implements OnInit, AfterContentChecked {
 | 
			
		||||
      this.loading--;
 | 
			
		||||
    });
 | 
			
		||||
    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.d.load('materialTemplates', () => {
 | 
			
		||||
@@ -136,9 +147,6 @@ export class SampleComponent implements OnInit, AfterContentChecked {
 | 
			
		||||
      this.availableCustomFields = this.d.arr.sampleNotesFields.map(e => e.name);
 | 
			
		||||
      this.loading--;
 | 
			
		||||
    });
 | 
			
		||||
    this.d.load('user', () => {
 | 
			
		||||
      this.defaultDevice = this.d.d.user.devices[0];
 | 
			
		||||
    });
 | 
			
		||||
    if (!this.new) {
 | 
			
		||||
      this.loading++;
 | 
			
		||||
      this.api.get<SampleModel>('/sample/' + this.route.snapshot.paramMap.get('id'), sData => {
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ export class DataService {
 | 
			
		||||
        if (this.collectionMap[collection].array) {  // array data
 | 
			
		||||
          this.arr[collection] = data
 | 
			
		||||
            .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
 | 
			
		||||
          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; }, {});
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user