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",