Rushabh Mehta
12 years ago
6 changed files with 145 additions and 0 deletions
@ -0,0 +1,91 @@ |
|||
wn.pages['support-analytics'].onload = function(wrapper) { |
|||
wn.ui.make_app_page({ |
|||
parent: wrapper, |
|||
title: 'Support Analytics', |
|||
single_column: true |
|||
}); |
|||
|
|||
new erpnext.SupportAnalytics(wrapper); |
|||
|
|||
wrapper.appframe.add_home_breadcrumb() |
|||
wrapper.appframe.add_module_breadcrumb("Support") |
|||
wrapper.appframe.add_breadcrumb("icon-bar-chart") |
|||
} |
|||
|
|||
erpnext.SupportAnalytics = wn.views.GridReportWithPlot.extend({ |
|||
init: function(wrapper) { |
|||
this._super({ |
|||
title: "Support Analtyics", |
|||
page: wrapper, |
|||
parent: $(wrapper).find('.layout-main'), |
|||
appframe: wrapper.appframe, |
|||
doctypes: ["Support Ticket", "Fiscal Year"], |
|||
}); |
|||
}, |
|||
|
|||
filters: [ |
|||
{fieldtype:"Select", label: "Fiscal Year", link:"Fiscal Year", |
|||
default_value: "Select Fiscal Year..."}, |
|||
{fieldtype:"Date", label: "From Date"}, |
|||
{fieldtype:"Label", label: "To"}, |
|||
{fieldtype:"Date", label: "To Date"}, |
|||
{fieldtype:"Select", label: "Range", |
|||
options:["Daily", "Weekly", "Monthly", "Quarterly", "Yearly"]}, |
|||
{fieldtype:"Button", label: "Refresh", icon:"icon-refresh icon-white", cssClass:"btn-info"}, |
|||
{fieldtype:"Button", label: "Reset Filters"} |
|||
], |
|||
|
|||
setup_columns: function() { |
|||
var std_columns = [ |
|||
{id: "check", name: "Plot", field: "check", width: 30, |
|||
formatter: this.check_formatter}, |
|||
{id: "status", name: "Status", field: "status", width: 100}, |
|||
]; |
|||
this.make_date_range_columns(); |
|||
this.columns = std_columns.concat(this.columns); |
|||
}, |
|||
|
|||
prepare_data: function() { |
|||
// add Opening, Closing, Totals rows
|
|||
// if filtered by account and / or voucher
|
|||
var me = this; |
|||
var total_tickets = {status:"All Tickets", "id": "all-tickets", |
|||
checked:true}; |
|||
var days_to_close = {status:"Days to Close", "id":"days-to-close", |
|||
checked:false}; |
|||
var hours_to_close = {status:"Hours to Close", "id":"hours-to-close", |
|||
checked:false}; |
|||
|
|||
|
|||
$.each(wn.report_dump.data["Support Ticket"], function(i, d) { |
|||
var dateobj = dateutil.str_to_obj(d.creation); |
|||
var date = d.creation.split(" ")[0]; |
|||
var col = me.column_map[date]; |
|||
if(col) { |
|||
// just count
|
|||
var day_diff = dateutil.get_diff(d.modified, d.creation); |
|||
var hour_diff = dateutil.get_hour_diff(d.modified, d.creation); |
|||
|
|||
total_tickets[col.field] = flt(total_tickets[col.field]) + 1; |
|||
days_to_close[col.field] = flt(days_to_close[col.field]) + day_diff; |
|||
hours_to_close[col.field] = flt(hours_to_close[col.field]) + hour_diff; |
|||
} |
|||
}); |
|||
|
|||
// make averages
|
|||
$.each(this.columns, function(i, col) { |
|||
if(col.formatter==me.currency_formatter && total_tickets[col.field]) { |
|||
days_to_close[col.field] = flt(days_to_close[col.field]) / flt(total_tickets[col.field]); |
|||
hours_to_close[col.field] = flt(hours_to_close[col.field]) / flt(total_tickets[col.field]); |
|||
} |
|||
}) |
|||
|
|||
this.data = [total_tickets, days_to_close, hours_to_close]; |
|||
}, |
|||
|
|||
get_plot_points: function(item, col, idx) { |
|||
return [[dateutil.str_to_obj(col.id).getTime(), item[col.field]], |
|||
[dateutil.user_to_obj(col.name).getTime(), item[col.field]]]; |
|||
} |
|||
|
|||
}); |
@ -0,0 +1,32 @@ |
|||
[ |
|||
{ |
|||
"owner": "Administrator", |
|||
"docstatus": 0, |
|||
"creation": "2013-01-04 15:31:45", |
|||
"modified_by": "Administrator", |
|||
"modified": "2013-01-04 15:38:44" |
|||
}, |
|||
{ |
|||
"name": "__common__", |
|||
"title": "Support Analytics", |
|||
"doctype": "Page", |
|||
"module": "Support", |
|||
"standard": "Yes", |
|||
"page_name": "support-analytics" |
|||
}, |
|||
{ |
|||
"name": "__common__", |
|||
"parent": "support-analytics", |
|||
"doctype": "Page Role", |
|||
"parenttype": "Page", |
|||
"role": "Support Team", |
|||
"parentfield": "roles" |
|||
}, |
|||
{ |
|||
"name": "support-analytics", |
|||
"doctype": "Page" |
|||
}, |
|||
{ |
|||
"doctype": "Page Role" |
|||
} |
|||
] |
Loading…
Reference in new issue