9d90c42c66af2712859f43b241700b05fe96c275
[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     gridConfig: {
30         autoExpandColumn: 'name'
31     },
32     
33     /**
34      * initComponent
35      */
36     initComponent: function() {
37         this.gridConfig.cm = this.getColumnModel();
38         Tine.Admin.customfield.GridPanel.superclass.initComponent.call(this);
39     },
40     
41     /**
42      * returns column model
43      * 
44      * @return Ext.grid.ColumnModel
45      * @private
46      */
47     getColumnModel: function() {
48         return new Ext.grid.ColumnModel({
49             defaults: {
50                 sortable: true,
51                 hidden: true,
52                 resizable: true
53             },
54             columns: this.getColumns()
55         });
56     },
57     
58     /**
59      * returns columns
60      * @private
61      * @return Array
62      */
63     getColumns: function(){
64         return [
65             { header: this.app.i18n._('ID'), id: 'id', dataIndex: 'id', width: 50},
66             { header: this.app.i18n._('Label'), id: 'label', dataIndex: 'definition', hidden: false, width: 100, renderer: this.labelRenderer.createDelegate(this)},
67             { header: this.app.i18n._('Name'), id: 'name', dataIndex: 'name', hidden: false, width: 75},
68             { header: this.app.i18n._('Type'), id: 'xtype', dataIndex: 'definition', hidden: false, width: 75, renderer: this.typeRenderer.createDelegate(this)},
69             { header: this.app.i18n._('Application'), id: 'application_id', dataIndex: 'application_id', hidden: false, width: 100, renderer: this.appRenderer.createDelegate(this)},
70             { header: this.app.i18n._('Model'), id: 'model', dataIndex: 'model', hidden: false, width: 100}
71         ];
72     },
73     
74     /**
75      * returns label name
76      * 
77      * @param {Object} value
78      * @return {String}
79      */
80     labelRenderer: function(value) {
81         return this.app.i18n._(value.label);
82     },
83     
84     /**
85      * returns type name
86      * 
87      * @param {Object} value
88      * @return {String}
89      */
90     typeRenderer: function(value) {
91         return this.app.i18n._(value.type);
92     },
93     
94     /**
95      * returns application name
96      * 
97      * @param {Object} value
98      * @return {String}
99      */
100     appRenderer: function(value) {
101         return this.app.i18n._(value.name);
102     },
103        
104     /**
105      * initialises filter toolbar
106      */
107     initFilterPanel: function() {
108         this.filterToolbar = new Tine.widgets.grid.FilterToolbar({
109             filterModels: [
110                 {label: this.app.i18n._('Customfield'),       field: 'query',    operators: ['contains']},
111                 {filtertype: 'admin.application', app: this.app}
112             ],
113             defaultFilter: 'query',
114             filters: [
115             ],
116             plugins: [
117                 new Tine.widgets.grid.FilterToolbarQuickFilterPlugin()
118             ]
119         });
120         this.plugins = this.plugins || [];
121         this.plugins.push(this.filterToolbar);
122     },
123     
124     /**
125      * on update after edit
126      * 
127      * @param {String|Tine.Tinebase.data.Record} record
128      */
129     onUpdateRecord: function (record) {
130         Tine.Admin.customfield.GridPanel.superclass.onUpdateRecord.apply(this, arguments);
131         
132         Tine.Tinebase.common.confirmApplicationRestart();
133     },
134     
135     /**
136      * do something after deletion of records
137      * - reload the store
138      * 
139      * @param {Array} [ids]
140      */
141     onAfterDelete: function (ids) {
142         Tine.Admin.customfield.GridPanel.superclass.onAfterDelete.apply(this, arguments);
143         
144         Tine.Tinebase.common.confirmApplicationRestart();
145     }
146 });