PageSourceSearch

https://vibefunnel.ai/_nuxt/D_i7blyT.js

js vibefunnel.ai collected 2026-10-05 14:24:40 UTC 16,653 bytes, 3 lines download raw bytes

1import{bO as be,J as j,N as r,aB as n,M as z,O as a,X as S,bM as d,bJ as ke,aW as we,bQ as De,bX as Se,bw as u,av as _e,Y as i,b7 as x,bR as D,c3 as ae,bS as Ce,bG as F,bL as se,F as T,aH as U,bU as $e,b9 as Ie,v as Ve,L as ze}from"./B4cWliYT.js";import{_ as Ee}from"./CRvRckMG.js";import{r as Me}from"./BhUrJ5t2.js";import{r as Ne}from"./DPAOmWTQ.js";import{r as Fe}from"./Ck06SwWa.js";import{r as Te}from"./AHpN0A9I.js";import{r as je}from"./_f6Oe1dT.js";const Ae=["for"],Be={key:0,class:"text-red-500"},Oe={class:"relative"},Pe=["id","value","required","disabled","placeholder","min","max"],Ue={key:0,class:"mt-1 text-sm text-red-600 dark:text-red-400"},Le={key:1,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Ke={__name:"DateInput",props:{modelValue:{type:String,default:""},id:{type:String,default:""},label:{type:String,default:""},placeholder:{type:String,default:""},required:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{type:String,default:""},hint:{type:String,default:""},className:{type:String,default:""},min:{type:String,default:""},max:{type:String,default:""}},emits:["update:modelValue","blur","focus","change"],setup(c,{emit:V}){const _=c,C=j(()=>_.id?_.id:we()),v=V;function N(b){const m=b.target.value;v("update:modelValue",m)}function $(b){const m=b.target.value;v("update:modelValue",m),v("change",m)}return(b,m)=>(n(),r("div",null,[c.label?(n(),r("label",{key:0,for:C.value,class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},[S(d(c.label)+" ",1),c.required?(n(),r("span",Be,"*")):z("",!0)],8,Ae)):z("",!0),a("div",Oe,[a("input",{id:C.value,value:c.modelValue,required:c.required,disabled:c.disabled,placeholder:c.placeholder,min:c.min,max:c.max,type:"date",class:ke(["w-full px-3 py-2 border rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-sky-500 focus:border-sky-500 transition-colors","dark:[color-scheme:dark]",c.disabled?"bg-gray-100 cursor-not-allowed dark:bg-gray-800 dark:text-gray-400":"dark:bg-gray-700 dark:text-white",c.error?"border-red-300 text-red-900 focus:ring-red-500 focus:border-red-500":"border-gray-300 dark:border-gray-600",c.className]),onInput:m[0]||(m[0]=k=>N(k)),onBlur:m[1]||(m[1]=k=>b.$emit("blur",k)),onFocus:m[2]||(m[2]=k=>b.$emit("focus",k)),onChange:m[3]||(m[3]=k=>$(k))},null,42,Pe),c.error?(n(),r("div",Ue,d(c.error),1)):z("",!0),c.hint?(n(),r("div",Le,d(c.hint),1)):z("",!0)])]))}},oe=be(Ke,[["__scopeId","data-v-3de91eba"]]),Re={class:"space-y-6"},qe={class:"sm:flex sm:items-center"},Je={class:"mt-4 sm:ml-16 sm:mt-0 sm:flex-none space-x-3"},He={class:"bg-white dark:bg-gray-800 shadow rounded-lg p-4"},Xe={class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-6"},Ge=["value"],Qe={value:""},We=["value"],Ye={class:"flex items-end"},Ze={key:0,class:"flex justify-center py-8"},et={key:1,class:"bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-md p-4"},tt={class:"flex"},at={class:"ml-3"},st={class:"mt-2 text-sm text-red-700 dark:text-red-300"},ot={key:2,class:"bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden"},lt={class:"px-4 py-5 sm:p-6"},nt={class:"sm:flex sm:items-center"},rt={class:"sm:flex-auto"},it={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},dt={class:"mt-6 flow-root"},ut={class:"mb-4 flex gap-2"},ct={key:0,class:"text-center py-8"},mt={key:1,class:"-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8"},vt={class:"inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8"},ft={class:"min-w-full divide-y divide-gray-300 dark:divide-gray-700"},gt={class:"py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 dark:text-white sm:pl-0"},pt=["checked"],yt={scope:"col",class:"py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-gray-900 dark:text-white sm:pl-0"},xt={class:"flex items-center"},ht={class:"divide-y divide-gray-200 dark:divide-gray-700"},bt={class:"whitespace-nowrap py-4 pl-4 pr-3 text-sm sm:pl-0"},kt=["value"],wt={class:"whitespace-nowrap py-4 pl-4 pr-3 text-sm font-mono text-gray-900 dark:text-white sm:pl-0"},Dt={class:"whitespace-nowrap px-3 py-4 text-sm"},St={class:"font-medium text-gray-900 dark:text-white"},_t={class:"text-gray-500 dark:text-gray-400 text-xs"},Ct={class:"whitespace-nowrap px-3 py-4 text-sm text-gray-500 dark:text-gray-400"},$t={class:"px-3 py-4 text-sm text-gray-500 dark:text-gray-400 relative"},It=["onMouseenter"],Vt={class:"whitespace-pre-wrap text-xs"},zt={key:0,class:"mt-8 flex items-center justify-center"},Et={class:"flex items-center space-x-1"},Mt={class:"flex items-center space-x-1 mx-4"},Nt={class:"ml-8 text-xs text-gray-500 dark:text-gray-400"},Ft={class:"flex justify-end gap-2"},Lt={__name:"data-hub",setup(c){const{$api:V}=De(),_=$e(),C=Se(),v=u([]),N=u([]),$=u([]),b=u(!1),m=u(null),k=u(!1),A=u(!1),L=u(!1),K=u(null),G=u({}),R=u(!1),Q=u({}),g=u(1),B=u(20),I=u(0),q=j(()=>Math.ceil(I.value/B.value)),f=u({campaignId:"",variantId:"",search:"",startDate:"",endDate:""}),h=u([]),J=j(()=>v.value.length>0&&h.value.length===v.value.length),H=u(!1),O=u(!1),le=j(()=>{const s=h.value.length;return s===1?"Delete this submission? This action cannot be undone.":`Delete ${s} submissions? This action cannot be undone.`}),ne=j(()=>
1{const s=[],e=Math.max(1,g.value-2),t=Math.min(q.value,g.value+2);for(let o=e;o<=t;o++)s.push(o);return s});async function P(){var e,t;const s=C.organizationId;if(!s){console.error("No organization ID available");return}b.value=!0,m.value=null;try{const o={page:g.value,limit:B.value,...f.value};Object.keys(o).forEach(l=>{(o[l]===""||o[l]===null||o[l]===void 0)&&delete o[l]}),o.startDate&&(o.startDate=new Date(o.startDate).toISOString()),o.endDate&&(o.endDate=new Date(o.endDate+"T23:59:59").toISOString());const p=await V.get(`/organizations/${s}/form-submissions`,{params:o});p.data&&(v.value=p.data.records||[],I.value=p.data.total||0,g.value=p.data.page||1)}catch(o){console.error("Error fetching submissions:",o),m.value=((t=(e=o.response)==null?void 0:e.data)==null?void 0:t.message)||"Failed to load form submissions",_.add({title:"Error",description:"Failed to load form submissions",color:"red"})}finally{b.value=!1}}async function W(){try{const s=C.organizationId;if(!s){console.error("No organization ID available");return}const e=await V.get(`/organizations/${s}/campaigns`);e.data&&(N.value=e.data||[])}catch(s){console.error("Error fetching campaigns:",s)}}function Y(s){const e=N.value.find(t=>t._id===s);return e?e.name:`Campaign ${s}`}function Z(s){return new Date(s).toLocaleString()}function re(s){if(!s||typeof s!="object")return"No data";const e=Object.keys(s);if(e.length===0)return"Empty form";const t=e.slice(0,2).map(o=>{const p=s[o],l=String(p).length>20?String(p).substring(0,20)+"...":String(p);return`${o}: ${l}`}).join(", ");return e.length>2?`${t} (+${e.length-2} more)`:t}function ie(s,e){K.value=s,L.value=!0;const t=e.target.getBoundingClientRect();G.value={top:`${t.top}px`,left:`${t.right+10}px`,position:"fixed"}}function de(){L.value=!1,K.value=null}function ue(s){R.value=!0;const e=s.target.getBoundingClientRect();Q.value={top:`${e.top}px`,left:`${e.right+10}px`,position:"fixed"}}function ce(){R.value=!1}function E(){g.value=1,P()}function me(){f.value={campaignId:"",variantId:"",search:"",startDate:"",endDate:""},$.value=[],E()}async function ve(s){f.value.variantId="",$.value=[],s&&await fe(s),E()}async function fe(s){if(!s){$.value=[];return}const e=C.organizationId;if(!e){console.error("No organization ID available");return}A.value=!0;try{const t=await V.get(`/organizations/${e}/campaigns/${s}/variants`);t.data&&($.value=t.data||[])}catch(t){console.error("Error fetching variants:",t),$.value=[]}finally{A.value=!1}}function X(s){s>=1&&s<=q.value&&(g.value=s,P())}async function ge(){k.value=!0;try{const s=C.organizationId;if(!s){console.error("No organization ID available");return}const e={...f.value,limit:1e4};Object.keys(e).forEach(o=>{(e[o]===""||e[o]===null||e[o]===void 0)&&delete e[o]}),e.startDate&&(e.startDate=new Date(e.startDate).toISOString()),e.endDate&&(e.endDate=new Date(e.endDate+"T23:59:59").toISOString());const t=await V.get(`/organizations/${s}/form-submissions`,{params:e});if(t.data&&t.data.records){const o=t.data.records,p=pe(o),l=new Blob([p],{type:"text/csv;charset=utf-8;"}),y=document.createElement("a"),w=URL.createObjectURL(l);y.setAttribute("href",w),y.setAttribute("download",`form-submissions-${new Date().toISOString().split("T")[0]}.csv`),y.style.visibility="hidden",document.body.appendChild(y),y.click(),document.body.removeChild(y),_.add({title:"Success",description:`Exported ${o.length} submissions to CSV`,color:"green"})}}catch(s){console.error("Error exporting submissions:",s),_.add({title:"Error",description:"Failed to export submissions",color:"red"})}finally{k.value=!1}}function pe(s){if(s.length===0)return"";const e=["Primary Key","Campaign","Submitted At"],t=new Set;s.forEach(l=>{l.formData&&typeof l.formData=="object"&&Object.keys(l.formData).forEach(y=>t.add(y))});const o=Array.from(t).sort();e.push(...o);const p=[e];return s.forEach(l=>{const y=[l.primaryKey||l._id,Y(l.campaignId),Z(l.createdAt)];o.forEach(w=>{const he=l.formData&&l.formData[w]?String(l.formData[w]):"";y.push(he)}),p.push(y)}),p.map(l=>l.map(y=>{const w=String(y||"");return w.includes(",")||w.includes('"')||w.includes(`
2`)?`"${w.replace(/"/g,'""')}"`:w}).join(",")).join(`
3`)}function ye(){P(),W()}function ee(){J.value?h.value=[]:h.value=v.value.map(s=>s._id)}function xe(){h.value.length!==0&&(H.value=!0)}function M(){H.value=!1,O.value=!1}async function te(){if(h.value.length===0){M();return}const s=C.organizationId;try{O.value=!0,await Promise.all(h.value.map(e=>V.delete(`/organizations/${s}/form-submissions/${e}`))),v.value=v.value.filter(e=>!h.value.includes(e._id)),h.value=[],I.value=v.value.length,_.add({title:"Deleted",description:"Selected submissions deleted successfully.",color:"green"})}catch(e){console.error(e),_.add({title:"Error",description:"Failed to delete selected submissions.",color:"red"})}finally{O.value=!1,M()}}return _e(()=>{W(),P()}),(s,e)=>(n(),r(T,null,[a("div",Re,[a("div",qe,[e[12]||(e[12]=a("div",{class:"sm:flex-auto"},[a("h1",{class:"text-2xl font-semibold text-gray-900 dark:text-white"},"Data Hub"),a("p",{class:"mt-2 text-sm text-gray-700 dark:text-gray-300"},"View and manage form submissions from your campaigns.")],-1)),a("div",Je,[i(D,{onClick:ge,disabled:v.value.length===0,loading:k.value,variant:"secondary",class:"flex items-center gap-2"},{default:x(()=>[i(F(Me),{class:"mr-1 h-4 w-4"}),e[10]||(e[10]=S(" Export CSV "))]),_:1},8,["disabled","loading"]),i(D,{onClick:ye,loading:b.value,size:"md",variant:"primary",class:"flex items-center gap-2"},{default:x(()=>[i(F(Ne),{class:"h-4 w-4"}),e[11]||(e[11]=S(" Refresh "))]),_:1},8,["loading"])])]),a("div",He,[a("div",Xe,[i(ae,{modelValue:f.value.campaignId,"onUpdate:modelValue":[e[0]||(e[0]=t=>f.value.campaignId=t),ve],label:"Campaign"},{default:x(()=>[e[13]||(e[13]=a("option",{value:""},"All Campaigns",-1)),(n(!0),r(T,null,U(N.value,t=>(n(),r("option",{key:t._id,value:t._id},d(t.name),9,Ge))),128))]),_:1},8,["modelValue"]),i(ae,{modelValue:f.value.variantId,"onUpdate:modelValue":[e[1]||(e[1]=t=>f.value.variantId=t),E],label:"Variant",disabled:!f.value.campaignId||A.value},{default:x(()=>[a("option",Qe,d(A.value?"Loading variants...":"All Variants"),1),(n(!0),r(T,null,U($.value,t=>(n(),r("option",{key:t._id,value:t._id},d(t.name),9,We))),128))]),_:1},8,["modelValue","disabled"]),i(Ce,{modelValue:f.value.search,"onUpdate:modelValue":e[2]||(e[2]=t=>f.value.search=t),label:"Search",placeholder:"Search by primary key",onInput:E},null,8,["modelValue"]),i(oe,{modelValue:f.value.startDate,"onUpdate:modelValue":e[3]||(e[3]=t=>
3f.value.startDate=t),label:"Start Date",onChange:E},null,8,["modelValue"]),i(oe,{modelValue:f.value.endDate,"onUpdate:modelValue":e[4]||(e[4]=t=>f.value.endDate=t),label:"End Date",onChange:E},null,8,["modelValue"]),a("div",Ye,[i(D,{onClick:me,variant:"outline",block:""},{default:x(()=>e[14]||(e[14]=[S(" Clear Filters ")])),_:1})])])]),b.value?(n(),r("div",Ze,e[15]||(e[15]=[a("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600"},null,-1)]))):m.value?(n(),r("div",et,[a("div",tt,[i(F(Fe),{class:"h-5 w-5 text-red-400"}),a("div",at,[e[16]||(e[16]=a("h3",{class:"text-sm font-medium text-red-800 dark:text-red-200"},"Error loading form submissions",-1)),a("div",st,d(m.value),1)])])])):(n(),r("div",ot,[a("div",lt,[a("div",nt,[a("div",rt,[e[17]||(e[17]=a("h3",{class:"text-lg font-medium text-gray-900 dark:text-white"},"Form Submissions",-1)),a("p",it,d(I.value)+" total submission"+d(I.value!==1?"s":""),1)])]),a("div",dt,[a("div",ut,[i(D,{onClick:ee,variant:"outline",size:"sm",disabled:v.value.length===0},{default:x(()=>[S(d(J.value?"Unselect All":"Select All"),1)]),_:1},8,["disabled"]),i(D,{onClick:xe,variant:"danger",size:"sm",disabled:h.value.length===0},{default:x(()=>e[18]||(e[18]=[S(" Delete ")])),_:1},8,["disabled"])]),v.value.length===0?(n(),r("div",ct,[i(F(Te),{class:"mx-auto h-12 w-12 text-gray-400"}),e[19]||(e[19]=a("h3",{class:"mt-2 text-sm font-medium text-gray-900 dark:text-white"},"No submissions",-1)),e[20]||(e[20]=a("p",{class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},"No form submissions found for the selected criteria.",-1))])):(n(),r("div",mt,[a("div",vt,[a("table",ft,[a("thead",null,[a("tr",null,[a("th",gt,[a("input",{type:"checkbox",checked:J.value,onChange:ee},null,40,pt)]),a("th",yt,[a("div",xt,[e[21]||(e[21]=S(" Primary Key ")),i(F(je),{class:"ml-1 h-4 w-4 text-gray-400 cursor-pointer",onMouseenter:e[5]||(e[5]=t=>ue(t)),onMouseleave:ce})]),R.value?(n(),r("div",{key:0,class:"absolute z-50 bg-gray-900 text-white text-xs rounded py-2 px-3 shadow-lg max-w-xs",style:se(Q.value)}," This is an auto-detected field based on the form submissions. It serves as an easily identifiable entry for each submission. ",4)):z("",!0)]),e[22]||(e[22]=a("th",{scope:"col",class:"px-3 py-3.5 text-left text-sm font-semibold text-gray-900 dark:text-white"},"Campaign",-1)),e[23]||(e[23]=a("th",{scope:"col",class:"px-3 py-3.5 text-left text-sm font-semibold text-gray-900 dark:text-white"},"Submitted At",-1)),e[24]||(e[24]=a("th",{scope:"col",class:"px-3 py-3.5 text-left text-sm font-semibold text-gray-900 dark:text-white"},"Form Data",-1))])]),a("tbody",ht,[(n(!0),r(T,null,U(v.value,t=>(n(),r("tr",{key:t._id,class:"hover:bg-gray-50 dark:hover:bg-gray-700"},[a("td",bt,[Ie(a("input",{type:"checkbox",value:t._id,"onUpdate:modelValue":e[6]||(e[6]=o=>h.value=o)},null,8,kt),[[Ve,h.value]])]),a("td",wt,d(t.primaryKey),1),a("td",Dt,[a("div",St,d(Y(t.campaignId)),1),a("div",_t,"ID: "+d(t.campaignId),1)]),a("td",Ct,d(Z(t.createdAt)),1),a("td",$t,[a("div",{class:"max-w-xs truncate cursor-pointer",onMouseenter:o=>ie(t._id,o),onMouseleave:de},d(re(t.formData)),41,It),L.value&&K.value===t._id?(n(),r("div",{key:0,class:"absolute z-50 bg-gray-900 text-white text-xs rounded py-2 px-3 shadow-lg max-w-sm",style:se(G.value)},[a("pre",Vt,d(JSON.stringify(t.formData,null,2)),1)],4)):z("",!0)])]))),128))])])])]))]),I.value>0?(n(),r("div",zt,[a("div",Et,[i(D,{onClick:e[7]||(e[7]=t=>X(g.value-1)),disabled:g.value===1,variant:"ghost",size:"sm","class-name":"p-2"},{default:x(()=>e[25]||(e[25]=[a("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])),_:1},8,["disabled"]),a("div",Mt,[(n(!0),r(T,null,U(ne.value,t=>(n(),ze(D,{key:t,onClick:o=>X(t),variant:t===g.value?"secondary":"ghost",size:"sm","class-name":"w-8 h-8"},{default:x(()=>[S(d(t),1)]),_:2},1032,["onClick","variant"]))),128))]),i(D,{onClick:e[8]||(e[8]=t=>X(g.value+1)),disabled:g.value===q.value,variant:"ghost",size:"sm","class-name":"p-2"},{default:x(()=>e[26]||(e[26]=[a("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])),_:1},8,["disabled"])]),a("div",Nt,d((g.value-1)*B.value+1)+"-"+d(Math.min(g.value*B.value,I.value))+" of "+d(I.value),1)])):z("",!0)])]))]),i(Ee,{"model-value":H.value,title:"Delete submissions",body:le.value,tone:"danger","onUpdate:modelValue":e[9]||(e[9]=t=>{t||M()}),onCancel:M,onClose:M,onConfirm:te},{footer:x(()=>[a("div",Ft,[i(D,{variant:"secondary",onClick:M},{default:x(()=>e[27]||(e[27]=[S(" Cancel ")])),_:1}),i(D,{variant:"danger",loading:O.value,onClick:te},{default:x(()=>e[28]||(e[28]=[S(" Delete ")])),_:1},8,["loading"])])]),_:1},8,["model-value","body"])],64))}};export{Lt 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.