wn.ui.form.Grid = Class.extend({
init: function(opts) {
$.extend(this, opts);
this.fieldinfo = {};
this.docfields = wn.meta.docfield_list[this.df.options];
this.docfields.sort(function(a, b) { return a.idx > b.idx ? 1 : -1 });
},
make: function() {
var me = this;
this.wrapper = $('
').appendTo(me.form_area),
col1 = $('
').appendTo(row),
col2 = $('
').appendTo(row),
len = $.map(me.docfields, function(d) {
return !d.hidden ? true : null }).length;
len = (len + len % 2) / 2;
$.each(me.docfields, function(ci, df) {
if(!df.hidden) {
var fieldwrapper = $('
')
.appendTo(ci <= len ? col1 : col2)
var fieldobj = make_field(df, me.parent_df.options,
fieldwrapper.get(0), me.frm);
fieldobj.docname = me.doc.name;
fieldobj.refresh();
fieldobj.input &&
$(fieldobj.input).css({"max-height": "100px"});
// set field properties
// used for setting custom get queries in links
if(me.grid.fieldinfo[df.fieldname])
$.extend(fieldobj, me.grid.fieldinfo[df.fieldname]);
me.fields.push(fieldobj);
me.fields_dict[df.fieldname] = fieldobj;
cnt++;
}
});
if(this.grid.display_status!="Write" || this.grid.static_rows) {
this.wrapper.find(".btn-danger, .grid-insert-row").toggle(false);
return;
}
},
set_data: function() {
this.wrapper.data({
"doc": this.doc
})
},
set_value: function(fieldname, value) {
// in row
var $col = this.row.find("[data-fieldname='"+fieldname+"']");
$col.length && $col.html(wn.format(value, $col.data("df"), null, this.doc));
// in form
if(this.fields_dict && this.fields_dict[fieldname]) {
this.fields_dict[fieldname].set_input(value);
}
},
refresh_field: function(fieldname) {
var $col = this.row.find("[data-fieldname='"+fieldname+"']");
if($col.length) {
var value = wn.model.get_value(this.doc.doctype, this.doc.name, fieldname);
$col.html(wn.format(value, $col.data("df"), null, this.doc));
}
// in form
if(this.fields_dict && this.fields_dict[fieldname]) {
this.fields_dict[fieldname].refresh();
}
},
});