Feature.html
6.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The source code</title>
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
<style type="text/css">
.highlight { display: block; background-color: #ddd; }
</style>
<script type="text/javascript">
function highlight() {
document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
}
</script>
</head>
<body onload="prettyPrint(); highlight();">
<pre class="prettyprint lang-js"><span id='Ext-grid-feature-Feature'>/**
</span> * A feature is a type of plugin that is specific to the {@link Ext.grid.Panel}. It provides several
* hooks that allows the developer to inject additional functionality at certain points throughout the
* grid creation cycle. This class provides the base template methods that are available to the developer,
* it should be extended.
*
* There are several built in features that extend this class, for example:
*
* - {@link Ext.grid.feature.Grouping} - Shows grid rows in groups as specified by the {@link Ext.data.Store}
* - {@link Ext.grid.feature.RowBody} - Adds a body section for each grid row that can contain markup.
* - {@link Ext.grid.feature.Summary} - Adds a summary row at the bottom of the grid with aggregate totals for a column.
*
* ## Using Features
* A feature is added to the grid by specifying it an array of features in the configuration:
*
* var groupingFeature = Ext.create('Ext.grid.feature.Grouping');
* Ext.create('Ext.grid.Panel', {
* // other options
* features: [groupingFeature]
* });
*
* @abstract
*/
Ext.define('Ext.grid.feature.Feature', {
extend: 'Ext.util.Observable',
alias: 'feature.feature',
/*
* @property {Boolean} isFeature
* `true` in this class to identify an object as an instantiated Feature, or subclass thereof.
*/
isFeature: true,
<span id='Ext-grid-feature-Feature-property-disabled'> /**
</span> * True when feature is disabled.
*/
disabled: false,
<span id='Ext-grid-feature-Feature-property-hasFeatureEvent'> /**
</span> * @property {Boolean}
* Most features will expose additional events, some may not and will
* need to change this to false.
*/
hasFeatureEvent: true,
<span id='Ext-grid-feature-Feature-property-eventPrefix'> /**
</span> * @property {String}
* Prefix to use when firing events on the view.
* For example a prefix of group would expose "groupclick", "groupcontextmenu", "groupdblclick".
*/
eventPrefix: null,
<span id='Ext-grid-feature-Feature-property-eventSelector'> /**
</span> * @property {String}
* Selector used to determine when to fire the event with the eventPrefix.
*/
eventSelector: null,
<span id='Ext-grid-feature-Feature-property-view'> /**
</span> * @property {Ext.view.Table}
* Reference to the TableView.
*/
view: null,
<span id='Ext-grid-feature-Feature-property-grid'> /**
</span> * @property {Ext.grid.Panel}
* Reference to the grid panel
*/
grid: null,
<span id='Ext-grid-feature-Feature-property-collectData'> /**
</span> * Most features will not modify the data returned to the view.
* This is limited to one feature that manipulates the data per grid view.
*/
collectData: false,
constructor: function(config) {
this.initialConfig = config;
this.callParent(arguments);
},
clone: function() {
return new this.self(this.initialConfig);
},
init: Ext.emptyFn,
getFeatureTpl: function() {
return '';
},
<span id='Ext-grid-feature-Feature-method-getFireEventArgs'> /**
</span> * Abstract method to be overriden when a feature should add additional
* arguments to its event signature. By default the event will fire:
*
* - view - The underlying Ext.view.Table
* - featureTarget - The matched element by the defined {@link #eventSelector}
*
* The method must also return the eventName as the first index of the array
* to be passed to fireEvent.
* @template
*/
getFireEventArgs: function(eventName, view, featureTarget, e) {
return [eventName, view, featureTarget, e];
},
<span id='Ext-grid-feature-Feature-method-attachEvents'> /**
</span> * Approriate place to attach events to the view, selectionmodel, headerCt, etc
* @template
*/
attachEvents: function() {
},
getFragmentTpl: Ext.emptyFn,
<span id='Ext-grid-feature-Feature-method-mutateMetaRowTpl'> /**
</span> * Allows a feature to mutate the metaRowTpl.
* The array received as a single argument can be manipulated to add things
* on the end/begining of a particular row.
* @param {Array} metaRowTplArray A String array to be used constructing an {@link Ext.XTemplate XTemplate}
* to render the rows. This Array may be changed to provide extra DOM structure.
* @template
*/
mutateMetaRowTpl: Ext.emptyFn,
<span id='Ext-grid-feature-Feature-method-getMetaRowTplFragments'> /**
</span> * Allows a feature to inject member methods into the metaRowTpl. This is
* important for embedding functionality which will become part of the proper
* row tpl.
* @template
*/
getMetaRowTplFragments: function() {
return {};
},
getTableFragments: function() {
return {};
},
<span id='Ext-grid-feature-Feature-method-getAdditionalData'> /**
</span> * Provide additional data to the prepareData call within the grid view.
* @param {Object} data The data for this particular record.
* @param {Number} idx The row index for this record.
* @param {Ext.data.Model} record The record instance
* @param {Object} orig The original result from the prepareData call to massage.
* @template
*/
getAdditionalData: function(data, idx, record, orig) {
return {};
},
<span id='Ext-grid-feature-Feature-method-enable'> /**
</span> * Enables the feature.
*/
enable: function() {
this.disabled = false;
},
<span id='Ext-grid-feature-Feature-method-disable'> /**
</span> * Disables the feature.
*/
disable: function() {
this.disabled = true;
}
});</pre>
</body>
</html>