var app = new Vue({ el: '#app-report-index', data: { loading: true, showLoading: true, showReport: false, tableReport: [], currentSection: 'users', sections: [ { name: 'Utilisateurs', id: 'users', icon: 'fa-users', }, { name: 'Points de vente', id: 'points-sale', icon: 'fa-map-marker', }, { name: 'Distributions', id: 'distributions', icon: 'fa-calendar', } ], termSearchUser: '', usersArray: [], pointsSaleArray: [], distributionYearsArray: [], distributionYear: null, distributionsByMonthArray: [] }, mounted: function() { this.init() ; }, methods: { init: function() { var app = this ; axios.get("ajax-init",{params: {}}) .then(function(response) { app.usersArray = response.data.usersArray ; app.pointsSaleArray = response.data.pointsSaleArray ; app.distributionYearsArray = response.data.distributionYearsArray ; app.distributionYear = app.distributionYearsArray[app.distributionYearsArray.length - 1] ; app.distributionsByMonthArray = response.data.distributionsByMonthArray ; app.loading = false ; app.showLoading = false ; }); }, changeSection: function(section) { this.currentSection = section.id ; }, countUsers: function() { var count = 0 ; for(var i = 0; i < this.usersArray.length; i++) { if(this.usersArray[i].checked) { count ++ ; } } return count ; }, countPointsSale: function() { var count = 0 ; for(var i = 0; i < this.pointsSaleArray.length; i++) { if(this.pointsSaleArray[i].checked) { count ++ ; } } return count ; }, countDistributions: function() { var count = 0 ; for(var i in this.distributionsByMonthArray) { for(var j = 0; j < this.distributionsByMonthArray[i].distributions.length; j++) { if(this.distributionsByMonthArray[i].distributions[j].checked) { count ++ ; } } } return count ; }, countDistributionsByMonth: function(month) { var count = 0 ; for(var j = 0; j < this.distributionsByMonthArray[month].distributions.length; j++) { if(this.distributionsByMonthArray[month].distributions[j].checked) { count ++ ; } } return count ; }, selectDistributions: function(month) { var countDistributions = this.countDistributionsByMonth(month) ; for(var j = 0; j < this.distributionsByMonthArray[month].distributions.length; j++) { Vue.set(this.distributionsByMonthArray[month].distributions[j], 'checked', countDistributions ? false : true); } this.reportChange(); }, generateReport: function() { var app = this ; app.showLoading = true ; var data = new FormData(); var idsUsersArray = [] ; for(var i = 0; i < app.usersArray.length; i++) { if(app.usersArray[i].checked) { idsUsersArray.push(app.usersArray[i].user_id) ; } } var idsPointsSaleArray = [] ; for(var i = 0; i < app.pointsSaleArray.length; i++) { if(app.pointsSaleArray[i].checked) { idsPointsSaleArray.push(app.pointsSaleArray[i].id) ; } } var idsDistributionsArray = [] ; for(var i in this.distributionsByMonthArray) { for(var j = 0; j < this.distributionsByMonthArray[i].distributions.length; j++) { if(this.distributionsByMonthArray[i].distributions[j].checked) { idsDistributionsArray.push(app.distributionsByMonthArray[i].distributions[j].id) ; } } } data.append('users', idsUsersArray); data.append('pointsSale', idsPointsSaleArray); data.append('distributions', idsDistributionsArray); axios.post("ajax-report",data) .then(function(response) { app.tableReport = response.data ; app.showLoading = false ; app.showReport = true ; }); }, reportChange: function() { this.showReport = false; } } });