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 777a7a3..9e541d3 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 @@ -3,10 +3,16 @@
@if (selectedFile()) {
- - + @if (isStepFile(selectedFile())) { +
+

{{ 'CALC.STEP_WARNING' | translate }}

+
+ } @else { + + + }
} diff --git a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.scss b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.scss index 3331860..b7a5d77 100644 --- a/frontend/src/app/features/calculator/components/upload-form/upload-form.component.scss +++ b/frontend/src/app/features/calculator/components/upload-form/upload-form.component.scss @@ -202,6 +202,18 @@ .progress-fill { height: 100%; background: var(--color-brand); - width: 0%; - transition: width 0.2s ease-out; +} + +.step-warning { + display: flex; + justify-content: center; + align-items: center; + height: 300px; + background: var(--color-neutral-100); + border: 1px dashed var(--color-border); + border-radius: var(--radius-md); + padding: var(--space-4); + text-align: center; + color: var(--color-text-muted); + font-weight: 500; } 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 917284c..f222937 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 @@ -61,7 +61,13 @@ export class UploadFormComponent implements OnInit { } } - acceptedFormats = '.stl,.3mf,.step,.stp,.obj,.amf,.ply,.igs,.iges'; + acceptedFormats = '.stl,.3mf,.step,.stp'; + + isStepFile(file: File | null): boolean { + if (!file) return false; + const name = file.name.toLowerCase(); + return name.endsWith('.step') || name.endsWith('.stp'); + } constructor() { this.form = this.fb.group({ diff --git a/frontend/src/app/features/contact/components/contact-form/contact-form.component.html b/frontend/src/app/features/contact/components/contact-form/contact-form.component.html index 86a2335..9793ba8 100644 --- a/frontend/src/app/features/contact/components/contact-form/contact-form.component.html +++ b/frontend/src/app/features/contact/components/contact-form/contact-form.component.html @@ -51,7 +51,7 @@
+ accept=".jpg,.jpeg,.png,.pdf,.stl,.step,.stp,.3mf">

{{ 'CONTACT.DROP_FILES' | translate }}

diff --git a/frontend/src/app/shared/components/app-dropzone/app-dropzone.component.ts b/frontend/src/app/shared/components/app-dropzone/app-dropzone.component.ts index fd1e563..fbfc442 100644 --- a/frontend/src/app/shared/components/app-dropzone/app-dropzone.component.ts +++ b/frontend/src/app/shared/components/app-dropzone/app-dropzone.component.ts @@ -10,8 +10,8 @@ import { CommonModule } from '@angular/common'; }) export class AppDropzoneComponent { label = input('Drop files here or click to upload'); - subtext = input('Supports .stl, .obj'); - accept = input('.stl,.obj'); + subtext = input('Supports .stl, .3mf, .step'); + accept = input('.stl,.3mf,.step,.stp'); multiple = input(true); filesDropped = output(); diff --git a/frontend/src/assets/i18n/en.json b/frontend/src/assets/i18n/en.json index bb9f7a1..3397f0e 100644 --- a/frontend/src/assets/i18n/en.json +++ b/frontend/src/assets/i18n/en.json @@ -43,7 +43,7 @@ "MODE_EASY": "Quick", "MODE_ADVANCED": "Advanced", "UPLOAD_LABEL": "Drag your 3D file here", - "UPLOAD_SUB": "Supports STL, 3MF, STEP, OBJ up to 50MB", + "UPLOAD_SUB": "Supports STL, 3MF, STEP up to 50MB", "MATERIAL": "Material", "QUALITY": "Quality", "QUANTITY": "Quantity", @@ -68,7 +68,8 @@ "BENEFITS_1": "Automatic quote with instant cost and time", "BENEFITS_2": "Selected materials and quality control", "BENEFITS_3": "CAD consultation if file needs modifications", - "ERR_FILE_REQUIRED": "File is required." + "ERR_FILE_REQUIRED": "File is required.", + "STEP_WARNING": "3D preview is not available for STEP files, but the calculator works perfectly. You can proceed with the quotation." }, "SHOP": { "TITLE": "Technical solutions", @@ -140,7 +141,7 @@ "COMPANY_NAME": "Company Name", "REF_PERSON": "Reference Person", "UPLOAD_LABEL": "Attachments", - "UPLOAD_HINT": "Max 15 files. Supported: Images, PDF, STL, STEP, 3MF, OBJ", + "UPLOAD_HINT": "Max 15 files. Supported: Images, PDF, STL, STEP, 3MF", "DROP_FILES": "Drop files here or click to upload", "PLACEHOLDER_NAME": "Your Name", "PLACEHOLDER_EMAIL": "your@email.com", diff --git a/frontend/src/assets/i18n/it.json b/frontend/src/assets/i18n/it.json index a7655a1..1d0e946 100644 --- a/frontend/src/assets/i18n/it.json +++ b/frontend/src/assets/i18n/it.json @@ -58,14 +58,14 @@ }, "CALC": { "TITLE": "Calcola Preventivo 3D", - "SUBTITLE": "Carica il tuo file 3D (STL, 3MF, STEP...) e ricevi una stima immediata di costi e tempi di stampa.", + "SUBTITLE": "Carica il tuo file 3D (STL, 3MF, STEP), imposta la qualtà, colore e calcola immediatamente prezzo e tempi.", "CTA_START": "Inizia Ora", "BUSINESS": "Aziende", "PRIVATE": "Privati", "MODE_EASY": "Base", "MODE_ADVANCED": "Avanzata", "UPLOAD_LABEL": "Trascina il tuo file 3D qui", - "UPLOAD_SUB": "Supportiamo STL, 3MF, STEP, OBJ fino a 50MB", + "UPLOAD_SUB": "Supportiamo STL, 3MF, STEP fino a 50MB", "MATERIAL": "Materiale", "QUALITY": "Qualità", "PRINT_SPEED": "Velocità di Stampa", @@ -101,7 +101,8 @@ "UPLOADING": "Caricamento...", "PROCESSING": "Elaborazione...", "NOTES_PLACEHOLDER": "Istruzioni specifiche...", - "SETUP_NOTE": "* Include {{cost}} Costo di Setup" + "SETUP_NOTE": "* Include {{cost}} Costo di Setup", + "STEP_WARNING": "La visualizzazione 3D non è compatibile con i file STEP, ma il calcolatore funziona." }, "QUOTE": { "PROCEED_ORDER": "Procedi con l'ordine", @@ -203,7 +204,7 @@ "COMPANY_NAME": "Ragione Sociale", "REF_PERSON": "Persona di Riferimento", "UPLOAD_LABEL": "Allegati", - "UPLOAD_HINT": "Max 15 file. Supportati: Immagini, PDF, STL, STEP, 3MF, OBJ", + "UPLOAD_HINT": "Max 15 file. Supportati: Immagini, PDF, STL, STEP, 3MF", "DROP_FILES": "Trascina qui i file o clicca per caricare", "PLACEHOLDER_NAME": "Il tuo nome", "PLACEHOLDER_EMAIL": "tuo@email.com",