You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
278 lines
12 KiB
278 lines
12 KiB
odoo.define('fleet_dashboard.dashboard_action', function(require) {
|
|
"use strict";
|
|
var AbstractAction = require('web.AbstractAction');
|
|
var core = require('web.core');
|
|
var QWeb = core.qweb;
|
|
var ajax = require('web.ajax');
|
|
var FleetDashBoard = AbstractAction.extend({
|
|
template: 'FleetDashBoard',
|
|
events: {
|
|
'click #fleet_manufacturers': '_onClickManufacturers',
|
|
'click #fleet_models': '_onClickModels',
|
|
'click #fleet_vehicles': '_onClickVehicles',
|
|
'click #fleet_contracts': '_onClickContracts',
|
|
'click #fleet_odometer': '_onClickOdoMeter',
|
|
'click #fleet_services': '_onClickServices',
|
|
'change #driver_selection': '_onchangeFilter',
|
|
'change #vehicle_selection': '_onchangeFilter',
|
|
'change #date_filter': '_onchangeFilter',
|
|
'change #manufacturers_selection': '_onchangeFilter',
|
|
},
|
|
/**
|
|
* Getting data after filtration
|
|
*/
|
|
_onchangeFilter: function() {
|
|
var self = this;
|
|
ajax.jsonRpc('/fleet_dashboard/filter_data', 'call', {'data': {
|
|
'date': self.$el.find('#date_filter').val(),
|
|
'vehicle': self.$el.find('#vehicle_selection').val(),
|
|
'driver': self.$el.find('#driver_selection').val(),
|
|
'manufacturer': self.$el.find('#manufacturers_selection').val()
|
|
}}).then(function(result) {
|
|
self.admin_odometer_list = result[3]
|
|
self.admin_fleet_cost_list = result[4]
|
|
self.admin_recurring_list = result[5]
|
|
self.fleet_vehicle_list = result[6]
|
|
self.fleet_model_list = result[7]
|
|
self.fleet_manufacture_list = result[8]
|
|
self.$el.find('#odometer_value').html(result[0]);
|
|
self.$el.find('#odometer_value2').html(result[0]);
|
|
self.$el.find('#service_value').html(result[1]);
|
|
self.$el.find('#service_value2').html(result[1]);
|
|
self.$el.find('#recurring_value').html(result[2]);
|
|
self.$el.find('#recurring_value2').html(result[2]);
|
|
})
|
|
},
|
|
/**
|
|
* Checking whether the filter is applied or not
|
|
*/
|
|
_onClickManufacturers: function() {
|
|
if (this.flag == 0) {
|
|
this.OpenVehicleModelBrand(this.manufacture_list)
|
|
} else {
|
|
this.OpenVehicleModelBrand(this.fleet_manufacture_list)
|
|
}
|
|
},
|
|
/**
|
|
* Opening "fleet.vehicle.model.brand" kanban view
|
|
*/
|
|
OpenVehicleModelBrand: function(domain){
|
|
this.do_action({
|
|
type: 'ir.actions.act_window',
|
|
name: 'Manufacturers',
|
|
res_model: 'fleet.vehicle.model.brand',
|
|
domain: [["id", "in", domain]],
|
|
view_mode: 'kanban',
|
|
views: [[false, 'kanban'],[false, 'form']],
|
|
target: 'self'
|
|
});
|
|
},
|
|
/**
|
|
* Checking whether the filter is applied or not
|
|
*/
|
|
_onClickModels: function() {
|
|
if (this.flag == 0){
|
|
this.OpenVehicleModel(this.model_list)
|
|
} else {
|
|
this.OpenVehicleModel(this.fleet_model_list)
|
|
}
|
|
},
|
|
/**
|
|
* Opening "fleet.vehicle.model" kanban view
|
|
*/
|
|
OpenVehicleModel: function(domain){
|
|
this.do_action({
|
|
type: 'ir.actions.act_window',
|
|
name: 'Models',
|
|
res_model: 'fleet.vehicle.model',
|
|
domain: [["id", "in", domain]],
|
|
view_mode: 'kanban',
|
|
views: [[false, 'kanban'],[false, 'form']],
|
|
target: 'self'
|
|
});
|
|
},
|
|
/**
|
|
* Opening "fleet.vehicle" kanban view
|
|
*/
|
|
_onClickVehicles: function() {
|
|
if (this.flag == 1) {
|
|
this.do_action({
|
|
type: 'ir.actions.act_window',
|
|
name: 'Vehicles',
|
|
res_model: 'fleet.vehicle',
|
|
view_mode: 'kanban',
|
|
views: [[false, 'kanban'],[false, 'form']],
|
|
domain: [["id", "in", this.fleet_vehicle_list]],
|
|
target: 'self'
|
|
});
|
|
}
|
|
},
|
|
/**
|
|
* Opening "fleet.vehicle.log.contract" list view
|
|
*/
|
|
_onClickContracts: function() {
|
|
if (this.flag == 1) {
|
|
this.do_action({
|
|
type: 'ir.actions.act_window',
|
|
name: 'Vehicles',
|
|
res_model: 'fleet.vehicle.log.contract',
|
|
domain: [["id", "in", this.admin_recurring_list]],
|
|
view_mode: 'kanban',
|
|
views: [[false, 'list'],[false, 'form']],
|
|
target: 'self'
|
|
});
|
|
}
|
|
},
|
|
/**
|
|
* Opening "fleet.vehicle.log.services" list view
|
|
*/
|
|
_onClickServices: function() {
|
|
if (this.flag == 1) {
|
|
this.do_action({
|
|
type: 'ir.actions.act_window',
|
|
name: 'Services',
|
|
res_model: 'fleet.vehicle.log.services',
|
|
domain: [["id", "in", this.admin_fleet_cost_list]],
|
|
view_mode: 'list',
|
|
views: [[false, 'list'],[false, 'form']],
|
|
target: 'self'
|
|
});
|
|
}
|
|
},
|
|
/**
|
|
* Opening "fleet.vehicle.odometer" list view
|
|
*/
|
|
_onClickOdoMeter: function() {
|
|
if (this.flag == 1) {
|
|
this.do_action({
|
|
type: 'ir.actions.act_window',
|
|
name: 'Odometers',
|
|
res_model: 'fleet.vehicle.odometer',
|
|
domain: [["id", "in", this.admin_odometer_list]],
|
|
view_mode: 'list',
|
|
views: [[false, 'list'],[false, 'form']],
|
|
target: 'self'
|
|
});
|
|
}
|
|
},
|
|
init: function(parent, context) {
|
|
this._super(parent, context);
|
|
this.dashboards_templates = ['FleetDashBoard'];
|
|
},
|
|
willStart: function() {
|
|
var self = this;
|
|
return $.when(this._super()).then(function() {
|
|
return self.fetch_data();
|
|
});
|
|
},
|
|
start: function() {
|
|
var self = this;
|
|
this.set("title", 'Dashboard');
|
|
return this._super().then(function() {
|
|
self.render_filter();
|
|
self.render_dashboards();
|
|
});
|
|
},
|
|
/**
|
|
* Appending values to the template
|
|
*/
|
|
render_dashboards: function() {
|
|
var self = this;
|
|
_.each(this.dashboards_templates, function(template) {
|
|
self.$('.fleet_oh_dashboards').append(QWeb.render(template, {
|
|
widget: self
|
|
}));
|
|
});
|
|
},
|
|
/**
|
|
* Getting data to selection field
|
|
*/
|
|
render_filter: function() {
|
|
var self = this;
|
|
ajax.rpc('/fleet/filter').then(function(data) {
|
|
var drivers = data[0]
|
|
var vehicles = data[1]
|
|
var manufacturers = data[2]
|
|
for (var i = 0; i < vehicles.length; i++) {
|
|
self.$el.find('#vehicle_selection').append("<option value=" + vehicles[i].id + " style='background-color:#827c93;'>" + vehicles[i].name + "</option>");
|
|
}
|
|
for (var i = 0; i < drivers.length; i++) {
|
|
self.$el.find('#driver_selection').append("<option value=" + drivers[i].id + " style='background-color:#827c93;'>" + drivers[i].name + "</option>");
|
|
}
|
|
for (var i = 0; i <manufacturers.length; i++) {
|
|
self.$el.find('#manufacturers_selection').append("<option value=" + manufacturers[i].id + " style='background-color:#827c93;'>" + manufacturers[i].name + "</option>");
|
|
}
|
|
})
|
|
},
|
|
/**
|
|
* Getting data to the window
|
|
*/
|
|
fetch_data: function() {
|
|
var self = this;
|
|
var def1 = this._rpc({
|
|
model: 'fleet.vehicle',
|
|
method: 'get_tiles_data'
|
|
}).then(function(result) {
|
|
self.total_odometer = result['total_odometer']
|
|
self.service_cost = result['service_cost']
|
|
self.recurring_cost = result['recurring_cost']
|
|
self.all_vehicles = result['all_vehicles']
|
|
self.fleet_state = result['fleet_state']
|
|
self.flag = result['flag']
|
|
if (self.flag == 0) {
|
|
self.manufacture_list = result['manufacture_list']
|
|
self.model_list = result['model_list']
|
|
} else {
|
|
self.admin_odometer_list = result['admin_odometer_list']
|
|
self.admin_fleet_cost_list = result['admin_fleet_cost_list']
|
|
self.admin_recurring_list = result['admin_recurring_list']
|
|
self.fleet_vehicle_list = result['fleet_vehicle_list']
|
|
self.fleet_model_list = result['fleet_model_list']
|
|
self.fleet_manufacture_list = result['fleet_manufacture_list']
|
|
}
|
|
google.charts.load('current', {
|
|
'packages': ['corechart']
|
|
});
|
|
google.charts.setOnLoadCallback(drawChart);
|
|
//Function for drawing chart
|
|
function drawChart() {
|
|
try {
|
|
var data = google.visualization.arrayToDataTable(result['odometer_value_list']);
|
|
var options = {
|
|
title: 'Odometer Reading Monthly Wise',
|
|
hAxis: {title: 'Month'},
|
|
vAxis: {title: 'Odometer Values'},
|
|
legend: 'none',
|
|
pointsVisible: true,
|
|
};
|
|
var line_chart = new google.visualization.LineChart(self.el.querySelector('#lineChart'));
|
|
line_chart.draw(data, options);
|
|
var service_data = google.visualization.arrayToDataTable(result['service_type']);
|
|
var service_options = {
|
|
title: 'Service Types',
|
|
pieHole: 0.4
|
|
};
|
|
var service_chart = new google.visualization.PieChart(self.el.querySelector('#service_Chart'));
|
|
service_chart.draw(service_data, service_options);
|
|
var data = google.visualization.arrayToDataTable(result['service_cost_list']);
|
|
var options = {
|
|
title: ' Service Cost Last Six Months',
|
|
vAxis: {
|
|
gridlines: {color: 'transparent'},
|
|
title: 'Service Cost'
|
|
},
|
|
legend: 'none',
|
|
};
|
|
var chart = new google.visualization.ColumnChart(self.el.querySelector('#barChart'));
|
|
chart.draw(data, options);
|
|
} catch (e) {
|
|
self.fetch_data();
|
|
}
|
|
}
|
|
});
|
|
return $.when(def1);
|
|
},
|
|
})
|
|
core.action_registry.add('fleet_dashboard_tags', FleetDashBoard);
|
|
return FleetDashBoard;
|
|
})
|
|
|