| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Example: business-views.xml -->
- <views xmlns="http://quadarax.com/ui-layout-views">
-
- <!-- Base Entity View Pattern -->
- <view name="BaseEntityView" type="base" category="framework">
- <description>Base view pattern for CRUD operations on business entities</description>
-
- <metadata>
- <permissions>entity.read</permissions>
- </metadata>
-
- <data-context>
- <property name="currentEntity" type="object" scope="view" />
- <property name="entityList" type="IEnumerable" scope="view" />
- <property name="isLoading" type="bool" scope="view" />
- <property name="hasChanges" type="bool" scope="view" />
- </data-context>
-
- <windows>
- <window-ref name="BaseListWindow" role="main" default="true" />
- <window-ref name="BaseEditDialog" role="editor" modal="true" />
- <window-ref name="BaseViewDialog" role="viewer" modal="true" />
- </windows>
-
- <navigation>
- <action name="show-list" target="BaseListWindow" />
- <action name="edit-entity" target="BaseEditDialog" context="currentEntity" />
- <action name="view-entity" target="BaseViewDialog" context="currentEntity" />
- <action name="create-new" target="BaseEditDialog" />
- </navigation>
-
- <behaviors>
- <behavior name="refresh-data" scope="view" />
- <behavior name="save-changes" scope="view" />
- <behavior name="delete-entity" scope="view" />
- <behavior name="validate-entity" scope="view" />
- <behavior name="export-data" scope="view" />
- </behaviors>
- </view>
-
- <!-- Product Management View -->
- <view name="ProductView" type="business-entity" category="core" inherits="BaseEntityView">
- <description>Product management including inventory, pricing, and categorization</description>
-
- <metadata>
- <model-class>Product</model-class>
- <view-model-class>ProductViewModel</view-model-class>
- <controller-class>ProductController</controller-class>
- <permissions>product.read,product.write,product.delete</permissions>
- </metadata>
-
- <dependencies>
- <view-ref name="CategoryView" relationship="lookup" required="false">
- <interaction type="select-category" returns="category-id" />
- </view-ref>
- <view-ref name="SupplierView" relationship="reference" required="false">
- <interaction type="view-supplier" context="supplier-id" />
- </view-ref>
- <shared-component name="ImageUploadComponent" required="true" />
- <shared-component name="PriceHistoryComponent" required="false" />
- </dependencies>
-
- <data-context>
- <property name="currentProduct" type="Product" scope="view" />
- <property name="productList" type="ProductList" scope="view" />
- <property name="selectedCategory" type="Category" scope="shared" />
- <property name="priceHistory" type="PriceHistoryList" scope="view" />
- </data-context>
-
- <windows>
- <window-ref name="ProductListWindow" role="main" default="true" />
- <window-ref name="ProductEditDialog" role="editor" modal="true" />
- <window-ref name="ProductDetailsWindow" role="viewer" />
- <window-ref name="ProductCatalogWindow" role="catalog" />
- <window-ref name="ProductImportDialog" role="utility" modal="true" />
- </windows>
-
- <navigation>
- <!-- Override base actions with product-specific implementations -->
- <action name="edit-entity" target="ProductEditDialog" context="currentProduct" />
- <action name="view-entity" target="ProductDetailsWindow" context="currentProduct" />
- <!-- Add product-specific actions -->
- <action name="view-catalog" target="ProductCatalogWindow" />
- <action name="import-products" target="ProductImportDialog" />
- <action name="manage-inventory" target="ProductEditDialog" context="currentProduct" />
- </navigation>
-
- <behaviors>
- <!-- Inherit base behaviors and add product-specific ones -->
- <behavior name="update-inventory" scope="view" />
- <behavior name="calculate-pricing" scope="view" />
- <behavior name="generate-barcode" scope="view" />
- <behavior name="check-stock-levels" scope="view" />
- </behaviors>
-
- <communication>
- <publishes>
- <event name="product-saved" data="product-id" />
- <event name="product-deleted" data="product-id" />
- <event name="inventory-updated" data="product-id,new-quantity" />
- </publishes>
- <subscribes>
- <event name="category-changed" source="CategoryView" handler="refresh-product-list" />
- <event name="supplier-updated" source="SupplierView" handler="update-supplier-info" />
- </subscribes>
- </communication>
- </view>
-
- <!-- Category Management View -->
- <view name="CategoryView" type="business-entity" category="core" inherits="BaseEntityView">
- <description>Product category management with hierarchical structure</description>
-
- <metadata>
- <model-class>Category</model-class>
- <view-model-class>CategoryViewModel</view-model-class>
- <controller-class>CategoryController</controller-class>
- <permissions>category.read,category.write</permissions>
- </metadata>
-
- <data-context>
- <property name="currentCategory" type="Category" scope="view" />
- <property name="categoryTree" type="CategoryTree" scope="view" />
- <property name="selectedParentCategory" type="Category" scope="view" />
- </data-context>
-
- <windows>
- <window-ref name="CategoryTreeWindow" role="main" default="true" />
- <window-ref name="CategoryEditDialog" role="editor" modal="true" />
- <window-ref name="CategoryListDialog" role="utility" modal="true" />
- </windows>
-
- <navigation>
- <action name="show-tree" target="CategoryTreeWindow" />
- <action name="edit-category" target="CategoryEditDialog" context="currentCategory" />
- <action name="select-category" target="CategoryListDialog" />
- <action name="create-subcategory" target="CategoryEditDialog" context="selectedParentCategory" />
- </navigation>
-
- <behaviors>
- <behavior name="move-category" scope="view" />
- <behavior name="merge-categories" scope="view" />
- <behavior name="update-hierarchy" scope="view" />
- </behaviors>
-
- <communication>
- <publishes>
- <event name="category-selected" data="category-id" />
- <event name="category-moved" data="category-id,new-parent-id" />
- </publishes>
- </communication>
- </view>
-
- <!-- Customer Management View -->
- <view name="CustomerView" type="business-entity" category="core" inherits="BaseEntityView">
- <description>Customer relationship management including contacts and order history</description>
-
- <metadata>
- <model-class>Customer</model-class>
- <view-model-class>CustomerViewModel</view-model-class>
- <controller-class>CustomerController</controller-class>
- <permissions>customer.read,customer.write,customer.delete</permissions>
- </metadata>
-
- <dependencies>
- <view-ref name="OrderView" relationship="reference" required="false">
- <interaction type="view-orders" context="customer-id" />
- </view-ref>
- <shared-component name="AddressComponent" required="true" />
- <shared-component name="ContactHistoryComponent" required="false" />
- </dependencies>
-
- <data-context>
- <property name="currentCustomer" type="Customer" scope="view" />
- <property name="customerList" type="CustomerList" scope="view" />
- <property name="customerOrders" type="OrderList" scope="view" />
- <property name="contactHistory" type="ContactHistoryList" scope="view" />
- </data-context>
-
- <windows>
- <window-ref name="CustomerListWindow" role="main" default="true" />
- <window-ref name="CustomerEditDialog" role="editor" modal="true" />
- <window-ref name="CustomerDetailsWindow" role="viewer" />
- <window-ref name="CustomerSearchDialog" role="utility" modal="true" />
- </windows>
-
- <navigation>
- <action name="search-customers" target="CustomerSearchDialog" />
- <action name="view-orders" target="OrderView" context="currentCustomer" />
- <action name="send-marketing" target="CustomerDetailsWindow" context="currentCustomer" />
- </navigation>
-
- <behaviors>
- <behavior name="merge-customers" scope="view" />
- <behavior name="calculate-customer-value" scope="view" />
- <behavior name="generate-reports" scope="view" />
- </behaviors>
-
- <communication>
- <publishes>
- <event name="customer-selected" data="customer-id" />
- <event name="customer-updated" data="customer-id" />
- </publishes>
- <subscribes>
- <event name="order-created" source="OrderView" handler="refresh-customer-orders" />
- </subscribes>
- </communication>
- </view>
-
- <!-- Order Management View -->
- <view name="OrderView" type="business-entity" category="core" inherits="BaseEntityView">
- <description>Order processing including items, shipping, and payment tracking</description>
-
- <metadata>
- <model-class>Order</model-class>
- <view-model-class>OrderViewModel</view-model-class>
- <controller-class>OrderController</controller-class>
- <permissions>order.read,order.write,order.process</permissions>
- </metadata>
-
- <dependencies>
- <view-ref name="OrderItemView" relationship="detail" required="true">
- <interaction type="manage-items" context="current-order" />
- </view-ref>
- <view-ref name="CustomerView" relationship="reference" required="false">
- <interaction type="view-customer" context="customer-id" />
- </view-ref>
- <view-ref name="ProductView" relationship="lookup" required="false">
- <interaction type="select-product" returns="product-id" />
- </view-ref>
- <shared-component name="PaymentProcessingComponent" required="true" />
- <shared-component name="ShippingComponent" required="true" />
- </dependencies>
-
- <data-context>
- <property name="currentOrder" type="Order" scope="view" />
- <property name="orderList" type="OrderList" scope="view" />
- <property name="orderItems" type="OrderItemList" scope="shared" />
- <property name="paymentStatus" type="PaymentStatus" scope="view" />
- <property name="shippingInfo" type="ShippingInfo" scope="view" />
- </data-context>
-
- <windows>
- <window-ref name="OrderListWindow" role="main" default="true" />
- <window-ref name="OrderEditDialog" role="editor" modal="true" />
- <window-ref name="OrderDetailsWindow" role="viewer" />
- <window-ref name="OrderStatusDialog" role="utility" modal="true" />
- </windows>
-
- <navigation>
- <action name="process-payment" target="OrderEditDialog" context="currentOrder" />
- <action name="update-shipping" target="OrderEditDialog" context="currentOrder" />
- <action name="view-status" target="OrderStatusDialog" context="currentOrder" />
- <action name="print-invoice" target="OrderDetailsWindow" context="currentOrder" />
- </navigation>
-
- <behaviors>
- <behavior name="calculate-totals" scope="view" />
- <behavior name="process-order" scope="view" />
- <behavior name="generate-invoice" scope="view" />
- <behavior name="track-shipment" scope="view" />
- </behaviors>
-
- <communication>
- <publishes>
- <event name="order-created" data="order-id" />
- <event name="order-processed" data="order-id" />
- <event name="order-shipped" data="order-id,tracking-number" />
- </publishes>
- <subscribes>
- <event name="customer-changed" source="CustomerView" handler="update-customer-info" />
- <event name="inventory-updated" source="ProductView" handler="check-availability" />
- </subscribes>
- </communication>
- </view>
-
- <!-- Order Item Management View (Detail view) -->
- <view name="OrderItemView" type="business-entity" category="core">
- <description>Individual order item management within an order context</description>
-
- <metadata>
- <model-class>OrderItem</model-class>
- <view-model-class>OrderItemViewModel</view-model-class>
- <controller-class>OrderItemController</controller-class>
- <permissions>order.write</permissions>
- </metadata>
-
- <dependencies>
- <view-ref name="ProductView" relationship="lookup" required="true">
- <interaction type="select-product" returns="product-id,product-details" />
- </view-ref>
- </dependencies>
-
- <data-context>
- <property name="currentOrderItem" type="OrderItem" scope="view" />
- <property name="orderItemList" type="OrderItemList" scope="shared" />
- <property name="parentOrder" type="Order" scope="shared" />
- <property name="availableProducts" type="ProductList" scope="view" />
- </data-context>
-
- <windows>
- <window-ref name="OrderItemsGrid" role="main" default="true" />
- <window-ref name="OrderItemEditDialog" role="editor" modal="true" />
- </windows>
-
- <navigation>
- <action name="add-item" target="OrderItemEditDialog" />
- <action name="edit-item" target="OrderItemEditDialog" context="currentOrderItem" />
- <action name="select-product" target="ProductView" />
- </navigation>
-
- <behaviors>
- <behavior name="calculate-line-total" scope="view" />
- <behavior name="validate-quantity" scope="view" />
- <behavior name="check-availability" scope="view" />
- </behaviors>
-
- <communication>
- <publishes>
- <event name="item-added" data="order-item-id" />
- <event name="item-updated" data="order-item-id" />
- <event name="item-removed" data="order-item-id" />
- </publishes>
- <subscribes>
- <event name="product-selected" source="ProductView" handler="add-product-to-order" />
- <event name="order-changed" source="OrderView" handler="load-order-items" />
- </subscribes>
- </communication>
- </view>
-
- </views>
|