@cratis/scene.blueprint.inventory 0.0.0-stage → 4.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blueprint.ts +16 -0
- package/blueprintCatalog.json +190 -0
- package/dist/cjs/blueprint.js +19 -0
- package/dist/cjs/blueprint.js.map +1 -0
- package/dist/cjs/index.js +72 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/inventoryApplication.js +49 -0
- package/dist/cjs/inventoryApplication.js.map +1 -0
- package/dist/cjs/inventoryParts.js +131 -0
- package/dist/cjs/inventoryParts.js.map +1 -0
- package/dist/cjs/inventoryQueries.js +72 -0
- package/dist/cjs/inventoryQueries.js.map +1 -0
- package/dist/cjs/inventoryScreenSet.js +69 -0
- package/dist/cjs/inventoryScreenSet.js.map +1 -0
- package/dist/cjs/manifest.js +65 -0
- package/dist/cjs/manifest.js.map +1 -0
- package/dist/cjs/navigation.js +143 -0
- package/dist/cjs/navigation.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/packageName.js +8 -0
- package/dist/cjs/packageName.js.map +1 -0
- package/dist/cjs/screens/index.js +22 -0
- package/dist/cjs/screens/index.js.map +1 -0
- package/dist/cjs/templateProvenance.js +24 -0
- package/dist/cjs/templateProvenance.js.map +1 -0
- package/dist/cjs/templates/dashboardTemplate.js +92 -0
- package/dist/cjs/templates/dashboardTemplate.js.map +1 -0
- package/dist/cjs/templates/formTemplates.js +94 -0
- package/dist/cjs/templates/formTemplates.js.map +1 -0
- package/dist/cjs/templates/index.js +34 -0
- package/dist/cjs/templates/index.js.map +1 -0
- package/dist/cjs/templates/listTemplates.js +212 -0
- package/dist/cjs/templates/listTemplates.js.map +1 -0
- package/dist/cjs/templates/locationsTemplate.js +63 -0
- package/dist/cjs/templates/locationsTemplate.js.map +1 -0
- package/dist/cjs/templates/recordTemplates.js +111 -0
- package/dist/cjs/templates/recordTemplates.js.map +1 -0
- package/dist/esm/blueprint.d.ts +3 -0
- package/dist/esm/blueprint.d.ts.map +1 -0
- package/dist/esm/blueprint.js +17 -0
- package/dist/esm/blueprint.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/inventoryApplication.d.ts +10 -0
- package/dist/esm/inventoryApplication.d.ts.map +1 -0
- package/dist/esm/inventoryApplication.js +44 -0
- package/dist/esm/inventoryApplication.js.map +1 -0
- package/dist/esm/inventoryParts.d.ts +15 -0
- package/dist/esm/inventoryParts.d.ts.map +1 -0
- package/dist/esm/inventoryParts.js +114 -0
- package/dist/esm/inventoryParts.js.map +1 -0
- package/dist/esm/inventoryQueries.d.ts +44 -0
- package/dist/esm/inventoryQueries.d.ts.map +1 -0
- package/dist/esm/inventoryQueries.js +64 -0
- package/dist/esm/inventoryQueries.js.map +1 -0
- package/dist/esm/inventoryScreenSet.d.ts +7 -0
- package/dist/esm/inventoryScreenSet.d.ts.map +1 -0
- package/dist/esm/inventoryScreenSet.js +67 -0
- package/dist/esm/inventoryScreenSet.js.map +1 -0
- package/dist/esm/manifest.d.ts +3 -0
- package/dist/esm/manifest.d.ts.map +1 -0
- package/dist/esm/manifest.js +63 -0
- package/dist/esm/manifest.js.map +1 -0
- package/dist/esm/navigation.d.ts +5 -0
- package/dist/esm/navigation.d.ts.map +1 -0
- package/dist/esm/navigation.js +139 -0
- package/dist/esm/navigation.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/packageName.d.ts +2 -0
- package/dist/esm/packageName.d.ts.map +1 -0
- package/dist/esm/packageName.js +6 -0
- package/dist/esm/packageName.js.map +1 -0
- package/dist/esm/screens/index.d.ts +3 -0
- package/dist/esm/screens/index.d.ts.map +1 -0
- package/dist/esm/screens/index.js +20 -0
- package/dist/esm/screens/index.js.map +1 -0
- package/dist/esm/templateProvenance.d.ts +3 -0
- package/dist/esm/templateProvenance.d.ts.map +1 -0
- package/dist/esm/templateProvenance.js +22 -0
- package/dist/esm/templateProvenance.js.map +1 -0
- package/dist/esm/templates/dashboardTemplate.d.ts +3 -0
- package/dist/esm/templates/dashboardTemplate.d.ts.map +1 -0
- package/dist/esm/templates/dashboardTemplate.js +90 -0
- package/dist/esm/templates/dashboardTemplate.js.map +1 -0
- package/dist/esm/templates/formTemplates.d.ts +5 -0
- package/dist/esm/templates/formTemplates.d.ts.map +1 -0
- package/dist/esm/templates/formTemplates.js +90 -0
- package/dist/esm/templates/formTemplates.js.map +1 -0
- package/dist/esm/templates/index.d.ts +8 -0
- package/dist/esm/templates/index.d.ts.map +1 -0
- package/dist/esm/templates/index.js +22 -0
- package/dist/esm/templates/index.js.map +1 -0
- package/dist/esm/templates/listTemplates.d.ts +6 -0
- package/dist/esm/templates/listTemplates.d.ts.map +1 -0
- package/dist/esm/templates/listTemplates.js +207 -0
- package/dist/esm/templates/listTemplates.js.map +1 -0
- package/dist/esm/templates/locationsTemplate.d.ts +3 -0
- package/dist/esm/templates/locationsTemplate.d.ts.map +1 -0
- package/dist/esm/templates/locationsTemplate.js +61 -0
- package/dist/esm/templates/locationsTemplate.js.map +1 -0
- package/dist/esm/templates/recordTemplates.d.ts +3 -0
- package/dist/esm/templates/recordTemplates.d.ts.map +1 -0
- package/dist/esm/templates/recordTemplates.js +109 -0
- package/dist/esm/templates/recordTemplates.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/index.ts +14 -0
- package/inventoryApplication.ts +28 -0
- package/inventoryParts.ts +52 -0
- package/inventoryQueries.ts +64 -0
- package/inventoryScreenSet.ts +25 -0
- package/manifest.ts +41 -0
- package/navigation.ts +60 -0
- package/package.json +79 -5
- package/packageName.ts +5 -0
- package/sampleData/inventory-warehouse.json +1770 -0
- package/screens/index.ts +20 -0
- package/templateProvenance.ts +15 -0
- package/templates/dashboardTemplate.ts +45 -0
- package/templates/formTemplates.ts +60 -0
- package/templates/index.ts +25 -0
- package/templates/listTemplates.ts +109 -0
- package/templates/locationsTemplate.ts +36 -0
- package/templates/recordTemplates.ts +45 -0
- package/thumbnails/InventoryAdjustStock.svg +12 -0
- package/thumbnails/InventoryCheckInOut.svg +17 -0
- package/thumbnails/InventoryDashboard.svg +14 -0
- package/thumbnails/InventoryItemGallery.svg +29 -0
- package/thumbnails/InventoryItemList.svg +13 -0
- package/thumbnails/InventoryItemPage.svg +18 -0
- package/thumbnails/InventoryLocations.svg +20 -0
- package/thumbnails/InventoryMovementList.svg +13 -0
- package/thumbnails/InventoryQuickCreateItem.svg +12 -0
- package/thumbnails/InventoryQuickCreateSupplier.svg +12 -0
- package/thumbnails/InventorySupplierList.svg +13 -0
- package/thumbnails/inventory.svg +14 -0
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locationsTemplate.d.ts","sourceRoot":"","sources":["../../../templates/locationsTemplate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AAWpE,eAAO,MAAM,0BAA0B,EAAE,cAqBxC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { TemplateScope } from '@cratis/scene.model';
|
|
2
|
+
import { component, masterDetailScreenTemplate } from '@cratis/scene.blueprint.default';
|
|
3
|
+
import { localeOfData, fromQuery, InventoryQuery } from '../inventoryQueries.js';
|
|
4
|
+
import { inventoryMetadata, withBehaviors, opensDialog, actionButton } from '../inventoryParts.js';
|
|
5
|
+
|
|
6
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
7
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
8
|
+
/**
|
|
9
|
+
* The locations: the foundation `MasterDetail` with the tree of locations - warehouse, aisle, shelf - on the left and, on the right, what is stored in the one
|
|
10
|
+
* chosen, or in everything beneath it. The tree keeps the chosen location in the address under the parameter the contents list searches by, and a
|
|
11
|
+
* location's id is its path, so the contents are every row whose location starts with it - and a link or a refresh restores the choice. On a phone the two become a navigation stack. It fills the shell's `content` slot itself
|
|
12
|
+
* rather than the module workspace's, so a module without a workspace can use it.
|
|
13
|
+
*/ const inventoryLocationsTemplate = {
|
|
14
|
+
name: 'InventoryLocations',
|
|
15
|
+
fitsSlot: 'content',
|
|
16
|
+
slots: masterDetailScreenTemplate.slots,
|
|
17
|
+
arrangement: masterDetailScreenTemplate.arrangement,
|
|
18
|
+
content: {
|
|
19
|
+
list: [
|
|
20
|
+
component('inventory-locations-tree', 'orgTree', {
|
|
21
|
+
nodes: fromQuery(InventoryQuery.LocationNodes),
|
|
22
|
+
expandedDepth: 2,
|
|
23
|
+
urlKey: 'contentsq',
|
|
24
|
+
strings: {
|
|
25
|
+
orgTree: 'Locations',
|
|
26
|
+
orgReports: '{count} locations beneath'
|
|
27
|
+
},
|
|
28
|
+
...localeOfData
|
|
29
|
+
})
|
|
30
|
+
],
|
|
31
|
+
details: [
|
|
32
|
+
component('inventory-locations-header', 'pageHeader', {
|
|
33
|
+
title: 'Contents',
|
|
34
|
+
subtitle: 'What is stored in the chosen location and beneath it'
|
|
35
|
+
}, {
|
|
36
|
+
actions: [
|
|
37
|
+
withBehaviors(actionButton('inventory-locations-adjust', 'Adjust stock', 'primary'), opensDialog('InventoryAdjustStock'))
|
|
38
|
+
]
|
|
39
|
+
}),
|
|
40
|
+
component('inventory-locations-contents', 'dataList', {
|
|
41
|
+
label: 'Location contents',
|
|
42
|
+
rows: fromQuery(InventoryQuery.LocationContents),
|
|
43
|
+
columns: fromQuery(InventoryQuery.LocationContentColumns),
|
|
44
|
+
titleField: 'name',
|
|
45
|
+
pageSize: 10,
|
|
46
|
+
toneField: 'tone',
|
|
47
|
+
urlKey: 'contents',
|
|
48
|
+
...localeOfData
|
|
49
|
+
})
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
displayName: 'Inventory locations',
|
|
53
|
+
description: 'The tree of locations beside what is stored in the chosen location.',
|
|
54
|
+
metadata: inventoryMetadata('InventoryLocations', 'Workspace', [
|
|
55
|
+
TemplateScope.Module,
|
|
56
|
+
TemplateScope.Feature
|
|
57
|
+
])
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { inventoryLocationsTemplate };
|
|
61
|
+
//# sourceMappingURL=locationsTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locationsTemplate.js","sources":["../../../templates/locationsTemplate.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ScreenTemplate, TemplateScope } from '@cratis/scene.model';\nimport { masterDetailScreenTemplate } from '@cratis/scene.blueprint.default';\nimport { InventoryQuery, fromQuery, localeOfData } from '../inventoryQueries';\nimport { actionButton, component, inventoryMetadata, opensDialog, withBehaviors } from '../inventoryParts';\n\n/**\n * The locations: the foundation `MasterDetail` with the tree of locations - warehouse, aisle, shelf - on the left and, on the right, what is stored in the one\n * chosen, or in everything beneath it. The tree keeps the chosen location in the address under the parameter the contents list searches by, and a\n * location's id is its path, so the contents are every row whose location starts with it - and a link or a refresh restores the choice. On a phone the two become a navigation stack. It fills the shell's `content` slot itself\n * rather than the module workspace's, so a module without a workspace can use it.\n */\nexport const inventoryLocationsTemplate: ScreenTemplate = {\n name: 'InventoryLocations',\n fitsSlot: 'content',\n slots: masterDetailScreenTemplate.slots,\n arrangement: masterDetailScreenTemplate.arrangement,\n content: {\n list: [component('inventory-locations-tree', 'orgTree', {\n nodes: fromQuery(InventoryQuery.LocationNodes), expandedDepth: 2, urlKey: 'contentsq', strings: { orgTree: 'Locations', orgReports: '{count} locations beneath' }, ...localeOfData,\n })],\n details: [\n component('inventory-locations-header', 'pageHeader', { title: 'Contents', subtitle: 'What is stored in the chosen location and beneath it' }, {\n actions: [withBehaviors(actionButton('inventory-locations-adjust', 'Adjust stock', 'primary'), opensDialog('InventoryAdjustStock'))],\n }),\n component('inventory-locations-contents', 'dataList', {\n label: 'Location contents', rows: fromQuery(InventoryQuery.LocationContents), columns: fromQuery(InventoryQuery.LocationContentColumns), titleField: 'name', pageSize: 10, toneField: 'tone', urlKey: 'contents', ...localeOfData,\n }),\n ],\n },\n displayName: 'Inventory locations',\n description: 'The tree of locations beside what is stored in the chosen location.',\n metadata: inventoryMetadata('InventoryLocations', 'Workspace', [TemplateScope.Module, TemplateScope.Feature]),\n};\n"],"names":["inventoryLocationsTemplate","name","fitsSlot","slots","masterDetailScreenTemplate","arrangement","content","list","component","nodes","fromQuery","InventoryQuery","LocationNodes","expandedDepth","urlKey","strings","orgTree","orgReports","localeOfData","details","title","subtitle","actions","withBehaviors","actionButton","opensDialog","label","rows","LocationContents","columns","LocationContentColumns","titleField","pageSize","toneField","displayName","description","metadata","inventoryMetadata","TemplateScope","Module","Feature"],"mappings":";;;;;AAAA;AACA;AAOA;;;;;UAMaA,0BAAAA,GAA6C;IACtDC,IAAAA,EAAM,oBAAA;IACNC,QAAAA,EAAU,SAAA;AACVC,IAAAA,KAAAA,EAAOC,2BAA2BD,KAAK;AACvCE,IAAAA,WAAAA,EAAaD,2BAA2BC,WAAW;IACnDC,OAAAA,EAAS;QACLC,IAAAA,EAAM;AAACC,YAAAA,SAAAA,CAAU,4BAA4B,SAAA,EAAW;gBACpDC,KAAAA,EAAOC,SAAAA,CAAUC,eAAeC,aAAa,CAAA;gBAAGC,aAAAA,EAAe,CAAA;gBAAGC,MAAAA,EAAQ,WAAA;gBAAaC,OAAAA,EAAS;oBAAEC,OAAAA,EAAS,WAAA;oBAAaC,UAAAA,EAAY;AAA4B,iBAAA;AAAG,gBAAA,GAAGC;AAC1K,aAAA;AAAG,SAAA;QACHC,OAAAA,EAAS;AACLX,YAAAA,SAAAA,CAAU,8BAA8B,YAAA,EAAc;gBAAEY,KAAAA,EAAO,UAAA;gBAAYC,QAAAA,EAAU;aAAuD,EAAG;gBAC3IC,OAAAA,EAAS;AAACC,oBAAAA,aAAAA,CAAcC,YAAAA,CAAa,4BAAA,EAA8B,cAAA,EAAgB,SAAA,CAAA,EAAYC,WAAAA,CAAY,sBAAA,CAAA;AAAyB;AACxI,aAAA,CAAA;AACAjB,YAAAA,SAAAA,CAAU,gCAAgC,UAAA,EAAY;gBAClDkB,KAAAA,EAAO,mBAAA;gBAAqBC,IAAAA,EAAMjB,SAAAA,CAAUC,eAAeiB,gBAAgB,CAAA;gBAAGC,OAAAA,EAASnB,SAAAA,CAAUC,eAAemB,sBAAsB,CAAA;gBAAGC,UAAAA,EAAY,MAAA;gBAAQC,QAAAA,EAAU,EAAA;gBAAIC,SAAAA,EAAW,MAAA;gBAAQnB,MAAAA,EAAQ,UAAA;AAAY,gBAAA,GAAGI;AACzN,aAAA;AACH;AACL,KAAA;IACAgB,WAAAA,EAAa,qBAAA;IACbC,WAAAA,EAAa,qEAAA;IACbC,QAAAA,EAAUC,iBAAAA,CAAkB,sBAAsB,WAAA,EAAa;AAACC,QAAAA,aAAAA,CAAcC,MAAM;AAAED,QAAAA,aAAAA,CAAcE;AAAQ,KAAA;AAChH;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recordTemplates.d.ts","sourceRoot":"","sources":["../../../templates/recordTemplates.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AAWpE,eAAO,MAAM,yBAAyB,EAAE,cA8BvC,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { TemplateScope } from '@cratis/scene.model';
|
|
2
|
+
import { component, recordPageTemplate } from '@cratis/scene.blueprint.default';
|
|
3
|
+
import { localeOfData, fromQuery, inventoryQueriesOf, InventoryEntityKind, InventoryQuery, currencyOfData } from '../inventoryQueries.js';
|
|
4
|
+
import { inventoryMetadata, withBehaviors, goesTo, actionButton, opensDialog } from '../inventoryParts.js';
|
|
5
|
+
|
|
6
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
7
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
8
|
+
const queries = inventoryQueriesOf(InventoryEntityKind.Item);
|
|
9
|
+
/**
|
|
10
|
+
* The item page: the foundation `RecordPage` with the item's name as its title, Adjust stock and Check out as its actions, its key facts under it, the record's
|
|
11
|
+
* fields with the supplier's details, the stock of the item in each location and its movement history as related lists, and the cycle counts to do beside it.
|
|
12
|
+
*/ const inventoryItemPageTemplate = {
|
|
13
|
+
name: 'InventoryItemPage',
|
|
14
|
+
fitsSlot: 'content',
|
|
15
|
+
slots: recordPageTemplate.slots,
|
|
16
|
+
arrangement: recordPageTemplate.arrangement,
|
|
17
|
+
content: {
|
|
18
|
+
header: [
|
|
19
|
+
component('InventoryItemPage-header', 'pageHeader', {
|
|
20
|
+
title: fromQuery(queries.record, '0.name'),
|
|
21
|
+
subtitle: 'Item'
|
|
22
|
+
}, {
|
|
23
|
+
actions: [
|
|
24
|
+
withBehaviors(actionButton('InventoryItemPage-check', 'Check out', 'secondary'), goesTo('inventory.movements.check')),
|
|
25
|
+
withBehaviors(actionButton('InventoryItemPage-adjust', 'Adjust stock', 'primary'), opensDialog('InventoryAdjustStock'))
|
|
26
|
+
]
|
|
27
|
+
})
|
|
28
|
+
],
|
|
29
|
+
summary: [
|
|
30
|
+
component('InventoryItemPage-status', 'statusChip', {
|
|
31
|
+
status: fromQuery(queries.summary, '0.status'),
|
|
32
|
+
tone: fromQuery(queries.summary, '0.tone')
|
|
33
|
+
}),
|
|
34
|
+
component('InventoryItemPage-onhand', 'statCard', {
|
|
35
|
+
label: 'On hand',
|
|
36
|
+
value: fromQuery(queries.summary, '0.onHand'),
|
|
37
|
+
...localeOfData
|
|
38
|
+
}),
|
|
39
|
+
component('InventoryItemPage-reorder', 'statCard', {
|
|
40
|
+
label: 'Reorder level',
|
|
41
|
+
value: fromQuery(queries.summary, '0.reorderLevel'),
|
|
42
|
+
...localeOfData
|
|
43
|
+
}),
|
|
44
|
+
component('InventoryItemPage-value', 'statCard', {
|
|
45
|
+
label: 'Stock value',
|
|
46
|
+
value: fromQuery(queries.summary, '0.stockValue'),
|
|
47
|
+
format: 'currency',
|
|
48
|
+
fractionDigits: 0,
|
|
49
|
+
...currencyOfData
|
|
50
|
+
})
|
|
51
|
+
],
|
|
52
|
+
tabs: [
|
|
53
|
+
component('InventoryItemPage-tabs', 'tabSet', {
|
|
54
|
+
tabs: fromQuery(InventoryQuery.RecordTabs),
|
|
55
|
+
urlKey: 'tab',
|
|
56
|
+
label: 'Item sections'
|
|
57
|
+
})
|
|
58
|
+
],
|
|
59
|
+
main: [
|
|
60
|
+
component('InventoryItemPage-form', 'formScreenBody', {
|
|
61
|
+
mode: 'readOnly',
|
|
62
|
+
sections: fromQuery(queries.sections),
|
|
63
|
+
values: fromQuery(queries.record, '0'),
|
|
64
|
+
...localeOfData
|
|
65
|
+
})
|
|
66
|
+
],
|
|
67
|
+
related: [
|
|
68
|
+
component('InventoryItemPage-stock', 'dataList', {
|
|
69
|
+
label: 'Stock by location',
|
|
70
|
+
rows: fromQuery(queries.stockByLocation),
|
|
71
|
+
columns: fromQuery('StockByLocationColumns'),
|
|
72
|
+
titleField: 'location',
|
|
73
|
+
pageSize: 5,
|
|
74
|
+
...localeOfData
|
|
75
|
+
}),
|
|
76
|
+
component('InventoryItemPage-movements', 'dataList', {
|
|
77
|
+
label: 'Movement history',
|
|
78
|
+
rows: fromQuery(queries.movements),
|
|
79
|
+
columns: fromQuery(inventoryQueriesOf(InventoryEntityKind.Movement).columns),
|
|
80
|
+
titleField: 'item',
|
|
81
|
+
pageSize: 5,
|
|
82
|
+
...localeOfData
|
|
83
|
+
})
|
|
84
|
+
],
|
|
85
|
+
activity: [
|
|
86
|
+
component('InventoryItemPage-activity', 'activityFeed', {
|
|
87
|
+
label: 'Activity',
|
|
88
|
+
entries: fromQuery(queries.activity),
|
|
89
|
+
...localeOfData
|
|
90
|
+
})
|
|
91
|
+
],
|
|
92
|
+
aside: [
|
|
93
|
+
component('InventoryItemPage-tasks', 'checklistSection', {
|
|
94
|
+
label: 'Cycle counts',
|
|
95
|
+
sections: fromQuery(queries.tasks),
|
|
96
|
+
...localeOfData
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
displayName: 'Inventory item page',
|
|
101
|
+
description: 'One item: key facts, its fields and supplier, its stock by location and its movement history.',
|
|
102
|
+
metadata: inventoryMetadata('InventoryItemPage', 'Detail', [
|
|
103
|
+
TemplateScope.Feature,
|
|
104
|
+
TemplateScope.Subfeature
|
|
105
|
+
])
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export { inventoryItemPageTemplate };
|
|
109
|
+
//# sourceMappingURL=recordTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recordTemplates.js","sources":["../../../templates/recordTemplates.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ScreenTemplate, TemplateScope } from '@cratis/scene.model';\nimport { recordPageTemplate } from '@cratis/scene.blueprint.default';\nimport { InventoryEntityKind, InventoryQuery, currencyOfData, fromQuery, inventoryQueriesOf, localeOfData } from '../inventoryQueries';\nimport { actionButton, component, goesTo, inventoryMetadata, opensDialog, withBehaviors } from '../inventoryParts';\n\nconst queries = inventoryQueriesOf(InventoryEntityKind.Item);\n\n/**\n * The item page: the foundation `RecordPage` with the item's name as its title, Adjust stock and Check out as its actions, its key facts under it, the record's\n * fields with the supplier's details, the stock of the item in each location and its movement history as related lists, and the cycle counts to do beside it.\n */\nexport const inventoryItemPageTemplate: ScreenTemplate = {\n name: 'InventoryItemPage',\n fitsSlot: 'content',\n slots: recordPageTemplate.slots,\n arrangement: recordPageTemplate.arrangement,\n content: {\n header: [component('InventoryItemPage-header', 'pageHeader', { title: fromQuery(queries.record, '0.name'), subtitle: 'Item' }, {\n actions: [\n withBehaviors(actionButton('InventoryItemPage-check', 'Check out', 'secondary'), goesTo('inventory.movements.check')),\n withBehaviors(actionButton('InventoryItemPage-adjust', 'Adjust stock', 'primary'), opensDialog('InventoryAdjustStock')),\n ],\n })],\n summary: [\n component('InventoryItemPage-status', 'statusChip', { status: fromQuery(queries.summary, '0.status'), tone: fromQuery(queries.summary, '0.tone') }),\n component('InventoryItemPage-onhand', 'statCard', { label: 'On hand', value: fromQuery(queries.summary, '0.onHand'), ...localeOfData }),\n component('InventoryItemPage-reorder', 'statCard', { label: 'Reorder level', value: fromQuery(queries.summary, '0.reorderLevel'), ...localeOfData }),\n component('InventoryItemPage-value', 'statCard', { label: 'Stock value', value: fromQuery(queries.summary, '0.stockValue'), format: 'currency', fractionDigits: 0, ...currencyOfData }),\n ],\n tabs: [component('InventoryItemPage-tabs', 'tabSet', { tabs: fromQuery(InventoryQuery.RecordTabs), urlKey: 'tab', label: 'Item sections' })],\n main: [component('InventoryItemPage-form', 'formScreenBody', { mode: 'readOnly', sections: fromQuery(queries.sections), values: fromQuery(queries.record, '0'), ...localeOfData })],\n related: [\n component('InventoryItemPage-stock', 'dataList', { label: 'Stock by location', rows: fromQuery(queries.stockByLocation), columns: fromQuery('StockByLocationColumns'), titleField: 'location', pageSize: 5, ...localeOfData }),\n component('InventoryItemPage-movements', 'dataList', { label: 'Movement history', rows: fromQuery(queries.movements), columns: fromQuery(inventoryQueriesOf(InventoryEntityKind.Movement).columns), titleField: 'item', pageSize: 5, ...localeOfData }),\n ],\n activity: [component('InventoryItemPage-activity', 'activityFeed', { label: 'Activity', entries: fromQuery(queries.activity), ...localeOfData })],\n aside: [component('InventoryItemPage-tasks', 'checklistSection', { label: 'Cycle counts', sections: fromQuery(queries.tasks), ...localeOfData })],\n },\n displayName: 'Inventory item page',\n description: 'One item: key facts, its fields and supplier, its stock by location and its movement history.',\n metadata: inventoryMetadata('InventoryItemPage', 'Detail', [TemplateScope.Feature, TemplateScope.Subfeature]),\n};\n"],"names":["queries","inventoryQueriesOf","InventoryEntityKind","Item","inventoryItemPageTemplate","name","fitsSlot","slots","recordPageTemplate","arrangement","content","header","component","title","fromQuery","record","subtitle","actions","withBehaviors","actionButton","goesTo","opensDialog","summary","status","tone","label","value","localeOfData","format","fractionDigits","currencyOfData","tabs","InventoryQuery","RecordTabs","urlKey","main","mode","sections","values","related","rows","stockByLocation","columns","titleField","pageSize","movements","Movement","activity","entries","aside","tasks","displayName","description","metadata","inventoryMetadata","TemplateScope","Feature","Subfeature"],"mappings":"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"}
|