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