/** * Copyright Guillaume Bourgeois (2018) * * contact@souke.fr * * Ce logiciel est un programme informatique servant à aider les producteurs * à distribuer leur production en circuits courts. * * Ce logiciel est régi par la licence CeCILL soumise au droit français et * respectant les principes de diffusion des logiciels libres. Vous pouvez * utiliser, modifier et/ou redistribuer ce programme sous les conditions * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA * sur le site "http://www.cecill.info". * * En contrepartie de l'accessibilité au code source et des droits de copie, * de modification et de redistribution accordés par cette licence, il n'est * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, * seule une responsabilité restreinte pèse sur l'auteur du programme, le * titulaire des droits patrimoniaux et les concédants successifs. * * A cet égard l'attention de l'utilisateur est attirée sur les risques * associés au chargement, à l'utilisation, à la modification et/ou au * développement et à la reproduction du logiciel par l'utilisateur étant * donné sa spécificité de logiciel libre, qui peut le rendre complexe à * manipuler et qui le réserve donc à des développeurs et des professionnels * avertis possédant des connaissances informatiques approfondies. Les * utilisateurs sont donc invités à charger et tester l'adéquation du * logiciel à leurs besoins dans des conditions permettant d'assurer la * sécurité de leurs systèmes et ou de leurs données et, plus généralement, * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. * * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez * pris connaissance de la licence CeCILL, et que vous en avez accepté les * termes. */ var selector = '#app-report-index'; if($(selector).length) { var app = new Vue({ el: selector, 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 (isDownload) { 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('isDownload', isDownload ? 1 : 0); data.append('users', idsUsersArray); data.append('pointsSale', idsPointsSaleArray); data.append('distributions', idsDistributionsArray); axios.post("ajax-report", data) .then(function (response) { app.showLoading = false; if(isDownload) { saveData(response.data, 'rapport.csv'); } else { app.tableReport = response.data; app.showReport = true; } }); }, reportChange: function () { this.showReport = false; } } }); }