c70384f9fd9ecb07fb0ae5e0e288b70eac9e2398
[tine20] / tine20 / Inventory / js / Model.js
1 /*
2  * Tine 2.0
3  * 
4  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
5  * @author      Cornelius Weiss <c.weiss@metaways.de>
6  * @copyright   Copyright (c) 2007-2011 Metaways Infosystems GmbH (http://www.metaways.de)
7  */
8 Ext.ns('Tine.Inventory.Model');
9
10 /**
11  * @namespace   Tine.Inventory.Model
12  * @class       Tine.Inventory.Model.InventoryItem
13  * @extends     Tine.Tinebase.data.Record
14  * inventory record definition
15  * 
16  * @author      Cornelius Weiss <c.weiss@metaways.de>
17  */
18 Tine.Inventory.Model.InventoryItem = Tine.Tinebase.data.Record.create(Tine.Tinebase.Model.genericFields.concat([
19     { name: 'id' },
20     { name: 'name' },
21     { name: 'type' },
22     { name: 'inventory_id' },
23     { name: 'location' },
24     { name: 'description' },
25     { name: 'add_time' },
26     { name: 'total_number' },
27     { name: 'active_number' },
28     // TODO add more record fields here
29     // tine 2.0 notes + tags
30     { name: 'notes'},
31     { name: 'tags' }
32 ]), {
33     appName: 'Inventory',
34     modelName: 'InventoryItem',
35     idProperty: 'id',
36     titleProperty: 'title',
37     // ngettext('inventory item', 'inventory records', n);
38     recordName: 'inventory item',
39     recordsName: 'inventory items',
40     containerProperty: 'container_id',
41     // ngettext('inventory record list', 'inventory record lists', n);
42     containerName: 'inventory item list',
43     containersName: 'inventory item lists'
44 });
45
46 /**
47  * @namespace Tine.Inventory.Model
48  * 
49  * get default data for a new record
50  *  
51  * @return {Object} default data
52  * @static
53  */ 
54 Tine.Inventory.Model.InventoryItem.getDefaultData = function() { 
55     var app = Tine.Tinebase.appMgr.get('Inventory');
56     var defaultsContainer = Tine.Inventory.registry.get('defaultContainer');
57     
58     return {
59         container_id: app.getMainScreen().getWestPanel().getContainerTreePanel().getDefaultContainer()
60         // [...] add more defaults
61     };
62 };
63
64 /**
65  * get filtermodel of record
66  * 
67  * @namespace Tine.Inventory.Model
68  * @static
69  * @return {Object} filterModel definition
70  */ 
71 Tine.Inventory.Model.InventoryItem.getFilterModel = function() {
72     var app = Tine.Tinebase.appMgr.get('Inventory');
73     
74     return [
75         {label: _('Quick search'),    field: 'query',       operators: ['contains']},
76         {
77             label: app.i18n._('Type'),
78             field: 'type',
79             filtertype: 'tine.widget.keyfield.filter', 
80             app: app, 
81             keyfieldName: 'inventoryType'
82         },
83         {filtertype: 'tinebase.tag', app: app},
84         {filtertype: 'tine.widget.container.filtermodel', app: app, recordClass: Tine.Inventory.Model.InventoryItem},
85         {label: app.i18n._('Last modified'),                                            field: 'last_modified_time', valueType: 'date'},
86         {label: app.i18n._('Last modifier'),                                            field: 'last_modified_by',   valueType: 'user'},
87         {label: app.i18n._('Creation Time'),                                            field: 'creation_time',      valueType: 'date'},
88         {label: app.i18n._('Creator'),                                                  field: 'created_by',         valueType: 'user'}
89     ];
90 };
91
92 /**
93  * default InventoryItem backend
94  */
95 Tine.Inventory.recordBackend = new Tine.Tinebase.data.RecordProxy({
96     appName: 'Inventory',
97     modelName: 'InventoryItem',
98     recordClass: Tine.Inventory.Model.InventoryItem
99 });