1var kn=Object.defineProperty;var Fn=(n,t,s)=>t in n?kn(n,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[t]=s;var R=(n,t,s)=>Fn(n,typeof t!="symbol"?t+"":t,s);import{r as g,j as e,R as _}from"./react-DJo-hRcj.js";import{S as C,B as j,c as b,a3 as Nn,ka as qn,b as ke,P as Fe,g as he,bH as $n,a as w,A as L,k as te,m as ae,r as ne,T as A,a2 as Ye,h as V,bI as Yt,aj as Pn,n as zn,aL as fe,bi as Jt,iA as jt,iz as Bn,a_ as St,bq as Zt,a5 as Gn,j as Vn,I as Un,kb as Kn,kc as Hn,kd as Wn,ke as Qn,kf as Yn,kg as Jn,kh as Zn,E as Xn,a0 as es,aq as ts}from"./index-HmRGQEHV.js";import{I as E,bd as rt,bc as Z,b_ as P,c8 as N,bV as Y,bU as O,bX as ge,bq as xe,be,bW as we,by as je,bY as Ee,cJ as At,bZ as Q,cm as ns,d6 as ss,dP as Xt,d_ as wt,d$ as rs,e0 as as,dU as os,dV as is,dW as ls,dR as cs,e1 as ds,e2 as us,e3 as ms,e4 as hs,dX as ps,dY as fs,dZ as gs,e5 as xs,ak as bs,av as oe,aw as de,ca as Ne,cp as en,cR as ys,ba as js}from"./vendors-D9FTVJXp.js";import{m as Ss,aa as vs,b0 as Is,b1 as Cs,aj as H,ar as Re,ab as Rt,L as _s,ap as Ds,q as tn,B as Es,an as As,az as ws,ac as Rs,C as Oe,af as Ms,cj as Ts,I as nn,al as De,ck as sn,b_ as Ls,cl as Mt,aH as Os,a0 as ks,a9 as rn,cm as Fs,ba as Ns,aq as an,S as qs,E as $s,bZ as Ps}from"./mui-core-CIySj9_k.js";import{H as zs}from"./index-Cn9Cp6DO.js";import{P as ce}from"./Plus-C9bmOFUl.js";import{L as Tt}from"./Layout-lHkxg3IM.js";import{_ as Ae,ak as Se,$ as Qe,a8 as Lt,ah as Bs,W as pe,aZ as Gs,bb as Vs,bc as Us,V as Ks,S as re,ao as Hs,aw as Ws,a7 as Qs,T as ut,Z as Ys,X as on,a1 as mt,ai as Ot}from"./lodash-5mjDUwsr.js";import{D as Be}from"./index-CFSyW3hy.js";import Ge from"./ConfirmDelete-F9U9PgyH.js";import{M as B}from"./index-CwKUy3Cw.js";import{D as Je}from"./DotVertical-pQksgbXA.js";import{K as at,e as Js,L as Zs,f as Xs}from"./useCheckPermissionSidebar-D3ccSZS-.js";import{E as Ze}from"./Edit-Blbz8Uv9.js";import{D as er}from"./Data-SU5Zmf9T.js";import{D as Ve}from"./Delete-DIg5qwZg.js";import{C as me}from"./CheckRole-BYu7n29F.js";import{t as z,a as X,f as ln}from"./toastifyV2-ajHTjSAj.js";import{M as ue}from"./ModalV2-B3Lw--tU.js";import{S as ve}from"./index-DGNfijCx.js";import{B as vt}from"./ButtonSubmit-UbzX-8LF.js";import{F as $}from"./FormLayout-CWWRFKyw.js";import{C as ee}from"./ControlledInput-CyLjPzwd.js";import{S as gt}from"./index-sn2JHX1R.js";import{g as tr,S as nr}from"./SelectionItemButton-Dblz6ty7.js";import"./SharedComponents-R9XUbcB5.js";import{s as It}from"./sanitize-S6gPbizU.js";import{D as cn}from"./LocalStorageManager-DIHYtoBS.js";import{P as dn}from"./Pen-OBDGZ1yV.js";import{T as Xe}from"./Trash-B-gRzLJO.js";import{A as kt}from"./index-BXXaGjYJ.js";import{D as un}from"./DataModelQueryRepository-D_B_nukt.js";import{F as Me}from"./index-DiAcH7Dv.js";import{S as le}from"./index-SbN2OCr-.js";import{F as se}from"./index-D95ttBvP.js";import{A as sr}from"./Alert-CjQAGgGJ.js";import{C as Ct,I as nt}from"./useUrlParams-BXmEcjdH.js";import{A as rr}from"./AddLink-BIJGhmrG.js";import{U as ar}from"./Unpublish-ConV_0Ko.js";import{g as mn}from"./getSchemas-CTUP4vdi.js";import{w as hn}from"./withSuspense-B-VWLJlr.js";import{T as or}from"./index-CrrZ2dt4.js";import{D as ir,S as lr}from"./DataModelProperties-13j3Ujj0.js";import{g as cr}from"./handleStrapiResponse-CVeQxfuR.js";import{b as dr}from"./cubeClient-Ck6Hiue4.js";import{D as ur}from"./index-BrkUKMu4.js";import{f as mr,c as hr}from"./StyleDataGrid-edvJPIkc.js";import{S as ze}from"./Search-B65Y6qYp.js";import{C as _t}from"./Copy-Bf3Cd1I3.js";import{C as pr}from"./CheckCircle-OoYQIX8F.js";import{E as fr}from"./EmptyTray-CG9bRkIl.js";import{C as gr}from"./ChevronRight-B4jHwrD4.js";import{L as xr,a as br,A as pn}from"./Project-DlhDQHoA.js";import{M as yr}from"./ModalTriggerButtonV2-CUKHT8Kk.js";import{T as jr}from"./index-d7XnxQEx.js";import{S as Sr}from"./selectFieldV2-D7q2bZLc.js";import{C as vr}from"./index-CJxaahUi.js";import"./mui-x-BIGgJFSO.js";import"./index-DJ8lzLr3.js";import"./getTenantId-BCRwxyc4.js";import"./languageManager-kFJuVfzY.js";import"./index-QNzS2lw3.js";import"./DashboardQueryRepository-rzvXeoKZ.js";import"./Search-DN2UMn43.js";import"./Building-D1EpsYc0.js";import"./Check-CB4u6cLS.js";import"./LocalStorageManager-Cf9EMmua.js";import"./constants-BhQb0AAi.js";import"./getHttpStatusCode-D6Fy-dO9.js";import"./CheckMarkIcon-DjhXrgFj.js";import"./org-switch-rules-CALv74Cz.js";import"./LogoSkeleton-xtVwDN2G.js";import"./index-Bv-w_pZ0.js";import"./index-DCp9VymZ.js";import"./index-Dpb_-CSh.js";function Ir({key:n,icon:t,children:s,size:r="medium",sx:a,...i}){const l={...a,...tr(r)};return g.createElement(Ss,{...i,key:n,sx:l},t&&e.jsx(vs,{sx:{minWidth:"unset !important"},children:t}),s)}function Cr({children:n,value:t,index:s,...r}){const a=t===s;return e.jsx(C,{direction:"column",role:"tabpanel",id:`tabpanel-${s}`,"aria-labelledby":`tab-${s}`,sx:{flex:1,minHeight:0,display:a?"flex":"none"},...r,children:a&&e.jsx(C,{direction:"column",sx:{flex:1,minHeight:0},children:n})})}function _r(n){return{id:`tab-${n}`,"aria-controls":`tabpanel-${n}`}}const fn=({tabs:n,fullWidth:t,tabsWidth:s="full",value:r,onChange:a})=>{const[i,l]=g.useState(0),o=r!==void 0,d=o?r:i,c=(u,m)=>{o?a?.(m):l(m)};return e.jsxs(C,{direction:"column",sx:{width:"100%",height:"100%",flex:1,minHeight:0},children:[e.jsx(j,{sx:{borderBottom:`1px solid ${b.border.neutral.border1}`,flexShrink:0},children:e.jsx(Is,{className:"custom_tabs",value:d,onChange:c,"aria-label":"custom tabs",sx:{...s==="fit-content"&&{width:"min-content"}},children:n.map((u,m)=>e.jsx(Cs,{sx:{flex:t?1:"auto"},label:u.label,..._r(m)},m))})}),n.map((u,m)=>e.jsx(Cr,{value:d,index:m,children:u.content},m))]})},xt={FACT_TABLE:{label:"Fact table",value:"FACT_TABLE"},DIMENSION_TABLE:{label:"Dimension table",value:"DIMENSION_TABLE"},getDisplayName:n=>!n||!xt[n]?"No data":xt[n].label};function Dr({projectId:n,tenantId:t,repoId:s,onAction:r}){const{t:a}=E(),i=rt(),[l,o]=g.useState(null),d=(u,m)=>{o({el:u.currentTarget,id:m})},c=()=>{o(null)};return[{field:"name",headerName:a("name"),flex:3,minWidth:200,renderCell:u=>e.jsx(Nn,{colorless:!0,to:Z(qn,{id:n,repoId:s,tenantId:t,schemaId:u.row.id}),children:u.value})},{field:"displayName",headerName:a("physic_table_name","Physical Table Name"),minWidth:200,flex:2,renderCell:u=>e.jsx(H,{title:u.value,children:e.jsx("span",{children:u.value})})},{field:"description",headerName:a("description"),minWidth:200,flex:2,renderCell:u=>e.jsx(H,{title:u.value,children:e.jsx("span",{children:u.value})})},{field:"schemaType",headerName:a("type"),minWidth:120,flex:2,valueGetter(u){return xt.getDisplayName(u)}},{field:"primaryKey",headerName:a("primary_key"),width:120,renderCell:u=>u.value.find(f=>f?.primaryKey)?.name??"",sortable:!1},{field:"dimensionsCount",headerName:a("dimensions"),width:120,type:"number"},{field:"actions",headerName:a("actions"),align:"center",width:80,renderCell:u=>e.jsxs(me,{action:Fe.data_model["read-data_model"],subject:{name:ke.data_model,id:s},children:[e.jsx(j,{cursor:"pointer",onClick:m=>
1d(m,u.row.id),children:e.jsx(Je,{sx:{width:16,height:16,color:he.ic.normal.tertiary}})}),e.jsxs(Re,{anchorEl:l?.el,open:u.row.id===l?.id,onClose:c,anchorOrigin:{vertical:"center",horizontal:"left"},transformOrigin:{vertical:"center",horizontal:"right"},children:[e.jsx(B,{icon:e.jsx(at,{}),text:a("set_primary_key"),onClick:()=>{r("setKey",u.row),c()}}),e.jsx(B,{icon:e.jsx(Ze,{}),text:a("button.edit"),onClick:()=>{r("edit",u.row),c()}}),u.row.dataset&&e.jsx(B,{icon:e.jsx(er,{}),text:a("open_original_dataset"),onClick:()=>{const{row:{dataset:m}}=u;m?.id&&i.push(Z($n,{id:n,datasetId:m.id,tenantId:t})),c()}}),e.jsx(B,{icon:e.jsx(Ve,{}),text:a("button.delete"),isDelete:!0,onClick:()=>{r("delete",u.row),c()}})]})]},`read-data-model-${u.id}`),sortable:!1}]}class Dt{constructor({projectId:t,repositoryId:s}){R(this,"deleteSchemaMutation",({onSuccess:t=()=>{},onError:s=()=>{}}={})=>({mutationFn:r=>w.delete(`/v1/repositories/${this.repositoryId}/schema/${r}`),onSuccess:r=>{t&&t(r),this.queryClient.invalidateQueries(["data-roles",this.repositoryId]),this.queryClient.invalidateQueries(["schemas",this.repositoryId])},onError:r=>{s&&s(r)}}));this.queryClient=P(),this.projectId=t,this.repositoryId=s}updateSchemaMutation(t){return{mutationKey:["schema",t],mutationFn:s=>w.put(`/v1/repositories/${this.repositoryId}/schemata/${t}`,{data:s}),onSuccess:()=>{this.queryClient.invalidateQueries(["project",this.projectId,"schema"]),this.queryClient.invalidateQueries(["schemas",this.repositoryId]),this.queryClient.invalidateQueries(["schema",t])}}}}function gn(n){const{t}=E(),{id:s,tenantId:r}=N(),a="primaryKeyName",i=Ae(n.schemaItem,"primaryKey",[]),l=i.find(m=>m?.primaryKey===!0)||{},o=Y({defaultValues:{primaryKeyName:l?.name}}),d=o.watch(a),c=O(m=>w.post(`/repository/${n.repoId}/schema/${n.schemaItem?.id}/set-primary-key`,{field:m})),u=async()=>{await o.trigger();const m=i.find(h=>h?.name===d)?.id,f={tenantId:r,workspaceId:s,eventType:ae["click-button"],properties:{dataModelId:n.repoId,schemaId:n.schemaItem?.id,fieldId:m}};te({...f,eventName:ne.DATA_MODEL_SCHEMA_SET_PK}),te({...f,eventName:ne.DATA_MODEL_SCHEMA_UPDATE}),await z(c.mutateAsync(m)),n.onSuccess?.(),n.onClose?.()};return e.jsx(ue,{...n,title:t("set_primary_key"),actions:e.jsxs(C,{direction:"row",sx:{gap:2,justifyContent:"flex-end",width:"100%"},children:[e.jsx(L,{variant:"tertiary",size:"md",disabled:c.isLoading,onClick:n.onClose,children:t("button.cancel")}),e.jsx(L,{variant:"primary",size:"md",disabled:c.isLoading,onClick:u,children:t("button.save")})]}),children:e.jsx(ge,{...o,children:e.jsx(ve,{name:a,label:t("primary_key"),placeholder:t("select2"),options:i.map(m=>({label:m?.name,value:m?.name})),fullWidth:!0})})})}function Er(n){const{schemaId:t,schema:s,ps:r,repositoryId:a,onClose:i}=n,{id:l,tenantId:o}=N(),{t:d}=E(),c=[{label:"Fact table",value:"FACT_TABLE"},{label:"Dimension table",value:"DIMENSION_TABLE"}],u=Y({defaultValues:{name:s.name,schemaType:s.schemaType,description:s.description||""},mode:"onChange"}),m=new Dt({projectId:l,repositoryId:a}),f=O(m.updateSchemaMutation(t)),h=p=>(te({eventName:ne.DATA_MODEL_SCHEMA_UPDATE,eventType:ae["click-button"],tenantId:o,workspaceId:l,properties:{dataModelId:a,schemaId:t,schemaType:p.schemaType}}),z(f.mutateAsync({name:p.name,schemaType:p.schemaType,description:p.description})).then(r.close));return _.createElement(ge,{...u},_.createElement("form",{onSubmit:u.handleSubmit(h)},_.createElement($,null,_.createElement(ee,{name:"name",label:d("name"),placeholder:d("new_schema_name"),autoFocus:!0,rules:{required:d("name_is_required",{name:d("name")}),maxLength:{value:255,message:d("max_length_exceeded",{count:255})}}}),_.createElement(gt,{formContext:u,name:"schemaType",label:d("type"),placeholder:d("select3"),options:c,defaultValue:s.schemaType}),_.createElement(ee,{name:"description",label:d("description"),placeholder:d("about_placeholder",{name:d("schema")}),multiline:!0,rows:3,maxLength:1e3,rules:{maxLength:{value:1e3,message:d("max_length_exceeded",{count:1e3})}}})),_.createElement($.Action,{justifyContent:"flex-end",gap:1},_.createElement(L,{variant:"tertiary",size:"md",onClick:i},d("button.cancel")),_.createElement(vt,{variant:"primary",size:"md",loading:f.isLoading,disabled:!u.formState.isDirty},d("button.save_change")))))}function Ar(n){const{t}=E();return e.jsx(ue,{...n,title:t("edit_schema"),children:e.jsx(Er,{schemaId:n.schemaItem?.
1id,schema:n.schemaItem,repositoryId:n.repoId,onClose:n.onClose,ps:{close(){n.onSuccess?.(),n.onClose?.()}}})})}function wr(n){const{t}=E(),{schemaItem:s,repoId:r,onSuccess:a,onClose:i}=n,l=new Dt({projectId:null,repositoryId:r}),o=Y({defaultValues:{description:s?.description||""}}),d=O(l.updateSchemaMutation(s?.id)),c=u=>z(d.mutateAsync({description:u.description})).then(()=>{a?.(),i?.()});return e.jsx(ue,{...n,title:t("edit_field"),children:e.jsx(ge,{...o,children:e.jsxs("form",{onSubmit:o.handleSubmit(c),children:[e.jsx($,{children:e.jsx(ee,{name:"description",label:t("description"),placeholder:t("about_placeholder",{name:t("field")}),multiline:!0,rows:4,autoFocus:!0,maxLength:1e3,rules:{maxLength:{value:1e3,message:t("max_length_exceeded",{count:1e3})}}})}),e.jsxs($.Action,{justifyContent:"flex-end",gap:1,children:[e.jsx(L,{variant:"tertiary",size:"md",onClick:i,children:t("button.cancel")}),e.jsx(vt,{variant:"contained",size:"md",loading:d.isLoading,children:t("button.save_change")})]})]})})})}function Ft({items:n,checked:t,title:s,numberOfChecked:r,onToggle:a,onToggleAll:i}){const{t:l}=E();return e.jsxs(C,{direction:"column",flex:1,sx:{borderTopLeftRadius:1,borderTopRightRadius:1,width:"40%"},children:[e.jsx(j,{sx:{bgcolor:b.background.neutral.surface1},children:e.jsx(Ir,{sx:{minHeight:60},icon:e.jsx(Ye,{onClick:i(n,s),checked:r===n.length&&n.length!==0,indeterminate:r!==n.length&&r!==0,inputProps:{"aria-label":"all items selected"}}),children:e.jsx(Rt,{primary:e.jsx(A,{variant:"bodySmSemibold",children:s}),secondary:e.jsx(A,{variant:"bodySmRegular",sx:{color:b.content.neutral.neutralMedium},children:`${r}/${n.length} ${l("selected")}`})})})}),e.jsx(_s,{sx:{overflowY:"auto",borderRadius:0,maxHeight:230,marginTop:1},disablePadding:!0,dense:!0,component:"div",role:"list",children:n.map(o=>{const d=`transfer-list-all-item-${o.id}-label`;return e.jsx(nr,{role:"listitem",onClick:a(o,s),icon:e.jsx(Ye,{checked:t.indexOf(o)!==-1,tabIndex:-1,disableRipple:!0,inputProps:{"aria-labelledby":d}}),children:e.jsx(H,{title:o.name,children:e.jsx(Rt,{id:d,primaryTypographyProps:{noWrap:!0},primary:e.jsx(A,{variant:"bodySmRegular",children:o.name})})})},o.id)})})]})}const Pe=(n,t)=>n.filter(s=>t.indexOf(s)===-1),ht=(n,t)=>n.filter(s=>t.indexOf(s)!==-1),Rr=(n,t)=>[...n,...Pe(t,n)];function Mr({handleSetValues:n,options:t=[]}){const{t:s}=E(),[r,a]=_.useState([]),[i,l]=_.useState(t),[o,d]=_.useState([]);_.useEffect(()=>{i.length<1&&o.length<1&&l(t)},[t]);const c=ht(r,i),u=ht(r,o),m=y=>{const S=o.filter(v=>y.find(D=>D.id===v.id));n(S)},f=(y,S)=>()=>{const v=r.indexOf(y),D=[...r];v===-1?D.push(y):D.splice(v,1),a(D),S===s("target")&&m(D)},h=y=>ht(r,y).length,p=(y,S)=>()=>{let v;h(y)===y.length?v=Pe(r,y):v=Rr(r,y),a(v),S===s("target")&&m(v)},x=()=>{d(o.concat(c)),l(Pe(i,c));const y=Pe(r,c);a(y),m(y)},I=()=>{l(i.concat(u)),d(Pe(o,u));const y=Pe(r,u);a(y),m(y)};return _.createElement(C,{direction:"row",alignItems:"flex-start",sx:{gap:2,height:"300px"}},_.createElement(Ft,{items:i,title:s("source"),checked:r,onToggleAll:p,numberOfChecked:h(i),onToggle:f}),_.createElement(C,{direction:"column",alignItems:"center",sx:{gap:1,height:"300px",justifyContent:"center"}},_.createElement(L,{variant:"tertiary",onClick:x,"aria-label":"move selected right"},">"),_.createElement(L,{variant:"tertiary",onClick:I,"aria-label":"move selected left"},"<")),_.createElement(Ft,{items:o,title:s("target"),checked:r,onToggleAll:p,numberOfChecked:h(o),onToggle:f}))}function Tr({projectId:n,filters:t=[]}){const a={params:{pagination:{page:1,pageSize:1e3},filters:{$or:[{isDeleted:{$eq:!1}},{isDeleted:{$null:!0}}],...t}}};return{queryKey:["project",n,"datasets/options",a],queryFn:()=>w.get(`/v1/project/${n}/datasets`,a)}}function Lr({projectId:n,onSelectedChange:t}){const r=xe(Tr({projectId:n}))?.data?.data?.data||[];return _.createElement($,null,_.createElement(Mr,{options:r.map(a=>({id:a.id,name:a.attributes.name})),handleSetValues:t}))}function Or(n){const{t}=E(),{repoId:s,id:r,tenantId:a}=N(),i=P(),[l,o]=g.useState([]),{mutateAsync:d,isLoading:c}=O(()=>(te({eventName:ne.DATA_MODEL_SCHEMA_ADD,eventType:ae["click-button"],tenantId:a,workspaceId:r,properties:{dataModelId:s,datasetIds:l.map(u=>u.id),schemaCount:l.length}}),z(w.post(`/v1/repositories/${s}/create-schemas`,{datasets:l.map(u=>u.id)}))),{onSuccess:()=>{i.invalidateQueries(["schemas",s]),n.onSuccess?.(),n.onClose?.()}});return e.jsx(ue,{...n,title:t("add_schemas"),size:"lg",actions:e.jsxs(C,{direction:"row",sx:{gap:2,justifyContent:"flex-end",width:"100%"},children:[e.jsx(L,{variant:"tertiary",size:"md",onClick:n.onClose,children:t("button.cancel")}),e.jsx(L,{variant:"primary",size:"md",disabled:c||l.length===0,onClick:()=>d(),children:t("button.finish")})]}),children:e.jsx(Lr,{projectId:r,onSelectedChange:o})})}const xn={DATA_BLEND:"DATA_BLEND"},Nt=`1px solid ${b.border.neutral.border1}`;function kr(n,t){const{t:s}=E(),{id:r,tenantId:a,repoId:i}=N(),[l,o]=g.useState(null),[d,c]=g.useState(!1),[u,m]=g.useState(!1),[f,h]=g.useState(!1),[p,x]=g.useState(!1),[I,y]=g.useState(!1),S=new Dt({projectId:r,repositoryId:i}),v=xe({queryKey:["schema",r,a,i],queryFn:()=>w.get(`/v1/repositories/${i}/schemata`,{params:{populate:{dataset:"*"}}})}),D=O(S.deleteSchemaMutation()),M=O(()=>w.post(`/v1/repository/${i}/schemas/sync`)),T=Ae(v,"data.data.data",[]).filter(({attributes:F})=>F.schemaType!==xn.DATA_BLEND).map(({id:F,attributes:U})=>({name:U.name,displayName:U.displayName||"",description:U.description||"",schemaType:U.schemaType,dataset:U.dataset.data,dimensionsCount:(U.dimensions||[]).length,primaryKey:U.dimensions,id:F})),q=async()=>{await z(D.mutateAsync(l?.id)),v.refetch(),m(!1)},K=(F,U)=>{switch(o(U),F){case"delete":m(!0);break;case"setKey":h(!0);break;case"edit":x(!0);break;case"editDescription":y(!0);break}};return g.useImperativeHandle(t,()=>({async sync(){await z(M.mutateAsync()),v.refetch()},openAddSchema(F){c(F)}}),[]),e.jsxs(j,{height:"100%",children:[e.jsxs(be,{children:[e.jsx("title",{children:`${s("data_model")} > ${s("schemas")} - FPT Data Suite`}),e.jsx("meta",{name:"description",content:"Your personalized dashboard with reports"}),e.jsx("meta",{name:"keywords",content:"dashboard, reports, workspace, analytics"})]}),e.jsxs(j,{bgcolor:b.background.white,borderRadius:V.large,height:"100%",children:[e.jsx(Be,{columns:Dr({projectId:Number(r),tenantId:Number(a),repoId:Number(i),onAction:K}),rows:T,initialState:{pagination:{paginationModel:{page:0,pageSize:10}}},pageSizeOptions:[10,25,50],disableColumnFilter:!0,disableColumnMenu:!0,hideFooterSelectedRowCount:!0,disableColumnResize:!0,rowHeight:48,sx:{height:"100%",border:Nt,borderRadius:V.large,"& .MuiDataGrid-columnHeaders":{bgcolor:b.background.neutral.surface1,borderBottom:Nt},"& .MuiDataGrid-footerContainer":{border:"none",minHeight:0}}}),e.jsx(Ge,{open:u,title:s("delete_schema"),content:s("delete_schema_message",{name:It(l?.name||"")}),isDeleting:D.isLoading,onClose:()=>m(!1),onDelete:q}),f&&l&&e.jsx(gn,{schemaItem:l,repoId:i,open:f,onSuccess:v.refetch,onClose:()=>h(!1)}),p&&l&&e.jsx(Ar,{schemaItem:l,repoId:i,open:p,onSuccess:v.refetch,onClose:()=>x(!1)}),I&&l&&e.jsx(wr,{schemaItem:l,repoId:i,open:I,onSuccess:v.refetch,onClose:()=>y(!1)}),d&&e.jsx(Or,{open:d,onSuccess:()=>{c(!1),v.refetch()},onClose:()=>c(!1)})]})]})}const Fr=g.forwardRef(kr),Nr=({size:n="sm",fill:t="currentColor",width:s,height:r,sx:a,...i})=>{const l=()=>{switch(n){case"xs":return 12;case"sm":return 16;case"md":return 20;case"lg":return 24;case"xl":return 32;case"2xl":return 40;default:return 16}},o=s!==void 0?s:l(),d=r!==void 0?r:l();return e.jsx(Ds,{...i,sx:{width:o,height:d,...a},children:e.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21.679 2.32097C22.107 2.74892 22.107 3.44278 21.679 3.87073L19.2697 6.28009L20.407 7.40905L21.679 8.68108C22.107 9.10903 22.107 9.80288 21.679 10.2308L17.863 14.0469C17.6575 14.2524 17.3787 14.3679 17.0881 14.3679C16.7974 14.3679 16.5187 14.2524 16.3132 14.0469L15.0361 12.7698L13.9154 11.6344L12.1689 13.3808C12.7546 14.2602 13.0958 15.3163 13.0958 16.4521C13.0958 19.5161 10.612 22 7.54792 22C4.48389 22 2 19.5161 2 16.4521C2 13.388 4.48389 10.9042 7.54792 10.9042C8.6837 10.9042 9.73977 11.2454 10.6192 11.8311L20.1293 2.32097C20.5572 1.89301 21.2511 1.89301 21.679 2.32097ZM15.4652 10.0846L16.5935 11.2277L17.0881 11.7223L19.3544 9.45596L18.8601 8.96168L18.8572 8.95882L17.7199 7.82987L15.4652 10.0846ZM7.54792 13.0958C5.69433 13.0958 4.1917 14.5985 4.1917 16.4521C4.1917 18.3057 5.69433 19.8083 7.54792 19.8083C9.40152 19.8083 10.9042 18.3057 10.9
1042 16.4521C10.9042 14.5985 9.40152 13.0958 7.54792 13.0958Z",fill:t})})})};function qr({row:n,repoId:t,onAction:s}){const{t:r}=E(),[a,i]=g.useState(null),l=d=>{d.stopPropagation(),i(d.currentTarget)},o=()=>i(null);return e.jsx(me,{action:Fe.data_model["write-data_model"],subject:{name:ke.data_model,id:t},children:e.jsxs(C,{sx:{display:"inline-flex"},children:[e.jsx(tn,{size:"small",onClick:l,children:e.jsx(cn,{size:"sm",sx:{color:b.content.neutral.neutralMedium}})}),e.jsxs(Re,{anchorEl:a,open:!!a,onClose:o,onClick:d=>d.stopPropagation(),PaperProps:{sx:{borderRadius:"4px",minWidth:160,boxShadow:"0px 4px 16px rgba(0,0,0,0.12)"}},children:[e.jsx(B,{icon:e.jsx(dn,{size:"sm"}),text:r("button.edit_blend"),onClick:()=>{o(),s("edit",n)}}),e.jsx(B,{icon:e.jsx(Nr,{size:"sm"}),text:r("set_primary_key"),onClick:()=>{o(),s("setKey",n)}}),e.jsx(B,{icon:e.jsx(Xe,{size:"sm"}),text:r("button.delete"),isDelete:!0,onClick:()=>{o(),s("delete",n)}})]})]})})}function $r({repoId:n,onAction:t}){const{t:s}=E();return[{field:"name",headerName:s("name"),flex:3,minWidth:200,renderCell:r=>r.row?e.jsx(H,{title:r.value,children:e.jsx("span",{children:r.value})}):null},{field:"displayName",headerName:s("Display name"),minWidth:200,flex:2,renderCell:r=>r.row?e.jsx(H,{title:r.value,children:e.jsx("span",{children:r.value})}):null},{field:"dimensionsCount",headerName:s("dimensions"),width:120,type:"number"},{field:"primaryKey",headerName:s("primary_key"),width:120,renderCell:r=>r.row?(r.value||[]).find(i=>i?.primaryKey)?.name??"":null,sortable:!1},{field:"createdAt",headerName:s("created_at"),width:180,valueGetter(r){return r?new Date(r).toLocaleString():""}},{field:"actions",headerName:s("actions"),align:"center",width:80,sortable:!1,renderCell:r=>r.row?e.jsx(qr,{row:r.row,repoId:n,onAction:t}):null}]}const ot={all:n=>["data-blending",n]};class it{async list(t){return(await w.get(`/v1/repositories/${t}/data-blending`)).data.data.map(r=>({...r,dimensions:Array.isArray(r.dimensions)?r.dimensions:[],dimensionsCount:(Array.isArray(r.dimensions)?r.dimensions:[]).length,dataset:r.dataset?.data??r.dataset??null}))}async create(t,s){await w.post(`/v1/repositories/${t}/data-blending`,s)}async update(t,s,r){await w.put(`/v1/repositories/${t}/data-blending/${s}`,r)}async delete(t,s){await w.delete(`/v1/repositories/${t}/data-blending/${s}`)}}class Pr{constructor(t){R(this,"repository");this.repository=t}async execute(t,s){if(!t)throw new Error("repositoryId is required");if(!s.name)throw new Error("name is required");if(!s.sourceSchemaIds?.length)throw new Error("sourceSchemaIds is required");await this.repository.create(t,s)}}function zr({repositoryId:n,onSuccess:t}){const s=P(),r=new it,a=new Pr(r);return O({mutationFn:i=>a.execute(n,i),onSuccess:()=>{s.invalidateQueries(ot.all(n)),t?.()}})}class Br{constructor(t){R(this,"repository");this.repository=t}async execute(t,s,r){if(!t)throw new Error("repositoryId is required");if(!s)throw new Error("blendId is required");if(!r.name&&r.excludeColumns===void 0)throw new Error("At least one field (name or excludeColumns) must be provided");await this.repository.update(t,s,r)}}function Gr({repositoryId:n,onSuccess:t}){const s=P(),r=new it,a=new Br(r);return O({mutationFn:({blendId:i,params:l})=>a.execute(n,i,l),onSuccess:()=>{s.invalidateQueries(ot.all(n)),t?.()}})}function Vr({errors:n}){return e.jsx(j,{display:"flex",flexDirection:"column",gap:.5,children:n.map((t,s)=>e.jsxs(A,{variant:"bodySmRegular",component:"p",sx:{color:he.txt.inverse.tertiary},children:["⢠",t.message,t.invalidValues?.length?` (${t.invalidValues.join(", ")})`:""]},s))})}function Ur(n){const t=Ae(n,"response.data",{}),s=t.errors,r=t.message||je.t("something_went_wrong");s?.length?X.error({title:r,description:e.jsx(Vr,{errors:s})}):X.error({title:r})}const Kr=["false","none","true","and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal","not","or","pass","raise","return","try","while","with","yield"],Hr=Ee({name:Q().required(()=>je.t("blend_name_required")).matches(/^[a-zA-Z]/,()=>je.t("blend_name_start_with_letter")).matches(/^[a-zA-Z][a-zA-Z0-9_]*$/,()=>je.t("blend_name_invalid_characters")).test("not-python-keyword",()=>je.t("blend_name_reserved_keyword"),n=>!n||!Kr.includes(n.toLowerCase())).max(255,()=>je.t("blend_name_max_length")).test("snake-case",()=>je.t("blend_name_must_be_snake_case"),n=>!n||n===n.toLowerCase()||n===n.toUpperCase()),sourceSchemaIds:At().of(Ee({id:ns().required(),name:Q().required()})).min(2,()=>je.t("source_schemas_min_2")).required(),excludeColumns:At().of(Q().required()).optional()});function qt({open:n,onClose:t,editItem:s}){const{t:r}=E(),{repoId:a}=N(),i=!!s?.id,l=zr({repositoryId:a,onSuccess:t}),o=Gr({repositoryId:a,onSuccess:t}),d=Y({resolver:we(Hr),defaultValues:{name:"",sourceSchemaIds:[],excludeColumns:[]},mode:"onChange"}),c=d.watch("sourceSchemaIds");g.useEffect(()=>{n&&(i&&s?d.reset({name:String(s.name||""),sourceSchemaIds:[],excludeColumns:s.excludeColumns||[]}):d.reset())},[n,i]);const u=xe({queryKey:["schemas-for-blend",a],queryFn:()=>w.get(`/v1/repositories/${a}/schemata`),enabled:n}),m=Ae(u,"data.data.data",[]).filter(p=>p.attributes?.schemaType!==xn.DATA_BLEND).map(p=>({id:p.id,name:p.attributes?.displayName||p.attributes?.name||`Schema ${p.id}`}));g.useEffect(()=>{c.length<2&&d.setValue("excludeColumns",[])},[c.length]),g.useEffect(()=>{if(!i||!s||m.length===0)return;const p=s.sourceSchemaIds||[],x=m.filter(I=>p.includes(I.id));if(x.length>0){d.setValue("sourceSchemaIds",x);const I=s.excludeColumns||[];I.length>0&&d.setValue("excludeColumns",I)}},[i,s,m.length]);const f=[...new Set(Ae(u,"data.data.data",[]).filter(p=>c.some(x=>x.id===p.id)).flatMap(p=>(p.attributes?.dimensions||[]).map(x=>
1x.name)).filter(Boolean))],h=async p=>{try{if(i&&s?.id){const x={},I=p.name.trim();I!==String(s.name||"")&&(x.name=I),x.excludeColumns=p.excludeColumns||[],await o.mutateAsync({blendId:Number(s.id),params:x})}else{const x={name:p.name.trim(),sourceSchemaIds:p.sourceSchemaIds.map(I=>I.id)};p.excludeColumns?.length&&(x.excludeColumns=p.excludeColumns),await l.mutateAsync(x)}X.success({title:je.t("task_completed")})}catch(x){Ur(x)}};return e.jsx(ue,{open:n,onClose:t,title:r(i?"edit_data_blend":"create_data_blend"),size:"md",actions:e.jsxs(C,{direction:"row",sx:{gap:2,justifyContent:"flex-end",width:"100%"},children:[e.jsx(L,{variant:"tertiary",size:"md",onClick:t,children:r("button.cancel")}),e.jsx(L,{variant:"primary",size:"md",onClick:d.handleSubmit(h),disabled:!d.formState.isValid||l.isLoading||o.isLoading,children:r(i?"update_blend":"button.create")})]}),children:e.jsx(ge,{...d,children:e.jsxs(j,{display:"flex",flexDirection:"column",gap:2,children:[e.jsx(ee,{name:"name",label:r("blend_name"),required:!0,fullWidth:!0,autoFocus:!0}),e.jsx(kt,{name:"sourceSchemaIds",label:r("source_schemas"),options:m,getOptionLabel:p=>p.name,isOptionEqualToValue:(p,x)=>p.id===x.id,multiple:!0,required:!0,showCheckbox:!0,placeholder:r("source_schemas_hint"),loading:u.isLoading,disabled:i}),c.length>=2&&f.length>0&&e.jsx(kt,{name:"excludeColumns",label:r("exclude_columns"),options:f,multiple:!0,showCheckbox:!1,placeholder:r("exclude_columns")})]})})})}class Wr{constructor(t){R(this,"repository");this.repository=t}execute(t){if(!t)throw new Error("repositoryId is required");return this.repository.list(t)}}function Qr(n){const t=new it,s=new Wr(t);return xe({queryKey:ot.all(n),queryFn:()=>s.execute(n),enabled:!!n})}class Yr{constructor(t){R(this,"repository");this.repository=t}async execute(t,s){if(!t)throw new Error("repositoryId is required");if(!s)throw new Error("blendId is required");await this.repository.delete(t,s)}}function Jr({repositoryId:n}){const t=P(),s=new it,r=new Yr(s);return O({mutationFn:a=>r.execute(n,a),onSuccess:()=>{t.invalidateQueries(ot.all(n))}})}function Zr({repositoryId:n}){const[t,s]=g.useState(null),[r,a]=g.useState(!1),[i,l]=g.useState(!1),[o,d]=g.useState(!1),[c,u]=g.useState(!1),m=Qr(n),f=Jr({repositoryId:n}),h=g.useRef(f);h.current=f;const p=(m.data||[]).map(T=>({id:T.id,name:T.name,displayName:T.displayName||"",dataset:T.dataset,dimensionsCount:T.dimensionsCount??0,primaryKey:T.dimensions||[],sourceSchemaIds:T.sourceSchemaIds||[],excludeColumns:T.excludeColumns||[],createdAt:T.createdAt})),x=g.useCallback((T,q)=>{s(q),T==="edit"&&l(!0),T==="delete"&&d(!0),T==="setKey"&&u(!0)},[]),I=g.useCallback(async()=>{if(t?.id)try{await z(h.current.mutateAsync(Number(t.id)))}finally{d(!1)}},[t]),y=g.useCallback(()=>a(!0),[]),S=g.useCallback(()=>a(!1),[]),v=g.useCallback(()=>l(!1),[]),D=g.useCallback(()=>d(!1),[]),M=g.useCallback(()=>u(!1),[]);return{rows:p,currentItem:t,isLoading:m.isLoading,openCreate:r,openEdit:i,openDelete:o,openSetKey:c,handleAction:x,handleDelete:I,handleOpenCreate:y,handleCloseCreate:S,handleCloseEdit:v,handleCloseDelete:D,handleCloseSetKey:M,refetch:m.refetch,isDeleting:f.isLoading}}function Xr(n,t){const{t:s}=E(),{id:r,tenantId:a,repoId:i}=N(),{rows:l,currentItem:o,isLoading:d,openCreate:c,openEdit:u,openDelete:m,openSetKey:f,handleAction:h,handleDelete:p,handleOpenCreate:x,handleCloseCreate:I,handleCloseEdit:y,handleCloseDelete:S,handleCloseSetKey:v,refetch:D,isDeleting:M}=Zr({repositoryId:i}),T=O(()=>w.post(`/v1/repository/${i}/schemas/sync`));return g.useImperativeHandle(t,()=>({async sync(){await z(T.mutateAsync()),D()},createBlend(q){q&&x()}}),[x,D]),e.jsxs(j,{height:"100%",children:[e.jsx(be,{children:e.jsx("title",{children:`${s("data_model")} > ${s("data_blending")} - FPT Data Suite`})}),e.jsxs(j,{bgcolor:he.bg.surface.main,borderRadius:V.large,height:"100%",children:[e.jsx(Be,{columns:$r({repoId:Number(i),onAction:h}),rows:l,loading:d,initialState:{pagination:{paginationModel:{page:0,pageSize:10}}},pageSizeOptions:[10,25,50],disableColumnFilter:!0,disableColumnMenu:!0,hideFooterSelectedRowCount:!0,disableColumnResize:!0,rowHeight:48,sx:{}}),e.jsx(Ge,{open:m,title:s("delete_blend"),content:s("delete_blend_message",{name:It(String(o?.name||""))}),isDeleting:M,onClose:S,onDelete:p}),f&&o&&e.jsx(gn,{schemaItem:o,repoId:Number(i),open:f,onSuccess:D,onClose:v}),c&&e.jsx(qt,{open:c,onClose:I}),u&&o&&e.jsx(qt,{open:u,onClose:y,editItem:o})]})]})}const ea=g.forwardRef(Xr);function ta(n,t){return{id:n.id.toString(),data:{label:n.label},style:{width:n?.label?.length*15||200},position:{x:100+t*100,y:100+t*100},draggable:!0}}function na(n){return{id:n.id,source:n.fromNodeId.toString(),target:n.toNodeId.toString(),type:"deletableEdge",data:{}}}let sa=class{constructor(t){R(this,"data");R(this,"cloneData");this.data=t,this.cloneData=this.cloneDataModel()}get repositoryId(){return this.data.id}get relationshipLayout(){return this.data.attributes?.relationshipLayout}get schemata(){return this.data.attributes.schemata.data}get nodes(){const t=this.relationshipLayout;return t||this.schemata.map(s=>({id:s.id,label:s.attributes.name,attributes:s.attributes})).map(ta)}get edges(){return(this.data.attributes.joins||[]).map(na)}calculateNewJoinsAfterRelationshipAdded(t){const{fromNodeId:s,toNodeId:r,fromField:a,toField:i,relationship:l,isMultiDirection:o}=t;if(!a?.value||!i?.value||!l?.value)throw console.error("Field is empty",t),new Error("Field is empty");const d=Se(this.schemata,m=>m.id===s.value);if(!d)throw console.error("Node not found",t),new Error("Node not found");const u=[...this.data.attributes.joins||[],{id:ss(),fromNodeId:s.value,toNodeId:r.value,fromField:a.value,toField:i.value,relationship:l.value,isMultiDirection:o}];return{schemaId:d.id,joins:u}}calculateNewJoinsAfterRelationshipRemoved(t){return{joins:Qe(this.data.attributes.joins||[],r=>r.id!==t)}}cloneDataModel(){return Lt(this.data)}resetDataModel(){this.data=Lt(this.cloneData)}setLayout(t){this.cloneData.attributes.relationshipLayout=t}};class ra{constructor(t){R(this,"data");R(this,"nodes");R(this,"edges");this.data=t,this.nodes=this.data.attributes.schemata.data,this.edges=this.data.attributes.joins||[]}get relationship(){return this.data.attributes.relationshipLayout||[]}}const et=new Map([["one",{markup:wt` 2 <path d="M 5 -5 V 5" stroke-width="2" fill="none" /> 3 `}],["many",{markup:wt` 4 <path d="M 0 -4 L 10 0 M 0 4 L 10 0" stroke-width="2" /> 5 `}],["default",{type:"line",width:10,height:20,y:-10,stroke:"red"}]]);
5function aa(n,t){const s=n.relationship?.split("_"),r=new Xt({id:n.id,router:{name:"manhattan"}});return r.connector("rounded"),r.attr({line:{stroke:"#0059C8",strokeWidth:1,sourceMarker:s?et.get(pe(s)):et.get("default"),targetMarker:s?et.get(Bs(s)):et.get("default")}}),r.source(t[n.fromNodeId],{port:`${n.fromNodeId}:${n.fromField.toString()}`}),r.target(t[n.toNodeId],{port:`${n.toNodeId}:${n.toField.toString()}`}),r}const $t="default",oa=n=>{const t=[n.attributes.name.length];return n.attributes.dimensions.forEach(r=>{t.push(r.name.length)}),9*(Gs(t)||10)},Pt=n=>n.attributes.dimensions.length<3?38*n.attributes.dimensions.length:30*n.attributes.dimensions.length-n.attributes.dimensions.length;function ia(n,t){const s=oa(n),r=Se(t,a=>a.id===n.id.toString());return new rs({id:n.id,position:r?{x:r.position.x,y:r.position.y}:{x:100+Math.random()*500,y:30+Math.random()*500},size:{width:s,height:Pt(n)},attrs:{body:{fill:"white",rx:10,ry:10,strokeWidth:0,filter:{name:"dropShadow",args:{dx:0,dy:2,blur:6,color:"#1B1B1F14"}}},headerText:{text:n.attributes.name,fontSize:13,fill:"#1B1B1F",fontWeight:"bold"},header:{fill:"#E9E7EC",strokeWidth:0}},ports:{groups:{[$t]:{position:{name:"line",args:{start:{x:0,y:35},end:{x:0,y:Pt(n)}}},attrs:{portBody:{magnet:"active",fontSize:10,align:"middle",fill:"transparent",x:"calc(x)",y:"calc(y - 10)",width:s,height:"20"},portLabel:{magnet:"active",fontFamily:"sans-serif",fontSize:10,align:"middle",fill:"#000000",x:"calc(x + 10)",y:"calc(y )",width:"calc(w)",height:"20",textVerticalAnchor:"middle"}},markup:[{tagName:"rect",selector:"portBody"},{tagName:"rect",selector:"portLabelBackground"},{tagName:"text",selector:"portLabel",attributes:{fill:"#333333"}}]}},items:[...n.attributes.dimensions.map(a=>({id:`${n.id}:${a.id.toString()}`,group:$t,attrs:{portLabel:{text:a.name}}}))]}})}const la="#0059C8",zt="#0059C8";class ca extends Xt{defaults(){return as({type:"ListLink",z:-1,attrs:{line:{stroke:la,targetMarker:{stroke:zt}},outline:{stroke:zt}}},super.defaults)}}function da(n,{nodes:t,edges:s,height:r,nodesLayout:a,onConnectNodes:i,onUpdateLayout:l,onRemoveConnection:o}){const d=is,c=new os({},{cellNamespace:d}),u=new ls({el:n,model:c,width:"100%",defaultLink:new ca,height:r??700,gridSize:10,drawGrid:{name:"dot",args:{color:"#D9D9D9"}},cellViewNamespace:d,linkPinning:!1,magnetThreshold:"onleave",defaultRouter:{name:"normal"},interactive:!0,validateConnection(x,I,y,S){return!(!S||I===S||x===y)}}),m={},f=t.map(x=>{const I=ia(x,a);return m[x.id]=I,I});f.forEach(x=>x.addTo(c)),s.map(x=>aa(x,m)).forEach(x=>x.addTo(c)),f.forEach(x=>x.toFront());let p=!1;return c.on("change:source change:target",x=>{if(p=!0,x.get("source").id&&x.get("target").id){const I=x.get("source").port,[y,S]=I.split(":"),v=x.get("target").port;if(v){const[D,M]=v.split(":");i({fromNodeId:parseInt(y,10),fromField:S,toNodeId:parseInt(D,10),toField:M})}}}),u.on("link:connect",x=>{p=!0,x.model.get("target").id||x.model.remove()}),u.on("link:pointerup",x=>{p=!0,x.model.get("target").id||x.model.remove()}),u.on("link:pointerdown",()=>{p=!1}),u.on("link:mouseenter",x=>{const I=new cs({focusOpacity:.5,action(){o(x.model.id)}}),y=new ds({tools:[I]});x.addTools(y),x.model.attr("line/stroke","black")}),u.on("link:mouseleave",x=>{x.removeTools(),x.model.attr("line/stroke","#0059C8")}),us(c,"change:position").pipe(ms(500),hs(()=>p?void 0:c.getElements().map(I=>{const y=I.position();return{id:I.id.toString(),position:{x:y.x,y:y.y}}}))).subscribe(l),{paper:u,graph:c,actions:{autoLayout:()=>{ps.layout(c,{dagre:gs,graphlib:fs,setLinkVertices:!1,rankDir:"TB",rankSep:60,marginX:10,marginY:20,nodeSep:80,edgeSep:50})}}}}const ua=n=>xs(n.svg,{viewportSelector:n.layers,zoomEnabled:!0,panEnabled:!0,controlIconsEnabled:!0,maxZoom:2,minZoom:.1,fit:!1,onUpdatedCTM:function(){let t=n.matrix();return function(r){const{a,d:i,e:l,f:o}=r,{a:d,d:c,e:u,f:m}=t;(l!==u||o!==m)&&n.trigger("translate",l-u,o-m),(a!==d||i!==c)&&n.trigger("scale",a,i,l,o),t=r}}()});function ma(n){const{t}=E(),{dataModel:s}=n,r=new ra(s),a=g.useRef(),i=g.useRef(null),[l,o]=g.useState({autoLayout:()=>{}});g.useEffect(()=>{const{paper:c,actions:u}=da(a.current,{nodes:r.nodes,edges:r.edges,height:n.height,nodesLayout:r.relationship,onConnectNodes:n.onConnectNodes,onUp
5dateLayout:n.onUpdateLayout,onRemoveConnection:n.onRemoveConnection}),m=ua(c);c.on("blank:pointerdown",m.enablePan),c.on("blank:pointerup",m.disablePan),m.setOnPan(f=>{n.onUpdatePan(f)}),m.setOnZoom(f=>{n.onUpdateScale(f)}),m.zoom(n.scale||1),m.pan(n.pan||{x:1,y:50}),i.current=c,o(u)},[s]);const d=()=>{l.autoLayout()};return e.jsxs("div",{style:{position:"relative"},children:[e.jsx(Es,{onClick:d,style:{position:"absolute",zIndex:1,left:"16px",top:"16px"},children:t("auto_layout")}),e.jsx(As,{ref:a,children:"DiagramV3"})]})}const ha=bs(n=>({defaultValues:null,setDefaultValues:t=>n({defaultValues:t})}));function pa(n,t){return!!n.find(a=>a.id===t).attributes?.dimensions.find(a=>a?.primaryKey)}const fa=({dataModel:n,values:t})=>{const{selectedFromNodeId:s,selectedToNodeId:r}=t;return Vs([s,r],i=>pa(n.schemata,i))};function bt(n,t){const{selectedFromNodeId:s,selectedToNodeId:r}=t||{},a=s?.value||s,i=r?.value||r,l=n.data.attributes.schemata?.data||[],o=l.map(h=>({value:h.id,label:h.attributes.name})),d=Qe(l,h=>h.id!==a).map(h=>({value:h.id,label:h.attributes.name})),c=Se(l,h=>h.id===a),u=c?(c.attributes.dimensions||[]).map(h=>({value:h.id,label:h.name})):[],m=Se(l,h=>h.id===i),f=m?(m.attributes.dimensions||[]).map(h=>({value:h.id,label:h.name})):[];return{fromNodeOpts:o,toNodeOpts:d,fromFieldOpts:u,toFieldOpts:f}}class ga{constructor({dataModel:t,selectedFromNodeId:s,selectedToNodeId:r}){R(this,"dataModel");R(this,"selectedFromNodeId");R(this,"selectedToNodeId");this.selectedToNodeId=r,this.selectedFromNodeId=s,this.dataModel=t}get listFromField(){const{fromFieldOpts:t}=bt(this.dataModel,{selectedFromNodeId:this.selectedFromNodeId,selectedToNodeId:this.selectedToNodeId});return t}get listToField(){const{toFieldOpts:t}=bt(this.dataModel,{selectedFromNodeId:this.selectedFromNodeId,selectedToNodeId:this.selectedToNodeId});return t}get foundSameField(){if(this.selectedFromNodeId&&this.selectedToNodeId){const t=this.listFromField.map(a=>a.label),s=this.listToField.map(a=>a.label);return Us(t,s,Ks)}return[]}get foundFromField(){const t=this.foundSameField,s=pe(t);return this.listFromField.find(a=>a.label===s)}get foundToField(){const t=this.foundSameField,s=pe(t);return this.listToField.find(r=>r.label===s)}get fromFieldId(){return this.foundFromField?.value}get toFieldId(){return this.foundToField?.value}get verifySameField(){return!re(this.foundSameField)}}function xa(){const{t:n}=E(),{tenantId:t,id:s,repoId:r}=N(),a=Z(Yt,{id:s,repoId:r,tenantId:t});return _.createElement(sr,{severity:"warning",alertTitle:"Warning",color:"warning",sx:{boxShadow:"none"}},_.createElement(A,{variant:"body3",color:Pn.main.onSurface},n("data_model.relationship.missing_primary_key"),_.createElement("strong",null,_.createElement(ws,{sx:{cursor:"pointer"},onClick:()=>{window.dispatchEvent(new CustomEvent("triggerModelTab",{detail:a}))}}," ",n("set_primary_key")))))}const ba=[{label:"Many to One",value:"many_to_one"},{label:"One to Many",value:"one_to_many"},{label:"One to One",value:"one_to_one"}],ya={ml:"-9px","& .MuiFormControlLabel-label":{...zn.bodySmRegular,color:b.content.neutral.neutralStrong}};function ja({dataModel:n,onSuccess:t}){const{repositoryId:s}=n,r=O("update-schema-joins",({joins:i})=>w.put(`/v1/repositories/${s}`,{data:{joins:i}}));return{onSubmit:i=>{const{schemaId:l,joins:o}=n.calculateNewJoinsAfterRelationshipAdded(i);return z(r.mutateAsync({schemaId:l,joins:o})).then(t)}}}function bn({selectedFromNodeId:n,selectedToNodeId:t,dataModel:s}){const[r,a]=g.useState(!1);return g.useEffect(()=>{if(n&&t){const i={selectedFromNodeId:n?.value||n,selectedToNodeId:t?.value||t};a(!fa({dataModel:s,values:i}))}},[n?.value,t?.value]),{showPopupPrimaryKey:r}}function Sa({model:n,defaultValues:t,repositoryId:s}){const{t:r}=E(),a=oe(),i=a.watch("fromNodeId"),l=a.watch("toNodeId"),{fromNodeOpts:o,toNodeOpts:d,fromFieldOpts:c,toFieldOpts:u}=bt(n,{selectedFromNodeId:i,selectedToNodeId:l}),{showPopupPrimaryKey:m}=bn({selectedFromNodeId:i,selectedToNodeId:l,dataModel:n});g.useEffect(()=>{const{fromField:p,toField:x}=t||{};if(!(p&&x)&&i&&l){const I=new ga({dataModel:n,selectedFromNodeId:i,selectedToNodeId:l});a.reset({fromNodeId:i,toNodeId:l,fromField:I.fromFieldId,toField:I.toFieldId,isMultiDirection:!0}
5)}},[i?.value,l?.value]);const h=a.watch("relationship")?.value==="one_to_one";return _.createElement($,null,_.createElement($.Group,null,_.createElement(se,{control:a.control,name:"fromNodeId",Component:le,componentProps:{options:o,label:r("from_node")}}),_.createElement(se,{control:a.control,name:"toNodeId",Component:le,componentProps:{options:d,label:r("to_node")}})),_.createElement($.Group,null,_.createElement(se,{control:a.control,name:"fromField",Component:le,componentProps:{options:c,label:r("from_field")}}),_.createElement(se,{control:a.control,name:"toField",Component:le,componentProps:{options:u,label:r("to_field")}})),_.createElement(se,{control:a.control,name:"relationship",Component:le,componentProps:{options:ba,label:r("relationship")}}),_.createElement(de,{control:a.control,name:"isMultiDirection",defaultValue:!0,render:({field:{value:p,onChange:x}})=>_.createElement(Rs,{control:_.createElement(Ye,{disabled:h,checked:!!p,onChange:x}),label:r("use_bi_directional_filtering"),sx:ya})}),m&&_.createElement(xa,{repositoryId:s}))}function va(n){const{t}=E(),{repoId:s,id:r,tenantId:a}=N(),i=Y({defaultValues:{...n.defaultValues,relationship:"hasOne"}});g.useEffect(()=>{n.open&&i.reset({...n.defaultValues,relationship:"hasOne"})},[n.open]);const l=i.watch("fromNodeId"),o=i.watch("toNodeId"),{showPopupPrimaryKey:d}=bn({selectedFromNodeId:l,selectedToNodeId:o,dataModel:n.model}),{onSubmit:c}=ja({dataModel:n.model,onSuccess:n.onSuccess}),u=f=>f&&typeof f=="object"?f.value:f,m=f=>(te({eventName:ne.DATA_MODEL_RELATIONSHIP_CREATE,eventType:ae["click-button"],tenantId:a,workspaceId:r,properties:{dataModelId:s,fromSchemaId:u(f.fromNodeId),toSchemaId:u(f.toNodeId),relationshipType:f.relationship}}),c(f));return e.jsx(Me,{open:n.open,title:t("add_relationship"),form:i,onClose:n.onClose,onSubmit:i.handleSubmit(m),submitText:t("button.create"),isSubmitDisabled:d,children:e.jsx(Sa,{model:n.model,defaultValues:n.defaultValues,repositoryId:s})})}function Ia(n,t){const{t:s}=E(),{repoId:r,id:a,tenantId:i}=N(),l=g.useRef(null),[o,d]=g.useState(0),c=P(),[u,m]=g.useState(!1),[f,h]=g.useState(1),[p,x]=g.useState({x:1,y:50}),[I,y]=g.useState(1),[S,v]=g.useState({x:1,y:50}),D=new un({projectId:a,queryClient:c}),M=xe({...D.getRepository({repositoryId:r}),suspense:!1}),{defaultValues:T,setDefaultValues:q}=ha(),K=O("update-relationship",G=>w.put(`v1/repositories/${G.repositoryId}`,{data:{relationshipLayout:G.nodeLayout}})),F=O("update-schema-joins",({joins:G})=>w.put(`/v1/repositories/${r}`,{data:{joins:G}})),U=Ae(M,"data.data.data"),{dataModel:J}=g.useMemo(()=>({dataModel:U?new sa(U):null}),[JSON.stringify(U)]);g.useLayoutEffect(()=>{l.current&&d(l.current.offsetHeight)},[J]),g.useEffect(()=>{const G=l.current;if(!G||typeof ResizeObserver>"u")return;const ye=new ResizeObserver(()=>{d(G.offsetHeight)});return ye.observe(G),()=>ye.disconnect()},[J]);const Ie=()=>{h(I),x(S),z(M.refetch())},k=G=>{K.mutateAsync({repositoryId:r,nodeLayout:G}),J.setLayout(G)},ie=(G,ye)=>{const{dimensions:Ke}=G.attributes,qe=Ke.find(He=>He.id===ye);return{value:qe.id,label:qe.name}},Ue=G=>{const{schemata:ye}=J,Ke=ye.find(He=>He.id===Number(G.fromNodeId)),qe=ye.find(He=>He.id===Number(G.toNodeId));q({fromNodeId:{value:Ke?.id,label:Ke?.attributes.name},toNodeId:{value:qe?.id,label:qe?.attributes.name},fromField:ie(Ke,G.fromField),toField:ie(qe,G.toField)}),m(!0)},Tn=async G=>{const{joins:ye}=J.calculateNewJoinsAfterRelationshipRemoved(G);te({eventName:ne.DATA_MODEL_RELATIONSHIP_DELETE,eventType:ae["click-button"],tenantId:i,workspaceId:a,properties:{dataModelId:r,relationshipId:G}}),await F.mutateAsync({joins:ye}),Ie()},Ln=async()=>{k(J.cloneData.attributes.relationshipLayout),Ie(),m(!1)},On=()=>{J.resetDataModel(),m(!1)};return g.useImperativeHandle(t,()=>({refreshRelation:Ie,addRelation:G=>{G&&q(null),m(G)}
5}),[]),J?e.jsxs(j,{ref:l,sx:{height:"100%",minHeight:0},children:[e.jsxs(be,{children:[e.jsx("title",{children:`${s("data_model")} > ${s("relationship")} - FPT Data Suite`}),e.jsx("meta",{name:"description",content:"Your personalized dashboard with reports"}),e.jsx("meta",{name:"keywords",content:"dashboard, reports, workspace, analytics"})]}),J.data&&o>0&&e.jsx(ma,{dataModel:J.data,onRemoveConnection:Tn,onConnectNodes:Ue,onUpdateLayout:k,onUpdateScale:y,onUpdatePan:v,height:o,scale:f,pan:p}),e.jsx(va,{open:u,model:J,defaultValues:T,onSuccess:Ln,onClose:On})]}):e.jsx(j,{height:"100%"})}const Ca=g.forwardRef(Ia);function _a({repoId:n,onAction:t}){const{t:s}=E(),[r,a]=g.useState(null),i=(o,d)=>{a({el:o.currentTarget,id:d})},l=()=>{a(null)};return[{field:"title",headerName:s("name"),flex:1,minWidth:200,renderCell:o=>e.jsx(H,{title:o.value,children:e.jsx("span",{children:o.value})})},{field:"name",headerName:s("Display name"),flex:1,minWidth:200,renderCell:o=>e.jsx(H,{title:o.value,children:e.jsx("span",{children:o.value})})},{field:"type",headerName:s("type"),width:100},{field:"schemaName",headerName:s("dataset"),minWidth:200,flex:1,renderCell:o=>e.jsx(H,{title:o.value,children:e.jsx("span",{children:o.value})})},{field:"schemaDisplayName",headerName:s("Schema display name"),flex:1,minWidth:200,renderCell:o=>e.jsx(H,{title:o.value,children:e.jsx("span",{children:o.value})})},{field:"sql",headerName:s("definition"),flex:1,minWidth:200,renderCell:o=>e.jsx(H,{title:o.value,children:e.jsx("span",{children:o.value})})},{field:"isPublished",headerName:s("status"),width:120,align:"center",renderCell:o=>e.jsx(j,{alignItems:"center",justifyContent:"center",sx:{height:"100%"},children:o.value?e.jsx(Oe,{label:s("published"),color:"primary",size:"small",style:{backgroundColor:"#D9E2FF",color:"#004299"}}):e.jsx(Oe,{label:s("draft"),size:"small"})})},{field:"measureFilters",headerName:s("link"),flex:1,minWidth:100,align:"center",renderCell:o=>{const c=(o.value?.data||[]||[]).map(u=>({value:u.id,label:u.attributes.displayName}));return re(c)?e.jsx(j,{display:"flex",alignItems:"center"}):e.jsx(H,{title:c[0].label,children:e.jsx(j,{alignItems:"center",justifyContent:"center",sx:{height:"100%"},children:e.jsx(Oe,{label:c[0].label,size:"small"})})})}},{field:"actions",headerName:s("actions"),align:"center",width:80,renderCell:o=>e.jsxs(me,{action:Fe.data_model["write-data_model"],subject:{name:ke.data_model,id:n},children:[e.jsx(j,{cursor:"pointer",onClick:d=>i(d,o.row.id),children:e.jsx(Je,{sx:{width:16,height:16,color:he.ic.normal.tertiary}})}),e.jsxs(Re,{anchorEl:r?.el,open:o.row.id===r?.id,onClose:l,anchorOrigin:{vertical:"center",horizontal:"left"},transformOrigin:{vertical:"center",horizontal:"right"},children:[e.jsx(B,{icon:e.jsx(at,{}),text:o.row.isPublished?s("unpublish"):s("publish"),onClick:()=>{t("publish",o.row),l()}}),o.row.isCustomMeasure&&e.jsxs("div",{children:[e.jsx(B,{icon:e.jsx(Ze,{}),text:s("button.edit"),onClick:()=>{t("edit",o.row),l()}}),e.jsx(B,{icon:e.jsx(rr,{}),text:s("button.link"),onClick:()=>{t("link",o.row),l()}}),e.jsx(B,{icon:e.jsx(ar,{}),text:s("button.unlink"),onClick:()=>{t("unlink",o.row),l()}})]}),e.jsx(B,{icon:e.jsx(Ve,{}),text:s("button.delete"),isDelete:!0,onClick:()=>{t("delete",o.row),l()}})]})]},`read-data-model-${o.id}`),sortable:!1}]}class Te{constructor({projectId:t,queryClient:s,dataModelId:r}){R(this,"invalidateCache",()=>{this.queryClient.invalidateQueries(this.queryKey())});R(this,"createMeasureMutation",()=>({mutationKey:"createMeasure",mutationFn:({payload:t,schemaId:s})=>w.post(`v1/repositories/${this.dataModelId}/schema/${s}/measure`,t),onSuccess:this.invalidateCache}));R(this,"createMeasureFilterMutation",()=>({mutationKey:"createMeasureFilter",mutationFn:({payload:t})=>w.post("/v1/measure-filters",{...t,repositoryId:this.dataModelId}),onSuccess:this.invalidateCache}));R(this,"removeMeasureMutation",()=>({mutationKey:"removeMeasure",mutationFn:({schemaId:t,measureId:s})=>w.delete(`v1/repositories/${this.dataModelId}/schema/${t}/measure/${s}`),onSuccess:this.invalidateCache}));R(this,"updateMeasureMutation",()=>({mutationKey:"updateMeasure",mutationFn:({payload:t,schemaId:s})=>w.put(`v1/repositories/${this.dataModelId}/schema/${s}/measure`,t),onSuccess:this.invalidateCache}));R(this,"linkMeasureMutation",()=>({mutationKey:"linkMeasureFilter",mutationFn:({measureFilterId:t,measureId:s})=>w.put(`/v1/measure-filters/${t}/link`,{measureId:s,repositoryId:this.dataModelId}),onSuccess:this.invalidateCache}));R(this,"unlinkMeasureMutation",()=>({mutationKey:"linkMeasureFilter",mutationFn:({measureFilterId:t,measureId:s})=>w.put(`/v1/measure-filters/${t}/unlink`,{measureId:s,repositoryId:this.dataModelId}),onSuccess:this.invalidateCache}));R(this,"publishMeasureMutation",()=>({mutationKey:"publishMeasure",mutationFn:({payload:t,schemaId:s})=>w.put(`v1/repositories/${this.dataModelId}/schema/${s}/measure/publish`,t),onSuccess:this.invalidateCache}));R(this,"publishMeasureFilterMutation",()=>({mutationKey:"publishMeasureFilter",mutationFn:({measureId:t})=>w.put(`/v1/measure-filters/${t}/publish`,{repositoryId:this.dataModelId}),onSuccess:this.invalidateCache}));R(this,"updateMeasureFilterMutation",()=>({mutationKey:"updateMeasureFilter",mutationFn:({measureId:t,sql:s,displayName:r,code:a})=>w.put(`/v1/measure-filters/${t}`,{sql:s,displayName:r,code:a,repositoryId:this.dataModelId}),onSuccess:this.invalidateCache}));R(this,"removeMeasureFilterMutation",()=>({mutationKey:"removeMeasureFilter",mutationFn:({repositoryId:t,measureId:s})=>w.delete(`/v1/measure-filters/${s}/repository/${t}`),onSuccess:this.invalidateCache}));this.projectId=t,this.queryClient=s,this.dataModelId=r}queryKey(t){if(!t)return["project",this.projectId,"measures"];const{page:s,pageSize:r}=t;return[this.projectId,"measures",{page:s,pageSize:r}]}measureFilterKey(){return["project",this.projectId,"measures-filters",this.dataModelId]}getMeasureFiltersKey(t){return["project",this.projectId,"measures-filters",this.dataModelId,t]}filterMeasures(t){const{page:s,pageSize:r}=t;return w.get(`/v1/project/${this.projectId}/data-model/${this.dataModelId}/manual-measures`,{params:{pagination:{page:s,pageSize:r}}})}allMeasureFilters(){return w.get(`/v1/measure-filters?dataModelId=${this.dataModelId}`)}getMeasureFilters(t){return w.get(`/v1/measure-filters?dataModelId=${this.dataModelId}&schemaId=${t}`)}getMeasureFiltersCondition(t){return w.get(`/v1/measure-filters-condition?measureId=${t}`)}}const Da=[{label:"Number",value:"number"},{label:"Count",value:"count"},{label:"Count distinct",value:"countDistinct"}
5,{label:"String",value:"string"},{label:"Sum",value:"sum"},{label:"Avg",value:"avg"},{label:"Min",value:"min"},{label:"Max",value:"max"},{label:"Running total",value:"runningTotal"}];function yn(n){return Ee().shape({schemaId:Q().required(n("this_field_is_required")),name:Q().required(n("name_is_required",{name:n("name")})),dataType:Q().required(n("this_field_is_required")),definition:Q().required(n("this_field_is_required"))})}function jn({repoId:n}){const{t}=E(),s=mn({repoId:n}),{data:r=[]}=s?.data||{},a=r.map(i=>({label:i.attributes.name,value:i.id}));return _.createElement($,null,_.createElement(ve,{name:"schemaId",label:t("schema"),options:a,placeholder:t("select_schema")}),_.createElement(ee,{name:"name",label:t("name"),placeholder:t("measure_name"),fullWidth:!0}),_.createElement(ve,{name:"dataType",label:t("data_type"),options:Da,placeholder:t("select_data_type")}),_.createElement(ee,{name:"definition",label:t("definition"),placeholder:t("measure_definition"),multiline:!0,rows:4,fullWidth:!0}))}const Bt={schemaId:"",name:"",dataType:"",definition:""};function Ea(n){const{id:t,repoId:s,tenantId:r}=N(),{t:a}=E(),i=P(),l=new Te({projectId:t,queryClient:i,dataModelId:s}),{mutateAsync:o}=O(l.createMeasureMutation()),d=g.useMemo(()=>yn(a),[a]),c=Y({defaultValues:Bt,resolver:we(d)});g.useEffect(()=>{n.open&&c.reset(Bt)},[n.open]);const u=m=>{const{dataType:f,definition:h,name:p,schemaId:x}=m,I=fe.StringHelpers.convertToBase64(h);return te({eventName:ne.DATA_MODEL_MEASURE_CREATE,eventType:ae["click-button"],tenantId:r,workspaceId:t,properties:{dataModelId:s,schemaId:x,dataType:f}}),z(o({payload:{definition:I,name:p,dataType:f},schemaId:x})).then(()=>{n.onSuccess?.()})};return e.jsx(Me,{open:n.open,title:a("create_measure"),form:c,onClose:n.onClose,onSubmit:c.handleSubmit(u),submitText:a("button.create"),children:e.jsx(jn,{repoId:s})})}function Aa(n){const{repoId:t,id:s,tenantId:r}=N(),{t:a}=E(),i=P(),l=new Te({queryClient:i,dataModelId:t}),{mutateAsync:o}=O(l.updateMeasureMutation()),d=g.useMemo(()=>yn(a),[a]),c=Y({defaultValues:{id:n.item?.id,name:n.item?.title,dataType:n.item?.type,definition:n.item?.sql,schemaId:n.item?.schemaId},resolver:we(d)});g.useEffect(()=>{n.open&&c.reset({id:n.item?.id,name:n.item?.title,dataType:n.item?.type,definition:n.item?.sql,schemaId:n.item?.schemaId})},[n.open,n.item]);const u=m=>{const{id:f,dataType:h,definition:p,name:x,schemaId:I}=m,y=fe.StringHelpers.convertToBase64(p);return te({eventName:ne.DATA_MODEL_MEASURE_UPDATE,eventType:ae["click-button"],tenantId:r,workspaceId:s,properties:{dataModelId:t,schemaId:I,measureId:f,dataType:h}}),z(o({payload:{id:f,definition:y,name:x,dataType:h},schemaId:I})).then(()=>{n.onSuccess?.()})};return e.jsx(Me,{open:n.open,title:a("edit_measure"),form:c,onClose:n.onClose,onSubmit:c.handleSubmit(u),submitText:a("button.update"),children:e.jsx(jn,{repoId:t})})}function Sn(n){const{defaultValues:t,onSubmit:s,submitting:r,ps:a,options:i}=n,{t:l}=E(),o=Y({defaultValues:{...t}}),{handleSubmit:d}=o;return _.createElement(ge,{...o},_.createElement("form",{onSubmit:d(s)},_.createElement($,null,_.createElement(se,{control:o.control,name:"measureFilterId",Component:le,componentProps:{options:i,label:l("measure_filter")}}),_.createElement($.Action,null,_.createElement(L,{variant:"tertiary",size:"md",onClick:()=>a.close()},l("button.cancel")),_.createElement(L,{variant:"primary",size:"md",type:"submit",endIcon:r?_.createElement(Ms,{size:20}):_.createElement(Ts,null)},l(t?"button.update":"button.create"))))))}function wa(n){const t=P(),s=new Te({queryClient:t,dataModelId:n.repoId}),{mutateAsync:r,isLoading:a}=O(s.linkMeasureMutation()),i=c=>{const{measureFilterId:u}=c;return z(r({measureFilterId:u.value,measureId:n.measureId})).then(()=>{n.onSuccess?.()})},[l]=Ne([{queryKey:s.getMeasureFiltersKey(n.schemaId),queryFn:()=>s.getMeasureFilters(n.schemaId)}]),d=(l.data?.data.data||[]).map(c=>{const{displayName:u}=c.attributes;return{label:u,value:c.id}});return _.createElement(Sn,{defaultValues:{measureFilterId:n.measureFilterId},onSubmit:i,submitting:a,ps:n.ps,options:d})}const Ra=hn()(wa);function Ma(n){const{t}=E(),{id:s,tenantId:r,repoId:a}=N();return e.jsx(ue,{...n,title:t("link_measure_filter"),children:e.jsx(Ra,{repoId:a,projectId:s,tenantId:r,measureId:n.item?.id,measureFilterId:n.item?.measureFilterId,schemaId:n.item?.schemaId,ps:{close(){n.onClose?.()}},onSuccess:n.onSuccess})})}function Ta(n){const t=P(),s=new Te({queryClient:t,dataModelId:n.repoId}),{mutateAsync:r,isLoading:a}=O(s.unlinkMeasureMutation()),i=c=>{const{measureFilterId:u}=c;return z(r({measureFilterId:u.value,measureId:n.measureId})).then(()=>{n.onSuccess?.()})},[l]=Ne([{queryKey:["unlink",n.measureId],queryFn:()=>s.getMeasureFiltersCondition(n.measureId)}]),d=(l.data?.data.data||[]).map(c=>{const{displayName:u}=c.attributes;return{label:u,value:c.id}});return _.createElement(Sn,{defaultValues:{measureFilterId:n.measureFilterId},onSubmit:i,submitting:a,ps:n.ps,options:d})}const La=hn()(Ta);function Oa(n){const{t}=E(),{id:s,tenantId:r,repoId:a}=N();return e.jsx(ue,{...n,title:t("unlink_measure_filter"),children:e.jsx(La,{repoId:a,projectId:s,tenantId:r,measureId:n.item?.id,measureFilterId:n.item?.measureFilterId,schemaId:n.item?.schemaId,ps:{close(){n.onClose?.()}},onSuccess:n.onSuccess})})}function ka(n,t){const{t:s}=E(),r=P(),{id:a,repoId:i}=N(),[l,o]=g.useState(null),[d,c]=g.useState(!1),[u,m]=g.useState(!1),[f,h]=g.useState(!1),[p,x]=g.useState(!1),[I,y]=g.useState(!1),[S,v]=g.useState(!1),D=new Te({projectId:a,queryClient:r,dataModelId:i}),M={page:1,pageSize:10},T=xe({queryKey:D.queryKey(M),queryFn:()=>D.filterMeasures(M)}),q=O(D.removeMeasureMutation()),K=O(D.publishMeasureMutation()),U=Ae(T,"data.data.data",[]).map(ie=>({...ie,sql:fe.StringHelpers.convertFromBase64(ie.sql)})),J=(ie,Ue)=>{switch(o(Ue),ie){case"delete":m(!0);break;case"edit":x(!0);break;case"publish":h(!0);break;case"link":y(!0);break;case"unlink":v(!0);break}},Ie=async()=>{await z(q.mutateAsync({schemaId:l?.schemaId,measureId:l?.id})),T.refetch(),m(!1)},k=async()=>{await z(K.mutateAsync({payload:{id:l?.id,isPublished:!l?.isPublished},schemaId:l?.schemaId})),T.refetch(),h(!1)};return g.useImperativeHandle(t,()=>({createMeasure:c}),[]),e.jsxs(j,{height:"100%",children:[e.jsxs(be,{children:[e.jsx("title",{children:`${s("data_model")} > ${s("measures")} - FPT Data Suite`}),e.jsx("meta",{name:"description",content:"Your personalized dashboard with reports"}),e.jsx("meta",{name:"keywords",content:"dashboard, reports, workspace, analytics"})]}),e.jsx(j,{bgcolor:he.bg.surface.main,borderRadius:V.large,height:"100%",children:e.jsx(Be,{columns:_a({repoId:i,onAction:J}),rows:U,initialState:{pagination:{paginationModel:{page:0,pageSize:10}}},pageSizeOptions:[10,25,50],disableColumnFilter:!0,disableColumnMenu:!0,hideFooterSelectedRowCount:!0,disableColumnResize:!0,rowHeight:48})}),e.jsx(Ge,{open:u,title:s("delete_measure"),content:s("delete_message",{name:l?.name}),isDeleting:q.isLoading,onClose:()=>m(!1),onDelete:Ie}),e.jsx(Ct,{open:f,title:l?.isPublished?s("unpublish_measure"):s("publish_measure"),content:l?.isPublished?s("unpublish_measure_message"):s("publish_measure_message"),progressing:K.isLoading,onClose:()=>h(!1),onConfirm:k}),e.jsx(Ea,{open:d,onSuccess:()=>{T.refetch(),c(!1)},onClose:()=>c(!1)}),e.jsx(Aa,{open:p,item:l,onSuccess:()=>{T.refetch(),x(!1)},onClose:()=>x(!1)}),e.jsx(Ma,{open:I,item:l,onSuccess:()=>{T.refetch(),y(!1)},onClose:()=>y(!1)}),e.jsx(Oa,{open:S,item:l,onSuccess:()=>{T.refetch(),v(!1)},onClose:()=>v(!1)})]})}const Fa=g.forwardRef(ka);function Na({repoId:n,onAction:t}){const{t:s}=E(),[r,a]=g.useState(null),i=(o,d)=>{a({el:o.currentTarget,id:d})},l=()=>{a(null)};return[{field:"displayName",headerName:s("name"),minWidth:200,flex:1,renderCell:o=>e.jsx(H,{title:o.value,children:e.jsx("span",{children:o.value})})},{field:"code",headerName:s("code"),flex:1,minWidth:200,renderCell:o=>e.jsx(H,{title:o.value,children:e.jsx("span",{children:o.value})})},{field:"sql",headerName:s("definition"),flex:1,minWidth:200,renderCell:o=>e.jsx(H,{title:o.value,children:e.jsx("span",{children:o.value})})},{field:"isPublished",headerName:s("status"),width:120,align:"center",renderCell:o=>e.jsxs(j,{alignItems:"center",justifyContent:"center",sx:{height:"100%"},children:[o.value&&e.jsx(Oe,{label:s("published"),color:"primary",size:"small",style:{backgroundColor:"#D9E2FF",color:"#004299"}}),!o.value&&e.jsx(Oe,{label:s("draft"),size:"small"})]})},{field:"actions",headerName:s("actions"),width:80,align:"center",renderCell:o=>
5e.jsxs(me,{action:Fe.data_model["write-data_model"],subject:{name:ke.data_model,id:n},children:[e.jsx(j,{cursor:"pointer",onClick:d=>i(d,o.row.id),children:e.jsx(Je,{sx:{width:16,height:16,color:he.ic.normal.tertiary}})}),e.jsxs(Re,{anchorEl:r?.el,open:o.row.id===r?.id,onClose:l,anchorOrigin:{vertical:"center",horizontal:"left"},transformOrigin:{vertical:"center",horizontal:"right"},children:[e.jsx(B,{icon:e.jsx(at,{}),text:o.row.isPublished?s("unpublish"):s("publish"),onClick:()=>{t("publish",o.row),l()}}),e.jsx(B,{icon:e.jsx(Ze,{}),text:s("button.edit"),onClick:()=>{t("edit",o.row),l()}}),e.jsx(B,{icon:e.jsx(Ve,{}),text:s("button.delete"),isDelete:!0,onClick:()=>{t("delete",o.row),l()}})]})]},`read-data-model-${o.id}`),sortable:!1}]}const qa=({schemaId:n,schemas:t})=>{if(re(t))return[];const s=t.find(a=>a.id===n),{dimensions:r=[]}=s?.attributes||{};return r.filter(a=>!a.isDimensionFilter).map(({name:a,id:i})=>({label:a,value:i}))};function vn({repoId:n,isEdit:t=!1}){const{t:s}=E(),r=oe(),a=en({name:"schemaId"}),[i,l]=_.useState([]),o=mn({repoId:n}),{data:d=[]}=o?.data||{},c=d.map(u=>({label:u.attributes.name,value:u.id}));return g.useEffect(()=>{l(qa({schemas:d,schemaId:a}))},[a]),_.createElement($,null,!t&&_.createElement(gt,{name:"schemaId",label:s("schema"),options:c,formContext:r,placeholder:s("select_schema")}),!t&&_.createElement(gt,{name:"dimensionId",label:s("dimension"),options:i,formContext:r,placeholder:s("select_dimension")}),_.createElement(ee,{name:"displayName",label:s("name"),placeholder:s("measure_filter_name")}),_.createElement(ee,{name:"code",label:s("code"),placeholder:s("measure_filter_code")}))}function $a(n){const{t}=E(),{id:s,repoId:r}=N(),a=P(),i=g.useMemo(()=>Ee().shape({schemaId:Q().required(t("this_field_is_required")),dimensionId:Q().required(t("this_field_is_required")),displayName:Q().required(t("name_is_required",{name:t("name")})),code:Q().required(t("name_is_required",{name:t("code")}))}),[t]),{onSuccess:l,onClose:o,...d}=n,c=Y({resolver:we(i),defaultValues:{schemaId:"",dimensionId:"",displayName:"",code:""}});g.useEffect(()=>{d.open&&c.reset({schemaId:"",dimensionId:"",displayName:"",code:""})},[d.open,c]);const u=new Te({projectId:s,queryClient:a,dataModelId:r}),{mutateAsync:m,isLoading:f}=O(u.createMeasureFilterMutation()),h=p=>{const{displayName:x,code:I,schemaId:y,dimensionId:S}=p;return z(m({payload:{displayName:x,code:fe.StringHelpers.convertToBase64(I),repositoryId:r,schemaId:y,dimensionId:S}})).then(()=>{l?.(),o?.()})};return e.jsx(Me,{...d,title:t("create_measure_filter"),form:c,isLoading:f,onClose:o,onSubmit:c.handleSubmit(h),submitText:t("button.create"),children:e.jsx(vn,{repoId:r})})}function Pa(n){const{t}=E(),{repoId:s}=N(),r=P(),a=g.useMemo(()=>Ee().shape({displayName:Q().required(t("name_is_required",{name:t("name")})),code:Q().required(t("name_is_required",{name:t("code")}))}),[t]),{onSuccess:i,onClose:l,item:o,...d}=n,c=Y({resolver:we(a),defaultValues:{displayName:"",code:"",sql:""}});g.useEffect(()=>{d.open&&o&&c.reset({displayName:o.displayName??"",code:o.code??"",sql:o.sql??""})},[d.open,o,c]);const u=new Te({queryClient:r,dataModelId:s}),{mutateAsync:m,isLoading:f}=O(u.updateMeasureFilterMutation()),h=p=>{const{displayName:x,sql:I,code:y}=p;return z(m({displayName:x,sql:fe.StringHelpers.convertToBase64(I),code:fe.StringHelpers.convertToBase64(y),measureId:o?.id})).then(()=>{i?.(),l?.()})};return e.jsx(Me,{...d,title:t("edit_measure_filter"),form:c,isLoading:f,onClose:l,onSubmit:c.handleSubmit(h),submitText:t("button.update"),children:e.jsx(vn,{repoId:s,isEdit:!0})})}function za(n,t){const{t:s}=E(),r=P(),{id:a,repoId:i}=N(),l=new Te({projectId:a,queryClient:r,dataModelId:i}),[o]=Ne([{queryKey:l.measureFilterKey(),queryFn:()=>l.allMeasureFilters()}]),d=O(l.removeMeasureFilterMutation()),c=O(l.publishMeasureFilterMutation()),m=(o.data?.data.data||[]).map(F=>({id:F.id,...F.attributes,code:fe.StringHelpers.convertFromBase64(F.attributes.code)})),[f,h]=g.useState(!1),[p,x]=g.useState(null),[I,y]=g.useState(!1),[S,v]=g.useState(!1),[D,M]=g.useState(!1),T=async()=>{await z(c.mutateAsync({measureId:p.id})),o.refetch(),v(!1)},q=async()=>{await z(d.mutateAsync({repositoryId:i,measureId:p?.id}
5)),o.refetch(),y(!1)};g.useImperativeHandle(t,()=>({createMeasureFilter:h}),[]);const K=(F,U)=>{switch(x(U),F){case"delete":y(!0);break;case"edit":M(!0);break;case"publish":v(!0);break}};return e.jsxs(j,{height:"100%",children:[e.jsxs(be,{children:[e.jsx("title",{children:`${s("data_model")} > ${s("measures")} - FPT Data Suite`}),e.jsx("meta",{name:"description",content:"Your personalized dashboard with reports"}),e.jsx("meta",{name:"keywords",content:"dashboard, reports, workspace, analytics"})]}),e.jsx(j,{bgcolor:he.bg.surface.main,borderRadius:V.large,height:"100%",children:e.jsx(Be,{columns:Na({repoId:i,onAction:K}),rows:m,initialState:{pagination:{paginationModel:{page:0,pageSize:10}}},pageSizeOptions:[10,25,50],disableColumnFilter:!0,disableColumnMenu:!0,hideFooterSelectedRowCount:!0,disableColumnResize:!0,rowHeight:48})}),e.jsx($a,{open:f,onSuccess:()=>{o.refetch(),h(!1)},onClose:()=>h(!1)}),e.jsx(Pa,{open:D,item:p,onSuccess:()=>{o.refetch(),M(!1)},onClose:()=>M(!1)}),e.jsx(Ct,{open:S,title:p?.isPublished?s("unpublish_measure"):s("publish_measure"),content:p?.isPublished?s("unpublish_measure_message"):s("publish_measure_message"),progressing:c.isLoading,onClose:()=>v(!1),onConfirm:T}),e.jsx(Ge,{open:I,title:s("delete_measure"),content:s("delete_message",{name:p?.displayName}),isDeleting:d.isLoading,onClose:()=>y(!1),onDelete:q})]})}const Ba=g.forwardRef(za);function Ga({repoId:n,onAction:t}){const{t:s}=E(),[r,a]=g.useState(null),i=(o,d)=>{a({el:o.currentTarget,id:d})},l=()=>{a(null)};return[{field:"name",headerName:s("name"),flex:1,minWidth:200,maxWidth:300},{field:"sql",headerName:s("definition"),flex:1},{field:"isPublished",headerName:s("status"),width:150,align:"center",renderCell:o=>e.jsxs(j,{sx:{height:"100%"},alignItems:"center",justifyContent:"center",children:[o.value&&e.jsx(Oe,{label:s("published"),color:"primary",size:"small",style:{backgroundColor:"#D9E2FF",color:"#004299"}}),!o.value&&e.jsx(Oe,{label:s("draft"),size:"small"})]})},{field:"actions",headerName:s("actions"),width:80,align:"center",renderCell:o=>e.jsxs(me,{action:Fe.data_model["write-data_model"],subject:{name:ke.data_model,id:n},children:[e.jsx(j,{cursor:"pointer",onClick:d=>i(d,o.row.id),children:e.jsx(Je,{sx:{width:16,height:16,color:he.ic.normal.tertiary}})}),e.jsxs(Re,{anchorEl:r?.el,open:o.row.id===r?.id,onClose:l,anchorOrigin:{vertical:"center",horizontal:"left"},transformOrigin:{vertical:"center",horizontal:"right"},children:[e.jsx(B,{icon:e.jsx(at,{}),text:o.row.isPublished?s("unpublish"):s("publish"),onClick:()=>{t("publish",o.row),l()}}),e.jsx(B,{icon:e.jsx(Ze,{}),text:s("button.edit"),onClick:()=>{t("edit",o.row),l()}}),e.jsx(B,{icon:e.jsx(Ve,{}),text:s("button.delete"),isDelete:!0,onClick:()=>{t("delete",o.row),l()}})]})]},`read-data-model-${o.id}`),sortable:!1}]}function In(){const{t:n}=E(),{control:t}=oe();return _.createElement($,null,_.createElement(ee,{name:"name",label:n("name"),placeholder:n("measure_name")}),_.createElement(se,{control:t,name:"sql",Component:or,componentProps:{label:n("sql"),placeholder:n("sql"),minRows:4}}))}class Et{constructor({projectId:t,queryClient:s,dataModelId:r}){R(this,"invalidateCache",()=>{this.queryClient.invalidateQueries(this.queryKey())});R(this,"publishMeasure",()=>({mutationKey:"publishFormulaMeasure",mutationFn:({id:t})=>w.put(`/v1/formula-measures/${t}/publish/repository/${this.dataModelId}`),onSuccess:this.invalidateCache}));R(this,"updateMeasure",()=>({mutationKey:"updateFormulaMeasure",mutationFn:({id:t,sql:s,name:r})=>w.put(`/v1/formula-measures/${t}`,{sql:s,name:r,repositoryId:this.dataModelId}),onSuccess:this.invalidateCache}));R(this,"createMeasure",()=>({mutationKey:"updateFormulaMeasure",mutationFn:({sql:t,name:s})=>w.post("/v1/formula-measures",{sql:t,name:s,repositoryId:this.dataModelId}),onSuccess:this.invalidateCache}));R(this,"deleteMeasure",()=>({mutationKey:"deleteFormulaMeasure",mutationFn:({id:t})=>w.delete(`/v1/formula-measures/${t}/repository/${this.dataModelId}`),onSuccess:this.invalidateCache}));this.projectId=t,this.queryClient=s,this.dataModelId=r}queryKey(t){if(!t)return["project",this.projectId,"formula-measures"];const{page:s,pageSize:r}=t;return[this.projectId,"formula-measures",{page:s,pageSize:r}]}getAllMeasures(){return w.get(`/v1/formula-measures?dataModelId=${this.dataModelId}`)}getMeasure(t){return w.get(`/v1/formula-measures/${t}/repository/${this.dataModelId}`)}}function Va(n){const{t}=E(),{id:s,repoId:r,tenantId:a}=N(),i=P(),l=g.useMemo(()=>Ee().shape({name:Q().required(t("name_is_required",{name:t("name")}
5)),sql:Q().required(t("this_field_is_required"))}),[t]),{onSuccess:o,onClose:d,...c}=n,u=Y({resolver:we(l),defaultValues:{name:"",sql:""}});g.useEffect(()=>{c.open&&u.reset({name:"",sql:""})},[c.open,u]);const m=new Et({projectId:s,queryClient:i,dataModelId:r}),{mutateAsync:f,isLoading:h}=O(m.createMeasure()),p=x=>{const{sql:I,name:y}=x;return te({eventName:ne.DATA_MODEL_FORMULA_MEASURE_CREATE,eventType:ae["click-button"],tenantId:a,workspaceId:s,properties:{dataModelId:r}}),z(f({sql:fe.StringHelpers.convertToBase64(I),name:y})).then(()=>{o?.(),d?.()})};return e.jsx(Me,{...c,title:t("create_formula_measure"),form:u,isLoading:h,onClose:d,onSubmit:u.handleSubmit(p),submitText:t("button.create"),children:e.jsx(In,{})})}function Ua(n){const{t}=E(),{repoId:s,id:r,tenantId:a}=N(),i=P(),l=g.useMemo(()=>Ee().shape({name:Q().required(t("name_is_required",{name:t("name")})),sql:Q().required(t("this_field_is_required"))}),[t]),{onSuccess:o,onClose:d,item:c,...u}=n,m=Y({resolver:we(l),defaultValues:{name:"",sql:""}});g.useEffect(()=>{u.open&&c&&m.reset({name:c.name??"",sql:c.sql??""})},[u.open,c,m]);const f=new Et({queryClient:i,dataModelId:s}),{mutateAsync:h,isLoading:p}=O(f.updateMeasure()),x=I=>{const{name:y,sql:S}=I;return te({eventName:ne.DATA_MODEL_FORMULA_MEASURE_UPDATE,eventType:ae["click-button"],tenantId:a,workspaceId:r,properties:{dataModelId:s,formulaMeasureId:c?.id}}),z(h({sql:fe.StringHelpers.convertToBase64(S),name:y,id:c?.id})).then(()=>{o?.(),d?.()})};return e.jsx(Me,{...u,title:t("edit_measure"),form:m,isLoading:p,onClose:d,onSubmit:m.handleSubmit(x),submitText:t("button.update"),children:e.jsx(In,{})})}function Ka(n,t){const{t:s}=E(),r=P(),{id:a,repoId:i}=N(),l=new Et({projectId:a,queryClient:r,dataModelId:i}),o=O(l.deleteMeasure()),d=O(l.publishMeasure()),[c]=Ne([{queryKey:l.queryKey(),queryFn:()=>l.getAllMeasures()}]),m=(c.data?.data.data||[]).map(F=>({id:F.id,...F.attributes,sql:fe.StringHelpers.convertFromBase64(F.attributes.sql)})),[f,h]=g.useState(!1),[p,x]=g.useState(null),[I,y]=g.useState(!1),[S,v]=g.useState(!1),[D,M]=g.useState(!1),T=async()=>{await z(d.mutateAsync({id:p.id})),c.refetch(),v(!1)},q=async()=>{await z(o.mutateAsync({id:p.id})),c.refetch(),y(!1)};g.useImperativeHandle(t,()=>({createFormulaMeasure:h}),[]);const K=(F,U)=>{switch(x(U),F){case"delete":y(!0);break;case"edit":M(!0);break;case"publish":v(!0);break}};return e.jsxs(j,{height:"100%",children:[e.jsxs(be,{children:[e.jsx("title",{children:`${s("data_model")} > ${s("measures")} - FPT Data Suite`}),e.jsx("meta",{name:"description",content:"Your personalized dashboard with reports"}),e.jsx("meta",{name:"keywords",content:"dashboard, reports, workspace, analytics"})]}),e.jsx(j,{bgcolor:he.bg.surface.main,borderRadius:V.large,height:"100%",children:e.jsx(Be,{columns:Ga({repoId:i,onAction:K}),rows:m,pagination:!0,initialState:{pagination:{paginationModel:{page:0,pageSize:10}}},pageSizeOptions:[10,25,50],disableColumnFilter:!0,disableColumnMenu:!0,hideFooterSelectedRowCount:!0,disableColumnResize:!0,rowHeight:48})}),e.jsx(Va,{open:f,onSuccess:()=>{c.refetch(),h(!1)},onClose:()=>h(!1)}),e.jsx(Ua,{open:D,item:p,onSuccess:()=>{c.refetch(),M(!1)},onClose:()=>M(!1)}),e.jsx(Ct,{open:S,title:p?.isPublished?s("unpublish_measure"):s("publish_measure"),content:p?.isPublished?s("unpublish_measure_message"):s("publish_measure_message"),progressing:d.isLoading,onClose:()=>v(!1),onConfirm:T}),e.jsx(Ge,{open:I,title:s("delete_measure"),content:s("delete_message",{name:p?.name}),isDeleting:o.isLoading,onClose:()=>y(!1),onDelete:q})]})}const Ha=g.forwardRef(Ka);function Wa(){const n=O(s=>dr.post("/query",{params:s}));return{handleQuery:s=>n.mutateAsync(s),mutation:n}}const Qa=n=>n.dimensionsMapping.concat(n.metricsMapping).map((s,r)=>({id:`${s.field}-${r}`,field:s.columnName,headerName:s.displayName,flex:1,display:"flex",renderCell:a=>_.createElement(j,{display:"flex",width:"100%"},s.columnType==="number"&&_.createElement(j,{display:"flex",alignItems:"end",width:"100%"},mr(a.value)),s.columnType!=="number"&&hr(a))}));function Ya({explorerData:n}){const{t}=E();if(!n)return _.createElement("p",null,t("no_data"));const s=Qa(n.data.config),r=(n.data.data||[]).map((a,i)=>({...a,id:i}));return _.createElement(ur,{rows:r,columns:s,disableSelectionOnClick:!0,disableColumnSelector:!0,disableColumnFilter:!0,columnMenu:!0,hideFooter:!0})}const Ja=n=>{if(!n)return null;const s=(n.attributes.schemata?.data||[]).map(r=>{const i=cr(r.attributes.schemaMeasures?.data)?.map(c=>
5({...c,id:String(c.id),schemaName:r.attributes.name})),l=n.attributes.formulaMeasures?.data?.map(c=>({...c,id:String(c.id),title:c.attributes.name})),o=(r.attributes.measures||[]).map(c=>({...c,schemaName:r.attributes.name})),d=(r.attributes.dimensions||[]).map(c=>({...c,schemaName:r.attributes.name}));return{...r,attributes:{...Ws(r.attributes,["measures","schemaMeasures"]),measures:Hs(o,i,l),dimensions:d}}});return Qs(n,"attributes.schemata.data",s)},pt=n=>re(n)?[]:n.map(t=>({label:t.title||t.name,value:t.id,group:t.schemaName}));function Za(){const{t:n}=E(),t=P(),{id:s,repoId:r,tenantId:a}=N(),[i,l]=g.useState(null),o=Y(),d=new un({projectId:s,queryClient:t}),c=xe({...d.getRepository({repositoryId:r}),suspense:!1}),u=Ae(c,"data.data.data");g.useEffect(()=>{const p=Ja(u);l(new ir({dataModel:p}))},[u]);const{handleQuery:m,mutation:f}=Wa(),h=p=>m({repositoryId:r,projectId:s,tenantId:a,dimensions:(p.dimensions||[]).map(({value:x})=>({field:x})),metrics:(p.metrics||[]).map(({value:x})=>({field:x})),filters:(p.filters||[]).map(({value:x})=>({field:x,operator:pe(p.operators)?.value,values:[p.values]}))});return e.jsxs(j,{height:"100%",children:[e.jsxs(be,{children:[e.jsx("title",{children:`${n("data_model")} > ${n("explorer")} - FPT Data Suite`}),e.jsx("meta",{name:"description",content:"Your personalized dashboard with reports"}),e.jsx("meta",{name:"keywords",content:"dashboard, reports, workspace, analytics"})]}),e.jsxs(j,{bgcolor:b.background.white,borderRadius:V.large,height:"100%",display:"flex",flexDirection:"column",overflow:"hidden",padding:4,border:`1px solid ${b.border.neutral.border1}`,children:[e.jsx(ge,{...o,children:e.jsx("form",{onSubmit:o.handleSubmit(h),children:e.jsxs($,{children:[i?.allDimensions&&e.jsx(se,{control:o.control,name:"dimensions",Component:le,componentProps:{options:pt(i?.allDimensions),isMulti:!0,isSearchable:!0,label:n("dimensions")}}),e.jsx(se,{control:o.control,name:"metrics",Component:le,componentProps:{options:pt(i?.allMetrics),isMulti:!0,isSearchable:!0,label:n("metrics")}}),e.jsx(se,{control:o.control,name:"filters",Component:le,componentProps:{options:pt(i?.allDimensions),isMulti:!0,isSearchable:!0,label:n("filter")}}),e.jsx(se,{control:o.control,name:"operators",Component:le,componentProps:{options:[{label:"equals",value:"equals"},{label:"not equals",value:"notEquals"},{label:"contains",value:"contains"},{label:"not contains",value:"notContains"},{label:"greater than",value:"gt"},{label:"greater than or equals",value:"gte"},{label:"less than",value:"lt"},{label:"less than or equals",value:"lte"}],isMulti:!0,isSearchable:!0,label:n("operator")}}),e.jsx(ee,{name:"values",label:n("values"),placeholder:n("filter_value")}),e.jsx($.Action,{formDirection:"flex-start",children:e.jsx(L,{type:"submit",variant:"contained",children:n("query")})})]})})}),e.jsxs(j,{mt:6,overflow:"hidden",children:[f.isLoading&&e.jsx("div",{children:"Loading..."}),f.isError&&e.jsx("pre",{children:JSON.stringify(f.error?.response?.data,null,2)}),f.data&&e.jsx(Ya,{explorerData:f.data})]})]})]})}const Xa=g.forwardRef(Za);class Le{constructor({queryClient:t,repositoryId:s,projectId:r,dataRoleId:a}){R(this,"queryClient");R(this,"repositoryId");R(this,"projectId");R(this,"dataRoleId");R(this,"createRole",({onSuccess:t=()=>{},onError:s=()=>{}})=>({mutationFn:({roleName:r,repositoryId:a})=>w.post("/v1/data-roles",{roleName:r,repositoryId:a}),onSuccess:r=>{t&&t(r),this.queryClient.invalidateQueries(this.dataRolesKey)},onError:r=>{s&&s(r)}}));R(this,"updateRole",({onSuccess:t=()=>{},onError:s=()=>{}})=>({mutationFn:({dataRoleId:r,updateData:a,datasetId:i,workspaceId:l})=>w.put(`/v1/repositories/${this.repositoryId}/data-roles`,{dataRoleId:r,updateData:a,datasetId:i,workspaceId:l}),onSuccess:r=>{t&&t(r),this.queryClient.invalidateQueries(this.dataRolesKey),this.queryClient.invalidateQueries(this.schemaByRoleKey)},onError:r=>{s&&s(r)}}));R(this,"deleteRole",({onSuccess:t=()=>{},onError:s=()=>{}})=>({mutationFn:r=>w.delete(`/v1/repositories/${this.repositoryId}/data-roles`,{params:{dataRoleId:r}}),onSuccess:r=>
5{t&&t(r),this.queryClient.invalidateQueries(this.dataRolesKey),this.queryClient.invalidateQueries(this.schemaByRoleKey)},onError:r=>{s&&s(r)}}));R(this,"assignUserGroups",({onSuccess:t=()=>{},onError:s=()=>{}})=>({mutationFn:({userGroupIds:r})=>w.put(`/v1/repositories/${this.repositoryId}/data-roles/${this.dataRoleId}/user-groups`,{userGroupIds:r}),onSuccess:r=>{t&&t(r),this.queryClient.invalidateQueries(this.userGroupsForRoleKey)},onError:r=>{s&&s(r)}}));R(this,"removeUserGroup",({onSuccess:t=()=>{},onError:s=()=>{}})=>({mutationFn:({userGroupId:r})=>w.delete(`/v1/repositories/${this.repositoryId}/data-roles/${this.dataRoleId}/user-groups/${r}`),onSuccess:r=>{t&&t(r),this.queryClient.invalidateQueries(this.userGroupsForRoleKey)},onError:r=>{s&&s(r)}}));R(this,"duplicateRole",({onSuccess:t=()=>{},onError:s=()=>{}})=>({mutationFn:({dataRoleId:r})=>w.post(`/v1/repositories/${this.repositoryId}/data-roles/duplicate-role`,{dataRoleId:r}),onSuccess:r=>{t&&t(r),this.queryClient.invalidateQueries(this.dataRolesKey)},onError:r=>{s&&s(r)}}));this.queryClient=t,this.repositoryId=s,this.projectId=r,this.dataRoleId=a}get dataRolesKey(){return["data-roles",this.repositoryId]}getRoles({onSuccess:t}={}){return{queryKey:this.dataRolesKey,queryFn:()=>w.get(`/v1/repositories/${this.repositoryId}/data-roles`),onSuccess:s=>{t&&t(s)}}}get schemaByRoleKey(){return["data-model",this.repositoryId,"data-role",this.dataRoleId]}getSchemasByRole({onSuccess:t}={}){return{queryKey:this.schemaByRoleKey,queryFn:()=>w.get(`/v1/repositories/${this.repositoryId}/data-roles/schemas?dataRoleId=${this.dataRoleId}`),onSuccess:s=>{t&&t(s)}}}getTenantMembers(){return{queryKey:["workspace-member",this.projectId],queryFn:()=>w.get(`/v1/workspace/${this.projectId}/members`)}}get userGroupsForRoleKey(){return["data-role-user-groups",this.repositoryId,this.dataRoleId]}get projectUserGroupsKey(){return["project-user-groups",this.projectId]}getUserGroupsForRole(){return{queryKey:this.userGroupsForRoleKey,queryFn:()=>w.get(`/v1/repositories/${this.repositoryId}/data-roles/${this.dataRoleId}/user-groups`),select:t=>t?.data?.data??[]}}getProjectUserGroups(){return{queryKey:this.projectUserGroupsKey,queryFn:()=>w.get(`/v1/project/${this.projectId}/user-group`),select:t=>t?.data?.data??[]}}}function eo({role:n,handleClose:t}){const{t:s}=E(),r=P(),{repoId:a,tenantId:i,id:l}=N(),o=new Le({queryClient:r,repositoryId:a,tenantId:i}),{mutate:d,isLoading:c}=O(o.createRole({onSuccess:()=>{X.success(),t?.()},onError:()=>{X.error({title:s("error.create_role_failed")}),t?.()}})),{mutate:u,isLoading:m}=O(o.updateRole({onSuccess:()=>{X.success(),t?.()},onError:()=>{X.error({title:s("error.update_role_failed")}),t?.()}})),f=p=>{const{roleName:x}=p;if(!n){te({eventName:ne.DATA_MODEL_RLS_ROLE_CREATE,eventType:ae["click-button"],tenantId:i,workspaceId:l,properties:{dataModelId:a}}),d({roleName:x,repositoryId:a});return}te({eventName:ne.DATA_MODEL_RLS_ROLE_UPDATE,eventType:ae["click-button"],tenantId:i,workspaceId:l,properties:{dataModelId:a,roleId:n.id,updateType:"rename"}}),u({dataRoleId:n.id,workspaceId:l,updateData:{name:x}})},h=Y({defaultValues:{roleName:n?.name},resolver:we(Ee({roleName:Q().required(s("DATA_MODEL.DATA_ROLES.ROLES.ROLE_NAME_REQUIRED")||"This field is required").max(255,s("DATA_MODEL.DATA_ROLES.ROLES.ROLE_NAME_MAX_LENGTH")||"Maximum 255 characters allowed")}))});return g.useEffect(()=>{h.reset({roleName:n?.name})},[n]),e.jsx(ge,{...h,children:e.jsxs("form",{onSubmit:h.handleSubmit(f),children:[e.jsx($,{children:e.jsx(ee,{name:"roleName",autoFocus:!0,label:s("DATA_MODEL.DATA_ROLES.ROLES.ROLE_NAME")})}),e.jsxs($.Action,{children:[e.jsx(L,{variant:"tertiary",size:"md",onClick:()=>t?.(),children:s("button.cancel")}),e.jsx(L,{type:"submit",variant:"primary",size:"md",disabled:c||m,children:s(n?"button.save":"button.create")})]})]})})}const st={equals:"equals",notEquals:"notEquals",contains:"contains",notContains:"notContains",startsWith:"startsWith",endsWith:"endsWith",gt:"gt",gte:"gte",lt:"lt",lte:"lte",set:"set",notSet:"notSet",inDateRange:"inDateRange",notInDateRange:"notInDateRange",beforeDate:"beforeDate",afterDate:"afterDate"},to=({type:n})=>n==="string"?ut(st,["equals","notEquals","contains","notContains","startsWith","endsWith","set","notSet"]):["number","sum","count","count_distinct","count_distinct_approx","avg","min","max"].includes(n)?ut(st,["equals","notEquals","set","notSet","gt","gte","lt","lte","set","notSet"]):n==="time"?ut(st,["equals","notEquals","set","notSet","inDateRange","notInDateRange","beforeDate","afterDate","gte","lte"]):{},Ce={equals:"Equals",notEquals:"Does not Equal",contains:"Contains",notContains:"Does not Contain",startsWith:"Starts With",endsWith:"Ends With",gt:"Greater Than",gte:"Greater Than Or Equal To",lt:"Less Than",lte:"Less Than Or Equal To",set:"Is Blank",notSet:"Is not Blank",inDateRange:"In Date Range",notInDateRange:"Not In Date Range",beforeDate:"Before Date",afterDate:"After Date",in:"In",notIn:"Not In"};var We=(n=>(n.Static="static",n.Dynamic="dynamic",n))(We||{});const Gt={static:"Static",dynamic:"Dynamic"},Vt={VIEWER_LOGIN_EMAIL:"VIEWER_LOGIN_EMAIL"},Cn=["inDateRange","notInDateRange"],yt=["set","notSet"],_e=["in","notIn"],Ut=n=>
5typeof n!="string"?[]:n.split(";").map(t=>t.trim()).filter(t=>t!=="");class W{constructor(t,s){R(this,"dataset");R(this,"role");this.dataset=t,this.role=s}get dimensionOptions(){const{dimensions:t=[]}=this.dataset||{};return re(t)?[]:t.map(({name:s,type:r})=>({label:s,value:s,type:r}))}static getDimensionOperatorOptions(){return Object.keys(st).map(t=>({value:t,label:Ce[t]}))}static getOperatorOptionsByDimensionType(t){const s=to({type:t});return Object.keys(s).map(r=>({value:r,label:Ce[r]}))}static getRoleBasedSecurityOperatorOptions(){return[{value:"equals",label:Ce.equals},{value:"notEquals",label:Ce.notEquals},{value:"in",label:Ce.in},{value:"notIn",label:Ce.notIn}]}static getRoleBasedSecurityValueTypeOptions(){return Object.entries(Gt).map(([t])=>({value:t,label:Gt[t]}))}static getRoleBasedSecurityValueTypeDynamicOptions(){return Object.entries(Vt).map(([t])=>({value:t,label:Vt[t]}))}getFilters(){const{role:t,dataset:s,dimensionOptions:r}=this,{filters:a=[]}=t||{},{datasetId:i}=s||{},l=a.filter(u=>Number(u.datasetId)===Number(i)),o=W.getDimensionOperatorOptions(),d=W.getRoleBasedSecurityValueTypeOptions(),c=W.getRoleBasedSecurityValueTypeDynamicOptions();return l.map(u=>{const{field:m,operator:f,datasetId:h,values:p,valueType:x="static"}=u,I=_e.includes(f),y=!I&&p.length>1,S=x==="dynamic";return{field:r.find(v=>v.value===m),operator:o.find(v=>v.value===f),datasetId:h,...I?{value:p.join(";")}:y?{startDate:p[0],endDate:p[1]}:{value:S?c.find(v=>v.value===pe(p)):pe(p)},valueType:d.find(v=>v.value===x)}})}getDefaultFormValues(){return{filters:this.getFilters(),setOperator:this.role.setOperator}}static convertDataFilterSubmit(t){const{setOperator:s,filters:r=[]}=t,a=this.filterEmptyValues(r);return re(a)?{filters:[],setOperator:s}:{filters:this.convertFilters(a),setOperator:s}}static filterEmptyValues(t){return t.filter(s=>(yt.includes(s.operator.value)||!re(s?.value)||s?.startDate&&s?.endDate)&&!re(s.field))}static convertFilters(t){return t.map(s=>{const{field:r,operator:a,startDate:i,endDate:l,value:o,datasetId:d,valueType:c}=s||{},u=Cn.includes(a.value),m=yt.includes(a.value),f=_e.includes(a.value);return{datasetId:d,field:r.value,operator:a.value,valueType:c?.value,value:f?typeof o=="string"?o.split(";").map(h=>h.trim()).filter(Boolean):[]:this.getFilterValue(m,u,i,l,o)}})}static getFilterValue(t,s,r,a,i){return t?"":s?[r,a]:typeof i=="string"?i:i?.value??""}static getDefaultTreeFormValues(t,s){const{filters:r,setOperator:a}=s||{},i=W.getRoleBasedSecurityOperatorOptions(),l=W.getRoleBasedSecurityValueTypeOptions(),o=W.getRoleBasedSecurityValueTypeDynamicOptions(),d=r&&!Array.isArray(r)&&r.kind==="Group",c=Array.isArray(r)?r:[],u=d?r:null,m=u?u.op:a||"AND",f=t.map(h=>{let p=a||"AND",x=[];if(u){const I=u.children.find(y=>{if(y.kind!=="Group")return!1;const S=y.children.find(v=>v.kind==="Condition");return S?S.dimension.split(".")[0]===h.name:!1});I&&(p=I.op,x=I.children.filter(y=>y.kind==="Condition").map(y=>{const S=y,v=S.dimension.split(".").slice(1).join("."),D=h.dimensions?.find(q=>q.name===v),M=S.valueType?.toLowerCase()==="dynamic",T=_e.includes(S.comparator);return{field:D?{value:D.name,label:D.name,type:D.type}:{value:v,label:v},operator:i.find(q=>q.value===S.comparator)||{value:S.comparator,label:S.comparator},valueType:l.find(q=>q.value.toLowerCase()===S.valueType?.toLowerCase())||l[0],value:M?o.find(q=>q.value===S.value)||{value:S.value,label:S.value}:S.value}}))}else x=c.filter(y=>Number(y.datasetId)===Number(h.datasetId)).map(y=>{const{field:S,operator:v,values:D=[],valueType:M="static"}=y,T=h.dimensions?.find(F=>F.name===S),q=M?.toLowerCase()==="dynamic",K=_e.includes(v);return{field:T?{value:T.name,label:T.name,type:T.type}:{value:S,label:S},operator:i.find(F=>F.value===v)||{value:v,label:v},valueType:l.find(F=>F.value.toLowerCase()===M?.toLowerCase())||l[0],value:q?o.find(F=>F.value===D[0])||{value:D[0]||"",label:D[0]||""}:K?D.join(";"):D[0]||""}});return{datasetId:h.datasetId,schemaId:h.schemaId,tableName:h.name,op:p,filters:x}});return{globalOp:m,groups:f}}static validateTreeSubmit(t){return t.groups.flatMap(r=>r.filters.map(a=>({group:r,f:a}))).map(({group:r,f:a})=>{const i=a.operator?.value||"";if(!a.field||!_e.includes(i))return null;const l=a.field,o=`${r.tableName}.${l?.label||l?.value||""}`;if(a.valueType?.value==="dynamic")return`"${o}": the "${Ce[i]}" operator is not compatible with the Dynamic value type. Switch to Static.`;const c=typeof a.value=="string"?a.value:a.value?.value||"";return Ut(c).length===0?`"${o}": the "${Ce[i]}" value list is empty. Enter at least one value separated by ";".`:null}
5).filter(Boolean)[0]||null}static convertTreeSubmit(t){const{globalOp:s,groups:r}=t,a=r.filter(l=>l.filters.length>0);if(a.length===0)return{filters:null};const i=a.map(l=>({kind:"Group",op:l.op,children:l.filters.filter(o=>o.field&&o.operator).map(o=>{const d=o.operator?.value||"",c=o.valueType?.value==="dynamic",u=_e.includes(d);let m;if(c&&typeof o.value=="object"&&o.value)m=o.value.value||"";else if(u){const p=typeof o.value=="string"?o.value:o.value?.value||"";m=Ut(p).join(";")}else m=typeof o.value=="string"?o.value:o.value?.value||"";const f=o.valueType?.value||"static",h=f.charAt(0).toUpperCase()+f.slice(1);return{kind:"Condition",dimension:`${l.tableName}.${o.field?.value||""}`,comparator:d,valueType:h,value:m}})}));return{filters:{kind:"Group",op:s,children:i}}}static countTreeStats(t){if(!t)return{totalFilters:0,totalTables:0};if(Array.isArray(t)){const i=new Set(t.map(l=>l.datasetId));return{totalFilters:t.length,totalTables:i.size}}const s=t;let r=0,a=0;return s.children.forEach(i=>{if(i.kind==="Group"){const l=i.children.filter(o=>o.kind==="Condition").length;l>0&&(r+=l,a++)}else r++}),{totalFilters:r,totalTables:a}}}const _n=`1px solid ${b.border.neutral.border1}`,Dn={borderRadius:V.small,minWidth:160,boxShadow:"rgba(16,24,40,0.06) 0 1px 2px 0, rgba(16,24,40,0.10) 0 1px 3px 0"};function no({selected:n}){return e.jsx(j,{sx:{width:8,height:8,borderRadius:"50%",flexShrink:0,mt:1.5,bgcolor:n?b.background.brand.surface1Strong:b.background.neutral.surface2}})}function so({role:n}){const{t}=E(),{totalFilters:s,totalTables:r}=W.countTreeStats(n.filters);return e.jsx(A,{variant:"captionRegular",sx:{color:b.content.neutral.neutralMedium},noWrap:!0,children:`${t("DATA_MODEL.DATA_ROLES.ROLES.SUMMARY_FILTERS",{count:s})} · ${t("DATA_MODEL.DATA_ROLES.ROLES.SUMMARY_TABLES",{count:r})}`})}function ro({role:n,onEdit:t,onSelectDefaultRole:s}){const{t:r}=E(),[a,i]=g.useState(null),[l,o]=g.useState(!1),{repoId:d,tenantId:c,id:u}=N(),m=Number(n.id),f=P(),h=new Le({queryClient:f,repositoryId:d,tenantId:c,dataRoleId:m}),{mutate:p}=O(h.duplicateRole({onSuccess:()=>X.success()})),{mutate:x}=O(h.updateRole({onSuccess:()=>X.success(),onError:v=>X.error({title:ln(v)})})),{mutate:I}=O(h.deleteRole({onSuccess:()=>{s(),X.success()}})),y=v=>{v.stopPropagation(),i(v.currentTarget)},S=()=>i(null);return e.jsxs(C,{sx:{display:"inline-flex",alignSelf:"center"},children:[e.jsx(L,{iconOnly:!0,size:"sm",variant:"neutral-flat",onClick:y,children:e.jsx(cn,{size:"sm"})}),e.jsxs(Re,{anchorEl:a,open:!!a,onClose:S,onClick:v=>v.stopPropagation(),transformOrigin:{horizontal:"right",vertical:"top"},anchorOrigin:{horizontal:"right",vertical:"bottom"},PaperProps:{sx:Dn},children:[e.jsx(B,{icon:e.jsx(dn,{size:"sm"}),text:r("edit_role"),onClick:()=>{S(),t(n)}}),e.jsx(B,{icon:e.jsx(_t,{size:"sm"}),text:r("button.duplicate"),onClick:()=>{S(),p({dataRoleId:m})}}),!n.isDefault&&e.jsxs(e.Fragment,{children:[e.jsx(B,{icon:e.jsx(pr,{size:"sm"}),text:r("set_default"),onClick:()=>{S(),te({eventName:ne.DATA_MODEL_RLS_ROLE_UPDATE,eventType:ae["click-button"],tenantId:c,workspaceId:u,properties:{dataModelId:d,roleId:m,updateType:"set-default"}}),x({dataRoleId:m,updateData:{isDefault:!0},workspaceId:u})}}),e.jsx(De,{}),e.jsx(B,{icon:e.jsx(Xe,{size:"sm"}),text:r("button.delete"),isDelete:!0,onClick:()=>{S(),o(!0)}})]})]}),e.jsx(ue,{open:l,title:r("delete_role"),size:"sm",onClose:()=>o(!1),actions:e.jsxs(C,{direction:"row",sx:{gap:2,justifyContent:"flex-end",width:"100%"},children:[e.jsx(L,{variant:"tertiary",size:"md",onClick:()=>o(!1),children:r("button.cancel")}),e.jsx(L,{variant:"danger",size:"md",onClick:()=>{I(n.id.toString()),o(!1)},children:r("button.delete")})]}),children:e.jsx(A,{variant:"bodySmRegular",sx:{color:b.content.neutral.neutralStrong},children:r("delete_role_message")})})]})}function ao({roles:n,onEdit:t}){const s=rt(),{repoId:r,tenantId:a,id:i=0,roleId:l}=N(),{t:o}=E(),[d,c]=g.useState(""),u=h=>{s.push(Z(Bn,{roleId:h,repoId:r,tenantId:a,id:i}))},m=()=>{s.push(Z(jt,{repoId:r,tenantId:a,id:i}))};if(l&&re(n)&&m(),!l){const h=pe(n);h&&u(h.id.toString())}const f=n.filter(h=>h.name.toLowerCase().includes(d.trim().toLowerCase()));return e.jsxs(C,{direction:"column",sx:{flex:1,minHeight:0,p:4,gap:2},children:[e.jsx(Jt,{fullWidth:!0,placeholder:o("DATA_MODEL.DATA_ROLES.ROLES.SEARCH_ROLES"),value:d,onChange:h=>c(h.target.value),InputProps:{startAdornment:e.jsx(nn,{position:"start",children:e.jsx(ze,{size:"sm",sx:{color:b.content.neutral.neutralMedium}})})}}),e.jsx(C,{direction:"column",sx:{flex:1,overflowY:"auto"},children:on(f,(h,p)=>{const x=h.id===Number(l);return e.jsxs(_.Fragment,{children:[e.jsxs(C,{direction:"row",alignItems:"flex-start",onClick:()=>u(h.id),sx:{borderRadius:1.5,gap:2,px:2,py:2,cursor:"pointer",bgcolor:x?b.background.brand.surface1:"transparent","&:hover":{bgcolor:x?b.background.brand.surface1:b.background.neutral.surface1}},children:[e.jsx(no,{selected:x}),e.jsxs(C,{direction:"column",sx:{flex:1,gap:1,minWidth:0},children:[e.jsx(H,{title:h.name,disableInteractive:!0,children:e.jsx(A,{variant:"bodySmMedium",noWrap:!0,children:h.name})}),e.jsx(so,{role:h})]}),e.jsx(ro,{role:h,onEdit:t,onSelectDefaultRole:m})]}),p<f.length-1&&e.jsx(j,{sx:{height:"1px",bgcolor:b.border.neutral.border1}})]},`role-${p.toString()}`)})})]})}function oo({onCreateClick:n}){const{t}=E();return e.jsx(j,{sx:{p:4,borderTop:_n,flexShrink:0},children:e.jsx(L,{variant:"tertiary",fullWidth:!0,startIcon:e.jsx(ce,{size:"sm"}),onClick:n,children:t("DATA_MODEL.DATA_ROLES.ROLES.CREATE_NEW_ROLE")})})}function io(){const{repoId:n,tenantId:t,roleId:s}=N(),r=Number(s),a=P(),i=new Le({queryClient:a,repositoryId:n,tenantId:t,dataRoleId:r}),{t:l}=E(),[o]=Ne([i.getRoles()]),d=o?.data?.data?.data||[],[c,u]=g.useState(!1),[m,f]=g.useState(void 0),h=()=>{f(void 0),u(!0)},p=I=>{f(I),u(!0)},x=()=>u(!1);return e.jsxs(C,{direction:"column",sx:{height:"100%"},children:[e.jsx(C,{direction:"row",alignItems:"center",sx:{px:4,py:4,borderBottom:_n,flexShrink:0},children:e.jsxs(A,{variant:"bodySmSemibold",sx:{textTransform:"uppercase"},children:[l("DATA_MODEL.DATA_ROLES.ROLES.ROLE_LIST")," (",d.length,")"]})}),e.jsx(C,{direction:"column",sx:{flex:1,minHeight:0},children:o.isSuccess&&e.jsx(C,{direction:"column",sx:{minHeight:0,flex:1},children:e.jsx(ao,{roles:Ys(d,I=>!I.isDefault),onEdit:p})})}),e.jsx(oo,{onCreateClick:h}),e.jsx(ue,{open:c,title:l(m?"edit_role":"create_new_role"),size:"md",helperText:m?void 0:l("DATA_MODEL.DATA_ROLES.ROLES.HELPER_TEXT"),onClose:x,children:e.jsx(eo,{role:m,handleClose:x})})]})}const Kt=`1px solid ${b.border.neutral.border1}`;function lo({value:n,selected:t,onClick:s}){return e.jsx(j,{onClick:s,sx:{px:2,py:.5,borderRadius:V.small,cursor:"pointer",bgcolor:t?b.background.brand.surface1Strong:"transparent",color:t?"#FFFFFF":b.content.neutral.neutralMedium,userSelect:"none",fontSize:"0.75rem",fontWeight:500,lineHeight:1.4,transition:"all 0.15s ease","&:hover":{bgcolor:t?b.background.brand.surface1Strong:"transparent"}},children:n})}function co(){const{control:n}=oe();return e.jsxs(C,{direction:"row",alignItems:"center",sx:{gap:1,px:3,py:2,border:Kt,borderRadius:V.small,bgcolor:b.background.white,mb:3},children:[e.jsx(A,{variant:"bodySmRegular",sx:{color:b.content.neutral.neutralMedium},children:"Connect table groups with"}),e.jsx(de,{name:"globalOp",control:n,render:({field:t})=>e.jsx(C,{direction:"row",sx:{gap:1,p:1,borderRadius:V.small,border:Kt},children:["AND","OR"].map(s=>e.jsx(lo,{value:s,selected:t.value===s,onClick:()=>t.onChange(s)},s))})})]})}const tt={classNamePrefix:"df-select",sx:{flex:1},components:{IndicatorSeparator:()=>null,DropdownIndicator:()=>e.jsx(St,{size:"sm",fill:b.content.neutral.neutralLight})},styles:{control:n=>({...n,backgroundColor:b.background.main})}};function uo({op:n}){return e.jsxs(C,{direction:"row",alignItems:"center",sx:{my:0,px:6,gap:0},children:[e.jsx(j,{sx:{width:3,height:"100%",minHeight:32,bgcolor:b.border.brand.border1,mr:1.5,flexShrink:0}}),e.jsx(j,{sx:{px:2,py:.5,mt:2,mb:2,borderRadius:V.small,bgcolor:b.background.brand.surface1},children:e.jsx(A,{variant:"captionRegular",sx:{color:b.content.brand.brandLight,fontWeight:500},children:n})})]})}function mo({controlledFields:n,remove:t,append:s,dimensionOptions:r,namePrefix:a="filters",op:i="AND"}){const{t:l}=E(),o=oe();
5return e.jsx($,{spacing:0,children:n.map((d,c)=>{const m=(d?.field?.type||"string")==="time",f=W.getRoleBasedSecurityOperatorOptions(),h=W.getRoleBasedSecurityValueTypeOptions(),p=W.getRoleBasedSecurityValueTypeDynamicOptions(),x=d?.operator?.value,I=d?.valueType?.value,y=Cn.includes(x),S=yt.includes(x),v=_e.includes(x),D=I===We.Dynamic,M=m&&!y&&!S&&!D,T=m&&y&&!S&&!D,q=!(m&&S)&&!m&&!S&&!D;return e.jsxs(j,{children:[c>0&&e.jsx(uo,{op:i}),e.jsxs($.Group,{children:[e.jsx(se,{control:o.control,name:`${a}.${c}.field`,Component:le,componentProps:{...tt,options:r,onChange:()=>{o.resetField(`${a}.${c}.operator`,{keepDirty:!0,defaultValue:f[0]})}}}),e.jsx(se,{control:o.control,name:`${a}.${c}.operator`,Component:le,componentProps:{...tt,options:f,onChange:K=>{if(_e.includes(K?.value)&&I===We.Dynamic){const F=h.find(U=>U.value===We.Static)??h[0];o.resetField(`${a}.${c}.valueType`,{keepDirty:!0,defaultValue:F}),o.resetField(`${a}.${c}.value`,{keepDirty:!0,defaultValue:null})}}}}),e.jsx(se,{control:o.control,name:`${a}.${c}.valueType`,Component:le,componentProps:{...tt,options:h,isDisabled:v,onChange:K=>{K?.value===We.Dynamic?o.resetField(`${a}.${c}.value`,{keepDirty:!0,defaultValue:p[0]}):o.resetField(`${a}.${c}.value`,{keepDirty:!0,defaultValue:null})}}}),M&&e.jsx(ee,{name:`${a}.${c}.value`,type:"date"}),T&&e.jsxs(e.Fragment,{children:[e.jsx(ee,{name:`${a}.${c}.startDate`,type:"date"}),e.jsx(ee,{name:`${a}.${c}.endDate`,type:"date"})]}),q&&e.jsx(ee,{name:`${a}.${c}.value`,sx:{flex:1},placeholder:l(v?"DATA_MODEL.DATA_ROLES.FILTERS.PLACEHOLDER_MULTI_VALUE":"DATA_MODEL.DATA_ROLES.FILTERS.PLACEHOLDER_VALUE")}),D&&e.jsx(se,{control:o.control,name:`${a}.${c}.value`,Component:le,componentProps:{...tt,options:p}}),e.jsxs(C,{direction:"row",sx:{gap:1,flexShrink:0},children:[s&&e.jsx(L,{iconOnly:!0,size:"sm",variant:"neutral-flat",onClick:()=>s({...d}),sx:{color:b.content.neutral.neutralLight,"&:hover":{color:b.content.neutral.neutralStrong,bgcolor:"transparent"}},children:e.jsx(_t,{size:"sm"})}),e.jsx(L,{iconOnly:!0,size:"sm",variant:"neutral-flat",onClick:()=>t(c),sx:{color:b.content.neutral.neutralLight,"&:hover":{color:b.content.actions.errorStrong,bgcolor:"transparent"}},children:e.jsx(Xe,{size:"sm"})})]})]})]},d.id??c)})})}const ft=`1px solid ${b.border.neutral.border1}`;function ho({value:n,selected:t,onClick:s}){return e.jsx(j,{onClick:s,sx:{px:2,py:.5,borderRadius:V.small,cursor:"pointer",bgcolor:t?b.background.brand.surface1Strong:"transparent",color:t?b.content.neutral.onBrand:b.content.neutral.neutralMedium,userSelect:"none",fontSize:"0.75rem",fontWeight:500,lineHeight:1.4,transition:"all 0.15s ease","&:hover":{bgcolor:t?b.background.brand.surface1Strong:"transparent",borderColor:t?b.border.brand.border1:"transparent"}},children:n})}function po({groupIndex:n,dataset:t}){const{t:s}=E(),[r,a]=g.useState(!1),{control:i,watch:l}=oe(),o=`groups.${n}.filters`,d=l(`groups.${n}.op`)||"AND",{fields:c,append:u,remove:m,replace:f}=ys({control:i,name:o}),h=l(o)||[],p=t.dimensions?.map(D=>({label:D.name,value:D.name,type:D.type}))||[],x=pe(W.getRoleBasedSecurityOperatorOptions()),I=pe(W.getRoleBasedSecurityValueTypeOptions()),y=()=>{u({field:pe(p)||null,operator:x,valueType:I,value:""})},S=()=>f([]),v=c.length;return e.jsxs(j,{sx:{border:ft,borderRadius:V.large,bgcolor:b.background.white,overflow:"hidden"},children:[e.jsxs(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{p:3,borderBottom:r?"none":ft,bgcolor:b.background.white},children:[e.jsxs(C,{direction:"row",alignItems:"center",sx:{gap:2},children:[e.jsx(j,{size:"sm",variant:"neutral-flat",onClick:()=>a(!r),sx:{cursor:"pointer"},children:r?e.jsx(gr,{size:"sm",sx:{color:b.content.neutral.neutralMedium}}):e.jsx(St,{size:"sm",sx:{color:b.content.neutral.neutralMedium}})}),e.jsx(j,{sx:{width:40,height:40,borderRadius:V.medium,bgcolor:b.background.container,display:"flex",alignItems:"center",justifyContent:"center"},children:e.jsx(Zt,{size:"sm",sx:{color:b.content.brand.brandStrong}})}),e.jsxs(C,{direction:"column",spacing:0,children:[e.jsx(A,{variant:"bodySmMedium",sx:{color:b.content.neutral.neutralStrong},children:t.name}),e.jsx(A,{variant:"captionRegular",sx:{color:b.content.neutral.neutralMedium},children:s("DATA_MODEL.DATA_ROLES.FILTERS.FILTERS_ACTIVE",{count:v})})]})]}),e.jsxs(C,{direction:"row",alignItems:"center",sx:{gap:2},children:[e.jsx(A,{variant:"captionRegular",sx:{textTransform:"uppercase",color:b.content.neutral.neutralMedium},children:s("DATA_MODEL.DATA_ROLES.FILTERS.FILTER_LOGIC")}),e.jsx(de,{name:`groups.${n}.op`,control:i,render:({field:D})=>e.jsx(C,{direction:"row",sx:{gap:1,p:1,borderRadius:V.small,border:ft},children:["AND","OR"].map(M=>e.jsx(ho,{value:M,selected:D.value===M,onClick:()=>D.onChange(M)},M))})}),e.jsx(L,{iconOnly:!0,size:"sm",variant:"neutral-flat",onClick:S,sx:{color:b.content.neutral.neutralLight,"&:hover":{color:b.content.actions.errorStrong,bgcolor:"transparent"}},children:e.jsx(Xe,{size:"sm"})})]})]}),!r&&e.jsxs(j,{sx:{p:3},children:[h.length>0&&e.jsxs(C,{direction:"row",spacing:2,sx:{mb:1.5},children:[[s("DATA_MODEL.DATA_ROLES.FILTERS.DIMENSIONS"),s("DATA_MODEL.DATA_ROLES.FILTERS.OPERATOR"),s("DATA_MODEL.DATA_ROLES.FILTERS.VALUE_TYPE"),s("DATA_MODEL.DATA_ROLES.FILTERS.VALUE")].map(D=>e.jsx(A,{variant:"captionRegular",component:"div",sx:{flex:1,display:"block",textTransform:"uppercase",color:b.content.neutral.neutralMedium},children:D},D)),e.jsx(j,{sx:{width:56,flexShrink:0}})]}),h.length>0?e.jsx(mo,{controlledFields:h,remove:m,append:u,dimensionOptions:p,namePrefix:o,op:d}):e.jsx(A,{variant:"bodySmRegular",sx:{py:3,textAlign:"center",display:"block",color:b.content.neutral.neutralLight},children:s("DATA_MODEL.DATA_ROLES.FILTERS.NO_FILTERS")}),e.jsx(L,{variant:"outlined",size:"sm",disabled:p.length===0,onClick:y,startIcon:e.jsx(ce,{size:"sm"}),sx:{mt:2,borderStyle:"dashed",borderColor:b.border.neutral.border1,color:b.content.neutral.neutralMedium,"&:hover":{borderStyle:"dashed",borderColor:b.border.neutral.border2,color:b.content.neutral.neutralStrong}},children:s("DATA_MODEL.DATA_ROLES.FILTERS.ADD_FILTER")})]})]})}function fo({open:n,onClose:t,datasets:s,onAdd:r}){const{t:a}=E(),[i,l]=g.useState(""),[o,d]=g.useState(null),c=s.filter(f=>f.name.toLowerCase().includes(i.trim().toLowerCase())),u=()=>{o&&(r(o),d(null),l(""))},m=()=>{d(null),l(""),t()};return e.jsx(ue,{open:n,title:a("DATA_MODEL.DATA_ROLES.FILTERS.ADD_TABLE_GROUP"),size:"md",onClose:m,actions:e.jsxs(C,{direction:"row",sx:{gap:2,justifyContent:"flex-end",width:"100%"},children:[e.jsx(L,{variant:"tertiary",size:"md",onClick:m,children:a("button.cancel")}),e.jsx(L,{variant:"primary",size:"md",disabled:!o,onClick:u,children:a("DATA_MODEL.DATA_ROLES.FILTERS.ADD_GROUP_BTN")})]}),helperText:a("DATA_MODEL.DATA_ROLES.FILTERS.ADD_TABLE_GROUP_HELPER"),children:e.jsxs(C,{direction:"column",sx:{gap:2},children:[e.jsx(Jt,{fullWidth:!0,placeholder:a("DATA_MODEL.DATA_ROLES.FILTERS.SEARCH_DATASETS"),value:i,onChange:f=>l(f.target.value),InputProps:{startAdornment:e.jsx(nn,{position:"start",children:e.jsx(ze,{size:"sm",sx:{color:b.content.neutral.neutralMedium}})})}}),e.jsxs(xr,{dense:!0,sx:{maxHeight:280,overflow:"auto"},children:[c.map(f=>e.jsx(Gn,{disablePadding:!0,children:e.jsxs(br,{selected:o?.schemaId===f.schemaId,onClick:()=>d(f),sx:{borderRadius:1,"&.Mui-selected":{bgcolor:b.background.brand.surface1,"&:hover":{bgcolor:b.background.brand.surface1}},"&:hover":{bgcolor:b.background.neutral.surface1}},children:[e.jsx(Js,{children:e.jsx(Zt,{size:"sm",sx:{color:b.content.neutral.neutralMedium}})}),e.jsx(Zs,{disableTypography:!0,primary:e.jsx(A,{variant:"bodySmRegular",sx:{color:b.content.neutral.neutralStrong},children:f.name})})]})},f.schemaId)),c.length===0&&e.jsx(A,{variant:"bodySmRegular",sx:{px:2,py:2,display:"block",color:b.content.neutral.neutralMedium},children:a("DATA_MODEL.DATA_ROLES.FILTERS.NO_DATASETS")})]})]})})}function go({datasets:n,onSubmit:t,formContext:s,submitRef:r}){const{t:a}=E(),[i,l]=g.useState(!1),o=s.watch("groups")||[],d=s.watch("globalOp")||"AND";r&&(r.current=s.handleSubmit(t)),g.useEffect(()=>()=>{r&&(r.current=null)},[]);const c=n.map((f,h)=>h).filter(f=>(o[f]?.filters?.length??0)>0),u=c.length>1,m=f=>{const h=n.findIndex(v=>v.datasetId===f.datasetId);if(h===-1)return;const p=W.getRoleBasedSecurityOperatorOptions()[0],x=W.getRoleBasedSecurityValueTypeOptions()[0],I=f.dimensions?.[0],y={field:I?{value:I.name,label:I.name,type:I.type}:null,operator:p,valueType:x,value:""},S=o[h]?.filters||[];s.setValue(`groups.${h}.filters`,[...S,y]),l(!1)};return e.jsx(ge,{...s,children:e.jsxs(C,{component:"form",direction:"column",onSubmit:s.handleSubmit(t),sx:{flex:1,minHeight:0,height:"100%"},children:[u&&e.jsx(co,{}),c.length===0?e.jsxs(C,{alignItems:"center",justifyContent:"center",sx:{flex:1,gap:3},children:[e.jsx(j,{sx:{width:64,height:64,borderRadius:"50%",bgcolor:b.background.disabled,display:"flex",alignItems:"center",justifyContent:"center"},children:e.jsx(fr,{size:"lg",sx:{color:b.content.neutral.neutralLight}})}),e.jsxs(C,{alignItems:"center",sx:{gap:.5},children:[e.jsx(A,{variant:"bodySmMedium",sx:{color:b.content.neutral.neutralStrong},children:a("DATA_MODEL.DATA_ROLES.FILTERS.NO_TABLE_GROUPS")}),e.jsx(A,{variant:"bodySmRegular",sx:{color:b.content.neutral.neutralMedium,textAlign:"center"},children:a("DATA_MODEL.DATA_ROLES.FILTERS.NO_TABLE_GROUPS_DESC")})]}),e.jsx(L,{variant:"primary",startIcon:e.jsx(ce,{size:"sm"}),onClick:()=>l(!0),children:a("DATA_MODEL.DATA_ROLES.FILTERS.ADD_TABLE_GROUP")})]}):e.jsxs(j,{children:[c.map((f,h)=>e.jsxs(j,{children:[e.jsx(po,{groupIndex:f,dataset:n[f]}),u&&h<c.length-1&&e.jsxs(C,{direction:"row",alignItems:"center",sx:{my:0,mx:4,gap:0},children:[e.jsx(j,{sx:{width:3,height:"100%",minHeight:32,bgcolor:b.border.brand.border1,mr:1.5,flexShrink:0}}),e.jsx(j,{sx:{px:2,py:.5,mt:2,mb:2,borderRadius:V.small,bgcolor:b.background.brand.surface1},children:e.jsx(A,{variant:"captionRegular",sx:{color:b.content.brand.brandLight,fontWeight:500},children:d})})]})]},n[f].schemaId)),e.jsx(j,{sx:{my:2},children:e.jsx(L,{variant:"primary",startIcon:e.jsx(ce,{}),onClick:()=>l(!0),children:a("DATA_MODEL.DATA_ROLES.FILTERS.ADD_TABLE_GROUP")})})]}),e.jsx(fo,{open:i,onClose:()=>l(!1),datasets:n,onAdd:m})]})})}function xo({role:n,datasets:t,updateRole:s,submitRef:r}){const{id:a,repoId:i,tenantId:l}=N(),o=Y({defaultValues:W.getDefaultTreeFormValues(t,n)});g.useEffect(()=>{o.reset(W.getDefaultTreeFormValues(t,n))},[n,t]);const d=c=>{const{filters:u}=W.convertTreeSubmit(c);te({eventName:ne.DATA_MODEL_RLS_ROLE_UPDATE,eventType:ae["click-button"],tenantId:l,workspaceId:a,properties:{dataModelId:i,roleId:n.id,updateType:"filters",filterCount:u?.length??0}}),s({dataRoleId:n.id,updateData:{filters:u},workspaceId:a})};return e.jsx(j,{p:4,sx:{height:"100%"},children:e.jsx(go,{datasets:t,onSubmit:d,formContext:o,submitRef:r})})}class Ht{constructor(t,s){R(this,"role");R(this,"members");this.role=t,this.members=s}get memberOptions(){const{members:t}=this;return(t||[]).map(s=>{const{email:r,userFullName:a,userId:i}=s;return{label:`${a} (${r})`,value:i.toString(),email:r}})}getDefaultFormValues(){const{role:t,memberOptions:s}=this,{users:r=[]}=t||{};return re(r)?{users:[]}:{users:r.map(a=>{const i=s.find(l=>l.value===a.id.toString());return i||{label:`${a.name} (${a.email})`,value:a.id.toString(),email:a.email}})}}static convertAssigmentDataSubmit(t){const{users:s}=t;return{users:s.map(r=>({id:Number(r.value),email:r.email}))}}}function bo({group:n,onRemove:t}){return e.jsxs(C,{direction:"row",alignItems:"center",gap:1.5,sx:{px:2,py:1.25,borderBottom:"1px solid #DEE0E6","&:last-child":{borderBottom:"none"},"&:hover":{bgcolor:"#F9FAFB"},transition:"background-color 0.12s ease"},children:[e.jsx(j,{sx:{width:32,height:32,borderRadius:"8px",bgcolor:"#ECF0FA",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:e.jsx(sn,{sx:{fontSize:16,color:"#154DBD"}})}),e.jsxs(C,{direction:"column",sx:{flex:1,minWidth:0},children:[e.jsxs(C,{direction:"row",alignItems:"center",gap:1,children:[e.jsx(A,{noWrap:!0,sx:{fontSize:"14px",fontWeight:500,color:"#101828",fontFamily:"Inter, sans-serif"},children:n.name}),n.memberCount!==void 0&&e.jsxs(j,{component:"span",sx:{fontSize:"11px",fontWeight:500,color:"#154DBD",bgcolor:"#ECF0FA",px:.75,py:.25,borderRadius:"9999px",flexShrink:0,fontFamily:"Inter, sans-serif"},children:[n.memberCount," members"]})]}),n.description&&e.jsx(A,{noWrap:!0,sx:{fontSize:"12px",color:"#667085",fontFamily:"Inter, sans-serif"},children:n.description})]}),e.jsx(tn,{size:"small",onClick:t,sx:{p:.5,color:"#98A1B3",flexShrink:0,"&:hover":{color:"#D11B21",bgcolor:"#FEEBEC"}},children:e.jsx(Ls,{sx:{fontSize:16}})})]})}const Wt=`1px solid ${b.border.neutral.border1}`;function yo({open:n,roleName:t,availableGroups:s,assignedGroupIds:r,onClose:a,onAdd:i,isLoading:l}){const{t:o}=E(),[d,c]=g.useState(""),[u,m]=g.useState([]);g.useEffect(()=>{n&&(m([]),c(""))},[n]);const f=s.filter(p=>!r.includes(p.id)&&p.name.toLowerCase().includes(d.trim().toLowerCase())),h=p=>m(x=>x.includes(p)?x.filter(I=>I!==p):[...x,p]);return e.jsx(ue,{open:n,onClose:a,size:"md",title:o("DATA_MODEL.DATA_ROLES.ASSIGNMENT.ADD_GROUPS_TITLE",{name:t??o("DATA_MODEL.DATA_ROLES.ASSIGNMENT.THIS_ROLE")}),helperText:o("DATA_MODEL.DATA_ROLES.ASSIGNMENT.SELECT_GROUPS_DESC"),actions:e.jsxs(C,{direction:"row",sx:{gap:2,justifyContent:"flex-end",width:"100%"},children:[e.jsx(L,{variant:"tertiary",size:"md",onClick:a,children:o("Cancel")}),e.jsx(L,{variant:"primary",size:"md",disabled:u.length===0||l,onClick:()=>i(u),children:u.length>0?o("DATA_MODEL.DATA_ROLES.ASSIGNMENT.ADD_BTN_COUNT",{count:u.length}):o("DATA_MODEL.DATA_ROLES.ASSIGNMENT.ADD_BTN")})]}),children:e.jsxs(C,{direction:"column",sx:{gap:2},children:[e.jsx(nt,{fullWidth:!0,placeholder:o("DATA_MODEL.DATA_ROLES.ASSIGNMENT.SEARCH_GROUPS_DIALOG"),value:d,onChange:p=>c(p.target.value),slotProps:{input:{startAdornment:e.jsx(ze,{size:"sm",style:{marginRight:6}})}}}),e.jsx(j,{sx:{maxHeight:300,overflowY:"auto",border:Wt,borderRadius:V.medium},children:f.length===0?e.jsx(j,{sx:{py:6,textAlign:"center"},children:e.jsx(A,{variant:"bodySmRegular",sx:{color:b.content.neutral.neutralLight},children:o("DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_GROUPS_AVAILABLE")})}):f.map(p=>{const x=u.includes(p.id);return e.jsxs(C,{direction:"row",alignItems:"center",gap:2,onClick:()=>h(p.id),sx:{p:2,cursor:"pointer",borderBottom:Wt,"&:last-child":{borderBottom:"none"},"&:hover":{bgcolor:"#F2F4F7"},bgcolor:x?b.background.brand.surface1:"transparent",transition:"background-color 0.12s ease"},children:[e.jsx(Ye,{checked:x,readOnly:!0,inputProps:{"aria-label":p.name},sx:{p:0}}),e.jsx(j,{sx:{width:28,height:28,borderRadius:V.small,bgcolor:b.background.brand.surface1,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:e.jsx(Xs,{size:"xs",sx:{color:b.content.brand.brandLight}})}),e.jsxs(C,{direction:"column",sx:{flex:1,minWidth:0},children:[e.jsxs(C,{direction:"row",alignItems:"center",gap:1,children:[e.jsx(A,{variant:"bodySmMedium",noWrap:!0,sx:{color:b.content.neutral.neutralStrong},children:p.name}),p.memberCount!==void 0&&e.jsxs(A,{variant:"captionRegular",noWrap:!0,sx:{color:b.content.neutral.neutralLight,flexShrink:0},children:["·"," ",o("DATA_MODEL.DATA_ROLES.ASSIGNMENT.GROUP_MEMBER_COUNT",{count:p.memberCount})]})]}),p.description&&e.jsx(A,{variant:"captionRegular",noWrap:!0,sx:{color:b.content.neutral.neutralLight},children:p.description})]})]}
5,p.id)})})]})})}const $e=`1px solid ${b.border.neutral.border1}`;function jo({user:n,onRemove:t}){const{t:s}=E(),r=n.label.split("(")[0].trim(),a=n.email||n.label.match(/\(([^)]+)\)/)?.[1]||"";return e.jsxs(C,{direction:"row",alignItems:"center",gap:2,sx:{p:2,borderRadius:`${V.small}px`,"&:hover":{bgcolor:"#F2F4F7"}},children:[e.jsx(pn,{size:"medium",alt:r,sx:{flexShrink:0}}),e.jsxs(C,{direction:"column",sx:{flex:1,minWidth:0},children:[e.jsx(A,{variant:"bodySmMedium",noWrap:!0,sx:{color:b.content.neutral.neutralStrong},children:r}),e.jsx(A,{variant:"captionRegular",noWrap:!0,sx:{color:b.content.neutral.neutralLight},children:a})]}),e.jsx(L,{iconOnly:!0,size:"xs",variant:"neutral-flat",onClick:t,"aria-label":s("DATA_MODEL.DATA_ROLES.ASSIGNMENT.REMOVE_USER",{name:r}),sx:{flexShrink:0,color:b.content.neutral.neutralLight,"&:hover":{color:"#D11C21",bgcolor:"transparent"}},children:e.jsx(Ve,{sx:{fontSize:16},"aria-hidden":"true"})})]})}function So({formContext:n,onSubmit:t,memberOptions:s,role:r,submitRef:a,assignedGroups:i,projectGroups:l,onAddGroups:o,onRemoveGroup:d,isGroupLoading:c}){const{t:u}=E(),[m,f]=g.useState(""),[h,p]=g.useState(""),[x,I]=g.useState(null),[y,S]=g.useState(!1),[v,D]=g.useState("");a&&(a.current=n.handleSubmit(t)),_.useEffect(()=>()=>{a&&(a.current=null)},[]);const M=en({control:n.control,name:"users"})||[],T=M.filter(k=>k.label?.toLowerCase().includes(m.trim().toLowerCase())),q=s.filter(k=>!M.find(ie=>ie.value===k.value)&&k.label?.toLowerCase().includes(h.trim().toLowerCase())),K=i.filter(k=>k.name.toLowerCase().includes(v.trim().toLowerCase())),F=k=>{n.setValue("users",[...M,k],{shouldDirty:!0}),p("")},U=k=>{n.setValue("users",M.filter(ie=>ie.value!==k),{shouldDirty:!0})},J={px:2,py:1.5,borderBottom:$e,display:"flex",alignItems:"center",justifyContent:"space-between"},Ie={px:2,py:1,borderBottom:$e};return e.jsx(ge,{...n,children:e.jsxs("form",{onSubmit:n.handleSubmit(t),style:{height:"100%"},children:[e.jsxs(j,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr",height:"100%"},children:[e.jsxs(j,{sx:{borderRight:$e,display:"flex",flexDirection:"column"},children:[e.jsxs(j,{sx:J,children:[e.jsx(A,{variant:"bodySmSemibold",sx:{color:b.content.neutral.neutralStrong},children:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.ASSIGNED_USERS")}),e.jsx(L,{variant:"outlined",size:"sm",startIcon:e.jsx(Mt,{sx:{fontSize:14}}),onClick:k=>I(k.currentTarget),disabled:q.length===0&&h==="",children:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.ADD_USER")}),e.jsxs(Os,{open:!!x,anchorEl:x,onClose:()=>{I(null),p("")},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},PaperProps:{sx:{mt:.5,width:280,borderRadius:"8px",border:$e,boxShadow:"rgba(16,24,40,0.06) 0 2px 4px -2px, rgba(16,24,40,0.10) 0 4px 8px -2px",overflow:"hidden"}},children:[e.jsx(j,{sx:{px:1.5,pt:1.5,pb:1},children:e.jsx(nt,{autoFocus:!0,fullWidth:!0,placeholder:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.SEARCH_MEMBERS"),value:h,onChange:k=>p(k.target.value),slotProps:{input:{startAdornment:e.jsx(ze,{size:"sm",style:{marginRight:6}})}}})}),q.length===0?e.jsx(j,{sx:{px:2,py:2,textAlign:"center"},children:e.jsx(A,{variant:"bodySmRegular",sx:{color:b.content.neutral.neutralLight},children:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_MEMBERS")})}):e.jsx(ks,{sx:{py:.5,maxHeight:240,overflowY:"auto"},children:q.map(k=>{const ie=k.label.split("(")[0].trim(),Ue=k.email||k.label.match(/\(([^)]+)\)/)?.[1]||"";return e.jsxs(rn,{onClick:()=>F(k),sx:{px:1.5,py:.75,gap:1.25,"&:hover":{bgcolor:"#F9FAFB"}},children:[e.jsx(pn,{size:"small",alt:ie,sx:{flexShrink:0}}),e.jsxs(C,{direction:"column",sx:{minWidth:0},children:[e.jsx(A,{variant:"bodySmMedium",noWrap:!0,sx:{color:b.content.neutral.neutralStrong},children:ie}),e.jsx(A,{variant:"captionRegular",noWrap:!0,sx:{color:b.content.neutral.neutralMedium},children:Ue})]})]},k.value)})})]})]}),e.jsx(j,{sx:Ie,children:e.jsx(nt,{fullWidth:!0,placeholder:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.SEARCH_USERS"),value:m,onChange:k=>f(k.target.value),slotProps:{input:{startAdornment:e.jsx(ze,{size:"sm",style:{marginRight:6}})}}})}),e.jsx(j,{sx:{flex:1,overflowY:"auto"},children:T.length===0?e.jsxs(C,{alignItems:"center",spacing:1.5,sx:{py:6,px:2},children:[e.jsx(j,{sx:{width:40,height:40,borderRadius:"10px",bgcolor:"#F2F4F7",display:"flex",alignItems:"center",justifyContent:"center"},children:e.jsx(Mt,{sx:{fontSize:20,color:b.content.neutral.neutralLight}})}),e.jsxs(C,{alignItems:"center",spacing:.5,children:[e.jsx(A,{variant:"bodySmMedium",sx:{color:b.content.neutral.neutralStrong},children:u(m?"DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_USERS_FOUND":"DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_USERS")}),e.jsx(A,{variant:"captionRegular",sx:{color:b.content.neutral.neutralMedium,textAlign:"center",maxWidth:220},children:m?u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_MATCH",{query:m}):u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_USERS_DESC")})]})]}):T.map(k=>e.jsx(jo,{user:k,onRemove:()=>U(k.value)},k.value))}),M.length>0&&e.jsx(j,{sx:{px:2,py:1,borderTop:$e,bgcolor:"#F9FAFB"},children:e.jsx(A,{variant:"captionRegular",sx:{color:b.content.neutral.neutralMedium},children:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.MEMBERS_ASSIGNED",{count:M.length})})})]}),e.jsxs(j,{sx:{display:"flex",flexDirection:"column"},children:[e.jsxs(j,{sx:J,children:[e.jsx(A,{variant:"bodySmSemibold",sx:{color:b.content.neutral.neutralStrong},children:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.USER_GROUPS")}),e.jsx(L,{variant:"outlined",size:"sm",startIcon:e.jsx(Fs,{sx:{fontSize:14}}),onClick:()=>S(!0),children:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.ADD_GROUP")})]}),e.jsx(j,{sx:Ie,children:e.jsx(nt,{fullWidth:!0,placeholder:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.SEARCH_GROUPS"),value:v,onCh
5ange:k=>D(k.target.value),slotProps:{input:{startAdornment:e.jsx(ze,{size:"sm",style:{marginRight:6}})}}})}),e.jsx(j,{sx:{flex:1,overflowY:"auto"},children:K.length===0?e.jsxs(C,{alignItems:"center",spacing:1.5,sx:{py:6,px:2},children:[e.jsx(j,{sx:{width:40,height:40,borderRadius:"10px",bgcolor:"#F2F4F7",display:"flex",alignItems:"center",justifyContent:"center"},children:e.jsx(sn,{sx:{fontSize:20,color:b.content.neutral.neutralLight}})}),e.jsxs(C,{alignItems:"center",spacing:.5,children:[e.jsx(A,{variant:"bodySmMedium",sx:{color:b.content.neutral.neutralStrong},children:u(v?"DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_GROUPS_FOUND":"DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_GROUPS")}),e.jsx(A,{variant:"captionRegular",sx:{color:b.content.neutral.neutralMedium,textAlign:"center",maxWidth:220},children:v?u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_GROUPS_MATCH",{query:v}):u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.NO_GROUPS_DESC")})]})]}):K.map(k=>e.jsx(bo,{group:k,onRemove:()=>d(k.id)},k.id))}),i.length>0&&e.jsx(j,{sx:{px:2,py:1,borderTop:$e,bgcolor:"#F9FAFB"},children:e.jsx(A,{variant:"captionRegular",sx:{color:b.content.neutral.neutralMedium},children:u("DATA_MODEL.DATA_ROLES.ASSIGNMENT.GROUPS_ASSIGNED",{count:i.length})})})]})]}),e.jsx(yo,{open:y,roleName:r?.name,availableGroups:l,assignedGroupIds:i.map(k=>k.id),onClose:()=>S(!1),onAdd:k=>{o(k),S(!1)},isLoading:c})]})})}function vo({role:n,updateRole:t,submitRef:s}){const{repoId:r,id:a,tenantId:i}=N(),l=(M,T={})=>te({eventName:ne.DATA_MODEL_RLS_ROLE_UPDATE,eventType:ae["click-button"],tenantId:i,workspaceId:a,properties:{dataModelId:r,roleId:n.id,updateType:M,...T}}),o=P(),d=new Le({queryClient:o,repositoryId:r,projectId:a,dataRoleId:n.id}),[c,u,m]=Ne([d.getTenantMembers(),d.getUserGroupsForRole(),d.getProjectUserGroups()]),f=c?.data?.data?.data?.invitedMembers||[],h=u?.data??[],p=m?.data??[],{mutate:x,isLoading:I}=O(d.assignUserGroups({})),{mutate:y}=O(d.removeUserGroup({})),S=new Ht(n,f),v=Y({defaultValues:S.getDefaultFormValues()});_.useEffect(()=>{v.reset(S.getDefaultFormValues())},[n]);const D=M=>
5{l("assignment"),t({dataRoleId:n.id,updateData:Ht.convertAssigmentDataSubmit(M),workspaceId:a})};return e.jsx(So,{formContext:v,onSubmit:D,memberOptions:S.memberOptions,role:n,submitRef:s,assignedGroups:h,projectGroups:p,onAddGroups:M=>{l("user-group-add",{userGroupIds:M}),x({userGroupIds:Array.from(new Set([...h.map(T=>T.id),...M]))})},onRemoveGroup:M=>{l("user-group-remove",{userGroupId:M}),y({userGroupId:M})},isGroupLoading:I})}function Io({datasets:n,role:t,updateRole:s,filtersSubmitRef:r,assignmentSubmitRef:a}){const{t:i}=E();return e.jsx(C,{sx:{overflow:"auto",minHeight:0,height:"100%"},children:e.jsx(fn,{tabsWidth:"fit-content",tabs:[{label:i("filters"),content:e.jsx(xo,{role:t,datasets:n,updateRole:s,submitRef:r})},{label:i("assignment"),content:e.jsx(vo,{role:t,updateRole:s,submitRef:a})}]})})}function Co({role:n,datasets:t,updateRole:s,filtersSubmitRef:r,assignmentSubmitRef:a}){return e.jsx(Io,{datasets:t,role:n,updateRole:s,filtersSubmitRef:r,assignmentSubmitRef:a})}function _o({role:n,handleClose:t}){const{t:s}=E(),{repoId:r,tenantId:a}=N(),i=Number(n.id),l=P(),o=new Le({queryClient:l,repositoryId:r,tenantId:a,dataRoleId:i}),{mutate:d}=O(o.duplicateRole({onSuccess:()=>{X.success()}})),c=()=>{d({dataRoleId:i}),t?.()};return e.jsx(B,{icon:e.jsx(_t,{size:"sm"}),text:s("button.duplicate"),onClick:c})}function Do({role:n,handleClose:t,onSelectDefaultRole:s}){const{t:r}=E(),a=P(),{repoId:i,tenantId:l}=N(),o=new Le({queryClient:a,repositoryId:i,tenantId:l}),{mutate:d}=O(o.deleteRole({onSuccess:()=>{s?.(),X.success()}})),c=()=>{t?.(),d(n.id.toString())};return e.jsx(yr,{popupId:`delete.dashboard.modal.${n.id.toString()}`,modalProps:{dialogTitle:r("delete_role")},renderContent:u=>e.jsxs($,{children:[e.jsx(A,{variant:"bodySmRegular",sx:{whiteSpace:"normal",wordWrap:"break-word",hyphens:"auto"},children:r("delete_role_message")}),e.jsxs($.Action,{children:[e.jsx(L,{variant:"tertiary",size:"md",onClick:u.close,children:r("button.cancel")}),e.jsx(L,{onClick:c,variant:"danger",size:"md",children:r("button.delete")})]})]}),componentProps:{icon:e.jsx(Xe,{size:"sm"}),text:r("button.delete"),isDelete:!0},Component:B})}function Eo({role:n,handleClose:t}){const{t:s}=E(),{repoId:r,tenantId:a,id:i}=N(),l=Number(n.id),o=P(),d=new Le({queryClient:o,repositoryId:r,tenantId:a,dataRoleId:l}),{mutate:c}=O(d.updateRole({onSuccess:()=>{X.success()}})),u=()=>{te({eventName:ne.DATA_MODEL_RLS_ROLE_UPDATE,eventType:ae["click-button"],tenantId:a,workspaceId:i,properties:{dataModelId:r,roleId:l,updateType:"set-default"}}),c({dataRoleId:l,updateData:{isDefault:!0},workspaceId:i}),t()};return e.jsx(rn,{onClick:u,children:e.jsx(A,{variant:"bodySmRegular",children:s("set_default")})})}const Ao=`1px solid ${b.border.neutral.border1}`;function wo({datasets:n,role:t,updateRole:s}){const{t:r}=E(),[a,i]=g.useState(null),l=g.useRef(null),o=g.useRef(null),{repoId:d,tenantId:c,id:u}=N(),m=rt(),f=()=>{l.current?.(),o.current?.()},h=()=>{m.push(Z(jt,{repoId:d,tenantId:c,id:u}))};return re(t)?e.jsx(j,{}):e.jsxs(j,{sx:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},children:[e.jsxs(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:4,py:3,borderBottom:Ao,flexShrink:0},children:[e.jsx(A,{variant:"h3Medium",children:t.name}),e.jsxs(C,{direction:"row",sx:{gap:2},children:[e.jsx(L,{variant:"tertiary",endIcon:e.jsx(St,{size:"sm"}),onClick:p=>i(p.currentTarget),children:r("more")}),e.jsxs(Re,{anchorEl:a,open:!!a,onClose:()=>i(null),transformOrigin:{horizontal:"right",vertical:"top"},anchorOrigin:{horizontal:"right",vertical:"bottom"},PaperProps:{sx:Dn},children:[e.jsx(_o,{role:t,handleClose:()=>i(null)}),!t.isDefault&&e.jsxs(e.Fragment,{children:[e.jsx(De,{}),e.jsx(Eo,{role:t,handleClose:()=>i(null)}),e.jsx(Do,{role:t,handleClose:()=>i(null),onSelectDefaultRole:h})]})]}),e.jsx(L,{variant:"primary",startIcon:e.jsx(lr,{size:"sm"}),onClick:f,children:r("save_changes")})]})]}),e.jsx(j,{sx:{flex:1,height:"100%",overflow:"hidden"},children:e.jsx(Co,{role:t,datasets:n,updateRole:s,filtersSubmitRef:l,assignmentSubmitRef:o})})]})}function Ro(){const{repoId:n,tenantId:t,roleId:s}=N(),r=Number(s),a=P(),i=new Le({queryClient:a,repositoryId:n,tenantId:t,dataRoleId:r}),[l,o]=Ne([i.getRoles(),i.getSchemasByRole()]),{mutate:d}=O(i.updateRole({onSuccess:()=>X.success(),onError:f=>X.error({title:ln(f)})}));if(!r||r<=0)return e.jsx(j,{});const c=l?.data?.data?.data||[],u=o?.data?.data?.data||[],m=c.find(f=>f.id===r);return e.jsx(wo,{datasets:u,role:m,updateRole:d})}const Qt=`1px solid ${b.border.neutral.border1}`;function Mo(){const{t:n}=E();return typeof window>"u"?null:e.jsxs(e.Fragment,{children:[e.jsxs(be,{children:[e.jsx("title",{children:`${n("data_model")} >
5 ${n("role_based_security")} - FPT Data Suite`}),e.jsx("meta",{name:"description",content:"Your personalized dashboard with reports"}),e.jsx("meta",{name:"keywords",content:"dashboard, reports, workspace, analytics"})]}),e.jsxs(C,{direction:"row",spacing:3,sx:{flex:1,height:"100%"},children:[e.jsx(C,{direction:"column",sx:{flex:"0 0 280px",minWidth:280,minHeight:0,border:Qt,borderRadius:V.large,bgcolor:b.background.white,overflow:"hidden"},children:e.jsx(io,{})}),e.jsx(C,{direction:"column",sx:{flex:1,minHeight:0,border:Qt,borderRadius:V.large,bgcolor:b.background.white,overflow:"hidden"},children:e.jsx(Ro,{})})]})]})}const To=g.forwardRef(Mo),Lo=n=>[{label:n("pre_aggregation.granularity.day"),value:"day"},{label:n("pre_aggregation.granularity.week"),value:"week"},{label:n("pre_aggregation.granularity.month"),value:"month"},{label:n("pre_aggregation.granularity.quarter"),value:"quarter"},{label:n("pre_aggregation.granularity.year"),value:"year"}],Oo={rollup:"pre_aggregation.type.rollup",original_sql:"pre_aggregation.type.original_sql",rollup_join:"pre_aggregation.type.rollup_join",rollup_lambda:"pre_aggregation.type.rollup_lambda"},ko=(n,t)=>{if(!n)return t("pre_aggregation.no_data");const s=Oo[n];return s?t(s):n};function Fo({repoId:n,onAction:t}){const{t:s}=E(),[r,a]=g.useState(null),i=(o,d)=>{a({el:o.currentTarget,id:d})},l=()=>{a(null)};return[{field:"name",headerName:s("name"),flex:3,minWidth:200,renderCell:o=>e.jsx(H,{title:o.value,children:e.jsx("span",{children:o.value})})},{field:"type",headerName:s("type"),width:120,valueGetter(o){return ko(o,s)}},{field:"dimensionsCount",headerName:s("dimensions"),width:120,type:"number"},{field:"measuresCount",headerName:s("measures"),width:120,type:"number"},{field:"time_dimension",headerName:s("time_dimension"),minWidth:150,flex:2,renderCell:o=>e.jsx(H,{title:o.value||"-",children:e.jsx("span",{children:o.value||"-"})})},{field:"granularity",headerName:s("granularity"),width:120,renderCell:o=>o.value||"-"},{field:"indexesCount",headerName:s("indexes"),width:100,type:"number"},{field:"actions",headerName:s("actions"),align:"center",width:80,renderCell:o=>e.jsxs(me,{action:Fe.data_model["read-data_model"],subject:{name:ke.data_model,id:n},children:[e.jsx(j,{cursor:"pointer",onClick:d=>i(d,o.row.id),children:e.jsx(Je,{sx:{width:16,height:16,color:he.ic.normal.tertiary}})}),e.jsxs(Re,{anchorEl:r?.el,open:o.row.id===r?.id,onClose:l,anchorOrigin:{vertical:"center",horizontal:"left"},transformOrigin:{vertical:"center",horizontal:"right"},children:[e.jsx(B,{icon:e.jsx(Ze,{}),text:s("button.edit"),onClick:()=>{t("edit",o.row),l()}}),e.jsx(B,{icon:e.jsx(Ve,{}),text:s("button.delete"),isDelete:!0,onClick:()=>{t("delete",o.row),l()}})]})]},`read-data-model-${o.id}`),sortable:!1}]}const lt={all:n=>["pre-aggregation",n]};class ct{async list(t){return(await w.get(`/v1/repositories/${t}/pre-aggregation`)).data.data}async create({schemaId:t,data:s,dataModelId:r}){await w.post(`/v1/repositories/${r}/schemata/${t}/pre-aggregation`,{preAggregation:s})}async update({schemaId:t,data:s,dataModelId:r}){await w.put(`/v1/repositories/${r}/schemata/${t}/pre-aggregation`,{preAggregation:s})}async delete(t){await w.delete(`/v1/repositories/${t.repositoryId}/schemata/${t.schemaId}/pre-aggregation/${t.name}`)}}class No{constructor(t){R(this,"repository");this.repository=t}async execute(t,s,r){if(!t)throw new Error("schemaId is required");if(!r)throw new Error("preAggregation is required");await this.repository.update({schemaId:t,data:r,dataModelId:s})}}function qo({repositoryId:n,schemaId:t}){const s=P(),r=new ct,a=new No(r);return O({mutationFn:i=>a.execute(t,n,i),onSuccess:()=>{s.invalidateQueries(lt.all(n))}})}function $o({schemas:n,isLoading:t}){const{t:s}=E(),{control:r,watch:a}=oe(),i=a("schema"),l=a("time_dimension"),o=_.useMemo(()=>{if(!n)return[];const c=Se(n,m=>+m.id==+i);if(re(c))return[];const{dimensions:u=[]}=c.attributes;return u.map(m=>({label:m.name,value:m.id}))},[i,n]),d=!!l;return e.jsx(j,{children:e.jsx($.Group,{children:e.jsx(de,{name:"dimensions",control:r,rules:d?{required:{value:!0,message:s("dimensions_required_with_time_dimension")},validate:c=>!c||c.length===0?s("at_least_one_dimension_required"):!0}:void 0,render:({field:c})=>e.jsx(ve,{name:"dimensions",label:s("dimensions"),placeholder:s("enter_dimensions_comma_separated"),options:o,...c,defaultValue:c.value,disabled:t,multiple:!0,required:d})})})})}function Po({schemas:n,isLoading:t}){const{t:s}=E(),{control:r,watch:a}=oe(),i=a("schema"),l=_.useMemo(()=>
5{if(!n)return[];const o=Se(n,c=>+c.id==+i);if(re(o))return[];const{measures:d=[]}=o.attributes;return d.map(c=>({label:c.name,value:c.id}))},[i,n]);return e.jsx(j,{children:e.jsx($.Group,{children:e.jsx(de,{name:"measures",control:r,render:({field:o})=>e.jsx(ve,{name:"measures",label:s("measures"),placeholder:s("enter_measures_comma_separated"),options:l,...o,defaultValue:o.value,disabled:t,multiple:!0})})})})}function zo({schemas:n,isLoading:t}){const{t:s}=E(),{control:r,watch:a}=oe(),i=a("schema"),l=_.useMemo(()=>{if(!n)return[];const o=Se(n,u=>+u.id==+i);if(re(o))return[];const{dimensions:d=[]}=o.attributes;return d.filter(u=>{const m=u.type?.toLowerCase();return m==="date"||m==="time"}).map(u=>({label:u.name,value:u.id}))},[i,n]);return e.jsxs(j,{children:[e.jsx(A,{variant:"body2",fontWeight:500,mb:1,children:s("time_dimension")}),e.jsx($.Group,{children:e.jsx(de,{name:"time_dimension",control:r,render:({field:o})=>e.jsx(ve,{name:"time_dimension",label:"",placeholder:s("enter_time_dimension_comma_separated"),options:l,...o,defaultValue:o.value,disabled:t})})})]})}function Bo(){const{t:n}=E(),{control:t,watch:s,setValue:r}=oe(),a=s("time_dimension");return g.useEffect(()=>{a||r("granularity","")},[a,r]),a?e.jsx(j,{children:e.jsx($.Group,{children:e.jsx(de,{name:"granularity",control:t,rules:{required:{value:!0,message:n("granularity_required_with_time_dimension")}},render:({field:i})=>e.jsx(ve,{name:"granularity",label:n("granularity"),placeholder:n("enter_granularity_comma_separated"),options:Lo(n),...i,defaultValue:i.value,required:!0})})})}):null}function En({isEdit:n=!1,schemas:t,isLoading:s}){const{t:r}=E();return e.jsxs(C,{gap:2,children:[e.jsx(ee,{name:"name",label:r("name"),placeholder:r("enter_pre_aggregation_name"),disabled:n,helperText:n?r("pre_aggregation_name_cannot_be_changed"):void 0,rules:{required:!0},required:!0}),e.jsx($o,{schemas:t,isLoading:s}),e.jsx(Po,{schemas:t,isLoading:s}),e.jsx(zo,{schemas:t,isLoading:s}),e.jsx(Bo,{})]})}function Go({enabled:n,onEnabledChange:t}){const{control:s}=oe(),{t:r}=E(),a=[{label:r("time_unit.second"),value:"second"},{label:r("time_unit.minute"),value:"minute"},{label:r("time_unit.hour"),value:"hour"},{label:r("time_unit.day"),value:"day"},{label:r("time_unit.week"),value:"week"}];return e.jsxs(C,{direction:"row",spacing:1.5,alignItems:"center",children:[e.jsx(Ye,{checked:n,onChange:i=>t(i.target.checked),size:"small",sx:{"&.Mui-checked":{color:"primary.main"}}}),e.jsx(Ns,{checked:n,onChange:()=>t(!0),size:"small",sx:{padding:0}}),e.jsx(A,{variant:"bodySmRegular",children:r("every")}),e.jsx(de,{name:"refreshKey.every",control:s,defaultValue:"1",render:({field:i})=>e.jsx(jr,{...i,type:"number",size:"sm",disabled:!n,sx:{width:80},inputProps:{min:1}})}),e.jsx(de,{name:"refreshKey.timeUnit",control:s,defaultValue:"hour",render:({field:i})=>e.jsx(Sr,{options:a,value:i.value,onChange:l=>i.onChange(l.target.value),disabled:!n,size:"sm",width:130})})]})}function Vo({enabled:n,onEnabledChange:t}){const{control:s}=oe();return e.jsx(j,{mt:1,children:e.jsxs(an,{direction:"row",spacing:1,alignItems:"flex-start",children:[e.jsx(qs,{checked:n,onChange:r=>t(r.target.checked),size:"small",sx:{"&.Mui-checked":{color:"primary.main"}}}),e.jsxs(j,{flex:1,children:[e.jsx(A,{variant:"body2",mb:n?1:0,children:"SQL"}),n&&e.jsx(de,{name:"refreshKey.sql",control:s,defaultValue:"",render:({field:r})=>e.jsx($s,{...r,placeholder:"SELECT MAX(createdAt) FROM orders",multiline:!0,rows:4,fullWidth:!0,size:"small"})})]})]})})}function An(){const{t:n}=E(),{setValue:t,getValues:s}=oe(),[r,a]=g.useState(!1),[i,l]=g.useState(!1),[o,d]=g.useState(!1);g.useEffect(()=>{const m=s("refreshKey");m&&(m.every&&m.timeUnit&&a(!0),m.cron&&l(!0),m.sql&&d(!0))},[]);const c=m=>{a(m),m||(t("refreshKey.every",""),t("refreshKey.timeUnit","")),m&&i&&(l(!1),t("refreshKey.cron",""))},u=m=>{d(m),m||t("refreshKey.sql","")};return e.jsxs(j,{children:[e.jsxs(an,{direction:"row",spacing:1,alignItems:"center",mb:1,children:[e.jsx(A,{variant:"bodySmRegular",fontWeight:500,children:n("refresh_key")}
5),e.jsx(H,{title:n("refresh_key_info"),children:e.jsx(Ps,{sx:{fontSize:16,color:"text.secondary"}})})]}),e.jsx(A,{variant:"captionRegular",color:"text.secondary",display:"block",mb:2,children:n("refresh_key_default_info")}),e.jsx($.Group,{children:e.jsx(Go,{enabled:r,onEnabledChange:c})}),e.jsx(Vo,{enabled:o,onEnabledChange:u})]})}function wn({schemas:n,isLoading:t}){const{t:s}=E(),{control:r,watch:a}=oe(),i=a("schema"),l=_.useMemo(()=>{if(!n)return[];const o=Se(n,c=>+c.id==+i);if(re(o))return[];const{dimensions:d=[]}=o.attributes;return d.map(c=>({label:c.name,value:c.id}))},[i,n]);return e.jsx(j,{children:e.jsx($.Group,{children:e.jsx(de,{name:"indexes",control:r,rules:{required:!0},render:({field:o})=>e.jsx(ve,{name:"indexes",label:s("indexes"),placeholder:s("enter_indexes_comma_separated"),options:l,...o,defaultValue:o.value,disabled:t,required:!0,multiple:!0})})})})}function Rn({schemas:n,isLoading:t,disabled:s}){const{t:r}=E(),{control:a}=oe(),i=_.useMemo(()=>n?n.map(l=>({label:l.attributes?.name||"",value:String(l.id)})):[],[n]);return e.jsx(j,{children:e.jsx($.Group,{children:e.jsx(de,{name:"schema",control:a,rules:{required:!0},render:({field:l})=>e.jsx(ve,{name:"schema",label:r("schema"),placeholder:r("schema"),options:i,disabled:t||s,...l,defaultValue:l.value,required:!0})})})})}class dt{constructor(t){R(this,"formData");R(this,"schemas");const{formData:s,schemas:r}=t;this.formData=s,this.schemas=r}static fromFormData(t){return new dt(t).build()}build(){return{name:this.formData.name,type:this.formData.type,dimensions:this.parseDimensions(),measures:this.parseMeasures(),refresh_key:this.buildRefreshKey(),indexes:this.buildIndexes(),time_dimension:this.parseTimeDimension(),granularity:this.parseGranularity()}}parseMeasures(){if(!this.formData.measures)return;const t=this.measures();return Qe(t,s=>mt(this.formData.measures,s.id))}parseDimensions(){if(!this.formData.dimensions)return;const t=this.dimensions();return Qe(t,s=>mt(this.formData.dimensions,s.id))}parseTimeDimension(){if(!this.formData.time_dimension)return;const t=this.dimensions();return Se(t,s=>s.id===this.formData.time_dimension)}parseGranularity(){return this.formData.granularity||void 0}buildRefreshKey(){if(!this.formData.refreshKey)return;const{every:t,timeUnit:s,cron:r,sql:a}=this.formData.refreshKey,i={};return t&&s?i.every=`${t} ${s}`:r&&(i.every=r),a&&(i.sql=a),Object.keys(i).length>0?i:void 0}dimensions(){return Ot(this.schemas,t=>t.attributes.dimensions)}measures(){return Ot(this.schemas,t=>t.attributes.measures)}
5buildIndexes(){if(!this.formData.indexes)return;const t=this.dimensions(),s=Qe(t,a=>mt(this.formData.indexes,a.id));return[{name:on(s,a=>a.name).join("-"),columns:s}]}}class Uo{async list(t,s){const r=s?.pagination?.page&&s?.pagination?.pageSize?{pagination:{page:s.pagination.page,pageSize:s.pagination.pageSize}}:{},a=s?.populate?{populate:s.populate}:{populate:{dataset:"*"}};return(await w.get(`/v1/repositories/${t}/schemata`,{params:{...a,...r}})).data?.data||[]}async findById(t){try{return(await w.get(`/v1/schemata/${t}`,{params:{populate:{dataset:"*"}}})).data?.data||null}catch(s){if(s?.response?.status===404)return null;throw s}}}class Ko{constructor(t){R(this,"repository");this.repository=t}async execute(t,s){if(!t)throw new Error("repositoryId is required");return this.repository.list(t,s)}}const Ho={all:n=>["schemas",n],list:(n,t)=>["schemas",n,t]};function Wo({repositoryId:n,options:t,queryOptions:s}){const r=new Uo,a=new Ko(r);return xe({queryKey:Ho.list(n,t),queryFn:()=>a.execute(n,t),enabled:!!n,...s})}function Mn(n){return Wo({repositoryId:n,options:{populate:{dataset:"*"}}})}function Qo({preAggregation:n,repositoryId:t,schemaId:s,onSuccess:r}){const{data:a,isLoading:i}=Mn(t),{t:l}=E(),o=n.refresh_key||n.refreshKey,d={every:"",timeUnit:"",cron:"",sql:""};if(o){if(o.every){const h=o.every.match(/^(\d+)\s+(\w+)$/);h?(d.every=h[1],d.timeUnit=h[2]):d.cron=o.every}o.sql&&(d.sql=o.sql)}const c=(()=>{const h=n.time_dimension;return h?typeof h=="object"?h.id||"":String(h):""})(),u=Y({defaultValues:{schema:String(s),name:n.name,type:n.type||"rollup",measures:(n.measures||[]).map(h=>h.id||h)||[],dimensions:(n.dimensions||[]).map(h=>h.id||h)||[],time_dimension:c,granularity:n.granularity||"",refreshKey:d,indexes:(n.indexes||[]).flatMap(h=>h.columns?.map(p=>p.id||p)||[])||[]}}),m=qo({repositoryId:t,schemaId:s}),f=async h=>{const p=dt.fromFormData({formData:h,schemas:a});return z(m.mutateAsync(p)).then(r)};return e.jsx(ge,{...u,children:e.jsxs("form",{onSubmit:u.handleSubmit(f),children:[e.jsxs($,{children:[e.jsx(Rn,{schemas:a,isLoading:i,disabled:!0}),e.jsx(De,{sx:{my:3}}),e.jsx(En,{isEdit:!0,schemas:a,isLoading:i}),e.jsx(De,{sx:{my:3}}),e.jsx(An,{}),e.jsx(De,{sx:{my:3}}),e.jsx(wn,{schemas:a,isLoading:i})]}),e.jsx($.Action,{py:6,children:e.jsx(vt,{variant:"contained",size:"modal",loading:u.formState.isSubmitting,children:l("button.save")})})]})})}function Yo(n){const{t}=E();return e.jsx(ue,{...n,title:`${t("edit_pre_aggregation")}: ${n.preAggregationItem?.name}`,maxWidth:"md",children:e.jsx(Qo,{preAggregation:n.preAggregationItem,repositoryId:n.repoId,schemaId:n.schemaId,onSuccess:()=>{n.onSuccess?.(),n.onClose?.()}})})}class Jo{constructor(t){R(this,"repository");this.repository=t}async execute(t,s,r){if(!t)throw new Error("schemaId is required");if(!s)throw new Error("preAggregation is required");await this.repository.create({schemaId:t,data:s,dataModelId:r})}}function Zo({repositoryId:n,dataModelId:t}){const s=P(),r=new ct,a=new Jo(r);return O({mutationFn:({schemaId:i,data:l})=>a.execute(i,l,t),onSuccess:()=>{s.invalidateQueries(lt.all(n))}})}function Xo({schemas:n,isLoading:t}){return e.jsxs($,{children:[e.jsx(Rn,{schemas:n,isLoading:t}),e.jsx(De,{sx:{my:1}}),e.jsx(En,{isEdit:!1,schemas:n,isLoading:t}),e.jsx(De,{sx:{my:1}}),e.jsx(An,{}),e.jsx(De,{sx:{my:1}}),e.jsx(wn,{schemas:n,isLoading:t})]})}function ei(n){const{t}=E(),{repoId:s,onSuccess:r,onClose:a,...i}=n,{data:l,isLoading:o}=Mn(s),d=Y({defaultValues:{schema:"",name:"",type:"rollup",measures:[],dimensions:[],time_dimension:"",refreshKey:{every:"",timeUnit:"",cron:"",sql:""},indexes:[]}}),c=Zo({repositoryId:s,dataModelId:s}),u=async m=>{const f=dt.fromFormData({formData:m,schemas:l});return z(c.mutateAsync({schemaId:Number(m.schema),data:f})).then(()=>{r?.(),a?.()})};return e.jsx(Me,{...i,title:t("add_pre_aggregation"),size:"md",form:d,isLoading:c.isLoading,onClose:a,onSubmit:d.handleSubmit(u),submitText:t("button.create"),children:e.jsx(Xo,{schemas:l,isLoading:o})})}class ti{constructor(t){R(this,"repository");this.repository=t}execute(t){if(!t)throw new Error("repositoryId is required");return this.repository.list(t)}}function ni(n){const t=new ct,s=new ti(t);return xe({queryKey:lt.all(n),queryFn:()=>s.execute(n)})}class si{constructor(t){R(this,"repository");this.repository=t}async execute(t,s,r){if(!t)throw new Error("preAggregation name is required");if(!s)throw new Error("schemaId is required");if(!r)throw new Error("dataModelId is required");await this.repository.delete({name:t,schemaId:s,repositoryId:r})}}function ri({repositoryId:n}){const t=P(),s=new ct,r=new si(s);return O({mutationFn:({name:a,schemaId:i})=>r.execute(a,i,n),onSuccess:()=>{t.invalidateQueries(lt.all(n))}})}
5function ai(n,t){n.name||console.warn("PreAggregation missing name:",n);const s=(()=>{const r=n.time_dimension;return r?typeof r=="object"&&r!==null?r.name||"":String(r):""})();return{id:t,name:n.name||"",type:n.type,schemaId:n.schemaId,dimensionsCount:(n.dimensions||[]).length,measuresCount:(n.measures||[]).length,time_dimension:s,granularity:n.granularity||"",indexesCount:(n.indexes||[]).length,_fullObject:n}}function oi(n){return(n||[]).map(ai)}function ii({repositoryId:n}){const[t,s]=g.useState(null),[r,a]=g.useState(!1),[i,l]=g.useState(!1),[o,d]=g.useState(!1),c=ni(n),u=ri({repositoryId:n}),m=oi(c.data||[]),f=g.useCallback((S,v)=>{switch(s(v),S){case"delete":l(!0);break;case"edit":d(!0);break}},[]),h=g.useCallback(async()=>{const S=t?.name,v=t?.schemaId;if(!S||typeof S!="string"||!v||typeof v!="number"){console.error("Delete failed - invalid data:",{name:S,schemaId:v,currentItem:t});return}await z(u.mutateAsync({name:S,schemaId:v})),l(!1)},[t,u]),p=g.useCallback(()=>{a(!0)},[]),x=g.useCallback(()=>l(!1),[]),I=g.useCallback(()=>d(!1),[]),y=g.useCallback(()=>a(!1),[]);return{rows:m,currentItem:t,isLoading:c.isLoading,openAdd:r,openDelete:i,openEdit:o,handleAction:f,handleDelete:h,handleAdd:p,handleCloseDelete:x,handleCloseEdit:I,handleCloseAdd:y,isDeleting:u.isLoading,refetch:c.refetch}}function li(n,t){const{t:s}=E(),{id:r,tenantId:a,repoId:i}=N(),{rows:l,currentItem:o,isLoading:d,openAdd:c,openDelete:u,openEdit:m,handleAction:f,handleDelete:h,handleAdd:p,handleCloseDelete:x,handleCloseEdit:I,handleCloseAdd:y,isDeleting:S,refetch:v}=ii({repositoryId:Number(i)});return g.useImperativeHandle(t,()=>({openAddPreAggregation(D){D?p():y()}}),[p,y]),e.jsxs(j,{height:"100%",children:[e.jsxs(be,{children:[e.jsx("title",{children:`${s("data_model")} > ${s("pre_aggregations")} - FPT Data Suite`}),e.jsx("meta",{name:"description",content:"Pre-aggregations management"}),e.jsx("meta",{name:"keywords",content:"pre-aggregations, data model, performance"})]}),e.jsxs(j,{bgcolor:he.bg.surface.main,borderRadius:V.large,height:"100%",children:[e.jsx(Be,{columns:Fo({repoId:Number(i),onAction:f}),rows:l,loading:d,initialState:{pagination:{paginationModel:{page:0,pageSize:10}}},pageSizeOptions:[10,25,50],disableColumnFilter:!0,disableColumnMenu:!0,hideFooterSelectedRowCount:!0,disableColumnResize:!0,rowHeight:48}),e.jsx(Ge,{open:u,title:s("delete_pre_aggregation"),content:s("delete_pre_aggregation_message",{name:It(o?.name||"")}),isDeleting:S,onClose:x,onDelete:h}),m&&o&&e.jsx(Yo,{open:m,repoId:Number(i),schemaId:o._fullObject?.schemaId||o.schemaId||0,preAggregationItem:o._fullObject||o,onSuccess:v,onClose:I}),c&&e.jsx(ei,{open:c,repoId:Number(i),onSuccess:v,onClose:y})]})]})}const ci=g.forwardRef(li);function di(n){const{tenantId:t,projectId:s,repositoryId:r}=n,{t:a}=E(),[i,l]=_.useState(!1),{state:o}=Vn();return e.jsxs(e.Fragment,{children:[e.jsx(Un,{size:"md",variant:"primary",icon:e.jsx(ce,{}),text:a("button.create_report"),onClick:()=>l(!0)}),i&&e.jsx(vr,{open:i,projectId:Number(s),workspaces:o.currentWorkspaces,folderId:0,tenantId:t,repositoryId:Number(r),onClose:()=>l(!1)})]})}function Ol(){if(typeof window>"u")return null;const{t:n}=E(),t=rt(),s=js(),{id:r,repoId:a,tenantId:i}=N(),[l,o]=g.useState(""),d=[Z(Yt,{id:r,repoId:a,tenantId:i}),Z(Kn,{id:r,repoId:a,tenantId:i}),Z(Hn,{id:r,repoId:a,tenantId:i}),Z(Wn,{id:r,repoId:a,tenantId:i}),Z(Qn,{id:r,repoId:a,tenantId:i}),Z(Yn,{id:r,repoId:a,tenantId:i}),Z(Jn,{id:r,repoId:a,tenantId:i}),Z(Zn,{id:r,repoId:a,tenantId:i}),Z(jt,{id:r,repoId:a,tenantId:i})],c=Math.max(0,d.findIndex(D=>s.pathname.startsWith(D))),[u,m]=g.useState(c),f=D=>{m(D),window.history.pushState({},"",d[D])},{isLoading:h,isError:p,error:x}=xe(["repository",a],async()=>a&&(await w.get(`/v1/repositories/${a}`)).data?.data?.attributes?.name||"",{enabled:!!a,retry:!1,onSuccess:D=>{D&&o(D)},onError:D=>{console.error("Failed to fetch repository name:",D)}}),I=x?.response?.status,y=g.useRef(null);if(p)return e.jsx(Tt,{children:I===403?e.jsx(Xn,{}):e.jsx(es,{})});if(h)return null;const S={action:Fe.data_model["write-data_model"],subject:{name:ke.data_model,id:a}},v=[{label:n("schemas"),content:e.jsxs(C,{direction:"column",sx:{height:"100%"},children:[e.jsxs(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{py:4,gap:4,minHeight:68},children:[e.jsx(A,{variant:"h3Medium",sx:{color:b.content.neutral.neutralStrong},children:n("schemas")}),e.jsxs(C,{direction:"row",sx:{gap:2},children:[e.jsx(L,{variant:"tertiary",onClick:()=>y.current?.sync?.(),children:n("button.sync")}),e.jsx(L,{variant:"primary",startIcon:e.jsx(ce,{}),onClick:()=>y.current?.openAddSchema?.(!0),children:n("add_schemas")})]})]}),e.jsx(j,{flexGrow:1,minHeight:0,children:e.jsx(Fr,{ref:y})})]})},{label:n("data_blending"),content:e.jsxs(C,{direction:"column",sx:{height:"100%"},children:[e.jsxs(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{py:4,gap:4,minHeight:68},children:[e.jsx(A,{variant:"h3Medium",sx:{color:b.content.neutral.neutralStrong},children:n("data_blending")}),e.jsxs(C,{direction:"row",sx:{gap:2},children:[e.jsx(L,{variant:"tertiary",onClick:()=>y.current?.sync?.(),children:n("button.sync")}),e.jsx(me,{action:S.action,subject:S.subject,children:e.jsx(L,{startIcon:e.jsx(ce,{}),onClick:()=>y.current?.createBlend?.(!0),children:n("button.create_blend")})}
5,"write-data_model")]})]}),e.jsx(j,{flexGrow:1,minHeight:0,children:e.jsx(ea,{ref:y})})]})},{label:n("relationship"),content:e.jsxs(C,{direction:"column",sx:{flex:1,minHeight:0},children:[e.jsxs(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{py:4,gap:4,minHeight:68,flexShrink:0},children:[e.jsx(A,{variant:"h3Medium",sx:{color:b.content.neutral.neutralStrong},children:n("relationship")}),e.jsxs(C,{direction:"row",sx:{gap:2},children:[e.jsx(L,{variant:"tertiary",onClick:()=>y.current?.refreshRelation?.(),children:n("button.refresh")}),e.jsx(L,{startIcon:e.jsx(ce,{}),onClick:()=>y.current?.addRelation?.(!0),children:n("button.add_relationship")})]})]}),e.jsx(j,{flexGrow:1,minHeight:0,sx:{border:`1px solid ${b.border.neutral.border1}`,borderRadius:V.medium},children:e.jsx(Ca,{ref:y})})]})},{label:n("measures"),content:e.jsxs(C,{direction:"column",sx:{height:"100%"},children:[e.jsxs(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{py:4,gap:4,minHeight:68},children:[e.jsx(A,{variant:"h3Medium",sx:{color:b.content.neutral.neutralStrong},children:n("measures")}),e.jsx(me,{action:S.action,subject:S.subject,children:e.jsx(L,{startIcon:e.jsx(ce,{}),onClick:()=>y.current?.createMeasure?.(!0),children:n("button.create_new_measure")})},"write-data_model")]}),e.jsx(j,{flexGrow:1,minHeight:0,children:e.jsx(Fa,{ref:y})})]})},{label:n("measure_filter"),content:e.jsxs(C,{direction:"column",sx:{height:"100%"},children:[e.jsxs(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{py:4,gap:4,minHeight:68},children:[e.jsx(A,{variant:"h3Medium",sx:{color:b.content.neutral.neutralStrong},children:n("measure_filter")}),e.jsx(me,{action:S.action,subject:S.subject,children:e.jsx(L,{startIcon:e.jsx(ce,{}),onClick:()=>y.current?.createMeasureFilter?.(!0),children:n("button.create_new_measure_filter")})},"write-data_model")]}),e.jsx(j,{flexGrow:1,minHeight:0,children:e.jsx(Ba,{ref:y})})]})},{label:n("formual_measures"),content:e.jsxs(C,{direction:"column",sx:{height:"100%"},children:[e.jsxs(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{py:4,gap:4,minHeight:68},children:[e.jsx(A,{variant:"h3Medium",sx:{color:b.content.neutral.neutralStrong},children:n("formual_measures")}),e.jsx(me,{action:S.action,subject:S.subject,children:e.jsx(L,{startIcon:e.jsx(ce,{}),onClick:()=>y.current?.createFormulaMeasure?.(!0),children:n("button.create_new_formula_measure")})},"write-data_model")]}),e.jsx(j,{flexGrow:1,minHeight:0,children:e.jsx(Ha,{ref:y})})]})},{label:n("explorer"),content:e.jsxs(C,{direction:"column",sx:{height:"100%"},children:[e.jsx(C,{direction:"row",alignItems:"center",sx:{py:4,minHeight:68},children:e.jsx(A,{variant:"h3Medium",sx:{color:b.content.neutral.neutralStrong},children:n("explorer")})}),e.jsx(j,{flexGrow:1,minHeight:0,children:e.jsx(Xa,{ref:y})})]})},{label:n("pre_aggregations"),content:e.jsxs(C,{direction:"column",sx:{height:"100%"},children:[e.jsxs(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{py:4,gap:4,minHeight:68},children:[e.jsx(A,{variant:"h3Medium",sx:{color:b.content.neutral.neutralStrong},children:n("pre_aggregations")}),e.jsx(me,{action:S.action,subject:S.subject,children:e.jsx(L,{startIcon:e.jsx(ce,{}),onClick:()=>y.current?.openAddPreAggregation?.(!0),children:n("add_pre_aggregation")})},"write-data_model")]}),e.jsx(j,{flexGrow:1,minHeight:0,children:e.jsx(ci,{ref:y})})]})},{label:n("role_based_security"),content:e.jsxs(C,{direction:"column",sx:{height:"100%"},children:[e.jsx(C,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{py:4,gap:4,minHeight:68},children:e.jsx(A,{variant:"h3Medium",sx:{color:b.content.neutral.neutralStrong},children:n("role_based_security")})}),e.jsx(j,{flexGrow:1,minHeight:0,children:e.jsx(To,{ref:y})})]})}];return e.jsxs(Tt,{children:[e.jsxs(be,{children:[e.jsxs("title",{children:[n("data_model")," - FPT Data Suite"]}),e.jsx("meta",{name:"description",content:"Your personalized dashboard with reports"}),e.jsx("meta",{name:"keywords",content:"dashboard, reports, workspace, analytics"})]}),e.jsxs(C,{direction:"column",sx:{flexGrow:1,minHeight:0},children:[e.jsxs(C,{direction:"row",sx:{gap:2},alignItems:"center",justifyContent:"space-between",children:[e.jsx(zs,{title:n("data_model"),breadcrumbs:[{id:1,label:n("data_model"),value:Z(ts,{id:r,tenantId:i})},{id:2,label:l}],onClickItem:D=>D.value&&t.push(D.value)}),e.jsx(di,{projectId:r,repositoryId:a,tenantId:i})]}),e.jsx(j,{sx:{flex:1,position:"relative",minHeight:0,width:"100%",pb:4},children:e.jsx(j,{sx:{width:"100%",height:"100%",mt:4,overflow:"auto",position:"relative","&::-webkit-scrollbar":{display:"none"}},children:e.jsx(fn,{tabs:v,tabsWidth:"fit-content",value:u,onChange:f})})})]})]})}export{Ol 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.