changes
[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', type: 'date', dateFormat: Date.patterns.ISO8601Long},
26     { name: 'total_number', type: 'integer'},
27     { name: 'active_number', type: 'integer' },
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         {label: _('Name'),    field: 'name',       operators: ['contains']},
77         {
78             label: app.i18n._('Type'),
79             field: 'type',
80             filtertype: 'tine.widget.keyfield.filter', 
81             app: app, 
82             keyfieldName: 'inventoryType'
83         },
84         {label: _('ID'),    field: 'inventory_id',       operators: ['contains']},
85         {label: _('Location'),    field: 'location',       operators: ['contains']},
86         {label: app.i18n._('Added'),         field: 'add_time', valueType: 'date', pastOnly: true},
87         {filtertype: 'tinebase.tag', app: app},
88         {filtertype: 'tine.widget.container.filtermodel', app: app, recordClass: Tine.Inventory.Model.InventoryItem},
89         {label: app.i18n._('Last modified'),                                            field: 'last_modified_time', valueType: 'date'},
90         {label: app.i18n._('Last modifier'),                                            field: 'last_modified_by',   valueType: 'user'},
91         {label: app.i18n._('Creation Time'),                                            field: 'creation_time',      valueType: 'date'},
92         {label: app.i18n._('Creator'),                                                  field: 'created_by',         valueType: 'user'}
93     ];
94 };
95
96 /**
97  * default InventoryItem backend
98  */
99 Tine.Inventory.recordBackend = new Tine.Tinebase.data.RecordProxy({
100     appName: 'Inventory',
101     modelName: 'InventoryItem',
102     recordClass: Tine.Inventory.Model.InventoryItem
103 });