github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/frontend/directeurs/src/components/inscrits/PanelContraintesRecupere.ts (about) 1 import Vue from "vue"; 2 import Component from "vue-class-component"; 3 import { C } from "@/logic/controller"; 4 import TooltipBtn from "@/components/TooltipBtn.vue"; 5 import { 6 ContrainteComplete, 7 Groupe, 8 PreviewDocumentsParticipantsOut 9 } from "../../logic/types"; 10 import { nullId } from "@/logic/formatter"; 11 12 const PanelContraintesRecupereProps = Vue.extend({ 13 props: {} 14 }); 15 16 @Component({ 17 components: { TooltipBtn } 18 }) 19 export default class PanelContraintesRecupere extends PanelContraintesRecupereProps { 20 previewDocuments: PreviewDocumentsParticipantsOut | null = null; 21 C = C; // reactivity 22 23 /** Renvoie les contraintes en application (sur au moins un groupe) */ 24 get contraintes() { 25 const contraintes: { [key: number]: boolean } = {}; 26 C.groupeContraintes.forEach(gc => (contraintes[gc.id_contrainte] = true)); 27 C.campContraintes.forEach(gc => (contraintes[gc.id_contrainte] = true)); 28 return Object.keys(contraintes).map( 29 idContrainte => C.contraintes[Number(idContrainte)] 30 ); 31 } 32 33 get loadingPreview() { 34 return this.previewDocuments == null; 35 } 36 37 targetsByContraintes(idContrainte: number): string[] { 38 if (C.campContraintes.find(cc => cc.id_contrainte == idContrainte)) { 39 return ["Pour tous"]; 40 } 41 const out: string[] = []; 42 C.groupeContraintes.forEach(gc => { 43 if (gc.id_contrainte == idContrainte) { 44 out.push(C.groupes[gc.id_groupe].nom); 45 } 46 }); 47 return out; 48 } 49 50 async previewDoc(contrainte: ContrainteComplete) { 51 this.previewDocuments = null; 52 const data = await C.previewDocumentsInscrits(contrainte.id); 53 if (data === undefined) return; 54 this.previewDocuments = data; 55 } 56 57 async downloadAll() { 58 const ok = C.downloadDocumentInscrits(nullId()); 59 if (ok === undefined) return; 60 C.notifications.success = "Documents téléchargés."; 61 } 62 63 async download(contrainte: ContrainteComplete) { 64 const ok = C.downloadDocumentInscrits({ 65 Valid: true, 66 Int64: contrainte.id 67 }); 68 if (ok === undefined) return; 69 C.notifications.success = `Documents pour la catégorie ${contrainte.nom} téléchargés.`; 70 } 71 }