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  }