koishi-plugin-dataview-next 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{send as M,message as h,icons as se}from"@koishijs/client";import{defineComponent as X,ref as _,reactive as Z,computed as j,watch as R,onBeforeUnmount as Pe,resolveComponent as v,resolveDirective as Ye,openBlock as u,createBlock as q,withCtx as o,createElementVNode as i,withDirectives as Ae,createElementBlock as d,toDisplayString as f,createTextVNode as w,createCommentVNode as U,createVNode as l,Fragment as Q,renderList as W,resolveDynamicComponent as ye,mergeProps as _e,normalizeClass as ge,h as C}from"vue";import{useRoute as Ie,useRouter as Ke}from"vue-router";const T={info:"dataview-next/info",query:"dataview-next/query",create:"dataview-next/create",update:"dataview-next/update",remove:"dataview-next/remove",drop:"dataview-next/drop"},Je={class:"header-title"},Le={key:0,class:"muted"},Ze={class:"source-list"},Qe=["onClick"],We={class:"source-name"},Xe={key:0,class:"count"},et={key:0,class:"table-list"},tt=["onClick"],at={class:"table-name"},nt={key:1,class:"table-panel"},ot={class:"table-header"},lt={key:0},st={key:1},rt={class:"table-actions"},ut={class:"query-bar"},it={key:0,class:"change-bar"},ct={class:"column-header"},dt={key:0,class:"cell-editor"},pt=["disabled","onDblclick"],mt={class:"form-grid"},vt={class:"danger-text"},ft=X({__name:"index",setup($){const ee=Ie(),H=Ke(),g=_(),S=_([]),te=_(0),b=_(false),P=_(""),z=Z({}),Y=Z({}),re=_(),we=[30,50,100,150,200,500,1e3],F=_(30),O=_(1),p=Z({}),x=Z({}),N=_(false),G=_(false),A=_("");let E,ae=false;const I=j(()=>{const e=ee.params.name;return Array.isArray(e)?e.join("/"):e||""}),r=j(()=>{var e;return I.value?(e=g.value)==null?void 0:e.tables[I.value]:void 0}),ne=j(()=>{var e;return Object.values(((e=r.value)==null?void 0:e.fields)||{})}),k=j(()=>Object.keys(p).length>0),ke=j(()=>Object.values(p).reduce((e,t)=>e+Object.keys(t).length,0)),ue=j(()=>{var e,t;return((t=(e=g.value)==null?void 0:e.display)==null?void 0:t.showGroupCount)??false}),ie=j(()=>{var e,t;return((t=(e=g.value)==null?void 0:e.display)==null?void 0:t.showGroupSize)??true}),he=j(()=>{var L;const e=new Map;for(const n of Object.values(((L=g.value)==null?void 0:L.tables)||{}))e.has(n.source.id)||e.set(n.source.id,{source:n.source,tables:[]}),e.get(n.source.id).tables.push(n);const t=[...e.values()].map(n=>({...n,size:n.tables.reduce((m,D)=>m+(D.size||0),0),tables:n.tables.sort((m,D)=>m.name.localeCompare(D.name))})),s=t.filter(n=>n.tables.length>1),y=t.filter(n=>n.tables.length===1).flatMap(n=>n.tables).sort((n,m)=>n.name.localeCompare(m.name));return y.length&&s.push({source:{id:"single-table-sources",label:"其他",type:"unknown"},size:y.reduce((n,m)=>n+(m.size||0),0),tables:y}),s.sort((n,m)=>n.source.label.localeCompare(m.source.label))});function ce(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KiB`:`${(e/1048576).toFixed(1)} MiB`}function Ce(e){return e<1048576?`${(e/1024).toFixed(1)} KiB`:`${(e/1048576).toFixed(1)} MiB`}function xe(e){const t=[];return ue.value&&t.push(String(e.tables.length)),ie.value&&t.push(Ce(e.size)),t.join(" · ")}function de(e){return!!e&&typeof e=="object"&&"__dataviewType"in e}function Ve(e){return de(e)?e.value:e}function pe(e,t){return de(e)?e.__dataviewType==="binary"?`<Binary len=${e.value}>`:String(e.value):t.type==="json"||t.type==="list"?e===void 0?"":JSON.stringify(e):e instanceof Date?e.toISOString():e==null?"":String(e)}function K(e){return e.type==="boolean"?{component:"el-switch",props:{}}:e.type==="timestamp"||e.type==="date"?{component:"el-date-picker",props:{type:e.type==="date"?"date":"datetime",valueFormat:"YYYY-MM-DDTHH:mm:ss.SSSZ"}}:e.type==="time"?{component:"el-time-picker",props:{valueFormat:"HH:mm:ss"}}:["integer","unsigned","float","double","decimal"].includes(e.type)?{component:"el-input-number",props:{controls:false}}:{component:"el-input",props:{type:e.type==="json"||e.type==="list"?"textarea":"text"}}}function je(e){Y[e]=!Y[e]}function Se(e){H.replace(`/dataview-next/${e}`)}async function J(){g.value=await M(T.info),await B()}function ze(){return Object.fromEntries(Object.entries(z).filter(([,e])=>e!==""))}async function B(){if(!r.value){S.value=[],te.value=0;return}b.value=true;try{const e=await M(T.query,r.value.name,{keyword:P.value,filters:ze(),offset:(O.value-1)*F.value,limit:F.value,sort:re.value});S.value=e.rows,te.value=e.count??r.value.count??e.rows.length}catch(e){h.error(e.message||"读取数据失败"),S.value=[]}finally{b.value=false}}function me(){k.value||(E&&clearTimeout(E),E=setTimeout(()=>{O.value!==1&&(ae=true,O.value=1),B()},300))}function Oe(e){re.value=e.order?{field:e.prop,order:e.order==="ascending"?"asc":"desc"}:void 0,B()}function Be(e,t){var s;return((s=p[e])==null?void 0:s[t])!==void 0}function De(e,t,s){if(s.type==="binary")return;p[t]||(p[t]={});const y=e[s.name];p[t][s.name]=s.type==="json"||s.type==="list"?pe(y,s):Ve(y)}function Me(e,t){delete p[e][t],Object.keys(p[e]).length||delete p[e]}function oe(){for(const e of Object.keys(p))delete p[Number(e)]}function ve(e){var t;return Object.fromEntries((((t=r.value)==null?void 0:t.primary)||[]).map(s=>[s,e[s]]))}async function Ue(){if(r.value){b.value=true;try{for(const[e,t]of Object.entries(p))await M(T.update,r.value.name,ve(S.value[Number(e)]),t);oe(),await B(),h.success("修改已应用")}catch(e){h.error(e.message||"修改数据失败")}finally{b.value=false}}}async function Te(){if(r.value){b.value=true;try{await M(T.create,r.value.name,x);for(const e of Object.keys(x))x[e]="";N.value=false,await J(),h.success("数据已创建")}catch(e){h.error(e.message||"创建数据失败")}finally{b.value=false}}}async function $e(e){if(r.value){b.value=true;try{await M(T.remove,r.value.name,ve(e)),await J(),h.success("数据已删除")}catch(t){h.error(t.message||"删除数据失败")}finally{b.value=false}}}function Fe(){A.value="",G.value=true}async function Ne(){if(r.value){b.value=true;try{g.value=await M(T.drop,r.value.name),G.value=false,await B(),h.success("数据表已删除")}catch(e){h.error(e.message||"删除数据表失败")}finally{b.value=false}}}return R(I,()=>{oe(),O.value=1,B()}),R([F,O],()=>{if(ae){ae=false;return}B()}),R(P,me),R(z,me,{deep:true}),R(ne,e=>{var t,s;for(const y of e)z[t=y.name]||(z[t]=""),x[s=y.name]||(x[s]="")},{immediate:true}),Pe(()=>{E&&clearTimeout(E)}),J(),(e,t)=>{const s=v("k-icon"),y=v("el-scrollbar"),L=v("k-empty"),n=v("el-button"),m=v("el-input"),D=v("k-button"),fe=v("el-table-column"),Ge=v("el-popconfirm"),Ee=v("el-table"),Re=v("el-pagination"),be=v("el-dialog"),qe=v("k-layout"),He=Ye("loading");return u(),q(qe,{class:"dataview-next"},{header:o(()=>{var a;return[i("span",Je,[l(s,{name:"dataview-database"}),t[9]||(t[9]=w(" 数据库 ",-1))]),(a=g.value)!=null&&a.size?(u(),d("span",Le,"("+f(ce(g.value.size))+")",1)):U("v-if",true)]}),menu:o(()=>[i("span",{class:"menu-item",onClick:J},[l(s,{class:"menu-icon",name:"dataview-refresh"})])]),left:o(()=>[l(y,null,{default:o(()=>[i("div",Ze,[(u(true),d(Q,null,W(he.value,a=>(u(),d("section",{key:a.source.id,class:"source-group"},[i("button",{class:"source-title",onClick:c=>je(a.source.id)},[l(s,{class:ge(["source-chevron",{expanded:!Y[a.source.id]}]),name:"dataview-chevron"},null,8,["class"]),i("span",We,f(a.source.label),1),ue.value||ie.value?(u(),d("span",Xe,f(xe(a)),1)):U("v-if",true)],8,Qe),Y[a.source.id]?U("v-if",true):(u(),d("div",et,[(u(true),d(Q,null,W(a.tables,c=>(u(),d("button",{key:c.name,class:ge(["table-entry",{active:c.name===I.value}]),onClick:V=>Se(c.name)},[i("span",at,f(c.name),1)],10,tt))),128))]))]))),128))])]),_:1})]),default:o(()=>[r.value?Ae((u(),d("main",nt,[i("header",ot,[i("div",null,[i("h2",null,f(r.value.name),1),i("p",null,[w(f(r.value.source.label)+" ",1),r.value.size?(u(),d("span",lt," · "+f(ce(r.value.size)),1)):U("v-if",true),r.value.physical?U("v-if",true):(u(),d("span",st," · 未初始化或无统计信息"))])]),i("div",rt,[l(n,{disabled:k.value,onClick:t[0]||(t[0]=a=>N.value=true)},{default:o(()=>[...t[11]||(t[11]=[w("新增行",-1)])]),_:1},8,["disabled"]),l(n,{type:"danger",disabled:k.value,onClick:Fe},{default:o(()=>[...t[12]||(t[12]=[w("删除表",-1)])]),_:1},8,["disabled"])])]),i("div",ut,[l(m,{modelValue:P.value,"onUpdate:modelValue":t[1]||(t[1]=a=>P.value=a),clearable:"",placeholder:"搜索文本或数字字段",disabled:k.value},{prefix:o(()=>[l(s,{name:"search"})]),_:1},8,["modelValue","disabled"])]),k.value?(u(),d("div",it,[i("span",null,"有 "+f(ke.value)+" 项修改尚未应用",1),i("div",null,[l(n,{type:"primary",onClick:Ue},{default:o(()=>[...t[13]||(t[13]=[w("应用修改",-1)])]),_:1}),l(n,{onClick:oe},{default:o(()=>[...t[14]||(t[14]=[w("取消修改",-1)])]),_:1})])])):U("v-if",true),l(Ee,{class:"data-grid",data:S.value,style:{width:"100%"},height:"100%",flexible:"",border:"",onSortChange:Oe},{default:o(()=>[(u(true),d(Q,null,W(ne.value,a=>(u(),q(fe,{key:a.name,prop:a.name,label:a.name,fixed:r.value.primary.includes(a.name),sortable:k.value?false:"custom","min-width":"100","show-overflow-tooltip":""},{header:o(()=>[i("div",ct,[i("span",null,f(a.name),1),l(m,{modelValue:z[a.name],"onUpdate:modelValue":c=>z[a.name]=c,size:"small",clearable:"",placeholder:a.type,disabled:k.value},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"])])]),default:o(({row:c,$index:V})=>[Be(V,a.name)?(u(),d("div",dt,[(u(),q(ye(K(a).component),_e({modelValue:p[V][a.name],"onUpdate:modelValue":le=>p[V][a.name]=le},{ref_for:true},K(a).props,{size:"small"}),null,16,["modelValue","onUpdate:modelValue"])),l(D,{frameless:"",type:"danger",onClick:le=>Me(V,a.name)},{default:o(()=>[l(s,{name:"times-full"})]),_:1},8,["onClick"])])):(u(),d("button",{key:1,class:"cell-value",disabled:a.type==="binary",onDblclick:le=>De(c,V,a)},f(pe(c[a.name],a)),41,pt))]),_:2},1032,["prop","label","fixed","sortable"]))),128)),l(fe,{label:"操作",width:"72",fixed:"right",align:"center"},{default:o(({row:a})=>[l(Ge,{title:"真的要删除这条数据吗?","confirm-button-text":"是","cancel-button-text":"否",onConfirm:c=>$e(a)},{reference:o(()=>[l(D,{frameless:"",type:"danger",disabled:k.value},{default:o(()=>[l(s,{name:"times-full"})]),_:1},8,["disabled"])]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"]),l(Re,{layout:"sizes, prev, pager, next, jumper",total:te.value,"page-sizes":we,"page-size":F.value,"onUpdate:pageSize":t[2]||(t[2]=a=>F.value=a),"current-page":O.value,"onUpdate:currentPage":t[3]||(t[3]=a=>O.value=a),disabled:k.value},null,8,["total","page-size","current-page","disabled"])])),[[He,b.value]]):(u(),q(L,{key:0,class:"dataview-empty"},{default:o(()=>[...t[10]||(t[10]=[i("div",null,"在左侧选择要访问的数据表",-1)])]),_:1})),l(be,{modelValue:N.value,"onUpdate:modelValue":t[5]||(t[5]=a=>N.value=a),title:"新增行",width:"640px"},{footer:o(()=>[l(n,{onClick:t[4]||(t[4]=a=>N.value=false)},{default:o(()=>[...t[15]||(t[15]=[w("取消",-1)])]),_:1}),l(n,{type:"primary",onClick:Te},{default:o(()=>[...t[16]||(t[16]=[w("创建",-1)])]),_:1})]),default:o(()=>[i("div",mt,[(u(true),d(Q,null,W(ne.value,a=>(u(),d("label",{key:a.name},[i("span",null,f(a.name),1),(u(),q(ye(K(a).component),_e({modelValue:x[a.name],"onUpdate:modelValue":c=>x[a.name]=c},{ref_for:true},K(a).props),null,16,["modelValue","onUpdate:modelValue"]))]))),128))])]),_:1},8,["modelValue"]),l(be,{modelValue:G.value,"onUpdate:modelValue":t[8]||(t[8]=a=>G.value=a),title:"删除数据表",width:"520px"},{footer:o(()=>{var a;return[l(n,{onClick:t[7]||(t[7]=c=>G.value=false)},{default:o(()=>[...t[17]||(t[17]=[w("取消",-1)])]),_:1}),l(n,{type:"danger",disabled:A.value!==((a=r.value)==null?void 0:a.name),onClick:Ne},{default:o(()=>[...t[18]||(t[18]=[w(" 删除表 ",-1)])]),_:1},8,["disabled"])]}),default:o(()=>{var a,c;return[i("p",vt," 这会物理删除数据表 "+f((a=r.value)==null?void 0:a.name)+"。只要插件仍在运行,模型定义仍会留在列表中。 ",1),l(m,{modelValue:A.value,"onUpdate:modelValue":t[6]||(t[6]=V=>A.value=V),placeholder:(c=r.value)==null?void 0:c.name},null,8,["modelValue","placeholder"])]}),_:1},8,["modelValue"])]),_:1})}}}),bt=($,ee)=>{const H=$.__vccOpts||$;for(const[g,S]of ee)H[g]=S;return H},yt=bt(ft,[["__scopeId","data-v-00a84af0"]]);se.register("dataview-database",X({render:()=>C("svg",{class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"},[C("path",{d:"M4 6a8 3 0 1 0 16 0a8 3 0 1 0 -16 0"}),C("path",{d:"M4 6v6a8 3 0 0 0 16 0v-6"}),C("path",{d:"M4 12v6a8 3 0 0 0 16 0v-6"})])}));se.register("dataview-chevron",X({render:()=>C("svg",{class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[C("path",{d:"M9 6l6 6l-6 6"})])}));se.register("dataview-refresh",X({render:()=>C("svg",{class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[C("path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4"}),C("path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4"})])}));const kt=$=>{$.page({path:"/dataview-next/:name*",name:"数据库",icon:"dataview-database",order:410,authority:4,component:yt})};export{kt as default};
|
|
1
|
+
import{send as M,message as h,icons as se}from"@koishijs/client";import{defineComponent as X,ref as _,reactive as Z,computed as j,watch as R,onBeforeUnmount as Pe,resolveComponent as v,resolveDirective as Ye,openBlock as u,createBlock as q,withCtx as o,createElementVNode as i,withDirectives as Ae,createElementBlock as d,toDisplayString as f,createTextVNode as w,createCommentVNode as U,createVNode as l,Fragment as Q,renderList as W,resolveDynamicComponent as ye,mergeProps as _e,normalizeClass as ge,h as C}from"vue";import{useRoute as Ie,useRouter as Ke}from"vue-router";const T={info:"dataview-next/info",query:"dataview-next/query",create:"dataview-next/create",update:"dataview-next/update",remove:"dataview-next/remove",drop:"dataview-next/drop"},Je={class:"header-title"},Le={key:0,class:"muted"},Ze={class:"source-list"},Qe=["onClick"],We={class:"source-name"},Xe={key:0,class:"count"},et={key:0,class:"table-list"},tt=["onClick"],at={class:"table-name"},nt={key:1,class:"table-panel"},ot={class:"table-header"},lt={key:0},st={key:1},rt={class:"table-actions"},ut={class:"query-bar"},it={key:0,class:"change-bar"},ct={class:"column-header"},dt={key:0,class:"cell-editor"},pt=["disabled","onDblclick"],mt={class:"form-grid"},vt={class:"danger-text"},ft=X({__name:"index",setup($){const ee=Ie(),H=Ke(),g=_(),S=_([]),te=_(0),b=_(false),P=_(""),z=Z({}),Y=Z({}),re=_(),we=[30,50,100,150,200,500,1e3],F=_(30),O=_(1),p=Z({}),x=Z({}),N=_(false),G=_(false),A=_("");let E,ae=false;const I=j(()=>{const e=ee.params.name;return Array.isArray(e)?e.join("/"):e||""}),r=j(()=>{var e;return I.value?(e=g.value)==null?void 0:e.tables[I.value]:void 0}),ne=j(()=>{var e;return Object.values(((e=r.value)==null?void 0:e.fields)||{})}),k=j(()=>Object.keys(p).length>0),ke=j(()=>Object.values(p).reduce((e,t)=>e+Object.keys(t).length,0)),ue=j(()=>{var e,t;return((t=(e=g.value)==null?void 0:e.display)==null?void 0:t.showGroupCount)??false}),ie=j(()=>{var e,t;return((t=(e=g.value)==null?void 0:e.display)==null?void 0:t.showGroupSize)??true}),he=j(()=>{var L;const e=new Map;for(const n of Object.values(((L=g.value)==null?void 0:L.tables)||{}))e.has(n.source.id)||e.set(n.source.id,{source:n.source,tables:[]}),e.get(n.source.id).tables.push(n);const t=[...e.values()].map(n=>({...n,size:n.tables.reduce((m,D)=>m+(D.size||0),0),tables:n.tables.sort((m,D)=>m.name.localeCompare(D.name))})),s=t.filter(n=>n.tables.length>1),y=t.filter(n=>n.tables.length===1).flatMap(n=>n.tables).sort((n,m)=>n.name.localeCompare(m.name));return y.length&&s.push({source:{id:"single-table-sources",label:"其他",type:"unknown"},size:y.reduce((n,m)=>n+(m.size||0),0),tables:y}),s.sort((n,m)=>n.source.label.localeCompare(m.source.label))});function ce(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KiB`:`${(e/1048576).toFixed(1)} MiB`}function Ce(e){return e<1048576?`${(e/1024).toFixed(1)} KiB`:`${(e/1048576).toFixed(1)} MiB`}function xe(e){const t=[];return ue.value&&t.push(String(e.tables.length)),ie.value&&t.push(Ce(e.size)),t.join(" · ")}function de(e){return!!e&&typeof e=="object"&&"__dataviewType"in e}function Ve(e){return de(e)?e.value:e}function pe(e,t){return de(e)?e.__dataviewType==="binary"?`<Binary len=${e.value}>`:String(e.value):t.type==="json"||t.type==="list"?e===void 0?"":JSON.stringify(e):e instanceof Date?e.toISOString():e==null?"":String(e)}function K(e){return e.type==="boolean"?{component:"el-switch",props:{}}:e.type==="timestamp"||e.type==="date"?{component:"el-date-picker",props:{type:e.type==="date"?"date":"datetime",valueFormat:"YYYY-MM-DDTHH:mm:ss.SSSZ"}}:e.type==="time"?{component:"el-time-picker",props:{valueFormat:"HH:mm:ss"}}:["integer","unsigned","float","double","decimal"].includes(e.type)?{component:"el-input-number",props:{controls:false}}:{component:"el-input",props:{type:e.type==="json"||e.type==="list"?"textarea":"text"}}}function je(e){Y[e]=!Y[e]}function Se(e){H.replace(`/dataview-next/${e}`)}async function J(){g.value=await M(T.info),await B()}function ze(){return Object.fromEntries(Object.entries(z).filter(([,e])=>e!==""))}async function B(){if(!r.value){S.value=[],te.value=0;return}b.value=true;try{const e=await M(T.query,r.value.name,{keyword:P.value,filters:ze(),offset:(O.value-1)*F.value,limit:F.value,sort:re.value});S.value=e.rows,te.value=e.count??r.value.count??e.rows.length}catch(e){h.error(e.message||"读取数据失败"),S.value=[]}finally{b.value=false}}function me(){k.value||(E&&clearTimeout(E),E=setTimeout(()=>{O.value!==1&&(ae=true,O.value=1),B()},300))}function Oe(e){re.value=e.order?{field:e.prop,order:e.order==="ascending"?"asc":"desc"}:void 0,B()}function Be(e,t){var s;return((s=p[e])==null?void 0:s[t])!==void 0}function De(e,t,s){if(s.type==="binary")return;p[t]||(p[t]={});const y=e[s.name];p[t][s.name]=s.type==="json"||s.type==="list"?pe(y,s):Ve(y)}function Me(e,t){delete p[e][t],Object.keys(p[e]).length||delete p[e]}function oe(){for(const e of Object.keys(p))delete p[Number(e)]}function ve(e){var t;return Object.fromEntries((((t=r.value)==null?void 0:t.primary)||[]).map(s=>[s,e[s]]))}async function Ue(){if(r.value){b.value=true;try{for(const[e,t]of Object.entries(p))await M(T.update,r.value.name,ve(S.value[Number(e)]),t);oe(),await B(),h.success("修改已应用")}catch(e){h.error(e.message||"修改数据失败")}finally{b.value=false}}}async function Te(){if(r.value){b.value=true;try{await M(T.create,r.value.name,x);for(const e of Object.keys(x))x[e]="";N.value=false,await J(),h.success("数据已创建")}catch(e){h.error(e.message||"创建数据失败")}finally{b.value=false}}}async function $e(e){if(r.value){b.value=true;try{await M(T.remove,r.value.name,ve(e)),await J(),h.success("数据已删除")}catch(t){h.error(t.message||"删除数据失败")}finally{b.value=false}}}function Fe(){A.value="",G.value=true}async function Ne(){if(r.value){b.value=true;try{g.value=await M(T.drop,r.value.name),G.value=false,await B(),h.success("数据表已删除")}catch(e){h.error(e.message||"删除数据表失败")}finally{b.value=false}}}return R(I,()=>{oe(),O.value=1,B()}),R([F,O],()=>{if(ae){ae=false;return}B()}),R(P,me),R(z,me,{deep:true}),R(ne,e=>{var t,s;for(const y of e)z[t=y.name]||(z[t]=""),x[s=y.name]||(x[s]="")},{immediate:true}),Pe(()=>{E&&clearTimeout(E)}),J(),(e,t)=>{const s=v("k-icon"),y=v("el-scrollbar"),L=v("k-empty"),n=v("el-button"),m=v("el-input"),D=v("k-button"),fe=v("el-table-column"),Ge=v("el-popconfirm"),Ee=v("el-table"),Re=v("el-pagination"),be=v("el-dialog"),qe=v("k-layout"),He=Ye("loading");return u(),q(qe,{class:"dataview-next"},{header:o(()=>{var a;return[i("span",Je,[l(s,{name:"dataview-database"}),t[9]||(t[9]=w(" 数据库 ",-1))]),(a=g.value)!=null&&a.size?(u(),d("span",Le,"("+f(ce(g.value.size))+")",1)):U("v-if",true)]}),menu:o(()=>[i("span",{class:"menu-item",onClick:J},[l(s,{class:"menu-icon",name:"dataview-refresh"})])]),left:o(()=>[l(y,null,{default:o(()=>[i("div",Ze,[(u(true),d(Q,null,W(he.value,a=>(u(),d("section",{key:a.source.id,class:"source-group"},[i("button",{class:"source-title",onClick:c=>je(a.source.id)},[l(s,{class:ge(["source-chevron",{expanded:!Y[a.source.id]}]),name:"dataview-chevron"},null,8,["class"]),i("span",We,f(a.source.label),1),ue.value||ie.value?(u(),d("span",Xe,f(xe(a)),1)):U("v-if",true)],8,Qe),Y[a.source.id]?U("v-if",true):(u(),d("div",et,[(u(true),d(Q,null,W(a.tables,c=>(u(),d("button",{key:c.name,class:ge(["table-entry",{active:c.name===I.value}]),onClick:V=>Se(c.name)},[i("span",at,f(c.name),1)],10,tt))),128))]))]))),128))])]),_:1})]),default:o(()=>[r.value?Ae((u(),d("main",nt,[i("header",ot,[i("div",null,[i("h2",null,f(r.value.name),1),i("p",null,[w(f(r.value.source.label)+" ",1),r.value.size?(u(),d("span",lt," · "+f(ce(r.value.size)),1)):U("v-if",true),r.value.physical?U("v-if",true):(u(),d("span",st," · 未初始化或无统计信息"))])]),i("div",rt,[l(n,{disabled:k.value,onClick:t[0]||(t[0]=a=>N.value=true)},{default:o(()=>[...t[11]||(t[11]=[w("新增行",-1)])]),_:1},8,["disabled"]),l(n,{type:"danger",disabled:k.value,onClick:Fe},{default:o(()=>[...t[12]||(t[12]=[w("删除表",-1)])]),_:1},8,["disabled"])])]),i("div",ut,[l(m,{modelValue:P.value,"onUpdate:modelValue":t[1]||(t[1]=a=>P.value=a),clearable:"",placeholder:"搜索文本或数字字段",disabled:k.value},{prefix:o(()=>[l(s,{name:"search"})]),_:1},8,["modelValue","disabled"])]),k.value?(u(),d("div",it,[i("span",null,"有 "+f(ke.value)+" 项修改尚未应用",1),i("div",null,[l(n,{type:"primary",onClick:Ue},{default:o(()=>[...t[13]||(t[13]=[w("应用修改",-1)])]),_:1}),l(n,{onClick:oe},{default:o(()=>[...t[14]||(t[14]=[w("取消修改",-1)])]),_:1})])])):U("v-if",true),l(Ee,{class:"data-grid",data:S.value,style:{width:"100%"},height:"100%",flexible:"",border:"",onSortChange:Oe},{default:o(()=>[(u(true),d(Q,null,W(ne.value,a=>(u(),q(fe,{key:a.name,prop:a.name,label:a.name,fixed:r.value.primary.includes(a.name),sortable:k.value?false:"custom","min-width":"100","show-overflow-tooltip":""},{header:o(()=>[i("div",ct,[i("span",null,f(a.name),1),l(m,{modelValue:z[a.name],"onUpdate:modelValue":c=>z[a.name]=c,size:"small",clearable:"",placeholder:a.type,disabled:k.value},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"])])]),default:o(({row:c,$index:V})=>[Be(V,a.name)?(u(),d("div",dt,[(u(),q(ye(K(a).component),_e({modelValue:p[V][a.name],"onUpdate:modelValue":le=>p[V][a.name]=le},{ref_for:true},K(a).props,{size:"small"}),null,16,["modelValue","onUpdate:modelValue"])),l(D,{frameless:"",type:"danger",onClick:le=>Me(V,a.name)},{default:o(()=>[l(s,{name:"times-full"})]),_:1},8,["onClick"])])):(u(),d("button",{key:1,class:"cell-value",disabled:a.type==="binary",onDblclick:le=>De(c,V,a)},f(pe(c[a.name],a)),41,pt))]),_:2},1032,["prop","label","fixed","sortable"]))),128)),l(fe,{label:"操作",width:"72",fixed:"right",align:"center"},{default:o(({row:a})=>[l(Ge,{title:"真的要删除这条数据吗?","confirm-button-text":"是","cancel-button-text":"否",onConfirm:c=>$e(a)},{reference:o(()=>[l(D,{frameless:"",type:"danger",disabled:k.value},{default:o(()=>[l(s,{name:"times-full"})]),_:1},8,["disabled"])]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"]),l(Re,{layout:"sizes, prev, pager, next, jumper",total:te.value,"page-sizes":we,"page-size":F.value,"onUpdate:pageSize":t[2]||(t[2]=a=>F.value=a),"current-page":O.value,"onUpdate:currentPage":t[3]||(t[3]=a=>O.value=a),disabled:k.value},null,8,["total","page-size","current-page","disabled"])])),[[He,b.value]]):(u(),q(L,{key:0,class:"dataview-empty"},{default:o(()=>[...t[10]||(t[10]=[i("div",null,"在左侧选择要访问的数据表",-1)])]),_:1})),l(be,{modelValue:N.value,"onUpdate:modelValue":t[5]||(t[5]=a=>N.value=a),title:"新增行",width:"640px"},{footer:o(()=>[l(n,{onClick:t[4]||(t[4]=a=>N.value=false)},{default:o(()=>[...t[15]||(t[15]=[w("取消",-1)])]),_:1}),l(n,{type:"primary",onClick:Te},{default:o(()=>[...t[16]||(t[16]=[w("创建",-1)])]),_:1})]),default:o(()=>[i("div",mt,[(u(true),d(Q,null,W(ne.value,a=>(u(),d("label",{key:a.name},[i("span",null,f(a.name),1),(u(),q(ye(K(a).component),_e({modelValue:x[a.name],"onUpdate:modelValue":c=>x[a.name]=c},{ref_for:true},K(a).props),null,16,["modelValue","onUpdate:modelValue"]))]))),128))])]),_:1},8,["modelValue"]),l(be,{modelValue:G.value,"onUpdate:modelValue":t[8]||(t[8]=a=>G.value=a),title:"删除数据表",width:"520px"},{footer:o(()=>{var a;return[l(n,{onClick:t[7]||(t[7]=c=>G.value=false)},{default:o(()=>[...t[17]||(t[17]=[w("取消",-1)])]),_:1}),l(n,{type:"danger",disabled:A.value!==((a=r.value)==null?void 0:a.name),onClick:Ne},{default:o(()=>[...t[18]||(t[18]=[w(" 删除表 ",-1)])]),_:1},8,["disabled"])]}),default:o(()=>{var a,c;return[i("p",vt," 这会物理删除数据表 "+f((a=r.value)==null?void 0:a.name)+"。只要插件仍在运行,模型定义仍会留在列表中。 ",1),l(m,{modelValue:A.value,"onUpdate:modelValue":t[6]||(t[6]=V=>A.value=V),placeholder:(c=r.value)==null?void 0:c.name},null,8,["modelValue","placeholder"])]}),_:1},8,["modelValue"])]),_:1})}}}),bt=($,ee)=>{const H=$.__vccOpts||$;for(const[g,S]of ee)H[g]=S;return H},yt=bt(ft,[["__scopeId","data-v-5a6d905f"]]);se.register("dataview-database",X({render:()=>C("svg",{class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"},[C("path",{d:"M4 6a8 3 0 1 0 16 0a8 3 0 1 0 -16 0"}),C("path",{d:"M4 6v6a8 3 0 0 0 16 0v-6"}),C("path",{d:"M4 12v6a8 3 0 0 0 16 0v-6"})])}));se.register("dataview-chevron",X({render:()=>C("svg",{class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[C("path",{d:"M9 6l6 6l-6 6"})])}));se.register("dataview-refresh",X({render:()=>C("svg",{class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[C("path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4"}),C("path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4"})])}));const kt=$=>{$.page({path:"/dataview-next/:name*",name:"数据库",icon:"dataview-database",order:410,authority:4,component:yt})};export{kt as default};
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.dataview-next[data-v-
|
|
1
|
+
.dataview-next[data-v-5a6d905f] .layout-header .left{display:flex;gap:4px;align-items:center;margin-left:24px;padding-left:0}.dataview-next .header-title[data-v-5a6d905f]{display:inline-flex;gap:6px;align-items:center}.dataview-next .muted[data-v-5a6d905f]{color:var(--fg2);font-weight:400}.source-list[data-v-5a6d905f]{padding:12px 0}.source-group+.source-group[data-v-5a6d905f]{margin-top:8px}.source-title[data-v-5a6d905f],.table-entry[data-v-5a6d905f],.cell-value[data-v-5a6d905f]{border:0;background:transparent;color:inherit;font:inherit}.source-title[data-v-5a6d905f]{display:grid;grid-template-columns:20px minmax(0,1fr) max-content;gap:4px;align-items:center;width:100%;min-width:0;padding:6px 16px;font-weight:600;text-align:left;cursor:pointer}.source-name[data-v-5a6d905f]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-chevron[data-v-5a6d905f]{transition:transform .15s ease}.source-chevron.expanded[data-v-5a6d905f]{transform:rotate(90deg)}.table-list[data-v-5a6d905f]{display:grid;gap:2px}.table-entry[data-v-5a6d905f]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;width:100%;min-width:0;padding:6px 16px 6px 40px;text-align:left;cursor:pointer}.table-entry.active[data-v-5a6d905f],.table-entry[data-v-5a6d905f]:hover,.source-title[data-v-5a6d905f]:hover{background:var(--k-hover-bg)}.table-name[data-v-5a6d905f]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.count[data-v-5a6d905f]{color:var(--fg2);font-size:12px;white-space:nowrap}.dataview-empty[data-v-5a6d905f]{height:100%}.table-panel[data-v-5a6d905f]{display:flex;flex-direction:column;gap:12px;height:100%;min-width:0;min-height:0;padding:24px;box-sizing:border-box}.table-header[data-v-5a6d905f],.change-bar[data-v-5a6d905f],.query-bar[data-v-5a6d905f]{display:flex;gap:12px;align-items:center;justify-content:space-between;min-width:0}.table-header h2[data-v-5a6d905f]{margin:0;font-size:22px}.table-header p[data-v-5a6d905f]{margin:4px 0 0;color:var(--fg2)}.table-actions[data-v-5a6d905f],.change-bar>div[data-v-5a6d905f]{display:flex;gap:8px}.table-actions[data-v-5a6d905f] .el-button+.el-button{margin-left:0}.query-bar[data-v-5a6d905f]{justify-content:flex-start}.query-bar .el-input[data-v-5a6d905f]{max-width:360px}.change-bar[data-v-5a6d905f]{justify-content:flex-start;padding:8px 12px;border-radius:6px}.data-grid[data-v-5a6d905f]{flex:1 1 0;min-height:0;min-width:0}.data-grid[data-v-5a6d905f] .el-table__body .el-table__cell{padding:4px 0}.data-grid[data-v-5a6d905f] th.el-table-fixed-column--right,.data-grid[data-v-5a6d905f] td.el-table-fixed-column--right{background-color:var(--el-bg-color)}.el-pagination[data-v-5a6d905f]{flex:0 0 auto;align-self:center;justify-content:center;min-width:0}.el-pagination[data-v-5a6d905f] .el-select{width:112px}.column-header[data-v-5a6d905f]{display:grid;gap:6px}.data-grid[data-v-5a6d905f] th.is-sortable .cell{display:grid;grid-template-columns:minmax(0,max-content) 24px minmax(0,1fr);gap:6px 4px;align-items:start}.data-grid[data-v-5a6d905f] th.is-sortable .column-header{display:contents}.data-grid[data-v-5a6d905f] th.is-sortable .column-header .el-input{grid-column:1/-1}.data-grid[data-v-5a6d905f] th.is-sortable .column-header>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-grid[data-v-5a6d905f] th.is-sortable .caret-wrapper{grid-column:2;grid-row:1;align-self:center}.cell-editor[data-v-5a6d905f]{display:flex;gap:4px;align-items:center}.cell-editor[data-v-5a6d905f]>:first-child{flex:1}.cell-value[data-v-5a6d905f]{display:block;width:100%;min-height:20px;padding:0;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text}.cell-value[data-v-5a6d905f]:disabled{cursor:not-allowed}.form-grid[data-v-5a6d905f]{display:grid;gap:12px}.form-grid label[data-v-5a6d905f]{display:grid;gap:6px}.danger-text[data-v-5a6d905f]{color:var(--danger)}
|