PageSourceSearch

https://www.jangolo.cm/js/ExpertDirectory.CIGPB1pA.js

js jangolo.cm collected 2026-10-01 13:02:49 UTC 9,869 bytes, 1 lines download raw bytes

1import{a as I}from"./algoliasearch-lite.umd.Dvd0d_Ex.js";import{_ as A,c as n,a as t,b as u,w as c,o,d,t as a,e as E,x as k,q as _,s as F,F as w,E as D,G as h,H as f,n as p,ee as V,K as b,f as m}from"./index.gEWZ_ovx.js";import{V as C}from"./VContainer.Blj3o7XJ.js";const q="expert_profiles",z={name:"ExpertDirectory",metaInfo:{title:"Trouvez un Expert - Jangolo"},data(){return{experts:[],categories:[],parentCategories:[],loading:!1,search:"",isExpert:!1,selectedCategory:null,selectedRegion:null,quickFilters:[],page:1,totalPages:1,totalExperts:0,regions:["Adamaoua","Centre","Est","Extrême-Nord","Littoral","Nord","Nord-Ouest","Ouest","Sud","Sud-Ouest"]}},mounted(){this.fetchCategories(),this.fetchExperts(),this.checkExpertStatus()},watch:{search(){clearTimeout(this._searchDebounce),this._searchDebounce=setTimeout(()=>{this.page=1,this.fetchExperts()},300)}},beforeUnmount(){clearTimeout(this._searchDebounce)},methods:{t(i){return this.$vuetify.lang.t("$vuetify.expert."+i)},async checkExpertStatus(){if(this.$store.getters.isLoggedIn)try{await window.axios.get("https://expert-api.jangolo.com/experts/me"),this.isExpert=!0}catch{this.isExpert=!1}},toggleFilter(i){const e=this.quickFilters.indexOf(i);e>=0?this.quickFilters.splice(e,1):this.quickFilters.push(i),this.fetchExperts()},avatarColor(i){return["#E8F5E9","#FFF3E0","#E0F2F1","#FBE9E7","#F3E5F5","#E8EAF6","#FFFDE7","#EFEBE9"][i%8]},getAlgoliaIndex(){const i="MSZ95Q6M6D",e="2a24fced8e11300986314245c098aefb";return this._algoliaIndex||(this._algoliaIndex=I(i,e).initIndex(q)),this._algoliaIndex},async fetchCategories(){const i=this.getAlgoliaIndex();if(i)try{const e=await i.search("",{facets:["parent_categories"],hitsPerPage:0}),x=e.facets&&e.facets.parent_categories||{};this.parentCategories=Object.entries(x).sort((g,r)=>r[1]-g[1]).map(([g,r])=>({id:g,name:g,count:r})),this.totalExperts=e.nbHits||0}catch{}},buildAlgoliaFilters(){const i=[];return this.selectedCategory&&i.push(`parent_categories:"${this.selectedCategory}"`),this.selectedRegion&&i.push(`region:"${this.selectedRegion}"`),this.quickFilters.includes("available")&&i.push('availability_status:"AVAILABLE"'),this.quickFilters.includes("verified")&&i.push('verification_status:"VERIFIED"'),this.quickFilters.includes("mobile")&&i.push("is_mobile:true"),i.join(" AND ")},async fetchExperts(){this.loading=!0;try{const i=this.getAlgoliaIndex();if(!i){this.experts=[],this.totalPages=1;return}const e={page:this.page-1,hitsPerPage:15},x=this.buildAlgoliaFilters();x&&(e.filters=x);const{hits:g,nbPages:r}=await i.search(this.search||"",e);this.experts=g.map(this.normalizeAlgoliaHit),this.totalPages=r||1}catch{}this.loading=!1},normalizeAlgoliaHit(i){return{id:i.id,user:{id:i.user_id,firstname:i.firstname,lastname:i.lastname},bio:i.bio,slug:i.slug,availability_status:i.availability_status,hourly_rate:i.hourly_rate,daily_rate:i.daily_rate,years_experience:i.years_experience,verification_status:i.verification_status,rating_avg:i.rating_avg,rating_count:i.rating_count,is_mobile:i.is_mobile,location:i.location,region:i.region,city:i.city,completed_bookings:i.completed_bookings,categories:(i.categories||[]).map(e=>({name:e}))}},getInitials(i){return i.user?(i.user.firstname||"").charAt(0)+(i.user.lastname||"").charAt(0):"?"}}},N={class:"xd"},P={class:"xd-hero"},S={class:"xd-hero-badge"},B={class:"xd-hero-title"},L={class:"xd-hero-accent"},R={class:"xd-hero-desc"},O={class:"xd-hero-actions"},T={class:"xd-hero-stat"},j={class:"xd-hero-stat-num"},H={class:"xd-hero-stat-label"},K={class:"xd-search"},M={class:"xd-search-inner"},U=["placeholder"],X={class:"xd-filters"},G={class:"xd-filters-left"},J=["onClick"],Q={class:"xd-filters-right"},Z={value:null},W=["value"],Y={key:0,class:"xd-loading"},$={key:1,class:"xd-grid"},ee=["onClick"],se={class:"xd-card-top"},te={class:"xd-card-identity"},ie={class:"xd-card-name"},ae={class:"xd-card-loc"},le={key:0,class:"xd-card-badge",title:"Profil vérifié"},re={class:"xd-card-tags"},oe={key:0,class:"xd-tag xd-tag-more"},ne={class:"xd-card-bio"},de={class:"xd-card-stats"},ce={key:0,class:"xd-stat"},ue={class:"xd-stat-val"},_e={class:"xd-stat-sub"},ge={key:1,class:"xd-stat"},he={class:"xd-stat-sub"},xe={class:"xd-stat"},fe={class:"xd-stat-val"},me={class:"xd-stat-sub"},ve={key:2,class:"xd-stat"},pe={class:"xd-stat-sub"},ye={class:"xd-card-footer"},be={class:"xd-card-price"},Ee={key:2,class:"xd-card-price-nego"},ke={key:2,class:"xd-empty"},Fe={class:"xd-empty-icon"},Ce={key:3,class:"xd-pagination"},Ie=["onClick"];
1function Ae(i,e,x,g,r,l){return o(),n("div",N,[t("div",P,[e[11]||(e[11]=t("div",{class:"xd-hero-grain"},null,-1)),u(C,{class:"xd-hero-inner"},{default:c(()=>[t("div",S,[e[7]||(e[7]=t("span",{class:"xd-hero-badge-dot"},null,-1)),d(" "+a(l.t("hero_badge")),1)]),t("h1",B,[d(a(l.t("hero_title_1")),1),e[8]||(e[8]=t("br",null,null,-1)),t("span",L,a(l.t("hero_title_2")),1)]),t("p",R,a(l.t("hero_desc")),1),t("div",O,[r.isExpert?(o(),E(k,{key:0,size:"large",color:"#388E3C",variant:"flat",class:"xd-btn-cta text-white",to:"/experts/me/edit"},{default:c(()=>[u(_,{start:""},{default:c(()=>[...e[9]||(e[9]=[d("mdi-pencil",-1)])]),_:1}),d(" "+a(l.t("edit_profile")),1)]),_:1})):(o(),E(k,{key:1,size:"large",color:"#388E3C",variant:"flat",class:"xd-btn-cta text-white",to:"/become-expert"},{default:c(()=>[u(_,{start:""},{default:c(()=>[...e[10]||(e[10]=[d("mdi-account-plus",-1)])]),_:1}),d(" "+a(l.t("become_expert")),1)]),_:1})),t("div",T,[t("span",j,a(r.totalExperts)+"+",1),t("span",H,a(l.t("active_experts")),1)])])]),_:1})]),u(C,{class:"xd-body"},{default:c(()=>[t("div",K,[t("div",M,[u(_,{class:"xd-search-icon",color:"#388E3C"},{default:c(()=>[...e[12]||(e[12]=[d("mdi-magnify",-1)])]),_:1}),F(t("input",{"onUpdate:modelValue":e[0]||(e[0]=s=>r.search=s),type:"text",class:"xd-search-input",placeholder:l.t("search_placeholder"),onKeyup:e[1]||(e[1]=w((...s)=>l.fetchExperts&&l.fetchExperts(...s),["enter"]))},null,40,U),[[D,r.search]]),t("button",{class:"xd-search-btn",onClick:e[2]||(e[2]=(...s)=>l.fetchExperts&&l.fetchExperts(...s))},a(l.t("search_btn")),1)])]),t("div",X,[t("div",G,[(o(!0),n(h,null,f(r.parentCategories,s=>(o(),n("button",{key:s.id,class:p(["xd-filter-chip",{active:r.selectedCategory===s.id}]),onClick:v=>{r.selectedCategory=r.selectedCategory===s.id?null:s.id,l.fetchExperts()}},a(s.name),11,J))),128))]),t("div",Q,[F(t("select",{"onUpdate:modelValue":e[3]||(e[3]=s=>r.selectedRegion=s),class:"xd-select",onChange:e[4]||(e[4]=(...s)=>l.fetchExperts&&l.fetchExperts(...s))},[t("option",Z,a(l.t("all_regions")),1),(o(!0),n(h,null,f(r.regions,s=>(o(),n("option",{key:s,value:s},a(s),9,W))),128))],544),[[V,r.selectedRegion]]),t("button",{class:p(["xd-toggle",{active:r.quickFilters.includes("available")}]),onClick:e[5]||(e[5]=s=>l.toggleFilter("available"))},[t("span",{class:"xd-toggle-dot",style:b({background:r.quickFilters.includes("available")?"#4CAF50":"#ccc"})},null,4),d(" "+a(l.t("filter_available")),1)],2),t("button",{class:p(["xd-toggle",{active:r.quickFilters.includes("verified")}]),onClick:e[6]||(e[6]=s=>l.toggleFilter("verified"))},[u(_,{size:"x-small",color:r.quickFilters.includes("verified")?"#388E3C":"#999"},{default:c(()=>[...e[13]||(e[13]=[d("mdi-shield-check",-1)])]),_:1},8,["color"]),d(" "+a(l.t("filter_verified")),1)],2)])]),r.loading?(o(),n("div",Y,[e[14]||(e[14]=t("div",{class:"xd-loading-spinner"},null,-1)),t("span",null,a(l.t("searching")),1)])):(o(),n("div",$,[(o(!0),n(h,null,f(r.experts,(s,v)=>(o(),n("div",{key:s.id,class:"xd-card",style:b({animationDelay:v*60+"ms"}),onClick:y=>i.$router.push("/experts/"+s.id)},[t("div",se,[t("div",{class:"xd-card-avatar",style:b({background:l.avatarColor(v)})},a(l.getInitials(s)),5),t("div",te,[t("h3",ie,a(s.user?s.user.firstname+" "+s.user.lastname:"Expert"),1),t("span",ae,[u(_,{size:"x-small",color:"#999"},{default:c(()=>[...e[15]||(e[15]=[d("mdi-map-marker",-1)])]),_:1}),d(" "+a(s.region||"Cameroun")+a(s.city?", "+s.city:""),1)])]),s.verification_status==="VERIFIED"?(o(),n("div",le,[u(_,{size:"small",color:"#388E3C"},{default:c(()=>[...e[16]||(e[16]=[d("mdi-check-decagram",-1)])]),_:1})])):m("",!0)]),t("div",re,[(o(!0),n(h,null,f((s.categories||[]).slice(0,2),y=>(o(),n("span",{key:y.id,class:"xd-tag"},a(y.name),1))),128)),(s.categories||[]).length>2?(o(),n("span",oe,"+"+a(s.categories.length-2),1)):m("",!0)]),t("p",ne,a(s.bio||l.t("no_description")),1),t("div",de,[s.rating_avg>0?(o(),n("div",ce,[e[17]||(e[17]=t("span",{class:"xd-stat-star"},"★",-1)),t("span",ue,a(Number(s.rating_avg).toFixed(1)),1),t("span",_e,"("+a(s.rating_count)+")",1)])):(o(),n("div",ge,[t("span",he,a(l.t("new_label")),1)])),t("div",xe,[t("span",fe,a(s.completed_bookings||0),1),t("span",me,a(l.t("missions")),1)]),s.is_mobile?(o(),n("div",ve,[u(_,{size:"x-small",color:"#EB9532"},{default:c(()=>[...e[18]||(e[18]=[d("mdi-motorbike",-1)])]),_:1}),t("span",pe,a(l.t("mobile")),1)])):m("",!0)]),t("div",ye,[t("span",be,[s.hourly_rate?(o(),n(h,{key:0}
1,[d(a(Number(s.hourly_rate).toLocaleString())+" ",1),e[19]||(e[19]=t("small",null,"XAF/h",-1))],64)):s.daily_rate?(o(),n(h,{key:1},[d(a(Number(s.daily_rate).toLocaleString())+" ",1),e[20]||(e[20]=t("small",null,"XAF/j",-1))],64)):(o(),n("span",Ee,a(l.t("negotiable")),1))]),e[21]||(e[21]=t("span",{class:"xd-card-arrow"},"→",-1))])],12,ee))),128))])),!r.loading&&r.experts.length===0?(o(),n("div",ke,[t("div",Fe,[u(_,{size:"48",color:"#ccc"},{default:c(()=>[...e[22]||(e[22]=[d("mdi-account-search-outline",-1)])]),_:1})]),t("h3",null,a(l.t("no_expert_found")),1),t("p",null,a(l.t("no_expert_hint")),1)])):m("",!0),r.totalPages>1?(o(),n("div",Ce,[(o(!0),n(h,null,f(r.totalPages,s=>(o(),n("button",{key:s,class:p(["xd-page-btn",{active:s===r.page}]),onClick:v=>{r.page=s,l.fetchExperts()}},a(s),11,Ie))),128))])):m("",!0)]),_:1})])}const qe=A(z,[["render",Ae],["__scopeId","data-v-bcd04654"]]);export{qe 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.