Produit |
-
-
+ [materials]="allMaterials"
+ [position]="mixMaterial.position">
+
|
diff --git a/src/app/modules/recipes/mix/materials-form.ts b/src/app/modules/recipes/mix/materials-form.ts
index a90f552..06b22d7 100644
--- a/src/app/modules/recipes/mix/materials-form.ts
+++ b/src/app/modules/recipes/mix/materials-form.ts
@@ -1,6 +1,6 @@
-import {AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, ViewChild, ViewChildren} from '@angular/core'
+import {AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, ViewChild, ViewChildren} from '@angular/core'
import {CreTable} from '../../shared/components/tables/tables'
-import {MixMaterialDto, sortMixMaterialsDto} from '../../shared/model/recipe.model'
+import {Mix, MixMaterialDto, mixMaterialsToMixMaterialsDto, sortMixMaterialsDto} from '../../shared/model/recipe.model'
import {Observable, Subject} from 'rxjs'
import {Material, materialComparator} from '../../shared/model/material.model'
import {FormControl, Validators} from '@angular/forms'
@@ -8,7 +8,55 @@ import {takeUntil} from 'rxjs/operators'
import {CreComboBoxComponent, CreInputEntry} from '../../shared/components/inputs/inputs'
import {AccountService} from '../../accounts/services/account.service'
import {Permission} from '../../shared/model/user'
-import {UNIT_MILLILITER} from "../../shared/units";
+import {UNIT_MILLILITER} from '../../shared/units'
+
+@Component({
+ selector: 'cre-mix-materials-form-combo-box',
+ templateUrl: 'materials-form-combo-box.html'
+})
+export class MixMaterialsFormComboBox implements OnInit {
+ @ViewChild(CreComboBoxComponent) comboBox: CreComboBoxComponent
+
+ @Input() mixMaterial: MixMaterialDto
+ @Input() mix: Mix | null
+ @Input() mixMaterials: MixMaterialDto[]
+ @Input() control: FormControl
+ @Input() materials: Material[]
+ @Input() position: number
+
+ entries: CreInputEntry[]
+
+ ngOnInit() {
+ this.entries = this.filterMaterials()
+ }
+
+ updateEntries() {
+ this.entries = this.filterMaterials()
+ this.comboBox.reloadEntries()
+ }
+
+ private filterMaterials(): CreInputEntry[] {
+ return this.materials
+ .filter(material => {
+ if (this.mix && this.mix.mixType.material.id === material.id) {
+ return false
+ }
+
+ // Prevent use of percents in first position
+ if (material.materialType.usePercentages && this.mixMaterial.position <= 1) {
+ return false
+ }
+
+ if (this.mixMaterial.materialId === material.id) {
+ return true
+ }
+
+ return this.mixMaterials.filter(x => x.materialId === material.id).length <= 0
+ })
+ .sort(materialComparator)
+ .map(material => new CreInputEntry(material.id, material.name, material.materialType.prefix ? `[${material.materialType.prefix}] ${material.name}` : material.name))
+ }
+}
@Component({
selector: 'cre-mix-materials-form',
@@ -16,16 +64,16 @@ import {UNIT_MILLILITER} from "../../shared/units";
})
export class MixMaterialsForm implements AfterViewInit, OnDestroy {
@ViewChild(CreTable) table: CreTable