6f44e5026a4f7765509e2d7a1c775fa544b5c35a
[htsworkflow.git] / htsworkflow / frontend / static / js / htsw-inventory.js
1
2 var getInventoryDataGrid = function(){
3     
4     var Item = Ext.data.Record.create([
5        { name: 'uuid' },
6        { name: 'barcode_id'},
7        { name: 'model_id'},
8        { name: 'part_number'},
9        { name: 'lot_number'},
10        { name: 'vendor'},
11        { name: 'creation_date'/*, type: 'date', dateFormat: 'n/j h:ia'*/},
12        { name: 'modified_date'/*, type: 'date', dateFormat: 'n/j h:ia'*/},
13        { name: 'location'},
14        { name: 'status'},
15        { name: 'flowcells'},
16        { name: 'type'}
17     ]);
18     
19     var inventoryReader = new Ext.data.JsonReader(
20         {
21             totalProperty: "results",
22             root: "rows",
23             idProperty: "uuid"
24         },
25         Item
26     );
27     
28     /*
29     var inventoryStore = new Ext.data.JsonStore({
30        autoDestory: true,
31        url: '/inventory/data/items/',
32        storeId: 'item_store',
33        
34     });
35     */
36     
37     var grid = new Ext.grid.GridPanel({
38         store: new Ext.data.GroupingStore({
39             reader: inventoryReader,
40             url: '/inventory/data/items/',
41             storeId: 'item_group_store',
42             groupField: 'type',
43             sortInfo: { field: 'creation_date', direction: "DESC"},
44             autoLoad: true
45         }),
46     
47         columns: [
48             {id: 'uuid', header:"UUID", width: 32, sortable: true, dataIndex: 'uuid'},
49             {header: 'Barcode ID', width: 20, sortable: true, dataIndex: 'barcode_id'},
50             {header: 'Location', width: 20, sortable: true, dataIndex: 'location'},
51             {header: 'Model', width: 20, sortable: true, dataIndex: 'model_id'},
52             {header: 'Part #', width: 20, sortable: true, dataIndex: 'part_number', hidden: true},
53             {header: 'Lot #', width: 20, sortable: true, dataIndex: 'lot_number', hidden: true},
54             {header: 'Vendor', width: 20, sortable: true, dataIndex: 'vendor'},
55             {header: 'Creation Date', width: 20, sortable: true, dataIndex: 'creation_date'/*, renderer: Ext.util.Format.dateRenderer('Y/m/d')*/},
56             {header: 'Modified Date', width: 20, sortable: true, dataIndex: 'modified_date', hidden: true/*, renderer: Ext.util.Format.dateRenderer('Y/m/d')*/},
57             {header: 'Status', width: 20, sortable: true, dataIndex: 'status', hidden: true},
58             {header: 'Stored Flowcells', width: 20, sortable: true, dataIndex: 'flowcells'},
59             {header: 'Type', width: 20, sortable: true, dataIndex: 'type', hidden: true}
60         ],
61         
62         view: new Ext.grid.GroupingView({
63            forceFit: true,
64            groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
65         }),
66         
67         frame: true,
68         width: 'auto',
69         //height: 500,
70         //autoHeight: true,
71         collapsible: false,
72         title: "Inventory Index",
73         iconCls: 'icon-grid',
74         id: 'inventory_item_panel',
75         stateId: 'inventory_item_panel_state',
76         stateful: true,
77         //renderTo: 'grid_target'
78     });
79     
80     return grid;
81 }