Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Dashboard fixes #11074

Merged
merged 11 commits into from Jul 27, 2020
5 changes: 0 additions & 5 deletions frappe/core/page/dashboard/dashboard.css

This file was deleted.

7 changes: 0 additions & 7 deletions frappe/core/page/dashboard/dashboard.js
Expand Up @@ -26,13 +26,6 @@ class Dashboard {
</div>`).appendTo(this.wrapper.find(".page-content").empty());
this.container = this.wrapper.find(".dashboard-graph");
this.page = wrapper.page;

this.page.set_title_sub(
$(`<button class="restricted-button">
<span class="octicon octicon-lock"></span>
<span>${__('Restricted')}</span>
</button>`)
);
}

show() {
Expand Down
2 changes: 1 addition & 1 deletion frappe/desk/doctype/dashboard/dashboard.js
Expand Up @@ -5,7 +5,7 @@ frappe.ui.form.on('Dashboard', {
refresh: function(frm) {
frm.add_custom_button(__("Show Dashboard"), () => frappe.set_route('dashboard', frm.doc.name));

if (!frappe.boot.developer_mode) {
if (!frappe.boot.developer_mode && frm.doc.is_standard) {
frm.disable_form();
}

Expand Down
5 changes: 3 additions & 2 deletions frappe/desk/doctype/dashboard/dashboard.json
Expand Up @@ -54,7 +54,8 @@
"default": "0",
"fieldname": "is_standard",
"fieldtype": "Check",
"label": "Is Standard"
"label": "Is Standard",
"read_only_depends_on": "eval: !frappe.boot.developer_mode"
},
{
"depends_on": "eval: doc.is_standard",
Expand All @@ -66,7 +67,7 @@
}
],
"links": [],
"modified": "2020-07-10 17:48:19.468813",
"modified": "2020-07-23 11:05:41.890459",
"modified_by": "Administrator",
"module": "Desk",
"name": "Dashboard",
Expand Down
38 changes: 8 additions & 30 deletions frappe/desk/doctype/dashboard_chart/dashboard_chart.js
Expand Up @@ -28,38 +28,16 @@ frappe.ui.form.on('Dashboard Chart', {
}

frm.add_custom_button('Add Chart to Dashboard', () => {
const d = new frappe.ui.Dialog({
title: __('Add to Dashboard'),
fields: [
{
label: __('Select Dashboard'),
fieldtype: 'Link',
fieldname: 'dashboard',
options: 'Dashboard',
}
],
primary_action: (values) => {
values.chart_name = frm.doc.chart_name;
frappe.xcall(
'frappe.desk.doctype.dashboard_chart.dashboard_chart.add_chart_to_dashboard',
{args: values}
).then(()=> {
let dashboard_route_html =
`<a href = "#dashboard/${values.dashboard}">${values.dashboard}</a>`;
let message =
__(`Dashboard Chart ${values.chart_name} add to Dashboard ` + dashboard_route_html);

frappe.msgprint(message);
});

d.hide();
}
});
const dialog = frappe.dashboard_utils.get_add_to_dashboard_dialog(
frm.doc.name,
'Dashboard Chart',
'frappe.desk.doctype.dashboard_chart.dashboard_chart.add_chart_to_dashboard'
);

if (!frm.doc.chart_name) {
frappe.msgprint(__('Please create chart first'));
} else {
d.show();
dialog.show();
}
});

Expand Down Expand Up @@ -313,7 +291,7 @@ frappe.ui.form.on('Dashboard Chart', {
set_filters && frm.set_value('filters_json', JSON.stringify(filters));
}

let fields;
let fields = [];
if (is_document_type) {
fields = [
{
Expand All @@ -338,7 +316,7 @@ frappe.ui.form.on('Dashboard Chart', {
} else if (frm.chart_filters.length) {
fields = frm.chart_filters.filter(f => f.fieldname);

fields.map( f => {
fields.map(f => {
if (filters[f.fieldname]) {
let condition = '=';
const filter_row =
Expand Down
5 changes: 3 additions & 2 deletions frappe/desk/doctype/dashboard_chart/dashboard_chart.json
Expand Up @@ -240,7 +240,8 @@
"default": "0",
"fieldname": "is_standard",
"fieldtype": "Check",
"label": "Is Standard"
"label": "Is Standard",
"read_only_depends_on": "eval: !frappe.boot.developer_mode"
},
{
"depends_on": "eval: doc.is_standard",
Expand Down Expand Up @@ -270,7 +271,7 @@
}
],
"links": [],
"modified": "2020-07-21 16:37:07.763482",
"modified": "2020-07-23 11:10:33.509497",
"modified_by": "Administrator",
"module": "Desk",
"name": "Dashboard Chart",
Expand Down
8 changes: 7 additions & 1 deletion frappe/desk/doctype/dashboard_chart/dashboard_chart.py
Expand Up @@ -128,7 +128,13 @@ def add_chart_to_dashboard(args):

dashboard = frappe.get_doc('Dashboard', args.dashboard)
dashboard_link = frappe.new_doc('Dashboard Chart Link')
dashboard_link.chart = args.chart_name
dashboard_link.chart = args.chart_name or args.name

if args.set_standard:
chart = frappe.get_doc('Dashboard Chart', dashboard_link.chart)
chart.is_standard = 1
chart.module = dashboard.module
chart.save()

dashboard.append('charts', dashboard_link)
dashboard.save()
Expand Down
39 changes: 8 additions & 31 deletions frappe/desk/doctype/number_card/number_card.js
Expand Up @@ -32,40 +32,16 @@ frappe.ui.form.on('Number Card', {

create_add_to_dashboard_button: function(frm) {
frm.add_custom_button('Add Card to Dashboard', () => {
const d = new frappe.ui.Dialog({
title: __('Add to Dashboard'),
fields: [
{
label: __('Select Dashboard'),
fieldtype: 'Link',
fieldname: 'dashboard',
options: 'Dashboard',
}
],
primary_action: (values) => {
values.name = frm.doc.name;
frappe.xcall(
'frappe.desk.doctype.number_card.number_card.add_card_to_dashboard',
{
args: values
}
).then(()=> {
let dashboard_route_html =
`<a href = "#dashboard/${values.dashboard}">${values.dashboard}</a>`;
let message =
__(`Number Card ${values.name} add to Dashboard ` + dashboard_route_html);

frappe.msgprint(message);
});

d.hide();
}
});
const dialog = frappe.dashboard_utils.get_add_to_dashboard_dialog(
frm.doc.name,
'Number Card',
'frappe.desk.doctype.number_card.number_card.add_card_to_dashboard'
);

if (!frm.doc.name) {
frappe.msgprint(__('Please create Card first'));
} else {
d.show();
dialog.show();
}
});
},
Expand Down Expand Up @@ -140,6 +116,7 @@ frappe.ui.form.on('Number Card', {
},

report_name: function(frm) {
frm.filters = [];
frm.set_value('filters_json', '{}');
frm.set_value('dynamic_filters_json', '{}');
frm.set_df_property('report_field', 'options', []);
Expand Down Expand Up @@ -271,7 +248,7 @@ frappe.ui.form.on('Number Card', {
set_filters && frm.set_value('filters_json', JSON.stringify(filters));
}

let fields;
let fields = [];
if (is_document_type) {
fields = [
{
Expand Down
5 changes: 3 additions & 2 deletions frappe/desk/doctype/number_card/number_card.json
Expand Up @@ -115,7 +115,8 @@
"default": "0",
"fieldname": "is_standard",
"fieldtype": "Check",
"label": "Is Standard"
"label": "Is Standard",
"read_only_depends_on": "eval: !frappe.boot.developer_mode"
},
{
"depends_on": "eval: doc.is_standard",
Expand Down Expand Up @@ -190,7 +191,7 @@
}
],
"links": [],
"modified": "2020-07-18 17:08:22.882538",
"modified": "2020-07-23 11:11:03.391719",
"modified_by": "Administrator",
"module": "Desk",
"name": "Number Card",
Expand Down
6 changes: 6 additions & 0 deletions frappe/desk/doctype/number_card/number_card.py
Expand Up @@ -172,5 +172,11 @@ def add_card_to_dashboard(args):
dashboard_link = frappe.new_doc('Number Card Link')
dashboard_link.card = args.name

if args.set_standard:
card = frappe.get_doc('Number Card', dashboard_link.card)
card.is_standard = 1
card.module = dashboard.module
card.save()

dashboard.append('cards', dashboard_link)
dashboard.save()
1 change: 1 addition & 0 deletions frappe/patches.txt
Expand Up @@ -295,3 +295,4 @@ frappe.patches.v13_0.update_date_filters_in_user_settings
frappe.patches.v13_0.update_duration_options
frappe.patches.v13_0.replace_old_data_import # 2020-06-24
frappe.patches.v13_0.create_custom_dashboards_cards_and_charts
frappe.patches.v13_0.rename_is_custom_field_in_dashboard_chart
@@ -1,22 +1,17 @@
import frappe
from frappe.model.naming import append_number_if_name_exists
from frappe.utils.dashboard import get_dashboards_with_link
from frappe.model.utils.rename_field import rename_field

def execute():
if not frappe.db.table_exists('Dashboard Chart')\
or not frappe.db.table_exists('Number Card')\
or not frappe.db.table_exists('Dashboard'):
return


frappe.reload_doc('desk', 'doctype', 'dashboard_chart')
frappe.reload_doc('desk', 'doctype', 'number_card')
frappe.reload_doc('desk', 'doctype', 'dashboard')

if frappe.db.has_column('Dashboard Chart', 'is_custom'):
rename_field('Dashboard Chart', 'is_custom', 'use_report_chart')

modified_charts = get_modified_docs('Dashboard Chart')
modified_cards = get_modified_docs('Number Card')
modified_dashboards = [doc.name for doc in get_modified_docs('Dashboard')]
Expand Down
11 changes: 11 additions & 0 deletions frappe/patches/v13_0/rename_is_custom_field_in_dashboard_chart.py
@@ -0,0 +1,11 @@
import frappe
from frappe.model.utils.rename_field import rename_field

def execute():
if not frappe.db.table_exists('Dashboard Chart'):
return

frappe.reload_doc('desk', 'doctype', 'dashboard_chart')

if frappe.db.has_column('Dashboard Chart', 'is_custom'):
rename_field('Dashboard Chart', 'is_custom', 'use_report_chart')
49 changes: 49 additions & 0 deletions frappe/public/js/frappe/utils/dashboard_utils.js
Expand Up @@ -199,6 +199,55 @@ frappe.dashboard_utils = {
}

return filters;
},

get_dashboard_link_field() {
let field = {
label: __('Select Dashboard'),
fieldtype: 'Link',
fieldname: 'dashboard',
options: 'Dashboard',
};

if (!frappe.boot.developer_mode) {
field.get_query = () => {
return {
filters: {
is_standard: 0
}
};
};
}

return field;
},

get_add_to_dashboard_dialog(docname, doctype, method) {
const field = this.get_dashboard_link_field();

const dialog = new frappe.ui.Dialog({
title: __('Add to Dashboard'),
fields: [field],
primary_action: (values) => {
values.name = docname;
values.set_standard = frappe.boot.developer_mode;
frappe.xcall(
method,
{args: values}
).then(()=> {
let dashboard_route_html =
`<a href = "#dashboard/${values.dashboard}">${values.dashboard}</a>`;
let message =
__(`${doctype} ${values.name} added to Dashboard ` + dashboard_route_html);

frappe.msgprint(message);
});

dialog.hide();
}
});

return dialog;
}

};
4 changes: 0 additions & 4 deletions frappe/public/js/frappe/views/dashboard/dashboard_view.js
Expand Up @@ -44,10 +44,6 @@ frappe.views.DashboardView = class DashboardView extends frappe.views.ListView {
<div class="text-muted">
<span class="uppercase header-title"> ${dashboard_name} </span>
</div>
<button class="restricted-button">
<span class="octicon octicon-lock"></span>
<span>${__('Restricted')}</span>
</button>
<div class="text-muted customize-dashboard" data-action="customize">${__('Customize')}</div>
<div class="small text-muted customize-options small-bounce">
<span class="reset-customization customize-option" data-action="reset_dashboard_customization">${__('Reset')}</span>
Expand Down