summaryrefslogtreecommitdiff
path: root/addons/base/static/src
diff options
context:
space:
mode:
authorsma (Tiny) <sma@tinyerp.com>2011-04-27 17:50:51 +0530
committersma (Tiny) <sma@tinyerp.com>2011-04-27 17:50:51 +0530
commit5060d7111c0c08abd77b69c19a3777f0e3088abf (patch)
tree31556077b382a3ea5665b5cec4c824611672599f /addons/base/static/src
parentceb524e3376d92dde25e68dd7d74b6de0a5c8a6d (diff)
[IMP] Implement many2one initiall work.
bzr revid: sma@tinyerp.com-20110427122051-h80fka7fqjz0fcpz
Diffstat (limited to 'addons/base/static/src')
-rw-r--r--addons/base/static/src/base.html1
-rw-r--r--addons/base/static/src/css/base.css59
-rw-r--r--addons/base/static/src/js/base.js1
-rw-r--r--addons/base/static/src/js/data.js10
-rw-r--r--addons/base/static/src/js/form.js16
-rw-r--r--addons/base/static/src/xml/base.xml5
6 files changed, 91 insertions, 1 deletions
diff --git a/addons/base/static/src/base.html b/addons/base/static/src/base.html
index 83fbfcecefc..8d18b2f14ca 100644
--- a/addons/base/static/src/base.html
+++ b/addons/base/static/src/base.html
@@ -23,6 +23,7 @@
<script type="text/javascript" src="/base/static/src/js/list.js"></script>
<script type="text/javascript" src="/base/static/src/js/search.js"></script>
<script type="text/javascript" src="/base/static/src/js/views.js"></script>
+ <script type="text/javascript" src="/base/static/src/js/m2o.js"></script>
<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" />
diff --git a/addons/base/static/src/css/base.css b/addons/base/static/src/css/base.css
index 1bd004b53f6..dc16c772785 100644
--- a/addons/base/static/src/css/base.css
+++ b/addons/base/static/src/css/base.css
@@ -779,3 +779,62 @@ body.openerp {
background: url(http://placekitten.com/g/212/100) repeat;
}
+/* Many2one Autosearch */
+
+.openerp .combo_img {
+ position: absolute;
+ margin-left: -19px;
+ margin-top: 3px;
+}
+
+.openerp .autoTextResults {
+ position: absolute;
+ z-index: 1000;
+ background-color: #fff;
+ border: 1px solid #333;
+ display: none;
+ padding: 0 2px 0 2px;
+ min-width: 132px;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ color: #1F1F1F;
+ overflow: auto;
+}
+
+.openerp table.autoTextTable {
+ border: none;
+ font-family: arial, sans-serif;
+ font-size: 13px;
+ font-style: normal;
+ font-variant: normal;
+ font-weight: normal;
+ width: 100%;
+}
+
+.openerp table.autoTextTable tr.autoTextNormalRow td {
+}
+
+.openerp table.autoTextTable tr.autoTextSelectedRow td {
+ background-color: DarkGray;
+ color: #1F1F1F;
+ cursor: pointer;
+}
+
+.openerp table.autoTextTable ul{
+ list-style-image:none;
+ list-style-type:none;
+}
+
+.openerp table.autoTextTable td a.autoTextHighlight {
+ font-weight: bold;
+ text-decoration: none;
+ color: #FFF;
+}
+
+.openerp table.autoTextTable td.autoTextHidden {
+ display: none;
+}
+
+/* ------------- End autocomplete ------- */
+
diff --git a/addons/base/static/src/js/base.js b/addons/base/static/src/js/base.js
index 504f5ca744d..615b2c8e889 100644
--- a/addons/base/static/src/js/base.js
+++ b/addons/base/static/src/js/base.js
@@ -125,6 +125,7 @@ openerp.base = function(instance) {
openerp.base.views(instance);
openerp.base.search(instance);
openerp.base.list(instance);
+ openerp.base.m2o(instance);
openerp.base.form(instance);
};
diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index a29f320b79c..79482f33430 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -118,6 +118,16 @@ openerp.base.DataSet = openerp.base.Controller.extend( /** @lends openerp.base.
ids: ids,
args: args
}, callback);
+
+ },
+ name_search: function (search_str, callback) {
+ search_str = search_str || '';
+ return this.rpc('/base/dataset/name_search', {
+ model: this.model,
+ search_str: search_str,
+ domain: this.domain || [],
+ context: this.context
+ }, callback);
},
exec_workflow: function (id, signal, callback) {
return this.rpc('/base/dataset/exec_workflow', {
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index 84d7fe0babd..9a5e092b142 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -824,10 +824,24 @@ openerp.base.form.FieldSelection = openerp.base.form.Field.extend({
}
});
+openerp.base.form.FieldMany2OneDatasSet = openerp.base.DataSetStatic.extend({
+ start: function() {
+ },
+ write: function (id, data, callback) {
+ this._super(id, data, callback);
+ },
+});
+
openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
init: function(view, node) {
this._super(view, node);
this.template = "FieldMany2One";
+ this.is_field_m2o = true;
+ },
+ start: function() {
+ this.$element = $('#' + this.element_id);
+ this.dataset = new openerp.base.form.FieldMany2OneDatasSet(this.session, this.field.relation);
+ new openerp.base.m2o(this.$element, this.field.relation, this.dataset)
},
set_value: function(value) {
this._super.apply(this, arguments);
@@ -837,6 +851,8 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
this.value = value[0];
}
this.$element.find('input').val(show_value);
+ // Need to replace this `text` with original `id` after discuss with xmo
+ this.$element.find('input').attr('text', this.value);
}
});
diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml
index b49ef2c7d6a..c59229511a9 100644
--- a/addons/base/static/src/xml/base.xml
+++ b/addons/base/static/src/xml/base.xml
@@ -257,7 +257,7 @@
<t t-foreach="row" t-as="td">
<td t-att-colspan="td.colspan gt 1 ? td.colspan : undefined"
t-att-width="td.width ? td.width : undefined"
- t-att-nowrap="td.is_field_label ? 'true' : undefined"
+ t-att-nowrap="td.is_field_label or td.is_field_m2o? 'true' : undefined"
t-att-valign="td.table ? 'top' : undefined"
t-att-id="td.element_id"
t-att-class="'oe_form_' + (td.is_field_label ? 'label' : (td.field ? 'field_' + td.type : td.type))"
@@ -343,7 +343,10 @@
t-att-name="widget.name"
t-att-id="widget.element_id + '_field'"
t-att-class="'field_' + widget.type"
+ t-att-type="widget.type"
style="width: 100%;"/>
+ <img t-att-id="widget.name + '_select'" t-att-src="'/base/static/src/img/icons/index1.jpeg'" t-att-class="'combo_img'" width="15" height="16"/>
+ <div t-att-id="'autoCompleteResults_' + widget.name" t-att-class="'autoTextResults'"></div>
</t>
<t t-name="FieldOne2Many">
<div t-att-id="widget.element_id">