Browse Source

[print] [bugfix] double onshow calling bugfix

version-14
Rushabh Mehta 10 years ago
parent
commit
a90e0fc711
30 changed files with 310 additions and 110 deletions
  1. +5
    -0
      frappe/build.py
  2. +2
    -2
      frappe/core/page/data_import_tool/data_import_tool.js
  3. +1
    -1
      frappe/core/page/desktop/desktop.js
  4. +1
    -1
      frappe/core/page/modules_setup/modules_setup.js
  5. +1
    -1
      frappe/core/page/permission_manager/permission_manager.js
  6. +1
    -1
      frappe/core/page/user_permissions/user_permissions.js
  7. +1
    -1
      frappe/desk/page/activity/activity.js
  8. +1
    -1
      frappe/desk/page/applications/applications.js
  9. +1
    -1
      frappe/desk/page/messages/messages.js
  10. +1
    -1
      frappe/print/doctype/print_format/print_format.js
  11. +19
    -5
      frappe/print/page/print_format_builder/print_format_builder.css
  12. +192
    -42
      frappe/print/page/print_format_builder/print_format_builder.js
  13. +25
    -8
      frappe/print/page/print_format_builder/print_format_builder_column_selector.html
  14. +15
    -5
      frappe/print/page/print_format_builder/print_format_builder_field.html
  15. +2
    -1
      frappe/print/page/print_format_builder/print_format_builder_section.html
  16. +3
    -2
      frappe/print/page/print_format_builder/print_format_builder_sidebar.html
  17. +7
    -2
      frappe/public/js/frappe/form/control.js
  18. +1
    -1
      frappe/public/js/frappe/form/linked_with.js
  19. +3
    -1
      frappe/public/js/frappe/model/model.js
  20. +7
    -3
      frappe/public/js/frappe/ui/dialog.js
  21. +6
    -5
      frappe/public/js/frappe/ui/field_group.js
  22. +2
    -1
      frappe/public/js/frappe/ui/page.js
  23. +1
    -1
      frappe/public/js/frappe/ui/toolbar/about.js
  24. +1
    -1
      frappe/public/js/frappe/views/communication.js
  25. +1
    -5
      frappe/public/js/frappe/views/container.js
  26. +6
    -8
      frappe/public/js/frappe/views/pageview.js
  27. +3
    -0
      frappe/public/js/legacy/clientscriptAPI.js
  28. +0
    -7
      frappe/public/js/legacy/globals.js
  29. +0
    -1
      frappe/public/js/legacy/loaders.js
  30. +1
    -1
      frappe/public/js/legacy/print_format.js

+ 5
- 0
frappe/build.py View File

@@ -148,7 +148,12 @@ def pack(target, sources, no_compress, verbose):
print "Wrote %s - %sk" % (target, str(int(os.path.getsize(target)/1024))) print "Wrote %s - %sk" % (target, str(int(os.path.getsize(target)/1024)))


def html_to_js_template(path, content): def html_to_js_template(path, content):
# remove whitespace to a single space
content = re.sub("\s+", " ", content).replace("'", "\'") content = re.sub("\s+", " ", content).replace("'", "\'")

# strip comments
content = re.sub("(<!--.*?-->)", "", content)

return """frappe.templates["{key}"] = '{content}';\n""".format(\ return """frappe.templates["{key}"] = '{content}';\n""".format(\
key=path.rsplit("/", 1)[-1][:-5], content=content) key=path.rsplit("/", 1)[-1][:-5], content=content)




+ 2
- 2
frappe/core/page/data_import_tool/data_import_tool.js View File

@@ -122,10 +122,10 @@ frappe.DataImportTool = Class.extend({
} }
}); });


frappe.pages['data-import-tool'].onload = function(wrapper) {
frappe.pages['data-import-tool'].on_page_load = function(wrapper) {
frappe.data_import_tool = new frappe.DataImportTool(wrapper); frappe.data_import_tool = new frappe.DataImportTool(wrapper);
} }


frappe.pages['data-import-tool'].onshow = function(wrapper) {
frappe.pages['data-import-tool'].on_page_show = function(wrapper) {
frappe.data_import_tool && frappe.data_import_tool.set_route_options(); frappe.data_import_tool && frappe.data_import_tool.set_route_options();
} }

+ 1
- 1
frappe/core/page/desktop/desktop.js View File

@@ -1,6 +1,6 @@
frappe.provide('frappe.desktop'); frappe.provide('frappe.desktop');


frappe.pages['desktop'].onload = function(wrapper) {
frappe.pages['desktop'].on_page_load = function(wrapper) {
frappe.desktop.background = $('<div style="background: none; text-align: center; \ frappe.desktop.background = $('<div style="background: none; text-align: center; \
margin: 0px auto;"> \ margin: 0px auto;"> \
<div id="icon-grid">\ <div id="icon-grid">\


+ 1
- 1
frappe/core/page/modules_setup/modules_setup.js View File

@@ -1,5 +1,5 @@


frappe.pages['modules_setup'].onload = function(wrapper) {
frappe.pages['modules_setup'].on_page_load = function(wrapper) {
var page = frappe.ui.make_app_page({ var page = frappe.ui.make_app_page({
parent: wrapper, parent: wrapper,
title: __('Show or Hide Modules'), title: __('Show or Hide Modules'),


+ 1
- 1
frappe/core/page/permission_manager/permission_manager.js View File

@@ -1,4 +1,4 @@
frappe.pages['permission-manager'].onload = function(wrapper) {
frappe.pages['permission-manager'].on_page_load = function(wrapper) {
var page = frappe.ui.make_app_page({ var page = frappe.ui.make_app_page({
parent: wrapper, parent: wrapper,
title: __('Role Permissions Manager'), title: __('Role Permissions Manager'),


+ 1
- 1
frappe/core/page/user_permissions/user_permissions.js View File

@@ -1,4 +1,4 @@
frappe.pages['user-permissions'].onload = function(wrapper) {
frappe.pages['user-permissions'].on_page_load = function(wrapper) {
var page = frappe.ui.make_app_page({ var page = frappe.ui.make_app_page({
parent: wrapper, parent: wrapper,
title: __("User Permissions Manager"), title: __("User Permissions Manager"),


+ 1
- 1
frappe/desk/page/activity/activity.js View File

@@ -3,7 +3,7 @@


frappe.provide("frappe.activity"); frappe.provide("frappe.activity");


frappe.pages['activity'].onload = function(wrapper) {
frappe.pages['activity'].on_page_load = function(wrapper) {
var me = this; var me = this;


frappe.require('assets/frappe/js/lib/flot/jquery.flot.js'); frappe.require('assets/frappe/js/lib/flot/jquery.flot.js');


+ 1
- 1
frappe/desk/page/applications/applications.js View File

@@ -1,6 +1,6 @@
frappe.provide("frappe.applications"); frappe.provide("frappe.applications");


frappe.pages['applications'].onload = function(parent) {
frappe.pages['applications'].on_page_load = function(parent) {
frappe.applications.installer = new frappe.applications.Installer(parent); frappe.applications.installer = new frappe.applications.Installer(parent);
}; };




+ 1
- 1
frappe/desk/page/messages/messages.js View File

@@ -6,7 +6,7 @@


frappe.provide('frappe.desk.pages.messages'); frappe.provide('frappe.desk.pages.messages');


frappe.pages.messages.onload = function(parent) {
frappe.pages.messages.on_page_load = function(parent) {
var page = frappe.ui.make_app_page({ var page = frappe.ui.make_app_page({
parent: parent, parent: parent,
}); });


+ 1
- 1
frappe/print/doctype/print_format/print_format.js View File

@@ -21,7 +21,7 @@ frappe.ui.form.on("Print Format", "edit_format", function(frm) {
return; return;
} }
frappe.route_options = { frappe.route_options = {
print_format: frm.doc
print_format: frm
}; };
frappe.set_route("print-format-builder"); frappe.set_route("print-format-builder");
}); });

+ 19
- 5
frappe/print/page/print_format_builder/print_format_builder.css View File

@@ -1,20 +1,26 @@
.print-format-builder-section, .print-format-builder-add-section { .print-format-builder-section, .print-format-builder-add-section {
border: 1px dashed #d1d8dd;
border: 1px solid #d1d8dd;
margin: 0px; margin: 0px;
margin-bottom: 15px; margin-bottom: 15px;
} }
.print-format-builder-add-section { .print-format-builder-add-section {
border: 1px dashed #d1d8dd;
text-align: center; text-align: center;
padding: 15px; padding: 15px;
cursor: pointer; cursor: pointer;
} }


.print-format-builder-column { .print-format-builder-column {
border: 1px dashed #d1d8dd;
padding: 15px; padding: 15px;
margin: 15px 0px;
margin: 0px -15px 0 -16px;
background-color: white; background-color: white;
min-height: 64px; min-height: 64px;
border-left: 1px solid #d1d8dd;
border-right: 1px solid #d1d8dd;
}

.section-column:last-child .print-format-builder-column {
margin-right: -16px;
} }


.print-format-builder-field { .print-format-builder-field {
@@ -22,7 +28,7 @@
border: 1px solid #d1d8dd; border: 1px solid #d1d8dd;
border-radius: 3px; border-radius: 3px;
margin-bottom: 10px; margin-bottom: 10px;
height: 34px;
min-height: 34px;
} }


.print-format-builder-field:last-child { .print-format-builder-field:last-child {
@@ -45,5 +51,13 @@
.print-format-builder-section-head { .print-format-builder-section-head {
cursor: move; cursor: move;
padding: 10px 15px; padding: 10px 15px;
border-bottom: 1px dashed #d1d8dd;
border-bottom: 1px solid #d1d8dd;
}

.column-selector-row:hover {
background-color: #fafbfc;
}

.column-selector-row .form-control {
margin-top: 5px;
} }

+ 192
- 42
frappe/print/page/print_format_builder/print_format_builder.js View File

@@ -1,12 +1,12 @@
frappe.pfbuilder = null;

frappe.pages['print-format-builder'].onload = function(wrapper) {
frappe.pages['print-format-builder'].on_page_load = function(wrapper) {
frappe.print_format_builder = new frappe.PrintFormatBuilder(wrapper); frappe.print_format_builder = new frappe.PrintFormatBuilder(wrapper);
} }


frappe.pages['print-format-builder'].onshow = function(wrapper) {
frappe.pages['print-format-builder'].on_page_show = function(wrapper) {
// load a new page // load a new page
if(frappe.route_options.print_format != frappe.print_format_builder.print_format) {
var frm = frappe.route_options.print_format
if(!frm || !frappe.print_format_builder.doc ||
(frm.doc.name != frappe.print_format_builder.doc.name)) {
frappe.print_format_builder.refresh(); frappe.print_format_builder.refresh();
} }
} }
@@ -15,16 +15,14 @@ frappe.PrintFormatBuilder = Class.extend({
init: function(parent) { init: function(parent) {
this.parent = parent; this.parent = parent;
this.make(); this.make();
this.refresh();
}, },
refresh: function() { refresh: function() {
this.print_format = frappe.route_options.print_format;
this.visible_columns = {};
this.frm = frappe.route_options.print_format;


if(!this.print_format) {
this.as_user_to_start_from_print_format();
if(!(this.frm && this.frm.doc)) {
this.ask_user_to_start_from_print_format();
} else { } else {
this.page.set_title(this.print_format.name);
this.page.set_title(this.frm.doc.name);
this.setup_print_format(); this.setup_print_format();
} }
}, },
@@ -34,27 +32,43 @@ frappe.PrintFormatBuilder = Class.extend({
title: __("Print Format Builder") title: __("Print Format Builder")
}); });
}, },
as_user_to_start_from_print_format: function() {
ask_user_to_start_from_print_format: function() {
this.page.main.html('<div class="padding"><a class="btn btn-default btn-sm" href="#List/Print Format">' this.page.main.html('<div class="padding"><a class="btn btn-default btn-sm" href="#List/Print Format">'
+__("Please create or edit a new Print Format")+'</a></div>'); +__("Please create or edit a new Print Format")+'</a></div>');
this.page.sidebar.html("");
this.page.clear_primary_action();
}, },
setup_print_format: function() { setup_print_format: function() {
var me = this; var me = this;
frappe.model.with_doctype(this.print_format.doc_type, function(doctype) {
me.meta = frappe.get_meta(me.print_format.doc_type);
frappe.model.with_doctype(this.frm.doc.doc_type, function(doctype) {
me.meta = frappe.get_meta(me.frm.doc.doc_type);
me.setup_sidebar(); me.setup_sidebar();
me.render_layout(); me.render_layout();
me.page.set_primary_action(__("Save"), function() {
me.save_print_format();
});
}); });
}, },
setup_sidebar: function() { setup_sidebar: function() {
var me = this; var me = this;
this.page.sidebar.empty(); this.page.sidebar.empty();

// prepend custom HTML field
var fields = [this.get_custom_html_field()].concat(this.meta.fields);

$(frappe.render_template("print_format_builder_sidebar", $(frappe.render_template("print_format_builder_sidebar",
{fields: this.meta.fields}))
{fields: fields}))
.appendTo(this.page.sidebar); .appendTo(this.page.sidebar);


this.setup_field_filter(); this.setup_field_filter();
}, },
get_custom_html_field: function() {
return {
fieldtype: "Custom HTML",
fieldname: "_custom_html",
label: __("Custom HTML")
}
},
render_layout: function() { render_layout: function() {
this.page.main.empty(); this.page.main.empty();
this.prepare_data(); this.prepare_data();
@@ -62,12 +76,13 @@ frappe.PrintFormatBuilder = Class.extend({
data: this.layout_data, me: this})) data: this.layout_data, me: this}))
.appendTo(this.page.main); .appendTo(this.page.main);
this.setup_sortable(); this.setup_sortable();
this.setup_settings();
this.setup_section_settings();
this.setup_column_selector(); this.setup_column_selector();
this.setup_edit_custom_html();
this.setup_add_section(); this.setup_add_section();
}, },
prepare_data: function() { prepare_data: function() {
this.data = JSON.parse(this.print_format.format_data || "[]");
this.data = JSON.parse(this.frm.doc.format_data || "[]");
if(!this.data.length) { if(!this.data.length) {
// new layout // new layout
this.data = this.meta.fields; this.data = this.meta.fields;
@@ -86,6 +101,18 @@ frappe.PrintFormatBuilder = Class.extend({
// break the layout into sections and columns // break the layout into sections and columns
// so that it is easier to render in a template // so that it is easier to render in a template
$.each(this.data, function(i, f) { $.each(this.data, function(i, f) {
if(!f.name && f.fieldname) {
// from format_data (designed format)
// print_hide should always be false
if(f.fieldname==="_custom_html") {
f.label = "Custom HTML";
f.fieldtype = "Custom HTML"
} else {
f = $.extend(frappe.meta.get_docfield(me.frm.doc.doc_type,
f.fieldname) || {}, f);
}
}

if(f.fieldtype==="Section Break") { if(f.fieldtype==="Section Break") {
section = me.get_new_section(); section = me.get_new_section();
column = null; column = null;
@@ -119,14 +146,20 @@ frappe.PrintFormatBuilder = Class.extend({
return {fields: []} return {fields: []}
}, },
add_table_properties: function(f) { add_table_properties: function(f) {
// build table columns and widths in a dict
// visible_columns
var me = this; var me = this;
this.visible_columns[f.options] = [];
$.each(frappe.get_meta(f.options).fields, function(i, _f) {
if(!in_list(["Section Break", "Column Break"], _f.fieldtype) &&
!_f.print_hide && f.label) {
me.visible_columns[f.options].push(_f.fieldname);
}
});
if(!f.visible_columns) {
f.visible_columns = []
$.each(frappe.get_meta(f.options).fields, function(i, _f) {
if(!in_list(["Section Break", "Column Break"], _f.fieldtype) &&
!_f.print_hide && f.label) {

// column names set as fieldname|width
f.visible_columns.push({fieldname: _f.fieldname, width: _f.width});
}
});
}
}, },
setup_sortable: function() { setup_sortable: function() {
var me = this; var me = this;
@@ -163,8 +196,13 @@ frappe.PrintFormatBuilder = Class.extend({
// on drop, change the HTML // on drop, change the HTML
var $item = $(evt.item); var $item = $(evt.item);
if(!$item.hasClass("print-format-builder-field")) { if(!$item.hasClass("print-format-builder-field")) {
var fieldname = $item.attr("data-fieldname"),
field = frappe.meta.get_docfield(me.print_format.doc_type, fieldname);
var fieldname = $item.attr("data-fieldname");

if(fieldname==="_custom_html") {
var field = me.get_custom_html_field();
} else {
var field = frappe.meta.get_docfield(me.frm.doc.doc_type, fieldname);
}


$item.replaceWith(frappe.render_template("print_format_builder_field", $item.replaceWith(frappe.render_template("print_format_builder_field",
{field: field, me:me})) {field: field, me:me}))
@@ -183,7 +221,7 @@ frappe.PrintFormatBuilder = Class.extend({
}) })
}); });
}, },
setup_settings: function() {
setup_section_settings: function() {
var me = this; var me = this;
this.page.main.on("click", ".section-settings", function() { this.page.main.on("click", ".section-settings", function() {
var section = $(this).parent().parent(); var section = $(this).parent().parent();
@@ -194,9 +232,24 @@ frappe.PrintFormatBuilder = Class.extend({
title: "Edit Section", title: "Edit Section",
fields: [ fields: [
{ {
label:__("No of Columns"), fieldname:"no_of_columns",
fieldtype:"Select", options: ["1", "2", "3"],
label:__("No of Columns"),
fieldname:"no_of_columns",
fieldtype:"Select",
options: ["1", "2", "3"],
}, },
{
label: __("Remove Section"),
fieldname: "remove_section",
fieldtype: "Button",
click: function() {
d.hide();
section.fadeOut(function() {section.remove()});
},
input_class: "btn-danger",
input_css: {
"margin-top": "20px"
}
}
], ],
}); });


@@ -212,7 +265,8 @@ frappe.PrintFormatBuilder = Class.extend({


d.show(); d.show();


})
return false;
});
}, },
update_columns_in_section: function(section, no_of_columns, new_no_of_columns) { update_columns_in_section: function(section, no_of_columns, new_no_of_columns) {
var col_size = 12 / new_no_of_columns, var col_size = 12 / new_no_of_columns,
@@ -275,38 +329,134 @@ frappe.PrintFormatBuilder = Class.extend({
setup_column_selector: function() { setup_column_selector: function() {
var me = this; var me = this;
this.page.main.on("click", ".select-columns", function() { this.page.main.on("click", ".select-columns", function() {
var parent = $(this).parent(),
var parent = $(this).parents(".print-format-builder-field:first"),
doctype = parent.attr("data-doctype"), doctype = parent.attr("data-doctype"),
label = parent.attr("data-label"), label = parent.attr("data-label"),
columns = parent.attr("data-columns").split(",");
columns = parent.attr("data-columns").split(",")
column_names = $.map(columns, function(v) { return v.split("|")[0]; });
widths = {};

$.each(columns, function(i, v) {
var parts = v.split("|");
widths[parts[0]] = parts[1];
});


var d = new frappe.ui.Dialog({ var d = new frappe.ui.Dialog({
title: __("Select Table Columns for {0}", [label]), title: __("Select Table Columns for {0}", [label]),
}); });


var $body = $(d.body);

// render checkboxes // render checkboxes
$(frappe.render_template("print_format_builder_column_selector", { $(frappe.render_template("print_format_builder_column_selector", {
fields: frappe.get_meta(doctype).fields, fields: frappe.get_meta(doctype).fields,
columns: columns
column_names: column_names,
widths: widths
})).appendTo(d.body); })).appendTo(d.body);


Sortable.create($(d.body).find(".column-selector-list").get(0));
Sortable.create($body.find(".column-selector-list").get(0));

var get_width_input = function(fieldname) {
return $body.find(".column-width[data-fieldname='"+ fieldname +"']")
}


// update data-columns property on update // update data-columns property on update
d.set_primary_action(__("Update"), function() { d.set_primary_action(__("Update"), function() {
me.visible_columns[doctype] = [];
$(d.body).find("input:checked").each(function() {
me.visible_columns[doctype].push($(this).attr("data-fieldname"));
var visible_columns = [];
$body.find("input:checked").each(function() {
var fieldname = $(this).attr("data-fieldname"),
width = get_width_input(fieldname).val() || "";
visible_columns.push(fieldname + "|" + width);
}); });
parent.attr("data-columns", me.visible_columns[doctype].join(me.visible_columns[doctype]));
parent.attr("data-columns", visible_columns.join(","));
d.hide();
});

// enable / disable input based on selection
$body.on("click", "input[type='checkbox']", function() {
var disabled = !$(this).prop("checked"),
input = get_width_input($(this).attr("data-fieldname"));

input.prop("disabled", disabled);
if(disabled) input.val("");
});

d.show();

return false;
});
},
get_visible_columns_string: function(f) {
return $.map(f.visible_columns, function(v) { return v.fieldname + "|" + v.width }).join(",")
},
get_no_content: function() {
return '<div class="text-extra-muted" data-no-content>'+__("Edit to add content")+'</div>'
},
setup_edit_custom_html: function() {
var me = this;
this.page.main.on("click", ".edit-html", function() {
var parent = $(this).parents(".print-format-builder-field:first"),
$content = parent.find(".html-content");

var d = new frappe.ui.Dialog({
title: __("Edit Custom HTML"),
fields: [
{
fieldname: "content",
fieldtype: "Text Editor",
label: "Custom HTML"
}
]
});

var content = $content.html();
if(content.indexOf("data-no-content")!==-1) content = "";

d.set_input("content", content);

d.set_primary_action(__("Update"), function() {
$content.html(d.get_value("content"));
d.hide(); d.hide();
}); });


d.show(); d.show();

return false;
});
},
save_print_format: function() {
var data = [],
me = this;
this.page.main.find(".print-format-builder-section").each(function() {
data.push({"fieldtype": "Section Break"});
$(this).find(".print-format-builder-column").each(function() {
data.push({"fieldtype": "Column Break"});
$(this).find(".print-format-builder-field").each(function() {
var $this = $(this),
fieldtype = $this.attr("data-fieldtype"),
df = {
fieldname: $this.attr("data-fieldname")
};
if(fieldtype==="Table") {
// append the user selected columns to visible_columns
var columns = $this.attr("data-columns").split(",");
df.visible_columns = [];
$.each(columns, function(i, c) {
var parts = c.split("|");
df.visible_columns.push({fieldname:parts[0],
width:parts[1]});
});
}
if(fieldtype==="Custom HTML") {
// custom html as HTML field
df.fieldtype = "HTML";
df.options = $this.find(".html-content").html();
}
data.push(df);
});
});
}); });
this.frm.doc.format_data = JSON.stringify(data);
setTimeout(function() { me.frm.save(); }, 100);
} }
}); });

frappe.PrintFormatField = Class.extend({
init: function() { }
});

+ 25
- 8
frappe/print/page/print_format_builder/print_format_builder_column_selector.html View File

@@ -1,14 +1,31 @@
<p class="text-muted">{%= __("Check columns to select, drag to set order.") %}</p>
<p class="text-muted">{%= __("Check columns to select, drag to set order.") %}
<br>{%= __("Widths can be set in px or %.") %}</p>
<div class="row">
<div class="col-sm-6"><h4>{%= __("Column") %}</h4></div>
<div class="col-sm-6 text-right"><h4>{%= __("Width") %}</h4></div>
</div>
<div class="column-selector-list"> <div class="column-selector-list">
{% for (i=0; i < fields.length; i++) { var f = fields[i]; %} {% for (i=0; i < fields.length; i++) { var f = fields[i]; %}
{% if(!in_list(["Section Break", "Column Break"]) && f.label) { %}
<div class="checkbox">
<label>
<input type="checkbox"
{% if(!in_list(["Section Break", "Column Break"]) && f.label) {
var selected = in_list(column_names, f.fieldname) %}
<div class="row column-selector-row">
<div class="col-sm-6">
<div class="checkbox">
<label>
<input type="checkbox"
data-fieldname="{%= f.fieldname %}"
{%= selected ? "checked" : "" %}>
{%= f.label %}
</label>
</div>
</div>
<div class="col-sm-6 text-right">
<input class="form-control column-width input-sm text-right"
value="{%= widths[f.fieldname] || "" %}"
data-fieldname="{%= f.fieldname %}" data-fieldname="{%= f.fieldname %}"
{% if(in_list(columns, f.fieldname)) { %}checked{% } %}>
{%= f.label %}
</label>
style="width: 100px; display: inline"
{%= selected ? "" : "disabled" %}>
</div>
</div> </div>
{% } %} {% } %}
{% } %} {% } %}


+ 15
- 5
frappe/print/page/print_format_builder/print_format_builder_field.html View File

@@ -1,13 +1,23 @@
<div class="print-format-builder-field" <div class="print-format-builder-field"
data-fieldname="{%= field.fieldname %}" data-fieldname="{%= field.fieldname %}"
data-label="{%= field.label %}" data-label="{%= field.label %}"
data-fieldtype="{%= field.fieldtype %}"
{% if(field.fieldtype==="Table") { %} {% if(field.fieldtype==="Table") { %}
data-columns="{%= me.visible_columns[field.options].join(",") %}"
data-columns="{%= me.get_visible_columns_string(field) %}"
data-doctype="{%= field.options %}" data-doctype="{%= field.options %}"
{% } %}> {% } %}>
<span>{%= field.label %}</span>
{% if(field.fieldtype==="Table") { %}
<span> ({%= __("Table") %})</span>
<a class="pull-right select-columns btn btn-default btn-xs">Select Columns</a>
{% if(field.fieldtype==="Custom HTML") { %}
<div class="text-right">
<a class="edit-html btn btn-default btn-xs">
{%= __("Edit HTML") %}</a>
</div>
<div class="html-content">{%= field.options || me.get_no_content() %}</div>
{% } else { %}
<span>{%= field.label %}</span>
{% if(field.fieldtype==="Table") { %}
<span> ({%= __("Table") %})</span>
<a class="pull-right select-columns btn btn-default btn-xs">
{%= __("Select Columns") %}</a>
{% } %}
{% } %} {% } %}
</div> </div>

+ 2
- 1
frappe/print/page/print_format_builder/print_format_builder_section.html View File

@@ -1,7 +1,8 @@
<div class="print-format-builder-section row light-bg"> <div class="print-format-builder-section row light-bg">
<div class="print-format-builder-section-head"> <div class="print-format-builder-section-head">
<a class="section-settings pull-right <a class="section-settings pull-right
btn-default btn-xs">Settings</a>
btn-default btn-xs">
<span class="octicon octicon-gear text-muted"></span></a>
<span class="octicon octicon-three-bars drag-handle"></span> <span class="octicon octicon-three-bars drag-handle"></span>
</div> </div>
{% for(var j=0; j < section.columns.length; j++) { {% for(var j=0; j < section.columns.length; j++) {


+ 3
- 2
frappe/print/page/print_format_builder/print_format_builder_sidebar.html View File

@@ -1,4 +1,4 @@
<div class="panel-bg" style="padding: 10px; margin-right: -30px;">
<div class="panel-bg" style="padding: 10px; margin-right: -15px; margin-bottom: 10px;">
<input type="text" class="form-control input-sm filter-fields" name="filter-fields" <input type="text" class="form-control input-sm filter-fields" name="filter-fields"
placeholder="{%= __("Filter...") %}"> placeholder="{%= __("Filter...") %}">
</div> </div>
@@ -7,7 +7,8 @@
{% if(!in_list(["Section Break", "Column Break", "Fold"], f.fieldtype)) { %} {% if(!in_list(["Section Break", "Column Break", "Fold"], f.fieldtype)) { %}
<div class="print-format-builder-field-placeholder text-ellipsis" <div class="print-format-builder-field-placeholder text-ellipsis"
data-fieldname="{%= f.fieldname %}"> data-fieldname="{%= f.fieldname %}">
<span class="label label-default"
<span class="btn btn-xs
{%= (f.fieldtype==="Custom HTML") ? "btn-info" : "btn-default" %}"
style="cursor: grab; display: inline-block"> style="cursor: grab; display: inline-block">
{%= f.label %} {%= f.label %}
</span> </span>


+ 7
- 2
frappe/public/js/frappe/form/control.js View File

@@ -303,10 +303,15 @@ frappe.ui.form.ControlData = frappe.ui.form.ControlInput.extend({
.attr("data-fieldtype", this.df.fieldtype) .attr("data-fieldtype", this.df.fieldtype)
.attr("data-fieldname", this.df.fieldname) .attr("data-fieldname", this.df.fieldname)
.attr("placeholder", this.df.placeholder || "") .attr("placeholder", this.df.placeholder || "")
if(this.doctype)
if(this.doctype) {
this.$input.attr("data-doctype", this.doctype); this.$input.attr("data-doctype", this.doctype);
if(this.df.input_css)
}
if(this.df.input_css) {
this.$input.css(this.df.input_css); this.$input.css(this.df.input_css);
}
if(this.df.input_class) {
this.$input.addClass(this.df.input_class);
}
}, },
set_input: function(val) { set_input: function(val) {
this.$input && this.$input.val(this.format_for_input(val)); this.$input && this.$input.val(this.format_for_input(val));


+ 1
- 1
frappe/public/js/frappe/form/linked_with.js View File

@@ -44,7 +44,7 @@ frappe.ui.form.LinkedWith = Class.extend({
return; return;
} }


this.dialog.onshow = function() {
this.dialog.on_page_show = function() {
me.dialog.fields_dict.list.$wrapper.html('<div class="text-muted text-center">' me.dialog.fields_dict.list.$wrapper.html('<div class="text-muted text-center">'
+ __("Loading") + '...</div>'); + __("Loading") + '...</div>');




+ 3
- 1
frappe/public/js/frappe/model/model.js View File

@@ -243,11 +243,13 @@ $.extend(frappe.model, {
if(doc && doc[fieldname] !== value) { if(doc && doc[fieldname] !== value) {
doc[fieldname] = value; doc[fieldname] = value;
frappe.model.trigger(fieldname, value, doc); frappe.model.trigger(fieldname, value, doc);
setTimeout(function() { console.log(doc[fieldname]) }, 100);
return true; return true;
} else { } else {
// execute link triggers (want to reselect to execute triggers) // execute link triggers (want to reselect to execute triggers)
if(fieldtype=="Link")
if(fieldtype=="Link") {
frappe.model.trigger(fieldname, value, doc); frappe.model.trigger(fieldname, value, doc);
}
} }
}, },




+ 7
- 3
frappe/public/js/frappe/ui/dialog.js View File

@@ -56,16 +56,20 @@ frappe.ui.Dialog = frappe.ui.FieldGroup.extend({
console.log("Dialog: unable to focus on first input: " + e); console.log("Dialog: unable to focus on first input: " + e);
} }
} }
me.onshow && me.onshow();
me.on_page_show && me.on_page_show();
}) })




}, },
get_primary_btn: function() { get_primary_btn: function() {
return this.$wrapper.find(".modal-header .btn-primary").removeClass("hide");
return this.$wrapper.find(".modal-header .btn-primary");
}, },
set_primary_action: function(label, click) { set_primary_action: function(label, click) {
return this.get_primary_btn().html(label).click(click);
this.has_primary_action = true;
return this.get_primary_btn()
.removeClass("hide")
.html(label)
.click(click);
}, },
make_head: function() { make_head: function() {
var me = this; var me = this;


+ 6
- 5
frappe/public/js/frappe/ui/field_group.js View File

@@ -19,11 +19,10 @@ frappe.ui.FieldGroup = frappe.ui.form.Layout.extend({
this.refresh(); this.refresh();
// set default // set default
$.each(this.fields_list, function(i, f) { $.each(this.fields_list, function(i, f) {
if(f.df["default"]) f.set_input(f.df["default"]);
if(f.df["default"])
f.set_input(f.df["default"]);
}) })
if(!this.no_submit_on_enter) { if(!this.no_submit_on_enter) {
$(this.body).find("[data-fieldtype='Button']").filter(":first")
.removeClass("btn-default").addClass("btn-primary");
this.catch_enter_as_submit(); this.catch_enter_as_submit();
} }
} }
@@ -33,8 +32,10 @@ frappe.ui.FieldGroup = frappe.ui.form.Layout.extend({
var me = this; var me = this;
$(this.body).find('input[type="text"], input[type="password"]').keypress(function(e) { $(this.body).find('input[type="text"], input[type="password"]').keypress(function(e) {
if(e.which==13) { if(e.which==13) {
e.preventDefault();
$(me.body).find('.btn-primary:first').click();
if(this.has_primary_action) {
e.preventDefault();
this.get_primary_btn().trigger("click");
}
} }
}); });
}, },


+ 2
- 1
frappe/public/js/frappe/ui/page.js View File

@@ -108,6 +108,7 @@ frappe.ui.Page = Class.extend({
label = this.get_icon_label(icon, label); label = this.get_icon_label(icon, label);
} }


this.clear_primary_action();
this.btn_primary.removeClass("hide").prop("disabled", false).html(label).on("click", click); this.btn_primary.removeClass("hide").prop("disabled", false).html(label).on("click", click);
}, },


@@ -120,7 +121,7 @@ frappe.ui.Page = Class.extend({
}, },


clear_primary_action: function() { clear_primary_action: function() {
this.btn_primary.addClass("hide");
this.btn_primary.addClass("hide").unbind("click");
}, },


clear_actions: function() { clear_actions: function() {


+ 1
- 1
frappe/public/js/frappe/ui/toolbar/about.js View File

@@ -18,7 +18,7 @@ frappe.ui.misc.about = function() {


frappe.ui.misc.about_dialog = d; frappe.ui.misc.about_dialog = d;


frappe.ui.misc.about_dialog.onshow = function() {
frappe.ui.misc.about_dialog.on_page_show = function() {
if(!frappe.versions) { if(!frappe.versions) {
frappe.call({ frappe.call({
method: "frappe.get_versions", method: "frappe.get_versions",


+ 1
- 1
frappe/public/js/frappe/views/communication.js View File

@@ -148,7 +148,7 @@ frappe.views.CommunicationComposer = Class.extend({
} }
} }


this.dialog.onshow = function() {
this.dialog.on_page_show = function() {
if (cur_frm && cur_frm.docname && !me.txt && if (cur_frm && cur_frm.docname && !me.txt &&
(frappe.last_edited_communication[cur_frm.doctype] || {})[cur_frm.docname]) { (frappe.last_edited_communication[cur_frm.doctype] || {})[cur_frm.docname]) {




+ 1
- 5
frappe/public/js/frappe/views/container.js View File

@@ -20,16 +20,12 @@ frappe.views.Container = Class.extend({
$("body").attr("data-route", frappe.get_route_str()); $("body").attr("data-route", frappe.get_route_str());
}); });
}, },
add_page: function(label, onshow, onhide) {
add_page: function(label) {
var page = $('<div class="content page-container"></div>') var page = $('<div class="content page-container"></div>')
.attr('id', "page-" + label) .attr('id', "page-" + label)
.attr("data-page-route", label) .attr("data-page-route", label)
.toggle(false) .toggle(false)
.appendTo(this.container).get(0); .appendTo(this.container).get(0);
if(onshow)
$(page).bind('show', onshow);
if(onshow)
$(page).bind('hide', onhide);
page.label = label; page.label = label;
frappe.pages[label] = page; frappe.pages[label] = page;




+ 6
- 8
frappe/public/js/frappe/views/pageview.js View File

@@ -78,20 +78,18 @@ frappe.views.Page = Class.extend({
frappe.dom.set_style(this.pagedoc.style || ''); frappe.dom.set_style(this.pagedoc.style || '');
} }


this.trigger('onload');
this.trigger_page_event('on_page_load');


// set events // set events
$(this.wrapper).bind('show', function() {
$(this.wrapper).on('show', function() {
cur_frm = null; cur_frm = null;
me.trigger('onshow');
me.trigger('refresh');
me.trigger_page_event('on_page_show');
me.trigger_page_event('refresh');
}); });
}, },
trigger: function(eventname) {
trigger_page_event: function(eventname) {
var me = this; var me = this;
if(pscript[eventname+'_'+this.name]) {
pscript[eventname+'_'+this.name](me.wrapper);
} else if(me.wrapper[eventname]) {
if(me.wrapper[eventname]) {
me.wrapper[eventname](me.wrapper); me.wrapper[eventname](me.wrapper);
} }
} }


+ 3
- 0
frappe/public/js/legacy/clientscriptAPI.js View File

@@ -207,6 +207,9 @@ _f.Frm.prototype.set_value = function(field, value, if_missing) {
frappe.model.set_value(me.doctype, me.doc.name, f, v); frappe.model.set_value(me.doctype, me.doc.name, f, v);
} }
} }
} else {
msgprint("Field " + f + " not found.");
throw "frm.set_value";
} }
} }




+ 0
- 7
frappe/public/js/legacy/globals.js View File

@@ -7,10 +7,6 @@ frappe.provide('frappe.utils');
frappe.provide('frappe.model'); frappe.provide('frappe.model');
frappe.provide('frappe.user'); frappe.provide('frappe.user');
frappe.provide('frappe.session'); frappe.provide('frappe.session');
frappe.provide('_f');
frappe.provide('_p');
frappe.provide('_r');
frappe.provide('_startup_data')
frappe.provide('locals') frappe.provide('locals')
frappe.provide('locals.DocType') frappe.provide('locals.DocType')


@@ -29,8 +25,6 @@ var user_fullname=null;
var user_email=null; var user_email=null;
var user_img = {}; var user_img = {};


var pscript = {};

// Name Spaces // Name Spaces
// ============ // ============


@@ -43,4 +37,3 @@ var FILTER_SEP = '\1';
// API globals // API globals
var frms={}; var frms={};
var cur_frm=null; var cur_frm=null;
var pscript = {};

+ 0
- 1
frappe/public/js/legacy/loaders.js View File

@@ -32,7 +32,6 @@ function new_doc(doctype, in_form) {
} }
var newdoc = new_doc; var newdoc = new_doc;


var pscript={};
function loadpage(page_name, call_back, no_history) { function loadpage(page_name, call_back, no_history) {
frappe.set_route(page_name); frappe.set_route(page_name);
} }


+ 1
- 1
frappe/public/js/legacy/print_format.js View File

@@ -84,7 +84,7 @@ $.extend(_p, {
); );
}); });


dialog.onshow = function() {
dialog.on_page_show = function() {
var $print = dialog.fields_dict.print_format.$input; var $print = dialog.fields_dict.print_format.$input;
$print.empty().add_options(cur_frm.print_preview.print_formats); $print.empty().add_options(cur_frm.print_preview.print_formats);




Loading…
Cancel
Save