diff --git a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.html b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.html index e89b46d..d5a7876 100644 --- a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.html +++ b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.html @@ -83,11 +83,19 @@ [options]="materials" > - + @if (mode() === 'easy') { + + } @else { + + } @@ -99,6 +107,12 @@ [label]="'CALC.PATTERN' | translate" [options]="infillPatterns" > + +
diff --git a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.ts b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.ts index 6415414..c2ec404 100644 --- a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.ts +++ b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.ts @@ -46,6 +46,12 @@ export class UploadFormComponent { { label: 'Standard', value: 'Standard' }, { label: 'Alta definizione', value: 'High' } ]; + + printSpeeds = [ + { label: 'Slow (High Quality)', value: 'Slow' }, + { label: 'Standard', value: 'Standard' }, + { label: 'Fast (Draft)', value: 'Fast' } + ]; infillPatterns = [ { label: 'Grid', value: 'grid' }, @@ -53,6 +59,15 @@ export class UploadFormComponent { { label: 'Cubic', value: 'cubic' }, { label: 'Triangles', value: 'triangles' } ]; + + layerHeights = [ + { label: '0.08 mm', value: 0.08 }, + { label: '0.12 mm (High Quality - Slow)', value: 0.12 }, + { label: '0.16 mm', value: 0.16 }, + { label: '0.20 mm (Standard)', value: 0.20 }, + { label: '0.24 mm', value: 0.24 }, + { label: '0.28 mm (Draft - Fast)', value: 0.28 } + ]; acceptedFormats = '.stl,.3mf,.step,.stp,.obj,.amf,.ply,.igs,.iges'; @@ -61,10 +76,12 @@ export class UploadFormComponent { itemsTouched: [false], // Hack to track touched state for custom items list material: ['PLA', Validators.required], quality: ['Standard', Validators.required], + printSpeed: ['Standard', Validators.required], notes: [''], // Advanced fields // Color removed from global form infillDensity: [20, [Validators.min(0), Validators.max(100)]], + layerHeight: [0.2, [Validators.min(0.05), Validators.max(1.0)]], infillPattern: ['grid'], supportEnabled: [false] }); diff --git a/frontend/src/app/shared/components/app-select/app-select.component.html b/frontend/src/app/shared/components/app-select/app-select.component.html index ddb857a..dee40ad 100644 --- a/frontend/src/app/shared/components/app-select/app-select.component.html +++ b/frontend/src/app/shared/components/app-select/app-select.component.html @@ -2,14 +2,14 @@ @if (label()) { } @if (error()) { {{ error() }} } diff --git a/frontend/src/app/shared/components/app-select/app-select.component.ts b/frontend/src/app/shared/components/app-select/app-select.component.ts index e4e5e0d..4f49c97 100644 --- a/frontend/src/app/shared/components/app-select/app-select.component.ts +++ b/frontend/src/app/shared/components/app-select/app-select.component.ts @@ -1,11 +1,11 @@ import { Component, input, output, forwardRef } from '@angular/core'; -import { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms'; +import { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms'; import { CommonModule } from '@angular/common'; @Component({ selector: 'app-select', standalone: true, - imports: [CommonModule, ReactiveFormsModule], + imports: [CommonModule, ReactiveFormsModule, FormsModule], providers: [ { provide: NG_VALUE_ACCESSOR, @@ -33,9 +33,8 @@ export class AppSelectComponent implements ControlValueAccessor { registerOnTouched(fn: any): void { this.onTouched = fn; } setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; } - onSelect(event: Event) { - const val = (event.target as HTMLSelectElement).value; - this.value = val; - this.onChange(val); + onModelChange(val: any) { + this.value = val; + this.onChange(val); } } diff --git a/frontend/src/assets/i18n/it.json b/frontend/src/assets/i18n/it.json index c7abd1b..56fad45 100644 --- a/frontend/src/assets/i18n/it.json +++ b/frontend/src/assets/i18n/it.json @@ -17,17 +17,19 @@ "CTA_START": "Inizia Ora", "BUSINESS": "Aziende", "PRIVATE": "Privati", - "MODE_EASY": "Rapida", + "MODE_EASY": "Base", "MODE_ADVANCED": "Avanzata", "UPLOAD_LABEL": "Trascina il tuo file 3D qui", "UPLOAD_SUB": "Supportiamo STL, 3MF, STEP, OBJ fino a 50MB", "MATERIAL": "Materiale", "QUALITY": "Qualità", + "PRINT_SPEED": "Velocità di Stampa", "QUANTITY": "Quantità", "NOTES": "Note aggiuntive", "COLOR": "Colore", "INFILL": "Riempimento (%)", "PATTERN": "Pattern di riempimento", + "LAYER_HEIGHT": "Altezza Layer", "SUPPORT": "Supporti", "SUPPORT_DESC": "Abilita supporti per sporgenze", "CALCULATE": "Calcola Preventivo",