87 KiB
87 KiB
———————————— angular.module('reportingDirectives', []). directive('reportingSidebar', function() { // Runs during compile return { //name: '', // priority: 1, // terminal: true, scope: { /user: '=', software_key: '=', machineObj: '=',/ }, // {} = isolate, true = child, false/undefined = no change controller: function($scope, $rootScope, $element, $attrs, $transclude, $http, $location, $route, $q) { $scope.disableInputs = false; $scope.downloadReport = function() { alert('Placeholder for PDF download'); };
<span style="color:#000ff;">$scope.saveCloudReport = function() {</span>
<span style="color:#000ff;">alert('Placeholder for Cloud Saving');</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">$scope.appKey = 'custom-reporting';</span>
<span style="color:#000ff;">$scope.cloudSave = {</span>
<span style="color:#000ff;">reportName: '',</span>
<span style="color:#000ff;">machine: '',</span>
<span style="color:#000ff;">graphType: '',</span>
<span style="color:#000ff;">xaxis: '',</span>
<span style="color:#000ff;">viewDataOptions: '',</span>
<span style="color:#000ff;">startDate: '',</span>
<span style="color:#000ff;">endDate: '',</span>
<span style="color:#000ff;">yaxismax: '',</span>
<span style="color:#000ff;">input: '',</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">$scope.graphType = 'column';</span>
<span style="color:#000ff;">var self = this;</span>
<span style="color:#000ff;">$scope.reporting = {</span>
<span style="color:#000ff;">machineSelect: '',</span>
<span style="color:#000ff;">type: 'column',</span>
<span style="color:#000ff;">xaxis: 'Day',</span>
<span style="color:#000ff;">//yaxis: 'sum',</span>
<span style="color:#000ff;">yaxismax: undefined,</span>
<span style="color:#000ff;">startDate: '',</span>
<span style="color:#000ff;">endDate: '',</span>
<span style="color:#000ff;">viewDataOption: 'count',</span>
<span style="color:#000ff;">shiftsEnabled: false,</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">$scope.showItems = true;</span>
<span style="color:#000ff;">self.Initialise = function() {</span>
<span style="color:#000ff;">$scope.data = {};</span>
<span style="color:#000ff;">//$scope.data.shifts = [];</span>
<span style="color:#000ff;">/* Fix This below to load dates dynamically for each machine when selected */</span>
<span style="color:#000ff;">zeroOut();</span>
<span style="color:#000ff;">$scope.machineList = $rootScope.machineObj;</span>
<span style="color:#000ff;">var trendType = 'trendCount';</span>
<span style="color:#000ff;">var regressionLineType = 'countRegLine';</span>
<span style="color:#000ff;">$scope.y2CountMax = 0;</span>
<span style="color:#000ff;">$scope.y2TimerMax = 0;</span>
<span style="color:#000ff;">$scope.y2Max = undefined;</span>
<span style="color:#000ff;">//getWorkPeriods();</span>
<span style="color:#000ff;">/*if ($scope.reporting.viewDataOption === 'count') {</span>
<span style="color:#000ff;">$scope.y2Max = $scope.y2CountMax;</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">$scope.y2Max = $scope.y2TimerMax;</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">//console.log($scope.options);</span>
<span style="color:#000ff;">//console.log(item);</span>
<span style="color:#000ff;">grabShifts('shift-profile', $rootScope.factoryKey).then(function(data) {</span>
<span style="color:#000ff;">angular.forEach(data, function(items, key) {</span>
<span style="color:#000ff;">//console.log(items.startTime * 1000);</span>
<span style="color:#000ff;">if (isNaN(items.startTime * 1000)) {</span>
<span style="color:#000ff;">items.startTime = new Date(items.startTime);</span>
<span style="color:#000ff;">items.endTime = new Date(items.endTime);</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">items.startTime = new Date(items.startTime * 1000);</span>
<span style="color:#000ff;">items.endTime = new Date(items.endTime * 1000);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">$scope.shiftsObj = data;</span>
<span style="color:#000ff;">console.log($scope.shiftsObj);</span>
<span style="color:#000ff;">}, function(error) {</span>
<span style="color:#000ff;">console.log('Failure...', error);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">//alert($scope.shiftsObj);</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">function grabShifts(appKey, factoryKey) {</span>
<span style="color:#000ff;">var defer = $q.defer();</span>
<span style="color:#000ff;">$http.get('http://54.213.13.56/api/app/' + appKey + '/' + factoryKey).</span>
<span style="color:#000ff;">success(function(data) {</span>
<span style="color:#000ff;">//console.log(data);</span>
<span style="color:#000ff;">defer.resolve(data);</span>
<span style="color:#000ff;">}).error(function(data) {</span>
<span style="color:#000ff;">console.log('Error in getShiftProfiles: ' + data);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">return defer.promise;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">$scope.$watchGroup(["reporting.type", "reporting.viewDataOption", "reporting.yaxismax", "reporting.xaxis"], function(newValues, oldValues) {</span>
<span style="color:#000ff;">$scope.y2Max = undefined;</span>
<span style="color:#000ff;">if ($scope.reporting.viewDataOption === 'count') {</span>
<span style="color:#000ff;">//$scope.y2Max = $scope.y2CountMax;</span>
<span style="color:#000ff;">$scope.reportLabel = 'Sum';</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">//$scope.y2Max = $scope.y2TimerMax;</span>
<span style="color:#000ff;">$scope.reportLabel = 'Percentage';</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">if ($scope.reporting.xaxis === 'Month') {</span>
<span style="color:#000ff;">$rootScope.monthDay = 'month';</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">$rootScope.monthDay = 'day';</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">$rootScope.counttimer = $scope.reporting.viewDataOption;</span>
<span style="color:#000ff;">if ($scope.reporting.viewDataOption === 'count') {</span>
<span style="color:#000ff;">$scope.maxyaxis = undefined;</span>
<span style="color:#000ff;">trendType = 'trendCount';</span>
<span style="color:#000ff;">regressionLineType = 'countRegLine';</span>
<span style="color:#000ff;">} else if ($scope.reporting.viewDataOption === 'timer') {</span>
<span style="color:#000ff;">//console.log($scope.reporting.yaxismax);</span>
<span style="color:#000ff;">if ($scope.reporting.yaxismax === true) {</span>
<span style="color:#000ff;">$scope.maxyaxis = 100;</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">$scope.maxyaxis = undefined;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">trendType = 'trendTimer';</span>
<span style="color:#000ff;">regressionLineType = 'timerRegLine';</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">$scope.graphType = newValues[0];</span>
<span style="color:#000ff;">$scope.options = {</span>
<span style="color:#000ff;">axes: {</span>
<span style="color:#000ff;">x: {</span>
<span style="color:#000ff;">key: 'x',</span>
<span style="color:#000ff;">type: 'date'</span>
<span style="color:#000ff;">},</span>
<span style="color:#000ff;">y: {</span>
<span style="color:#000ff;">type: 'linear',</span>
<span style="color:#000ff;">max: $scope.maxyaxis</span>
<span style="color:#000ff;">},</span>
<span style="color:#000ff;">y2: {</span>
<span style="color:#000ff;">type: 'linear',</span>
<span style="color:#000ff;">min: $scope.y2Max,</span>
<span style="color:#000ff;">//max: $scope.maxyaxis</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">},</span>
<span style="color:#000ff;">series: [{</span>
<span style="color:#000ff;">y: $scope.reporting.viewDataOption,</span>
<span style="color:#000ff;">color: 'steelblue',</span>
<span style="color:#000ff;">type: $scope.graphType,</span>
<span style="color:#000ff;">axis: 'y',</span>
<span style="color:#000ff;">striped: true,</span>
<span style="color:#000ff;">label: toTitleCase($scope.reportLabel + ' of ' + $scope.reporting.viewDataOption),</span>
<span style="color:#000ff;">id: "data"</span>
<span style="color:#000ff;">}, {</span>
<span style="color:#000ff;">y: trendType,</span>
<span style="color:#000ff;">//label: "Trendline",</span>
<span style="color:#000ff;">color: "#ff7f0e",</span>
<span style="color:#000ff;">type: "line",</span>
<span style="color:#000ff;">axis: "y",</span>
<span style="color:#000ff;">id: "trend",</span>
<span style="color:#000ff;">label: 'Average'</span>
<span style="color:#000ff;">}, {</span>
<span style="color:#000ff;">y: regressionLineType,</span>
<span style="color:#000ff;">//label: "Trendline",</span>
<span style="color:#000ff;">color: "#006600",</span>
<span style="color:#000ff;">type: "line",</span>
<span style="color:#000ff;">axis: "y",</span>
<span style="color:#000ff;">id: "RegressionLine",</span>
<span style="color:#000ff;">label: 'Regression',</span>
<span style="color:#000ff;">visible: $scope.showItems,</span>
<span style="color:#000ff;">}],</span>
<span style="color:#000ff;">lineMode: 'linear',</span>
<span style="color:#000ff;">tension: 0.7,</span>
<span style="color:#000ff;">tooltip: {</span>
<span style="color:#000ff;">mode: 'scrubber',</span>
<span style="color:#000ff;">formatter: function(x, y, series) {</span>
<span style="color:#000ff;">//series.id['data ']= 'The Data: ';</span>
<span style="color:#000ff;">var monthNames = ["January", "February", "March", "April", "May", "June",</span>
<span style="color:#000ff;">"July", "August", "September", "October", "November", "December"</span>
<span style="color:#000ff;">];</span>
<span style="color:#000ff;">if ($scope.reporting.xaxis === 'Month') {</span>
<span style="color:#000ff;">return monthNames[x.getMonth()] + ' ' +</span>
<span style="color:#000ff;">x.getFullYear() + ' - ' +</span>
<span style="color:#000ff;">series.label + ': ' + Math.round(y);</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">return x.toDateString() + ' - ' +</span>
<span style="color:#000ff;">series.label + ': ' + Math.round(y);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">},</span>
<span style="color:#000ff;">drawLegend: $scope.showItems,</span>
<span style="color:#000ff;">drawDots: true,</span>
<span style="color:#000ff;">columnsHGap: 5</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">$scope.$watchGroup(["reporting.startDate", "reporting.endDate"], function(newValues, oldValues) {</span>
<span style="color:#000ff;">$rootScope.startingDate = $scope.reporting.startDate;</span>
<span style="color:#000ff;">$rootScope.endingDate = $scope.reporting.endDate;</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">function toTitleCase(str) {</span>
<span style="color:#000ff;">return str.replace(/\w\S*/g, function(txt) {</span>
<span style="color:#000ff;">return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">$scope.$watch("reporting.machineSelect", function(newValue, oldValue) {</span>
<span style="color:#000ff;">//$scope.reporting.type = 'column';</span>
<span style="color:#000ff;">//$scope.reporting.xaxis = 'Month';</span>
<span style="color:#000ff;">//$scope.reporting.yaxis = 'sum';</span>
<span style="color:#000ff;">//$scope.reporting.viewDataOption</span>
<span style="color:#000ff;">//hardware: '',</span>
<span style="color:#000ff;">$scope.reporting.hardware = undefined;</span>
<span style="color:#000ff;">$scope.machineDates = $scope.reporting.machineSelect.Dates;</span>
<span style="color:#000ff;">$scope.machineHardware = $scope.reporting.machineSelect.Hardware;</span>
<span style="color:#000ff;">$rootScope.machinesName = $scope.reporting.machineSelect.Name;</span>
<span style="color:#000ff;">/*if($scope.machineDates !== undefined) {</span>
<span style="color:#000ff;">$scope.reporting.startDate = $scope.reporting.machineSelect.Dates[0].date;</span>
<span style="color:#000ff;">$scope.reporting.endDate = $scope.reporting.machineSelect.Dates[0].date;</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">//console.log($scope.machineDates.date);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">$scope.changedVars = function() {</span>
<span style="color:#000ff;">//console.log($scope.reporting.machineSelect.SoftwareKey);</span>
<span style="color:#000ff;">/*$scope.y2Max = undefined;</span>
<span style="color:#000ff;">if ($scope.reporting.viewDataOption === 'count') {</span>
<span style="color:#000ff;">$scope.y2Max = $scope.y2CountMax;</span>
<span style="color:#000ff;">$scope.reportLabel = 'Sum';</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">$scope.y2Max = $scope.y2TimerMax;</span>
<span style="color:#000ff;">$scope.reportLabel = 'Percentage';</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">$scope.shiftInfo = [];</span>
<span style="color:#000ff;">$scope.disableInputs = true;</span>
<span style="color:#000ff;">$scope.yaxe = $scope.reporting.yaxis;</span>
<span style="color:#000ff;">if ($scope.reporting.hardware !== undefined && $scope.reporting.xaxis !== '' && $scope.reporting.machineSelect.Dates.length !== 0) {</span>
<span style="color:#000ff;">$scope.data = [];</span>
<span style="color:#000ff;">$scope.nonZeroData = [];</span>
<span style="color:#000ff;">$rootScope.hardware = $scope.reporting.hardware;</span>
<span style="color:#000ff;">if ($scope.reporting.xaxis === 'Day' || $scope.reporting.xaxis === 'Month') {</span>
<span style="color:#000ff;">startDateSplit = $scope.reporting.startDate.date.split(' ');</span>
<span style="color:#000ff;">endDateSplit = $scope.reporting.endDate.date.split(' ');</span>
<span style="color:#000ff;">newStartDate = new Date(startDateSplit[0] + ' 1, ' + startDateSplit[1] + ' 00:00:00');</span>
<span style="color:#000ff;">newEndDate = new Date(endDateSplit[0] + ' 1, ' + endDateSplit[1] + ' 00:00:00');</span>
<span style="color:#000ff;">if (newEndDate.getMonth() === new Date().getMonth()) {</span>
<span style="color:#000ff;">newEndDate = new Date();</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">//console.log($scope.reporting.startDate.date);</span>
<span style="color:#000ff;">if ($scope.reporting.startDate.date === $scope.reporting.endDate.date && $scope.reporting.xaxis === 'Month') {</span>
<span style="color:#000ff;">/*alert("Sorry you can't report on just one month with Month selected for time, " +</span>
<span style="color:#000ff;">"I would suggest doing days if you want to complete this action");*/</span>
<span style="color:#000ff;">//console.log('made it here');</span>
<span style="color:#000ff;">newStartDate = new Date(startDateSplit[0] + ' 1, ' + startDateSplit[1] + ' 00:00:00');</span>
<span style="color:#000ff;">newEndDate = new Date(endDateSplit[0] + ' 1, ' + endDateSplit[1] + ' 00:00:00');</span>
<span style="color:#000ff;">//newEndDate = new Date(newEndDate.getFullYear(), newEndDate.getMonth() + 1, 0);</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">newEndDate = new Date(newEndDate.getFullYear(), newEndDate.getMonth() + 1, 0);</span>
<span style="color:#000ff;">newEndDate.setDate(newEndDate.getDate() + 1);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">if ($scope.reporting.xaxis === 'LastSeven') {</span>
<span style="color:#000ff;">newEndDate = new Date();</span>
<span style="color:#000ff;">newStartDate = new Date( /*newEndDate.getFullYear(), newEndDate.getMonth(), newEndDate.getDate(),0,0,0,0*/ );</span>
<span style="color:#000ff;">newStartDate.setDate(newStartDate.getDate() - 7);</span>
<span style="color:#000ff;">} else if ($scope.reporting.xaxis === 'LastThirty') {</span>
<span style="color:#000ff;">newEndDate = new Date();</span>
<span style="color:#000ff;">newStartDate = new Date();</span>
<span style="color:#000ff;">newStartDate.setDate(newStartDate.getDate() - 30);</span>
<span style="color:#000ff;">} else if ($scope.reporting.xaxis === 'LastMonth') {</span>
<span style="color:#000ff;">newStartDate = new Date();</span>
<span style="color:#000ff;">newStartDate = new Date(newStartDate.getFullYear(), newStartDate.getMonth() - 1, 1, 0, 0, 0, 0);</span>
<span style="color:#000ff;">//console.log(newStartDate);</span>
<span style="color:#000ff;">newEndDate = new Date(newStartDate.getFullYear(), newStartDate.getMonth() + 1, 0, 0, 0, 0, 0);</span>
<span style="color:#000ff;">//console.log(newEndDate);</span>
<span style="color:#000ff;">/*newStartDate = new Date();</span>
<span style="color:#000ff;">newStartDate.setDate(newStartDate.getMonth() - 1);*/</span>
<span style="color:#000ff;">} else if ($scope.reporting.xaxis === 'LastNinty') {</span>
<span style="color:#000ff;">newEndDate = new Date();</span>
<span style="color:#000ff;">newStartDate = new Date();</span>
<span style="color:#000ff;">newStartDate.setDate(newStartDate.getDate() - 90);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">$rootScope.theStartDate = newStartDate.toDateString();</span>
<span style="color:#000ff;">$rootScope.theEndDate = newEndDate.toDateString();</span>
<span style="color:#000ff;">switch ($scope.reporting.xaxis) {</span>
<span style="color:#000ff;">case 'Day':</span>
<span style="color:#000ff;">$scope.data = [];</span>
<span style="color:#000ff;">$scope.options.series[2].visible = false;</span>
<span style="color:#000ff;">$scope.options.drawLegend = false;</span>
<span style="color:#000ff;">$scope.nonZeroData = [];</span>
<span style="color:#000ff;">dailyChart(newStartDate, newEndDate);</span>
<span style="color:#000ff;">break;</span>
<span style="color:#000ff;">case 'Month':</span>
<span style="color:#000ff;">$scope.data = [];</span>
<span style="color:#000ff;">$scope.options.series[2].visible = false;</span>
<span style="color:#000ff;">$scope.options.drawLegend = false;</span>
<span style="color:#000ff;">$scope.nonZeroData = [];</span>
<span style="color:#000ff;">monthlyChart(newStartDate, newEndDate);</span>
<span style="color:#000ff;">break;</span>
<span style="color:#000ff;">case 'LastMonth':</span>
<span style="color:#000ff;">$scope.data = [];</span>
<span style="color:#000ff;">$scope.options.series[2].visible = false;</span>
<span style="color:#000ff;">$scope.options.drawLegend = false;</span>
<span style="color:#000ff;">$scope.nonZeroData = [];</span>
<span style="color:#000ff;">dailyChart(newStartDate, newEndDate);</span>
<span style="color:#000ff;">break;</span>
<span style="color:#000ff;">case 'LastSeven':</span>
<span style="color:#000ff;">$scope.data = [];</span>
<span style="color:#000ff;">$scope.options.series[2].visible = false;</span>
<span style="color:#000ff;">$scope.options.drawLegend = false;</span>
<span style="color:#000ff;">$scope.nonZeroData = [];</span>
<span style="color:#000ff;">dailyChart(newStartDate, newEndDate);</span>
<span style="color:#000ff;">break;</span>
<span style="color:#000ff;">case 'LastThirty':</span>
<span style="color:#000ff;">$scope.data = [];</span>
<span style="color:#000ff;">$scope.options.series[2].visible = false;</span>
<span style="color:#000ff;">$scope.options.drawLegend = false;</span>
<span style="color:#000ff;">$scope.nonZeroData = [];</span>
<span style="color:#000ff;">dailyChart(newStartDate, newEndDate);</span>
<span style="color:#000ff;">break;</span>
<span style="color:#000ff;">case 'LastNinty':</span>
<span style="color:#000ff;">$scope.data = [];</span>
<span style="color:#000ff;">$scope.options.series[2].visible = false;</span>
<span style="color:#000ff;">$scope.options.drawLegend = false;</span>
<span style="color:#000ff;">$scope.nonZeroData = [];</span>
<span style="color:#000ff;">dailyChart(newStartDate, newEndDate);</span>
<span style="color:#000ff;">break;</span>
<span style="color:#000ff;">default:</span>
<span style="color:#000ff;">break;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">alert('You need to fill in all fields first!');</span>
<span style="color:#000ff;">//console.log('I was run');</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">/*$http.get('http://54.213.13.56/api/' + $scope.factoryKey + '/'+ $scope.reporting.machineSelect.Address +</span>
<span style="color:#000ff;">'?process[]=' + $scope.reporting.indicator +'&date[]=1418513801&date[]=1420513801&index=' +</span>
<span style="color:#000ff;">$scope.reporting.hardware + '').</span>
<span style="color:#000ff;">success(function(data) {</span>
<span style="color:#000ff;">}).</span>
<span style="color:#000ff;">error(function(data) {</span>
<span style="color:#000ff;">alert(data);</span>
<span style="color:#000ff;">});*/</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">function dailyChart(startDate, endDate) {</span>
<span style="color:#000ff;">var daysOfYear = [];</span>
<span style="color:#000ff;">/*for (var d = newStartDate; d <= newEndDate; d.setDate(d.getDate() + 1)) {</span>
<span style="color:#000ff;">da = new Date(d);</span>
<span style="color:#000ff;">da.setDate(da.getDate() + 1);</span>
<span style="color:#000ff;">$scope.webCall(Math.floor(new Date(d) / 1000), Math.floor(new Date(da) / 1000));</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">zeroOut();</span>
<span style="color:#000ff;">processObj = 'sum';</span>
<span style="color:#000ff;">/*if ($scope.reporting.yaxis === 'percentage') {</span>
<span style="color:#000ff;">processObj = 'sum';</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">processObj = $scope.reporting.yaxis;</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">nextDay(startDate, endDate, processObj);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">function nextDay(startDate, endDate, processObj) {</span>
<span style="color:#000ff;">//console.log('I am in the next()');</span>
<span style="color:#000ff;">d = startDate;</span>
<span style="color:#000ff;">if (d < endDate) {</span>
<span style="color:#000ff;">da = new Date(d);</span>
<span style="color:#000ff;">da.setDate(da.getDate() + 1);</span>
<span style="color:#000ff;">//processObj = '';</span>
<span style="color:#000ff;">$scope.fullDay = (((24 * 60) * 60) * 1000);</span>
<span style="color:#000ff;">$scope.WorkPeriod = ((($scope.reporting.machineSelect.WorkPeriod * 60) * 60) * 1000);</span>
<span style="color:#000ff;">//console.log($scope.WorkPeriod);</span>
<span style="color:#000ff;">webCall($scope.reporting.machineSelect.SoftwareKey, $scope.reporting.machineSelect.Address,</span>
<span style="color:#000ff;">processObj, Math.floor(new Date(d) / 1000), Math.floor(new Date(da) / 1000),</span>
<span style="color:#000ff;">$scope.reporting.hardware).then(function(data) {</span>
<span style="color:#000ff;">dataAggregator(data, d, da);</span>
<span style="color:#000ff;">$scope.cntr = 0;</span>
<span style="color:#000ff;">if ($scope.reporting.shiftsEnabled === true) {</span>
<span style="color:#000ff;">//zeroOutShifts();</span>
<span style="color:#000ff;">//$scope.cntr = 0;</span>
<span style="color:#000ff;">nextShift();</span>
<span style="color:#000ff;">//console.trace(nextShift());</span>
<span style="color:#000ff;">function nextShift() {</span>
<span style="color:#000ff;">//console.log('shift length: ' + $scope.shiftsObj.length);</span>
<span style="color:#000ff;">if ($scope.cntr < $scope.shiftsObj.length) {</span>
<span style="color:#000ff;">tempStartDate = new Date($scope.shiftsObj[$scope.cntr].startTime);</span>
<span style="color:#000ff;">//console.log(tempStartDate);</span>
<span style="color:#000ff;">tempStartDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), tempStartDate.getHours(), tempStartDate.getMinutes(), 0, 0);</span>
<span style="color:#000ff;">//console.log('start date: ' + tempStartDate);</span>
<span style="color:#000ff;">tempEndDate = new Date($scope.shiftsObj[$scope.cntr].endTime);</span>
<span style="color:#000ff;">if ($scope.shiftsObj[$scope.cntr].endTime < $scope.shiftsObj[$scope.cntr].startTime) {</span>
<span style="color:#000ff;">tempEndDate = new Date(da.getFullYear(), da.getMonth(), da.getDate(), tempEndDate.getHours(), tempEndDate.getMinutes(), 0, 0);</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">tempEndDate = new Date(d.getFullYear(), d.getMonth(), d.getDate(), tempEndDate.getHours(), tempEndDate.getMinutes(), 0, 0);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">//console.log('end date: ' + tempEndDate);</span>
<span style="color:#000ff;">webShiftCall($scope.reporting.machineSelect.SoftwareKey, $scope.reporting.machineSelect.Address,</span>
<span style="color:#000ff;">processObj, tempStartDate, tempEndDate,</span>
<span style="color:#000ff;">$scope.reporting.hardware).then(function(retData) {</span>
<span style="color:#000ff;">/*console.log(d);</span>
<span style="color:#000ff;">console.log(da);*/</span>
<span style="color:#000ff;">/*console.log(retData);*/</span>
<span style="color:#000ff;">//console.log(data);</span>
<span style="color:#000ff;">//confirm('Was that as good for you as it was for me?');</span>
<span style="color:#000ff;">}, function(error) {</span>
<span style="color:#000ff;">console.log('Failure...', error);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">$scope.cntr++;</span>
<span style="color:#000ff;">nextShift();</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">/*console.log('start date: ' + startDate);</span>
<span style="color:#000ff;">console.log('end date: ' + endDate);*/</span>
<span style="color:#000ff;">/*angular.forEach($scope.shiftsObj, function(value, key) {</span>
<span style="color:#000ff;">});*/</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">/*}*/</span>
<span style="color:#000ff;">d.setDate(d.getDate() + 1);</span>
<span style="color:#000ff;">nextDay(d, endDate, processObj);</span>
<span style="color:#000ff;">//confirm('Was that as good for you as it was for me?');</span>
<span style="color:#000ff;">}, function(error) {</span>
<span style="color:#000ff;">console.log('Failure...', error);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">//console.log($scope.data);</span>
<span style="color:#000ff;">//if ($scope.reporting.yaxis === 'sum') {</span>
<span style="color:#000ff;">// create array_x & array_y</span>
<span style="color:#000ff;">$scope.options.series[2].visible = true;</span>
<span style="color:#000ff;">$scope.options.drawLegend = true;</span>
<span style="color:#000ff;">array_x = [];</span>
<span style="color:#000ff;">array_y = [];</span>
<span style="color:#000ff;">for (i = 0; i < $scope.data.length; ++i) {</span>
<span style="color:#000ff;">array_x.push($scope.data[i].xCountCounter);</span>
<span style="color:#000ff;">array_y.push($scope.data[i].count);</span>
<span style="color:#000ff;">if ($scope.data[i].count > $scope.y2countmax) {</span>
<span style="color:#000ff;">$scope.y2CountMax = $scope.data[i].count;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">var countRegLine = findLineByLeastSquares(array_x, array_y); //findLineByLeastSquaresLog(array_x, array_y);</span>
<span style="color:#000ff;">//findLineByLeastSquaresLog(array_x, array_y);</span>
<span style="color:#000ff;">$rootScope.countSlope = (Math.round($scope.tempSlope * 10) / 10) /* * 100*/ ;</span>
<span style="color:#000ff;">//console.log(countRegLine);</span>
<span style="color:#000ff;">tmpCount = 0;</span>
<span style="color:#000ff;">angular.forEach(countRegLine[1], function(value, key) {</span>
<span style="color:#000ff;">if (tmpCount !== countRegLine[1].length) {</span>
<span style="color:#000ff;">$scope.data[tmpCount].countRegLine = value;</span>
<span style="color:#000ff;">tmpCount++;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">array_x = [];</span>
<span style="color:#000ff;">array_y = [];</span>
<span style="color:#000ff;">for (i = 0; i < $scope.data.length; ++i) {</span>
<span style="color:#000ff;">array_x.push($scope.data[i].xTimerCounter);</span>
<span style="color:#000ff;">array_y.push($scope.data[i].timer);</span>
<span style="color:#000ff;">if ($scope.data[i].timer > $scope.y2TimerMax) {</span>
<span style="color:#000ff;">$scope.y2TimerMax = $scope.data[i].timer;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">var timerRegLine = findLineByLeastSquares(array_x, array_y); //findLineByLeastSquaresLog(array_x, array_y);</span>
<span style="color:#000ff;">//findLineByLeastSquaresLog(array_x, array_y);</span>
<span style="color:#000ff;">$rootScope.timeSlope = (Math.round($scope.tempSlope * 10) / 10) /* * 100*/ ;</span>
<span style="color:#000ff;">//console.log(countRegLine);</span>
<span style="color:#000ff;">tmpCount = 0;</span>
<span style="color:#000ff;">angular.forEach(timerRegLine[1], function(value, key) {</span>
<span style="color:#000ff;">if (tmpCount !== countRegLine[1].length) {</span>
<span style="color:#000ff;">$scope.data[tmpCount].timerRegLine = value;</span>
<span style="color:#000ff;">tmpCount++;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">console.log($scope.data);</span>
<span style="color:#000ff;">$scope.disableInputs = false;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">function zeroOutShifts() {</span>
<span style="color:#000ff;">$scope.shiftCounter = 1;</span>
<span style="color:#000ff;">$scope.trendShiftTimeData = 0;</span>
<span style="color:#000ff;">$scope.trendShiftCountData = 0;</span>
<span style="color:#000ff;">$rootScope.rootShiftAccTimeData = $scope.accShiftTimeData = 0;</span>
<span style="color:#000ff;">$rootScope.rootShiftAccCountData = $scope.accShiftCountData = 0;</span>
<span style="color:#000ff;">$rootScope.rootShiftAvgTimeData = $scope.avgShiftTimeData = 0;</span>
<span style="color:#000ff;">$rootScope.rootShiftAvgCountData = $scope.avgShiftCountData = 0;</span>
<span style="color:#000ff;">$scope.avgShiftTimerData = 0;</span>
<span style="color:#000ff;">$rootScope.timeShiftSlope = 0;</span>
<span style="color:#000ff;">$rootScope.countShiftSlope = 0;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">function shiftDataAggregator(data, d, da) {</span>
<span style="color:#000ff;">console.log(data);</span>
<span style="color:#000ff;">/*console.log(d);</span>
<span style="color:#000ff;">console.log(da);*/</span>
<span style="color:#000ff;">tempShiftTimerData = data.sum.timer / ((da - d) / 1000) * 100;</span>
<span style="color:#000ff;">//console.log(tempTimerData);</span>
<span style="color:#000ff;">//console.log(tempTimerData);</span>
<span style="color:#000ff;">if (tempShiftTimerData !== 0 && data.sum.count !== 0) {</span>
<span style="color:#000ff;">$scope.isThereData = true;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">//var trendCountData = 0;</span>
<span style="color:#000ff;">//console.log('Temp Timer data after calc: ' + data.sum.timer);</span>
<span style="color:#000ff;">if ($scope.isThereData === true) {</span>
<span style="color:#000ff;">$scope.trendShiftTimeData = trendLineCalculator(tempTimerData, $scope.shiftCounter, $scope.avgShiftTimerData);</span>
<span style="color:#000ff;">$scope.trendShiftCountData = trendLineCalculator(data.sum.count, $scope.shiftCounter, $scope.accShiftCountData);</span>
<span style="color:#000ff;">$rootScope.rootShiftAccCountData = $scope.accShiftCountData += data.sum.count;</span>
<span style="color:#000ff;">//console.log('count: ' + data.sum.count);</span>
<span style="color:#000ff;">$rootScope.rootShiftAccTimeData = $scope.accShiftTimeData += data.sum.timer;</span>
<span style="color:#000ff;">$scope.avgShiftTimerData += tempShiftTimerData;</span>
<span style="color:#000ff;">//console.log('timer: ' + $scope.avgTimerData);</span>
<span style="color:#000ff;">$rootScope.rootShiftAvgTimeData = ($scope.avgShiftTimerData / $scope.shiftCounter);</span>
<span style="color:#000ff;">/*$rootScope.rootAvgTimeData /= 60;</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeData /= 60;*/</span>
<span style="color:#000ff;">/*console.log('Accumulated Time: ' + $scope.accTimeData);</span>
<span style="color:#000ff;">console.log('Time Counter: ' + $scope.timeCount);*/</span>
<span style="color:#000ff;">$rootScope.rootShiftAvgTimeData = Math.round($rootScope.rootShiftAvgTimeData);</span>
<span style="color:#000ff;">$rootScope.rootShiftAvgCountData = $scope.accShiftCountData / $scope.countCount;</span>
<span style="color:#000ff;">$rootScope.rootShiftAvgCountData = Math.round($rootScope.rootShiftAvgCountData);</span>
<span style="color:#000ff;">/*console.log($rootScope.rootAvgTimeData);</span>
<span style="color:#000ff;">console.log($rootScope.rootAvgCountData);</span>
<span style="color:#000ff;">console.log($rootScope.rootAvgCountData);*/</span>
<span style="color:#000ff;">/*$scope.data.push({</span>
<span style="color:#000ff;">xCountCounter: $scope.countCount,</span>
<span style="color:#000ff;">xTimerCounter: $scope.timeCount</span>
<span style="color:#000ff;">});*/</span>
<span style="color:#000ff;">$scope.shiftCounter++;</span>
<span style="color:#000ff;">$rootScope.rootShiftAccTimeData = ($rootScope.rootShiftAccTimeData / 60) / 60;</span>
<span style="color:#000ff;">$rootScope.rootShiftAccTimeData = Math.round($rootScope.rootShiftAccTimeData);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">//$rootScope.rootAccTimeData = Math.round($rootScope.bbrootAccTimeData);</span>
<span style="color:#000ff;">//</span>
<span style="color:#000ff;">//blank out shiftsData array everytime it is pushed to shiftInfo array</span>
<span style="color:#000ff;">var ttt = $scope.data.length - 1;</span>
<span style="color:#000ff;">console.log('Data length: ' + ttt);</span>
<span style="color:#000ff;">$scope.data[$scope.data.length - 1].shifts.push({</span>
<span style="color:#000ff;">count: Math.round(data.sum.count * 100) / 100,</span>
<span style="color:#000ff;">timer: Math.round(tempShiftTimerData * 100) / 100,</span>
<span style="color:#000ff;">trendTimer: Math.round($scope.trendShiftTimeData),</span>
<span style="color:#000ff;">trendCount: Math.round($scope.trendShiftCountData),</span>
<span style="color:#000ff;">shiftCounter: $scope.shiftCounter - 1,</span>
<span style="color:#000ff;">startDate: d,</span>
<span style="color:#000ff;">endDate: da</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">//console.log($scope.data);</span>
<span style="color:#000ff;">//$scope.shiftInfo.push($scope.shiftsData)</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">var within_std_of = 2;</span>
<span style="color:#000ff;">average = function(a) {</span>
<span style="color:#000ff;">var r = {</span>
<span style="color:#000ff;">mean: 0,</span>
<span style="color:#000ff;">variance: 0,</span>
<span style="color:#000ff;">deviation: 0</span>
<span style="color:#000ff;">},</span>
<span style="color:#000ff;">t = a.length;</span>
<span style="color:#000ff;">for (var m, s = 0, l = t; l--; s += a[l]);</span>
<span style="color:#000ff;">for (m = r.mean = s / t, l = t, s = 0; l--; s += Math.pow(a[l] - m, 2));</span>
<span style="color:#000ff;">return r.deviation = Math.sqrt(r.variance = s / t), r;</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">withinStd = function(mean, val, stdev) {</span>
<span style="color:#000ff;">var low = mean - (stdev * x.deviation);</span>
<span style="color:#000ff;">var hi = mean + (stdev * x.deviation);</span>
<span style="color:#000ff;">return (val > low) && (val < hi);</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">/*function weeklyChart(startDate, endDate) {</span>
<span style="color:#000ff;">var daysOfYear = [];</span>
<span style="color:#000ff;">for (var d = newStartDate; d <= newEndDate; d.setDate(d.getDate() + 1)) {</span>
<span style="color:#000ff;">da = new Date(d);</span>
<span style="color:#000ff;">da.setDate(da.getDate() + 1);</span>
<span style="color:#000ff;">$scope.webCall(Math.floor(new Date(d) / 1000), Math.floor(new Date(da) / 1000));</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">if ($scope.reporting.yaxis === 'percentage') {</span>
<span style="color:#000ff;">processObj = 'sum';</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">processObj = $scope.reporting.yaxis;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">d = startDate;</span>
<span style="color:#000ff;">nextWeek(startDate, endDate, processObj);</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">/*function nextWeek(startDate, endDate, processObj) {</span>
<span style="color:#000ff;">if (d < endDate) {</span>
<span style="color:#000ff;">da = new Date(d);</span>
<span style="color:#000ff;">da.setDate(da.getDate() + 7);</span>
<span style="color:#000ff;">$http.get('http://54.213.13.56/api/' + $scope.reporting.machineSelect.SoftwareKey + '/' + $scope.reporting.machineSelect.Address +</span>
<span style="color:#000ff;">'?process[]=' + 'sum' + '&date[]=' + Math.floor(new Date(d) / 1000) + '&date[]=' + Math.floor(new Date(da) / 1000) + '&index=' +</span>
<span style="color:#000ff;">$scope.reporting.hardware).success(</span>
<span style="color:#000ff;">function(data) {</span>
<span style="color:#000ff;">console.log(data);</span>
<span style="color:#000ff;">tempTimerData = data.sum.timer / ((da - d) / 1000) * 100;</span>
<span style="color:#000ff;">$scope.data.push({</span>
<span style="color:#000ff;">x: new Date(d),</span>
<span style="color:#000ff;">count: data.sum.count,</span>
<span style="color:#000ff;">timer: tempTimerData</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">d.setDate(d.getDate() + 7);</span>
<span style="color:#000ff;">nextWeek(startDate, endDate, processObj);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">function monthlyChart(startDate, endDate) {</span>
<span style="color:#000ff;">//console.log('Monthly was called');</span>
<span style="color:#000ff;">var daysOfYear = [];</span>
<span style="color:#000ff;">d = startDate;</span>
<span style="color:#000ff;">zeroOut();</span>
<span style="color:#000ff;">processObj = 'sum';</span>
<span style="color:#000ff;">/*if ($scope.reporting.yaxis === 'percentage') {</span>
<span style="color:#000ff;">processObj = 'sum';</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">processObj = $scope.reporting.yaxis;</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">nextMonth(startDate, endDate, processObj);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">function nextMonth(startDate, endDate, processObj) {</span>
<span style="color:#000ff;">//console.log('I am in the next()');</span>
<span style="color:#000ff;">//console.log(d);</span>
<span style="color:#000ff;">//console.log(d <= endDate);</span>
<span style="color:#000ff;">if (d <= endDate) {</span>
<span style="color:#000ff;">$scope.WorkPeriod = ((($scope.reporting.machineSelect.WorkPeriod * 60) * 60) * 1000);</span>
<span style="color:#000ff;">if (d === endDate) {</span>
<span style="color:#000ff;">da = new Date(d);</span>
<span style="color:#000ff;">da = new Date(da.getFullYear(), da.getMonth() + 1, 0);</span>
<span style="color:#000ff;">//da.setMonth(da.getMonth() + 1);</span>
<span style="color:#000ff;">webCall($scope.reporting.machineSelect.SoftwareKey, $scope.reporting.machineSelect.Address,</span>
<span style="color:#000ff;">processObj, Math.floor(new Date(d) / 1000), Math.floor(new Date(da) / 1000),</span>
<span style="color:#000ff;">$scope.reporting.hardware).then(function(data) {</span>
<span style="color:#000ff;">/*console.log(Math.floor(new Date(d) / 1000));</span>
<span style="color:#000ff;">console.log(Math.floor(new Date(da) / 1000));*/</span>
<span style="color:#000ff;">dataAggregator(data, d, da);</span>
<span style="color:#000ff;">//d.setMonth(d.getMonth() + 1);</span>
<span style="color:#000ff;">//nextMonth(startDate, endDate, processObj);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">da = new Date(d);</span>
<span style="color:#000ff;">da.setMonth(da.getMonth() + 1);</span>
<span style="color:#000ff;">webCall($scope.reporting.machineSelect.SoftwareKey, $scope.reporting.machineSelect.Address,</span>
<span style="color:#000ff;">processObj, Math.floor(new Date(d) / 1000), Math.floor(new Date(da) / 1000),</span>
<span style="color:#000ff;">$scope.reporting.hardware).then(function(data) {</span>
<span style="color:#000ff;">/*console.log(Math.floor(new Date(d) / 1000));</span>
<span style="color:#000ff;">console.log(Math.floor(new Date(da) / 1000));*/</span>
<span style="color:#000ff;">dataAggregator(data, d, da);</span>
<span style="color:#000ff;">d.setMonth(d.getMonth() + 1);</span>
<span style="color:#000ff;">nextMonth(startDate, endDate, processObj);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">$rootScope.countSlope = 0;</span>
<span style="color:#000ff;">$rootScope.timeSlope = 0;</span>
<span style="color:#000ff;">if ($scope.reporting.xaxis === 'Month') {</span>
<span style="color:#000ff;">$scope.options.series[2].visible = false;</span>
<span style="color:#000ff;">$scope.options.drawLegend = false;</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">$scope.options.series[2].visible = true;</span>
<span style="color:#000ff;">$scope.options.drawLegend = true;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">//console.log($scope.data);</span>
<span style="color:#000ff;">//create if statement for percentage or sum</span>
<span style="color:#000ff;">//if ($scope.reporting.yaxis === 'sum') {</span>
<span style="color:#000ff;">// create array_x & array_y</span>
<span style="color:#000ff;">array_x = [];</span>
<span style="color:#000ff;">array_y = [];</span>
<span style="color:#000ff;">for (i = 0; i < $scope.data.length; ++i) {</span>
<span style="color:#000ff;">array_x.push($scope.data[i].xCountCounter);</span>
<span style="color:#000ff;">array_y.push($scope.data[i].count);</span>
<span style="color:#000ff;">if ($scope.data[i].count > $scope.y2CountMax) {</span>
<span style="color:#000ff;">$scope.y2CountMax = $scope.data[i].count;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">var countRegLine = findLineByLeastSquares(array_x, array_y); //findLineByLeastSquaresLog(array_x, array_y);</span>
<span style="color:#000ff;">//findLineByLeastSquaresLog(array_x, array_y);</span>
<span style="color:#000ff;">$rootScope.countSlope = (Math.round($scope.tempSlope * 10) / 10) /* * 100*/ ;</span>
<span style="color:#000ff;">//console.log(countRegLine);</span>
<span style="color:#000ff;">tmpCount = 0;</span>
<span style="color:#000ff;">angular.forEach(countRegLine[1], function(value, key) {</span>
<span style="color:#000ff;">if (tmpCount !== countRegLine[1].length) {</span>
<span style="color:#000ff;">$scope.data[tmpCount].countRegLine = value;</span>
<span style="color:#000ff;">tmpCount++;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">array_x = [];</span>
<span style="color:#000ff;">array_y = [];</span>
<span style="color:#000ff;">for (i = 0; i < $scope.data.length; ++i) {</span>
<span style="color:#000ff;">array_x.push($scope.data[i].xTimerCounter);</span>
<span style="color:#000ff;">array_y.push($scope.data[i].timer);</span>
<span style="color:#000ff;">if ($scope.data[i].timer > $scope.y2TimerMax) {</span>
<span style="color:#000ff;">$scope.y2TimerMax = $scope.data[i].timer;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">var timerRegLine = findLineByLeastSquares(array_x, array_y); //findLineByLeastSquaresLog(array_x, array_y);</span>
<span style="color:#000ff;">//findLineByLeastSquaresLog(array_x, array_y);</span>
<span style="color:#000ff;">$rootScope.timeSlope = (Math.round($scope.tempSlope * 10) / 10) /* * 100*/ ;</span>
<span style="color:#000ff;">//console.log(countRegLine);</span>
<span style="color:#000ff;">tmpCount = 0;</span>
<span style="color:#000ff;">angular.forEach(timerRegLine[1], function(value, key) {</span>
<span style="color:#000ff;">if (tmpCount !== countRegLine[1].length) {</span>
<span style="color:#000ff;">$scope.data[tmpCount].timerRegLine = value;</span>
<span style="color:#000ff;">tmpCount++;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">//console.log($scope.data);</span>
<span style="color:#000ff;">/*if ($scope.data.length > 1) {</span>
<span style="color:#000ff;">$rootScope.countSlope = ($scope.data[0].countRegLine - $scope.data[$scope.data.length - 1].countRegLine) /</span>
<span style="color:#000ff;">($scope.data[0].xCountCounter - $scope.data[$scope.data.length - 1].xCountCounter);</span>
<span style="color:#000ff;">$rootScope.timeSlope = ($scope.data[0].timerRegLine - $scope.data[$scope.data.length - 1].timerRegLine) /</span>
<span style="color:#000ff;">($scope.data[0].xTimerCounter - $scope.data[$scope.data.length - 1].xTimerCounter);</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">$rootScope.countSlope = 0;</span>
<span style="color:#000ff;">$rootScope.timeSlope = 0;</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">//}</span>
<span style="color:#000ff;">$scope.disableInputs = false;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">function zeroOut() {</span>
<span style="color:#000ff;">$scope.countCount = 1;</span>
<span style="color:#000ff;">$scope.timeCount = 1;</span>
<span style="color:#000ff;">$scope.shiftCounter = 1;</span>
<span style="color:#000ff;">$scope.trendTimeData = 0;</span>
<span style="color:#000ff;">$scope.trendCountData = 0;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeData = $scope.accTimeData = 0;</span>
<span style="color:#000ff;">$rootScope.rootAccCountData = $scope.accCountData = 0;</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeData = $scope.avgTimeData = 0;</span>
<span style="color:#000ff;">$rootScope.rootAvgCountData = $scope.avgCountData = 0;</span>
<span style="color:#000ff;">$scope.avgTimerData = 0;</span>
<span style="color:#000ff;">$scope.isThereData = false;</span>
<span style="color:#000ff;">$rootScope.timeSlope = 0;</span>
<span style="color:#000ff;">$rootScope.countSlope = 0;</span>
<span style="color:#000ff;">/*$rootScope.machinesName = '';</span>
<span style="color:#000ff;">$rootScope.startingDate = '';</span>
<span style="color:#000ff;">$rootScope.endingDate = '';*/</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">/*for (var d = startDate; d <= endDate; d.setMonth(d.getMonth() + 1)) {</span>
<span style="color:#000ff;">da = new Date(d);</span>
<span style="color:#000ff;">da.setMonth(da.getMonth() + 1);</span>
<span style="color:#000ff;">$scope.webCall(Math.floor(new Date(d) / 1000), Math.floor(new Date(da) / 1000));</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">/*next();</span>
<span style="color:#000ff;">};*/</span>
<span style="color:#000ff;">/*$scope.webCall = function(startDate, endDate) {</span>
<span style="color:#000ff;">getData($scope.reporting.machineSelect.SoftwareKey, $scope.reporting.machineSelect.Address,</span>
<span style="color:#000ff;">startDate, endDate, $scope.reporting.hardware).then(function(data) {</span>
<span style="color:#000ff;">console.log(data);</span>
<span style="color:#000ff;">$scope.data.push({</span>
<span style="color:#000ff;">x: new Date(startDate * 1000),</span>
<span style="color:#000ff;">count: data.sum.count,</span>
<span style="color:#000ff;">timer: data.sum.timer</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">}, function(error) {</span>
<span style="color:#000ff;">console.log('Failure...', error);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">};*/</span>
<span style="color:#000ff;">function webCall(softwareKey, address, processObj, startDate, endDate, hardware) {</span>
<span style="color:#000ff;">var defer = $q.defer();</span>
<span style="color:#000ff;">/*console.log('http://54.213.13.56/api/' + softwareKey + '/' + address +</span>
<span style="color:#000ff;">'?process[]=' + processObj + '&date[]=' + startDate + '&date[]=' + endDate + '&index=' +</span>
<span style="color:#000ff;">hardware);*/</span>
<span style="color:#000ff;">$http.get('http://54.213.13.56/api/' + softwareKey + '/' + address +</span>
<span style="color:#000ff;">'?process[]=' + processObj + '&date[]=' + startDate + '&date[]=' + endDate + '&index=' +</span>
<span style="color:#000ff;">hardware).</span>
<span style="color:#000ff;">success(function(data) {</span>
<span style="color:#000ff;">//console.log('Data: ' + data);</span>
<span style="color:#000ff;">defer.resolve(data);</span>
<span style="color:#000ff;">}).</span>
<span style="color:#000ff;">error(function(data) {</span>
<span style="color:#000ff;">alert(data);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">return defer.promise;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">function webShiftCall(softwareKey, address, processObj, startDate, endDate, hardware) {</span>
<span style="color:#000ff;">startDate = startDate / 1000;</span>
<span style="color:#000ff;">endDate = endDate / 1000;</span>
<span style="color:#000ff;">var defer = $q.defer();</span>
<span style="color:#000ff;">/*console.log('http://54.213.13.56/api/' + softwareKey + '/' + address +</span>
<span style="color:#000ff;">'?process[]=' + processObj + '&date[]=' + startDate + '&date[]=' + endDate + '&index=' +</span>
<span style="color:#000ff;">hardware);*/</span>
<span style="color:#000ff;">$http.get('http://54.213.13.56/api/' + softwareKey + '/' + address +</span>
<span style="color:#000ff;">'?process[]=' + processObj + '&date[]=' + startDate + '&date[]=' + endDate + '&index=' +</span>
<span style="color:#000ff;">hardware).</span>
<span style="color:#000ff;">success(function(data) {</span>
<span style="color:#000ff;">shiftDataAggregator(data, startDate, endDate);</span>
<span style="color:#000ff;">defer.resolve(data);</span>
<span style="color:#000ff;">}).</span>
<span style="color:#000ff;">error(function(data) {</span>
<span style="color:#000ff;">alert(data);</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">return defer.promise;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">$scope.isThereData = false;</span>
<span style="color:#000ff;">function dataAggregator(data, d, da) {</span>
<span style="color:#000ff;">//if ($scope.reporting.yaxis === 'sum') {</span>
<span style="color:#000ff;">// Methods to do for sum</span>
<span style="color:#000ff;">//</span>
<span style="color:#000ff;">// This gets the percentage of time</span>
<span style="color:#000ff;">if ($scope.reporting.xaxis === 'Month') {</span>
<span style="color:#000ff;">tempDate = d;</span>
<span style="color:#000ff;">tempDate = new Date(tempDate.getFullYear(), tempDate.getMonth() + 1, 0);</span>
<span style="color:#000ff;">tempDate.setDate(tempDate.getDate());</span>
<span style="color:#000ff;">//console.log(tempDate.getDate());</span>
<span style="color:#000ff;">tempTimerData = data.sum.timer / ((tempDate.getDate() * $scope.WorkPeriod) / 1000) * 100;</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">tempTimerData = data.sum.timer / (($scope.WorkPeriod) / 1000) * 100;</span>
<span style="color:#000ff;">/*console.log('Timer: ' + data.sum.timer);</span>
<span style="color:#000ff;">console.log('Work Period: ' + $scope.WorkPeriod);</span>
<span style="color:#000ff;">console.log('Initial Work Period: ' + $scope.reporting.machineSelect.WorkPeriod);</span>
<span style="color:#000ff;">console.log('Calculations: ' + data.sum.timer / (($scope.WorkPeriod) / 1000) * 100);*/</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">//console.log(tempTimerData);</span>
<span style="color:#000ff;">if (tempTimerData !== 0 && data.sum.count !== 0) {</span>
<span style="color:#000ff;">$scope.isThereData = true;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">//var trendCountData = 0;</span>
<span style="color:#000ff;">//console.log('Temp Timer data after calc: ' + data.sum.timer);</span>
<span style="color:#000ff;">if ($scope.isThereData === true) {</span>
<span style="color:#000ff;">$scope.trendTimeData = trendLineCalculator(tempTimerData, $scope.timeCount, $scope.avgTimerData);</span>
<span style="color:#000ff;">$scope.trendCountData = trendLineCalculator(data.sum.count, $scope.countCount, $scope.accCountData);</span>
<span style="color:#000ff;">$rootScope.rootAccCountData = $scope.accCountData += data.sum.count;</span>
<span style="color:#000ff;">//console.log('count: ' + data.sum.count);</span>
<span style="color:#000ff;">$rootScope.rootAccTimeData = $scope.accTimeData += data.sum.timer;</span>
<span style="color:#000ff;">$scope.avgTimerData += tempTimerData;</span>
<span style="color:#000ff;">//console.log('timer: ' + $scope.avgTimerData);</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeData = ($scope.avgTimerData / $scope.timeCount);</span>
<span style="color:#000ff;">/*$rootScope.rootAvgTimeData /= 60;</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeData /= 60;*/</span>
<span style="color:#000ff;">/*console.log('Accumulated Time: ' + $scope.accTimeData);</span>
<span style="color:#000ff;">console.log('Time Counter: ' + $scope.timeCount);*/</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeData = Math.round($rootScope.rootAvgTimeData);</span>
<span style="color:#000ff;">$rootScope.rootAvgCountData = $scope.accCountData / $scope.countCount;</span>
<span style="color:#000ff;">$rootScope.rootAvgCountData = Math.round($rootScope.rootAvgCountData);</span>
<span style="color:#000ff;">/*console.log($rootScope.rootAvgTimeData);</span>
<span style="color:#000ff;">console.log($rootScope.rootAvgCountData);</span>
<span style="color:#000ff;">console.log($rootScope.rootAvgCountData);*/</span>
<span style="color:#000ff;">/*$scope.data.push({</span>
<span style="color:#000ff;">xCountCounter: $scope.countCount,</span>
<span style="color:#000ff;">xTimerCounter: $scope.timeCount</span>
<span style="color:#000ff;">});*/</span>
<span style="color:#000ff;">$scope.countCount++;</span>
<span style="color:#000ff;">$scope.timeCount++;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeData = ($rootScope.rootAccTimeData / 60) / 60;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeData = Math.round($rootScope.rootAccTimeData);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">//$rootScope.rootAccTimeData = Math.round($rootScope.rootAccTimeData);</span>
<span style="color:#000ff;">$scope.data.push({</span>
<span style="color:#000ff;">x: new Date(d),</span>
<span style="color:#000ff;">count: Math.round(data.sum.count * 100) / 100,</span>
<span style="color:#000ff;">timer: Math.round(tempTimerData * 100) / 100,</span>
<span style="color:#000ff;">trendTimer: Math.round($scope.trendTimeData),</span>
<span style="color:#000ff;">trendCount: Math.round($scope.trendCountData),</span>
<span style="color:#000ff;">xCountCounter: $scope.countCount - 1,</span>
<span style="color:#000ff;">xTimerCounter: $scope.timeCount - 1,</span>
<span style="color:#000ff;">shifts: [],</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">/*console.log(data.sum.timer);</span>
<span style="color:#000ff;">console.log($scope.data.trendTimer);</span>
<span style="color:#000ff;">console.log(data.sum.count);</span>
<span style="color:#000ff;">console.log($scope.data.trendCount);*/</span>
<span style="color:#000ff;">/*} else {</span>
<span style="color:#000ff;">// Methods to do for percentage</span>
<span style="color:#000ff;">tempTimerData = data.sum.timer / ((da - d) / 1000) * 100;</span>
<span style="color:#000ff;">//var trendCountData = 0;</span>
<span style="color:#000ff;">//console.log('Temp Timer data after calc: ' + data.sum.timer);</span>
<span style="color:#000ff;">$scope.trendTimeData = trendLineCalculator(tempTimerData, $scope.timeCount, $scope.accTimeData);</span>
<span style="color:#000ff;">$scope.trendCountData = trendLineCalculator(data.sum.count, $scope.countCount, $scope.accCountData);</span>
<span style="color:#000ff;">$rootScope.rootAccCountData = $scope.accCountData += data.sum.count;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeData = $scope.accTimeData += tempTimerData;</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeData = ($scope.accTimeData / $scope.timeCount);*/</span>
<span style="color:#000ff;">/*console.log('Accumulated Time: ' + $scope.accTimeData);</span>
<span style="color:#000ff;">console.log('Time Counter: ' + $scope.timeCount);*/</span>
<span style="color:#000ff;">/*$rootScope.rootAvgTimeData = Math.round($rootScope.rootAvgTimeData);</span>
<span style="color:#000ff;">$rootScope.rootAvgCountData = $scope.accCountData / $scope.countCount;</span>
<span style="color:#000ff;">$rootScope.rootAvgCountData = Math.round($rootScope.rootAvgCountData);*/</span>
<span style="color:#000ff;">/*$scope.data.push({</span>
<span style="color:#000ff;">xCountCounter: $scope.countCount,</span>
<span style="color:#000ff;">xTimerCounter: $scope.timeCount</span>
<span style="color:#000ff;">});*/</span>
<span style="color:#000ff;">/*$scope.countCount++;</span>
<span style="color:#000ff;">$scope.timeCount++;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeData = $rootScope.rootAccTimeData;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeData = Math.round($rootScope.rootAccTimeData);</span>
<span style="color:#000ff;">$scope.data.push({</span>
<span style="color:#000ff;">x: new Date(d),</span>
<span style="color:#000ff;">count: Math.round(data.sum.count * 10) / 10,</span>
<span style="color:#000ff;">timer: Math.round(tempTimerData * 10) / 10,</span>
<span style="color:#000ff;">trendTimer: Math.round($scope.trendTimeData * 10) / 10,</span>
<span style="color:#000ff;">trendCount: Math.round($scope.trendCountData * 10) / 10,</span>
<span style="color:#000ff;">xCountCounter: $scope.countCount - 1,</span>
<span style="color:#000ff;">xTimerCounter: $scope.timeCount - 1</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">}*/</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">function dataAggregatorNoZeros(data, d, da) {</span>
<span style="color:#000ff;">if ($scope.reporting.yaxis === 'sum') {</span>
<span style="color:#000ff;">// Methods to do for sum</span>
<span style="color:#000ff;">//</span>
<span style="color:#000ff;">// This gets the percentage of time</span>
<span style="color:#000ff;">//tempTimerData = data.sum.timer / ((da - d) / 1000) * 100;</span>
<span style="color:#000ff;">//var trendCountData = 0;</span>
<span style="color:#000ff;">//console.log('Temp Timer data after calc: ' + data.sum.timer);</span>
<span style="color:#000ff;">$scope.trendTimeDataNoZeros = trendLineCalculator(data.sum.timer, $scope.timeCountNoZeros, $scope.accTimeDataNoZeros);</span>
<span style="color:#000ff;">$scope.trendCountDataNoZeros = trendLineCalculator(data.sum.count, $scope.countCountNoZeros, $scope.accCountDataNoZeros);</span>
<span style="color:#000ff;">$rootScope.rootAccCountDataNoZeros = $scope.accCountDataNoZeros += data.sum.count;</span>
<span style="color:#000ff;">//console.log('count: ' + data.sum.count);</span>
<span style="color:#000ff;">$rootScope.rootAccTimeDataNoZeros = $scope.accTimeDataNoZeros += data.sum.timer;</span>
<span style="color:#000ff;">//console.log('timer: ' + data.sum.timer);</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeDataNoZeros = (($scope.accTimeDataNoZeros / $scope.timeCountNoZeros) / 60) / 60;</span>
<span style="color:#000ff;">/*$rootScope.rootAvgTimeData /= 60;</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeData /= 60;*/</span>
<span style="color:#000ff;">/*console.log('Accumulated Time: ' + $scope.accTimeData);</span>
<span style="color:#000ff;">console.log('Time Counter: ' + $scope.timeCount);*/</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeDataNoZeros = Math.round($rootScope.rootAvgTimeDataNoZeros);</span>
<span style="color:#000ff;">$rootScope.rootAvgCountDataNoZeros = $scope.accCountDataNoZeros / $scope.countCountNoZeros;</span>
<span style="color:#000ff;">$rootScope.rootAvgCountDataNoZeros = Math.round($rootScope.rootAvgCountDataNoZeros);</span>
<span style="color:#000ff;">/*$scope.data.push({</span>
<span style="color:#000ff;">xCountCounter: $scope.countCount,</span>
<span style="color:#000ff;">xTimerCounter: $scope.timeCount</span>
<span style="color:#000ff;">});*/</span>
<span style="color:#000ff;">$scope.countCountNoZeros++;</span>
<span style="color:#000ff;">$scope.timeCountNoZeros++;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeDataNoZeros = ($rootScope.rootAccTimeDataNoZeros / 60) / 60;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeDataNoZeros = Math.round($rootScope.rootAccTimeDataNoZeros);</span>
<span style="color:#000ff;">//$rootScope.rootAccTimeData = Math.round($rootScope.rootAccTimeData);</span>
<span style="color:#000ff;">$scope.nonZeroData.push({</span>
<span style="color:#000ff;">x: new Date(d),</span>
<span style="color:#000ff;">count: Math.round(data.sum.count),</span>
<span style="color:#000ff;">timer: Math.round(data.sum.timer),</span>
<span style="color:#000ff;">trendTimer: Math.round($scope.trendTimeDataNoZeros),</span>
<span style="color:#000ff;">trendCount: Math.round($scope.trendCountDataNoZeros),</span>
<span style="color:#000ff;">xCountCounter: $scope.countCountNoZeros - 1,</span>
<span style="color:#000ff;">xTimerCounter: $scope.timeCountNoZeros - 1</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">/*console.log(data.sum.timer);</span>
<span style="color:#000ff;">console.log($scope.data.trendTimer);</span>
<span style="color:#000ff;">console.log(data.sum.count);</span>
<span style="color:#000ff;">console.log($scope.data.trendCount);*/</span>
<span style="color:#000ff;">} else {</span>
<span style="color:#000ff;">// Methods to do for percentage</span>
<span style="color:#000ff;">tempTimerData = data.sum.timer / ((da - d) / 1000) * 100;</span>
<span style="color:#000ff;">//var trendCountData = 0;</span>
<span style="color:#000ff;">//console.log('Temp Timer data after calc: ' + data.sum.timer);</span>
<span style="color:#000ff;">$scope.trendTimeDataNoZeros = trendLineCalculator(tempTimerData, $scope.timeCountNoZeros, $scope.accTimeDataNoZeros);</span>
<span style="color:#000ff;">$scope.trendCountDataNoZeros = trendLineCalculator(data.sum.count, $scope.countCountNoZeros, $scope.accCountDataNoZeros);</span>
<span style="color:#000ff;">$rootScope.rootAccCountDataNoZeros = $scope.accCountDataNoZeros += data.sum.countNoZeros;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeDataNoZeros = $scope.accTimeDataNoZeros += tempTimerDataNoZeros;</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeDataNoZeros = ($scope.accTimeDataNoZeros / $scope.timeCountNoZeros);</span>
<span style="color:#000ff;">/*console.log('Accumulated Time: ' + $scope.accTimeData);</span>
<span style="color:#000ff;">console.log('Time Counter: ' + $scope.timeCount);*/</span>
<span style="color:#000ff;">$rootScope.rootAvgTimeData = Math.round($rootScope.rootAvgTimeData);</span>
<span style="color:#000ff;">$rootScope.rootAvgCountData = $scope.accCountData / $scope.countCount;</span>
<span style="color:#000ff;">$rootScope.rootAvgCountData = Math.round($rootScope.rootAvgCountData);</span>
<span style="color:#000ff;">/*$scope.data.push({</span>
<span style="color:#000ff;">xCountCounter: $scope.countCount,</span>
<span style="color:#000ff;">xTimerCounter: $scope.timeCount</span>
<span style="color:#000ff;">});*/</span>
<span style="color:#000ff;">$scope.countCount++;</span>
<span style="color:#000ff;">$scope.timeCount++;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeData = $rootScope.rootAccTimeData;</span>
<span style="color:#000ff;">$rootScope.rootAccTimeData = Math.round($rootScope.rootAccTimeData);</span>
<span style="color:#000ff;">$scope.dataNoZeros.push({</span>
<span style="color:#000ff;">x: new Date(d),</span>
<span style="color:#000ff;">count: Math.round(data.sum.count * 10) / 10,</span>
<span style="color:#000ff;">timer: Math.round(tempTimerData * 10) / 10,</span>
<span style="color:#000ff;">trendTimer: Math.round($scope.trendTimeData * 10) / 10,</span>
<span style="color:#000ff;">trendCount: Math.round($scope.trendCountData * 10) / 10,</span>
<span style="color:#000ff;">xCountCounter: $scope.countCount - 1,</span>
<span style="color:#000ff;">xTimerCounter: $scope.timeCount - 1</span>
<span style="color:#000ff;">});</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">function trendLineCalculator(value, count, accValue) {</span>
<span style="color:#000ff;">/*console.log('value: ' + value);</span>
<span style="color:#000ff;">console.log('count: ' + count);</span>
<span style="color:#000ff;">console.log('accValue: ' + accValue);*/</span>
<span style="color:#000ff;">average = (accValue + value) / count;</span>
<span style="color:#000ff;">//console.log('After Claculations and Such: ' + average);</span>
<span style="color:#000ff;">return average;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">$scope.changedMachine = function(item) {</span>
<span style="color:#000ff;">$scope.machineDates = item.Dates;</span>
<span style="color:#000ff;">//console.log(item);</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">/**</span>
<span style="color:#000ff;">* Write to the Console</span>
<span style="color:#000ff;">* @param {string} message</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">self.log = function(message) {</span>
<span style="color:#000ff;">console.log(message);</span>
<span style="color:#000ff;">};</span>
<span style="color:#000ff;">function findLineByLeastSquares(values_x, values_y) {</span>
<span style="color:#000ff;">var sum_x = 0;</span>
<span style="color:#000ff;">var sum_y = 0;</span>
<span style="color:#000ff;">var sum_xy = 0;</span>
<span style="color:#000ff;">var sum_xx = 0;</span>
<span style="color:#000ff;">var count = 0;</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* We'll use those variables for faster read/write access.</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">var x = 0;</span>
<span style="color:#000ff;">var y = 0;</span>
<span style="color:#000ff;">/*****************************WHAT MARKO ADDED***************************************/</span>
<span style="color:#000ff;">//index of array where y array will progress into a sequence of non-zero elements</span>
<span style="color:#000ff;">var index_nonZero;</span>
<span style="color:#000ff;">//first if statement checks if first element is zero</span>
<span style="color:#000ff;">//if y[0]!=0 then we have nothing to worry about</span>
<span style="color:#000ff;">//if y[0] = 0 then we see where the elements begin to be non zero</span>
<span style="color:#000ff;">//once we find that spot, we break out of loop and remove beginning elements that are zero.</span>
<span style="color:#000ff;">if (values_y[0] === 0) {</span>
<span style="color:#000ff;">for (i = 0; i < values_y.length; i++) {</span>
<span style="color:#000ff;">if (values_y[i] !== 0) {</span>
<span style="color:#000ff;">index_nonZero = i;</span>
<span style="color:#000ff;">break;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">values_y = values_y.splice(index_nonZero, values_y.length);</span>
<span style="color:#000ff;">//tempValuesX = values_x.splice(0, index_nonZero);</span>
<span style="color:#000ff;">values_x = values_x.splice(index_nonZero, values_x.length);</span>
<span style="color:#000ff;">console.log(values_y);</span>
<span style="color:#000ff;">//console.log(values_X);</span>
<span style="color:#000ff;">/******************************END OF WHAT MARKO ADDED***************************/</span>
<span style="color:#000ff;">var values_length = values_x.length;</span>
<span style="color:#000ff;">if (values_length != values_y.length) {</span>
<span style="color:#000ff;">throw new Error('The parameters values_x and values_y need to have same size!');</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* Nothing to do.</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">if (values_length === 0) {</span>
<span style="color:#000ff;">return [</span>
<span style="color:#000ff;">[],</span>
<span style="color:#000ff;">[]</span>
<span style="color:#000ff;">];</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">// values_y is shorter than x and so it fails trying to do calculations below. Need to</span>
<span style="color:#000ff;">// look into for a fix</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* Calculate the sum for each of the parts necessary.</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">for (var v = 0; v < values_length; v++) {</span>
<span style="color:#000ff;">x = values_x[v];</span>
<span style="color:#000ff;">y = values_y[v];</span>
<span style="color:#000ff;">sum_x += x;</span>
<span style="color:#000ff;">sum_y += y;</span>
<span style="color:#000ff;">sum_xx += x * x;</span>
<span style="color:#000ff;">sum_xy += x * y;</span>
<span style="color:#000ff;">count++;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* Calculate m and b for the formular:</span>
<span style="color:#000ff;">* y = x * m + b</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">var m = (count * sum_xy - sum_x * sum_y) / (count * sum_xx - sum_x * sum_x);</span>
<span style="color:#000ff;">$scope.tempSlope = m;</span>
<span style="color:#000ff;">var b = (sum_y / count) - (m * sum_x) / count;</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* We will make the x and y result line now</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">var result_values_x = [];</span>
<span style="color:#000ff;">var result_values_y = [];</span>
<span style="color:#000ff;">for (i = 0; i < index_nonZero; i++) {</span>
<span style="color:#000ff;">result_values_y.push(0);</span>
<span style="color:#000ff;">result_values_x.push(0);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">for (var v = 0; v < values_length; v++) {</span>
<span style="color:#000ff;">x = values_x[v];</span>
<span style="color:#000ff;">y = x * m + b;</span>
<span style="color:#000ff;">result_values_x.push(x);</span>
<span style="color:#000ff;">result_values_y.push(y);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">return [result_values_x, result_values_y];</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">//console.log(findLineByLeastSquares(new Array(1, 2, 3, 4, 5, 6, 7), new Array(0, 0, 0, 100, 50, 41, 57)));</span>
<span style="color:#000ff;">function findLineByLeastSquaresLog(values_x, values_y) {</span>
<span style="color:#000ff;">var sum_x = 0;</span>
<span style="color:#000ff;">var sum_y = 0;</span>
<span style="color:#000ff;">var sum_xy = 0;</span>
<span style="color:#000ff;">var sum_xx = 0;</span>
<span style="color:#000ff;">var count = 0;</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* We'll use those variables for faster read/write access.</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">var x = 0;</span>
<span style="color:#000ff;">var y = 0;</span>
<span style="color:#000ff;">var values_length = values_x.length;</span>
<span style="color:#000ff;">if (values_length != values_y.length) {</span>
<span style="color:#000ff;">throw new Error('The parameters values_x and values_y need to have same size!');</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* Nothing to do.</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">if (values_length === 0) {</span>
<span style="color:#000ff;">return [</span>
<span style="color:#000ff;">[],</span>
<span style="color:#000ff;">[]</span>
<span style="color:#000ff;">];</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* Calculate the sum for each of the parts necessary.</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">for (var v = 0; v < values_length; v++) {</span>
<span style="color:#000ff;">x = values_x[v];</span>
<span style="color:#000ff;">y = values_y[v];</span>
<span style="color:#000ff;">if (y !== 0) {</span>
<span style="color:#000ff;">y = Math.log(y);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">sum_x += x;</span>
<span style="color:#000ff;">sum_y += y;</span>
<span style="color:#000ff;">sum_xx += x * x;</span>
<span style="color:#000ff;">sum_xy += x * y;</span>
<span style="color:#000ff;">count++;</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* Calculate m and b for the formular:</span>
<span style="color:#000ff;">* y = x * m + b</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">var m = (count * sum_xy - sum_x * sum_y) / (count * sum_xx - sum_x * sum_x);</span>
<span style="color:#000ff;">//$scope.tempSlope = m;</span>
<span style="color:#000ff;">var b = (sum_y / count) - (m * sum_x) / count;</span>
<span style="color:#000ff;">/*</span>
<span style="color:#000ff;">* We will make the x and y result line now</span>
<span style="color:#000ff;">*/</span>
<span style="color:#000ff;">var result_values_x = [];</span>
<span style="color:#000ff;">var result_values_y = [];</span>
<span style="color:#000ff;">for (var v = 0; v < values_length; v++) {</span>
<span style="color:#000ff;">x = values_x[v];</span>
<span style="color:#000ff;">y = x * m + b;</span>
<span style="color:#000ff;">result_values_x.push(x);</span>
<span style="color:#000ff;">result_values_y.push(y);</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">return [result_values_x, result_values_y];</span>
<span style="color:#000ff;">}</span>
<span style="color:#000ff;">// Initialise Directive</span>
<span style="color:#000ff;">self.Initialise();</span>
<span style="color:#000ff;">},</span>
<span style="color:#000ff;">// require: 'ngModel', // Array = multiple requires, ? = optional, ^ = check parent elements</span>
<span style="color:#000ff;">restrict: 'E', // E = Element, A = Attribute, C = Class, M = Comment</span>
<span style="color:#000ff;">// template: '<div>hi</div>',</span>
<span style="color:#000ff;">templateUrl: "view/reportingSidebar.html?v=0.1"</span>
<span style="color:#000ff;">// replace: true,</span>
<span style="color:#000ff;">// transclude: true,</span>
<span style="color:#000ff;">// compile: function(tElement, tAttrs, function transclude(function(scope, cloneLinkingFn){ return function linking(scope, elm, attrs){}})),</span>
<span style="color:#000ff;">//link: function($scope, iElm, iAttrs, controller) {</span>
<span style="color:#000ff;">//}</span>
}; });