Merge branch 'master' of github.com:webnotes/erpnext

This commit is contained in:
Nabin Hait 2013-10-02 16:30:11 +05:30
commit dd110b2998
3 changed files with 123 additions and 146 deletions

View File

@ -0,0 +1,7 @@
.table-grid tbody tr {
cursor: pointer;
}
.table-grid thead tr {
height: 50px;
}

View File

@ -14,46 +14,42 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.cscript.show_item_prices = function() { cur_frm.cscript.show_item_prices = function() {
var item_price = wn.model.get("Item Price", {parent: cur_frm.doc.name}); var item_price = wn.model.get("Item Price", {parent: cur_frm.doc.name});
cur_frm.toggle_display("item_prices", true); $(cur_frm.fields_dict.item_prices_html.wrapper).empty();
$(cur_frm.fields_dict.item_prices.wrapper).empty();
new wn.ui.form.TableGrid({ new wn.ui.form.TableGrid({
parent: cur_frm.fields_dict.item_prices.wrapper, parent: cur_frm.fields_dict.item_prices_html.wrapper,
frm: cur_frm, frm: cur_frm,
table_field: wn.model.get("DocField", {parent:"Price List", fieldname:"item_prices"})[0] table_field: wn.meta.get_docfield("Price List", "item_prices", cur_frm.doc.name)
}); });
} }
wn.ui.form.TableGrid = Class.extend({ wn.ui.form.TableGrid = Class.extend({
init: function(opts) { init: function(opts) {
$.extend(this, opts); $.extend(this, opts);
this.fields = wn.model.get("DocField", {parent: this.table_field.options}); this.fields = wn.meta.get_docfields("Item Price", cur_frm.doc.name);
this.make_table(); this.make_table();
}, },
make_table: function() { make_table: function() {
var me = this; var me = this;
// Creating table & assigning attributes // Creating table & assigning attributes
var grid_table = document.createElement("table"); var grid_table = document.createElement("table");
$(grid_table).attr("class", "table table-hover table-bordered grid"); grid_table.className = "table table-hover table-bordered table-grid";
// Appending header & rows to table // Appending header & rows to table
grid_table.appendChild(this.make_table_headers());
$(this.make_table_headers()).appendTo(grid_table); grid_table.appendChild(this.make_table_rows());
$(this.make_table_rows()).appendTo(grid_table);
// Creating button to add new row // Creating button to add new row
var btn_div = document.createElement("div"); var btn_div = document.createElement("div");
var new_row_btn = document.createElement("button"); var new_row_btn = document.createElement("button");
$new_row_btn = $(new_row_btn); new_row_btn.className = "btn btn-success table-new-row";
$new_row_btn.attr({ new_row_btn.title = "Add new row";
"class": "btn btn-success table-new-row",
"title": "Add new row"
});
var btn_icon = document.createElement("i"); var btn_icon = document.createElement("i");
$(btn_icon).attr("class", "icon-plus"); btn_icon.className = "icon-plus";
$(btn_icon).appendTo(new_row_btn); new_row_btn.appendChild(btn_icon);
$new_row_btn.append(" Add new row"); new_row_btn.innerHTML += " Add new row";
$new_row_btn.appendTo(btn_div); btn_div.appendChild(new_row_btn);
// Appending table & button to parent // Appending table & button to parent
var $grid_table = $(grid_table).appendTo($(this.parent)); var $grid_table = $(grid_table).appendTo($(this.parent));
@ -75,35 +71,31 @@ wn.ui.form.TableGrid = Class.extend({
// Creating header row // Creating header row
var row = document.createElement("tr"); var row = document.createElement("tr");
$(row).attr({ row.className = "active";
"class": "active",
"style": "height:50px"
});
$(row).appendTo(header);
// Creating head first cell // Creating head first cell
var th = document.createElement("th"); var th = document.createElement("th");
$(th).attr({ th.width = "8%";
"width": "8%", th.className = "text-center";
"style": "vertical-align:middle", th.innerHTML = "#";
"class": "text-center" row.appendChild(th);
});
$(th).html("#");
$(th).appendTo(row);
// Make other headers with label as heading // Make other headers with label as heading
$.each(this.fields, function(i, obj) { for(var i=0, l=this.fields.length; i<l; i++) {
var th = document.createElement("th"); var df = this.fields[i];
// If currency then move header to right if(!!!df.hidden && df.in_list_view === 1) {
if (obj.fieldtype == "Currency") var th = document.createElement("th");
$(th).attr("style", "vertical-align:middle; text-align:right;");
else
$(th).attr("style", "vertical-align:middle");
$(th).html(obj.label); // If currency then move header to right
$(th).appendTo(row); if(["Int", "Currency", "Float"].indexOf(df.fieldtype) !== -1) th.className = "text-right";
});
th.innerHTML = wn._(df.label);
row.appendChild(th);
}
}
header.appendChild(row);
return header; return header;
}, },
@ -112,49 +104,21 @@ wn.ui.form.TableGrid = Class.extend({
// Creating table body // Creating table body
var table_body = document.createElement("tbody"); var table_body = document.createElement("tbody");
$(table_body).attr("style", "cursor:pointer");
$.each(wn.model.get_children(this.table_field.options, this.frm.doc.name, var item_prices = wn.model.get_children(this.table_field.options, this.frm.doc.name,
this.table_field.fieldname, this.frm.doctype), function(index, d) { this.table_field.fieldname, this.frm.doctype);
// Creating table row for(var i=0, l=item_prices.length; i<l; i++) {
var tr = document.createElement("tr"); var d = item_prices[i];
$(tr).attr({
"class": "table-row",
"data-idx": d.idx
});
// Creating table data & appending to row // Creating table row
var td = document.createElement("td"); var tr = this.add_new_row(d);
$(td).attr("class", "text-center");
$(td).html(d.idx);
$(td).appendTo(tr);
$.each(me.fields, function(i, obj) { // append row to table body
if (obj.in_list_view===1) { table_body.appendChild(tr);
var td = document.createElement("td"); }
$(td).attr({
"data-fieldtype": obj.fieldtype,
"data-fieldname": obj.fieldname,
"data-fieldvalue": d[obj.fieldname],
"data-doc_name": d["name"]
});
$(td).html(d[obj.fieldname]);
// if field is currency then add style & change text this.table_body = table_body;
if (obj.fieldtype=="Currency") {
$(td).attr("style", "text-align:right");
$(td).html(format_currency(d[obj.fieldname], me.frm.doc.currency));
}
// Append td to row
$(td).appendTo(tr);
}
});
// Append row to table body
$(tr).appendTo(table_body);
});
return table_body; return table_body;
}, },
@ -205,89 +169,89 @@ wn.ui.form.TableGrid = Class.extend({
var me = this; var me = this;
if (!row) { if (!row) {
me.add_new_row(); var d = wn.model.add_child(this.frm.doc, this.table_field.options,
this.table_field.fieldname);
refresh_field(this.table_field.fieldname);
this.update_item_price(d.name);
var tr = this.add_new_row(d);
this.table_body.appendChild(tr);
} }
else { else {
$.each(me.fields, function(i, item) { this.update_item_price(null, row);
var $td = $(row).find('td[data-fieldname="'+ item.fieldname +'"]');
var val = me.dialog.get_values()[item.fieldname];
wn.model.set_value(me.table_field.options, $td.attr('data-doc_name'),
item.fieldname, val);
$td.attr('data-fieldvalue', val);
// If field type is currency the update with format currency
if ($td.attr('data-fieldtype') == "Currency")
$td.html(format_currency(val, me.frm.doc.currency));
else
$td.html(val);
});
} }
this.dialog.hide(); this.dialog.hide();
}, },
update_item_price: function(docname, row) {
var me = this;
if(!docname && row) docname = $(row).attr("data-docname");
$.each(me.fields, function(i, df) {
var val = me.dialog.get_values()[df.fieldname];
if(["Currency", "Float"].indexOf(df.fieldtype)!==-1) {
val = flt(val);
} else if(["Int", "Check"].indexOf(df.fieldtype)!==-1) {
val = cint(val);
}
wn.model.set_value(me.table_field.options, docname,
df.fieldname, val);
if(row) {
var $td = $(row).find('td[data-fieldname="'+ df.fieldname +'"]');
$td.attr('data-fieldvalue', val);
// If field type is currency the update with format currency
$td.html(wn.format(val, df));
}
});
},
delete_row: function(row) { delete_row: function(row) {
var me = this; var me = this;
var doc_name = $(row).find('td:last').attr('data-doc_name'); var docname = $(row).find('td:last').attr('data-docname');
wn.model.clear_doc(me.table_field.options, doc_name); wn.model.clear_doc(me.table_field.options, docname);
$(row).remove(); $(row).remove();
// Re-assign idx // Re-assign idx
$.each($(this.parent).find(".grid tbody tr"), function(idx, data) { $.each($(this.parent).find("tbody tr"), function(idx, data) {
$(data).attr("data-idx", idx + 1);
var $td = $(data).find('td:first'); var $td = $(data).find('td:first');
$td.html(idx + 1); $td.html(idx + 1);
}); });
this.dialog.hide(); this.dialog.hide();
}, },
add_new_row: function() {
var me = this;
var row = $(this.parent).find(".grid tbody tr");
// Creating new row add_new_row: function(d) {
var new_row = document.createElement("tr"); var tr = document.createElement("tr");
$(new_row).attr({ tr.className = "table-row";
"class": "table-row", tr.setAttribute("data-docname", d.name);
"data-idx": row.length + 1
});
// Creating first table data // Creating table data & appending to row
var td = document.createElement("td"); var td = document.createElement("td");
$(td).attr("class", "text-center"); td.className = "text-center";
$(td).html(row.length + 1); td.innerHTML = d.idx;
$(td).appendTo(new_row); tr.appendChild(td);
var child = wn.model.add_child(this.frm.doc, this.table_field.options,
this.table_field.fieldname);
$.each(this.fields, function(i, obj) {
if (obj.in_list_view===1) {
child[obj.fieldname] = me.dialog.get_values()[obj.fieldname];
for(var f=0, lf=this.fields.length; f<lf; f++) {
var df = this.fields[f];
if(!!!df.hidden && df.in_list_view===1) {
var td = document.createElement("td"); var td = document.createElement("td");
$(td).attr({ td.setAttribute("data-fieldname", df.fieldname);
"data-fieldtype": obj.fieldtype, td.setAttribute("data-fieldvalue", d[df.fieldname]);
"data-fieldname": obj.fieldname, td.setAttribute("data-docname", d.name);
"data-fieldvalue": child[obj.fieldname],
"data-doc_name": child["name"]
});
$(td).html(child[obj.fieldname]);
// if field is currency then add style & change text // If currency then move header to right
if (obj.fieldtype=="Currency") { if(["Int", "Currency", "Float"].indexOf(df.fieldtype) !== -1) {
$(td).attr("style", "text-align:right"); td.className = "text-right";
$(td).html(format_currency(child[obj.fieldname], me.frm.doc.currency));
} }
// Append td to row // format and set display
$(td).appendTo(new_row); td.innerHTML = wn.format(d[df.fieldname], df);
// append column to tabel row
tr.appendChild(td);
} }
}); }
return tr;
// refresh field to push to grid rows
refresh_field(this.table_field.fieldname);
// append row to tbody of grid
$(new_row).appendTo($(this.parent).find(".grid tbody"));
} }
}); });

View File

@ -2,7 +2,7 @@
{ {
"creation": "2013-01-25 11:35:09", "creation": "2013-01-25 11:35:09",
"docstatus": 0, "docstatus": 0,
"modified": "2013-09-30 15:50:52", "modified": "2013-10-02 11:36:09",
"modified_by": "Administrator", "modified_by": "Administrator",
"owner": "Administrator" "owner": "Administrator"
}, },
@ -92,10 +92,16 @@
"hidden": 0, "hidden": 0,
"label": "Item Prices" "label": "Item Prices"
}, },
{
"doctype": "DocField",
"fieldname": "item_prices_html",
"fieldtype": "HTML"
},
{ {
"doctype": "DocField", "doctype": "DocField",
"fieldname": "item_prices", "fieldname": "item_prices",
"fieldtype": "Table", "fieldtype": "Table",
"hidden": 1,
"label": "Item Prices", "label": "Item Prices",
"options": "Item Price" "options": "Item Price"
}, },