// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// MIT License. See license.txt
// search widget
// options: doctype, callback, query (if applicable)
wn.ui.Search = Class.extend({
init: function(opts) {
$.extend(this, opts);
var me = this;
wn.model.with_doctype(this.doctype, function(r) {
me.make();
me.dialog.show();
me.list.$w.find('.list-filters input[type="text"]').focus();
});
},
make: function() {
var me = this;
this.dialog = new wn.ui.Dialog({
title: this.doctype + ' Search',
width: 500
});
var parent = $('
')
.appendTo(this.dialog.body)
.find(".col-md-12")
this.list = new wn.ui.Listing({
parent: parent,
appframe: this.dialog.appframe,
new_doctype: this.doctype,
doctype: this.doctype,
type: "GET",
method: 'webnotes.widgets.reportview.get',
show_filters: true,
style: 'compact',
get_args: function() {
if(me.query) {
me.page_length = 50; // there has to be a better way :(
return {
query: me.query
}
} else {
return {
doctype: me.doctype,
fields: me.get_fields(),
filters: me.list.filter_list.get_filters(),
docstatus: ['0','1']
}
}
},
render_row: function(parent, data) {
$ln = $(''
+ data.name +'')
.appendTo(parent)
.click(function() {
var val = $(this).attr('data-name');
me.dialog.hide();
if(me.callback)
me.callback(val);
else
wn.set_route('Form', me.doctype, val);
return false;
});
// other values
$.each(data, function(key, value) {
if(key!=="name") {
$("")
.html(value)
.css({"margin-left": "15px", "display": "block"})
.appendTo(parent);
}
})
if(this.data.length==1) {
$ln.click();
}
}
});
this.list.filter_list.add_filter(this.doctype, 'name', 'like');
this.list.run();
},
get_fields: function() {
var me = this;
var fields = [ '`tab' + me.doctype + '`.name'];
$.each((wn.model.get("DocType", me.doctype)[0].search_fields || "").split(","),
function(i, field) {
if(strip(field)) {
fields.push('`tab' + me.doctype + '`.' + strip(field));
}
}
)
return fields;
}
})