diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-04-06 15:58:37 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-04-06 15:58:37 +0200 |
| commit | 51bebb2cfe70d5a98aa13178c733aa18b3529fdd (patch) | |
| tree | 84e0c04943dc49d2790588fb6902ae6b238a4810 /addons/base/static/src | |
| parent | f600eceb314ee4325d78c83d5ac9c870186fd5be (diff) | |
[REM] rip off jqgrid, start reimplementing manually
bzr revid: xmo@openerp.com-20110406135837-6rsuhiozd4af2qji
Diffstat (limited to 'addons/base/static/src')
| -rw-r--r-- | addons/base/static/src/base.html | 2 | ||||
| -rw-r--r-- | addons/base/static/src/js/form.js | 2 | ||||
| -rw-r--r-- | addons/base/static/src/js/list.js | 64 | ||||
| -rw-r--r-- | addons/base/static/src/js/search.js | 10 | ||||
| -rw-r--r-- | addons/base/static/src/xml/base.xml | 43 |
5 files changed, 65 insertions, 56 deletions
diff --git a/addons/base/static/src/base.html b/addons/base/static/src/base.html index 4c0cda0cdd3..00a147b1bd7 100644 --- a/addons/base/static/src/base.html +++ b/addons/base/static/src/base.html @@ -12,7 +12,6 @@ <script type="text/javascript" src="/base/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js"></script> <script type="text/javascript" src="/base/static/lib/jquery.ui/js/jquery-ui-timepicker-addon.js"></script> <script type="text/javascript" src="/base/static/lib/jquery.ui.notify/js/jquery.notify.js"></script> - <script type="text/javascript" src="/base/static/lib/jquery.jqGrid/jquery.jqGrid.js"></script> <script type="text/javascript" src="/base/static/lib/jquery.superfish/js/hoverIntent.js"></script> <script type="text/javascript" src="/base/static/lib/jquery.superfish/js/superfish.js"></script> <script type="text/javascript" src="/base/static/src/js/base.js"></script> @@ -25,7 +24,6 @@ <link rel="stylesheet" type="text/css" media="screen" href="/base/static/lib/jquery.ui/css/smoothness/jquery-ui-1.8.9.custom.css" /> <link rel="stylesheet" type="text/css" media="screen" href="/base/static/lib/jquery.ui.notify/css/ui.notify.css" /> - <link rel="stylesheet" type="text/css" media="screen" href="/base/static/lib/jquery.jqGrid/css/ui.jqgrid.css" /> <link rel="stylesheet" type="text/css" href="/base/static/lib/jquery.superfish/css/superfish.css" media="screen"> <link rel="stylesheet" href="/base/static/src/css/base.css" type="text/css"/> diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 85cf0bc7f43..e8251a43e5e 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -644,7 +644,7 @@ openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({ start: function() { this._super.apply(this, arguments); this.log("o2m.start"); - var action = { res_model: this.field.relation, views: [ [false,"list"], ], }; + var action = { res_model: this.field.relation, views: [ [false,"list"] ], }; this.viewmanager = new openerp.base.ViewManagerAction(this.view.session, this.element_id, action); }, set_value: function(value) { diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 273f71ed82d..e4ae1abb464 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -9,18 +9,9 @@ openerp.base.ListView = openerp.base.Controller.extend({ this.dataset = dataset; this.model = dataset.model; this.view_id = view_id; - this.name = ""; - // TODO: default to action.limit - // TODO: decide if limit is a property of DataSet and thus global to all views (calendar ?) - this.limit = 80; - this.cols = []; - - this.$table = null; - this.colnames = []; - this.colmodel = []; - - this.event_loading = false; // TODO in the future prevent abusive click by masking + this.columns = []; + this.rows = []; }, start: function() { //this.log('Starting ListView '+this.model+this.view_id) @@ -30,51 +21,26 @@ openerp.base.ListView = openerp.base.Controller.extend({ this.fields_view = data.fields_view; //this.log(this.fields_view); this.name = "" + this.fields_view.arch.attrs.string; - this.$element.html(QWeb.render("ListView", {"fields_view": this.fields_view})); - this.$table = this.$element.find("table"); - this.cols = []; - this.colnames = []; - this.colmodel = []; - // TODO uss a object for each col, fill it with view and fallback to dataset.model_field - var tree = this.fields_view.arch.children; - for(var i = 0; i < tree.length; i++) { - var col = tree[i]; - if(col.tag == "field") { - this.cols.push(col.attrs.name); - this.colnames.push(col.attrs.name); - this.colmodel.push({ name: col.attrs.name, index: col.attrs.name }); - } - } - this.dataset.fields = this.cols; - var width = this.$element.width(); - this.$table.jqGrid({ - datatype: "local", - height: "100%", - rowNum: 100, - //rowList: [10,20,30], - colNames: this.colnames, - colModel: this.colmodel, - //pager: "#plist47", - viewrecords: true, - caption: this.name - }).setGridWidth(width); + var fields = this.fields_view.fields; + this.columns = _(this.fields_view.arch.children).chain() + .map(function (field) { + var name = field.attrs.name; + return _.extend({id: name, tag: field.tag}, field.attrs, fields[name]); + }).value(); + + this.$element.html(QWeb.render("ListView", this)); - var self = this; - $(window).bind('resize', function() { - self.$element.children().hide(); - self.$table.setGridWidth(self.$element.width()); - self.$element.children().show(); - }).trigger('resize'); - // sidebar stuff if (this.view_manager.sidebar) this.view_manager.sidebar.load_multi_actions(); }, do_fill_table: function(records) { - this.$table - .clearGridData() - .addRowData('id', records); + this.rows = records; + + var table = this.$element.find('table'); + table.append(QWeb.render("ListView.rows", { + columns: this.columns, rows: this.rows})); }, do_show: function () { // TODO: re-trigger search diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index 3d3bb016a82..63256f7da11 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -12,6 +12,8 @@ openerp.base.SearchView = openerp.base.Controller.extend({ this.inputs = []; this.enabled_filters = []; + + this.has_focus = false; }, start: function() { //this.log('Starting SearchView '+this.model+this.view_id) @@ -47,6 +49,10 @@ openerp.base.SearchView = openerp.base.Controller.extend({ row = []; rows.push(row); } else if (item.tag === 'filter') { + if (!this.has_focus) { + item.attrs.default_focus = '1'; + this.has_focus = true; + } filters.push( new openerp.base.search.Filter( item, this)); @@ -59,6 +65,10 @@ openerp.base.SearchView = openerp.base.Controller.extend({ new openerp.base.search.Group( item, this, fields)); } else if (item.tag === 'field') { + if (!this.has_focus) { + item.attrs.default_focus = '1'; + this.has_focus = true; + } row.push( this.make_field( item, fields[item['attrs'].name])); diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 47913f8cb55..2e5ac44d0fa 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -165,8 +165,39 @@ <button type="button" data-pager-action="next">>></button> <button type="button" data-pager-action="last">Last</button> </div> - <table id="todo_use_unique_id" class="jqGrid"></table> + <table> + <tr><t t-call="ListView.header"/></tr> + </table> </t> +<t t-name="ListView.header"> + <t t-foreach="columns" t-as="column"> + <th t-if="column.invisible !== '1'"> + <t t-if="column.tag !== 'button'"> + <t t-esc="column.string"/> + </t> + </th> + </t> +</t> +<t t-name="ListView.rows" t-foreach="rows" t-as="row"> + <t t-call="ListView.row"/> +</t> +<tr t-name="ListView.row"> + <t t-foreach="columns" t-as="column"> + <!-- TODO: handle attrs --> + <td t-if="column.invisible !== '1'" t-att-title="column.help"> + <t t-set="is_button" t-value="column.tag === 'button'"/> + <!-- TODO: get correct widget from form --> + <t t-if="!is_button and row[column.id]"> + <t t-esc="row[column.id]"/> + </t> + <button type="button" t-att-title="column.help" + t-if="is_button"> + <img t-att-src="'/base/static/src/img/icons/' + column.icon + '.png'" + t-att-alt="column.string"/> + </button> + </td> + </t> +</tr> <t t-name="FormView"> <h2 class="oe_view_title"><t t-esc="view.fields_view.arch.attrs.string"/></h2> <div class="oe_form_header"> @@ -320,7 +351,8 @@ <button t-name="SearchView.filter" type="button" t-att-id="element_id" t-att-title="attrs.help" - t-att-class="classes.join(' ')"> + t-att-class="classes.join(' ')" + t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"> <img t-if="attrs.icon" t-att-src="'/base/static/src/img/icons/' + attrs.icon + '.png'" width="16" height="16"/> <br t-if="attrs.icon and attrs.string"/> <t t-esc="attrs.string"/> @@ -337,6 +369,7 @@ </label> <div style="white-space: nowrap;"> <input type="text" t-att-name="attrs.name" + t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined" t-att-id="element_id" t-att-value="defaults[attrs.name] || ''"/> <t t-if="filters.length" t-raw="filters.render(defaults)"/> @@ -350,7 +383,8 @@ </label> <div style="white-space: nowrap;" t-att-id="element_id"> <input t-att-name="attrs.name" type="text" class="field_date" - t-att-value="defaults[attrs.name] || ''"/> + t-att-value="defaults[attrs.name] || ''" + t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"/> to <input t-att-name="attrs.name" type="text" class="field_date" t-att-value="defaults[attrs.name] || ''"/> @@ -364,7 +398,8 @@ <span t-if="attrs.help">(?)</span> </label> <div style="white-space: nowrap;"> - <select t-att-name="attrs.name" t-att-id="element_id"> + <select t-att-name="attrs.name" t-att-id="element_id" + t-att-autofocus="attrs.default_focus === '1' || undefined"> <option/> <t t-foreach="attrs.selection" t-as="option"> <t t-set="selected" t-value="defaults[attrs.name] === option[0]"/> |
