PageSourceSearch

https://lms.epb.paris/assets/GestionGroupes-BK6RQo98.js

js epb.paris collected 2026-10-04 16:09:39 UTC 9,121 bytes, 1 lines download raw bytes

1import{r as t,j as e,L as K}from"./vendor-react-C9iwtPUd.js";import{j as P,L as Q,aI as V,m as Y,l as Z,Q as H,aJ as X,aK as _,z as ee}from"./index-DQOGU8_R.js";import{M as $}from"./Modal-C3qz6wlO.js";import{S as se}from"./SearchableSelect-Ck9-mBId.js";import"./vendor-firebase-DiTSP0xe.js";const D=["#07294D","#EA6927","#07294D","#0EA5A4","#1E4670","#C98A1E"],le=a=>{let r=0;for(let i=0;i<(a||"").length;i++)r=a.charCodeAt(i)+((r<<5)-r);return D[Math.abs(r)%D.length]},ae=a=>(a||"?").replace(/[^A-Za-z0-9]/g,"").slice(0,3).toUpperCase()||"?",te=[{value:"",label:"-- Aucun --"},{value:"BTS1",label:"BTS 1ère année"},{value:"BTS2",label:"BTS 2ème année"},{value:"DCG1",label:"DCG 1ère année"},{value:"DCG2",label:"DCG 2ème année"},{value:"DCG3",label:"DCG 3ème année"},{value:"Bachelor1",label:"Bachelor 1ère année"},{value:"Bachelor2",label:"Bachelor 2ème année"},{value:"Bachelor3",label:"Bachelor 3ème année"},{value:"Mastere1",label:"Mastère 1ère année"},{value:"Mastere2",label:"Mastère 2ème année"}],re=[{value:null,label:"-- Aucune --"},{value:1,label:"1ère année"},{value:2,label:"2ème année"},{value:3,label:"3ème année"},{value:4,label:"4ème année"},{value:5,label:"5ème année"}];function me(){const{dark:a}=P(),[r,i]=t.useState([]),[c,B]=t.useState([]),[F,m]=t.useState(!1),[h,f]=t.useState(null),[x,b]=t.useState(null),[A,p]=t.useState(""),[j,v]=t.useState(""),[k,d]=t.useState(null),[G,u]=t.useState(""),[o,N]=t.useState("active"),[y,ne]=t.useState(null),[g,I]=t.useState(""),[L,T]=t.useState({}),C=async()=>{const[s,l,n]=await Promise.all([Y(),Z(),H().catch(()=>[])]);i(s),B(l),l.length&&!j&&v(l[0].id);const S={};n.forEach(J=>(J.groupes||[]).forEach(M=>{S[M]=(S[M]||0)+1})),T(S)};t.useEffect(()=>{C()},[]);const z=s=>{b(s.id),p(s.nom),v(s.formationId||""),d(s.annee||null),u(s.cycle||""),m(!0)},O=()=>{b(null),p(""),d(null),u(""),c.length&&v(c[0].id),m(!0)},R=async s=>{s.preventDefault();const l={nom:A,formationId:j,annee:k,cycle:G};try{x?await X(x,l):await _(l)}catch{ee.error("Le groupe n'a pas pu être enregistré - réessayez.");return}p(""),d(null),u(""),m(!1),b(null),C()},U=s=>c.find(l=>l.id===s)?.nom||"",w=t.useMemo(()=>{let s=r;return o==="active"?s=s.filter(l=>!l.archived):o==="archived"&&(s=s.filter(l=>l.archived)),y!==null&&(s=s.filter(l=>l.annee===y)),s.sort((l,n)=>(l.nom||"").localeCompare(n.nom||"","fr"))},[r,o,y]),E=t.useMemo(()=>g?w.filter(s=>s.formationId===g):w,[w,g]),W=r.filter(s=>!s.archived).length,q=r.filter(s=>s.archived).length;return t.useMemo(()=>{const s={};return r.filter(l=>!l.archived).forEach(l=>{const n=l.annee||0;s[n]=(s[n]||0)+1}),s},[r]),e.jsx(Q,{children:e.jsx("div",{className:"gv2 fade-in",children:e.jsxs("div",{className:"wrap",children:[e.jsxs("div",{className:"crumb",children:[e.jsx("span",{className:"seg",children:"Admin"}),e.jsx("span",{className:"sep",children:"/"}),e.jsx("span",{className:"cur",children:"Gestion groupes"}),e.jsx("span",{className:"sp"}),e.jsx("button",{className:"btn-accent",onClick:O,children:"+ Créer un groupe"})]}),e.jsxs("div",{className:"toolbar",children:[e.jsx("span",{className:"lbl",children:"Formation"}),e.jsxs("select",{className:"fsel",style:{minWidth:220},value:g,onChange:s=>I(s.target.value),children:[e.jsx("option",{value:"",children:"Toutes les formations"}),c.map(s=>e.jsx("option",{value:s.id,children:s.nom},s.id))]}),e.jsx("span",{style:{flex:1}}),e.jsxs("div",{className:"seg-toggle",children:[e.jsxs("button",{className:o==="active"?"on":"",onClick:()=>N("active"),children:["Actifs (",W,")"]}),e.jsxs("button",{className:o==="archived"?"on":"",onClick:()=>N("archived"),children:["Archivés (",q,")"]}),e.jsx("button",{className:o==="all"?"on":"",onClick:()=>N("all"),children:"Tous"})]})]}),e.jsxs("div",{className:"grid",children:[E.map(s=>{const l=le(s.nom),n=s.cycle||(s.annee?`${s.annee}ᵉ année`:" - ");return e.jsxs("div",{className:`card${s.archived?" arch":""}`,style:{"--c":l},children:[e.jsxs("div",{className:"chead",children:[e.jsx("span",{className:"av",style:{background:l},children:ae(s.nom)}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsx("div",{className:"nm",children:s.nom}),e.jsx("div",{className:"sub",children:U(s.formationId)||" - "})]})]}),e.jsxs("div",{className:"stats",children:[e.jsxs("div",{children:[e.jsx("div",{className:"stbig",children:L[s.id]||0}),e.jsx("div",{className:"stlab",children:"Élèves"})]}),e.jsxs("div",{className:"stwide",children:[e.jsx("div",{className:"v",children:n}),e.jsx("div",{className:"stlab",children:"Niveau"})]})]}),e.jsxs("div",{className:"cacts",children:[e.jsx(K,{className:"b-see",to:"/gestion-utilisateurs",children:"Voir élèves"}),e.jsx("button",{className:"b-edit",onClick:()=>z(s),children:"Modifier"})]})]},s.id)}),E.length===0&&e.jsx("div",{className:"empty",children:o==="archived"?"Aucun groupe archivé":o==="active"?"Aucun groupe actif":"Aucun groupe"})]}),e.jsx($,{open:!!h,onClose:()=>f(null),title:"Supprimer le groupe",children:h&&e.jsxs("div",{className:"space-y-5",children:[e.jsx("div",{className:`backdrop-blur-xl ${a?"bg-red-500/10 border-red-500/30":"bg-red-50/80 border-red-200/50"} border rounded-2xl p-5 shadow-md`,children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("span",{className:"text-3xl",children:"⚠️"}),e.jsxs("div",{children:[e.jsx("p",{className:`font-bold ${a?"text-red-300":"text-red-800"} text-lg`,children:"Confirmer la suppression"}),e.jsxs("p",{className:`text-sm ${a?"text-red-400":"text-red-700"} mt-2`,children:["Supprimer le groupe ",e.jsxs("strong",{children:['"',h.nom,'"']})," ?"]}),e.jsx("p",{className:`text-xs ${a?"text-red-400":"text-red-600"} mt-3 leading-relaxed`,children:"Les étudiants du groupe ne seront pas supprimés, mais ils perdront leur affectation à ce groupe."})]})]})}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx("button",{onClick:async()=>{await V(h.id),f(null),C()},className:"flex-1 bg-gradient-to-r from-red-600 to-red-700 text-white py-3.5 rounded-2xl hover:scale-104 font-semibold transition-all shadow-lg hover:shadow-xl",children:"Oui, supprimer"}),e.jsx("button",{onClick:()=>f(null),className:`flex-1 backdrop-blur-xl ${a?"bg-white/10 text-gray-300 hover:bg-white/20 border-white/10":"bg-gray-100/80 text-gray-700 hover:bg-gray-200/80 border-gray-200/50"} py-3.5 rounded-2xl hover:scale-104 font-semibold transition-all border`,children:"Annuler"})]})]})}),e.jsx($,{open:F,onClose:()=>{m(!1),b(null),d(null),u("")},title:x?"Modifier le groupe":"Nouveau groupe",children:e.jsxs("form",{onSubmit:R,className:"space-y-5",children:[e.jsxs("div",{children:[e.jsx("label",{className:`block text-sm font-semibold ${a?"text-gray-300":"text-gray-700"} mb-2`,children:"Nom du groupe"}),e.jsx("input",{placeholder:"Ex: Groupe A",value:A,onChange:s=>p(s.target.value),className:`w-full backdrop-blur-xl ${a?"bg-white/6 border-white/10 text-gray-200":"bg-white/60 border-white/20 text-gray-900"} border rounded-2xl px-4 py-3.5 focus:outline-none focus:ring-2 focus:ring-[#07294D] transition-all shadow-sm`,required:!0})]}),e.jsxs("div",{className:"relative z-30 overflow-visible",children:[e.jsx("label",{className:`block text-sm font-semibold ${a?"text-gray-300":"text-gray-700"} mb-2`,children:"Formation"}),e.jsx(se,{value:j,onChange:v,options:c.map(s=>({id:s.id,label:s.nom})),placeholder:"Sélectionner une formation...",searchable:!0})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:`block text-sm font-semibold ${a?"text-gray-300":"text-gray-700"} mb-2`,children:"Année du cycle"}),e.jsx("select",{value:k||"",onChange:s=>d(s.target.value?parseInt(s.target.value):null),className:`w-full backdrop-blur-xl ${a?"bg-white/6 border-white/10 text-gray-200":"bg-white/60 border-white/20 text-gray-900"} border rounded-2xl px-4 py-3.5 focus:outline-none focus:ring-2 focus:ring-[#07294D] transition-all shadow-sm`,children:re.map(s=>e.jsx("option",{value:s.value||"",children:s.label},s.value||"null"))})]}),e.jsxs("div",{children:[e.jsx("label",{className:`block text-sm font-semibold ${a?"text-gray-300":"text-gray-700"} mb-2`,children:"Cycle"}),e.jsx("select",{value:G,onChange:s=>u(s.target.value),className:`w-full backdrop-blur-xl ${a?"bg-white/6 border-white/10 text-gray-200":"bg-white/60 border-white/20 text-gray-900"} border rounded-2xl px-4 py-3.5 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all shadow-sm`,children:te.map(s=>e.jsx("option",{value:s.value,children:s.label},s.value))})]})]}),e.jsx("p",{className:`text-xs ${a?"text-gray-400 bg-blue-500/10 border-blue-500/20":"text-gray-500 bg-blue-50/60 border-blue-200/30"} backdrop-blur-xl border rounded-2xl p-3 leading-relaxed`,children:"L'année du cycle (1, 2, 3...) et le code cycle (BTS1, DCG2...) permettent de regrouper les étudiants par niveau."}),e.jsx("button",{type:"submit",className:"w-full bg-gradient-to-r from-[#07294D] to-[#EA6927] text-white py-3.5 rounded-2xl hover:scale-104 font-semibold transition-all shadow-lg hover:shadow-xl",children:x?"Enregistrer":"Créer le groupe"})]})})]})})})}export{me as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.