558662227a045d64d1823515676cd47c73622a0a
[tine20] / tine20 / Admin / js / customfield / GridPanel.js
1 /*
2  * Tine 2.0
3  * 
4  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
5  * @author      Philipp Schüle <p.schuele@metaways.de>
6  * @copyright   Copyright (c) 2011 Metaways Infosystems GmbH (http://www.metaways.de)
7  *
8  */
9 Ext.ns('Tine.Admin.customfield');
10
11
12 /**
13  * Customfield grid panel
14  * 
15  * @namespace   Tine.Admin.customfield
16  * @class       Tine.Admin.customfield.GridPanel
17  * @extends     Tine.widgets.grid.GridPanel
18  */
19 Tine.Admin.customfield.GridPanel = Ext.extend(Tine.widgets.grid.GridPanel, {
20     
21     /**
22      * @cfg
23      */
24     newRecordIcon: 'admin-action-add-customfield',
25     recordClass: Tine.Admin.Model.Customfield,
26     recordProxy: Tine.Admin.customfieldBackend,
27     defaultSortInfo: {field: 'name', direction: 'ASC'},
28     evalGrants: false,
29     copyEditAction: true,
30     gridConfig: {
31         autoExpandColumn: 'name'
32     },
33     
34     /**
35      * initComponent
36      */
37     initComponent: function() {
38         this.gridConfig.cm = this.getColumnModel();
39         Tine.Admin.customfield.GridPanel.superclass.initComponent.call(this);
40     },
41     
42     /**
43      * returns column model
44      * 
45      * @return Ext.grid.ColumnModel
46      * @private
47      */
48     getColumnModel: function() {
49         return new Ext.grid.ColumnModel({
50             defaults: {
51                 sortable: true,
52                 hidden: true,
53                 resizable: true
54             },
55             columns: this.getColumns()
56         });
57     },
58     
59     /**
60      * returns columns
61      * @private
62      * @return Array
63      */
64     getColumns: function(){
65         return [
66             { header: this.app.i18n._('ID'), id: 'id', dataIndex: 'id', width: 50},
67             { header: this.app.i18n._('Label'), id: 'label', dataIndex: 'definition', hidden: false, width: 100, renderer: this.labelRenderer.createDelegate(this)},
68             { header: this.app.i18n._('Name'), id: 'name', dataIndex: 'name', hidden: false, width: 75},
69             { header: this.app.i18n._('Type'), id: 'xtype', dataIndex: 'definition', hidden: false, width: 75, renderer: this.typeRenderer.createDelegate(this)},
70             { header: this.app.i18n._('Application'), id: 'application_id', dataIndex: 'application_id', hidden: false, width: 100, renderer: this.appRenderer.createDelegate(this)},
71             { header: this.app.i18n._('Model'), id: 'model', dataIndex: 'model', hidden: false, width: 100}
72         ];
73     },
74     
75     /**
76      * returns label name
77      * 
78      * @param {Object} value
79      * @return {String}
80      */
81     labelRenderer: function(value) {
82         return this.app.i18n._(value.label);
83     },
84     
85     /**
86      * returns type name
87      * 
88      * @param {Object} value
89      * @return {String}
90      */
91     typeRenderer: function(value) {
92         return this.app.i18n._(value.type);
93     },
94     
95     /**
96      * returns application name
97      * 
98      * @param {Object} value
99      * @return {String}
100      */
101     appRenderer: function(value) {
102         return this.app.i18n._(value.name);
103     },
104        
105     /**
106      * initialises filter toolbar
107      */
108     initFilterPanel: function() {
109         this.filterToolbar = new Tine.widgets.grid.FilterToolbar({
110             filterModels: [
111                 {label: this.app.i18n._('Customfield'),       field: 'query',    operators: ['contains']},
112                 {filtertype: 'admin.application', app: this.app}
113             ],
114             defaultFilter: 'query',
115             filters: [
116             ],
117             plugins: [
118                 new Tine.widgets.grid.FilterToolbarQuickFilterPlugin()
119             ]
120         });
121         this.plugins = this.plugins || [];
122         this.plugins.push(this.filterToolbar);
123     },
124     
125     /**
126      * on update after edit
127      * 
128      * @param {String|Tine.Tinebase.data.Record} record
129      */
130     onUpdateRecord: function (record) {
131         Tine.Admin.customfield.GridPanel.superclass.onUpdateRecord.apply(this, arguments);
132         
133         Tine.Tinebase.common.confirmApplicationRestart();
134     },
135     
136     /**
137      * do something after deletion of records
138      * - reload the store
139      * 
140      * @param {Array} [ids]
141      */
142     onAfterDelete: function (ids) {
143         Tine.Admin.customfield.GridPanel.superclass.onAfterDelete.apply(this, arguments);
144         
145         Tine.Tinebase.common.confirmApplicationRestart();
146     }
147 });