2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import{a as Y}from"./chunk-YEESETR2.js";import{c as q,d as R,e as J,f as $,g as K,h as Q,p as U,t as X}from"./chunk-UDFQV3WY.js";import"./chunk-MBEC6LK4.js";import{Eb as l,Fa as s,Fb as S,Gb as C,Jb as E,Kb as j,Lb as V,Oa as N,Ob as T,R as u,Rb as A,S as g,T as x,Ta as D,U as P,Ya as h,ca as f,db as v,fb as b,hb as F,ib as I,jb as p,kb as i,lb as n,mb as _,nb as B,ob as z,pc as L,qb as y,qc as G,rb as m,rc as H,sb as c,sc as O,xc as W,zb as w}from"./chunk-TVKQFRWX.js";import{a as M,b as k}from"./chunk-DAQOROHW.js";var ee=()=>[],te=()=>({"background-color":"#00843B","border-color":"#00843B"}),ie=()=>({}),ne=(o,e,t)=>({"bg-green-50 border-green-500 text-green-700":o,"bg-red-50 border-red-500 text-red-700":e,"bg-blue-50 border-blue-500 text-blue-700":t}),oe=(o,e)=>e.id;function re(o,e){if(o&1){let t=y();i(0,"tr",17)(1,"td",24)(2,"p",25),l(3),n()(),i(4,"td",26),l(5),n(),i(6,"td",27)(7,"div",28)(8,"button",29),m("click",function(){let a=u(t).$implicit,d=c();return g(d.editProject(a))}),x(),i(9,"svg",30),_(10,"path",31),n()(),P(),i(11,"button",32),m("click",function(){let a=u(t).$implicit,d=c();return g(d.deleteProject(a))}),x(),i(12,"svg",33),_(13,"path",34),n()()()()()}if(o&2){let t=e.$implicit;s(3),S(t.name),s(2),C(" ",t.description||"-"," ")}}function ae(o,e){if(o&1){let t=y();B(0),i(1,"button",35),m("click",function(){let a=u(t).index,d=c();return g(d.currentPage.set(a+1))}),l(2),n(),z()}if(o&2){let t=e.index,r=c();s(),p("ngClass",r.currentPage()===t+1?"px-3 py-1 border rounded text-white":"px-3 py-1 border border-gray-300 rounded hover:bg-gray-100 transition-colors")("ngStyle",r.currentPage()===t+1?T(3,te):T(4,ie)),s(),C(" ",t+1," ")}}function se(o,e){o&1&&(i(0,"p",49),l(1," Le nom est obligatoire. "),n())}function le(o,e){o&1&&(i(0,"p",49),l(1," La description est obligatoire. "),n())}function de(o,e){o&1&&_(0,"div",48)}function ce(o,e){if(o&1){let t=y();i(0,"div",21)(1,"div",36)(2,"div",37)(3,"h2",38),l(4),n()(),i(5,"form",39,0),m("ngSubmit",function(){u(t);let a=c();return g(a.saveProject())}),i(7,"div")(8,"label",40),l(9,"Nom "),i(10,"span",41),l(11,"*"),n()(),i(12,"input",42,1),V("ngModelChange",function(a){u(t);let d=c();return j(d.form.name,a)||(d.form.name=a),g(a)}),n(),h(14,se,2,0,"p",43),n(),i(15,"div")(16,"label",40),l(17,"Description "),i(18,"span",41),l(19,"*"),n()(),i(20,"textarea",44,2),V("ngModelChange",function(a){u(t);let d=c();return j(d.form.description,a)||(d.form.description=a),g(a)}),n(),h(22,le,2,0,"p",43),n(),i(23,"div",45)(24,"button",46),m("click",function(){u(t);let a=c();return g(a.closeModal())}),l(25," Annuler "),n(),i(26,"button",47),v(27,de,1,0,"div",48),l(28),n()()()()()}if(o&2){let t=w(6),r=w(13),a=w(21),d=c();s(4),C(" ",d.editingProject()?"Modifier le projet":"Nouveau projet"," "),s(8),E("ngModel",d.form.name),s(2),p("ngIf",r.invalid&&t.submitted),s(6),E("ngModel",d.form.description),s(2),p("ngIf",a.invalid&&t.submitted),s(4),p("disabled",d.saving()),s(),b(d.saving()?27:-1),s(),C(" ",d.editingProject()?"Mettre \xE0 jour":"Enr\xE9gistrer"," ")}}function pe(o,e){o&1&&(x(),i(0,"svg",53),_(1,"path",54),n())}function me(o,e){o&1&&(x(),i(0,"svg",53),_(1,"path",55),n())}function ue(o,e){o&1&&(x(),i(0,"svg",53),_(1,"path",56),n())}function ge(o,e){if(o&1&&(i(0,"div",22)(1,"div",50),h(2,pe,2,0,"svg",51)(3,me,2,0,"svg",51)(4,ue,2,0,"svg",51),i(5,"span",52),l(6),n()()()),o&2){let t=c();s(),p("ngClass",A(5,ne,t.notification().type==="success",t.notification().type==="error",t.notification().type==="info")),s(),p("ngIf",t.notification().type==="success"),s(),p("ngIf",t.notification().type==="error"),s(),p("ngIf",t.notification().type==="info"),s(2),S(t.notification().message)}}function fe(o,e){if(o&1){let t=y();i(0,"div",23)(1,"div",57)(2,"h3",58),l(3,"Confirmation"),n(),i(4,"p",59),l(5),n(),i(6,"div",60)(7,"button",61),m("click",function(){u(t);let a=c();return g(a.closeConfirmModal())}),l(8," Annuler "),n(),i(9,"button",62),m("click",function(){u(t);let a=c();return g(a.confirmModal().onConfirm())}),l(10," Supprimer "),n()()()()}if(o&2){let t=c();s(5),S(t.confirmModal().message)}}var Z=class o{constructor(e){this.apiService=e}notification=f({show:!1,message:"",type:"success"});projects=f([]);loading=f(!0);showModal=f(!1);editingProject=f(null);saving=f(!1);currentPage=f(1);pageSize=7;totalPages=f(1);form={name:"",description:""};ngOnInit(){this.loadProjects()}loadProjects(){this.loading.set(!0),this.apiService.getAllTypes().subscribe({next:e=>{console.log("RESPONSE =",e),this.projects.set(e),console.log("PROJECTS =",this.projects()),this.totalPages.set(Math.ceil(e.length/this.pageSize)),this.currentPage.set(1),this.loading.set(!1)},error:e=>{console.error("Erreur API",e),this.loading.set(!1)}})}paginatedProjects(){let e=this.projects(),t=(this.currentPage()-1)*this.pageSize;return e.slice(t,t+this.pageSize)}nextPage(){this.currentPage()<this.totalPages()&&this.currentPage.update(e=>e+1)}prevPage(){this.currentPage()>1&&this.currentPage.update(e=>e-1)}openModal(){this.form={name:"",description:""},this.editingProject.set(null),this.showModal.set(!0)}closeModal(){this.showModal.set(!1),this.editingProject.set(null)}editProject(e){this.form={name:e.name,description:e.description},this.editingProject.set(e),this.showModal.set(!0)}saveProject(){if(!this.form.name||!this.form.description)return;this.saving.set(!0);let e=this.editingProject();(e?this.apiService.updateTypes(e.id,this.form):this.apiService.createTypes(this.form)).subscribe({next:r=>{console.log("API response =",r),this.loadProjects(),this.closeModal(),this.saving.set(!1),this.showNotification(e?"Type Document mis \xE0 jour avec succ\xE8s":"Type Document cr\xE9\xE9 avec succ\xE8s","success")},error:r=>{console.error("Erreur lors de la sauvegarde",r),this.saving.set(!1),this.showNotification("Erreur lors de la sauvegarde","error")}})}showNotification(e,t="success",r=2e3){this.notification.set({show:!0,message:e,type:t}),setTimeout(()=>this.notification.update(a=>k(M({},a),{show:!1})),r)}confirmModal=f({show:!1,message:"",onConfirm:()=>{}});openConfirmModal(e,t){this.confirmModal.set({show:!0,message:e,onConfirm:t})}closeConfirmModal(){this.confirmModal.update(e=>k(M({},e),{show:!1}))}deleteProject(e){console.log("fvfv"),this.openConfirmModal(`Voulez-vous vraiment supprimer ce type de document "${e.name}" ?`,()=>{this.apiService.deleteTypes(e.id).subscribe({next:()=>{this.loadProjects(),this.closeConfirmModal(),this.showNotification("Projet supprim\xE9 avec succ\xE8s","success")},error:()=>{this.showNotification("Erreur lors de la suppression","error"),this.closeConfirmModal()}})})}static \u0275fac=function(t){return new(t||o)(N(Y))};static \u0275cmp=D({type:o,selectors:[["app-types"]],decls:34,vars:7,consts:[["projectForm","ngForm"],["nameField","ngModel"],["descField","ngModel"],[1,"space-y-6"],[1,"flex","flex-col","sm:flex-row","sm:items-center","sm:justify-between","gap-4"],[1,"text-2xl","font-bold","text-neutral-900"],[1,"text-neutral-500"],[1,"btn-primary",2,"background-color","#00843B",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5","mr-2"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M12 6v6m0 0v6m0-6h6m-6 0H6"],[1,"card","p-0","shadow-lg","rounded-lg","overflow-hidden"],[1,"table-container"],[1,"w-full","table-auto"],[1,"bg-gray-50"],[1,"px-6","py-3","text-left"],[1,"px-6","py-3","text-right","whitespace-nowrap"],[1,"bg-white","divide-y","divide-gray-200"],[1,"hover:bg-gray-50","transition"],[1,"flex","justify-end","items-center","mt-2","px-6","py-2","gap-2","border-t","border-gray-200","bg-gray-50","rounded-b-lg"],[1,"px-3","py-1","border","border-gray-300","rounded","hover:bg-gray-100","disabled:opacity-50","transition-colors",3,"click","disabled"],[4,"ngFor","ngForOf"],[1,"fixed","inset-0","bg-black/50","flex","items-center","justify-center","z-50","p-4"],[1,"fixed","top-4","right-4","z-50","pointer-events-none"],[1,"fixed","inset-0","bg-black/30","flex","items-center","justify-center","z-50","p-4"],[1,"px-6","py-4"],[1,"font-semibold","text-gray-900","truncate"],[1,"px-6","py-4","text-sm","text-gray-500"],[1,"px-6","py-4","text-right","whitespace-nowrap"],[1,"flex","justify-end","gap-2"],["title","Modifier",1,"p-2","border-2","border-green-500","rounded-full","bg-white","hover:bg-green-50","transition",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4","text-green-500"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"],["title","Supprimer",1,"p-2","border-2","border-red-500","rounded-full","bg-white","hover:bg-red-50","transition",3,"click"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-4","h-4","text-red-500"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"],[3,"click","ngClass","ngStyle"],[1,"bg-white","rounded-2xl","shadow-xl","w-full","max-w-2xl","max-h-[90vh]","overflow-y-auto"],[1,"p-6","border-b","border-neutral-200"],[1,"text-xl","font-semibold","text-neutral-900"],[1,"p-6","space-y-5",3,"ngSubmit"],[1,"label"],[1,"text-danger-500"],["type","text","name","name","required","",1,"input",3,"ngModelChange","ngModel"],["class","text-sm text-red-500 mt-1",4,"ngIf"],["name","description","rows","3","required","",1,"input","resize-none",3,"ngModelChange","ngModel"],[1,"flex","justify-end","gap-3","pt-4","border-t","border-gray-200"],["type","button",1,"px-4","py-2","rounded-lg","border","border-red-500","text-red-500","hover:bg-red-50","transition-colors","font-medium",3,"click"],["type","submit",1,"px-4","py-2","rounded-lg","bg-[#00843B]","text-white","hover:bg-[#006830]","transition-colors","font-medium","flex","items-center","justify-center","gap-2",3,"disabled"],[1,"spinner","w-4","h-4","border-2","border-t-white","border-gray-200","rounded-full","animate-spin"],[1,"text-sm","text-red-500","mt-1"],[1,"pointer-events-auto","border-l-4","rounded-lg","shadow-lg","p-6","max-w-sm","w-full","flex","items-center","gap-4","animate-fade-in",3,"ngClass"],["class","w-6 h-6 flex-shrink-0","fill","none","stroke","currentColor","viewBox","0 0 24 24",4,"ngIf"],[1,"text-sm","font-medium"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-6","h-6","flex-shrink-0"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M5 13l4 4L19 7"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M6 18L18 6M6 6l12 12"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M13 16h-1v-4h-1m1-4h.01M12 20a8 8 0 100-16 8 8 0 000 16z"],[1,"bg-white","rounded-2xl","shadow-xl","w-full","max-w-md","p-6","space-y-4"],[1,"text-lg","font-semibold","text-neutral-900"],[1,"text-neutral-700"],[1,"flex","justify-end","gap-3","mt-4"],[1,"px-4","py-2","rounded-lg","border","border-gray-300","text-gray-700","hover:bg-gray-100","transition-colors","font-medium",3,"click"],[1,"px-4","py-2","rounded-lg","bg-red-600","text-white","hover:bg-red-700","transition-colors","font-medium",3,"click"]],template:function(t,r){t&1&&(i(0,"div",3)(1,"div",4)(2,"div")(3,"h1",5),l(4,"Types Documents"),n(),i(5,"p",6),l(6,"G\xE9rez les types de documents"),n()(),i(7,"button",7),m("click",function(){return r.openModal()}),x(),i(8,"svg",8),_(9,"path",9),n(),l(10," Nouveau Type "),n()(),P(),i(11,"div",10)(12,"div",11)(13,"table",12)(14,"thead")(15,"tr",13)(16,"th",14),l(17,"Nom"),n(),i(18,"th",14),l(19,"Description"),n(),i(20,"th",15),l(21,"Actions"),n()()(),i(22,"tbody",16),F(23,re,14,2,"tr",17,oe),n()(),i(25,"div",18)(26,"button",19),m("click",function(){return r.prevPage()}),l(27," \xAB Pr\xE9c\xE9dent "),n(),h(28,ae,3,5,"ng-container",20),i(29,"button",19),m("click",function(){return r.nextPage()}),l(30," Suivant \xBB "),n()()(),v(31,ce,29,8,"div",21),n(),v(32,ge,7,9,"div",22),v(33,fe,11,1,"div",23),n()),t&2&&(s(23),I(r.paginatedProjects()),s(3),p("disabled",r.currentPage()===1),s(2),p("ngForOf",T(6,ee).constructor(r.totalPages())),s(),p("disabled",r.currentPage()===r.totalPages()),s(2),b(r.showModal()?31:-1),s(),b(r.notification().show?32:-1),s(),b(r.confirmModal().show?33:-1))},dependencies:[W,L,G,H,O,X,Q,q,R,J,U,K,$],encapsulation:2})};export{Z as TypesComponent};
|