[cleanup] added dashboard in project

This commit is contained in:
Rushabh Mehta 2016-04-20 18:45:46 +05:30
parent b2b02a574a
commit 02772442b6
13 changed files with 88 additions and 30 deletions

View File

@ -7,6 +7,8 @@ frappe.ui.form.on("Supplier", {
frappe.setup_language_field(frm);
},
refresh: function(frm) {
frm.dashboard.show_heatmap = true;
frm.dashboard.heatmap_message = __('This is based on transactions against this Supplier. See timeline below for details');
frm.dashboard.show_dashboard();
if(frappe.defaults.get_default("supp_master_name")!="Naming Series") {

View File

@ -27,14 +27,6 @@ def get_data():
"type": "link",
"link": "List/Supplier"
},
{
"module_name": "Income Statement",
"_doctype": "Account",
"color": "#3498db",
"icon": "octicon octicon-repo",
"type": "link",
"link": "query-report/Profit and Loss Statement"
},
{
"_doctype": "Employee",
"module_name": "Employee",
@ -67,6 +59,14 @@ def get_data():
"type": "link",
"link": "List/Lead"
},
{
"module_name": "Profit and Loss Statment",
"_doctype": "Account",
"color": "#3498db",
"icon": "octicon octicon-repo",
"type": "link",
"link": "query-report/Profit and Loss Statement"
},
# old
{

View File

@ -25,6 +25,8 @@ erpnext.hr.EmployeeController = frappe.ui.form.Controller.extend({
refresh: function() {
var me = this;
erpnext.toggle_naming_series();
this.frm.dashboard.show_heatmap = true;
this.frm.dashboard.heatmap_message = __('This is based on the attendance of this Employee');
this.frm.dashboard.show_dashboard();
},

View File

@ -9,6 +9,7 @@ frappe.listview_settings['Production Order'] = {
return [__(doc.status), {
"Draft": "red",
"Stopped": "red",
"Not Started": "red",
"In Process": "orange",
"Completed": "green",
"Cancelled": "darkgrey"

View File

@ -3,6 +3,8 @@
frappe.ui.form.on("Project", {
onload: function(frm) {
frm.hide_first = true;
var so = frappe.meta.get_docfield("Project", "sales_order");
so.get_route_options_for_new_doc = function(field) {
if(frm.is_new()) return;
@ -40,26 +42,23 @@ frappe.ui.form.on("Project", {
frappe.route_options = {"project": frm.doc.name,
"start": frm.doc.expected_start_date, "end": frm.doc.expected_end_date};
frappe.set_route("Gantt", "Task");
}, __("View"), true);
frm.add_custom_button(__("Tasks"), function() {
frappe.route_options = {"project": frm.doc.name}
frappe.set_route("List", "Task");
}, __("View"), true);
});
}
if(frappe.model.can_read("Time Log")) {
frm.add_custom_button(__("Time Logs"), function() {
frappe.route_options = {"project": frm.doc.name}
frappe.set_route("List", "Time Log");
}, __("View"), true);
}
frm.dashboard.show_dashboard();
frm.dashboard.add_section(frappe.render_template('project_dashboard', {project: frm.doc}));
// var bars = [];
// bars.push({
// 'title': __('Percent Complete'),
// 'width': (frm.doc.percent_complete || 1) + '%',
// 'progress_class': 'progress-bar-success'
// })
//
// var message = __("{0}% complete", [frm.doc.percent_complete]);
//
// frm.dashboard.add_progress(__('Status'), bars, message);
if(frappe.model.can_read("Expense Claim")) {
frm.add_custom_button(__("Expense Claims"), function() {
frappe.route_options = {"project": frm.doc.name}
frappe.set_route("List", "Expense Claim");
}, __("View"), true);
}
}
}

View File

@ -26,6 +26,8 @@ class Project(Document):
"task_id": task.name
})
self.set_onload('links', self.meta.get_links_setup())
def __setup__(self):
self.onload()
@ -144,6 +146,16 @@ class Project(Document):
user.welcome_email_sent=1
@frappe.whitelist()
def get_dashboard_data(name):
'''load dashboard related data'''
frappe.has_permission(doc=frappe.get_doc('Project', name), throw=True)
from frappe.desk.notifications import get_open_count
return {
'count': get_open_count('Project', name),
}
def get_project_list(doctype, txt, filters, limit_start, limit_page_length=20):
return frappe.db.sql('''select distinct project.*
from tabProject project, `tabProject User` project_user

View File

@ -0,0 +1,10 @@
<h5 style="margin-top: 0px;">Tasks</h5>
{% if(project.tasks.length) { %}
{% project.tasks.forEach(function(d) { %}
<p><span class="indicator {{
{"Open": "red", "Closed": "green", "Cancelled": "darkgrey"}[d.status] || "orange" }}"><a style="font-weight: normal"
href="#Form/Task/{{ d.task_id }}">{{ d.title }}</a></span></p>
{% }); %}
{% } else { %}
<p class="text-muted small">No Tasks Defined</p>
{% } %}

View File

@ -0,0 +1,23 @@
from frappe import _
links = {
'fieldname': 'project',
'transactions': [
{
'label': _('Project'),
'items': ['Task', 'Time Log', 'Expense Claim', 'Issue']
},
{
'label': _('Material'),
'items': ['Material Request', 'BOM', 'Stock Entry']
},
{
'label': _('Sales'),
'items': ['Sales Order', 'Delivery Note', 'Sales Invoice']
},
{
'label': _('Purchase'),
'items': ['Purchase Order', 'Purchase Receipt', 'Purchase Invoice']
},
]
}

View File

@ -34,12 +34,12 @@ frappe.ui.form.on("Task", {
frm.add_custom_button(__("Close"), function() {
frm.set_value("status", "Closed");
frm.save();
}, __("Status"));
});
} else {
frm.add_custom_button(__("Reopen"), function() {
frm.set_value("status", "Open");
frm.save();
}, __("Status"));
});
}
}
}

View File

@ -7,6 +7,8 @@ frappe.ui.form.on("Customer", {
frappe.setup_language_field(frm);
},
refresh: function(frm) {
frm.dashboard.show_heatmap = true;
frm.dashboard.heatmap_message = __('This is based on transactions against this Customer. See timeline below for details');
frm.dashboard.show_dashboard();
if(frappe.defaults.get_default("cust_master_name")!="Naming Series") {

View File

@ -11,6 +11,10 @@ links = {
'label': _('Orders'),
'items': ['Sales Order', 'Delivery Note', 'Sales Invoice']
},
{
'label': _('Support'),
'items': ['Issue']
},
{
'label': _('Projects'),
'items': ['Project']

View File

@ -76,6 +76,9 @@ frappe.ui.form.on("Item", {
erpnext.item.toggle_attributes(frm);
frm.dashboard.show_heatmap = frm.doc.is_stock_item;
frm.dashboard.heatmap_message = __('This is based on stock movement. See {0} for details',
['<a href="#query-report/Stock Ledger">' + __('Stock Ledger') + '</a>']);
frm.dashboard.show_dashboard();
},

View File

@ -1,6 +1,6 @@
<div style="padding-left: 15px; padding-right: 15px;">
<h5>Stock Levels</h5>
<ul class="list-group">
<div>
<h5 style="margin-top: 0px;">Stock Levels</h5>
<ul class="list-group" style="margin: 0px;">
{% for(var i=0; i < data.length; i++) { var d = data[i]; %}
<li class="list-group-item" style="background-color: inherit;">
<div class="row">