[minor] replace autocomplete with awesomplete
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index c52d4fa..bd9d8ed 100644
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -410,33 +410,37 @@
this.frm.doc.customer = this.default_customer;
}
- this.party_field.$input.autocomplete({
- autoFocus: true,
- source: function (request, response) {
- me.customer_data = me.get_customers(request.term)
- response($.map(me.customer_data, function(data){
+ this.party_field.awesomeplete = new Awesomplete(this.party_field.$input.get(0), {
+ minChars: 0,
+ maxItems: 99,
+ autoFirst: true,
+ list: [],
+ });
+
+ this.party_field.$input
+ .on('input', function(e) {
+ var customer_data = me.get_customers(e.target.value) || [];
+ me.party_field.awesomeplete.list = customer_data.map(function(data){
return {label: data.name, value: data.name,
customer_group: data.customer_group, territory: data.territory}
- }))
- },
- change: function(event, ui){
- if(ui.item){
- me.frm.doc.customer = ui.item.label;
- me.frm.doc.customer_name = ui.item.customer_name;
- me.frm.doc.customer_group = ui.item.customer_group;
- me.frm.doc.territory = ui.item.territory;
- }else{
+ });
+ })
+ .on('awesomplete-select', function(e) {
+ var item = me.party_field.awesomeplete.get_item(e.originalEvent.text.value);
+ console.log(item);
+ if(item) {
+ me.frm.doc.customer = item.label;
+ me.frm.doc.customer_name = item.customer_name;
+ me.frm.doc.customer_group = item.customer_group;
+ me.frm.doc.territory = item.territory;
+ } else {
me.frm.doc.customer = me.party_field.$input.val();
}
me.refresh();
- }
- }).on("focus", function(){
- setTimeout(function() {
- if(!me.party_field.$input.val()) {
- me.party_field.$input.autocomplete( "search", " " );
- }
- }, 500);
- });
+ })
+ .on('focus', function(e) {
+ $(e.target).val('').trigger('input');
+ });
},
get_customers: function(key){
@@ -570,7 +574,7 @@
me.update_qty(item_code, qty)
})
},
-
+
update_qty: function(item_code, qty) {
var me = this;
this.items = this.get_items(item_code);
@@ -1012,13 +1016,13 @@
frappe.throw(__("Select items to save the invoice"))
}
},
-
+
validate_mode_of_payments: function(){
if (this.frm.doc.payments.length === 0){
frappe.throw(__("Payment Mode is not configured. Please check, whether account has been set on Mode of Payments or on POS Profile."))
}
},
-
+
validate_serial_no: function(){
var me = this;
var item_code = serial_no = '';
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 1f793d1..8844528 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -88,13 +88,13 @@
image: function(frm) {
refresh_field("image_view");
},
-
+
is_fixed_asset: function(frm) {
if (frm.doc.is_fixed_asset) {
frm.set_value("is_stock_item", 0);
}
},
-
+
page_name: frappe.utils.warn_page_name_change,
item_code: function(frm) {
@@ -191,15 +191,15 @@
frm.fields_dict.reorder_levels.grid.get_field("warehouse").get_query = function(doc, cdt, cdn) {
var d = locals[cdt][cdn];
-
+
var filters = {
"is_group": 0
}
-
+
if (d.parent_warehouse) {
filters.extend({"parent_warehouse": d.warehouse_group})
}
-
+
return {
filters: filters
}
@@ -313,39 +313,38 @@
$(field.input_area).addClass("ui-front");
- field.$input.autocomplete({
- minLength: 0,
+ var input = field.$input.get(0);
+ input.awesomplete = new Awesomplete(input, {
minChars: 0,
- autoFocus: true,
- source: function(request, response) {
+ maxItems: 99,
+ autoFirst: true,
+ list: [],
+ });
+ input.field = field;
+
+ field.$input
+ .on('input', function(e) {
+ var term = e.target.value;
frappe.call({
method:"frappe.client.get_list",
args:{
doctype:"Item Attribute Value",
filters: [
["parent","=", i],
- ["attribute_value", "like", request.term + "%"]
+ ["attribute_value", "like", term + "%"]
],
fields: ["attribute_value"]
},
callback: function(r) {
if (r.message) {
- response($.map(r.message, function(d) { return d.attribute_value; }));
+ e.target.awesomplete.list = r.message.map(function(d) { return d.attribute_value; });
}
}
});
- },
- select: function(event, ui) {
- field.$input.val(ui.item.value);
- field.$input.trigger("change");
- },
- }).on("focus", function(){
- setTimeout(function() {
- if(!field.$input.val()) {
- field.$input.autocomplete("search", "");
- }
- }, 500);
- });
+ })
+ .on('focus', function(e) {
+ $(e.target).val('').trigger('input');
+ })
});
},
toggle_attributes: function(frm) {