|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- /**
- * 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;
- }
- }
- });
- }
|