harperdb
Version:
HarperDB is a distributed database, caching service, streaming broker, and application development platform focused on performance and ease of use.
1 lines • 10.2 kB
JavaScript
;(self.webpackChunkharperdb_studio=self.webpackChunkharperdb_studio||[]).push([[642],{7695:(e,a,s)=>{s.r(a),s.d(a,{default:()=>v});var t=s(9950),r=s(7176),n=s(6114),l=s(3452),i=s(4084),o=s(8156),c=s(6713),d=s(625),g=s(9435),u=s(5269),m=s(8222),p=s(3150),h=s(3628),x=s(4343),j=s(4414);const f={tableData:[],dataTableColumns:[],totalRecords:0,filtered:[],sorted:[{id:"username",desc:!1}],page:0,loading:!1,totalPages:1,pageSize:20,autoRefresh:!1,showFilter:!1,lastUpdate:!1};let b;const v=function(e){var a,s;let{lastUpdate:v,setLastUpdate:N}=e;const{customer_id:A}=(0,d.g)(),C=(0,d.Zp)(),P=(0,c.O$)(u.A,(e=>e.compute_stack_id)),S=(0,c.O$)(u.A,(e=>e.auth)),w=(0,c.O$)(u.A,(e=>e.url)),[k,F]=(0,t.useState)(f),[z,y]=(0,t.useState)(!0),$=null===(a=k.sorted[0])||void 0===a?void 0:a.id,D=null===(s=k.sorted[0])||void 0===s?void 0:s.desc,O=(0,t.useCallback)((e=>{C(`/o/${A}/i/${P}/users/${e}`)}),[P,A]);return(0,t.useEffect)((()=>{let e=!0;return S&&(async()=>{y(!0),b=new AbortController;const a=await(0,m.A)({auth:S,url:w,signal:b.signal});e&&(y(!1),F({...k,tableData:a,dataTableColumns:[{Header:"username",accessor:"username"},{Header:"role",accessor:"role"}],totalPages:Math.ceil((a.length||k.pageSize)/k.pageSize),loading:!1}))})(),()=>{var a;e=!1,null===(a=b)||void 0===a||a.abort()}}),[S,v,k.pageSize]),(0,t.useEffect)((()=>{let e=!0;if(k.tableData.length&&$){const a=[...[...k.tableData]].sort(((e,a)=>e[$]>a[$]&&D?1:e[$]>a[$]||D?-1:1));e&&F({...k,tableData:a})}return()=>{var a;e=!1,null===(a=b)||void 0===a||a.abort()}}),[$,D]),(0,j.jsxs)(g.tH,{onError:(e,a)=>(0,h.A)({error:{message:e.message,componentStack:a}}),FallbackComponent:p.A,children:[(0,j.jsxs)(r.A,{className:"floating-card-header",children:[(0,j.jsx)(n.A,{children:"existing users"}),(0,j.jsxs)(n.A,{className:"text-end",children:[(0,j.jsx)(l.A,{color:"link",onClick:()=>N(Date.now()),className:"me-2",children:(0,j.jsx)("i",{title:"Refresh Structure",className:"fa "+(z?"fa-spinner fa-spin":"fa-sync-alt")})}),(0,j.jsx)("span",{className:"mx-3 text",children:"|"}),(0,j.jsx)(l.A,{color:"link",title:"Filter Users",className:"me-2",onClick:()=>F({...k,filtered:k.showFilter?[]:k.filtered,showFilter:!k.showFilter}),children:(0,j.jsx)("i",{className:"fa fa-search"})})]})]}),(0,j.jsx)(i.A,{className:"mt-3",children:(0,j.jsx)(o.A,{className:"react-table-holder",children:(0,j.jsx)(x.A,{columns:k.dataTableColumns,data:k.tableData,currentPage:k.page,pageSize:k.pageSize,totalPages:k.totalPages,showFilter:k.showFilter,sorted:k.sorted,loading:z,onFilteredChange:e=>F({...k,filtered:e}),onSortedChange:e=>F({...k,sorted:e}),onPageChange:e=>F({...k,pageSize:e}),onPageSizeChange:e=>F({...k,page:0,pageSize:e}),onRowClick:e=>O(e.username)})})})]})}},4343:(e,a,s)=>{s.d(a,{A:()=>v});var t=s(9950),r=s(2043),n=s(5488),l=s(9435),i=s(7176),o=s(6114),c=s(4414);const d=e=>{let{headerGroups:a,onSortedChange:s,sorted:t,showFilter:r,dynamicAttributesFromDataTable:n,tableDescriptionAttributes:l}=e;const d=e=>{let a=!1;return l.forEach((s=>{s.attribute===e&&(s.is_primary_key||s.indexed)&&(a=!0)})),a};return a.map((e=>{const{key:a,...l}=e.getHeaderGroupProps();return(0,c.jsxs)("div",{...l,children:[(0,c.jsx)(i.A,{className:"header g-0",children:e.headers.map((e=>{var a,r;return(0,c.jsx)(o.A,{onClick:()=>{var a,r;n&&!n.includes(e.id)&&d(e.id)&&s([{id:e.id,desc:(null===(a=t[0])||void 0===a?void 0:a.id)===e.id&&!(null!==(r=t[0])&&void 0!==r&&r.desc)}])},className:`${(null===(a=t[0])||void 0===a?void 0:a.id)===e.id?"sorted":""} ${null!==(r=t[0])&&void 0!==r&&r.desc?"desc":"asc"} ${-1!==e.id.indexOf("hdb-narrow")?"action":""} px-1 ${n&&!n.includes(e.id)&&d(e.id)?"":"disabled-column"}`,children:(0,c.jsx)("div",{className:"text-renderer",children:e.render("Header")})},e.id)}))}),r&&(0,c.jsx)(i.A,{className:"filter g-0",children:e.headers.map((e=>(0,c.jsx)(o.A,{className:-1!==e.id.indexOf("hdb-narrow")?"action":"",children:e.render("Filter")},e.id)))})]},a)}))};var g=s(3452);const u=function(e){let{page:a,pageSize:s,totalPages:t,onPageChange:r,onPageSizeChange:l,loading:d}=e;return(0,c.jsxs)(i.A,{className:"pagination",children:[(0,c.jsx)(o.A,{xs:"12",sm:"2",className:"previous",children:(0,c.jsx)(g.A,{className:"mb-2 btn-pagination",color:"purple",block:!0,onClick:()=>r(a-1),disabled:!t||0===a,children:(0,c.jsx)("i",{className:"fa fa-chevron-left"})})}),(0,c.jsxs)(o.A,{xs:"12",sm:"4",className:"paginator",children:[(0,c.jsx)("i",{className:"fa fa-book me-2"}),(0,c.jsx)(n.A,{className:"mb-2",type:"number",value:a+1,min:1,max:t,onChange:e=>r(e.target.value-1)}),(0,c.jsxs)("div",{className:"page-count",children:["\xa0/\xa0",d?(0,c.jsx)("i",{className:"fa fa-spinner fa-spin"}):t]})]}),(0,c.jsx)(o.A,{xs:"12",sm:"4",className:"page-size",children:(0,c.jsx)(n.A,{className:"mb-2",type:"select",value:s,onChange:e=>l(e.target.value),children:[20,50,100,250].map((e=>(0,c.jsxs)("option",{value:e,children:[e," rows"]},e)))})}),(0,c.jsx)(o.A,{xs:"12",sm:"2",className:"next",children:(0,c.jsx)(g.A,{className:"mb-2 pull-right btn-pagination",block:!0,color:"purple",onClick:()=>r(a+1),disabled:!t||a+1===t,children:(0,c.jsx)("i",{className:"fa fa-chevron-right"})})})]})};const m=function(e){let{previousPage:a,canPreviousPage:s,pageIndex:t,gotoPage:r,setPageSize:l,pageCount:d,nextPage:u,canNextPage:m,loading:p}=e;return(0,c.jsxs)(i.A,{className:"pagination",children:[(0,c.jsx)(o.A,{xs:"12",sm:"2",className:"previous",children:(0,c.jsx)(g.A,{className:"mb-2 btn-pagination",color:"purple",block:!0,onClick:a,disabled:!d||!s,children:(0,c.jsx)("i",{className:"fa fa-chevron-left"})})}),(0,c.jsxs)(o.A,{xs:"12",sm:"4",className:"paginator",children:[(0,c.jsx)("i",{className:"fa fa-book me-2"}),(0,c.jsx)(n.A,{className:"mb-2",type:"number",value:t+1||1,min:1,max:d,onChange:e=>r(e.target.value?Number(e.target.value)-1:0)}),(0,c.jsxs)("div",{className:"page-count",children:["\xa0/\xa0",p?(0,c.jsx)("i",{className:"fa fa-spinner fa-spin"}):d]})]}),(0,c.jsx)(o.A,{xs:"12",sm:"4",className:"page-size",children:(0,c.jsx)(n.A,{className:"mb-2",type:"select",onChange:e=>{r(0),setTimeout((()=>l(e.target.value)),1e3)},children:[20,50,100,250].map((e=>(0,c.jsxs)("option",{value:e,children:[e," rows"]},e)))})}),(0,c.jsx)(o.A,{xs:"12",sm:"2",className:"next",children:(0,c.jsx)(g.A,{className:"mb-2 pull-right btn-pagination",block:!0,color:"purple",onClick:u,disabled:!d||!m,children:(0,c.jsx)("i",{className:"fa fa-chevron-right"})})})]})};const p=function(e){let{prepareRow:a,row:s,onRowClick:t=!1}=e;return a(s),(0,c.jsx)(i.A,{onClick:()=>t&&t(s.original),className:"g-0",children:s.cells.map((e=>(0,c.jsx)(o.A,{className:-1!==e.column.id.indexOf("hdb-narrow")?"action":"",children:e.render("Cell")},`${e.row.id}-${e.column.id}`)))})};var h=s(3628),x=s(3150);function j(e){let{value:a}=e;return(0,c.jsx)("div",{className:"text-renderer",children:a})}function f(e){let{src:a}=e;const[s,r]=(0,t.useState)(!1),[n,l]=(0,t.useState)(!1);return(0,c.jsxs)("div",{className:"image-renderer",onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),children:[(0,c.jsx)("i",{className:"fa fa-image"}),s&&n?(0,c.jsxs)("div",{className:"preview-image no-image",children:[(0,c.jsx)("i",{className:"fa fa-ban text-danger"}),(0,c.jsx)("div",{className:"mt-2",children:"image failed to load"})]}):s?(0,c.jsx)("img",{onError:l,alt:a,src:a,className:"preview-image"}):null]})}const b={Filter:e=>{let{column:{filterValue:a,setFilter:s}}=e;return(0,c.jsx)(n.A,{type:"text",value:a||"",onChange:e=>s(e.target.value||void 0)})},Cell:e=>{let{value:a}=e;return(e=>{switch(Object.prototype.toString.call(e)){case"[object Array]":case"[object Object]":return(0,c.jsx)(j,{value:JSON.stringify(e)});case"[object Boolean]":return(0,c.jsx)(j,{value:e?"true":"false"});case"[object String]":return(a=e)&&(a.match(/^https?.*\.(jpeg|jpg|gif|png)$/)||-1!==a.indexOf("data:image"))?(0,c.jsx)(f,{src:e}):(0,c.jsx)(j,{value:e});default:return(0,c.jsx)(j,{value:e})}var a})(a)}};const v=function(e){let{columns:a,data:s,error:n,currentPage:i,pageSize:o,totalPages:g,onFilteredChange:j,onSortedChange:f,onPageChange:v,onPageSizeChange:N,showFilter:A,onRowClick:C,sorted:P,loading:S,dynamicAttributesFromDataTable:w,tableDescriptionAttributes:k,manual:F=!1}=e;const{headerGroups:z,page:y,rows:$,prepareRow:D,state:O,setAllFilters:R,canPreviousPage:E,canNextPage:T,pageOptions:_,pageCount:H,gotoPage:G,nextPage:I,previousPage:L,setPageSize:U}=(0,r.useTable)({columns:a,data:s,defaultColumn:b,onFilteredChange:j,onSortedChange:f,onPageChange:v,onPageSizeChange:N,onRowClick:C,manualPagination:F,manualFilters:F,initialState:{pageIndex:i,pageSize:o}},r.useFilters,r.usePagination),[M,B]=(0,t.useState)(!0),J=F||!y.length?$:y;return(0,t.useEffect)((()=>{!A&&O.filters.length?R([]):j(O.filters)}),[O.filters,A]),(0,t.useEffect)((()=>{setTimeout((()=>B(!1)),100)}),[null===J||void 0===J?void 0:J.length]),(0,c.jsxs)(l.tH,{onError:(e,a)=>(0,h.A)({error:{message:e.message,componentStack:a}}),FallbackComponent:x.A,children:[(0,c.jsxs)("div",{className:"react-table-scroller",children:[(0,c.jsx)(d,{headerGroups:z,tableDescriptionAttributes:k,dynamicAttributesFromDataTable:w,onSortedChange:f,sorted:P,showFilter:A}),S||M?(0,c.jsx)("div",{className:"centered text-center",children:(0,c.jsx)("i",{className:"fa fa-spinner fa-spin"})}):J.length?J.map((e=>(0,c.jsx)(p,{row:e,prepareRow:D,onRowClick:C},e.id))):(0,c.jsxs)("div",{className:"centered text-center",children:[(0,c.jsx)("i",{className:"fa fa-exclamation-triangle text-danger"}),(0,c.jsx)("div",{className:"mt-2 text-darkgrey",children:n?`Error loading data: ${n}`:"no records"})]})]}),F?(0,c.jsx)(u,{page:i,pageSize:o,totalPages:g,onPageChange:v,onPageSizeChange:N,loading:S}):(0,c.jsx)(m,{previousPage:L,pageSize:o,canPreviousPage:E,pageIndex:O.pageIndex,pageOptions:_,gotoPage:G,setPageSize:U,pageCount:H,nextPage:I,canNextPage:T,loading:S})]})}},8222:(e,a,s)=>{s.d(a,{A:()=>n});var t=s(127),r=s(5269);const n=async e=>{let{auth:a,url:s,signal:n}=e;const l=await(0,t.A)({operation:{operation:"list_users"},auth:a,url:s,signal:n}),i=Array.isArray(l)?[...l].map((e=>({username:e.username,role:e.role.role}))).sort(((e,a)=>e.username.toLowerCase()>a.username.toLowerCase()?1:-1)):[];return r.A.update((e=>{e.users=i})),i}}}]);