UNPKG

p3x-redis-ui-material

Version:

💿 P3X Redis UI triple frontend — Angular + React/MUI + Vue/Vuetify with 54 languages, 7 themes, Socket.IO, desktop notifications, and full feature parity

1 lines • 12.9 kB
import{A as e,C as t,D as n,E as r,J as i,M as a,O as ee,R as o,T as s,X as c,Yt as l,_ as u,g as te,ht as d,it as f,k as p,nt as ne,t as re,w as m,y as h}from"./i18n.store-Bbsc3Bab.js";import{lt as ie,o as g,x as _}from"./_plugin-vue_export-helper-D1H5elb2.js";import{c as v,m as ae,t as oe}from"./VList-v6BtQFeD.js";import{t as se}from"./VSelect-BKBMb-AS.js";import{t as y}from"./VTextField-Cly86AKT.js";import{t as ce}from"./VSwitch-C9JYZCF9.js";import{t as b}from"./VTooltip-Cv2PsKY_.js";import{t as le}from"./redis-state.store-Bg6EmgAE.js";import"./redis-state-DodmMOrr.js";import{t as ue}from"./common.store-Cvd7gD49.js";import"./common-DKIejnu1.js";import{t as de}from"./overlay.store-FZPs6Gvj.js";import"./overlay-DOSGwXRT.js";import{i as x}from"./socket.service-uJHysVIS.js";import{t as S}from"./P3xrButton-ChR905DO.js";import{t as fe}from"./redis-version-Di-SKPyT.js";import{t as C}from"./P3xrAccordion-Ch6mG6NP.js";var pe={style:{padding:`16px`}},me={key:0,style:{opacity:`0.5`}},he={style:{display:`flex`,"align-items":`center`,gap:`8px`}},ge={key:0,style:{display:`flex`,gap:`8px`,"flex-wrap":`wrap`,"margin-top":`8px`}},_e={style:{"margin-top":`8px`,"text-align":`right`}},ve={style:{padding:`16px`,opacity:`0.5`}},ye={style:{"font-size":`12px`,opacity:`0.7`}},be={style:{display:`flex`,width:`100%`,"align-items":`center`}},xe={style:{flex:`1`}},Se={style:{padding:`2px 6px`,"border-radius":`4px`,"font-size":`11px`,background:`rgba(128,128,128,0.1)`,"font-family":`'Roboto Mono', monospace`}},Ce={style:{"font-family":`'Roboto Mono', monospace`,"font-size":`12px`}},we={style:{display:`flex`,width:`100%`}},Te={style:{flex:`1`}},Ee={style:{"font-family":`'Roboto Mono', monospace`,"font-size":`12px`}},De={style:{padding:`16px`}},Oe={style:{display:`flex`,"align-items":`center`,gap:`8px`,margin:`8px 0`}},ke={style:{display:`flex`,"align-items":`center`,gap:`8px`,"flex-shrink":`0`}},Ae={style:{"margin-top":`8px`,"text-align":`right`}},w=20,T=a({__name:`SearchPage`,setup(a){let T=re(),E=le(),D=ue(),je=de(),{width:Me}=ie(),Ne=t(()=>Me.value>=960),O=t(()=>T.strings),k=t(()=>O.value?.page?.search||{}),A=t(()=>E.connection?.readonly===!0),j=d([]),M=d(``),N=d(`*`),P=d(0),F=d(0),I=d([]),L=d(null),R=d(!1),z=d(!1),B=d(!1),V=d(``),H=d(``),U=d(10),W=d(``),G=d(``),K=d([{name:``,type:`TEXT`,sortable:!1}]),q=t(()=>Math.ceil(F.value/w)),Pe=t(()=>Math.floor(P.value/w)+1);function J(e){return Object.keys(e).filter(e=>e!==`_key`)}async function Y(){try{let e=await x({action:`search/list`,payload:{}});return j.value=e.data,e.data}catch{return[]}}async function X(e){let t=e||M.value;if(t)try{L.value=(await x({action:`search/index-info`,payload:{index:t}})).data}catch(e){D.generalHandleError(e)}}async function Fe(e){if(!(!M.value||!N.value))try{let t;if(B.value&&V.value&&H.value){let n=H.value.split(`,`).map(e=>parseFloat(e.trim())).filter(e=>!isNaN(e));t=await x({action:`search/hybrid`,payload:{index:M.value,query:N.value,vectorField:V.value,vectorValues:n,count:U.value,offset:e??P.value,limit:w}})}else t=await x({action:`search/query`,payload:{index:M.value,query:N.value,offset:e??P.value,limit:w}});F.value=t.data.total,I.value=t.data.docs}catch(e){D.generalHandleError(e),I.value=[],F.value=0}finally{R.value=!0}}async function Ie(e){if(e){z.value=!0;try{let t=await x({action:`ai/redis-query`,payload:{prompt:e,context:{indexes:j.value,schema:L.value}}});N.value=t.command,t.explanation&&D.toast(t.explanation),P.value=0;let n=await x({action:`search/query`,payload:{index:M.value,query:t.command,offset:0,limit:w}});F.value=n.data.total,I.value=n.data.docs,R.value=!0,await X()}catch(e){D.generalHandleError(e)}finally{z.value=!1}}}async function Z(){let e=(N.value||``).trim();if(/^ai:\s*/i.test(e)){await Ie(e.replace(/^ai:\s*/i,``).trim());return}try{await Promise.all([Fe(0),X()])}catch{if(e.length>2&&e!==`*`&&/\s/.test(e)){je.show();try{await Ie(e)}finally{je.hide()}}}}function Q(e){let t=P.value;switch(e){case`first`:t=0;break;case`prev`:t=Math.max(0,P.value-w);break;case`next`:t=Math.min((q.value-1)*w,P.value+w);break;case`last`:t=(q.value-1)*w;break}P.value=t,Fe(t)}async function Le(){if(M.value)try{await D.confirm({message:O.value?.confirm?.dropIndex}),await x({action:`search/index-drop`,payload:{index:M.value}}),D.toast(O.value?.status?.indexDropped),M.value=``,I.value=[],F.value=0,R.value=!1,L.value=null,await Y()}catch(e){e!==void 0&&D.generalHandleError(e)}}function Re(){K.value.push({name:``,type:`TEXT`,sortable:!1})}async function ze(e){try{await D.confirm({message:O.value?.intention?.delete+`?`}),K.value.splice(e,1)}catch(e){e!==void 0&&D.generalHandleError(e)}}async function $(){if(!W.value.trim())return;let e=K.value.filter(e=>e.name.trim());if(e.length!==0)try{await x({action:`search/index-create`,payload:{name:W.value.trim(),prefix:G.value.trim()||void 0,schema:e}}),D.toast(O.value?.status?.indexCreated),W.value=``,G.value=``,K.value=[{name:``,type:`TEXT`,sortable:!1}],await Y()}catch(e){D.generalHandleError(e)}}function Be(e){M.value=e,P.value=0,L.value=null,X(e)}ne(()=>E.connection?.id,()=>{M.value=``,I.value=[],F.value=0,R.value=!1,L.value=null,Y().then(e=>{e.length>0&&(M.value=e[0],X(e[0]))})},{immediate:!0});let Ve=t(()=>{let e=E.info?.server?.redis_version;return e?fe(e).isAtLeast(8,4):!1});return(t,a)=>(i(),n(`div`,null,[e(C,{title:k.value.title,"accordion-key":`search-query`},{default:f(()=>[m(`div`,pe,[j.value.length===0?(i(),n(`div`,me,l(k.value.noIndex),1)):r(``,!0),j.value.length>0?(i(),n(h,{key:1},[m(`div`,he,[e(se,{modelValue:M.value,"onUpdate:modelValue":[a[0]||=e=>M.value=e,Be],items:j.value,label:k.value.index,density:`compact`,variant:`outlined`,"hide-details":``},null,8,[`modelValue`,`items`,`label`]),!A.value&&M.value?(i(),s(b,{key:0,text:k.value.dropIndex,location:`top`},{activator:f(({props:t})=>[e(g,o(t,{color:`error`,variant:`flat`,style:{"min-width":`40px`,width:`40px`,height:`40px`,padding:`0`,"border-radius":`4px`},onClick:Le}),{default:f(()=>[e(_,{size:`small`},{default:f(()=>[...a[15]||=[p(`mdi-delete`,-1)]]),_:1})]),_:1},16)]),_:1},8,[`text`])):r(``,!0)]),e(y,{modelValue:N.value,"onUpdate:modelValue":a[1]||=e=>N.value=e,label:k.value.query,density:`compact`,variant:`outlined`,"hide-details":``,disabled:z.value,style:{"margin-top":`8px`},onKeydown:a[2]||=te(e=>{P.value=0,Z()},[`enter`])},null,8,[`modelValue`,`label`,`disabled`]),Ve.value?(i(),n(h,{key:0},[e(ce,{modelValue:B.value,"onUpdate:modelValue":a[3]||=e=>B.value=e,label:k.value.hybridMode,color:`primary`,style:{"margin-top":`8px`}},null,8,[`modelValue`,`label`]),B.value?(i(),n(`div`,ge,[e(y,{modelValue:V.value,"onUpdate:modelValue":a[4]||=e=>V.value=e,label:k.value.vectorField,placeholder:`embedding`,density:`compact`,variant:`outlined`,"hide-details":``,style:{flex:`1`,"min-width":`150px`}},null,8,[`modelValue`,`label`]),e(y,{modelValue:H.value,"onUpdate:modelValue":a[5]||=e=>H.value=e,label:k.value.vectorValues,placeholder:`0.1, 0.2, 0.3, ...`,density:`compact`,variant:`outlined`,"hide-details":``,style:{flex:`2`,"min-width":`200px`}},null,8,[`modelValue`,`label`]),e(y,{modelValue:U.value,"onUpdate:modelValue":a[6]||=e=>U.value=e,modelModifiers:{number:!0},label:`Count`,type:`number`,density:`compact`,variant:`outlined`,"hide-details":``,style:{width:`80px`,flex:`none`}},null,8,[`modelValue`])])):r(``,!0)],64)):r(``,!0),m(`div`,_e,[Ne.value?(i(),s(g,{key:0,color:`primary`,variant:`flat`,size:`small`,disabled:z.value,style:{gap:`3px`},onClick:a[7]||=e=>{P.value=0,Z()}},{default:f(()=>[e(_,{size:`small`},{default:f(()=>[...a[16]||=[p(`mdi-magnify`,-1)]]),_:1}),m(`span`,null,l(z.value?O.value?.label?.aiTranslating:k.value.title),1)]),_:1},8,[`disabled`])):(i(),s(b,{key:1,text:k.value.title,location:`top`},{activator:f(({props:t})=>[e(g,o(t,{color:`primary`,variant:`flat`,disabled:z.value,style:{"min-width":`40px`,width:`40px`,height:`40px`,padding:`0`,"border-radius":`4px`},onClick:a[8]||=e=>{P.value=0,Z()}}),{default:f(()=>[e(_,{size:`small`},{default:f(()=>[...a[17]||=[p(`mdi-magnify`,-1)]]),_:1})]),_:1},16,[`disabled`])]),_:1},8,[`text`]))])],64)):r(``,!0)])]),_:1},8,[`title`]),R.value&&F.value===0?(i(),n(h,{key:0},[a[18]||=m(`div`,{style:{"margin-top":`8px`}},null,-1),e(C,{title:`${k.value.results} (0)`,"accordion-key":`search-results`},{default:f(()=>[m(`div`,ve,l(O.value?.label?.noResults),1)]),_:1},8,[`title`])],64)):r(``,!0),I.value.length>0||F.value>0?(i(),n(h,{key:1},[a[19]||=m(`div`,{style:{"margin-top":`8px`}},null,-1),e(C,{title:`${k.value.results} (${F.value})`,"accordion-key":`search-results`},ee({default:f(()=>[e(oe,{density:`compact`,class:`pa-0`},{default:f(()=>[(i(!0),n(h,null,c(I.value,t=>(i(),n(h,{key:t._key},[e(v,{style:{padding:`8px 16px`}},{default:f(()=>[m(`div`,be,[m(`div`,xe,[m(`kbd`,Se,l(t._key),1)]),m(`div`,Ce,[(i(!0),n(h,null,c(J(t),(e,a)=>(i(),n(h,{key:e},[p(l(e)+`: `+l(t[e]),1),a<J(t).length-1?(i(),n(h,{key:0},[p(` · `)],64)):r(``,!0)],64))),128))])])]),_:2},1024),e(ae)],64))),128))]),_:1})]),_:2},[q.value>1?{name:`actions`,fn:f(()=>[e(S,{icon:`mdi-skip-previous`,label:``,color:`inherit`,onClick:a[9]||=u(e=>Q(`first`),[`stop`])}),e(S,{icon:`mdi-chevron-left`,label:``,color:`inherit`,onClick:a[10]||=u(e=>Q(`prev`),[`stop`])}),m(`span`,ye,l(Pe.value)+` / `+l(q.value),1),e(S,{icon:`mdi-chevron-right`,label:``,color:`inherit`,onClick:a[11]||=u(e=>Q(`next`),[`stop`])}),e(S,{icon:`mdi-skip-next`,label:``,color:`inherit`,onClick:a[12]||=u(e=>Q(`last`),[`stop`])})]),key:`0`}:void 0]),1032,[`title`])],64)):r(``,!0),M.value&&L.value?(i(),n(h,{key:2},[a[20]||=m(`div`,{style:{"margin-top":`8px`}},null,-1),e(C,{title:`${k.value.indexInfo}: ${M.value}`,"accordion-key":`search-index-info`},ee({default:f(()=>[e(oe,{density:`compact`,class:`pa-0`},{default:f(()=>[(i(!0),n(h,null,c(J(L.value),t=>(i(),n(h,{key:t},[e(v,{style:{padding:`8px 16px`}},{default:f(()=>[m(`div`,we,[m(`div`,Te,l(t),1),m(`div`,Ee,l(JSON.stringify(L.value[t])),1)])]),_:2},1024),e(ae)],64))),128))]),_:1})]),_:2},[A.value?void 0:{name:`actions`,fn:f(()=>[e(S,{icon:`mdi-delete`,label:k.value.dropIndex,color:`inherit`,onClick:u(Le,[`stop`])},null,8,[`label`])]),key:`0`}]),1032,[`title`])],64)):r(``,!0),A.value?r(``,!0):(i(),n(h,{key:3},[a[26]||=m(`div`,{style:{"margin-top":`8px`}},null,-1),e(C,{title:k.value.createIndex,"accordion-key":`search-create-index`},{default:f(()=>[m(`div`,De,[e(y,{modelValue:W.value,"onUpdate:modelValue":a[13]||=e=>W.value=e,label:k.value.indexName,density:`compact`,variant:`outlined`,"hide-details":``},null,8,[`modelValue`,`label`]),e(y,{modelValue:G.value,"onUpdate:modelValue":a[14]||=e=>G.value=e,label:k.value.prefix,placeholder:`e.g. doc:`,density:`compact`,variant:`outlined`,"hide-details":``,style:{"margin-top":`8px`}},null,8,[`modelValue`,`label`]),m(`div`,Oe,[a[22]||=m(`strong`,null,`Schema`,-1),e(b,{text:`Add`,location:`top`},{activator:f(({props:t})=>[e(g,o(t,{color:`primary`,variant:`flat`,style:{"min-width":`40px`,width:`40px`,height:`40px`,padding:`0`,"border-radius":`4px`},onClick:Re}),{default:f(()=>[e(_,{size:`small`},{default:f(()=>[...a[21]||=[p(`mdi-plus`,-1)]]),_:1})]),_:1},16)]),_:1})]),(i(!0),n(h,null,c(K.value,(t,r)=>(i(),n(`div`,{key:r,style:{display:`flex`,"align-items":`center`,gap:`8px`,"margin-bottom":`4px`,"flex-wrap":`wrap`}},[e(y,{modelValue:t.name,"onUpdate:modelValue":e=>t.name=e,label:k.value.fieldName,density:`compact`,variant:`outlined`,"hide-details":``,style:{flex:`1`,"min-width":`120px`}},null,8,[`modelValue`,`onUpdate:modelValue`,`label`]),m(`div`,ke,[e(se,{modelValue:t.type,"onUpdate:modelValue":e=>t.type=e,items:[`TEXT`,`NUMERIC`,`TAG`,`GEO`,`VECTOR`],label:O.value?.label?.type,density:`compact`,variant:`outlined`,"hide-details":``,style:{width:`130px`}},null,8,[`modelValue`,`onUpdate:modelValue`,`label`]),e(b,{text:O.value?.intention?.delete,location:`top`},{activator:f(({props:t})=>[e(g,o({ref_for:!0},t,{color:`error`,variant:`flat`,disabled:K.value.length<=1,style:{"min-width":`40px`,width:`40px`,height:`40px`,padding:`0`,"border-radius":`4px`},onClick:e=>ze(r)}),{default:f(()=>[e(_,{size:`small`},{default:f(()=>[...a[23]||=[p(`mdi-minus`,-1)]]),_:1})]),_:1},16,[`disabled`,`onClick`])]),_:2},1032,[`text`])])]))),128)),m(`div`,Ae,[Ne.value?(i(),s(g,{key:0,color:`secondary`,variant:`flat`,size:`small`,disabled:!W.value.trim(),style:{gap:`3px`},onClick:$},{default:f(()=>[e(_,{size:`small`},{default:f(()=>[...a[24]||=[p(`mdi-plus`,-1)]]),_:1}),m(`span`,null,l(k.value.createIndex),1)]),_:1},8,[`disabled`])):(i(),s(b,{key:1,text:k.value.createIndex,location:`top`},{activator:f(({props:t})=>[e(g,o(t,{color:`secondary`,variant:`flat`,disabled:!W.value.trim(),style:{"min-width":`40px`,width:`40px`,height:`40px`,padding:`0`,"border-radius":`4px`},onClick:$}),{default:f(()=>[e(_,{size:`small`},{default:f(()=>[...a[25]||=[p(`mdi-plus`,-1)]]),_:1})]),_:1},16,[`disabled`])]),_:1},8,[`text`]))])])]),_:1},8,[`title`])],64))]))}});export{T as default};