Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // code style: https://github.com/johnpapa/angular-styleguide
- (function() {
- 'use strict';
- angular
- .module('app')
- .controller('RevenueCtrl', RevenueCtrl);
- function RevenueCtrl($scope, lead, $timeout) {
- var vm = $scope;
- google.charts.load('current', { 'packages': ['corechart', 'bar'] });
- var filter = {};
- vm.openLead = 0;
- vm.closeLead = 0;
- vm.convertedLead = 0;
- vm.hotLead = 0;
- vm.coldLead = 0;
- vm.todayCall = 0;
- vm.todayMeeting = 0;
- vm.thisMonthLead = 0;
- lead.getRevenueDashboardData(filter)
- .success(function(res) {
- vm.totalValue = res.totalValue;
- if ('OPEN' in res.leadStatus)
- vm.openLead = res.leadStatus.OPEN;
- if ('CLOSE' in res.leadStatus)
- vm.closeLead = res.leadStatus.CLOSE;
- if ('CONVERTED' in res.leadStatus)
- vm.convertedLead = res.leadStatus.CONVERTED;
- vm.totalLead = vm.openLead + vm.closeLead + vm.convertedLead;
- if ('HOT' in res.hotColdLeads)
- vm.hotLead = res.hotColdLeads.HOT;
- if ('COLD' in res.hotColdLeads)
- vm.coldLead = res.hotColdLeads.COLD;
- if (res.monthLeads.length > 0)
- vm.thisMonthLead = res.monthLeads[0].lead;
- if ('call' in res.todos)
- vm.todayCall = res.todos.call;
- if ('meeting' in res.todos)
- vm.todayMeeting = res.todos.meeting;
- vm.conversionRate = Math.round((vm.convertedLead / vm.totalLead) * 100);
- vm.conversionRate = isNaN(vm.conversionRate) ? 0 : vm.conversionRate;
- var loadMonthLeadGraphData = [];
- loadMonthLeadGraphData.push(['Month', 'Revenue']);
- angular.forEach(res.monthLeads, function(element, index) {
- var tempTime = moment().month(element._id.month - 1).format("MMM") + ' ' + element._id.year;
- loadMonthLeadGraphData.push([tempTime, element.revenue]);
- });
- loadMonthLeadGraph(loadMonthLeadGraphData)
- loadStageLeadGraph(res.stageLeads)
- loadWonLeadGraph(res.userWonLeads)
- var loadHotColdLeadGraphData = [];
- loadHotColdLeadGraphData.push(['Month', 'Leads']);
- for (var variable in res.hotColdLeads) {
- loadHotColdLeadGraphData.push([variable, res.hotColdLeads[variable]]);
- }
- loadHotColdLeadGraph(loadHotColdLeadGraphData)
- var loadCloseReasonLeadGraphData = [];
- loadCloseReasonLeadGraphData.push(['Reason', 'Leads']);
- for (var variable in res.closeLeads) {
- loadCloseReasonLeadGraphData.push([variable, res.closeLeads[variable]]);
- }
- loadCloseReasonLeadGraph(loadCloseReasonLeadGraphData)
- })
- .error(function(error) {
- })
- function loadMonthLeadGraph(loadMonthLeadGraphData) {
- google.charts.setOnLoadCallback(drawChart);
- function drawChart() {
- var data = google.visualization.arrayToDataTable(loadMonthLeadGraphData);
- var options = {
- title: 'Last five months report',
- height: 327,
- colors: ["blue"]
- };
- var chart = new google.charts.Bar(document.getElementById('month-leads'));
- chart.draw(data, google.charts.Bar.convertOptions(options));
- }
- }
- function loadWonLeadGraph(loadWonLeadGraphData) {
- google.charts.setOnLoadCallback(drawChart);
- function drawChart() {
- var data = google.visualization.arrayToDataTable(loadWonLeadGraphData);
- var options = {
- title: 'Lead converted by person',
- width: 550,
- height: 400,
- legend: { position: 'top', maxLines: 3 },
- bar: { groupWidth: '75%' },
- isStacked: true,
- vAxis: {
- title: 'Revenue'
- }
- };
- var chart = new google.charts.Bar(document.getElementById('won-leads'));
- chart.draw(data, google.charts.Bar.convertOptions(options));
- }
- }
- function loadStageLeadGraph(loadStageLeadGraphData) {
- google.charts.setOnLoadCallback(drawChart);
- function drawChart() {
- var data = new google.visualization.arrayToDataTable(loadStageLeadGraphData);
- var options = {
- height: 400,
- chart: {
- title: 'Lead by Stages'
- },
- series: {
- 0: { axis: 'lead' }, // Bind series 0 to an axis named 'distance'.
- 1: { axis: 'value' } // Bind series 1 to an axis named 'brightness'.
- },
- axes: {
- y: {
- lead: { label: 'Lead' }, // Left y-axis.
- value: { side: 'right', label: 'Value' } // Right y-axis.
- }
- }
- };
- var chart = new google.charts.Bar(document.getElementById('stage-leads'));
- chart.draw(data, google.charts.Bar.convertOptions(options));
- }
- }
- function loadHotColdLeadGraph(loadHotColdLeadGraphData) {
- google.charts.setOnLoadCallback(drawChart);
- function drawChart() {
- var data = google.visualization.arrayToDataTable(loadHotColdLeadGraphData);
- var options = {
- title: 'Last five month report',
- height: 400
- };
- var chart = new google.charts.Bar(document.getElementById('hot-cold-leads'));
- chart.draw(data, google.charts.Bar.convertOptions(options));
- }
- }
- function loadCloseReasonLeadGraph(loadCloseReasonLeadGraphData) {
- google.charts.setOnLoadCallback(drawChart);
- function drawChart() {
- var data = google.visualization.arrayToDataTable(loadCloseReasonLeadGraphData);
- var options = {
- title: 'Closed Lead by Reason',
- pieHole: 0.4,
- width: 550,
- height: 400
- };
- var chart = new google.visualization.PieChart(document.getElementById('close-reason-leads'));
- chart.draw(data, options);
- }
- }
- vm.getDayWiseLeadByDays = getDayWiseLeadByDays;
- vm.selectedDays = 7;
- vm.showDays = [{ val: 7, text: '7 Days' }, { val: 10, text: '10 Days' }, { val: 15, text: '15 Days' }, { val: 20, text: '20 Days' }, { val: 30, text: '30 Days' }]
- getDayWiseLeadByDays(7);
- function getDayWiseLeadByDays() {
- lead.getDayWiseLeadByDays(vm.selectedDays)
- .success(function(res) {
- var loadDaysLeadGraphData = [];
- loadDaysLeadGraphData.push(['Date', 'Revenue']);
- angular.forEach(res, function(element, index) {
- loadDaysLeadGraphData.push([element._id, element.revenue]);
- });
- google.charts.setOnLoadCallback(drawChart);
- function drawChart() {
- var data = google.visualization.arrayToDataTable(loadDaysLeadGraphData);
- var options = {
- hAxis: {
- title: "Month",
- textPosition: 'out',
- slantedText: true,
- slantedTextAngle: 90
- },
- vAxis: {
- title: 'Revenue',
- minValue: 0,
- viewWindow: { min: 0 },
- format: '0',
- },
- height: 260,
- colors: ['#e0440e', '#e6693e', '#ec8f6e', '#f3b49f', '#f6c7b6']
- };
- var chart = new google.charts.ColumnChart(document.getElementById('days-leads'));
- chart.draw(data, options);
- }
- })
- .error(function(err) {
- })
- }
- }
- })();
Add Comment
Please, Sign In to add comment