@bygd/nc-report-ui 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/default/cjs/index.cjs +1 -1
- package/dist/default/esm/index.js +12 -10
- package/dist/default/iife/index.js +23 -23
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@material-ui/core/Paper"),a=require("@material-ui/core/styles"),r=require("@material-ui/core/LinearProgress"),n=require("react-google-charts"),l=require("numeral"),o=require("axios"),u=require("@material-ui/core/Typography"),i=require("nunjucks"),s=require("@material-ui/core/FormControl"),d=require("@material-ui/core/Select"),c=require("@material-ui/core/MenuItem"),f=require("react-intersection-observer"),m=require("@mui/material"),h=require("@mui/icons-material/CheckBoxOutlineBlank"),p=require("@mui/icons-material/CheckBox"),y=require("@mui/material/Box"),g=require("@mui/material/InputLabel"),b=require("@mui/material/MenuItem"),v=require("@mui/material/FormControl"),E=require("@mui/material/Select"),w=require("eventemitter3"),x=require("@material-ui/core/Grid"),S=require("@material-ui/core/Container");function C(e){return e&&e.__esModule?e:{default:e}}function q(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}}),t.default=e,Object.freeze(t)}var k=q(e),M=C(t),I=C(r),R=C(l),A=C(o),T=C(u),z=C(i),O=C(s),F=C(d),Y=C(c),_=C(h),j=C(p),P=C(y),D=C(g),$=C(b),W=C(v),B=C(E),V=C(w),G=C(x),L=C(S);function H(){return H=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)({}).hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},H.apply(null,arguments)}const K=a.makeStyles(e=>({root:{width:"100%","& > * + *":{marginTop:e.spacing(2)}}}));function N(e){const t=K();return k.default.createElement("div",H({className:t.root},e),k.default.createElement(I.default,null))}function U(e,t,a="array"){const r=e.columns,n=[...t.doc.metrics,...t.doc.dimensions].reduce((e,t)=>(e[t.name]=t,e),{});return e=>{const t="array"===a?[]:{};return r.reduce((t,r)=>{const l=e[r.name],o=n[r.name];let u=l;return u="timestamp"===o.type?new Date(l):o.format?o.format&&o.prefix?{v:+l,f:o.prefix+" "+R.default(l).format(o.format)}:o.format?{v:+l,f:R.default(l).format(o.format)}:l:l,"array"===a?t.push(u):t[r.name]=u?.f||u,t},t)}}const J=A.default.create({baseURL:"https://report-api.netcapital.pro",headers:{"Content-Type":"application/json"}}),Q={},X=()=>{const e=Object.keys(Q);return e.length>0?e[0]:null},Z={setAuth(e){this.auth=e;const t=e?.token,a=t?.accessToken;a&&(J.defaults.headers.common.Authorization=`Bearer ${a}`)},loadDashboardMeta:async({dashboardId:e})=>{const{data:t}=await J.get(`/dashboard-meta/${e}`);return Q[e]={dashboards:t.dashboards||{},charts:t.charts||{},reports:t.reports||{},reportMetadata:t.reportMetadata||{},dateRanges:t.dateRanges||[]},Q[e]},getDashboard:async({id:e,dashboardId:t})=>{const a=t||X();if(a&&Q[a]?.dashboards?.[e])return Q[a].dashboards[e];const{data:r}=await J.get(`/entity/dashboards/${e}`);return r},getChart:async({id:e,dashboardId:t})=>{const a=t||X();if(a&&Q[a]?.charts?.[e])return Q[a].charts[e];const{data:r}=await J.get(`/entity/charts/${e}`);return r},getReport:async({id:e,dashboardId:t})=>{const a=t||X();if(a&&Q[a]?.reports?.[e])return Q[a].reports[e];const{data:r}=await J.get(`/entity/reports/${e}`);return r},getReportSchema:async({id:e,dashboardId:t,query:a={}})=>{const r=t||X();if(r&&Q[r]?.reportMetadata?.[e])return Q[r].reportMetadata[e];const{data:n}=await J.post(`/reports/${e}/metadata`,a);return n},runReport:async({id:e,query:t={}})=>{const{data:a}=await J.post(`/reports/${e}/run`,t);return a},getDateRanges:async({dashboardId:e}={})=>{const t=e||X();if(t&&Q[t]?.dateRanges)return Q[t].dateRanges;const{data:a}=await J.get("/globals/date-ranges");return a}},ee=a.makeStyles(e=>({headerRow:{fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize},tableRow:{fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize},oddTableRow:{fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize},headerCell:{backgroundColor:"white",padding:"4px !important"}})),te={none:"YYYY-MM-dd",day:"MMM dd",week:"MMM dd",month:"YYYY MMM",year:"YYYY"};const ae={GoogleChart:function({chart:t,source:a,view:r,report:l,schema:o,dashboard:u,query:i}){const[s,d]=k.default.useState([]),c=ee(),[f,m]=k.default.useState([]);e.useEffect(()=>{(async()=>{const e=await Z.getDateRanges();m(e)})()},[]);const h=e.useMemo(()=>{const e="YYYY-MM-dd",t=i?.date_range?.name,a=f.find(e=>e.name===t);if(!a)return e;return te[a?.granularity]||e},[f,i]);return k.default.useEffect(()=>{if(!(t&&r&&a&&l&&o))return;let e=[];e.push(function(e,t){const a=[...t.doc.metrics,...t.doc.dimensions];return e.columns.reduce((e,t)=>{const r=a.find(e=>e.name===t.name)||t;return e.push(r.title||r.name),e},[])}(r,o));const n=U(r,o);a?.forEach(t=>{const a=n(t);e.push(a)}),a?.length?d(e):d()},[t,a,r,l,o]),s?k.default.createElement(n.Chart,H({width:t?.doc.size?.width||"100%",height:u?t?.doc.size?.height||"300px":"100%",chartType:t?.doc.chart?.type,data:s,options:(e=>{if("Table"===t?.doc.chart?.type)return{...t?.doc.chart?.options,cssClassNames:c};if("AreaChart"===t?.doc.chart?.type){const a=t?.doc.chart?.options?.hAxis||{},r={...{ticks:e.slice(1).map(e=>e[0]),format:h},...a};return{...t?.doc.chart?.options,hAxis:r,focusTarget:"category"}}return t?.doc.chart?.options})(s)},t?.doc.chart?.props)):k.default.createElement("div",null)},LabelChart:function({chart:e,source:t,view:a,report:r,schema:n}){const[l,o]=k.default.useState([]),[u,i]=k.default.useState(),[s,d]=k.default.useState();return k.default.useEffect(()=>{if(!(e&&a&&t&&r&&n))return;let l=[];const u=U(a,n);t.forEach(e=>l.push(u(e))),o(l);const s=e?.doc?.chart?.options||{},c=s?.index||0;if(l.length>0&&i(l[0][c]),s.subText?.format){z.default.configure({autoescape:!1});const e=U(a,n,"object")(t[0]),r=z.default.renderString(s.subText?.format,e);d(r)}},[e,t,a,r,n]),k.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignContent:"center",alignItems:"center",height:"100%",flexDirection:"column"}},k.default.createElement(T.default,{variant:"h6"},u?.f||u),k.default.createElement(T.default,{variant:"subtitle1"},s))}};function re(e,t){return void 0!==ae[e]?k.default.createElement(ae[e],t):k.default.createElement(N,t)}const ne=k.createElement(_.default,{fontSize:"small"}),le=k.createElement(j.default,{fontSize:"small"});function oe({items:t,selectedKeys:a,defaultSelectedKeys:r,onChange:n,inputValue:l,defaultInputValue:o,onInputChange:u,debounceMs:i=300,label:s,placeholder:d,loading:c,disabled:f,size:h="small",error:p,helperText:y,limitTags:g=3,disableClearable:b,id:v,textFieldProps:E}){const w=e.useMemo(()=>Array.isArray(t)?t:[],[t]),x=Array.isArray(a),[S,C]=e.useState(Array.isArray(r)?r:[]),q=x?a:S,M=e.useMemo(()=>{const e=new Map;for(const t of w)e.set(t&&t.key,t);return e},[w]),I=e.useMemo(()=>(Array.isArray(q)?q:[]).map(e=>M.get(e)).filter(Boolean),[q,M]),R="string"==typeof l,[A,T]=e.useState("string"==typeof o?o:""),z=R?l:A,O=function(t,a=300){const r=e.useRef(t),n=e.useRef(null);return r.current=t,e.useEffect(()=>()=>{n.current&&window.clearTimeout(n.current)},[]),k.useCallback((...e)=>{r.current&&(n.current&&window.clearTimeout(n.current),n.current=window.setTimeout(()=>{r.current&&r.current(...e)},a))},[a])}(e=>{u&&u(e)},i),F=I;return k.createElement(m.FormControl,{fullWidth:!0,error:p,disabled:f},k.createElement(m.Autocomplete,{openOnFocus:!0,forcePopupIcon:!0,id:v,multiple:!0,disableCloseOnSelect:!0,options:w,value:F,inputValue:z,getOptionLabel:e=>e&&"object"==typeof e?e.value??"":"",isOptionEqualToValue:(e,t)=>e&&t&&e.key===t.key,loading:c,limitTags:g,disableClearable:b,onChange:(e,t)=>{const a=Array.isArray(t)?t.map(e=>e&&e.key):[];x||C(a),n&&n(a,Array.isArray(t)?t:[])},onInputChange:(e,t,a)=>{R||T(t??""),"input"===a?O(t??""):"clear"===a&&O("")},renderOption:(e,t,{selected:a})=>k.createElement("li",H({},e,{key:t&&t.key||Math.random().toString(36)}),k.createElement(m.Checkbox,{icon:ne,checkedIcon:le,style:{marginRight:8},checked:!!a}),t&&t.value),renderTags:(e,t)=>(Array.isArray(e)?e:[]).map((e,a)=>k.createElement(m.Chip,H({},t({index:a}),{key:e&&e.key||a,label:e&&e.value||""}))),renderInput:e=>k.createElement(m.TextField,H({},e,{label:s,placeholder:d,InputProps:{...e.InputProps,endAdornment:k.createElement(k.Fragment,null,c?k.createElement(m.CircularProgress,{size:18}):null,e.InputProps.endAdornment)},size:h},E))}),y?k.createElement(m.FormHelperText,null,y):null)}const ue=({filter:t,channel:a,query:r})=>{const[n,l]=e.useState([]),[o,u]=e.useState([]),[i,s]=e.useState(!1),[d,c]=e.useState("");return e.useEffect(()=>{u(r?.filter?.[t?.filter]||[])},[r]),e.useEffect(()=>{(async()=>{s(!0);const e=await async function(e,t){return t?.source?(await Z.runReport({id:t.source})).map(e=>({key:e[t.field],value:e[t.field]})):[]}(0,t);l(e),s(!1)})()},[d]),k.default.createElement("div",{style:{display:"flex"}},k.default.createElement("div",{style:{maxWidth:640,minWidth:200}},k.default.createElement(oe,{id:t?.title,label:t?.title,placeholder:"Type to search…",items:n,selectedKeys:o,onChange:(e,r)=>{u(e),a.emit("filterChanged",t,{[t.filter]:e})},onInputChange:e=>{c(e)},loading:i,debounceMs:300,helperText:o.length?`${o.length} selected`:""})))};function ie({items:e,value:t,label:a,onChange:r,sx:n={width:"100%"}}){const l=e.some(e=>e.key===t)?t:"";return k.default.createElement(P.default,{sx:n},k.default.createElement(W.default,{fullWidth:!0},k.default.createElement(D.default,{id:"demo-simple-select-label"},a),k.default.createElement(B.default,{labelId:"demo-simple-select-label",id:"demo-simple-select",value:l,label:a,onChange:r,MenuProps:{style:{maxHeight:"300px"}},size:"small"},e.map(e=>{const{key:t,value:a}=e;return k.default.createElement($.default,{key:t,value:t},a)}))))}const se=({filter:t,channel:a,query:r})=>{const[n,l]=e.useState([]),[o,u]=e.useState("");return e.useEffect(()=>{u(r?.date_range?.name)},[r]),e.useEffect(()=>{(async()=>{const e=(await Z.getDateRanges()).filter(e=>!(t.allowedOptions.length>0)||t.allowedOptions.some(t=>t===e.name)).map(e=>({key:e.name,value:e.title}));l(e)})()},[]),k.default.createElement("div",{style:{minWidth:"200px",maxWidth:"640px"}},k.default.createElement(ie,{items:n,value:o,label:t?.title,onChange:(e,r)=>{const n=e.target.value;u(n),a.emit("filterChanged",t,{date_range:{name:n}})}}))},de=({filters:e=[],channel:t,query:a})=>k.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px"}},e.map(e=>"multi-select"===e.type?k.default.createElement(ue,{key:e.title,channel:t,filter:e,query:a}):"date-range"===e.type?k.default.createElement(se,{key:e.title,channel:t,filter:e,query:a}):null));var ce=e=>k.default.useRef(e||new V.default).current,fe=e=>{const t=k.default.useState({}),a=k.default.useCallback((a,r)=>{let n={...t.current,...r};for(var l in t.current=n,n)"date_range"===l||n[l].length||delete n[l];e?.emit("mergedFilterChanged",{value:n})},[e]);k.default.useEffect(()=>(e?.on("filterChanged",a),()=>{e?.off("filterChanged",a)}),[e])},me=({id:e,cache:t,dashboard:a,channel:r,...n})=>{const[l,o]=k.default.useState(),[u,i]=k.default.useState(),[s,d]=k.default.useState(),[c,m]=k.default.useState(),[h,p]=k.default.useState(re()),[y,g]=k.default.useState(),[b,v]=k.default.useState(0),[E,w]=k.default.useState(!1),[x,S]=k.default.useState(),[C,q]=k.default.useState(!1),I=k.default.useRef({value:n?.filter}),[R,A]=k.default.useState({}),{ref:z,inView:_,entry:j}=f.useInView({threshold:.1,delay:1e3}),P=ce(r);fe(P);const D=k.default.useCallback(e=>{const t=e.target.value;v(t),g(l.doc.view[t])},[l]);k.default.useEffect(()=>{e&&(async()=>{const a=e,r=t?.[a]||await Z.getChart({id:a}),l=r.doc.source?.id,u=l?t?.[l]||await Z.getReport({id:l}):void 0,s=t?.[`schema_${l}`]||n?.schema||await Z.getReportSchema({id:l}),c=r.doc?.view?.[0];v(0),i(u),o(r),g(c),d(s),q(!0)})().catch(e=>{console.error(e.message)})},[e]),k.default.useEffect(()=>{l&&c&&(!l?.doc?.source?.id||u)&&s&&(async()=>{p(re(l.doc.chart?.component,{view:y,source:c,chart:l,report:u,schema:s,dashboard:a,query:R}))})().catch(e=>{console.error(e.message)})},[l,c,y,u,s]);const $=e=>{const t={...u?.doc.query.filter||{},...n?.filter,...e?.value},a=t.date_range||u?.doc.query.date_range;if(delete t.date_range,q(!1),S(),w(!0),"context"===l?.doc?.source?.type)return m({filter:t}),void w(!1);const r={filter:t,date_range:a,parameters:n?.params};A(r),Z.runReport({id:u.id,query:r}).then(e=>{m(l.doc.source.reverse?e.reverse():e)}).catch(e=>{m([])}).finally(()=>{w(!1)})},W=e=>{I.current=e,_?$(e):(S(e),q(!0))};return k.default.useEffect(()=>(P?.on("mergedFilterChanged",W),()=>{P?.off("mergedFilterChanged",W)}),[P,u,l,_]),k.default.useEffect(()=>{_&&C&&$(x)},[_,C]),k.default.createElement(M.default,{ref:z,style:{margin:"4px",padding:"16px",flexGrow:a?void 0:1,display:"flex",flexDirection:"column",gap:"16px"},elevation:0},k.default.createElement(N,{style:{visibility:E?"visible":"hidden"}}),k.default.createElement("div",{style:{display:"flex"}},k.default.createElement("div",null,l&&k.default.createElement("div",{style:{display:"flex",alignItems:"center",lineHeight:0}},k.default.createElement(T.default,{noWrap:!0,variant:"h6"},n?.title||l.doc.name," "))),k.default.createElement("div",{style:{flexGrow:1}}),k.default.createElement("div",null,l?.doc?.view?.length>1&&k.default.createElement(O.default,null,k.default.createElement(F.default,{labelId:"date-range-select-label",id:"date-range-select",value:b,onChange:D,style:{fontSize:"12px"},disableUnderline:!0},l.doc.view.map((e,t)=>k.default.createElement(Y.default,{key:t,value:t},e.title)))))),k.default.createElement("div",{style:{minHeight:l?.doc?.size?.height||(a?"300px":"0"),position:"relative",paddingTop:l?.doc?.size?.vpad,paddingBottom:l?.doc?.size?.vpad,flexGrow:a?void 0:1}},k.default.createElement(de,{filters:l?.doc?.filters,channel:P,query:R}),h))};var he={Chart:me,Dashboard:function({id:e="sample_dashboard",auth:t,params:a}){const[r,n]=k.default.useState(),[l]=k.default.useState(),[o,u]=k.default.useState([]),i=k.default.useRef({}),s=ce();fe(s);const d=async e=>{const t=e?.doc?.rows||[],a=[];for(let e=0;e<t.length;e++){const r=t[e];r.columns?.forEach(e=>{if(e.override?.filter?.length){const t={};e.override.filter.forEach(e=>{e.hasOwnProperty("value")&&(t[e.field]=[e.value])}),e.filter=t}}),a.push(r)}u(a)};return k.default.useEffect(()=>{e&&(async()=>{Z.setAuth(t),await Z.loadDashboardMeta({dashboardId:e});const a=await Z.getDashboard({id:e});i.current[a?.id]=a,n(a),await d(a)})().catch(e=>console.error(e.message))},[e]),k.default.createElement(L.default,null,k.default.createElement(G.default,{container:!0},o?.map((e,n)=>k.default.createElement(G.default,{key:n,container:!0,item:!0},e?.columns?.map((e,n)=>k.default.createElement(G.default,H({key:n,item:!0},e.layout),k.default.createElement(me,{auth:t,cache:i.current,id:e.id,dashboard:r,schema:l,channel:null,title:e.title,filter:e.filter,params:a})))))))}};exports.default=he;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@material-ui/core/Paper"),a=require("@material-ui/core/styles"),r=require("@material-ui/core/LinearProgress"),n=require("react-google-charts"),l=require("numeral"),o=require("axios"),u=require("@material-ui/core/Typography"),i=require("nunjucks"),s=require("@material-ui/core/FormControl"),d=require("@material-ui/core/Select"),c=require("@material-ui/core/MenuItem"),f=require("react-intersection-observer"),m=require("@mui/material"),p=require("@mui/icons-material/CheckBoxOutlineBlank"),h=require("@mui/icons-material/CheckBox"),y=require("@mui/material/Box"),g=require("@mui/material/InputLabel"),b=require("@mui/material/MenuItem"),v=require("@mui/material/FormControl"),E=require("@mui/material/Select"),w=require("eventemitter3"),x=require("@material-ui/core/Grid"),S=require("@material-ui/core/Container");function C(e){return e&&e.__esModule?e:{default:e}}function k(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}}),t.default=e,Object.freeze(t)}var q=k(e),M=C(t),I=C(r),R=C(l),T=C(o),A=C(u),z=C(i),O=C(s),F=C(d),_=C(c),Y=C(p),j=C(h),P=C(y),D=C(g),B=C(b),$=C(v),W=C(E),L=C(w),V=C(x),G=C(S);function U(){return U=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)({}).hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},U.apply(null,arguments)}const H=a.makeStyles(e=>({root:{width:"100%","& > * + *":{marginTop:e.spacing(2)}}}));function K(e){const t=H();return q.default.createElement("div",U({className:t.root},e),q.default.createElement(I.default,null))}function N(e,t,a="array"){const r=e.columns,n=[...t.doc.metrics,...t.doc.dimensions].reduce((e,t)=>(e[t.name]=t,e),{});return e=>{const t="array"===a?[]:{};return r.reduce((t,r)=>{const l=e[r.name],o=n[r.name];let u=l;return u="timestamp"===o.type?new Date(l):o.format?o.format&&o.prefix?{v:+l,f:o.prefix+" "+R.default(l).format(o.format)}:o.format?{v:+l,f:R.default(l).format(o.format)}:l:l,"array"===a?t.push(u):t[r.name]=u?.f||u,t},t)}}const J="https://report-api.netcapital.pro",Q=T.default.create({baseURL:J,headers:{"Content-Type":"application/json"}}),X={},Z=()=>{const e=Object.keys(X);return e.length>0?e[0]:null},ee={setBaseUrl(e){Q.defaults.baseURL=e||J},setToken(e){e&&(Q.defaults.headers.common.Authorization=`Bearer ${e}`)},loadDashboardMeta:async({dashboardId:e})=>{const{data:t}=await Q.get(`/dashboard-meta/${e}`);return X[e]={dashboards:t.dashboards||{},charts:t.charts||{},reports:t.reports||{},reportMetadata:t.reportMetadata||{},dateRanges:t.dateRanges||[]},X[e]},getDashboard:async({id:e,dashboardId:t})=>{const a=t||Z();if(a&&X[a]?.dashboards?.[e])return X[a].dashboards[e];const{data:r}=await Q.get(`/entity/dashboards/${e}`);return r},getChart:async({id:e,dashboardId:t})=>{const a=t||Z();if(a&&X[a]?.charts?.[e])return X[a].charts[e];const{data:r}=await Q.get(`/entity/charts/${e}`);return r},getReport:async({id:e,dashboardId:t})=>{const a=t||Z();if(a&&X[a]?.reports?.[e])return X[a].reports[e];const{data:r}=await Q.get(`/entity/reports/${e}`);return r},getReportSchema:async({id:e,dashboardId:t,query:a={}})=>{const r=t||Z();if(r&&X[r]?.reportMetadata?.[e])return X[r].reportMetadata[e];const{data:n}=await Q.post(`/reports/${e}/metadata`,a);return n},runReport:async({id:e,query:t={}})=>{const{data:a}=await Q.post(`/reports/${e}/run`,t);return a},getDateRanges:async({dashboardId:e}={})=>{const t=e||Z();if(t&&X[t]?.dateRanges)return X[t].dateRanges;const{data:a}=await Q.get("/globals/date-ranges");return a}},te=a.makeStyles(e=>({headerRow:{fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize},tableRow:{fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize},oddTableRow:{fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize},headerCell:{backgroundColor:"white",padding:"4px !important"}})),ae={none:"YYYY-MM-dd",day:"MMM dd",week:"MMM dd",month:"YYYY MMM",year:"YYYY"};const re={GoogleChart:function({chart:t,source:a,view:r,report:l,schema:o,dashboard:u,query:i}){const[s,d]=q.default.useState([]),c=te(),[f,m]=q.default.useState([]);e.useEffect(()=>{(async()=>{const e=await ee.getDateRanges();m(e)})()},[]);const p=e.useMemo(()=>{const e="YYYY-MM-dd",t=i?.date_range?.name,a=f.find(e=>e.name===t);if(!a)return e;return ae[a?.granularity]||e},[f,i]);return q.default.useEffect(()=>{if(!(t&&r&&a&&l&&o))return;let e=[];e.push(function(e,t){const a=[...t.doc.metrics,...t.doc.dimensions];return e.columns.reduce((e,t)=>{const r=a.find(e=>e.name===t.name)||t;return e.push(r.title||r.name),e},[])}(r,o));const n=N(r,o);a?.forEach(t=>{const a=n(t);e.push(a)}),a?.length?d(e):d()},[t,a,r,l,o]),s?q.default.createElement(n.Chart,U({width:t?.doc.size?.width||"100%",height:u?t?.doc.size?.height||"300px":"100%",chartType:t?.doc.chart?.type,data:s,options:(e=>{if("Table"===t?.doc.chart?.type)return{...t?.doc.chart?.options,cssClassNames:c};if("AreaChart"===t?.doc.chart?.type){const a=t?.doc.chart?.options?.hAxis||{},r={...{ticks:e.slice(1).map(e=>e[0]),format:p},...a};return{...t?.doc.chart?.options,hAxis:r,focusTarget:"category"}}return t?.doc.chart?.options})(s)},t?.doc.chart?.props)):q.default.createElement("div",null)},LabelChart:function({chart:e,source:t,view:a,report:r,schema:n}){const[l,o]=q.default.useState([]),[u,i]=q.default.useState(),[s,d]=q.default.useState();return q.default.useEffect(()=>{if(!(e&&a&&t&&r&&n))return;let l=[];const u=N(a,n);t.forEach(e=>l.push(u(e))),o(l);const s=e?.doc?.chart?.options||{},c=s?.index||0;if(l.length>0&&i(l[0][c]),s.subText?.format){z.default.configure({autoescape:!1});const e=N(a,n,"object")(t[0]),r=z.default.renderString(s.subText?.format,e);d(r)}},[e,t,a,r,n]),q.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignContent:"center",alignItems:"center",height:"100%",flexDirection:"column"}},q.default.createElement(A.default,{variant:"h6"},u?.f||u),q.default.createElement(A.default,{variant:"subtitle1"},s))}};function ne(e,t){return void 0!==re[e]?q.default.createElement(re[e],t):q.default.createElement(K,t)}const le=q.createElement(Y.default,{fontSize:"small"}),oe=q.createElement(j.default,{fontSize:"small"});function ue({items:t,selectedKeys:a,defaultSelectedKeys:r,onChange:n,inputValue:l,defaultInputValue:o,onInputChange:u,debounceMs:i=300,label:s,placeholder:d,loading:c,disabled:f,size:p="small",error:h,helperText:y,limitTags:g=3,disableClearable:b,id:v,textFieldProps:E}){const w=e.useMemo(()=>Array.isArray(t)?t:[],[t]),x=Array.isArray(a),[S,C]=e.useState(Array.isArray(r)?r:[]),k=x?a:S,M=e.useMemo(()=>{const e=new Map;for(const t of w)e.set(t&&t.key,t);return e},[w]),I=e.useMemo(()=>(Array.isArray(k)?k:[]).map(e=>M.get(e)).filter(Boolean),[k,M]),R="string"==typeof l,[T,A]=e.useState("string"==typeof o?o:""),z=R?l:T,O=function(t,a=300){const r=e.useRef(t),n=e.useRef(null);return r.current=t,e.useEffect(()=>()=>{n.current&&window.clearTimeout(n.current)},[]),q.useCallback((...e)=>{r.current&&(n.current&&window.clearTimeout(n.current),n.current=window.setTimeout(()=>{r.current&&r.current(...e)},a))},[a])}(e=>{u&&u(e)},i),F=I;return q.createElement(m.FormControl,{fullWidth:!0,error:h,disabled:f},q.createElement(m.Autocomplete,{openOnFocus:!0,forcePopupIcon:!0,id:v,multiple:!0,disableCloseOnSelect:!0,options:w,value:F,inputValue:z,getOptionLabel:e=>e&&"object"==typeof e?e.value??"":"",isOptionEqualToValue:(e,t)=>e&&t&&e.key===t.key,loading:c,limitTags:g,disableClearable:b,onChange:(e,t)=>{const a=Array.isArray(t)?t.map(e=>e&&e.key):[];x||C(a),n&&n(a,Array.isArray(t)?t:[])},onInputChange:(e,t,a)=>{R||A(t??""),"input"===a?O(t??""):"clear"===a&&O("")},renderOption:(e,t,{selected:a})=>q.createElement("li",U({},e,{key:t&&t.key||Math.random().toString(36)}),q.createElement(m.Checkbox,{icon:le,checkedIcon:oe,style:{marginRight:8},checked:!!a}),t&&t.value),renderTags:(e,t)=>(Array.isArray(e)?e:[]).map((e,a)=>q.createElement(m.Chip,U({},t({index:a}),{key:e&&e.key||a,label:e&&e.value||""}))),renderInput:e=>q.createElement(m.TextField,U({},e,{label:s,placeholder:d,InputProps:{...e.InputProps,endAdornment:q.createElement(q.Fragment,null,c?q.createElement(m.CircularProgress,{size:18}):null,e.InputProps.endAdornment)},size:p},E))}),y?q.createElement(m.FormHelperText,null,y):null)}const ie=({filter:t,channel:a,query:r})=>{const[n,l]=e.useState([]),[o,u]=e.useState([]),[i,s]=e.useState(!1),[d,c]=e.useState("");return e.useEffect(()=>{u(r?.filter?.[t?.filter]||[])},[r]),e.useEffect(()=>{(async()=>{s(!0);const e=await async function(e,t){return t?.source?(await ee.runReport({id:t.source})).map(e=>({key:e[t.field],value:e[t.field]})):[]}(0,t);l(e),s(!1)})()},[d]),q.default.createElement("div",{style:{display:"flex"}},q.default.createElement("div",{style:{maxWidth:640,minWidth:200}},q.default.createElement(ue,{id:t?.title,label:t?.title,placeholder:"Type to search…",items:n,selectedKeys:o,onChange:(e,r)=>{u(e),a.emit("filterChanged",t,{[t.filter]:e})},onInputChange:e=>{c(e)},loading:i,debounceMs:300,helperText:o.length?`${o.length} selected`:""})))};function se({items:e,value:t,label:a,onChange:r,sx:n={width:"100%"}}){const l=e.some(e=>e.key===t)?t:"";return q.default.createElement(P.default,{sx:n},q.default.createElement($.default,{fullWidth:!0},q.default.createElement(D.default,{id:"demo-simple-select-label"},a),q.default.createElement(W.default,{labelId:"demo-simple-select-label",id:"demo-simple-select",value:l,label:a,onChange:r,MenuProps:{style:{maxHeight:"300px"}},size:"small"},e.map(e=>{const{key:t,value:a}=e;return q.default.createElement(B.default,{key:t,value:t},a)}))))}const de=({filter:t,channel:a,query:r})=>{const[n,l]=e.useState([]),[o,u]=e.useState("");return e.useEffect(()=>{u(r?.date_range?.name)},[r]),e.useEffect(()=>{(async()=>{const e=(await ee.getDateRanges()).filter(e=>!(t.allowedOptions.length>0)||t.allowedOptions.some(t=>t===e.name)).map(e=>({key:e.name,value:e.title}));l(e)})()},[]),q.default.createElement("div",{style:{minWidth:"200px",maxWidth:"640px"}},q.default.createElement(se,{items:n,value:o,label:t?.title,onChange:(e,r)=>{const n=e.target.value;u(n),a.emit("filterChanged",t,{date_range:{name:n}})}}))},ce=({filters:e=[],channel:t,query:a})=>q.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px"}},e.map(e=>"multi-select"===e.type?q.default.createElement(ie,{key:e.title,channel:t,filter:e,query:a}):"date-range"===e.type?q.default.createElement(de,{key:e.title,channel:t,filter:e,query:a}):null));var fe=e=>q.default.useRef(e||new L.default).current,me=e=>{const t=q.default.useState({}),a=q.default.useCallback((a,r)=>{let n={...t.current,...r};for(var l in t.current=n,n)"date_range"===l||n[l].length||delete n[l];e?.emit("mergedFilterChanged",{value:n})},[e]);q.default.useEffect(()=>(e?.on("filterChanged",a),()=>{e?.off("filterChanged",a)}),[e])},pe=({id:e,cache:t,dashboard:a,channel:r,...n})=>{const[l,o]=q.default.useState(),[u,i]=q.default.useState(),[s,d]=q.default.useState(),[c,m]=q.default.useState(),[p,h]=q.default.useState(ne()),[y,g]=q.default.useState(),[b,v]=q.default.useState(0),[E,w]=q.default.useState(!1),[x,S]=q.default.useState(),[C,k]=q.default.useState(!1),I=q.default.useRef({value:n?.filter}),[R,T]=q.default.useState({}),{ref:z,inView:Y,entry:j}=f.useInView({threshold:.1,delay:1e3}),P=fe(r);me(P);const D=q.default.useCallback(e=>{const t=e.target.value;v(t),g(l.doc.view[t])},[l]);q.default.useEffect(()=>{e&&(async()=>{const a=e,r=t?.[a]||await ee.getChart({id:a}),l=r.doc.source?.id,u=l?t?.[l]||await ee.getReport({id:l}):void 0,s=t?.[`schema_${l}`]||n?.schema||await ee.getReportSchema({id:l}),c=r.doc?.view?.[0];v(0),i(u),o(r),g(c),d(s),k(!0)})().catch(e=>{console.error(e.message)})},[e]),q.default.useEffect(()=>{l&&c&&(!l?.doc?.source?.id||u)&&s&&(async()=>{h(ne(l.doc.chart?.component,{view:y,source:c,chart:l,report:u,schema:s,dashboard:a,query:R}))})().catch(e=>{console.error(e.message)})},[l,c,y,u,s]);const B=e=>{const t={...u?.doc.query.filter||{},...n?.filter,...e?.value},a=t.date_range||u?.doc.query.date_range;if(delete t.date_range,k(!1),S(),w(!0),"context"===l?.doc?.source?.type)return m({filter:t}),void w(!1);const r={filter:t,date_range:a,parameters:n?.params};T(r),ee.runReport({id:u.id,query:r}).then(e=>{m(l.doc.source.reverse?e.reverse():e)}).catch(e=>{m([])}).finally(()=>{w(!1)})},$=e=>{I.current=e,Y?B(e):(S(e),k(!0))};return q.default.useEffect(()=>(P?.on("mergedFilterChanged",$),()=>{P?.off("mergedFilterChanged",$)}),[P,u,l,Y]),q.default.useEffect(()=>{Y&&C&&B(x)},[Y,C]),q.default.createElement(M.default,{ref:z,style:{margin:"4px",padding:"16px",flexGrow:a?void 0:1,display:"flex",flexDirection:"column",gap:"16px"},elevation:0},q.default.createElement(K,{style:{visibility:E?"visible":"hidden"}}),q.default.createElement("div",{style:{display:"flex"}},q.default.createElement("div",null,l&&q.default.createElement("div",{style:{display:"flex",alignItems:"center",lineHeight:0}},q.default.createElement(A.default,{noWrap:!0,variant:"h6"},n?.title||l.doc.name," "))),q.default.createElement("div",{style:{flexGrow:1}}),q.default.createElement("div",null,l?.doc?.view?.length>1&&q.default.createElement(O.default,null,q.default.createElement(F.default,{labelId:"date-range-select-label",id:"date-range-select",value:b,onChange:D,style:{fontSize:"12px"},disableUnderline:!0},l.doc.view.map((e,t)=>q.default.createElement(_.default,{key:t,value:t},e.title)))))),q.default.createElement("div",{style:{minHeight:l?.doc?.size?.height||(a?"300px":"0"),position:"relative",paddingTop:l?.doc?.size?.vpad,paddingBottom:l?.doc?.size?.vpad,flexGrow:a?void 0:1}},q.default.createElement(ce,{filters:l?.doc?.filters,channel:P,query:R}),p))};var he={Chart:pe,Dashboard:function({id:e="sample_dashboard",token:t,params:a,base_url:r}){const[n,l]=q.default.useState(),[o]=q.default.useState(),[u,i]=q.default.useState([]),s=q.default.useRef({}),d=fe();me(d);const c=async e=>{const t=e?.doc?.rows||[],a=[];for(let e=0;e<t.length;e++){const r=t[e];r.columns?.forEach(e=>{if(e.override?.filter?.length){const t={};e.override.filter.forEach(e=>{e.hasOwnProperty("value")&&(t[e.field]=[e.value])}),e.filter=t}}),a.push(r)}i(a)};return q.default.useEffect(()=>{e&&(async()=>{ee.setBaseUrl(r),ee.setToken(t),await ee.loadDashboardMeta({dashboardId:e});const a=await ee.getDashboard({id:e});s.current[a?.id]=a,l(a),await c(a)})().catch(e=>console.error(e.message))},[e]),q.default.createElement(G.default,null,q.default.createElement(V.default,{container:!0},u?.map((e,r)=>q.default.createElement(V.default,{key:r,container:!0,item:!0},e?.columns?.map((e,r)=>q.default.createElement(V.default,U({key:r,item:!0},e.layout),q.default.createElement(pe,{token:t,cache:s.current,id:e.id,dashboard:n,schema:o,channel:null,title:e.title,filter:e.filter,params:a})))))))}};exports.default=he;
|
|
@@ -111,12 +111,12 @@ const getFirstCachedDashboardId = () => {
|
|
|
111
111
|
return cachedIds.length > 0 ? cachedIds[0] : null;
|
|
112
112
|
};
|
|
113
113
|
const Api = {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (!
|
|
119
|
-
apiClient.defaults.headers.common['Authorization'] = `Bearer ${
|
|
114
|
+
setBaseUrl(baseUrl) {
|
|
115
|
+
apiClient.defaults.baseURL = baseUrl || BASE_URL;
|
|
116
|
+
},
|
|
117
|
+
setToken(token) {
|
|
118
|
+
if (!token) return;
|
|
119
|
+
apiClient.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
|
120
120
|
},
|
|
121
121
|
/**
|
|
122
122
|
* Load and cache dashboard metadata
|
|
@@ -1013,8 +1013,9 @@ var Chart = ({
|
|
|
1013
1013
|
|
|
1014
1014
|
function Dashboard({
|
|
1015
1015
|
id = "sample_dashboard",
|
|
1016
|
-
|
|
1017
|
-
params
|
|
1016
|
+
token,
|
|
1017
|
+
params,
|
|
1018
|
+
base_url
|
|
1018
1019
|
}) {
|
|
1019
1020
|
const [dashboard, setDashboard] = React__default.useState();
|
|
1020
1021
|
//const [schema, setSchema] = React.useState();
|
|
@@ -1024,7 +1025,8 @@ function Dashboard({
|
|
|
1024
1025
|
const channel = useChannel();
|
|
1025
1026
|
useFilterManager(channel);
|
|
1026
1027
|
const init = async () => {
|
|
1027
|
-
Api.
|
|
1028
|
+
Api.setBaseUrl(base_url);
|
|
1029
|
+
Api.setToken(token);
|
|
1028
1030
|
await Api.loadDashboardMeta({
|
|
1029
1031
|
dashboardId: id
|
|
1030
1032
|
});
|
|
@@ -1076,7 +1078,7 @@ function Dashboard({
|
|
|
1076
1078
|
key: index,
|
|
1077
1079
|
item: true
|
|
1078
1080
|
}, column.layout), /*#__PURE__*/React__default.createElement(Chart, {
|
|
1079
|
-
|
|
1081
|
+
token: token,
|
|
1080
1082
|
cache: cache.current,
|
|
1081
1083
|
id: column.id,
|
|
1082
1084
|
dashboard: dashboard,
|