feat(front-end): calculator improvements

This commit is contained in:
2026-03-05 15:43:37 +01:00
parent d061f21d79
commit fe3951b6c3
26 changed files with 901 additions and 112 deletions

View File

@@ -245,6 +245,10 @@
<span
>{{ "CHECKOUT.QTY" | translate }}: {{ item.quantity }}</span
>
<span>
{{ "CHECKOUT.MATERIAL" | translate }}:
{{ itemMaterial(item) }}
</span>
<span
*ngIf="item.colorCode"
class="color-dot"
@@ -255,7 +259,7 @@
{{ item.printTimeSeconds / 3600 | number: "1.1-1" }}h |
{{ item.materialGrams | number: "1.0-0" }}g
</div>
<div class="item-preview" *ngIf="isStlItem(item)">
<div class="item-preview" *ngIf="isCadSession() && isStlItem(item)">
<ng-container
*ngIf="previewFile(item) as itemPreview; else previewState"
>

View File

@@ -162,7 +162,11 @@ export class CheckoutComponent implements OnInit {
this.quoteService.getQuoteSession(this.sessionId).subscribe({
next: (session) => {
this.quoteSession.set(session);
this.loadStlPreviews(session);
if (this.isCadSessionData(session)) {
this.loadStlPreviews(session);
} else {
this.resetPreviewState();
}
console.log('Loaded session:', session);
},
error: (err) => {
@@ -173,7 +177,7 @@ export class CheckoutComponent implements OnInit {
}
isCadSession(): boolean {
return this.quoteSession()?.session?.status === 'CAD_ACTIVE';
return this.isCadSessionData(this.quoteSession());
}
cadRequestId(): string | null {
@@ -188,6 +192,12 @@ export class CheckoutComponent implements OnInit {
return this.quoteSession()?.cadTotalChf ?? 0;
}
itemMaterial(item: any): string {
return String(
item?.materialCode ?? this.quoteSession()?.session?.materialCode ?? '-',
);
}
isStlItem(item: any): boolean {
const name = String(item?.originalFilename ?? '').toLowerCase();
return name.endsWith('.stl');
@@ -241,7 +251,11 @@ export class CheckoutComponent implements OnInit {
}
private loadStlPreviews(session: any): void {
if (!this.sessionId || !Array.isArray(session?.items)) {
if (
!this.sessionId ||
!this.isCadSessionData(session) ||
!Array.isArray(session?.items)
) {
return;
}
@@ -276,6 +290,17 @@ export class CheckoutComponent implements OnInit {
}
}
private isCadSessionData(session: any): boolean {
return session?.session?.status === 'CAD_ACTIVE';
}
private resetPreviewState(): void {
this.previewFiles.set({});
this.previewLoading.set({});
this.previewErrors.set({});
this.closePreview();
}
onSubmit() {
if (this.checkoutForm.invalid) {
return;