UNPKG

goldpankit

Version:

GoldPanKit是一款极速研发套件,可在套件中快速构建各类技术框架和项目。开源作者可发布自己的项目,并为其设定金额,实现开源项目的盈利。

3 lines (2 loc) 42.3 kB
import{_ as V,r as m,o as u,g as C,w as p,b as d,c as f,f as w,F as T,a6 as L,j as q,a as r,t as _,i as M,y as X,P as Y,B as I,J as E,I as k,W as R,m as $,a9 as Q,aa as W,A as P,e as S,ab as Z,E as ee,ac as H,ad as te,ae as le,D as ae,a8 as ne,G as ie,a7 as se,p as oe,k as re}from"./index-dd2ed0b0.js";import{a as de,I as ue}from"./InnerRouterViewWindow-c7df055d.js";const F={join:{color:"#eee",hoverColor:"#faa5aa",selectedColor:"#FC777D"},aggregate:{color:"#FFE957",hoverColor:"#faa5aa",selectedColor:"#FC777D"}},he={name:"RelationLine",props:{start:{required:!0},end:{required:!0},selected:{default:!1},lineType:{required:!0}},data(){return{lineConfig:{x:0,y:0,stroke:"#ccc",strokeWidth:4,lineJoin:"round",lineCap:"round"}}},computed:{position(){return[this.start,this.end]}},watch:{position(){this.init()},selected(){this.selected?this.highlight(!0,this.selected):this.highlight(!1,this.selected)}},methods:{handleSelect(){this.selected?this.$emit("unselect"):this.$emit("select")},highlight(e=!0,t=!1){const a=this.$refs.line.getNode();if(e)t?(a.setAttr("stroke",F[this.lineType].selectedColor),a.zIndex(101)):(a.setAttr("stroke",F[this.lineType].hoverColor),a.zIndex(100)),a.setAttr("strokeWidth",5);else{if(a.zIndex(1),t)return;a.setAttr("stroke",F[this.lineType].color),a.setAttr("strokeWidth",4)}},init(){this.lineConfig.stroke=F[this.lineType].color;const e=[];this.start.y!==this.end.y&&(this.end.x-this.start.x>0?this.end.x-this.start.x<50?(this.start.x-=200,e.push(this.start.x-50),e.push(this.start.y),e.push(this.start.x-50),e.push(this.end.y)):(e.push(this.start.x+(this.end.x-this.start.x)/2),e.push(this.start.y),e.push(this.start.x+(this.end.x-this.start.x)/2),e.push(this.end.y)):Math.abs(this.end.x-this.start.x)<200?(this.start.x-=200,e.push(this.start.x-50),e.push(this.start.y),e.push(this.start.x-50),e.push(this.end.y)):Math.abs(this.end.x-this.start.x)<450?(this.end.x+=200,e.push(this.start.x+50),e.push(this.start.y),e.push(this.start.x+50),e.push(this.end.y)):(this.start.x-=200,this.end.x+=200,e.push(this.start.x-Math.abs(this.end.x-this.start.x)/2),e.push(this.start.y),e.push(this.start.x-Math.abs(this.end.x-this.start.x)/2),e.push(this.end.y))),this.lineConfig.points=[this.start.x,this.start.y,...e,this.end.x,this.end.y]}},created(){this.init()}};function ce(e,t,a,s,n,l){const o=m("v-line");return u(),C(o,{ref:"line",config:n.lineConfig,onMouseenter:t[0]||(t[0]=c=>l.highlight(!0,a.selected)),onMouseleave:t[1]||(t[1]=c=>l.highlight(!1,a.selected)),onClick:l.handleSelect},null,8,["config","onClick"])}const z=V(he,[["render",ce],["__scopeId","data-v-6a26c54d"]]),ge={name:"Table",props:{x:{default:0},y:{default:0},fieldHeight:{default:30},table:{required:!0},relations:{required:!0},selected:{default:!1}},data(){const e=this;return{layerConfig:{x:e.x,y:e.y,draggable:!1}}},computed:{backgroundConfig(){return{width:200,height:(this.visibleFields.length+1)*this.fieldHeight,fill:"#fafafa"}},tableNameConfig(){return{text:this.table.alias,x:10,y:8,fontSize:15,fill:"#fff"}},tableHeaderConfig(){return{width:200,height:this.fieldHeight,fill:this.table.type==="MAIN"?"#FC777D":"#666"}},relation(){return this.relations.find(e=>e.targetTable===this.table.name)},visibleFields(){return this.table.fields.filter(e=>e.visible===!0)}},watch:{selected(e){if(e){this.select();return}this.select(!1)}},methods:{selectTable(e){this.$emit("table:select",this.table.id)},previewTable(e){this.$emit("table:preview",this.table.id)},select(e=!0){const t=this.$refs.background.getNode();e?(t.setAttr("stroke",(this.table.type==="MAIN","#FC777D")),t.setAttr("strokeWidth",5)):t.setAttr("strokeWidth",0)},handleHeaderMouseover(e){this.getNode().draggable(!0),window.document.body.style.cursor="move"},handleHeaderMouseleave(e){this.getNode().draggable(!1),window.document.body.style.cursor="default"},getNode(){return this.$refs.table.getNode()},handleFieldMouseDown(e){this.getNode().draggable(!1),this.$emit("field:mousedown",{table:this.table,field:e})},handleFieldMouseUp(e){this.getNode().draggable(!0),this.$emit("field:mouseup",{table:this.table,field:e})}}};function me(e,t,a,s,n,l){const o=m("v-rect"),c=m("v-text"),b=m("v-layer");return u(),C(b,{ref:"table",config:n.layerConfig},{default:p(()=>[d(o,{ref:"background",config:l.backgroundConfig},null,8,["config"]),d(o,{config:l.tableHeaderConfig,onMouseover:l.handleHeaderMouseover,onMouseleave:l.handleHeaderMouseleave,onClick:l.selectTable,onDblclick:l.previewTable},null,8,["config","onMouseover","onMouseleave","onClick","onDblclick"]),d(c,{config:l.tableNameConfig,onMouseover:l.handleHeaderMouseover,onMouseleave:l.handleHeaderMouseleave,onClick:l.selectTable,onDblclick:l.previewTable},null,8,["config","onMouseover","onMouseleave","onClick","onDblclick"]),(u(!0),f(T,null,w(l.visibleFields,(g,i)=>(u(),C(o,{key:g.name,config:{y:i*a.fieldHeight+l.tableHeaderConfig.height,width:200,height:a.fieldHeight,fill:"#fff"},onMousedown:y=>l.handleFieldMouseDown(g),onMouseup:y=>l.handleFieldMouseUp(g)},null,8,["config","onMousedown","onMouseup"]))),128)),(u(!0),f(T,null,w(l.visibleFields,(g,i)=>(u(),C(c,{key:g,config:{text:g.name,x:10,y:i*a.fieldHeight+l.tableHeaderConfig.height+10,fontSize:13,fill:"#333"},onMousedown:y=>l.handleFieldMouseDown(g),onMouseup:y=>l.handleFieldMouseUp(g)},null,8,["config","onMousedown","onMouseup"]))),128))]),_:1},8,["config"])}const J=V(ge,[["render",me]]);const be={name:"QueryModelDesigner",components:{Table:J,RelationLine:z},props:{model:{},fieldHeight:{default:30}},data(){return{rendered:!0,configKonva:{width:1260,height:1e3,draggable:!0},relationLines:[],relationRuntime:{table:null,field:null,targetTable:null,targetField:null}}},computed:{tableLength(){return this.model.tables.length},reRenderFactors(){return[this.tableLength,this.model]}},watch:{reRenderFactors(){this.render()}},methods:{handleDelete(){if(this.model.selectedLineId!=null){this.__deleteLine();return}this.model.selectedTableId!=null&&this.__deleteTable()},globalClick(e){e.target.nodeType==="Stage"&&(this.model.selectedTableId=null,this.model.previewTableId=null,this.model.selectedLineId=null)},moveTable(){for(const e of this.model.tables){const t=this.$refs[e.id][0].getNode().getAbsolutePosition();e.x=t.x,e.y=t.y}this.computeRelations()},computeRelations(){this.relationLines=[];for(const e of this.model.joins){const t=this.model.tables.find(s=>s.id===e.table.id),a=this.model.tables.find(s=>s.id===e.targetTable.id);for(const s of e.ons){const n=this.__getFieldPosition(t,s.field),l=this.__getFieldPosition(a,s.targetField,!1);n==null||l==null||this.relationLines.push({id:L(),start:n,end:l,type:"join",table:e.table,field:s.field,targetTable:e.targetTable,targetField:s.targetField})}}for(const e of this.model.aggregates){const t=this.__getFieldPosition(e.table,e.field),a=this.__getFieldPosition(e.targetTable,e.targetField,!1);t==null||a==null||this.relationLines.push({id:L(),start:t,end:a,type:"aggregate",table:e.table,field:e.field,targetTable:e.targetTable,targetField:e.targetField})}},handleFieldMouseDown({table:e,field:t}){this.$refs.stage.getNode().draggable(!1),this.relationRuntime.table=e,this.relationRuntime.field=t},handleFieldMouseUp({table:e,field:t}){if(!(this.relationRuntime.table==null||(this.$refs.stage.getNode().draggable(!0),this.relationRuntime.targetTable=e,this.relationRuntime.targetField=t,this.relationRuntime.table.id===this.relationRuntime.targetTable.id))){if(this.model.lineType==="join"){this.__addJoinRelation(),this.$emit("change");return}this.model.lineType==="aggregate"&&(this.__addAggregate(),this.$emit("change"))}},handleTableSelect(e){this.model.selectedTableId=e,this.model.selectedLineId=null,this.model.previewTableId=null},handleLineSelect(e){this.model.selectedLineId=e.id,this.model.selectedTableId=null,this.model.previewTableId=null},handleTablePreview(e){this.model.previewTableId=e},handleDrop(e,t){const a=this.$refs.stage.getNode();a.setPointersPositions(e);const s=a.getPointerPosition(),n={width:200,height:(this.model.dragData.fields.length+1)*this.fieldHeight},l={...this.model.dragData,fields:this.model.dragData.fields.map(o=>({...o,alias:o.name,visible:!0,isVirtual:!1})),isVirtual:!1,type:this.model.tables.length===0?"MAIN":"SUB",x:s.x-n.width/2,y:s.y-n.height/2,id:L(),joins:[]};this.model.tables.push(l),this.$emit("change")},confirmCreateVirtualTable(){const e={width:200,height:this.fieldHeight},t={id:L(),name:this.model.name,alias:this.model.name,comment:this.model.comment,...e,type:"MAIN",isVirtual:!0,x:100,y:100,joins:[],aggregates:[]};t.fields=this.__getVirtualTableDefaultFields(t),this.model.tables.push(t),this.$emit("change")},render(){this.rendered=!1,this.$nextTick(()=>{this.rendered=!0,this.$nextTick(()=>{const t=this.$refs.stage.getNode().container();t.addEventListener("dragover",function(a){a.preventDefault()}),t.addEventListener("drop",a=>{a.preventDefault(),this.handleDrop(a,2)}),this.computeRelations()})})},__getVirtualTableDefaultFields(e){return JSON.parse(JSON.stringify([{name:"field1",alias:"field1",type:"int",length:0,decimal:0,required:!1,isPrimaryKey:!1,isAutoIncrement:!1,comment:"Virtual field 1",isVirtual:!0,visible:!0,table:e},{name:"field2",alias:"field2",type:"int",length:0,decimal:0,required:!1,isPrimaryKey:!1,isAutoIncrement:!1,comment:"Virtual field 2",isVirtual:!0,visible:!0,table:e},{name:"field3",alias:"field3",type:"int",length:0,decimal:0,required:!1,isPrimaryKey:!1,isAutoIncrement:!1,comment:"Virtual field 3",isVirtual:!0,visible:!0,table:e}]))},__deleteLine(){const e=this.relationLines.find(t=>t.id===this.model.selectedLineId);if(e.type==="join"){const t=this.model.joins.findIndex(n=>n.table.id===e.table.id&&n.targetTable.id===e.targetTable.id),a=this.model.joins[t],s=a.ons.findIndex(n=>n.field.name===e.field.name&&n.targetField.name===e.targetField.name);s!==-1&&a.ons.splice(s,1),a.ons.length===0&&this.model.joins.splice(t,1)}else{const t=this.model.aggregates.findIndex(a=>a.table.id===e.table.id&&a.targetTable.id===e.targetTable.id&&a.field.name===e.field.name&&a.targetField.name===e.targetField.name);this.model.aggregates.splice(t,1)}this.model.selectedLineId=null,this.$emit("change"),this.render()},__deleteTable(){const e=this.model.tables.findIndex(s=>s.id===this.model.selectedTableId),t=this.model.tables[e];let a=Promise.resolve();t.type==="MAIN"&&this.model.tables.length>1&&(a=this.deleteConfirm("Deleting the main table will delete all the schedules and associations. Are you sure to delete it?")),a.then(()=>{if(t.type==="MAIN"){this.model.tables=[],this.model.joins=[],this.model.aggregates=[],this.$emit("change");return}this.model.joins=this.model.joins.filter(s=>!(s.table.id===this.model.selectedTableId||s.targetTable.id===this.model.selectedTableId)),this.model.aggregates=this.model.aggregates.filter(s=>!(s.table.id===this.model.selectedTableId||s.targetTable.id===this.model.selectedTableId)),this.model.tables.splice(e,1),this.$emit("change")}).catch(()=>{})},__addJoinRelation(){if(this.relationRuntime.table.id===this.relationRuntime.targetTable.id){this.$tip.warning("The join relationship cannot be created.");return}let e=this.model.joins.find(t=>t.table.id===this.relationRuntime.table.id&&t.targetTable.id===this.relationRuntime.targetTable.id);e==null&&(e={table:this.relationRuntime.table,targetTable:this.relationRuntime.targetTable,joinType:"INNER JOIN",relation:"ONE-TO-ONE",ons:[]},this.model.joins.push(e)),e.ons.push({field:this.relationRuntime.field,targetField:this.relationRuntime.targetField,relation:"AND"}),this.computeRelations()},__addAggregate(){if(this.relationRuntime.table.id===this.relationRuntime.targetTable.id){this.$tip.warning("The aggregate relationship cannot be created.");return}let e=this.model.aggregates.find(t=>t.table.id===this.relationRuntime.table.id&&t.targetTable.id===this.relationRuntime.targetTable.id&&(t.field.name===this.relationRuntime.field.name||t.targetField.name===this.relationRuntime.targetField.name));e==null&&(e={table:this.relationRuntime.table,targetTable:this.relationRuntime.targetTable,field:this.relationRuntime.field,targetField:this.relationRuntime.targetField,function:"COUNT"},this.model.aggregates.push(e)),this.computeRelations()},__getFieldPosition(e,t,a=!0){const n=this.$refs.stage.getNode().getAbsolutePosition();let l=e.fields.findIndex(g=>g.visible&&g.name===t.name);if(l===-1)return null;let o=l;for(let g=0;g<o;g++)e.fields[g].visible||l--;if(l===-1)return null;const c=e.x+(a?200:0)-n.x,b=e.y+this.fieldHeight+(l+1)*this.fieldHeight-15-n.y;return{x:c,y:b}}},mounted(){this.render()}},fe={class:"wrap"};function _e(e,t,a,s,n,l){const o=m("Table"),c=m("RelationLine"),b=m("v-layer"),g=m("v-stage");return u(),f(T,null,[a.model.tables.length===0?(u(),f("div",{key:0,class:"empty-tip",onDragover:t[1]||(t[1]=q(()=>{},["prevent"])),onDrop:t[2]||(t[2]=i=>l.handleDrop(i,1))},[r("div",fe,[r("p",null,_(e.$t("database.dragTip")),1),r("p",null,_(e.$t("common.or")),1),r("p",null,[r("em",{onClick:t[0]||(t[0]=(...i)=>l.confirmCreateVirtualTable&&l.confirmCreateVirtualTable(...i))},_(e.$t("database.createVirtualTableTip")),1)])])],32)):M("",!0),r("div",{class:"stage-wrap",tabindex:"-1",onKeyup:t[5]||(t[5]=X((...i)=>l.handleDelete&&l.handleDelete(...i),["delete"]))},[n.rendered?(u(),C(g,{key:0,ref:"stage",config:n.configKonva,onMouseup:t[4]||(t[4]=i=>e.$refs.stage.getNode().draggable(!0)),onClick:l.globalClick},{default:p(()=>[(u(!0),f(T,null,w(a.model.tables,i=>(u(),C(o,{ref_for:!0,ref:i.id,key:i.name,"field-height":a.fieldHeight,x:i.x,y:i.y,table:i,relations:a.model.joins,selected:a.model.selectedTableId===i.id,onDragmove:l.moveTable,"onField:mousedown":l.handleFieldMouseDown,"onField:mouseup":l.handleFieldMouseUp,"onTable:select":l.handleTableSelect,"onTable:preview":l.handleTablePreview},null,8,["field-height","x","y","table","relations","selected","onDragmove","onField:mousedown","onField:mouseup","onTable:select","onTable:preview"]))),128)),d(b,null,{default:p(()=>[(u(!0),f(T,null,w(n.relationLines,i=>(u(),C(c,{key:i.id,"line-type":i.type,start:i.start,end:i.end,selected:a.model.selectedLineId===i.id,onSelect:y=>l.handleLineSelect(i),onUnselect:t[3]||(t[3]=y=>a.model.selectedLineId=null)},null,8,["line-type","start","end","selected","onSelect"]))),128))]),_:1})]),_:1},8,["config","onClick"])):M("",!0)],32)],64)}const pe=V(be,[["render",_e],["__scopeId","data-v-bb9edeec"]]);const ye={name:"SQLLine",props:{type:{},indent:{default:0},visible:{default:!0}}},ve={class:"code"},Te={class:"opera"},Ce={key:0},Me={key:1},Ve={key:2};function we(e,t,a,s,n,l){const o=m("el-button");return u(),f("div",{class:k(["sql-line",{"sql-line__hide":!a.visible}]),style:R({"padding-left":a.indent+"px"})},[r("p",ve,[Y(e.$slots,"default",{},void 0,!0)]),r("ul",Te,[a.type==="field"?(u(),f("li",Ce,[I(d(o,{icon:"View",onClick:t[0]||(t[0]=c=>e.$emit("update:visible",!1))},null,512),[[E,a.visible]]),I(d(o,{icon:"Hide",onClick:t[1]||(t[1]=c=>e.$emit("update:visible",!0))},null,512),[[E,!a.visible]])])):M("",!0),a.type==="virtual-field"?(u(),f("li",Me,[d(o,{icon:"Delete",onClick:t[2]||(t[2]=c=>e.$emit("field:delete",!1))})])):M("",!0),a.type==="select"?(u(),f("li",Ve,[d(o,{icon:"Plus",onClick:t[3]||(t[3]=c=>e.$emit("field:create"))})])):M("",!0)])],6)}const N=V(ye,[["render",we],["__scopeId","data-v-baeab383"]]);const Se={name:"DynamicWidthInput",props:{modelValue:{}},data(){return{value:this.modelValue}},watch:{modelValue:{immediate:!0,handler(){this.value=this.modelValue}}},methods:{handleInput(e){this.value=e.target.innerText,this.$emit("update:modelValue",e.target.innerText),this.$emit("change",e.target.innerText)},handleBlur(){this.$emit("update:blur-model-value",this.value),this.$emit("blur")}}};function ke(e,t,a,s,n,l){return u(),f("div",{class:"dynamic-width-input",contenteditable:!0,onInput:t[0]||(t[0]=(...o)=>l.handleInput&&l.handleInput(...o)),onBlur:t[1]||(t[1]=(...o)=>l.handleBlur&&l.handleBlur(...o))},_(a.modelValue),33)}const U=V(Se,[["render",ke],["__scopeId","data-v-208cca2b"]]);const De={name:"SQLLineKeywordSelect",props:{data:{type:Array,required:!0}}};function Le(e,t,a,s,n,l){const o=m("el-option"),c=m("el-select");return u(),C(c,null,{default:p(()=>[(u(!0),f(T,null,w(a.data,b=>(u(),C(o,{key:b,value:b,label:b},null,8,["value","label"]))),128))]),_:1})}const j=V(De,[["render",Le],["__scopeId","data-v-919f06f3"]]);const Fe={name:"QueryResultPreview",data(){return{loading:!1,visible:!1,pagination:{page:1,capacity:100,total:0},sql:"",columns:[],result:[]}},computed:{...$(["currentDatabase"])},methods:{open(e,t){this.visible=!0,this.loading=!0,this.columns=e.map(a=>a.substring(1,a.length-1)),this.result=[],this.sql=t,this.fetchList()},fetchList(){Q({database:this.currentDatabase,sql:this.__getCountSql()}).then(e=>(this.pagination.total=e[0].total,Q({database:this.currentDatabase,sql:this.__getPaginationSql()}))).then(e=>{this.result=e}).catch(e=>{this.$tip.apiFailed(e)}).finally(()=>{this.loading=!1})},getColumnWidth(e){let t=W(e)+24,a=t;const s=this.result[0];if(s!=null){const n=s[e];n!=null&&(a=W(n)+24)}return Math.max(t,a)},handleCurrentChange(e){this.pagination.page=e,this.fetchList()},handleSizeChange(e){this.pagination.capacity=e,this.fetchList()},__getPaginationSql(){let e=(this.pagination.page-1)*this.pagination.capacity;return`${this.sql} LIMIT ${e}, ${this.pagination.capacity}`},__getCountSql(){return`SELECT COUNT(*) AS total FROM (${this.sql}) _count`}}},Ie={class:"toolbar"};function $e(e,t,a,s,n,l){const o=m("el-pagination"),c=m("el-table-column"),b=m("el-table"),g=m("el-dialog"),i=P("loading");return u(),C(g,{"custom-class":"sql-preview",title:e.$t("database.queryResult"),width:"1000px",modelValue:n.visible,"onUpdate:modelValue":t[0]||(t[0]=y=>n.visible=y),"append-to-body":""},{default:p(()=>[r("div",Ie,[d(o,{background:"","page-sizes":[10,20,50,100,200,500],"default-page-size":100,layout:"total, prev, pager, next, sizes",total:n.pagination.total,onCurrentChange:l.handleCurrentChange,onSizeChange:l.handleSizeChange},null,8,["total","onCurrentChange","onSizeChange"])]),I((u(),C(b,{data:n.result,border:""},{default:p(()=>[(u(!0),f(T,null,w(n.columns,y=>(u(),C(c,{key:y,prop:y,label:y,"min-width":l.getColumnWidth(y)},null,8,["prop","label","min-width"]))),128))]),_:1},8,["data"])),[[i,n.loading]])]),_:1},8,["title","modelValue"])}const xe=V(Fe,[["render",$e]]),qe={name:"SQLJoin",components:{DynamicWidthInput:U,SQLLine:N,SQLLineKeywordSelect:j},props:{table:{required:!0},joins:{required:!0},indentLevel:{default:1}},computed:{indent(){return`${(this.indentLevel-1)*20}px`},currentTableJoins(){return this.joins.filter(e=>e.table.id===this.table.id)}},methods:{handleChange(){this.$emit("change")}}},Re={class:"hidden"},Ne=r("em",null,"ON",-1),Ue={class:"join-ons"},je=r("span",null,".",-1),Ae=r("span",null,"=",-1),Ee=r("span",null,".",-1);function Qe(e,t,a,s,n,l){const o=m("SQLLineKeywordSelect"),c=m("DynamicWidthInput"),b=m("SQLLine");return u(),f("ul",{class:"joins",style:R({"padding-left":l.indent})},[(u(!0),f(T,null,w(l.currentTableJoins,g=>(u(),f("li",null,[d(b,null,{default:p(()=>[d(o,{modelValue:g.joinType,"onUpdate:modelValue":i=>g.joinType=i,data:["INNER JOIN","LEFT JOIN","RIGHT JOIN","OUTER JOIN"],class:"keyword",style:{width:"100px"},onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"]),r("span",Re,_(g.joinType),1),r("span",null,_(g.targetTable.name),1),d(c,{modelValue:g.targetTable.alias,"onUpdate:modelValue":i=>g.targetTable.alias=i,onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"]),Ne,d(o,{modelValue:g.relation,"onUpdate:modelValue":i=>g.relation=i,data:["ONE-TO-ONE","ONE-TO-MANY","MANY-TO-ONE"],class:"relation",style:{width:"115px"},onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:2},1024),r("ul",Ue,[(u(!0),f(T,null,w(g.ons,(i,y)=>(u(),C(b,{indent:"20"},{default:p(()=>[y!==0?(u(),C(o,{key:0,modelValue:i.relation,"onUpdate:modelValue":h=>i.relation=h,data:["AND","OR"],style:{width:"40px"},onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"])):M("",!0),d(c,{modelValue:g.targetTable.alias,"onUpdate:modelValue":h=>g.targetTable.alias=h,onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"]),je,r("span",null,_(i.targetField.name),1),Ae,d(c,{modelValue:g.table.alias,"onUpdate:modelValue":h=>g.table.alias=h,onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"]),Ee,r("span",null,_(i.field.name),1)]),_:2},1024))),256))])]))),256))],4)}const We=V(qe,[["render",Qe]]),Oe={name:"SQL",components:{SQLJoin:We,DynamicWidthInput:U,SQLLine:N,SQLLineKeywordSelect:j},props:{table:{required:!0},joins:{required:!0},aggregates:{required:!0}},computed:{currentTableJoins(){return this.joins.filter(e=>e.table.id===this.table.id)},visibleFields(){let e=new Set;for(const t of this.table.fields)t.table=this.table,t.alias=t.alias||t.name,e.add(t);for(const t of this.joins)if(t.table.id===this.table.id)for(const a of t.targetTable.fields)a.table=t.targetTable,a.alias=a.alias||a.name,e.add(a);return[...e]}},methods:{handleChange(){this.$emit("field:change")},createVirtualField(){this.table.fields.push({name:"virtual1",alias:"virtual1",type:"int",comment:"Virtual field 1",isVirtual:!0,visible:!0}),this.handleChange()},getAggregate(e){const t=this.aggregates.find(a=>a.field.name===e.name);return t??null},fieldVisibleChange(){this.$emit("field:change")},deleteVirtualField(e){this.table.fields.splice(e,1),this.handleChange()},__getAggregateFunctionWidth(e){return{COUNT:63,SUM:42,AVG:40,MAX:42,MIN:38}[e]}}},Pe=r("em",null,"SELECT",-1),He=r("em",null,"SELECT",-1),ze={class:"hidden"},Je=r("span",null,"(",-1),Be=r("span",null,".",-1),Ke=r("span",null,")",-1),Ge=r("em",null,"FROM",-1),Xe=r("span",null,")",-1),Ye=r("em",null,"AS",-1),Ze=r("span",{class:"comment"},"#",-1),et=r("span",null,".",-1),tt=r("em",null,"AS",-1),lt=r("em",null,"AS",-1),at=r("span",{class:"comment"},"#",-1),nt=r("em",null,"FROM",-1),it=r("em",null,"AS",-1);function st(e,t,a,s,n,l){const o=m("SQLLine"),c=m("SQLLineKeywordSelect"),b=m("DynamicWidthInput"),g=m("SQLJoin");return u(),f(T,null,[d(o,{type:"select","onField:create":l.createVirtualField},{default:p(()=>[Pe]),_:1},8,["onField:create"]),(u(!0),f(T,null,w(l.visibleFields,(i,y)=>(u(),f(T,null,[l.getAggregate(i)?(u(),f(T,{key:0},[d(o,{indent:"20",visible:i.visible},{default:p(()=>[S("(")]),_:2},1032,["visible"]),d(o,{indent:"40",visible:i.visible},{default:p(()=>[He]),_:2},1032,["visible"]),d(o,{indent:"60",visible:i.visible},{default:p(()=>[d(c,{modelValue:l.getAggregate(i).function,"onUpdate:modelValue":h=>l.getAggregate(i).function=h,data:["COUNT","SUM","AVG","MAX","MIN"],style:R(`width: ${l.__getAggregateFunctionWidth(l.getAggregate(i).function)}px;`),onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","style","onChange"]),r("span",ze,_(l.getAggregate(i).function),1),Je,d(b,{modelValue:l.getAggregate(i).targetTable.alias,"onUpdate:modelValue":h=>l.getAggregate(i).targetTable.alias=h,onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"]),Be,r("span",null,_(l.getAggregate(i).targetField.name),1),Ke]),_:2},1032,["visible"]),d(o,{indent:"40",visible:i.visible},{default:p(()=>[Ge,r("span",null,_(l.getAggregate(i).targetTable.name),1),d(b,{modelValue:l.getAggregate(i).targetTable.alias,"onUpdate:modelValue":h=>l.getAggregate(i).targetTable.alias=h,onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:2},1032,["visible"]),d(g,{"indent-level":3,joins:a.joins,table:l.getAggregate(i).targetTable},null,8,["joins","table"]),d(o,{indent:"20",type:i.isVirtual?"virtual-field":"field",visible:i.visible,"onUpdate:visible":[h=>i.visible=h,l.fieldVisibleChange],"onField:delete":h=>l.deleteVirtualField(y)},{default:p(()=>[Xe,Ye,d(b,{modelValue:i.alias,"onUpdate:modelValue":h=>i.alias=h},null,8,["modelValue","onUpdate:modelValue"]),r("span",null,_(l.visibleFields.length===y+1?"":","),1),i.isVirtual?(u(),f(T,{key:0},[Ze,d(b,{modelValue:i.type,"onUpdate:modelValue":h=>i.type=h,class:"comment",onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"]),d(b,{modelValue:i.comment,"onUpdate:modelValue":h=>i.comment=h,class:"comment",onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"])],64)):M("",!0)]),_:2},1032,["type","visible","onUpdate:visible","onField:delete"])],64)):(u(),C(o,{key:i.name,type:i.isVirtual?"virtual-field":"field",visible:i.visible,"onUpdate:visible":[h=>i.visible=h,l.fieldVisibleChange],indent:"20","onField:delete":h=>l.deleteVirtualField(y)},{default:p(()=>[d(b,{modelValue:i.table.alias,"onUpdate:modelValue":h=>i.table.alias=h,onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"]),et,i.isVirtual?(u(),f(T,{key:1},[d(b,{"model-value":i.name,"blur-model-value":i.name,"onUpdate:blurModelValue":h=>i.name=h,onBlur:l.handleChange},null,8,["model-value","blur-model-value","onUpdate:blurModelValue","onBlur"]),lt,d(b,{"model-value":i.alias,"blur-model-value":i.alias,"onUpdate:blurModelValue":h=>i.alias=h,onBlur:l.handleChange},null,8,["model-value","blur-model-value","onUpdate:blurModelValue","onBlur"]),r("span",null,_(l.visibleFields.length===y+1?"":","),1),at,d(b,{modelValue:i.type,"onUpdate:modelValue":h=>i.type=h,class:"comment",onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"]),d(b,{modelValue:i.comment,"onUpdate:modelValue":h=>i.comment=h,class:"comment",onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"])],64)):(u(),f(T,{key:0},[r("span",null,_(i.name),1),tt,d(b,{modelValue:i.alias,"onUpdate:modelValue":h=>i.alias=h,onChange:l.handleChange},null,8,["modelValue","onUpdate:modelValue","onChange"]),r("span",null,_(l.visibleFields.length===y+1?"":","),1)],64))]),_:2},1032,["type","visible","onUpdate:visible","onField:delete"]))],64))),256)),a.table.isVirtual?M("",!0):(u(),C(o,{key:0},{default:p(()=>[nt,r("span",null,_(a.table.name),1),it,d(b,{modelValue:a.table.alias,"onUpdate:modelValue":t[0]||(t[0]=i=>a.table.alias=i),onChange:l.handleChange},null,8,["modelValue","onChange"])]),_:1})),d(g,{joins:a.joins,table:a.table,onChange:l.handleChange},null,8,["joins","table","onChange"])],64)}const ot=V(Oe,[["render",st]]);const rt={name:"TableSetting",components:{SQL:ot,QueryResultPreview:xe,SQLLineKeywordSelect:j,DynamicWidthInput:U,SQLLine:N},props:{table:{required:!0},joins:{type:Array},aggregates:{type:Array}},computed:{...$(["currentDatabase"]),visibleFields(){let e=new Set;for(const t of this.table.fields)t.table=this.table,t.alias=t.alias||t.name,e.add(t);for(const t of this.joins)if(t.table.id===this.table.id)for(const a of t.targetTable.fields)a.table=t.targetTable,a.alias=a.alias||a.name,e.add(a);return[...e]}},methods:{copy(){Z({sql:this.__getSql().sql}).then(e=>navigator.clipboard.writeText(e)).then(()=>{this.$tip.success(this.$t("common.copySuccessfully"))}).catch(e=>{this.$tip.apiFailed(e)})},execute(){const e=this.__getSql();this.$refs.queryResultPreview.open(e.fields,e.sql,[])},handleChange(){this.$emit("field:change")},__getSql(){let e=[];const t=[];e.push("SELECT");for(const a of this.visibleFields){if(!a.visible)continue;const s=this.getAggregate(a);s!=null?(e.push("(SELECT"),e.push(`${s.function}(${s.targetTable.alias}.${s.targetField.name})`),e.push(`FROM \`${s.targetTable.name}\` AS \`${s.targetTable.alias}\``),e=e.concat(this.__getJoinSql(s.targetTable,this.joins)),e.push(`) AS \`${s.field.alias}\`,`),t.push(`\`${s.field.alias}\``)):(e.push(`\`${a.table.alias}\`.\`${a.name}\` AS \`${a.alias}\`,`),t.push(`\`${a.alias}\``))}return e[e.length-1]=e[e.length-1].substring(0,e[e.length-1].length-1),this.table.isVirtual||e.push(`FROM \`${this.table.name}\` AS \`${this.table.alias}\``),e=e.concat(this.__getJoinSql(this.table,this.joins)),{fields:t,sql:e.join(` `)}},__getJoinSql(e,t){const a=[],s=t.filter(n=>n.table.id===e.id);for(const n of s){a.push(`${n.joinType} \`${n.targetTable.name}\` \`${n.targetTable.alias}\``);for(let l=0;l<n.ons.length;l++){const o=n.ons[l];let c=l===0?"ON ":`${o.relation} `;a.push(`${c}\`${n.targetTable.alias}\`.\`${o.targetField.name}\` = \`${n.table.alias}\`.\`${o.field.name}\``)}}return a},getAggregate(e){const t=this.aggregates.find(a=>a.field.name===e.name);return t??null}}},dt={class:"toolbar"},ut={key:0,class:"wrap"};function ht(e,t,a,s,n,l){const o=m("el-button"),c=m("SQL"),b=m("QueryResultPreview");return u(),f("div",{class:k(["table-setting",{visible:a.table!=null}])},[r("div",dt,[d(o,{type:"primary",class:"button-copy","data-clipboard-text":"Hello World",onClick:l.copy},{default:p(()=>[S(_(e.$t("common.copy")),1)]),_:1},8,["onClick"]),d(o,{type:"primary",onClick:l.execute},{default:p(()=>[S(_(e.$t("common.execute")),1)]),_:1},8,["onClick"])]),a.table!=null?(u(),f("div",ut,[d(c,{aggregates:a.aggregates,joins:a.joins,table:a.table,"onField:change":l.handleChange},null,8,["aggregates","joins","table","onField:change"])])):M("",!0),d(b,{ref:"queryResultPreview"},null,512)],2)}const ct=V(rt,[["render",ht],["__scopeId","data-v-a847767e"]]);function O(e,t,a,s){if(!/^[a-zA-Z][a-zA-Z0-9_]+$/.test(t)){a(new Error(s));return}a()}function Jt(e,t,a,s){if(!/^(?!0)(\d+)\.(\d+)\.(\d+)/.test(t)){a(new Error(s));return}a()}const gt={name:"TableLibrary",components:{Empty:ee,InnerRouterView:de,InnerRouterViewWindow:ue},props:{queryModels:{required:!0},tables:{},tablesLoading:{required:!0},currentModel:{}},data(){return{newModel:{name:"",comment:""},editModel:{id:null,name:"",comment:""}}},computed:{...$(["currentDatabase"])},methods:{getRules(){return{name:[{required:!0,message:this.$t("form.isRequired",{value:this.$t("database.modelName")})},{validator:(e,t,a)=>O(e,t,a,this.$t("form.isIncorrect",{field:this.$t("database.modelName")}))}]}},checkTableName:O,handleDragStart(e){this.$emit("table:drag",e)},createQueryModel(){this.$refs.routerViewWindow.push("create-model");for(const e in this.newModel)this.newModel[e]="";this.$nextTick(()=>{this.$refs.createForm.clearValidate()})},updateModel(e){for(const t in this.editModel)this.editModel[t]=e[t];this.$refs.routerViewWindow.push("update-model"),this.$nextTick(()=>{this.$refs.createForm.clearValidate()})},confirmUpdate(){this.$refs.editForm.validate(e=>{e&&H({database:this.currentDatabase,model:this.editModel}).then(()=>{Object.assign(this.currentModel,this.editModel),this.$refs.routerViewWindow.back()}).catch(t=>{this.$tip.apiFailed(t)})})},confirmCreate(){this.$refs.createForm.validate(e=>{if(!e)return;const t={...this.newModel,lineType:"join",tables:[],joins:[],aggregates:[]};te({database:this.currentDatabase,model:t}).then(a=>{t.id=a,this.queryModels.unshift(t),this.selectModel(t),this.$refs.routerViewWindow.back()}).catch(a=>{this.$tip.apiFailed(a)})})},deleteModel(e){this.deleteConfirm(this.$t("database.deleteModelTip",{modelName:e.name})).then(()=>{le({database:this.currentDatabase,model:e.id}).then(()=>{const t=this.queryModels.findIndex(a=>a.id===e.id);if(t!==-1){const a=this.queryModels[t];this.queryModels.splice(t,1),this.$emit("deleted",a)}this.$tip.success(this.$t("common.deleteSuccessfully"))}).catch(t=>{this.$tip.apiFailed(t)})}).catch(()=>{})},selectModel(e){this.$emit("update:currentModel",e)}}},mt={class:"table-library"},bt={class:"block"},ft={class:"header",slot:"title"},_t={key:0,class:"model-list"},pt=["onClick"],yt=["onClick"],vt=["onClick"],Tt={class:"create-model-form"},Ct={class:"opera"},Mt={class:"create-model-form"},Vt={class:"opera"},wt={class:"block table-list-wrap"},St={class:"header"},kt={class:"table-list"},Dt=["onDragstart"];function Lt(e,t,a,s,n,l){const o=m("el-button"),c=m("Edit"),b=m("el-icon"),g=m("Delete"),i=m("Empty"),y=m("InnerRouterView"),h=m("el-input"),D=m("el-form-item"),A=m("el-form"),K=m("InnerRouterViewWindow"),G=P("loading");return u(),f("div",mt,[r("div",bt,[d(K,{ref:"routerViewWindow",default:"query-models"},{default:p(()=>[d(y,{name:"query-models"},{default:p(()=>[r("div",ft,[r("h4",null,_(e.$t("database.queryModels")),1),d(o,{type:"primary",icon:"Plus",class:"button-icon",onClick:l.createQueryModel},null,8,["onClick"])]),a.queryModels.length>0?(u(),f("ul",_t,[(u(!0),f(T,null,w(a.queryModels,v=>(u(),f("li",{key:v.name,class:k({selected:a.currentModel!=null&&a.currentModel.id===v.id}),onClick:x=>l.selectModel(v)},[r("label",null,_(v.name),1),r("p",null,_(v.comment),1),r("div",null,[r("span",{onClick:q(x=>l.updateModel(v),["stop"])},[d(b,null,{default:p(()=>[d(c)]),_:1})],8,yt),r("span",{onClick:q(x=>l.deleteModel(v),["stop"])},[d(b,null,{default:p(()=>[d(g)]),_:1})],8,vt)])],10,pt))),128))])):(u(),C(i,{key:1}))]),_:1}),d(y,{name:"create-model",title:e.$t("database.createNewModel")},{default:p(()=>[r("div",Tt,[d(A,{ref:"createForm",model:n.newModel,rules:l.getRules()},{default:p(()=>[d(D,{label:e.$t("common.name"),prop:"name",required:""},{default:p(()=>[d(h,{modelValue:n.newModel.name,"onUpdate:modelValue":t[0]||(t[0]=v=>n.newModel.name=v)},null,8,["modelValue"])]),_:1},8,["label"]),d(D,{label:e.$t("common.remark"),prop:"comment"},{default:p(()=>[d(h,{modelValue:n.newModel.comment,"onUpdate:modelValue":t[1]||(t[1]=v=>n.newModel.comment=v),type:"textarea",rows:2},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"]),r("div",Ct,[d(o,{onClick:t[2]||(t[2]=v=>e.$refs.routerViewWindow.back())},{default:p(()=>[S(_(e.$t("common.cancel")),1)]),_:1}),d(o,{type:"primary",onClick:l.confirmCreate},{default:p(()=>[S(_(e.$t("common.confirmAdd")),1)]),_:1},8,["onClick"])])])]),_:1},8,["title"]),d(y,{name:"update-model",title:e.$t("database.updateModelTitle")},{default:p(()=>[r("div",Mt,[d(A,{ref:"editForm",model:n.editModel,rules:l.getRules()},{default:p(()=>[d(D,{label:e.$t("common.name"),prop:"name",required:""},{default:p(()=>[d(h,{modelValue:n.editModel.name,"onUpdate:modelValue":t[3]||(t[3]=v=>n.editModel.name=v)},null,8,["modelValue"])]),_:1},8,["label"]),d(D,{label:e.$t("common.remark"),prop:"comment"},{default:p(()=>[d(h,{modelValue:n.editModel.comment,"onUpdate:modelValue":t[4]||(t[4]=v=>n.editModel.comment=v),type:"textarea",rows:2},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"]),r("div",Vt,[d(o,{onClick:t[5]||(t[5]=v=>e.$refs.routerViewWindow.back())},{default:p(()=>[S(_(e.$t("common.cancel")),1)]),_:1}),d(o,{type:"primary",onClick:l.confirmUpdate},{default:p(()=>[S(_(e.$t("common.confirmUpdate")),1)]),_:1},8,["onClick"])])])]),_:1},8,["title"])]),_:1},512)]),r("div",wt,[r("div",St,[r("h4",null,_(e.$t("database.tables")),1),d(o,{class:"button-icon",type:"primary",icon:"Refresh",onClick:t[6]||(t[6]=v=>e.$emit("tables:refresh"))})]),I((u(),f("ul",kt,[(u(!0),f(T,null,w(a.tables,v=>(u(),f("li",{key:v.name,draggable:"true",onDragstart:x=>l.handleDragStart(v.name)},[r("label",null,_(v.name),1),r("p",null,_(v.comment),1)],40,Dt))),128))])),[[G,a.tablesLoading]])])])}const Ft=V(gt,[["render",Lt],["__scopeId","data-v-cc8e8759"]]);const It={name:"QueryModelView",components:{OperaDataSourceWindow:ae,DataSourceSelect:ne,TableLibrary:Ft,QueryModelDesigner:pe,TableSetting:ct,RelationLine:z,Table:J},data(){return{loading:{tables:!1},fieldHeight:30,queryModels:[],databases:[],tables:[],lineType:"join",currentDataSource:null,connectError:null,currentModel:null}},computed:{...$(["currentProject","currentDatabase"]),currentTable(){return this.currentModel==null||this.currentModel.previewTableId==null?null:this.currentModel.tables.find(e=>e.id===this.currentModel.previewTableId)},joins(){return this.currentTable==null?[]:this.currentModel.joins},aggregates(){return this.currentTable==null||this.currentTable.type!=="MAIN"?[]:this.currentModel.aggregates}},watch:{currentDatabase(){this.fetchDatabases()}},methods:{handleModelDeleted(e){this.currentModel===e&&this.queryModels.length>0&&(this.currentModel=this.queryModels[0]),this.queryModels.length===0&&(this.currentModel=null)},saveModel(){const e=this.__getModelSettings(this.currentModel);H({database:this.currentDatabase,model:e}).then(()=>{}).catch(t=>{this.$tip.apiFailed(t)})},handleSettingChange(){this.saveModel(),this.$refs.designer.render()},handleDragStart(e){this.currentModel.dragData=this.tables.find(t=>t.name===e)},fetchDatabases(){this.currentModel=null,this.$nextTick(()=>{ie().then(e=>{this.databases=e,this.fetchTables()}).catch(e=>{this.$tip.apiFailed(e)})})},fetchTables(e=!0){this.currentDataSource=this.databases.find(t=>t.id===this.currentDatabase),this.currentDataSource!=null&&(this.loading.tables=!0,se({host:this.currentDataSource.host,port:this.currentDataSource.port,user:this.currentDataSource.username,password:this.currentDataSource.password,database:this.currentDataSource.schema}).then(t=>{this.connectError=null,this.tables=t.map(a=>({...a,alias:a.name,fields:a.fields.map(s=>({...s,isVirtual:!1}))})),e&&this.fetchModels()}).catch(t=>{this.connectError=t.message}).finally(()=>{this.loading.tables=!1}))},fetchModels(){const t=this.databases.find(s=>s.id===this.currentDatabase).models,a=[];this.queryModels=t.map(s=>{if(s.tables=s.tables.map(n=>{const l=this.tables.find(c=>c.name.toLowerCase()===n.name.toLowerCase());if(l==null&&!n.isVirtual)return a.push(n),n;let o=n.fields;return l!=null&&(o=l.fields,o=o.map(c=>{const b=n.fields.find(g=>g.name===c.name);return this.__modelField2field(b,c)}),o=o.filter(c=>c!=null)),{...n,fields:o}}),a.find(n=>n.type==="MAIN")!=null)s.tables=[],s.joins=[],s.aggregates=[];else for(const n of a){s.joins=s.joins.filter(o=>!(o.table===n.id||o.targetTable===n.id)),s.aggregates=s.aggregates.filter(o=>!(o.table===n.id||o.targetTable===n.id));const l=s.tables.findIndex(o=>o.id===n.id);l!==-1&&s.tables.splice(l,1)}return s.joins.map(n=>this.__modelJoin2join(s,n)),s.joins=s.joins.filter(n=>n!=null),s.aggregates.map(n=>this.__modelAggregate2Aggregate(s,n)),s.aggregates=s.aggregates.filter(n=>n!=null),s}),this.queryModels.length>0&&(this.currentModel=this.queryModels[0])},__getModelSettings(e){const t=e.tables.map(n=>({id:n.id,name:n.name,alias:n.alias,comment:n.comment,isVirtual:n.isVirtual,type:n.type,fields:n.fields.map(l=>{const o={};for(const c in l)c==="table"||c.startsWith("__")||(o[c]=l[c]);return o}),x:n.x,y:n.y})),a=e.joins.map(n=>({...n,table:n.table.id,targetTable:n.targetTable.id,ons:n.ons.map(l=>({field:l.field.name,targetField:l.targetField.name,relation:l.relation}))})),s=e.aggregates.map(n=>({table:n.table.id,targetTable:n.targetTable.id,field:n.field.name,targetField:n.targetField.name,function:n.function}));return{id:e.id,name:e.name,comment:e.comment,tables:t,joins:a,aggregates:s}},__modelField2field(e,t){return t!=null&&e==null?{...t,visible:!0,alias:t.name,isVirtual:!1}:t==null&&!e.isVirtual?null:{...e,alias:e.alias,isVirtual:e.isVirtual,type:e.isVirtual?e.type:t.type,comment:e.isVirtual?e.comment:t.comment,visible:e.visible==null?!0:e.visible}},__modelJoin2join(e,t){const a=e.tables.find(l=>l.id===t.table),s=e.tables.find(l=>l.id===t.targetTable);if(a==null||s==null)return null;t.table=a,t.targetTable=s;const n=[];for(const l of t.ons){const o=a.fields.find(b=>b.name.toLowerCase()===l.field.toLowerCase()),c=s.fields.find(b=>b.name.toLowerCase()===l.targetField.toLowerCase());o==null||c==null||n.push({field:o,targetField:c,relation:l.relation})}return n.length===0?null:(t.ons=n,t)},__modelAggregate2Aggregate(e,t){const a=e.tables.find(o=>o.id===t.table),s=e.tables.find(o=>o.id===t.targetTable);if(a==null||s==null)return null;t.table=a,t.targetTable=s;const n=a.fields.find(o=>o.name.toLowerCase()===t.field.toLowerCase()),l=s.fields.find(o=>o.name.toLowerCase()===t.targetField.toLowerCase());return n==null||l==null?null:(t.field=n,t.targetField=l,t)}},created(){this.fetchDatabases()}},B=e=>(oe("data-v-7e8c1ce6"),e=e(),re(),e),$t={class:"database-query-models"},xt={key:0,class:"no-datasource-tip"},qt={class:"tip-wrap"},Rt={key:1,class:"connect-error-tip"},Nt={class:"tip-wrap"},Ut={class:"designer-wrap"},jt={key:0,class:"toolbar"},At={class:"line-types"},Et=B(()=>r("em",{class:"join-line"},null,-1)),Qt=B(()=>r("em",{class:"aggregate-line"},null,-1)),Wt={key:2,class:"no-model-tip"},Ot={class:"tip-wrap"};function Pt(e,t,a,s,n,l){const o=m("DataSourceSelect"),c=m("el-button"),b=m("TableLibrary"),g=m("QueryModelDesigner"),i=m("TableSetting"),y=m("OperaDataSourceWindow");return u(),f("div",$t,[e.currentDatabase==null||e.currentDatabase===""?(u(),f("div",xt,[r("div",qt,[r("h4",null,_(e.$t("database.selectDataSourceTip")),1),d(o,{"model-value":e.currentDatabase,"with-block":!0},null,8,["model-value"])])])):n.connectError!=null?(u(),f("div",Rt,[r("div",Nt,[r("h4",null,_(e.$t("database.dataSourceConnectFailedTip")),1),r("p",null,_(n.connectError),1),d(c,{onClick:t[0]||(t[0]=h=>this.$refs.operaDataSourceWindow.open(this.currentDataSource))},{default:p(()=>[S(_(e.$t("database.editDataSourceInfoTip")),1)]),_:1})])])):(u(),f(T,{key:2},[d(b,{"query-models":n.queryModels,tables:n.tables,"tables-loading":n.loading.tables,"onTable:drag":l.handleDragStart,"current-model":n.currentModel,"onUpdate:currentModel":t[1]||(t[1]=h=>n.currentModel=h),"onTables:refresh":t[2]||(t[2]=h=>l.fetchTables(!1)),onDeleted:l.handleModelDeleted},null,8,["query-models","tables","tables-loading","onTable:drag","current-model","onDeleted"]),r("div",Ut,[n.currentModel!=null?(u(),f("div",jt,[r("ul",At,[r("li",{class:k({selected:n.currentModel.lineType==="join"}),onClick:t[3]||(t[3]=h=>n.currentModel.lineType="join")},[Et,r("label",null,_(e.$t("database.joinLine")),1)],2),r("li",{class:k({selected:n.currentModel.lineType==="aggregate"}),onClick:t[4]||(t[4]=h=>n.currentModel.lineType="aggregate")},[Qt,r("label",null,_(e.$t("database.aggregateLine")),1)],2)])])):M("",!0),n.currentModel!=null?(u(),C(g,{key:1,ref:"designer",model:n.currentModel,"field-height":30,onChange:l.saveModel},null,8,["model","onChange"])):M("",!0),d(i,{table:l.currentTable,joins:l.joins,aggregates:l.aggregates,"onField:change":l.handleSettingChange},null,8,["table","joins","aggregates","onField:change"]),n.queryModels.length===0?(u(),f("div",Wt,[r("div",Ot,[r("h4",null,_(e.$t("database.queryModelEmptyTipTitle")),1),r("p",null,_(e.$t("database.queryModelEmptyTip")),1)])])):M("",!0)])],64)),d(y,{ref:"operaDataSourceWindow",onSuccess:l.fetchDatabases},null,8,["onSuccess"])])}const Bt=V(It,[["render",Pt],["__scopeId","data-v-7e8c1ce6"]]);export{Bt as Q,Jt as c};