Blame view

WebRoot/plugins/websocketInstantMsg/ext4/ux/PreviewPlugin.js 1.95 KB
ad5081d3   孙向锦   初始化项目
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
  /**
   * @class Ext.ux.PreviewPlugin
   * @extends Ext.AbstractPlugin
   *
   * The Preview enables you to show a configurable preview of a record.
   *
   * This plugin assumes that it has control over the features used for this
   * particular grid section and may conflict with other plugins.
   * 
   * @alias plugin.preview
   * @ptype preview
   */
  Ext.define('Ext.ux.PreviewPlugin', {
      extend: 'Ext.AbstractPlugin',
      alias: 'plugin.preview',
      requires: ['Ext.grid.feature.RowBody', 'Ext.grid.feature.RowWrap'],
      
      // private, css class to use to hide the body
      hideBodyCls: 'x-grid-row-body-hidden',
      
      /**
       * @cfg {String} bodyField
       * Field to display in the preview. Must me a field within the Model definition
       * that the store is using.
       */
      bodyField: '',
      
      /**
       * @cfg {Boolean} previewExpanded
       */
      previewExpanded: true,
      
      constructor: function(config) {
          this.callParent(arguments);
          var bodyField   = this.bodyField,
              hideBodyCls = this.hideBodyCls,
              section     = this.getCmp();
          
          section.previewExpanded = this.previewExpanded;
          section.features = [{
              ftype: 'rowbody',
              getAdditionalData: function(data, idx, record, orig, view) {
                  var o = Ext.grid.feature.RowBody.prototype.getAdditionalData.apply(this, arguments);
                  Ext.apply(o, {
                      rowBody: data[bodyField],
                      rowBodyCls: section.previewExpanded ? '' : hideBodyCls
                  });
                  return o;
              }
          },{
              ftype: 'rowwrap'
          }];
      },
      
      /**
       * Toggle between the preview being expanded/hidden
       * @param {Boolean} expanded Pass true to expand the record and false to not show the preview.
       */
      toggleExpanded: function(expanded) {
          var view = this.getCmp();
          this.previewExpanded = view.previewExpanded = expanded;
          view.refresh();
      }
  });