Browse Source

feat(admin-ui): Exclude draft UI controls if Draft state not configured

Relates to #1453
Michael Bromley 3 years ago
parent
commit
5ef9912938

+ 13 - 5
packages/admin-ui/src/lib/order/src/components/order-list/order-list.component.html

@@ -74,10 +74,12 @@
     </vdr-ab-left>
     <vdr-ab-right>
         <vdr-action-bar-items locationId="order-list"></vdr-action-bar-items>
-        <a class="btn btn-primary" *vdrIfPermissions="['CreateOrder']" [routerLink]="['./draft/create']">
-            <clr-icon shape="plus"></clr-icon>
-            {{ 'catalog.create-draft-order' | translate }}
-        </a>
+        <ng-container *ngIf="canCreateDraftOrder">
+            <a class="btn btn-primary" *vdrIfPermissions="['CreateOrder']" [routerLink]="['./draft/create']">
+                <clr-icon shape="plus"></clr-icon>
+                {{ 'catalog.create-draft-order' | translate }}
+            </a>
+        </ng-container>
     </vdr-ab-right>
 </vdr-action-bar>
 
@@ -113,7 +115,13 @@
             <vdr-table-row-action
                 iconShape="shopping-cart"
                 [label]="'common.open' | translate"
-                [linkTo]="order.state === 'Modifying' ? ['./', order.id, 'modify'] : order.state === 'Draft' ? ['./draft', order.id] : ['./', order.id]"
+                [linkTo]="
+                    order.state === 'Modifying'
+                        ? ['./', order.id, 'modify']
+                        : order.state === 'Draft'
+                        ? ['./draft', order.id]
+                        : ['./', order.id]
+                "
             ></vdr-table-row-action>
         </td>
     </ng-template>

+ 8 - 0
packages/admin-ui/src/lib/order/src/components/order-list/order-list.component.ts

@@ -86,6 +86,7 @@ export class OrderListComponent
         },
     ];
     activePreset$: Observable<string>;
+    canCreateDraftOrder = false;
 
     constructor(
         private serverConfigService: ServerConfigService,
@@ -112,6 +113,13 @@ export class OrderListComponent
         if (lastFilters) {
             this.setQueryParam(lastFilters, { replaceUrl: true });
         }
+        this.canCreateDraftOrder = !!this.serverConfigService
+            .getOrderProcessStates()
+            .find(state => state.name === 'Created')
+            ?.to.includes('Draft');
+        if (!this.canCreateDraftOrder) {
+            this.filterPresets = this.filterPresets.filter(p => p.name !== 'draft');
+        }
     }
 
     ngOnInit() {