sibprogrammer/owp

View on GitHub
app/views/layouts/_search.html.erb

Summary

Maintainability
Test Coverage
var storeSearch = new Ext.data.JsonStore({
  url: '<%= url_for :controller => 'admin/search' %>',
  root: 'data',
  fields: [
    { name: 'item' }
  ]
});

var searchGrid = new Ext.grid.GridPanel({
  id: 'searchGrid',
  hidden: true,
  hideMode: 'offsets',
  loadMask: true,
  hideHeaders: true,
  store: storeSearch,
  autoWidth: true,
  stripeRows: true,
  autoExpandColumn: 'item',
  height: 200,
  sm: new Ext.grid.RowSelectionModel({
    singleSelect: true
  }),
  cm: new Ext.grid.ColumnModel([{
    id: 'item',
    header: '<%= tjs('admin.virtual_servers.show.grid.column.parameter') %>',
    dataIndex: 'item'
  }])
});

var formSearch = new Owp.form.BasicForm({
  labelWidth: 100,
  waitMsgTarget: !Ext.isGecko,
  autoHeight: true,
  keys: [{
    key: Ext.EventObject.ENTER,
    fn: function() {
      windowSearch.submitButton.handler();
    }
  }],
  items: [
    {
      fieldLabel: '<%= tjs('admin.search.form.field.query') %>',
      xtype: 'textfield',
      name: 'query',
      allowBlank: false,
      anchor: '-20'
    },
    searchGrid
  ]
});  

var windowSearch = new Owp.form.BasicFormWindow({
  title: '<%= tjs('admin.search.form.title') %>',
  iconCls: 'icon-window-search',
  width: 600,
  autoHeight: true,
  modal: true,
  layout: 'fit',
  plain: true,
  bodyStyle: 'padding: 5px;',
  resizable: true,
  items: formSearch,
  closeAction: 'hide',
  listeners: {
    hide: function() {
      searchGrid.hide();
      windowSearch.syncSize();
    }
  },
  buttons: [{
    text: '<%= tjs('admin.search.form.button.search') %>',
    iconCls: 'icon-button-run',
    ref: '../submitButton',
    handler: function() {
      var queryString = formSearch.find('name', 'query')[0].getValue();
      
      if (queryString) {
        searchGrid.show();
        windowSearch.syncSize();
        storeSearch.load({
          params: { query: queryString }
        });
      }
    }
  }, {
    text: '<%= tjs('form.button.cancel') %>',
    iconCls: 'icon-button-cancel',
    handler: function() {
      windowSearch.hide();
    }
  }]
});