"use strict";(globalThis.webpackChunksuperset=globalThis.webpackChunksuperset||[]).push([[3389],{52256:(e,t,n)=>{n.r(t),n.d(t,{CHART_UPDATE_STARTED:()=>_,chartUpdateStarted:()=>C,CHART_UPDATE_SUCCEEDED:()=>Z,chartUpdateSucceeded:()=>E,CHART_UPDATE_STOPPED:()=>T,chartUpdateStopped:()=>S,CHART_UPDATE_FAILED:()=>x,chartUpdateFailed:()=>w,CHART_RENDERING_FAILED:()=>A,chartRenderingFailed:()=>R,CHART_RENDERING_SUCCEEDED:()=>D,chartRenderingSucceeded:()=>L,REMOVE_CHART:()=>O,removeChart:()=>M,ANNOTATION_QUERY_SUCCESS:()=>I,annotationQuerySuccess:()=>k,ANNOTATION_QUERY_STARTED:()=>N,annotationQueryStarted:()=>P,ANNOTATION_QUERY_FAILED:()=>F,annotationQueryFailed:()=>$,DYNAMIC_PLUGIN_CONTROLS_READY:()=>U,dynamicPluginControlsReady:()=>V,getChartDataRequest:()=>q,runAnnotationQuery:()=>z,TRIGGER_QUERY:()=>H,triggerQuery:()=>j,RENDER_TRIGGERED:()=>B,renderTriggered:()=>G,UPDATE_QUERY_FORM_DATA:()=>W,updateQueryFormData:()=>K,UPDATE_CHART_ID:()=>Q,updateChartId:()=>Y,ADD_CHART:()=>X,addChart:()=>J,exploreJSON:()=>ee,GET_SAVED_CHART:()=>te,getSavedChart:()=>ne,POST_CHART_FORM_DATA:()=>ae,postChartFormData:()=>oe,redirectSQLLab:()=>ie,refreshChart:()=>re,getDatasetSamples:()=>se});var a=n(30381),o=n.n(a),i=n(31069),r=n(61988),s=n(35854),l=n(91877),c=n(93185),d=n(12515),u=n(10945),p=n(72570),h=n(97381),m=n(3741),g=n(98286),f=n(9679),v=n(86374),b=n(74599),y=n(77997);const _="CHART_UPDATE_STARTED";function C(e,t,n){return{type:_,queryController:e,latestQueryFormData:t,key:n}}const Z="CHART_UPDATE_SUCCEEDED";function E(e,t){return{type:Z,queriesResponse:e,key:t}}const T="CHART_UPDATE_STOPPED";function S(e){return{type:T,key:e}}const x="CHART_UPDATE_FAILED";function w(e,t){return{type:x,queriesResponse:e,key:t}}const A="CHART_RENDERING_FAILED";function R(e,t,n){return{type:A,error:e,key:t,stackTrace:n}}const D="CHART_RENDERING_SUCCEEDED";function L(e){return{type:D,key:e}}const O="REMOVE_CHART";function M(e){return{type:O,key:e}}const I="ANNOTATION_QUERY_SUCCESS";function k(e,t,n){return{type:I,annotation:e,queryResponse:t,key:n}}const N="ANNOTATION_QUERY_STARTED";function P(e,t,n){return{type:N,annotation:e,queryController:t,key:n}}const F="ANNOTATION_QUERY_FAILED";function $(e,t,n){return{type:F,annotation:e,queryResponse:t,key:n}}const U="DYNAMIC_PLUGIN_CONTROLS_READY",V=()=>(e,t)=>{const n=t(),a=(0,s.R3)(n.explore,n.explore.form_data);e({type:U,key:a.slice_id.value,controlsState:a})};async function q({formData:e,setDataMask:t=(()=>{}),resultFormat:n="json",resultType:a="full",force:o=!1,method:r="POST",requestParams:s={},ownState:u={}}){let p={...s};return v._&&(p={...p,mode:"cors",credentials:"include"}),(0,d.kP)(e)?(async(e,t,n,a,o="POST",r={})=>{const s=(0,d.pd)({resultFormat:t,resultType:n}),u=v._&&(null==r?void 0:r.dashboard_id),p=(0,d.H6)({formData:e,endpointType:s,force:a,allowDomainSharding:u,method:o,requestParams:r.dashboard_id?{dashboard_id:r.dashboard_id}:{}}),h={...r,url:p,postPayload:{form_data:e}};return((0,l.cr)(c.T.CLIENT_CACHE)?i.Z.get:i.Z.post)(h).then((({json:e,response:t})=>({response:t,json:{result:[e]}})))})(e,n,a,o,r,p):(async(e,t,n,a,o,r,s)=>{const l=(0,d.u)({formData:e,resultType:n,resultFormat:t,force:a,setDataMask:r,ownState:s}),{slice_id:c}=e,{dashboard_id:u}=o,p={};void 0!==c&&(p.form_data=`{"slice_id":${c}}`),void 0!==u&&(p.dashboard_id=u),!1!==a&&(p.force=a);const h=v._&&(null==o?void 0:o.dashboard_id),m=(0,d.kN)({path:"/api/v1/chart/data",qs:p,allowDomainSharding:h}).toString(),g={...o,url:m,headers:{"Content-Type":"application/json"},body:JSON.stringify(l)};return i.Z.post(g)})(e,n,a,o,p,t,u)}function z({annotation:e,timeout:t=60,formData:n=null,key:a,isDashboardRequest:o=!1,force:r=!1}){return function(s,l){const c=a||Object.keys(l().charts)[0],p={...n||l().charts[c].latestQueryFormData};if(!(0,u.m7)(e.sourceType))return Promise.resolve();const h=p.time_grain_sqla||p.granularity;p.time_grain_sqla=h,p.granularity=h;const m=Object.keys(e.overrides);(m.includes("since")||m.includes("until"))&&(e.overrides={...e.overrides,time_range:null});const f=Object.keys(e.overrides).reduce(((t,n)=>({...t,[n]:e.overrides[n]||p[n]})),{});if(!o&&p){const e=p.extra_filters&&p.extra_filters.length>0;f.extra_filters=e?p.extra_filters:void 0}const v=e.sourceType===u.S4.NATIVE,b=(0,d.xW)(e.value,f,v,r),y=new AbortController,{signal:_}=y;return s(P(e,y,c)),i.Z.get({url:b,signal:_,timeout:1e3*t}).then((({json:t})=>s(k(e,t,c)))).catch((t=>(0,g.O)(t).then((t=>{"timeout"===t.statusText?s($(e,{error:"Query timeout"},c)):(t.error||"").toLowerCase().includes("no data")?s(k(e,t,c)):"abort"!==t.statusText&&s($(e,t,c))}))))}}const H="TRIGGER_QUERY";function j(e=!0,t){return{type:H,value:e,key:t}}const B="RENDER_TRIGGERED";function G(e,t){return{type:B,value:e,key:t}}const W="UPDATE_QUERY_FORM_DATA";function K(e,t){return{type:W,value:e,key:t}}const Q="UPDATE_CHART_ID";function Y(e,t=0){return{type:Q,newId:e,key:t}}const X="ADD_CHART";function J(e,t){return{type:X,chart:e,key:t}}function ee(e,t=!1,n=60,a,i,r,s){return async u=>{const p=m.Yd.getTimestamp(),f=new AbortController,v={signal:f.signal,timeout:1e3*n};r&&(v.dashboard_id=r);const _=q({setDataMask:t=>{u((0,b.eG)(e.slice_id,t))},formData:e,resultFormat:"json",resultType:"full",force:t,method:i,requestParams:v,ownState:s});u(C(f,e,a));const Z=_.then((({response:t,json:n})=>{if((0,l.cr)(c.T.GLOBAL_ASYNC_QUERIES)){const a="result"in n?n.result:n;switch(t.status){case 200:return Promise.resolve(a);case 202:return(0,d.kP)(e)?(0,y.YJ)(a[0]):(0,y.YJ)(a);default:throw new Error(`Received unexpected response status (${t.status}) while fetching chart data`)}}return n.result})).then((n=>(n.forEach((n=>u((0,h.logEvent)(m.W9,{slice_id:a,applied_filters:n.applied_filters,is_cached:n.is_cached,force_refresh:t,row_count:n.rowcount,datasource:e.datasource,start_offset:p,ts:(new Date).getTime(),duration:m.Yd.getTimestamp()-p,has_extra_filters:e.extra_filters&&e.extra_filters.length>0,viz_type:e.viz_type,data_age:n.is_cached?o()(new Date).diff(o().utc(n.cached_dttm)):null})))),u(E(n,a))))).catch((t=>{if((0,l.cr)(c.T.GLOBAL_ASYNC_QUERIES))return u(w([t],a));const n=(t,n)=>{u((0,h.logEvent)(m.W9,{slice_id:a,has_err:!0,is_cached:n,error_details:t,datasource:e.datasource,start_offset:p,ts:(new Date).getTime(),duration:m.Yd.getTimestamp()-p}))};return"AbortError"===t.name?(n("abort"),u(S(a))):(0,g.O)(t).then((e=>("timeout"===t.statusText?n("timeout"):n(e.error,e.is_cached),u(w([e],a)))))})),T=(0,d.kP)(e)&&e.annotation_layers||[],x=r>0;return Promise.all([Z,u(j(!1,a)),u(K(e,a)),...T.map((o=>u(z({annotation:o,timeout:n,formData:e,key:a,isDashboardRequest:x,force:t}))))])}}const te="GET_SAVED_CHART";function ne(e,t=!1,n=60,a,o,i){return ee(e,t,n,a,"GET",o,i)}const ae="POST_CHART_FORM_DATA";function oe(e,t=!1,n=60,a,o,i){return ee(e,t,n,a,"POST",o,i)}function ie(e){return t=>{q({formData:e,resultFormat:"json",resultType:"query"}).then((({json:t})=>{const n={datasourceKey:e.datasource,sql:t.result[0].query};i.Z.postForm("/superset/sqllab/",{form_data:(0,f.o)(n)})})).catch((()=>t((0,p.Gb)((0,r.t)("An error occurred while loading the SQL")))))}}function re(e,t,n){return(a,o)=>{var i;const r=(o().charts||{})[e],s=o().dashboardInfo.common.conf.SUPERSET_WEBSERVER_TIMEOUT;r.latestQueryFormData&&0!==Object.keys(r.latestQueryFormData).length&&a(oe(r.latestQueryFormData,t,s,r.id,n,null==(i=o().dataMask[r.id])?void 0:i.ownState))}}const se=async(e,t)=>{const n=`/api/v1/dataset/${e}/samples?force=${t}`;try{return(await i.Z.get({endpoint:n})).json.result}catch(e){const t=await(0,g.O)(e);throw new Error(t.message||t.error||(0,r.t)("Sorry, an error occurred"),{cause:e})}}},57902:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(67294),o=n(45697),i=n.n(o),r=n(61988),s=n(72875),l=n(11965);const c={children:i().node.isRequired,onError:i().func,showMessage:i().bool};class d extends a.Component{constructor(e){super(e),this.state={error:null,info:null}}componentDidCatch(e,t){this.props.onError&&this.props.onError(e,t),this.setState({error:e,info:t})}render(){const{error:e,info:t}=this.state;if(e){const n=e.toString(),a=(0,l.tZ)("span",null,(0,l.tZ)("strong",null,(0,r.t)("Unexpected error")),n?`: ${n}`:"");return this.props.showMessage?(0,l.tZ)(s.Z,{subtitle:a,copyText:a,stackTrace:t?t.componentStack:null}):null}return this.props.children}}d.propTypes=c,d.defaultProps={onError:()=>{},showMessage:!0}},81395:(e,t,n)=>{function a(e,t){return e().dashboardState.sliceIds.includes(t)}n.d(t,{fK:()=>o,KJ:()=>i,l3:()=>r,ku:()=>s,oW:()=>l,M6:()=>c,oT:()=>d,yz:()=>u,ib:()=>p,P_:()=>h,cK:()=>m,l6:()=>g});const o="ADD_FILTER";function i(e,t,n){return(i,r)=>a(r,e)?i({type:o,chartId:e,component:t,form_data:n}):r().dashboardFilters}const r="REMOVE_FILTER";function s(e){return(t,n)=>a(n,e)?t({type:r,chartId:e}):n().dashboardFilters}const l="CHANGE_FILTER";function c(e,t,n){return(o,i)=>{if(a(i,e)){const a=i().dashboardLayout.present;return o({type:l,chartId:e,newSelectedValues:t,merge:n,components:a})}return i().dashboardFilters}}const d="UPDATE_DIRECT_PATH_TO_FILTER";function u(e,t){return(n,o)=>a(o,e)?n({type:d,chartId:e,path:t}):o().dashboardFilters}const p="UPDATE_LAYOUT_COMPONENTS";function h(e){return t=>{t({type:p,components:e})}}const m="UPDATE_DASHBOARD_FILTERS_SCOPE";function g(e){return t=>{t({type:m,scopes:e})}}},63389:(e,t,n)=>{n.d(t,{$:()=>k,Y:()=>N});var a,o=n(11064),i=n(16355),r=n(37863),s=n(37927),l=n(39759),c=n(35854),d=n(43399),u=n(70695),p=n(39023),h=n(80621),m=n(81255),g=n(53046),f=n(56967),v=n(28428),b=n(40187),y=n(27600),_=n(23525),C=n(69856),Z=n(42190),E=n(91877),T=n(93185),S=n(70400),x=n(41609),w=n.n(x),A=n(13311),R=n.n(A),D=n(14670),L=n.n(D),O=n(10916);!function(e){e.FILTER_TIME="filter_time",e.FILTER_TIMEGRAIN="filter_timegrain",e.FILTER_TIMECOLUMN="filter_timecolumn",e.FILTER_SELECT="filter_select",e.FILTER_RANGE="filter_range"}(a||(a={}));const M=(e,t)=>w()(e)?w()(t)?[]:[t]:[e];var I=n(41295);const k="HYDRATE_DASHBOARD",N=(e,t,n=C.Qi.NOOP,x)=>(A,D)=>{var N,P;const{user:F,common:$,dashboardState:U}=D(),{metadata:V}=e,q=(0,S.Z)("regular"),z="true"===(0,S.Z)("reserved").edit;let H={};t.forEach((e=>{e.slice_id=e.form_data.slice_id}));try{H=(0,_.eY)(y.KD.preselectFilters)||JSON.parse(V.default_filters)}catch(e){}null!=V&&V.shared_label_colors&&(0,I.fO)(V,null==V?void 0:V.shared_label_colors),null!=V&&V.label_colors&&(0,I.fO)(V,null==V?void 0:V.label_colors);const{position_data:j}=e,B=j&&Object.keys(j).length>0?j:{[h.Zn]:"v2",[h._4]:{type:m.U0,id:h._4,children:[h.PV]},[h.PV]:{type:m.BG,id:h.PV,children:[],parents:[h._4]}},G={};Object.values(B).forEach((e=>{e.type===m.dW&&(G[e.meta.chartId]=e.id)}));const W=function(e={}){let t=e[h._4];return t=t&&t.children.length&&e[t.children[0]].type===m.yR?e[e[t.children[0]].children[0]]:e[t.children[0]],t.id}(B),K=B[W];let Q,Y=0;const X=(null==V?void 0:V.filter_scopes)||{},J={},ee={},te={},ne=new Set,ae=new Map;t.forEach((e=>{const t=e.slice_id,a={...e.form_data,url_params:{...e.form_data.url_params,...q}};if(J[t]={...r.u,id:t,form_data:a,formData:(0,c.oN)(a)},te[t]={slice_id:t,slice_url:e.slice_url,slice_name:e.slice_name,form_data:e.form_data,viz_type:e.form_data.viz_type,datasource:e.form_data.datasource,description:e.description,description_markeddown:e.description_markeddown,owners:e.owners,modified:e.modified,changed_on:new Date(e.changed_on).getTime()},ne.add(t),!G[t]&&B[W]){var o;(0===Y||Y+h.fw>h.cz)&&(Q=(0,v.Z)(m.Os,(K.parents||[]).slice()),B[Q.id]=Q,K.children.push(Q.id),Y=0);const t=(0,v.Z)(m.dW,{chartId:e.slice_id},(Q.parents||[]).slice()),n=(null!=(o=ae.get(e.slice_id))?o:0)+1;t.id=`${m.dW}-explore-${e.slice_id}-${n}`,ae.set(e.slice_id,n),B[t.id]=t,Q.children.push(t.id),G[t.meta.chartId]=t.id,Y+=h.fw}if("filter_box"===e.form_data.viz_type){const a=(0,g.Z)(e.form_data);let{columns:o}=a;const{labels:i}=a;H[t]&&Object.keys(o).forEach((e=>{H[t][e]&&(o={...o,[e]:H[t][e]})}));const r=Object.keys(o).reduce(((e,n)=>{const a={...X[t]},{scope:o,immune:i}={...p.GI,...a[n]};return{...e,[n]:{scope:o,immune:i}}}),{}),s=G[t],l=(B[s].parents||[]).slice();l.push(s),[C.Qi.NOOP,C.Qi.SNOOZED].includes(n)&&(ee[t]={...p.Mj,chartId:t,componentId:s,datasourceId:e.form_data.datasource,filterName:e.slice_name,directPathToFilter:l,columns:o,labels:i,scopes:r,isDateFilter:Object.keys(o).includes(b.TIME_RANGE)})}const i=G[t];i&&B[i]&&(B[i].meta.sliceName=e.slice_name)})),(0,d.DU)({dashboardFilters:ee,components:B}),B[h.M2]={id:h.M2,type:m.Vl,meta:{text:e.dashboard_title}};const oe={past:[],present:B,future:[]},ie=(0,f.Z)();let re=[];B[ie]&&(re=(B[ie].parents||[]).slice(),re.push(ie));let se=(null==V?void 0:V.native_filter_configuration)||[];n===C.Qi.REVIEWING&&(se=function(e=[],t={},n={}){const o=[],i={};e.forEach((e=>{const r=String(e.slice_id);if("filter_box"===e.form_data.viz_type){i[r]={};const l=(0,g.Z)(e.form_data);let{columns:c}=l;n[r]&&Object.keys(c).forEach((e=>{n[r][e]&&(c={...c,[e]:n[r][e]})}));const d=Object.keys(c).reduce(((e,n)=>{const a={...t[r]},{scope:o,immune:i}={...p.GI,...a[n]};return{...e,[n]:{scope:o,immune:i}}}),{}),{adhoc_filters:u=[],datasource:h="",date_filter:m=!1,druid_time_origin:f,filter_configs:v=[],granularity:b,granularity_sqla:y,show_druid_time_granularity:_=!1,show_druid_time_origin:Z=!1,show_sqla_time_column:E=!1,show_sqla_time_granularity:T=!1,time_grain_sqla:S,time_range:x}=e.form_data,A=(s=n,(e,t)=>s[e]&&s[e][t]?s[e][t]:null);if(m){const{scope:e,immune:t}=d[C.i2.time_range]||p.GI,n={id:`NATIVE_FILTER-${L().generate()}`,description:"time range filter",controlValues:{},name:C.m_.time_range,filterType:a.FILTER_TIME,targets:[{}],cascadeParentIds:[],defaultDataMask:{},type:O.BE.NATIVE_FILTER,scope:{rootPath:e,excluded:t}};i[r][C.i2.time_range]=n.id;const s=A(r,C.i2.time_range)||x;if(w()(s)||(n.defaultDataMask={extraFormData:{time_range:s},filterState:{value:s}}),o.push(n),T){const{scope:e,immune:t}=d[C.i2.time_grain_sqla]||p.GI,n={id:`NATIVE_FILTER-${L().generate()}`,controlValues:{},description:"time grain filter",name:C.m_.time_grain_sqla,filterType:a.FILTER_TIMEGRAIN,targets:[{datasetId:parseInt(h.split("__")[0],10)}],cascadeParentIds:[],defaultDataMask:{},type:O.BE.NATIVE_FILTER,scope:{rootPath:e,excluded:t}};i[r][C.i2.time_grain_sqla]=n.id;const s=A(r,C.i2.time_grain_sqla);w()(s)||(n.defaultDataMask={extraFormData:{time_grain_sqla:s||S},filterState:{value:M(s,S)}}),o.push(n)}if(E){const{scope:e,immune:t}=d[C.i2.granularity_sqla]||p.GI,n={id:`NATIVE_FILTER-${L().generate()}`,description:"time column filter",controlValues:{},name:C.m_.granularity_sqla,filterType:a.FILTER_TIMECOLUMN,targets:[{datasetId:parseInt(h.split("__")[0],10)}],cascadeParentIds:[],defaultDataMask:{},type:O.BE.NATIVE_FILTER,scope:{rootPath:e,excluded:t}};i[r][C.i2.granularity_sqla]=n.id;const s=A(r,C.i2.granularity_sqla);w()(s)||(n.defaultDataMask={extraFormData:{granularity_sqla:s||y},filterState:{value:M(s,y)}}),o.push(n)}if(_){const{scope:e,immune:t}=d[C.i2.granularity]||p.GI,n={id:`NATIVE_FILTER-${L().generate()}`,description:"time grain filter",controlValues:{},name:C.m_.granularity,filterType:a.FILTER_TIMEGRAIN,targets:[{datasetId:parseInt(h.split("__")[0],10)}],cascadeParentIds:[],defaultDataMask:{},type:O.BE.NATIVE_FILTER,scope:{rootPath:e,excluded:t}};i[r][C.i2.granularity]=n.id;const s=A(r,C.i2.granularity);w()(s)||(n.defaultDataMask={extraFormData:{granularity_sqla:s||b},filterState:{value:M(s,b)}}),o.push(n)}if(Z){const{scope:e,immune:t}=d[C.i2.druid_time_origin]||p.GI,n={id:`NATIVE_FILTER-${L().generate()}`,description:"time column filter",controlValues:{},name:C.m_.druid_time_origin,filterType:a.FILTER_TIMECOLUMN,targets:[{datasetId:parseInt(h.split("__")[0],10)}],cascadeParentIds:[],defaultDataMask:{},type:O.BE.NATIVE_FILTER,scope:{rootPath:e,excluded:t}};i[r][C.i2.druid_time_origin]=n.id;const s=A(r,C.i2.druid_time_origin);w()(s)||(n.defaultDataMask={extraFormData:{granularity_sqla:s||f},filterState:{value:M(s,f)}}),o.push(n)}}v.forEach((e=>{const{scope:t,immune:n}=d[e.column]||p.GI,s={id:`NATIVE_FILTER-${L().generate()}`,description:"",controlValues:{enableEmptyFilter:!e[C.ft.CLEARABLE],defaultToFirstItem:!1,inverseSelection:!1,multiSelect:e[C.ft.MULTIPLE],sortAscending:e[C.ft.SORT_ASCENDING]},name:e.label||e.column,filterType:a.FILTER_SELECT,targets:[{datasetId:parseInt(h.split("__")[0],10),column:{name:e.column}}],cascadeParentIds:[],defaultDataMask:{},type:O.BE.NATIVE_FILTER,scope:{rootPath:t,excluded:n},adhoc_filters:u,sortMetric:e[C.ft.SORT_METRIC],time_range:x};i[r][e.column]=s.id;const l=A(r,e.column)||(e=>{let t=e[C.ft.DEFAULT_VALUE];return""===t&&(t=null),t&&e[C.ft.MULTIPLE]&&(t=e.defaultValue.split(";")),t})(e);w()(l)||(s.defaultDataMask={extraFormData:{filters:[{col:e.column,op:"IN",val:l}]},filterState:{value:l}}),o.push(s)}))}var s}));const r=(e=>{const t={},n=Object.keys(e).map((e=>parseInt(e,10)));return Object.entries(e).forEach((([e,a])=>{t[e]={},Object.entries(a).forEach((([a,o])=>{t[e][a]=(0,d.up)({filterScope:o}).filter((t=>n.includes(t)&&String(t)!==e))}))})),t})(t);return Object.entries(r).forEach((([e,t])=>{Object.entries(t).forEach((([t,n])=>{const r=i[e][t];n.forEach((e=>{Object.values(i[e]).forEach((e=>{const t=R()(o,(({id:t})=>t===e));t&&[a.FILTER_SELECT,a.FILTER_RANGE].includes(t.filterType)&&(t.cascadeParentIds=t.cascadeParentIds||[],t.cascadeParentIds.push(r))}))}))}))})),o}(t,X,H),V.native_filter_configuration=se,V.show_native_filters=!0);const le=(0,l.a)({filterConfig:se});V.show_native_filters=null!=(N=null==e||null==(P=e.metadata)?void 0:P.show_native_filters)?N:(0,E.cr)(T.T.DASHBOARD_NATIVE_FILTERS)&&[C.Qi.CONVERTED,C.Qi.REVIEWING,C.Qi.NOOP].includes(n),(0,E.cr)(T.T.DASHBOARD_CROSS_FILTERS)&&Object.values(oe.present).forEach((e=>{var t,n,a,r,s,l;const c=null==(t=e.meta)?void 0:t.chartId,d=null!=(n=null==(a=null!=(r=(0,o.Z)().get(null==(s=J[c])||null==(l=s.formData)?void 0:l.viz_type))?r:{})?void 0:a.behaviors)?n:[];V.chart_configuration||(V.chart_configuration={}),d.includes(i.cg.INTERACTIVE_CHART)&&!V.chart_configuration[c]&&(V.chart_configuration[c]={id:c,crossFilters:{scope:{rootPath:[h._4],excluded:[c]}}})}));const{roles:ce}=F,de=(0,u.Ms)(e,F);return A({type:k,data:{sliceEntities:{...s.b,slices:te,isLoading:!1},charts:J,dashboardInfo:{...e,metadata:V,userId:F.userId?String(F.userId):null,dash_edit_perm:de,dash_save_perm:(0,u.ZP)("can_save_dash","Superset",ce),dash_share_perm:(0,u.ZP)("can_share_dashboard","Superset",ce),superset_can_explore:(0,u.ZP)("can_explore","Superset",ce),superset_can_share:(0,u.ZP)("can_share_chart","Superset",ce),superset_can_csv:(0,u.ZP)("can_csv","Superset",ce),slice_can_edit:(0,u.ZP)("can_slice","Superset",ce),common:{flash_messages:null==$?void 0:$.flash_messages,conf:null==$?void 0:$.conf}},dataMask:x,dashboardFilters:ee,nativeFilters:le,dashboardState:{preselectNativeFilters:(0,_.eY)(y.KD.nativeFilters),sliceIds:Array.from(ne),directPathToChild:re,directPathLastUpdated:Date.now(),focusedFilterField:null,expandedSlices:(null==V?void 0:V.expanded_slices)||{},refreshFrequency:(null==V?void 0:V.refresh_frequency)||0,shouldPersistRefreshFrequency:!1,css:e.css||"",colorNamespace:(null==V?void 0:V.color_namespace)||null,colorScheme:(null==V?void 0:V.color_scheme)||null,editMode:de&&z,isPublished:e.published,hasUnsavedChanges:!1,maxUndoHistoryExceeded:!1,lastModifiedTime:e.changed_on,isRefreshing:!1,isFiltersRefreshing:!1,activeTabs:(null==U?void 0:U.activeTabs)||[],filterboxMigrationState:n,datasetsStatus:Z.ni.LOADING},dashboardLayout:oe}})}},68969:(e,t,n)=>{n.d(t,{lf:()=>c,D2:()=>u,cK:()=>p,To:()=>h});var a=n(31069),o=n(61988),i=n(15926),r=n.n(i),s=n(72570),l=n(98286);const c="SET_ALL_SLICES";function d(e){return{type:c,payload:{slices:e}}}const u="FETCH_ALL_SLICES_STARTED",p="FETCH_ALL_SLICES_FAILED";function h(e,t=!1){return(n,i)=>{const{sliceEntities:c}=i();return 0===c.lastUpdated?(n({type:u}),a.Z.get({endpoint:`/api/v1/chart/?q=${r().encode({columns:["changed_on_delta_humanized","changed_on_utc","datasource_id","datasource_type","datasource_url","datasource_name_text","description_markeddown","description","id","params","slice_name","url","viz_type"],filters:[{col:"owners",opr:"rel_m_m",value:e}],page_size:200,order_column:"changed_on_delta_humanized",order_direction:"desc"})}`}).then((({json:e})=>{const a={};let{result:o}=e;return t&&(o=o.filter((e=>"filter_box"!==e.viz_type))),o.forEach((e=>{let t=JSON.parse(e.params);var n,o;t={...t,datasource:(n=e.datasource_id,o=e.datasource_type,`${n}__${o}`||t.datasource)},a[e.id]={slice_id:e.id,slice_url:e.url,slice_name:e.slice_name,form_data:t,datasource_name:e.datasource_name_text,datasource_url:e.datasource_url,datasource_id:e.datasource_id,datasource_type:e.datasource_type,changed_on:new Date(e.changed_on_utc).getTime(),description:e.description,description_markdown:e.description_markeddown,viz_type:e.viz_type,modified:e.changed_on_delta_humanized,changed_on_humanized:e.changed_on_delta_humanized}})),n(d(a))})).catch((e=>console.log(e)||(0,l.O)(e).then((({error:e})=>{n(function(e){return{type:p,payload:{error:e}}}(e||(0,o.t)("Could not fetch all saved charts"))),n((0,s.Gb)((0,o.t)("Sorry there was an error fetching saved charts: ")+e))}))))):n(d(c.slices))}}},39023:(e,t,n)=>{n.d(t,{GI:()=>d,Mj:()=>u,ZP:()=>h});var a=n(81395),o=n(63389),i=n(40187),r=n(80621),s=n(53046),l=n(43399),c=n(20194);const d={scope:[r._4],immune:[]},u={chartId:null,componentId:null,filterName:null,datasourceId:null,directPathToFilter:[],isDateFilter:!1,isInstantFilter:!0,columns:{},labels:{},scopes:{}},p=[a.fK,a.l3,a.oW];function h(e={},t){const n={[a.fK](){const{chartId:e,component:n,form_data:a}=t,{columns:o,labels:r}=(0,s.Z)(a),l=Object.keys(o).reduce(((e,t)=>({...e,[t]:d})),{}),c=n?(n.parents||[]).slice().concat(n.id):[];return{...u,chartId:e,componentId:n.id,datasourceId:a.datasource,filterName:n.meta.sliceName,directPathToFilter:c,columns:o,labels:r,scopes:l,isInstantFilter:!!a.instant_filtering,isDateFilter:Object.keys(o).includes(i.TIME_RANGE)}},[a.oW](e){const{newSelectedValues:n,merge:a}=t,o=Object.keys(n).reduce(((e,t)=>a&&t in e?{...e,[t]:[...e[t],...n[t]]}:{...e,[t]:n[t]}),{...e.columns});return{...e,columns:o}},[a.oT](e){const{path:n}=t;return{...e,directPathToFilter:n}}};if(t.type===a.ib)return(0,l.DU)({dashboardFilters:e,components:t.components}),e;if(t.type===a.cK){const n=t.scopes,a=Object.entries(n).reduce(((e,t)=>{const[n,{scope:a,immune:o}]=t,{chartId:i,column:r}=(0,c._)(n),s={...e[i].scopes,[r]:{scope:a,immune:o}};return{...e,[i]:{...e[i],scopes:s}}}),e);return(0,l.DU)({dashboardFilters:a}),a}if(t.type===a.l3){const{chartId:n}=t,{[n]:a,...o}=e;return(0,l.DU)({dashboardFilters:o}),o}if(t.type===o.$)return t.data.dashboardFilters;if(t.type in n){const a={...e,[t.chartId]:n[t.type](e[t.chartId])};return p.includes(t.type)&&(0,l.DU)({dashboardFilters:a}),a}return e}},37927:(e,t,n)=>{n.d(t,{b:()=>r,Z:()=>s});var a=n(61988),o=n(68969),i=n(63389);const r={slices:{},isLoading:!0,errorMessage:null,lastUpdated:0};function s(e=r,t){const n={[i.$]:()=>({...t.data.sliceEntities}),[o.D2]:()=>({...e,isLoading:!0}),[o.lf]:()=>({...e,isLoading:!1,slices:{...e.slices,...t.payload.slices},lastUpdated:(new Date).getTime()}),[o.cK]:()=>({...e,isLoading:!1,lastUpdated:(new Date).getTime(),errorMessage:t.payload.error||(0,a.t)("Could not fetch all saved charts")})};return t.type in n?n[t.type]():e}},43399:(e,t,n)=>{n.d(t,{De:()=>b,Z3:()=>y,_f:()=>_,up:()=>C,DU:()=>Z});var a=n(58809),o=n.n(a),i=n(8816),r=n.n(i),s=n(83927),l=n.n(s),c=n(41609),d=n.n(c),u=n(20194),p=n(81255),h=n(39023);let m=[],g={},f={},v={};function b(){return g}function y(e){return m.includes(e)}function _(e){if(!(e in f)){const t=Object.entries(g).filter((([,{scope:t}])=>t.includes(e)));f[e]=r()(o()((([e])=>(0,u._)(e).column)),l()((([,{values:e}])=>e)))(t)}return f[e]}function C({filterScope:e}){function t(e=[],n={},a=[]){n&&(n.type===p.dW&&n.meta&&n.meta.chartId&&!a.includes(n.meta.chartId)?e.push(n.meta.chartId):n.children&&n.children.forEach((n=>t(e,v[n],a))))}const n=[],{scope:a,immune:o}=e||h.GI;return a.forEach((e=>t(n,v[e],o))),n}function Z({dashboardFilters:e={},components:t={}}){m=Object.values(e).map((e=>e.chartId)),d()(t)||(v=t),f={},g=Object.values(e).reduce(((e,t)=>{const{chartId:n,columns:a,scopes:o}=t,i={};return Object.keys(a).forEach((e=>{if(Array.isArray(a[e])?a[e].length:void 0!==a[e]){const t=C({filterScope:o[e]}).filter((e=>n!==e));i[(0,u.w)({chartId:n,column:e})]={values:a[e],scope:t}}})),{...e,...i}}),{})}},53046:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(69856);function o(e={}){const{date_filter:t,filter_configs:n=[],show_druid_time_granularity:o,show_druid_time_origin:i,show_sqla_time_column:r,show_sqla_time_granularity:s}=e;let l=n.reduce((({columns:e,labels:t},n)=>{let o=n[a.ft.DEFAULT_VALUE];return""===o&&(o=null),o&&n[a.ft.MULTIPLE]&&(o=n.defaultValue.split(";")),{columns:{...e,[n.column]:n.vals||o},labels:{...t,[n.column]:n.label}}}),{columns:{},labels:{}});if(t){let t={...l.columns,[a.i2.time_range]:e.time_range};const n={...l.labels,...Object.entries(a.i2).reduce(((e,[t,n])=>({...e,[n]:a.m_[t]})),{})};s&&(t={...t,[a.i2.time_grain_sqla]:e.time_grain_sqla}),r&&(t={...t,[a.i2.granularity_sqla]:e.granularity_sqla}),o&&(t={...t,[a.i2.granularity]:e.granularity}),i&&(t={...t,[a.i2.druid_time_origin]:e.druid_time_origin}),l={...l,columns:t,labels:n}}return l}},28428:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(14670),o=n.n(a),i=n(61988),r=n(81255),s=n(80621);const l={[r.dW]:{width:s.fw,height:50},[r.BA]:{width:s.fw,background:s.HE},[r.hE]:null,[r.Nc]:{text:"New header",headerSize:s.OE,background:s.HE},[r.xh]:{width:s.fw,height:50},[r.Os]:{background:s.HE},[r.yR]:null,[r.gn]:{text:"",defaultText:(0,i.t)("Tab title"),placeholder:(0,i.t)("Tab title")},[r.t]:{width:s.cz,background:s.HE}};function c(e){return`${e}-${o().generate()}`}function d(e,t,n=[]){return{type:e,id:c(e),children:[],parents:n,meta:{...l[e],...t}}}},11370:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(20194);function o(e){return Object.entries(e).reduce(((e,t)=>{const[n,{values:o}]=t,{chartId:i,column:r}=(0,a._)(n),s={...e[i],[r]:o};return{...e,[i]:s}}),{})}},79069:(e,t,n)=>{n.d(t,{Z:()=>m});var a=n(5872),o=n.n(a),i=n(67294),r=n(45697),s=n.n(r),l=n(51995),c=n(11965),d=n(82342),u=n(87253);const p={value:s().bool,label:s().string,onChange:s().func},h=l.iK.div` ${({theme:e})=>c.iv` .ControlHeader label { color: ${e.colors.grayscale.dark1}; } span[role='checkbox'] { padding-right: ${2*e.gridUnit}px; } `} `;class m extends i.Component{onChange(){this.props.onChange(!this.props.value)}renderCheckbox(){return(0,c.tZ)(u.ZP,{onChange:this.onChange.bind(this),checked:!!this.props.value})}render(){return this.props.label?(0,c.tZ)(h,null,(0,c.tZ)(d.Z,o()({},this.props,{leftNode:this.renderCheckbox(),onClick:this.onChange.bind(this)}))):this.renderCheckbox()}}m.propTypes=p,m.defaultProps={value:!1,onChange:()=>{}}},95470:(e,t,n)=>{n.d(t,{Z:()=>C});var a=n(5872),o=n.n(a),i=n(11965),r=n(23560),s=n.n(r),l=n(67294),c=n(45697),d=n.n(c),u=n(4715),p=n(58593),h=n(61988),m=n(51995),g=n(70163),f=n(82342);const v={hasCustomLabelColors:d().bool,dashboardId:d().number,description:d().string,label:d().string,labelMargin:d().number,name:d().string.isRequired,onChange:d().func,value:d().string,clearable:d().bool,default:d().string,choices:d().oneOfType([d().arrayOf(d().array),d().func]),schemes:d().oneOfType([d().object,d().func]),isLinear:d().bool},b={choices:[],hasCustomLabelColors:!1,label:(0,h.t)("Color scheme"),schemes:{},clearable:!1,onChange:()=>{}},y=(0,m.iK)(g.Z.AlertSolid)` color: ${({theme:e})=>e.colors.alert.base}; `;var _={name:"kjime2",styles:"list-style:none;margin:0;padding:0;display:flex;align-items:center;& li{flex-basis:9px;height:10px;margin:9px 1px;}"};class C extends l.PureComponent{constructor(e){super(e),this.onChange=this.onChange.bind(this),this.renderOption=this.renderOption.bind(this),this.renderLabel=this.renderLabel.bind(this),this.dashboardColorSchemeAlert=(0,h.t)("The color scheme is determined by the related dashboard.\n Edit the color scheme in the dashboard properties.")}onChange(e){this.props.onChange(e)}renderOption(e){const{isLinear:t}=this.props,n=this.schemes[e];let a=[];return n&&(a=t?n.getColors(10):n.colors),(0,i.tZ)("span",{key:n.id,title:n.label},(0,i.tZ)("ul",{css:_},a.map(((e,t)=>(0,i.tZ)("li",{key:`${n.id}-${t}`,css:(0,i.iv)({backgroundColor:e,border:`1px solid ${"white"===e?"black":e}`},"","")}," ")))))}renderLabel(){const{dashboardId:e,hasCustomLabelColors:t,label:n}=this.props;if(t||e){const e=t?(0,h.t)("This color scheme is being overriden by custom label colors.\n Check the JSON metadata in the Advanced settings"):this.dashboardColorSchemeAlert;return(0,i.tZ)(l.Fragment,null,n," ",(0,i.tZ)(p.u,{title:e},(0,i.tZ)(y,{iconSize:"s"})))}return n}render(){const{choices:e,dashboardId:t,schemes:n}=this.props;let a=t?[{value:"dashboard",label:"dashboard",customLabel:(0,i.tZ)(p.u,{title:this.dashboardColorSchemeAlert},(0,h.t)("Dashboard scheme"))}]:[],r=t?"dashboard":void 0;if(!t){this.schemes=s()(n)?n():n;const t=s()(e)?e():e,o=[];var l,c;a=t.filter((e=>{const t=e[0],n="SUPERSET_DEFAULT"!==t&&!o.includes(t);return o.push(t),n})).map((([e])=>{var t,n;return{customLabel:this.renderOption(e),label:(null==(t=this.schemes)||null==(n=t[e])?void 0:n.label)||e,value:e}})),r=this.props.value||this.props.default,"SUPERSET_DEFAULT"===r&&(r=null==(l=this.schemes)||null==(c=l.SUPERSET_DEFAULT)?void 0:c.id)}const d={ariaLabel:(0,h.t)("Select color scheme"),allowClear:this.props.clearable,disabled:!!t,name:`select-${this.props.name}`,onChange:this.onChange,options:a,placeholder:(0,h.t)("Select scheme"),value:r};return(0,i.tZ)(u.Ph,o()({header:(0,i.tZ)(f.Z,o()({},this.props,{label:this.renderLabel()}))},d))}}C.propTypes=v,C.defaultProps=b},28543:(e,t,n)=>{n.d(t,{vq:()=>i,Pr:()=>r,ZP:()=>d});var a=n(69856),o=n(12515);const i={SIMPLE:"SIMPLE",SQL:"SQL"},r={HAVING:"HAVING",WHERE:"WHERE"},s={"==":"=","!=":"<>",">":">","<":"<",">=":">=","<=":"<=",IN:"IN","NOT IN":"NOT IN",LIKE:"LIKE",ILIKE:"ILIKE",REGEX:"REGEX","IS NOT NULL":"IS NOT NULL","IS NULL":"IS NULL","IS TRUE":"IS TRUE","IS FALSE":"IS FALSE","LATEST PARTITION":({datasource:e})=>`= '{{ presto.latest_partition('${e.schema}.${e.datasource_name}') }}'`},l=[...a.qB].map((e=>a.LT[e].operation));function c(e,{useSimple:t}={}){if(e.expressionType===i.SIMPLE||t){const{subject:t,comparator:n}=e,a=e.operator&&l.indexOf(e.operator)>=0?s[e.operator](e):s[e.operator];return(0,o.CB)(t,a,n)}return e.expressionType===i.SQL?e.sqlExpression:""}class d{constructor(e){var t;this.expressionType=e.expressionType||i.SIMPLE,this.expressionType===i.SIMPLE?(this.subject=e.subject,this.operator=null==(t=e.operator)?void 0:t.toUpperCase(),this.operatorId=e.operatorId,this.comparator=e.comparator,[a.d.IS_TRUE,a.d.IS_FALSE].indexOf(e.operatorId)>=0&&(this.comparator=e.operatorId===a.d.IS_TRUE),[a.d.IS_NULL,a.d.IS_NOT_NULL].indexOf(e.operatorId)>=0&&(this.comparator=null),this.clause=e.clause||r.WHERE,this.sqlExpression=null):this.expressionType===i.SQL&&(this.sqlExpression="string"==typeof e.sqlExpression?e.sqlExpression:c(e,{useSimple:!0}),this.clause=e.clause,e.operator&&l.indexOf(e.operator)>=0?(this.subject=e.subject,this.operator=e.operator,this.operatorId=e.operatorId):(this.subject=null,this.operator=null),this.comparator=null),this.isExtra=!!e.isExtra,this.isNew=!!e.isNew,this.filterOptionName=e.filterOptionName||`filter_${Math.random().toString(36).substring(2,15)}_${Math.random().toString(36).substring(2,15)}`}duplicateWith(e){return new d({...this,isNew:!1,...e})}equals(e){return e.expressionType===this.expressionType&&e.sqlExpression===this.sqlExpression&&e.operator===this.operator&&e.operatorId===this.operatorId&&e.comparator===this.comparator&&e.subject===this.subject}isValid(){const e=[a.d.IS_NOT_NULL,a.d.IS_NULL].map((e=>a.LT[e].operation)),t=[a.d.IS_TRUE,a.d.IS_FALSE].map((e=>a.LT[e].operation));if(this.expressionType===i.SIMPLE){if(e.indexOf(this.operator)>=0)return!(!this.operator||!this.subject);if(t.indexOf(this.operator)>=0)return!(!this.subject||null===this.comparator);if(this.operator&&this.subject&&this.clause)if(Array.isArray(this.comparator)){if(this.comparator.length>0)return!0}else if(null!==this.comparator)return!0}else if(this.expressionType===i.SQL)return!(!this.sqlExpression||!this.clause);return!1}getDefaultLabel(){const e=this.translateToSql();return e.length<43?e:`${e.substring(0,40)}...`}getTooltipTitle(){return this.translateToSql()}translateToSql(){return c(this)}}},46566:(e,t,n)=>{n.d(t,{Z:()=>O});var a=n(67294),o=n(45697),i=n.n(o),r=n(31069),s=n(68492),l=n(55786),c=n(61988),d=n(68135),u=n(82342),p=n(17536),h=n(27130),m=n(19113),g=n(69856),f=n(40266),v=n(33334),b=n(70163),y=n(96055),_=n(42753),C=n(72201),Z=n(28543),E=n(11965);const T={adhocFilter:i().instanceOf(Z.ZP).isRequired,onFilterEdit:i().func.isRequired,onRemoveFilter:i().func,options:i().arrayOf(i().oneOfType([C.Z,i().shape({saved_metric_name:i().string.isRequired}),p.Z])).isRequired,sections:i().arrayOf(i().string),operators:i().arrayOf(i().string),datasource:i().object,partitionColumn:i().string,onMoveLabel:i().func,onDropLabel:i().func,index:i().number},S=({adhocFilter:e,options:t,datasource:n,onFilterEdit:a,onRemoveFilter:o,partitionColumn:i,onMoveLabel:r,onDropLabel:s,index:l,sections:c,operators:d})=>(0,E.tZ)(y.Z,{sections:c,operators:d,adhocFilter:e,options:t,datasource:n,onFilterEdit:a,partitionColumn:i},(0,E.tZ)(v.yz,{label:e.getDefaultLabel(),tooltipTitle:e.getTooltipTitle(),onRemove:o,onMoveLabel:r,onDropLabel:s,index:l,type:_.g.FilterOption,withCaret:!0,isExtra:e.isExtra})),x=S;S.propTypes=T;const w=i().oneOfType([i().shape({expressionType:i().oneOf([Z.vq.SIMPLE]).isRequired,clause:i().oneOf([Z.Pr.HAVING,Z.Pr.WHERE]).isRequired,subject:i().string.isRequired,comparator:i().oneOfType([i().string,i().arrayOf(i().string)]).isRequired}),i().shape({expressionType:i().oneOf([Z.vq.SQL]).isRequired,clause:i().oneOf([Z.Pr.WHERE,Z.Pr.HAVING]).isRequired,sqlExpression:i().string.isRequired})]),A=i().oneOfType([i().string,p.Z]),R={label:i().oneOfType([i().object,i().string]),name:i().string,sections:i().arrayOf(i().string),operators:i().arrayOf(i().string),onChange:i().func,value:i().arrayOf(w),datasource:i().object,columns:i().arrayOf(C.Z),savedMetrics:i().arrayOf(h.Z),selectedMetrics:i().oneOfType([A,i().arrayOf(A)]),isLoading:i().bool};function D(e){return e&&!(e instanceof Z.ZP)&&e.expressionType}class L extends a.Component{constructor(e){super(e),this.optionsForSelect=this.optionsForSelect.bind(this),this.onRemoveFilter=this.onRemoveFilter.bind(this),this.onNewFilter=this.onNewFilter.bind(this),this.onFilterEdit=this.onFilterEdit.bind(this),this.moveLabel=this.moveLabel.bind(this),this.onChange=this.onChange.bind(this),this.mapOption=this.mapOption.bind(this),this.getMetricExpression=this.getMetricExpression.bind(this);const t=(this.props.value||[]).map((e=>D(e)?new Z.ZP(e):e));this.optionRenderer=e=>(0,E.tZ)(f.Z,{option:e}),this.valueRenderer=(e,t)=>(0,E.tZ)(x,{key:t,index:t,adhocFilter:e,onFilterEdit:this.onFilterEdit,options:this.state.options,sections:this.props.sections,operators:this.props.operators,datasource:this.props.datasource,onRemoveFilter:()=>this.onRemoveFilter(t),onMoveLabel:this.moveLabel,onDropLabel:()=>this.props.onChange(this.state.values),partitionColumn:this.state.partitionColumn}),this.state={values:t,options:this.optionsForSelect(this.props),partitionColumn:null}}componentDidMount(){const{datasource:e}=this.props;if(e&&"table"===e.type){var t;const n=null==(t=e.database)?void 0:t.id,{datasource_name:a,schema:o,is_sqllab_view:i}=e;!i&&n&&a&&o&&r.Z.get({endpoint:`/api/v1/database/${n}/table_extra/${a}/${o}/`}).then((({json:e})=>{if(e&&e.partitions){const{partitions:t}=e;t&&t.cols&&1===Object.keys(t.cols).length&&this.setState({partitionColumn:t.cols[0]})}})).catch((e=>{s.Z.error("fetch extra_table_metadata:",e.statusText)}))}}UNSAFE_componentWillReceiveProps(e){this.props.columns!==e.columns&&this.setState({options:this.optionsForSelect(e)}),this.props.value!==e.value&&this.setState({values:(e.value||[]).map((e=>D(e)?new Z.ZP(e):e))})}onRemoveFilter(e){const t=[...this.state.values];t.splice(e,1),this.setState((e=>({...e,values:t}))),this.props.onChange(t)}onNewFilter(e){const t=this.mapOption(e);t&&this.setState((e=>({...e,values:[...e.values,t]})),(()=>{this.props.onChange(this.state.values)}))}onFilterEdit(e){this.props.onChange(this.state.values.map((t=>t.filterOptionName===e.filterOptionName?e:t)))}onChange(e){const t=(e||[]).map((e=>this.mapOption(e))).filter((e=>e));this.props.onChange(t)}getMetricExpression(e){return this.props.savedMetrics.find((t=>t.metric_name===e)).expression}moveLabel(e,t){const{values:n}=this.state,a=[...n];[a[t],a[e]]=[a[e],a[t]],this.setState({values:a})}mapOption(e){return e instanceof Z.ZP?e:e.saved_metric_name?new Z.ZP({expressionType:"druid"===this.props.datasource.type?Z.vq.SIMPLE:Z.vq.SQL,subject:"druid"===this.props.datasource.type?e.saved_metric_name:this.getMetricExpression(e.saved_metric_name),operator:g.LT[g.d.GREATER_THAN].operation,comparator:0,clause:Z.Pr.HAVING}):e.label?new Z.ZP({expressionType:"druid"===this.props.datasource.type?Z.vq.SIMPLE:Z.vq.SQL,subject:"druid"===this.props.datasource.type?e.label:new m.Z(e).translateToSql(),operator:g.LT[g.d.GREATER_THAN].operation,comparator:0,clause:Z.Pr.HAVING}):e.column_name?new Z.ZP({expressionType:Z.vq.SIMPLE,subject:e.column_name,operator:g.LT[g.d.EQUALS].operation,comparator:"",clause:Z.Pr.WHERE,isNew:!0}):null}optionsForSelect(e){return[...e.columns,...(0,l.Z)(e.selectedMetrics).map((e=>e&&("string"==typeof e?{saved_metric_name:e}:new m.Z(e))))].filter((e=>e)).reduce(((e,t)=>(t.saved_metric_name?e.push({...t,filterOptionName:t.saved_metric_name}):t.column_name?e.push({...t,filterOptionName:`_col_${t.column_name}`}):t instanceof m.Z&&e.push({...t,filterOptionName:`_adhocmetric_${t.label}`}),e)),[]).sort(((e,t)=>(e.saved_metric_name||e.column_name||e.label).localeCompare(t.saved_metric_name||t.column_name||t.label)))}addNewFilterPopoverTrigger(e){return(0,E.tZ)(y.Z,{operators:this.props.operators,sections:this.props.sections,adhocFilter:new Z.ZP({}),datasource:this.props.datasource,options:this.state.options,onFilterEdit:this.onNewFilter,partitionColumn:this.state.partitionColumn},e)}render(){const{theme:e}=this.props;return(0,E.tZ)("div",{className:"metrics-select"},(0,E.tZ)(v.gM,null,(0,E.tZ)(u.Z,this.props),this.addNewFilterPopoverTrigger((0,E.tZ)(v.IG,null,(0,E.tZ)(b.Z.PlusLarge,{iconSize:"s",iconColor:e.colors.grayscale.light5})))),(0,E.tZ)(v.yj,null,this.state.values.length>0?this.state.values.map(((e,t)=>this.valueRenderer(e,t))):this.addNewFilterPopoverTrigger((0,E.tZ)(v.SW,null,(0,E.tZ)(b.Z.PlusSmall,{iconColor:e.colors.grayscale.light1}),(0,c.t)("Add filter")))))}}L.propTypes=R,L.defaultProps={name:"",onChange:()=>{},columns:[],savedMetrics:[],selectedMetrics:[]};const O=(0,d.b)(L)},72201:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(45697),o=n.n(a);const i=o().shape({column_name:o().string.isRequired,type:o().string})},19113:(e,t,n)=>{n.d(t,{v:()=>o,Z:()=>s});var a=n(69856);const o={SIMPLE:"SIMPLE",SQL:"SQL"};function i(e){if(e.sqlExpression&&a.Q_.test(e.sqlExpression)){const t=e.sqlExpression.indexOf(")"),n=e.sqlExpression.substring(0,t).lastIndexOf("(");if(t>0&&n>0)return e.sqlExpression.substring(n+1,t)}return null}function r(e){if(e.sqlExpression&&a.Q_.test(e.sqlExpression)){const t=e.sqlExpression.indexOf("(");if(t>0)return e.sqlExpression.substring(0,t)}return null}class s{constructor(e){if(this.expressionType=e.expressionType||o.SIMPLE,this.expressionType===o.SIMPLE){const t=i(e);this.column=e.column||t&&{column_name:t},this.aggregate=e.aggregate||r(e),this.sqlExpression=null}else this.expressionType===o.SQL&&(this.sqlExpression=e.sqlExpression,this.column=null,this.aggregate=null);this.isNew=!!e.isNew,this.hasCustomLabel=!(!e.hasCustomLabel||!e.label),this.label=this.hasCustomLabel?e.label:this.getDefaultLabel(),this.optionName=e.optionName||`metric_${Math.random().toString(36).substring(2,15)}_${Math.random().toString(36).substring(2,15)}`}getDefaultLabel(){const e=this.translateToSql({useVerboseName:!0});return e.length<43?e:`${e.substring(0,40)}...`}translateToSql(e={useVerboseName:!1,transformCountDistinct:!1}){if(this.expressionType===o.SIMPLE){var t,n;const o=this.aggregate||"",i=e.useVerboseName&&null!=(t=this.column)&&t.verbose_name?`(${this.column.verbose_name})`:null!=(n=this.column)&&n.column_name?`(${this.column.column_name})`:"";return e.transformCountDistinct&&o===a.YY.COUNT_DISTINCT&&/^\(.*\)$/.test(i)?`COUNT(DISTINCT ${i.slice(1,-1)})`:o+i}return this.expressionType===o.SQL?this.sqlExpression:""}duplicateWith(e){return new s({...this,isNew:!1,...e})}equals(e){return e.label===this.label&&e.expressionType===this.expressionType&&e.sqlExpression===this.sqlExpression&&e.aggregate===this.aggregate&&(e.column&&e.column.column_name)===(this.column&&this.column.column_name)}isValid(){return this.expressionType===o.SIMPLE?!(!this.column||!this.aggregate):this.expressionType===o.SQL&&!!this.sqlExpression}inferSqlExpressionAggregate(){return r(this)}inferSqlExpressionColumn(){return i(this)}}},40266:(e,t,n)=>{n.d(t,{Z:()=>d}),n(67294);var a=n(45697),o=n.n(a),i=n(34087),r=n(17536),s=n(99963),l=n(11965);const c={option:o().oneOfType([i.Z,o().shape({saved_metric_name:o().string.isRequired}),r.Z]).isRequired};function d({option:e}){return e.saved_metric_name?(0,l.tZ)(s.l,{column:{column_name:e.saved_metric_name,type:"expression"},showType:!0}):e.column_name?(0,l.tZ)(s.l,{column:e,showType:!0}):e.label?(0,l.tZ)(s.l,{column:{column_name:e.label,type:"expression"},showType:!0}):null}d.propTypes=c},17536:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(45697),o=n.n(a),i=n(69856),r=n(34087),s=n(19113);const l=o().oneOfType([o().shape({expressionType:o().oneOf([s.v.SIMPLE]).isRequired,column:r.Z.isRequired,aggregate:o().oneOf(Object.keys(i.YY)).isRequired,label:o().string.isRequired}),o().shape({expressionType:o().oneOf([s.v.SQL]).isRequired,sqlExpression:o().string.isRequired,label:o().string.isRequired})])},34087:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(45697),o=n.n(a);const i=o().shape({column_name:o().string.isRequired,type:o().string})},27130:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(45697),o=n.n(a);const i=o().shape({metric_name:o().string.isRequired,verbose_name:o().string,expression:o().string.isRequired})},82199:(e,t,n)=>{n.d(t,{Z:()=>p});var a=n(67294),o=n(45697),i=n.n(o),r=n(1111),s=n(61988),l=n(11965),c=n(24554),d=n(82342);const u={ariaLabel:i().string,autoFocus:i().bool,choices:i().array,clearable:i().bool,description:i().string,disabled:i().bool,freeForm:i().bool,isLoading:i().bool,multi:i().bool,isMulti:i().bool,name:i().string.isRequired,onChange:i().func,onFocus:i().func,value:i().oneOfType([i().string,i().number,i().array]),default:i().oneOfType([i().string,i().number,i().array]),showHeader:i().bool,optionRenderer:i().func,valueKey:i().string,options:i().array,placeholder:i().string,filterOption:i().func,tokenSeparators:i().arrayOf(i().string),notFoundContent:i().object,label:i().string,renderTrigger:i().bool,validationErrors:i().array,rightNode:i().node,leftNode:i().node,onClick:i().func,hovered:i().bool,tooltipOnClick:i().func,warning:i().string,danger:i().string};class p extends a.PureComponent{constructor(e){super(e),this.state={options:this.getOptions(e)},this.onChange=this.onChange.bind(this),this.handleFilterOptions=this.handleFilterOptions.bind(this)}UNSAFE_componentWillReceiveProps(e){if(!(0,r.Z)(e.choices,this.props.choices)||!(0,r.Z)(e.options,this.props.options)){const t=this.getOptions(e);this.setState({options:t})}}onChange(e){const{valueKey:t}=this.props;let n=e;Array.isArray(e)&&(n=e.map((e=>void 0!==(null==e?void 0:e[t])?e[t]:e))),"object"==typeof e&&void 0!==(null==e?void 0:e[t])&&(n=e[t]),this.props.onChange(n,[])}getOptions(e){const{choices:t,optionRenderer:n,valueKey:a}=e;let o=[];return e.options?o=e.options.map((e=>({...e,value:e[a],label:e.label||e[a],customLabel:n?n(e):void 0}))):t&&(o=t.map((e=>{if(Array.isArray(e)){const[t,n]=e.length>1?e:[e[0],e[0]];return{value:t,label:n}}return Object.is(e)?{...e,value:e[a],label:e.label||e[a]}:{value:e,label:e}}))),o}handleFilterOptions(e,t){const{filterOption:n}=this.props;return n({data:t},e)}render(){const{ariaLabel:e,autoFocus:t,clearable:n,disabled:a,filterOption:o,freeForm:i,isLoading:r,isMulti:u,label:p,multi:h,name:m,placeholder:g,onFocus:f,optionRenderer:v,showHeader:b,value:y,tokenSeparators:_,notFoundContent:C,description:Z,renderTrigger:E,rightNode:T,leftNode:S,validationErrors:x,onClick:w,hovered:A,tooltipOnClick:R,warning:D,danger:L}=this.props,O={name:m,label:p,description:Z,renderTrigger:E,rightNode:T,leftNode:S,validationErrors:x,onClick:w,hovered:A,tooltipOnClick:R,warning:D,danger:L},M={allowNewOptions:i,autoFocus:t,ariaLabel:e||("string"==typeof p?p:(0,s.t)("Select ...")),allowClear:n,disabled:a,filterOption:!o||"function"!=typeof o||this.handleFilterOptions,header:b&&(0,l.tZ)(d.Z,O),loading:r,mode:u||h?"multiple":"single",name:`select-${m}`,onChange:this.onChange,onFocus:f,optionRenderer:v,options:this.state.options,placeholder:g,sortComparator:this.props.sortComparator,value:(()=>{const e=y||(void 0!==this.props.default?this.props.default:void 0);if(null!==e||this.state.options.find((e=>null===e.value)))return e})(),tokenSeparators:_,notFoundContent:C};return(0,l.tZ)("div",{css:e=>l.iv` .type-label { margin-right: ${2*e.gridUnit}px; } .Select__multi-value__label > span, .Select__option > span, .Select__single-value > span { display: flex; align-items: center; } `},(0,l.tZ)(c.ZP,M))}}p.propTypes=u,p.defaultProps={autoFocus:!1,choices:[],clearable:!0,description:null,disabled:!1,freeForm:!1,isLoading:!1,label:null,multi:!1,onChange:()=>{},onFocus:()=>{},showHeader:!0,valueKey:"value"}},665:(e,t,n)=>{n.d(t,{Z:()=>y});var a=n(67294),o=n(45697),i=n.n(o),r=n(4715),s=n(61988),l=n(37921),c=n(76697),d=n(83734),u=n(87253),p=n(82342),h=n(82199),m=n(11965);const g="latlong",f="delimited",v="geohash",b={onChange:i().func,value:i().object,animation:i().bool,choices:i().array};class y extends a.Component{constructor(e){super(e);const t=e.value||{};let n;e.choices.length>0&&(n=e.choices[0][0]),this.state={type:t.type||g,delimiter:t.delimiter||",",latCol:t.latCol||n,lonCol:t.lonCol||n,lonlatCol:t.lonlatCol||n,reverseCheckbox:t.reverseCheckbox||!1,geohashCol:t.geohashCol||n,value:null,errors:[]},this.toggleCheckbox=this.toggleCheckbox.bind(this),this.onChange=this.onChange.bind(this),this.renderReverseCheckbox=this.renderReverseCheckbox.bind(this)}componentDidMount(){this.onChange()}onChange(){const{type:e}=this.state,t={type:e},n=[],a=(0,s.t)("Invalid lat/long configuration.");e===g?(t.latCol=this.state.latCol,t.lonCol=this.state.lonCol,t.lonCol&&t.latCol||n.push(a)):e===f?(t.lonlatCol=this.state.lonlatCol,t.delimiter=this.state.delimiter,t.reverseCheckbox=this.state.reverseCheckbox,t.lonlatCol&&t.delimiter||n.push(a)):e===v&&(t.geohashCol=this.state.geohashCol,t.reverseCheckbox=this.state.reverseCheckbox,t.geohashCol||n.push(a)),this.setState({value:t,errors:n}),this.props.onChange(t,n)}setType(e){this.setState({type:e},this.onChange)}toggleCheckbox(){this.setState((e=>({reverseCheckbox:!e.reverseCheckbox})),this.onChange)}renderLabelContent(){return this.state.errors.length>0?"N/A":this.state.type===g?`${this.state.lonCol} | ${this.state.latCol}`:this.state.type===f?`${this.state.lonlatCol}`:this.state.type===v?`${this.state.geohashCol}`:null}renderSelect(e,t){return(0,m.tZ)(h.Z,{ariaLabel:e,name:e,choices:this.props.choices,value:this.state[e],clearable:!1,onFocus:()=>{this.setType(t)},onChange:t=>{this.setState({[e]:t},this.onChange)}})}renderReverseCheckbox(){return(0,m.tZ)("span",null,(0,s.t)("Reverse lat/long "),(0,m.tZ)(u.ZP,{checked:this.state.reverseCheckbox,onChange:this.toggleCheckbox}))}renderPopoverContent(){return(0,m.tZ)("div",{style:{width:"300px"}},(0,m.tZ)(d.Z,{title:(0,s.t)("Longitude & Latitude columns"),isSelected:this.state.type===g,onSelect:this.setType.bind(this,g)},(0,m.tZ)(r.X2,{gutter:16},(0,m.tZ)(r.JX,{xs:24,md:12},"Longitude",this.renderSelect("lonCol",g)),(0,m.tZ)(r.JX,{xs:24,md:12},"Latitude",this.renderSelect("latCol",g)))),(0,m.tZ)(d.Z,{title:(0,s.t)("Delimited long & lat single column"),info:(0,s.t)("Multiple formats accepted, look the geopy.points Python library for more details"),isSelected:this.state.type===f,onSelect:this.setType.bind(this,f)},(0,m.tZ)(r.X2,{gutter:16},(0,m.tZ)(r.JX,{xs:24,md:12},(0,s.t)("Column"),this.renderSelect("lonlatCol",f)),(0,m.tZ)(r.JX,{xs:24,md:12},this.renderReverseCheckbox()))),(0,m.tZ)(d.Z,{title:(0,s.t)("Geohash"),isSelected:this.state.type===v,onSelect:this.setType.bind(this,v)},(0,m.tZ)(r.X2,{gutter:16},(0,m.tZ)(r.JX,{xs:24,md:12},"Column",this.renderSelect("geohashCol",v)),(0,m.tZ)(r.JX,{xs:24,md:12},this.renderReverseCheckbox()))))}render(){return(0,m.tZ)("div",null,(0,m.tZ)(p.Z,this.props),(0,m.tZ)(c.ZP,{content:this.renderPopoverContent(),placement:"topLeft",trigger:"click"},(0,m.tZ)(l.Z,{className:"pointer"},this.renderLabelContent())))}}y.propTypes=b,y.defaultProps={onChange:()=>{},animation:!0,choices:[]}},42878:(e,t,n)=>{n.d(t,{Z:()=>b});var a=n(5872),o=n.n(a),i=n(67294),r=n(45697),s=n.n(r),l=n(9875),c=n(61988),d=n(68135),u=n(35932),p=n(94670),h=n(68073),m=n(82342),g=n(11965);const f={name:s().string,onChange:s().func,initialValue:s().string,height:s().number,minLines:s().number,maxLines:s().number,offerEditInModal:s().bool,language:s().oneOf([null,"json","html","sql","markdown","javascript"]),aboveEditorSection:s().node,readOnly:s().bool};class v extends i.Component{onControlChange(e){const{value:t}=e.target;this.props.onChange(t)}onAreaEditorChange(e){this.props.onChange(e)}renderEditor(e=!1){const t=e?40:this.props.minLines||12;if(this.props.language){const n={border:`1px solid ${this.props.theme.colors.grayscale.light1}`};return this.props.readOnly&&(n.backgroundColor="#f2f2f2"),(0,g.tZ)(p.YH,o()({mode:this.props.language,style:n,minLines:t,maxLines:e?1e3:this.props.maxLines,width:"100%",height:`${t}em`,editorProps:{$blockScrolling:!0},defaultValue:this.props.initialValue,readOnly:this.props.readOnly,key:this.props.name},this.props,{onChange:this.onAreaEditorChange.bind(this)}))}return(0,g.tZ)(l.Kx,{placeholder:(0,c.t)("textarea"),onChange:this.onControlChange.bind(this),defaultValue:this.props.initialValue,disabled:this.props.readOnly,style:{height:this.props.height}})}renderModalBody(){return(0,g.tZ)("div",null,(0,g.tZ)("div",null,this.props.aboveEditorSection),this.renderEditor(!0))}render(){const e=(0,g.tZ)(m.Z,this.props);return(0,g.tZ)("div",null,e,this.renderEditor(),this.props.offerEditInModal&&(0,g.tZ)(h.Z,{modalTitle:e,triggerNode:(0,g.tZ)(u.Z,{buttonSize:"small",className:"m-t-5"},(0,c.t)("Edit")," ",(0,g.tZ)("strong",null,this.props.language)," ",(0,c.t)("in modal")),modalBody:this.renderModalBody(!0),responsive:!0}))}}v.propTypes=f,v.defaultProps={onChange:()=>{},initialValue:"",height:250,minLines:3,maxLines:10,offerEditInModal:!0,readOnly:!1};const b=(0,d.b)(v)},92252:(e,t,n)=>{n.d(t,{ai:()=>b}),n(67294);var a=n(81545),o=n(45511),i=n(61988),r=n(95826),s=n(75294),l=n(12515),c=n(69856),d=n(99963),u=n(11965);const p=(0,a.Z)(),h=(0,o.Z)(),m={verbose_name:"Time",column_name:"__timestamp",description:(0,i.t)("A reference to the [Time] configuration, taking granularity into account")},g={type:"SelectControl",multi:!0,freeForm:!0,label:(0,i.t)("Dimensions"),default:[],includeTime:!1,description:(0,i.t)("One or many columns to group by. High cardinality groupings should include a series limit to limit the number of fetched and rendered series."),optionRenderer:e=>(0,u.tZ)(d.l,{column:e,showType:!0}),valueKey:"column_name",filterOption:({data:e},t)=>e.column_name&&e.column_name.toLowerCase().indexOf(t.toLowerCase())>=0||e.verbose_name&&e.verbose_name.toLowerCase().indexOf(t.toLowerCase())>=0,mapStateToProps:(e,t)=>{const n={};return e.datasource&&(n.options=e.datasource.columns.filter((e=>e.groupby)),t&&t.includeTime&&n.options.push(m)),n}},f={type:"MetricsControl",multi:!0,label:(0,i.t)("Metrics"),validators:[r.Z],mapStateToProps:e=>{const{datasource:t}=e;return{columns:t?t.columns:[],savedMetrics:t?t.metrics:[],datasource:t}},description:(0,i.t)("One or many metrics to display")},v={...f,multi:!1,label:(0,i.t)("Metric"),description:(0,i.t)("Metric")},b={metrics:f,metric:v,datasource:{type:"DatasourceControl",label:(0,i.t)("Dataset"),default:null,description:null,mapStateToProps:({datasource:e})=>({datasource:e,isEditable:!!e})},viz_type:{type:"VizTypeControl",label:(0,i.t)("Visualization type"),default:"table",description:(0,i.t)("The type of visualization to display")},color_picker:{label:(0,i.t)("Fixed color"),description:(0,i.t)("Use this to define a static color for all circles"),type:"ColorPickerControl",default:{r:0,g:122,b:135,a:1},renderTrigger:!0},metric_2:{...v,label:(0,i.t)("Right axis metric"),clearable:!0,description:(0,i.t)("Choose a metric for right axis")},linear_color_scheme:{type:"ColorSchemeControl",label:(0,i.t)("Linear color scheme"),choices:()=>h.values().map((e=>[e.id,e.label])),default:h.getDefaultKey(),clearable:!1,description:"",renderTrigger:!0,schemes:()=>h.getMap(),isLinear:!0},secondary_metric:{...v,label:(0,i.t)("Color metric"),default:null,validators:[],description:(0,i.t)("A metric to use for color")},groupby:g,columns:{...g,label:(0,i.t)("Columns"),description:(0,i.t)("One or many controls to pivot as columns")},druid_time_origin:{type:"SelectControl",freeForm:!0,label:c.m_.druid_time_origin,choices:[["","default"],["now","now"]],default:null,description:(0,i.t)("Defines the origin where time buckets start, accepts natural dates as in `now`, `sunday` or `1970-01-01`")},granularity:{type:"SelectControl",freeForm:!0,label:c.m_.granularity,default:"P1D",choices:[[null,"all"],["PT5S","5 seconds"],["PT30S","30 seconds"],["PT1M","1 minute"],["PT5M","5 minutes"],["PT30M","30 minutes"],["PT1H","1 hour"],["PT6H","6 hour"],["P1D","1 day"],["P7D","7 days"],["P1W","week"],["week_starting_sunday","week starting Sunday"],["week_ending_saturday","week ending Saturday"],["P1M","month"],["P3M","quarter"],["P1Y","year"]],description:(0,i.t)("The time granularity for the visualization. Note that you can type and use simple natural language as in `10 seconds`, `1 day` or `56 weeks`")},granularity_sqla:{type:"SelectControl",label:c.m_.granularity_sqla,description:(0,i.t)("The time column for the visualization. Note that you can define arbitrary expression that return a DATETIME column in the table. Also note that the filter below is applied against this column or expression"),clearable:!1,optionRenderer:e=>(0,u.tZ)(d.l,{column:e,showType:!0}),valueKey:"column_name",mapStateToProps:e=>{const t={};return e.datasource&&(t.choices=e.datasource.granularity_sqla,t.default=null,e.datasource.main_dttm_col?t.default=e.datasource.main_dttm_col:t.choices&&t.choices.length>0&&(t.default=t.choices[0].column_name)),t}},time_grain_sqla:{type:"SelectControl",label:c.m_.time_grain_sqla,default:"P1D",description:(0,i.t)("The time granularity for the visualization. This applies a date transformation to alter your time column and defines a new time granularity. The options here are defined on a per database engine basis in the Superset source code."),mapStateToProps:e=>({choices:e.datasource?e.datasource.time_grain_sqla:null})},time_range:{type:"DateFilterControl",freeForm:!0,label:c.m_.time_range,default:(0,i.t)("No filter"),description:(0,i.t)('The time range for the visualization. All relative times, e.g. "Last month", "Last 7 days", "now", etc. are evaluated on the server using the server\'s local time (sans timezone). All tooltips and placeholder times are expressed in UTC (sans timezone). The timestamps are then evaluated by the database using the engine\'s local timezone. Note one can explicitly set the timezone per the ISO 8601 format if specifying either the start and/or end time.')},row_limit:{type:"SelectControl",freeForm:!0,label:(0,i.t)("Row limit"),validators:[s.Z],default:1e4,choices:(0,l.mG)([10,50,100,250,500,1e3,5e3,1e4,5e4]),description:(0,i.t)("Limits the number of rows that get displayed.")},limit:{type:"SelectControl",freeForm:!0,label:(0,i.t)("Series limit"),validators:[s.Z],choices:(0,l.mG)([5,10,25,50,100,500]),clearable:!0,description:(0,i.t)("Limits the number of series that get displayed. A joined subquery (or an extra phase where subqueries are not supported) is applied to limit the number of series that get fetched and rendered. This feature is useful when grouping by high cardinality column(s) though does increase the query complexity and cost.")},timeseries_limit_metric:{type:"MetricsControl",label:(0,i.t)("Sort by"),default:null,clearable:!0,description:(0,i.t)("Metric used to define how the top series are sorted if a series or row limit is present. If undefined reverts to the first metric (where appropriate)."),mapStateToProps:e=>({columns:e.datasource?e.datasource.columns:[],savedMetrics:e.datasource?e.datasource.metrics:[],datasource:e.datasource})},series:{...g,label:(0,i.t)("Dimensions"),multi:!1,default:null,description:(0,i.t)("Defines the grouping of entities. Each series is shown as a specific color on the chart and has a legend toggle")},entity:{...g,label:(0,i.t)("Entity"),default:null,multi:!1,validators:[r.Z],description:(0,i.t)("This defines the element to be plotted on the chart")},x:{...v,label:(0,i.t)("X Axis"),description:(0,i.t)("Metric assigned to the [X] axis"),default:null},y:{...v,label:(0,i.t)("Y Axis"),default:null,description:(0,i.t)("Metric assigned to the [Y] axis")},size:{...v,label:(0,i.t)("Bubble size"),default:null},y_axis_format:{type:"SelectControl",freeForm:!0,label:(0,i.t)("Y Axis Format"),renderTrigger:!0,default:"SMART_NUMBER",choices:[["SMART_NUMBER","Adaptive formatting"],["~g","Original value"],[",d",",d (12345.432 => 12,345)"],[".1s",".1s (12345.432 => 10k)"],[".3s",".3s (12345.432 => 12.3k)"],[",.1%",",.1% (12345.432 => 1,234,543.2%)"],[".3%",".3% (12345.432 => 1234543.200%)"],[".4r",".4r (12345.432 => 12350)"],[",.3f",",.3f (12345.432 => 12,345.432)"],["+,","+, (12345.432 => +12,345.432)"],["$,.2f","$,.2f (12345.432 => $12,345.43)"],["DURATION","Duration in ms (66000 => 1m 6s)"],["DURATION_SUB","Duration in ms (100.40008 => 100ms 400µs 80ns)"]],description:"D3 format syntax: https://github.com/d3/d3-format",mapStateToProps:e=>{const t=e.controls&&e.controls.comparison_type&&"percentage"===e.controls.comparison_type.value;return{warning:t?(0,i.t)('When `Calculation type` is set to "Percentage change", the Y Axis Format is forced to `.1%`'):null,disabled:t}}},adhoc_filters:{type:"AdhocFilterControl",label:(0,i.t)("Filters"),default:null,description:"",mapStateToProps:e=>({columns:e.datasource?e.datasource.columns.filter((e=>e.filterable)):[],savedMetrics:e.datasource?e.datasource.metrics:[],datasource:e.datasource})},color_scheme:{type:"ColorSchemeControl",label:(0,i.t)("Color scheme"),default:p.getDefaultKey(),renderTrigger:!0,choices:()=>p.keys().map((e=>[e,e])),description:(0,i.t)("The color scheme for rendering chart"),schemes:()=>p.getMap()}}},35854:(e,t,n)=>{n.d(t,{R3:()=>r,oN:()=>s});var a=n(37687),o=n(10331),i=n(92252);function r(e,t){const n={...t},i=n.viz_type||e.common.conf.DEFAULT_VIZ_TYPE||"table";!function(e){e.y_axis_zero&&(e.y_axis_bounds=[0,null])}(n);const r=(0,o.mi)(i,e.datasource.type,e,n),s=(0,a.Z)().get(i)||{};return s.onInit?s.onInit(r):r}function s(e){const t=e.datasource.split("__")[1],n=e.viz_type,a=(0,o.mi)(n,t,null,e),i=(0,o.Hu)(a),r={};return Object.keys(a).concat(Object.keys(e)).forEach((t=>{void 0===e[t]?r[t]=i[t]:r[t]=e[t]})),r}const l={...i.ai};Object.keys(i.ai).forEach((e=>{l[e].value=i.ai[e].default})),(0,o.Hu)(l)},10945:(e,t,n)=>{function a(e){return Object.keys(e).reduce(((e,t)=>{const n=e;return n[t]=t,n}),{})}n.d(t,{J_:()=>o,DT:()=>i,qy:()=>r,dS:()=>s,S4:()=>l,m7:()=>c});const o={FORMULA:{value:"FORMULA",label:"Formula"},EVENT:{value:"EVENT",label:"Event",supportNativeSource:!0},INTERVAL:{value:"INTERVAL",label:"Interval",supportNativeSource:!0},TIME_SERIES:{value:"TIME_SERIES",label:"Time series"}},i=a(o),r=i.FORMULA,s={NATIVE:{value:"NATIVE",label:"Superset annotation"}},l=a(s);function c(e){return!!e}},40187:(e,t,n)=>{n.r(t),n.d(t,{TIME_RANGE:()=>pe,default:()=>fe});var a=n(23279),o=n.n(a),i=n(67294),r=n(45697),s=n.n(r),l=n(4065),c=n(5872),d=n.n(c),u=n(82492),p=n.n(u),h=n(29584),m=n(26678),g=n(95742),f=n(80454),v=n.n(f),b=n(51995),y=n(37789),_=n(12766),C=n(320),Z=n(74061),E=n(11965);function T({children:e,...t}){const{maxHeight:n,selectProps:a,theme:o,getStyles:r,cx:s,innerRef:l,isMulti:c,className:d}=t,{windowListRef:u,windowListInnerRef:p}=a,h=(0,i.useRef)(null),m=u||h;let{optionHeight:g}=a;g||(g=o?function({spacing:{baseUnit:e,lineHeight:t}}){return 4*e+t}(o):30);const f=g*e.length;return(0,i.useEffect)((()=>{const t=function(e){return Array.isArray(e)?e.findIndex((({props:{isFocused:e=!1}={}})=>e))||0:-1}(e);m.current&&t&&m.current.scrollToItem(t)}),[e,m]),(0,E.tZ)(Z.t7,{css:r("menuList",t),className:s({"menu-list":!0,"menu-list--is-multi":c},d),ref:m,outerRef:l,innerRef:p,height:Math.min(f,n),width:"100%",itemData:e,itemCount:e.length,itemSize:g},(({data:e,index:t,style:n})=>(0,E.tZ)("div",{style:n},e[t])))}const{MenuList:S}=h.y,x=100;function w({children:e,...t}){const{windowThreshold:n=x}=t.selectProps;return Array.isArray(e)&&e.length>n?(0,E.tZ)(T,t,e):(0,E.tZ)(S,t,e)}function A(e){function t(t,n){const{components:a={},...o}=t,i={...a,MenuList:w};return(0,E.tZ)(e,d()({components:i,ref:n},o))}return(0,i.forwardRef)(t)}const R=A(y.ZP),D=A(_.ZP),L=A(C.Z),O="Select",M="Select",I=e=>({primary:e.colors.success.base,danger:e.colors.error.base,warning:e.colors.warning.base,indicator:e.colors.info.base,almostBlack:e.colors.grayscale.dark1,grayDark:e.colors.grayscale.dark1,grayLight:e.colors.grayscale.light2,gray:e.colors.grayscale.light1,grayBg:e.colors.grayscale.light4,grayBgDarker:e.colors.grayscale.light3,grayBgDarkest:e.colors.grayscale.light2,grayHeading:e.colors.grayscale.light1,menuHover:e.colors.grayscale.light3,lightest:e.colors.grayscale.light5,darkest:e.colors.grayscale.dark2,grayBorder:e.colors.grayscale.light2,grayBorderLight:e.colors.grayscale.light3,grayBorderDark:e.colors.grayscale.light1,textDefault:e.colors.grayscale.dark1,textDarkest:e.colors.grayscale.dark2,dangerLight:e.colors.error.light1}),k={container:(e,{theme:{spacing:{minWidth:t}}})=>[e,E.iv` min-width: ${t}; `],placeholder:e=>[e,E.iv` white-space: nowrap; `],indicatorSeparator:()=>E.iv` display: none; `,indicatorsContainer:e=>[e,E.iv` i { width: 1em; display: inline-block; } `],clearIndicator:e=>[e,E.iv` padding: 4px 0 4px 6px; `],control:(e,{isFocused:t,menuIsOpen:n,theme:{borderRadius:a,colors:o}})=>{const i=t&&!n;let r=o.grayBorder;return(i||n)&&(r=o.grayBorderDark),[e,E.iv` border-color: ${r}; box-shadow: ${i?"inset 0 1px 1px rgba(0,0,0,.075), 0 0 0 3px rgba(0,0,0,.1)":"none"}; border-radius: ${n?`${a}px ${a}px 0 0`:`${a}px`}; &:hover { border-color: ${r}; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06); } flex-wrap: nowrap; padding-left: 1px; `]},menu:(e,{theme:{zIndex:t}})=>[e,E.iv` padding-bottom: 2em; z-index: ${t}; /* override at least multi-page pagination */ width: auto; min-width: 100%; max-width: 80vw; background: none; box-shadow: none; border: 0; `],menuList:(e,{theme:{borderRadius:t,colors:n}})=>[e,E.iv` background: ${n.lightest}; border-radius: 0 0 ${t}px ${t}px; border: 1px solid ${n.grayBorderDark}; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06); margin-top: -1px; border-top-color: ${n.grayBorderLight}; min-width: 100%; width: auto; border-radius: 0 0 ${t}px ${t}px; padding-top: 0; padding-bottom: 0; `],option:(e,{isDisabled:t,isFocused:n,isSelected:a,theme:{colors:o,spacing:{lineHeight:i,fontSize:r},weights:s}})=>{let l=o.textDefault,c=o.lightest;return n?c=o.grayBgDarker:t&&(l="#ccc"),[e,E.iv` cursor: pointer; line-height: ${i}px; font-size: ${r}px; background-color: ${c}; color: ${l}; font-weight: ${a?s.bold:s.normal}; white-space: nowrap; &:hover:active { background-color: ${o.grayBg}; } `]},valueContainer:(e,{isMulti:t,hasValue:n,theme:{spacing:{baseUnit:a}}})=>[e,E.iv` padding-left: ${t&&n?1:3*a}px; `],multiValueLabel:(e,{theme:{spacing:{baseUnit:t}}})=>({...e,paddingLeft:1.2*t,paddingRight:1.2*t}),input:(e,{selectProps:t})=>{var n;return[e,E.iv` margin-left: 0; vertical-align: middle; ${null!=t&&t.isMulti&&null!=t&&null!=(n=t.value)&&n.length?"padding: 0 6px; width: 100%":"padding: 0; flex: 1 1 auto;"}; `]},menuPortal:e=>({...e,zIndex:1030})},N={background:"none",border:"none",outline:"none",padding:0},{ClearIndicator:P,DropdownIndicator:F,Option:$,Input:U,SelectContainer:V}=h.y,q={SelectContainer:({children:e,...t})=>{const{selectProps:{assistiveText:n}}=t;return(0,E.tZ)("div",null,(0,E.tZ)(V,t,e),n&&(0,E.tZ)("span",{css:e=>({marginLeft:3,fontSize:e.typography.sizes.s,color:e.colors.grayscale.light1})},n))},Option:({children:e,innerProps:t,data:n,...a})=>(0,E.tZ)($,d()({},a,{data:n,css:null!=n&&n.style?n.style:null,innerProps:t}),e),ClearIndicator:e=>(0,E.tZ)(P,e,(0,E.tZ)("i",{className:"fa"},"×")),DropdownIndicator:e=>(0,E.tZ)(F,e,(0,E.tZ)("i",{className:"fa fa-caret-"+(e.selectProps.menuIsOpen?"up":"down")})),Input:e=>{const{getStyles:t}=e;return(0,E.tZ)(U,d()({},e,{css:t("input",e),autoComplete:"chrome-off",inputStyle:N}))}},z={valueContainer:(e,{getValue:t,theme:{spacing:{baseUnit:n}},isMulti:a})=>({...e,paddingLeft:t().length>0?1:3*n,overflow:a&&t().length>0?"visible":"hidden"}),singleValue:(e,t)=>{const{getStyles:n}=t;return{...n("multiValue",t),".metric-option":n("multiValueLabel",t)}}};var H=n(55083);function j(e){const t=(0,g.JN)(e,{withRef:!0}),n=q;function a(a){let o;const{selectRef:i,labelKey:r="label",valueKey:s="value",themeConfig:l,stylesConfig:c={},optionRenderer:u,valueRenderer:f,valueRenderedAsLabel:y,onPaste:_,multi:C=!1,clearable:Z,sortable:T=!0,forceOverflow:S,className:x=O,classNamePrefix:w=M,options:A,value:R,components:L,isMulti:N,isClearable:P,minMenuHeight:F=100,maxMenuHeight:$=220,filterOption:U,ignoreAccents:V=!1,getOptionValue:q=(e=>"string"==typeof e?e:e[s]),getOptionLabel:j=(e=>"string"==typeof e?e:e[r]||e[s]),formatOptionLabel:B=((e,{context:t})=>"value"===t?f?f(e):j(e):u?u(e):j(e)),...G}=a,W=(0,H.dG)(R,A||[],s),K=void 0===N?C:N,Q=void 0===P?Z:P,Y=K&&T&&Array.isArray(W)&&W.length>1,X=Y?t:e,J={...n,...L};if(Y){J.MultiValue=(ee=J.MultiValue||h.y.MultiValue,(0,g.W8)((e=>(0,E.tZ)(ee,d()({},e,{innerProps:{onMouseDown:e=>{e.preventDefault(),e.stopPropagation()}}})))));const e={getHelperDimensions:({node:e})=>e.getBoundingClientRect(),axis:"xy",onSortEnd:({oldIndex:e,newIndex:t})=>{const n=v()(W,e,t);G.onChange&&G.onChange(n,{action:"set-value"})},distance:4};Object.assign(G,e)}var ee;if((void 0===y?K:y)&&!c.valueContainer&&Object.assign(c,z),_){const e=J.Input||h.y.Input;J.Input=t=>(0,E.tZ)(e,d()({},t,{onPaste:_}))}e===D&&(G.getNewOptionData=(e,t)=>({label:t||e,[s]:e,isNew:!0})),S&&Object.assign(G,{closeMenuOnScroll:e=>{var t,n,a;const i=null==(t=o)||null==(n=t.state)?void 0:n.menuIsOpen,r=e.target;return i&&r&&!(null!=(a=r.classList)&&a.contains("Select__menu-list"))},menuPosition:"fixed"});const te=(0,b.Fg)();return(0,E.tZ)(X,d()({ref:e=>{o=Y&&e&&"refs"in e?e.refs.wrappedInstance:e,"function"==typeof i?i(o):i&&"current"in i&&(i.current=o)},className:x,classNamePrefix:w,isMulti:K,isClearable:Q,options:A,value:W,minMenuHeight:F,maxMenuHeight:$,filterOption:void 0!==U?U:(0,m.c)({ignoreAccents:V}),styles:{...k,...c},theme:e=>p()(e,(e=>({borderRadius:e.borderRadius,zIndex:11,colors:I(e),spacing:{baseUnit:3,menuGutter:0,controlHeight:34,lineHeight:19,fontSize:14,minWidth:"6.5em"},weights:e.typography.weights}))(te),l),formatOptionLabel:B,getOptionLabel:j,getOptionValue:q,components:J},G))}return i.memo(a)}const B=j(R),G=j(D),W=j(L);class K extends i.Component{constructor(e){super(e),this.onPaste=this.onPaste.bind(this)}onPaste(e){if(!this.props.isMulti)return;e.preventDefault();const t=e.clipboardData.getData("Text");if(!t)return;const n=`[${this.props.separator}]+`,a=t.split(new RegExp(n)).map((e=>e.trim())),o=this.props.isValidNewOption,i=this.props.value||[],r={},s={};this.props.options.forEach((e=>{r[e[this.props.valueKey]]=1}));let l=[];i.forEach((e=>{l.push({[this.props.labelKey]:e,[this.props.valueKey]:e}),s[e]=1})),l=l.concat(a.filter((e=>{const t=!s[e];return s[e]=1,t&&(o?o({[this.props.labelKey]:e}):!!e)})).map((e=>{const t={[this.props.labelKey]:e,[this.props.valueKey]:e};return r[e]||this.props.options.unshift(t),t}))),l.length&&this.props.onChange&&this.props.onChange(l)}render(){const{selectWrap:e,...t}=this.props;return(0,E.tZ)(e,d()({},t,{onPaste:this.onPaste}))}}K.propTypes={separator:s().array,selectWrap:s().elementType,selectRef:s().func,onChange:s().func.isRequired,valueKey:s().string,labelKey:s().string,options:s().array,isMulti:s().bool,value:s().any,isValidNewOption:s().func,noResultsText:s().string,forceOverflow:s().bool},K.defaultProps={separator:[",","\n","\t",";"],selectWrap:B,valueKey:"value",labelKey:"label",options:[],isMulti:!1};var Q=n(64749);const Y=(0,b.iK)((e=>(0,E.tZ)(Q.Z,d()({getPopupContainer:e=>e.parentNode},e))))` display: block; `,X=(0,b.iK)(Q.Z)` &.ant-select-single { .ant-select-selector { height: 36px; padding: 0 11px; background-color: ${({theme:e})=>e.colors.grayscale.light3}; border: none; .ant-select-selection-search-input { height: 100%; } .ant-select-selection-item, .ant-select-selection-placeholder { line-height: 35px; color: ${({theme:e})=>e.colors.grayscale.dark1}; } } } `;Object.assign(Y,{Option:Q.Z.Option}),Object.assign(X,{Option:Q.Z.Option});var J=n(35932),ee=n(55786),te=n(31069),ne=n(61988),ae=n(68135),oe=n(27600),ie=n(49238),re=n(73375),se=n(61357),le=n(41030),ce=n(92252),de=n(12515),ue=n(69856);const pe=ue.i2.time_range,he={chartId:s().number.isRequired,origSelectedValues:s().object,datasource:s().object.isRequired,instantFiltering:s().bool,filtersFields:s().arrayOf(s().shape({field:s().string,label:s().string})),filtersChoices:s().objectOf(s().arrayOf(s().shape({id:s().string,text:s().string,filter:s().string,metric:s().number}))),onChange:s().func,onFilterMenuOpen:s().func,onFilterMenuClose:s().func,showDateFilter:s().bool,showSqlaTimeGrain:s().bool,showSqlaTimeColumn:s().bool,showDruidTimeGrain:s().bool,showDruidTimeOrigin:s().bool},me=b.iK.div` ${({theme:e})=>`\n display: flex;\n flex-direction: column;\n margin-bottom: ${2*e.gridUnit+2}px;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n label {\n display: flex;\n font-weight: ${e.typography.weights.bold};\n }\n\n .filter-badge-container {\n width: 30px;\n padding-right: ${2*e.gridUnit+2}px;\n }\n\n .filter-badge-container + div {\n width: 100%;\n }\n `} `;class ge extends i.PureComponent{constructor(e){super(e),this.onCloseDateFilterControl=()=>this.onFilterMenuClose(pe),this.state={selectedValues:e.origSelectedValues,hasChanged:!1},this.debouncerCache={},this.maxValueCache={},this.changeFilter=this.changeFilter.bind(this),this.onFilterMenuOpen=this.onFilterMenuOpen.bind(this),this.onOpenDateFilterControl=this.onOpenDateFilterControl.bind(this),this.onFilterMenuClose=this.onFilterMenuClose.bind(this)}onFilterMenuOpen(e){return this.props.onFilterMenuOpen(this.props.chartId,e)}onFilterMenuClose(e){return this.props.onFilterMenuClose(this.props.chartId,e)}onOpenDateFilterControl(){return this.onFilterMenuOpen(pe)}getControlData(e){const{selectedValues:t}=this.state,n={...ce.ai[e],name:e,key:`control-${e}`,value:t[ue.i2[e]],actions:{setControlValue:this.changeFilter}},a=n.mapStateToProps;return a?{...n,...a(this.props)}:n}getKnownMax(e,t){return this.maxValueCache[e]=Math.max(this.maxValueCache[e]||0,(0,l.max)(t||this.props.filtersChoices[e]||[],(e=>e.metric))),this.maxValueCache[e]}clickApply(){const{selectedValues:e}=this.state;this.setState({hasChanged:!1},(()=>{this.props.onChange(e,!1)}))}changeFilter(e,t){const n=ue.i2[e]||e;let a=null;if(null!==t)if(Array.isArray(t))a=t.map((e=>"string"==typeof e?e:e.value));else if(Object.values(ue.i2).includes(n)){var o;a=null!=(o=t.value)?o:t}else{var i;a=(0,ee.Z)(null!=(i=t.value)?i:t)}this.setState((e=>({selectedValues:{...e.selectedValues,[n]:a},hasChanged:!0})),(()=>{this.props.instantFiltering&&this.props.onChange({[n]:a},!1)}))}debounceLoadOptions(e){return e in this.debouncerCache||(this.debouncerCache[e]=o()(((t,n)=>{this.loadOptions(e,t).then(n)}),oe.M$)),this.debouncerCache[e]}transformOptions(e,t){const n=void 0===t?(0,l.max)(e,(e=>e.metric)):t;return e.map((e=>{const t=Math.round(e.metric/n*100),a="lightgrey",o={backgroundImage:`linear-gradient(to right, ${a}, ${a} ${t}%, rgba(0,0,0,0) ${t}%`};let i=e.id;return!0===i?i=oe.Ly:!1===i&&(i=oe.gz),{value:e.id,label:i,style:o}}))}async loadOptions(e,t=""){var n;const a=t.toLowerCase(),o=this.props.filtersFields.find((t=>t.key===e)).asc,i={...this.props.rawFormData,adhoc_filters:t?[{clause:"WHERE",expressionType:"SIMPLE",subject:e,operator:"ILIKE",comparator:`%${a}%`}]:null},{json:r}=await te.Z.get({url:(0,de.H6)({formData:i,endpointType:"json",method:"GET"})}),s=((null==r||null==(n=r.data)?void 0:n[e])||[]).filter((e=>e.id));return s&&0!==s.length?(a&&s.sort(((e,t)=>{const n=e.id.toLowerCase(),i=t.id.toLowerCase().startsWith(a)-n.startsWith(a);return 0===i?(e.metric-t.metric)*(o?1:-1):i})),this.transformOptions(s,this.getKnownMax(e,s))):[]}renderDateFilter(){const{showDateFilter:e}=this.props,t=ue.m_.time_range;return e?(0,E.tZ)("div",{className:"row space-1"},(0,E.tZ)("div",{className:"col-lg-12 col-xs-12"},(0,E.tZ)(re.Z,{name:pe,label:t,description:(0,ne.t)("Select start and end date"),onChange:e=>{this.changeFilter(pe,e)},onOpenDateFilterControl:this.onOpenDateFilterControl,onCloseDateFilterControl:this.onCloseDateFilterControl,value:this.state.selectedValues[pe]||"No filter",endpoints:["inclusive","exclusive"]}))):null}renderDatasourceFilters(){const{showSqlaTimeGrain:e,showSqlaTimeColumn:t,showDruidTimeGrain:n,showDruidTimeOrigin:a}=this.props,o=[],i=[],r=[];return e&&i.push("time_grain_sqla"),t&&i.push("granularity_sqla"),n&&r.push("granularity"),a&&r.push("druid_time_origin"),i.length&&o.push((0,E.tZ)(se.Z,{key:"sqla-filters",controls:i.map((e=>(0,E.tZ)(le.Z,this.getControlData(e))))})),r.length&&o.push((0,E.tZ)(se.Z,{key:"druid-filters",controls:r.map((e=>(0,E.tZ)(le.Z,this.getControlData(e))))})),o}renderSelect(e){const{filtersChoices:t}=this.props,{selectedValues:n}=this.state;this.debouncerCache={},this.maxValueCache={},Object.keys(n).filter((e=>e in t)).forEach((e=>{if(!n[e])return;const a=t[e]||(t[e]=[]),o=new Set(a.map((e=>e.id)));(Array.isArray(n[e])?n[e]:[n[e]]).filter((e=>null!==e&&!o.has(e))).forEach((t=>{a.unshift({filter:e,id:t,text:t,metric:0})}))}));const{key:a,label:o,[ue.ft.MULTIPLE]:i,[ue.ft.DEFAULT_VALUE]:r,[ue.ft.CLEARABLE]:s,[ue.ft.SEARCH_ALL_OPTIONS]:l}=e,c=t[a]||[];let d=n[a]||null;return void 0===d&&r&&(d=i?r.split(";"):r),(0,E.tZ)(K,{cacheOptions:!0,loadOptions:this.debounceLoadOptions(a),defaultOptions:this.transformOptions(c),key:a,placeholder:(0,ne.t)("Type or Select [%s]",o),isMulti:i,isClearable:s,value:d,options:this.transformOptions(c),onChange:e=>{e!==d&&this.changeFilter(a,e)},onMenuOpen:()=>this.onFilterMenuOpen(a),onBlur:()=>this.onFilterMenuClose(a),onMenuClose:()=>this.onFilterMenuClose(a),selectWrap:l&&c.length>=ue.cM?W:G,noResultsText:(0,ne.t)("No results found"),forceOverflow:!0})}renderFilters(){const{filtersFields:e=[]}=this.props;return e.map((e=>{const{label:t,key:n}=e;return(0,E.tZ)(me,{key:n,className:"filter-container"},(0,E.tZ)(ie.lX,{htmlFor:`LABEL-${n}`},t),this.renderSelect(e))}))}render(){const{instantFiltering:e,width:t,height:n}=this.props,{zIndex:a,gridUnit:o}=this.props.theme;return(0,E.tZ)(i.Fragment,null,(0,E.tZ)(E.xB,{styles:E.iv` .dashboard .filter_box .slice_container > div:not(.alert) { padding-top: 0; } .filter_box { padding: ${2*o+2}px 0; overflow: visible !important; &:hover { z-index: ${a.max}; } } `}),(0,E.tZ)("div",{style:{width:t,height:n,overflow:"auto"}},this.renderDateFilter(),this.renderDatasourceFilters(),this.renderFilters(),!e&&(0,E.tZ)(J.Z,{buttonSize:"small",buttonStyle:"primary",onClick:this.clickApply.bind(this),disabled:!this.state.hasChanged},(0,ne.t)("Apply"))))}}ge.propTypes=he,ge.defaultProps={origSelectedValues:{},onChange:()=>{},onFilterMenuOpen:()=>{},onFilterMenuClose:()=>{},showDateFilter:!1,showSqlaTimeGrain:!1,showSqlaTimeColumn:!1,showDruidTimeGrain:!1,showDruidTimeOrigin:!1,instantFiltering:!1};const fe=(0,ae.b)(ge)},61819:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(21804),o=n.n(a),i=(n(67294),n(51995)),r=n(61988),s=n(51776),l=n(11965);const c=i.iK.div` margin-bottom: ${({theme:e})=>2*e.gridUnit}px; `,d=function({certifiedBy:e,details:t,metricName:n}){const a=(0,i.Fg)();return(0,l.tZ)(s.Z,{id:`${o()(n)}-tooltip`,title:(0,l.tZ)("div",null,e&&(0,l.tZ)(c,null,(0,r.t)("Certified by %s",e)),(0,l.tZ)("div",null,t))},(0,l.tZ)("svg",{xmlns:"http://www.w3.org/2000/svg",enableBackground:"new 0 0 24 24",height:"14",viewBox:"0 0 24 24",width:"14"},(0,l.tZ)("g",null,(0,l.tZ)("path",{fill:a.colors.primary.base,d:"M23,12l-2.44-2.79l0.34-3.69l-3.61-0.82L15.4,1.5L12,2.96L8.6,1.5L6.71,4.69L3.1,5.5L3.44,9.2L1,12l2.44,2.79l-0.34,3.7 l3.61,0.82L8.6,22.5l3.4-1.47l3.4,1.46l1.89-3.19l3.61-0.82l-0.34-3.69L23,12z M9.38,16.01L7,13.61c-0.39-0.39-0.39-1.02,0-1.41 l0.07-0.07c0.39-0.39,1.03-0.39,1.42,0l1.61,1.62l5.15-5.16c0.39-0.39,1.03-0.39,1.42,0l0.07,0.07c0.39,0.39,0.39,1.02,0,1.41 l-5.92,5.94C10.41,16.4,9.78,16.4,9.38,16.01z"}))))}},65634:(e,t,n)=>{n.d(t,{E:()=>p});var a=n(67294),o=n(51995),i=n(11965),r=n(51776),s=n(63351),l=n(61819),c=n(71963),d=n(60605);const u=o.iK.span` display: flex; align-items: center; svg { margin-right: ${({theme:e})=>e.gridUnit}px; } `;function p({column:e,labelRef:t,showType:n=!1}){const{expression:o,column_name:p,type_generic:h}=e,m=o&&o!==p,g=m?"expression":h,[f,v]=(0,a.useState)(e.column_name);return(0,a.useLayoutEffect)((()=>{v((0,c.ZK)(e,t))}),[t,e]),(0,i.tZ)(u,null,n&&void 0!==g&&(0,i.tZ)(s.j,{type:g}),(0,i.tZ)(r.u,{id:"metric-name-tooltip",title:f},(0,i.tZ)("span",{className:"option-label column-option-label",css:e=>i.iv` margin-right: ${e.gridUnit}px; `,ref:t},(0,c.ok)(e))),m&&(0,i.tZ)(d.Z,{sqlExpression:o}),e.is_certified&&(0,i.tZ)(l.Z,{metricName:e.metric_name,certifiedBy:e.certified_by,details:e.certification_details}))}},63351:(e,t,n)=>{n.d(t,{j:()=>E,Z:()=>T});var a,o=n(67294),i=n(51995),r=n(11965),s=n(61988),l=n(88889),c=n(63270),d=n(78338);function u(){return u=Object.assign||function(e){for(var t=1;tr.iv` display: flex; justify-content: center; align-items: center; width: ${6*e.gridUnit}px; height: ${6*e.gridUnit}px; margin-right: ${e.gridUnit}px; && svg { margin-right: 0; margin-left: 0; } `}; `;function E({type:e}){let t=(0,r.tZ)(c.Z,{"aria-label":(0,s.t)("unknown type icon")});return""===e||"expression"===e?t=(0,r.tZ)(p,{"aria-label":(0,s.t)("function type icon")}):e===l.Z.STRING?t=(0,r.tZ)(b,{"aria-label":(0,s.t)("string type icon")}):e===l.Z.NUMERIC?t=(0,r.tZ)(C,{"aria-label":(0,s.t)("numeric type icon")}):e===l.Z.BOOLEAN?t=(0,r.tZ)(g,{"aria-label":(0,s.t)("boolean type icon")}):e===l.Z.TEMPORAL&&(t=(0,r.tZ)(d.Z,{"aria-label":(0,s.t)("temporal type icon")})),(0,r.tZ)(Z,null,t)}const T=E},51384:(e,t,n)=>{n.d(t,{m:()=>m});var a=n(67294),o=n(51995),i=n(11965),r=n(78186),s=n(9882),l=n(63351),c=n(61819),d=n(51776),u=n(71963),p=n(60605);const h=o.iK.div` align-items: center; display: flex; > svg { margin-right: ${({theme:e})=>e.gridUnit}px; } `;function m({metric:e,labelRef:t,openInNewWindow:n=!1,showFormula:o=!0,showType:m=!1,shouldShowTooltip:g=!0,url:f=""}){const v=e.verbose_name||e.metric_name||e.label,b=f?(0,i.tZ)("a",{href:f,target:n?"_blank":"",rel:"noreferrer"},v):v,y=(0,i.tZ)("span",{className:"option-label metric-option-label",css:e=>i.iv` margin-right: ${e.gridUnit}px; `,ref:t},b),_=e.warning_markdown||e.warning_text,[C,Z]=(0,a.useState)(e.metric_name);return(0,a.useLayoutEffect)((()=>{Z((0,u.Lk)(e,t))}),[t,e]),(0,i.tZ)(h,{className:"metric-option"},m&&(0,i.tZ)(l.j,{type:"expression"}),g?(0,i.tZ)(d.Z,{id:"metric-name-tooltip",title:C},y):y,o&&e.expression&&(0,i.tZ)(p.Z,{sqlExpression:e.expression}),e.is_certified&&(0,i.tZ)(c.Z,{metricName:e.metric_name,certifiedBy:e.certified_by,details:e.certification_details}),_&&(0,i.tZ)(s.Z,{className:"text-warning",icon:"warning",tooltip:(0,i.tZ)(r.Z,{source:_}),label:`warn-${e.metric_name}`,iconsStyle:{marginLeft:0}}))}},60605:(e,t,n)=>{n.d(t,{Z:()=>p});var a=n(5872),o=n.n(a),i=(n(67294),n(19181)),r=n(74981),s=n(85369),l=n(51995),c=n(11965),d=n(61988);n(89899);const u=(0,l.iK)(s.Z)` ${({theme:e})=>c.iv` color: ${e.colors.grayscale.base}; font-size: ${e.typography.sizes.s}px; & svg { margin-left: ${e.gridUnit}px; margin-right: ${e.gridUnit}px; } `} `,p=e=>{const t=(0,l.Fg)();return(0,c.tZ)(i.Z,o()({content:(0,c.tZ)(r.default,{mode:"sql",value:e.sqlExpression,editorProps:{$blockScrolling:!0},setOptions:{highlightActiveLine:!1,highlightGutterLine:!1},minLines:2,maxLines:6,readOnly:!0,wrapEnabled:!0,style:{border:`1px solid ${t.colors.grayscale.light2}`,background:t.colors.secondary.light5,maxWidth:100*t.gridUnit}}),placement:"bottomLeft",arrowPointAtCenter:!0,title:(0,d.t)("SQL expression")},e),(0,c.tZ)(u,null))}},71963:(e,t,n)=>{n.d(t,{ok:()=>u,ZK:()=>p,Lk:()=>h});var a=n(67294),o=n(51995),i=n(11965),r=n(61988);const s=o.iK.div` ${({theme:e})=>i.iv` display: flex; flex-direction: column; font-size: ${e.typography.sizes.s}px; line-height: 1.2; &:not(:last-of-type) { margin-bottom: ${2*e.gridUnit}px; } `} `,l=o.iK.span` ${({theme:e})=>i.iv` font-weight: ${e.typography.weights.bold}; `} `,c=({label:e,text:t})=>(0,i.tZ)(s,null,(0,i.tZ)(l,null,e),(0,i.tZ)("span",null,t)),d=e=>!!(e&&e.current&&e.current.scrollWidth>e.current.clientWidth),u=e=>e.verbose_name||e.column_name,p=(e,t)=>e.verbose_name||e.description||d(t)?(0,i.tZ)(a.Fragment,null,(0,i.tZ)(c,{label:(0,r.t)("Column name"),text:e.column_name}),e.verbose_name&&(0,i.tZ)(c,{label:(0,r.t)("Label"),text:e.verbose_name}),e.description&&(0,i.tZ)(c,{label:(0,r.t)("Description"),text:e.description})):null,h=(e,t)=>e.verbose_name||e.description||e.label||d(t)?(0,i.tZ)(a.Fragment,null,(0,i.tZ)(c,{label:(0,r.t)("Metric name"),text:e.metric_name}),(e.label||e.verbose_name)&&(0,i.tZ)(c,{label:(0,r.t)("Label"),text:e.label||e.verbose_name}),e.description&&(0,i.tZ)(c,{label:(0,r.t)("Description"),text:e.description})):null},35622:(e,t,n)=>{n.d(t,{m_:()=>l,DS:()=>c,LU:()=>d,CV:()=>u,cm:()=>p});var a=n(61988),o=n(5364),i=n(88889),r=n(46078),s=n(20620);const l={time_range:(0,a.t)("Time Range"),granularity_sqla:(0,a.t)("Time Column"),time_grain_sqla:(0,a.t)("Time Grain"),druid_time_origin:(0,a.t)("Origin"),granularity:(0,a.t)("Time Granularity")},c={[o.W3]:(0,a.t)("Time")},d={verbose_name:c[o.W3],column_name:o.W3,type_generic:i.Z.TEMPORAL,description:(0,a.t)("A reference to the [Time] configuration, taking granularity into account")},u={name:o.W3,type:r.i9.Query,is_dttm:!1},p={[s.nJ.aggregate]:(0,a.t)("Aggregate"),[s.nJ.raw]:(0,a.t)("Raw records")}},356:(e,t,n)=>{n.d(t,{M:()=>K,Z:()=>Q});var a=n(11965),o=n(67294),i=n(51995),r=n(61988),s=n(9882),l=n(51776);function c({name:e,description:t,label:n,tooltipOnClick:o,onClick:i,warning:c,danger:d,leftNode:u,rightNode:p,validationErrors:h=[],renderTrigger:m=!1,hovered:g=!1,required:f=!1}){if(!n)return null;const v=h.length>0?"text-danger":"";return(0,a.tZ)("div",{className:"ControlHeader"},(0,a.tZ)("div",{className:"pull-left"},(0,a.tZ)("label",{className:"control-label",htmlFor:e},u&&(0,a.tZ)("span",null,u),(0,a.tZ)("span",{role:"button",tabIndex:0,onClick:i,className:v,style:{cursor:i?"pointer":""}},n)," ",c&&(0,a.tZ)("span",null,(0,a.tZ)(l.u,{id:"error-tooltip",placement:"top",title:c},(0,a.tZ)("i",{className:"fa fa-exclamation-circle text-warning"}))," "),d&&(0,a.tZ)("span",null,(0,a.tZ)(l.u,{id:"error-tooltip",placement:"top",title:d},(0,a.tZ)("i",{className:"fa fa-exclamation-circle text-danger"}))," "),h.length>0&&(0,a.tZ)("span",null,(0,a.tZ)(l.u,{id:"error-tooltip",placement:"top",title:h.join(" ")},(0,a.tZ)("i",{className:"fa fa-exclamation-circle text-danger"}))," "),g?(0,a.tZ)("span",null,t&&(0,a.tZ)("span",null,(0,a.tZ)(s.V,{label:(0,r.t)("description"),tooltip:t,placement:"top",onClick:o})," "),m&&(0,a.tZ)("span",null,(0,a.tZ)(s.V,{label:(0,r.t)("bolt"),tooltip:(0,r.t)("Changing this control takes effect instantly"),placement:"top",icon:"bolt"})," ")):null,f&&(0,a.tZ)("span",{className:"text-danger m-l-4"},(0,a.tZ)("strong",null,"*")))),p&&(0,a.tZ)("div",{className:"pull-right"},p),(0,a.tZ)("div",{className:"clearfix"}))}function d({value:e,options:t,onChange:n,...o}){const r=e||t[0][0],s=(0,i.Fg)();return(0,a.tZ)("div",{css:(0,a.iv)({".btn svg":{position:"relative",top:"0.2em"},".btn:focus":{outline:"none"},".control-label":{color:s.colors.grayscale.base,marginBottom:s.gridUnit},".control-label + .btn-group":{marginTop:"1px"},".btn-group .btn-default":{color:s.colors.grayscale.dark1},".btn-group .btn.active":{background:s.colors.grayscale.light4,fontWeight:s.typography.weights.bold,boxShadow:"none"}},"","")},(0,a.tZ)(c,o),(0,a.tZ)("div",{className:"btn-group btn-group-sm"},t.map((([e,t])=>(0,a.tZ)("button",{key:JSON.stringify(e),type:"button",className:"btn btn-default "+(e===r?"active":""),onClick:()=>{n(e)}},t)))))}var u=n(19181),p=n(63351),h=n(5872),m=n.n(h),g=n(88889),f=n(23279),v=n.n(f),b=n(68122);function y({children:e}){const{gridUnit:t}=(0,i.Fg)();return(0,a.tZ)("div",{css:(0,a.iv)({display:"flex",flexWrap:"nowrap",margin:-2*t,marginBottom:t},"","")},e)}function _({onChange:e,value:t,children:n}){const r=(0,i.Fg)(),s=(0,o.useMemo)((()=>({0:e,[b.o]:v()(e,b.o)})),[e]),l=o.Children.map(n,(n=>{if("children"in n.props){const a=Array.isArray(n.props.children)?100/n.props.children.length+"%":void 0;return o.cloneElement(n,{children:o.Children.map(n.props.children,(n=>{const{name:i,width:r,debounceDelay:l=b.o,onChange:c}=n.props;return o.cloneElement(n,{width:r||a,value:null==t?void 0:t[i],debounceDelay:void 0,onChange(n){c&&c(n),l in s||(s[l]=v()(e,l)),s[l]({...t,[i]:n})}})}))})}return n}));return(0,a.tZ)("div",{css:(0,a.iv)({label:{textTransform:"uppercase",color:r.colors.text.label,fontSize:r.typography.sizes.s}},"","")},l)}var C=n(31955),Z=n(21888),E=n(4107),T=n(31059),S=n(64749);const{Option:x}=S.Z;function w({creatable:e,onSearch:t,dropdownMatchSelectWidth:n=!1,minWidth:i="100%",showSearch:r=!0,onChange:s,options:l,children:c,value:d,...u}){const[p,h]=(0,o.useState)(),g=r||e,f=g?n=>{e&&h(n),t&&t(n)}:void 0,v=null==l?void 0:l.some((([e])=>e===p)),b=null==l?void 0:l.some((([e])=>e===d)),y=g?(e,t)=>{h(""),s&&s(e,t)}:s;return(0,a.tZ)(S.Z,m()({dropdownMatchSelectWidth:n,showSearch:g,onSearch:f,onChange:y,value:d},u,{css:(0,a.iv)({minWidth:i},"","")}),null==l?void 0:l.map((([e,t])=>(0,a.tZ)(x,{value:e},t))),c,d&&!b&&(0,a.tZ)(x,{key:d,value:d},d),p&&!v&&(0,a.tZ)(x,{key:p,value:p},p))}w.Option=x;const A={Slider:C.Z,InputNumber:Z.Z,Input:E.Z,Select:w,Checkbox:T.Z,RadioButtonControl:d};function R({name:e,label:t,description:n,width:r,validators:l,required:d,onChange:u,value:p,defaultValue:h,controlType:g,...f}){const{gridUnit:v}=(0,i.Fg)(),[b,y]=(0,o.useState)(!1),[_,C]=(0,o.useState)(void 0===p?h:p),[Z,E]=(0,o.useState)(),T=e=>{const t=e&&"object"==typeof e&&"target"in e?"checkbox"===e.target.type||"radio"===e.target.type?e.target.checked:e.target.value:e,n=(null==l?void 0:l.map((e=>!(!d&&function(e){return null==e||""===e}(t))&&e(t))).filter((e=>!!e)))||[];E(n),C(t),0===n.length&&u&&u(t)},S=A[g];return(0,a.tZ)("div",{css:(0,a.iv)({margin:2*v,width:r},"",""),onMouseEnter:()=>y(!0),onMouseLeave:()=>y(!1)},"Checkbox"===g?(0,a.tZ)(A.Checkbox,{checked:_,onChange:T},t," ",b&&n&&(0,a.tZ)(s.Z,{tooltip:n})):(0,a.tZ)(o.Fragment,null,t&&(0,a.tZ)(c,{name:e,label:t,description:n,validationErrors:Z,hovered:b,required:d}),(0,a.tZ)(S,m()({},f,{value:_,onChange:T}))))}var D=n(872),L=n(61437),O=n(38798),M=n(14031),I=n(58842);const k={controlType:"Input",label:(0,r.t)("Emit Target"),description:(0,r.t)("If you wish to specify a different target column than the original column, it can be entered here"),defaultValue:"",debounceDelay:500,validators:void 0},N={controlType:"Select",label:(0,r.t)("D3 format"),description:I.YD,options:I.F6,defaultValue:I.F6[0][0],creatable:!0,minWidth:"14em",debounceDelay:500},P={controlType:"Select",label:(0,r.t)("D3 format"),description:I.oq,options:I.HC,defaultValue:I.HC[0][0],creatable:!0,minWidth:"10em",debounceDelay:500},F={controlType:"Slider",label:(0,r.t)("Fraction digits"),description:(0,r.t)("Number of decimal digits to round numbers to"),min:0,step:1,max:100,defaultValue:100},$={controlType:"InputNumber",label:(0,r.t)("Min Width"),description:(0,r.t)("Default minimal column width in pixels, actual width may still be larger than this if other columns don't need much space"),width:120,placeholder:"auto",debounceDelay:400,validators:[D.Z]},U={controlType:"RadioButtonControl",label:(0,r.t)("Text align"),description:(0,r.t)("Horizontal alignment"),width:130,debounceDelay:50,defaultValue:"left",options:[["left",(0,a.tZ)(L.E,{title:(0,r.t)("Left")})],["center",(0,a.tZ)(M.X,{title:(0,r.t)("Center")})],["right",(0,a.tZ)(O.l,{title:(0,r.t)("Right")})]]},V={controlType:"Checkbox",label:(0,r.t)("Show cell bars"),description:(0,r.t)("Whether to display a bar chart background in table columns"),defaultValue:!0,debounceDelay:200},q={controlType:"Checkbox",label:(0,r.t)("Align +/-"),description:(0,r.t)("Whether to align positive and negative values in cell bar chart at 0"),defaultValue:!1,debounceDelay:200},z={controlType:"Checkbox",label:(0,r.t)("Color +/-"),description:(0,r.t)("Whether to colorize numeric values by if they are positive or negative"),defaultValue:!1,debounceDelay:200},H={d3NumberFormat:N,emitTarget:k,d3SmallNumberFormat:{...N,label:(0,r.t)("Small number format"),description:(0,r.t)("D3 number format for numbers between -1.0 and 1.0, useful when you want to have different siginificant digits for small and large numbers")},d3TimeFormat:P,fractionDigits:F,columnWidth:$,horizontalAlign:U,showCellBars:V,alignPositiveNegative:q,colorPositiveNegative:z},j={[g.Z.STRING]:[["columnWidth",{name:"horizontalAlign",override:{defaultValue:"left"}}]],[g.Z.NUMERIC]:[["columnWidth",{name:"horizontalAlign",override:{defaultValue:"right"}}],["d3NumberFormat"],["d3SmallNumberFormat"],["alignPositiveNegative","colorPositiveNegative"],["showCellBars"]],[g.Z.TEMPORAL]:[["columnWidth",{name:"horizontalAlign",override:{defaultValue:"left"}}],["d3TimeFormat"]],[g.Z.BOOLEAN]:[["columnWidth",{name:"horizontalAlign",override:{defaultValue:"left"}}]]};function B({column:e,configFormLayout:t,onChange:n}){return(0,a.tZ)(_,{onChange:n,value:e.config},t[void 0===e.type?g.Z.STRING:e.type].map(((e,t)=>(0,a.tZ)(y,{key:t},e.map((e=>{const t="string"==typeof e?e:e.name,n="string"==typeof e?{}:"override"in e?e.override:e.config,o={...t in H?H[t]:void 0,...n};return(0,a.tZ)(R,m()({key:t,name:t},o))}))))))}const G=o.memo((function({column:e,onChange:t,configFormLayout:n}){const{colors:o,gridUnit:r}=(0,i.Fg)(),s=6*r;return(0,a.tZ)(u.Z,{title:e.name,content:()=>(0,a.tZ)(B,{column:e,onChange:t,configFormLayout:n}),trigger:"click",placement:"right"},(0,a.tZ)("div",{css:(0,a.iv)({display:"flex",alignItems:"center",cursor:"pointer",padding:`${r}px ${2*r}px`,borderBottom:`1px solid ${o.grayscale.light2}`,position:"relative",paddingRight:s,"&:last-child":{borderBottom:"none"},"&:hover":{background:o.grayscale.light4},"> .fa":{color:o.grayscale.light2},"&:hover > .fa":{color:o.grayscale.light1}},"")},(0,a.tZ)(p.Z,{type:e.type}),e.name,(0,a.tZ)("i",{className:"fa fa-caret-right",css:(0,a.iv)({position:"absolute",right:3*r,top:3*r},"")})))}));var W=n(35622);const K={},Q={RadioButtonControl:d,ColumnConfigControl:function({queryResponse:e,appliedColumnNames:t=[],value:n,onChange:s,configFormLayout:l=j,emitFilter:d,...u}){d?Object.values(l).forEach((e=>{e.some((e=>e.includes("emitTarget")))||e.push(["emitTarget"])})):Object.values(l).forEach((e=>{const t=e.findIndex((e=>e.includes("emitTarget")));t>-1&&e.splice(t,1)}));const{colnames:p,coltypes:h}=e||{};let m=[],g=[];if(0===t.length)m=p||[],g=h||[];else{const e=new Set(t);null==p||p.forEach(((t,n)=>{e.has(t)&&(m.push(t),g.push(null==h?void 0:h[n]))}))}const f=(0,i.Fg)(),v=(0,o.useMemo)((()=>{var e;const t={};return null==(e=m)||e.forEach(((e,a)=>{var o;t[e]={name:W.DS[e]||e,type:null==(o=g)?void 0:o[a],config:(null==n?void 0:n[e])||{}}})),t}),[n,m,g]),[b,y]=(0,o.useState)(!1),_=e=>v[e]||{};if(!m||0===m.length)return null;const C=m.length>12,Z=C&&!b?m.slice(0,10):m;return(0,a.tZ)(o.Fragment,null,(0,a.tZ)(c,u),(0,a.tZ)("div",{css:(0,a.iv)({border:`1px solid ${f.colors.grayscale.light2}`,borderRadius:f.gridUnit},"","")},Z.map((e=>(0,a.tZ)(G,{key:e,column:_(e),onChange:t=>((e,t)=>{if(s){const a=m&&n?Object.fromEntries(Object.entries(n).filter((([e])=>m.includes(e)))):{...n};s({...a,[e]:t})}})(e,t),configFormLayout:l}))),C&&(0,a.tZ)("div",{role:"button",tabIndex:-1,css:(0,a.iv)({padding:2*f.gridUnit,textAlign:"center",cursor:"pointer",textTransform:"uppercase",fontSize:f.typography.sizes.xs,color:f.colors.text.label,":hover":{backgroundColor:f.colors.grayscale.light4}},"",""),onClick:()=>y(!b)},b?(0,a.tZ)(o.Fragment,null,(0,a.tZ)("i",{className:"fa fa-angle-up"}),"   ",(0,r.t)("Show less columns")):(0,a.tZ)(o.Fragment,null,(0,a.tZ)("i",{className:"fa fa-angle-down"}),"  ",(0,r.t)("Show all columns")))))}}},53769:(e,t,n)=>{n.d(t,{xM:()=>l,lC:()=>c,A3:()=>d,zo:()=>u,ZC:()=>p,dN:()=>h,$m:()=>m,SE:()=>g,z3:()=>f,Ju:()=>v,h1:()=>b,ov:()=>y,M4:()=>_,GA:()=>C});var a=n(61988),o=n(95826),i=n(93185),r=n(35622),s=n(19835);const l={type:"DndColumnSelect",label:(0,a.t)("Dimensions"),default:[],description:(0,a.t)("One or many columns to group by. High cardinality groupings should include a series limit to limit the number of fetched and rendered series."),mapStateToProps(e,{includeTime:t}){var n;const a={},{datasource:o}=e;if(null!=o&&null!=(n=o.columns[0])&&n.hasOwnProperty("groupby")){const e=o.columns.filter((e=>e.groupby));t&&e.unshift(r.LU),a.options=Object.fromEntries(e.map((e=>[e.column_name,e]))),a.savedMetrics=o.metrics||[]}else{const e=null==o?void 0:o.columns;t&&(null==e||e.unshift(r.CV)),a.options=Object.fromEntries(null==e?void 0:e.map((e=>[e.name,e]))),a.options=null==o?void 0:o.columns}return a}},c={...l,label:(0,a.t)("Columns"),description:(0,a.t)("One or many columns to pivot as columns")},d={...l,label:(0,a.t)("Dimensions"),multi:!1,default:null,description:(0,a.t)("Defines the grouping of entities. Each series is shown as a specific color on the chart and has a legend toggle")},u={...l,label:(0,a.t)("Entity"),default:null,multi:!1,validators:[o.Z],description:(0,a.t)("This defines the element to be plotted on the chart")},p={type:"DndFilterSelect",label:(0,a.t)("Filters"),default:[],description:"",mapStateToProps:({datasource:e,form_data:t})=>{var n;return{columns:null!=e&&null!=(n=e.columns[0])&&n.hasOwnProperty("filterable")?null==e?void 0:e.columns.filter((e=>e.filterable)):(null==e?void 0:e.columns)||[],savedMetrics:(0,s.R)(e),selectedMetrics:t.metrics||(t.metric?[t.metric]:[]),datasource:e}},provideFormDataToProps:!0},h={type:"DndMetricSelect",multi:!0,label:(0,a.t)("Metrics"),validators:[o.Z],mapStateToProps:({datasource:e})=>({columns:(null==e?void 0:e.columns)||[],savedMetrics:(0,s.R)(e),datasource:e,datasourceType:null==e?void 0:e.type}),description:(0,a.t)("One or many metrics to display")},m={...h,multi:!1,label:(0,a.t)("Metric"),description:(0,a.t)("Metric")},g={...m,label:(0,a.t)("Right Axis Metric"),description:(0,a.t)("Choose a metric for right axis")},f={type:"DndMetricSelect",label:(0,a.t)("Sort by"),default:null,description:(0,a.t)("Metric used to define how the top series are sorted if a series or row limit is present. If undefined reverts to the first metric (where appropriate)."),mapStateToProps:({datasource:e})=>({columns:(null==e?void 0:e.columns)||[],savedMetrics:(0,s.R)(e),datasource:e,datasourceType:null==e?void 0:e.type})},v={...m,label:(0,a.t)("Bubble Size"),description:(0,a.t)("Metric used to calculate bubble size")},b={...m,label:(0,a.t)("X Axis"),description:(0,a.t)("Metric assigned to the [X] axis")},y={...m,label:(0,a.t)("Y Axis"),description:(0,a.t)("Metric assigned to the [Y] axis")},_={...m,label:(0,a.t)("Color Metric"),validators:[],description:(0,a.t)("A metric to use for color")},C={...d,label:r.m_.granularity_sqla,description:(0,a.t)("The time column for the visualization. Note that you can define arbitrary expression that return a DATETIME column in the table. Also note that the filter below is applied against this column or expression"),canDelete:!1,ghostButtonText:(0,a.t)((0,i.c)(i.T.ENABLE_DND_WITH_CLICK_UX)?"Drop a temporal column here or click":"Drop temporal column here"),mapStateToProps:({datasource:e})=>{var t,n,a;if(null!=e&&null!=(t=e.columns[0])&&t.hasOwnProperty("column_name")){var o,i,r;const t=null!=(o=null==e||null==(i=e.columns)?void 0:i.filter((e=>e.is_dttm)))?o:[];return{options:Object.fromEntries(t.map((e=>[e.column_name,e]))),default:(null==e?void 0:e.main_dttm_col)||(null==(r=t[0])?void 0:r.column_name)||null,isTemporal:!0}}const s=null==e||null==(n=e.columns)?void 0:n.sort((e=>null!=e&&e.is_dttm?-1:1));return{options:Object.fromEntries(s.map((e=>[e.name,e]))),default:(null==(a=s[0])?void 0:a.name)||null,isTemporal:!0}}}},16522:(e,t,n)=>{n.d(t,{Hq:()=>te});var a=n(41609),o=n.n(a),i=(n(67294),n(81545)),r=n(45511),s=n(61988),l=n(95826),c=n(75294),d=n(62363),u=n(93185),p=n(19835),h=n(6126),m=n(58842),g=n(35622),f=n(65634),v=n(53769),b=n(11965);const y=(0,i.Z)(),_=(0,r.Z)(),C=[5,10,25,50,100,500],Z=document.getElementById("app"),{user:E}=JSON.parse((null==Z?void 0:Z.getAttribute("data-bootstrap"))||"{}"),T={type:"SelectControl",label:(0,s.t)("Dimensions"),multi:!0,freeForm:!0,clearable:!0,default:[],includeTime:!1,description:(0,s.t)("One or many columns to group by. High cardinality groupings should include a sort by metric and series limit to limit the number of fetched and rendered series."),optionRenderer:e=>(0,b.tZ)(f.E,{showType:!0,column:e}),valueRenderer:e=>(0,b.tZ)(f.E,{column:e}),valueKey:"column_name",allowAll:!0,filterOption:({data:e},t)=>e.column_name&&e.column_name.toLowerCase().includes(t.toLowerCase())||e.verbose_name&&e.verbose_name.toLowerCase().includes(t.toLowerCase())||!1,promptTextCreator:e=>e,mapStateToProps(e,{includeTime:t}){var n;const a={},{datasource:o}=e;if(null!=o&&null!=(n=o.columns[0])&&n.hasOwnProperty("groupby")){const e=o.columns.filter((e=>e.groupby));t&&e.unshift(g.LU),a.options=e}else{const e=o.columns;t&&e.unshift(g.CV),a.options=e}return a},commaChoosesOption:!1},S={type:"MetricsControl",multi:!0,label:(0,s.t)("Metrics"),validators:[l.Z],mapStateToProps:({datasource:e})=>({columns:(null==e?void 0:e.columns)||[],savedMetrics:(0,p.R)(e),datasource:e,datasourceType:null==e?void 0:e.type}),description:(0,s.t)("One or many metrics to display")},x={...S,multi:!1,label:(0,s.t)("Metric"),description:(0,s.t)("Metric")},w={type:"DatasourceControl",label:(0,s.t)("Datasource"),default:null,description:null,mapStateToProps:({datasource:e,form_data:t})=>({datasource:e,form_data:t,user:E})},A={type:"VizTypeControl",label:(0,s.t)("Visualization Type"),default:"table",description:(0,s.t)("The type of visualization to display")},R={type:"ColorPickerControl",label:(0,s.t)("Fixed Color"),description:(0,s.t)("Use this to define a static color for all circles"),default:{r:0,g:122,b:135,a:1},renderTrigger:!0},D={...x,label:(0,s.t)("Right Axis Metric"),clearable:!0,description:(0,s.t)("Choose a metric for right axis")},L={type:"ColorSchemeControl",label:(0,s.t)("Linear Color Scheme"),choices:()=>_.values().map((e=>[e.id,e.label])),default:_.getDefaultKey(),clearable:!1,description:"",renderTrigger:!0,schemes:()=>_.getMap(),isLinear:!0,mapStateToProps:e=>{var t;return{dashboardId:null==e||null==(t=e.form_data)?void 0:t.dashboardId}}},O={...x,label:(0,s.t)("Color Metric"),default:null,validators:[],description:(0,s.t)("A metric to use for color")},M={...T,label:(0,s.t)("Columns"),description:(0,s.t)("One or many columns to pivot as columns")},I={type:"SelectControl",freeForm:!0,label:g.m_.druid_time_origin,choices:[["","default"],["now","now"]],default:null,description:(0,s.t)("Defines the origin where time buckets start, accepts natural dates as in `now`, `sunday` or `1970-01-01`")},k={type:"SelectControl",freeForm:!0,label:g.m_.granularity,default:"one day",choices:[[null,"all"],["PT5S","5 seconds"],["PT30S","30 seconds"],["PT1M","1 minute"],["PT5M","5 minutes"],["PT30M","30 minutes"],["PT1H","1 hour"],["PT6H","6 hour"],["P1D","1 day"],["P7D","7 days"],["P1W","week"],["week_starting_sunday","week starting Sunday"],["week_ending_saturday","week ending Saturday"],["P1M","month"],["P3M","quarter"],["P1Y","year"]],description:(0,s.t)("The time granularity for the visualization. Note that you can type and use simple natural language as in `10 seconds`, `1 day` or `56 weeks`")},N={type:"SelectControl",label:g.m_.granularity_sqla,description:(0,s.t)("The time column for the visualization. Note that you can define arbitrary expression that return a DATETIME column in the table. Also note that the filter below is applied against this column or expression"),default:e=>e.default,clearable:!1,optionRenderer:e=>(0,b.tZ)(f.E,{showType:!0,column:e}),valueRenderer:e=>(0,b.tZ)(f.E,{column:e}),valueKey:"column_name",mapStateToProps:e=>{var t;const n={},{datasource:a}=e;if(null!=a&&null!=(t=a.columns[0])&&t.hasOwnProperty("main_dttm_col")){const e=a;n.options=e.columns.filter((e=>e.is_dttm)),n.default=null,e.main_dttm_col?n.default=e.main_dttm_col:null!=n&&n.options&&(n.default=n.options[0].column_name)}else{var o,i;const e=null==a||null==(o=a.columns)?void 0:o.sort((e=>null!=e&&e.is_dttm?-1:1));n.options=e,null!=n&&n.options&&(n.default=null==(i=n.options[0])?void 0:i.name)}return n}},P={type:"SelectControl",label:g.m_.time_grain_sqla,default:"P1D",description:(0,s.t)("The time granularity for the visualization. This applies a date transformation to alter your time column and defines a new time granularity. The options here are defined on a per database engine basis in the Superset source code."),mapStateToProps:({datasource:e})=>({choices:(null==e?void 0:e.time_grain_sqla)||null})},F={type:"DateFilterControl",freeForm:!0,label:g.m_.time_range,default:(0,s.t)("No filter"),description:(0,s.t)('The time range for the visualization. All relative times, e.g. "Last month", "Last 7 days", "now", etc. are evaluated on the server using the server\'s local time (sans timezone). All tooltips and placeholder times are expressed in UTC (sans timezone). The timestamps are then evaluated by the database using the engine\'s local timezone. Note one can explicitly set the timezone per the ISO 8601 format if specifying either the start and/or end time.'),mapStateToProps:({datasource:e})=>({datasource:e})},$={type:"SelectControl",freeForm:!0,label:(0,s.t)("Row limit"),validators:[c.Z],default:1e4,choices:(0,h.m)([10,50,100,250,500,1e3,5e3,1e4,5e4]),description:(0,s.t)("Limits the number of rows that get displayed.")},U={type:"CheckboxControl",label:(0,s.t)("Sort Descending"),default:!0,description:(0,s.t)("Whether to sort descending or ascending"),visibility:({controls:e})=>Boolean((null==e?void 0:e.timeseries_limit_metric.value)&&!o()(null==e?void 0:e.timeseries_limit_metric.value))},V={type:"SelectControl",freeForm:!0,label:(0,s.t)("Series limit"),validators:[c.Z],choices:(0,h.m)(C),clearable:!0,description:(0,s.t)("Limits the number of series that get displayed. A joined subquery (or an extra phase where subqueries are not supported) is applied to limit the number of series that get fetched and rendered. This feature is useful when grouping by high cardinality column(s) though does increase the query complexity and cost.")},q={type:"SelectControl",freeForm:!0,label:(0,s.t)("Series limit"),validators:[c.Z],choices:(0,h.m)(C),description:(0,s.t)("Limits the number of series that get displayed. A joined subquery (or an extra phase where subqueries are not supported) is applied to limit the number of series that get fetched and rendered. This feature is useful when grouping by high cardinality column(s) though does increase the query complexity and cost.")},z={type:"MetricsControl",label:(0,s.t)("Sort by"),default:null,description:(0,s.t)("Metric used to define how the top series are sorted if a series or row limit is present. If undefined reverts to the first metric (where appropriate)."),mapStateToProps:({datasource:e})=>({columns:(null==e?void 0:e.columns)||[],savedMetrics:(0,p.R)(e),datasource:e,datasourceType:null==e?void 0:e.type})},H={...T,label:(0,s.t)("Dimensions"),multi:!1,default:null,description:(0,s.t)("Defines the grouping of entities. Each series is shown as a specific color on the chart and has a legend toggle")},j={...T,label:(0,s.t)("Entity"),default:null,multi:!1,validators:[l.Z],description:(0,s.t)("This defines the element to be plotted on the chart")},B={...x,label:(0,s.t)("X Axis"),description:(0,s.t)("Metric assigned to the [X] axis"),default:null},G={...x,label:(0,s.t)("Y Axis"),default:null,description:(0,s.t)("Metric assigned to the [Y] axis")},W={...x,label:(0,s.t)("Bubble Size"),description:(0,s.t)("Metric used to calculate bubble size"),default:null},K={type:"SelectControl",freeForm:!0,label:(0,s.t)("Y Axis Format"),renderTrigger:!0,default:m.Ul,choices:m.F6,description:m.YD,tokenSeparators:["\n","\t",";"],filterOption:({data:e},t)=>e.label.includes(t)||e.value.includes(t),mapStateToProps:e=>{var t,n;return{choices:(null==(t=e.controls)||null==(n=t.comparison_type)?void 0:n.value)===d.pF.Percentage?m.F6.filter((e=>e[0].includes("%"))):m.F6}}},Q={type:"SelectControl",freeForm:!0,label:(0,s.t)("Time format"),renderTrigger:!0,default:m._r,choices:m.HC,description:m.oq,filterOption:({data:e},t)=>e.label.includes(t)||e.value.includes(t)},Y={type:"AdhocFilterControl",label:(0,s.t)("Filters"),default:[],description:"",mapStateToProps:({datasource:e,form_data:t})=>{var n;return{columns:null!=e&&null!=(n=e.columns[0])&&n.hasOwnProperty("filterable")?null==e?void 0:e.columns.filter((e=>e.filterable)):(null==e?void 0:e.columns)||[],savedMetrics:(0,p.R)(e),selectedMetrics:t.metrics||(t.metric?[t.metric]:[]),datasource:e}}},X={type:"ColorSchemeControl",label:(0,s.t)("Color Scheme"),default:y.getDefaultKey(),renderTrigger:!0,choices:()=>y.keys().map((e=>[e,e])),description:(0,s.t)("The color scheme for rendering chart"),schemes:()=>y.getMap(),mapStateToProps:e=>{var t;return{dashboardId:null==e||null==(t=e.form_data)?void 0:t.dashboardId}}},J={type:"CheckboxControl",label:(0,s.t)("Truncate Metric"),default:!0,description:(0,s.t)("Whether to truncate metrics")},ee=(0,u.c)(u.T.ENABLE_EXPLORE_DRAG_AND_DROP),te={metrics:ee?v.dN:S,metric:ee?v.$m:x,datasource:w,viz_type:A,color_picker:R,metric_2:ee?v.SE:D,linear_color_scheme:L,secondary_metric:ee?v.M4:O,groupby:ee?v.xM:T,columns:ee?v.lC:M,druid_time_origin:I,granularity:k,granularity_sqla:ee?v.GA:N,time_grain_sqla:P,time_range:F,row_limit:$,limit:V,timeseries_limit_metric:ee?v.z3:z,orderby:ee?v.z3:z,order_desc:U,series:ee?v.A3:H,entity:ee?v.zo:j,x:ee?v.h1:B,y:ee?v.ov:G,size:ee?v.Ju:W,y_axis_format:K,x_axis_time_format:Q,adhoc_filters:ee?v.ZC:Y,color_scheme:X,series_columns:ee?v.lC:M,series_limit:q,series_limit_metric:ee?v.z3:z,legacy_order_by:ee?v.z3:z,truncate_metric:J}},38575:(e,t,n)=>{var a;n.d(t,{O9:()=>a,vD:()=>o,xN:()=>i,zy:()=>r,GA:()=>s,D_:()=>l,It:()=>c,JQ:()=>d}),function(e){e.NONE="None",e.GREATER_THAN=">",e.LESS_THAN="<",e.GREATER_OR_EQUAL="≥",e.LESS_OR_EQUAL="≤",e.EQUAL="=",e.NOT_EQUAL="≠",e.BETWEEN="< x <",e.BETWEEN_OR_EQUAL="≤ x ≤",e.BETWEEN_OR_LEFT_EQUAL="≤ x <",e.BETWEEN_OR_RIGHT_EQUAL="< x ≤"}(a||(a={}));const o=[a.BETWEEN,a.BETWEEN_OR_EQUAL,a.BETWEEN_OR_LEFT_EQUAL,a.BETWEEN_OR_RIGHT_EQUAL];function i(e){return"column_name"in e}function r(e){return"column_name"in e&&"expression"in e&&!!e.expression}function s(e){return"label"in e&&"sqlExpression"in e}function l(e){return null!==e}function c(e){return!!e&&"columns"in e}function d(e){return!!e&&("results"in e||"query"===(null==e?void 0:e.type))}},58842:(e,t,n)=>{n.d(t,{YD:()=>r,F6:()=>s,oq:()=>l,HC:()=>c,Ul:()=>d,_r:()=>u});var a=n(61988),o=n(45636),i=n(78900);const r=(0,a.t)("D3 format syntax: https://github.com/d3/d3-format"),s=[[o.Z.SMART_NUMBER,(0,a.t)("Adaptive formatting")],["~g",(0,a.t)("Original value")],[",d",",d (12345.432 => 12,345)"],[".1s",".1s (12345.432 => 10k)"],[".3s",".3s (12345.432 => 12.3k)"],[",.1%",",.1% (12345.432 => 1,234,543.2%)"],[".2%",".2% (12345.432 => 1234543.20%)"],[".3%",".3% (12345.432 => 1234543.200%)"],[".4r",".4r (12345.432 => 12350)"],[",.1f",",.1f (12345.432 => 12,345.4)"],[",.2f",",.2f (12345.432 => 12,345.43)"],[",.3f",",.3f (12345.432 => 12,345.432)"],["+,","+, (12345.432 => +12,345.432)"],["$,.2f","$,.2f (12345.432 => $12,345.43)"],["DURATION",(0,a.t)("Duration in ms (66000 => 1m 6s)")],["DURATION_SUB",(0,a.t)("Duration in ms (1.40008 => 1ms 400µs 80ns)")]],l=(0,a.t)("D3 time format syntax: https://github.com/d3/d3-time-format"),c=[[i.Z.id,(0,a.t)("Adaptive formatting")],["%d/%m/%Y","%d/%m/%Y | 14/01/2019"],["%m/%d/%Y","%m/%d/%Y | 01/14/2019"],["%Y-%m-%d","%Y-%m-%d | 2019-01-14"],["%Y-%m-%d %H:%M:%S","%Y-%m-%d %H:%M:%S | 2019-01-14 01:32:10"],["%d-%m-%Y %H:%M:%S","%d-%m-%Y %H:%M:%S | 14-01-2019 01:32:10"],["%H:%M:%S","%H:%M:%S | 01:32:10"]],d=s[0][0],u=c[0][0]},19835:(e,t,n)=>{n.d(t,{R:()=>o});var a=n(46078);const o=e=>null!=e&&e.hasOwnProperty("metrics")?(null==e?void 0:e.metrics)||[]:a.BH},89368:(e,t,n)=>{n.d(t,{$:()=>r,q:()=>s});var a=n(67294),o=n(16522),i=n(356);function r(e){return"string"==typeof e&&e in i.Z?i.Z[e]:e}function s(e,t={}){if("string"==typeof e&&e in o.Hq){const n=e;return{name:n,config:{...o.Hq[n],...t[n]}}}if(!e||"string"==typeof e||a.isValidElement(e))return e;if("name"in e&&"config"in e)return{...e,config:{...e.config,type:r(e.config.type)}};if("override"in e&&e.name in o.Hq){const{name:t,override:n}=e;return{name:t,config:{...o.Hq[t],...n}}}return null}},6126:(e,t,n)=>{function a(e){return e.map((e=>Array.isArray(e)?e:[e,e.toString()]))}function o(e,t){const n=[];for(let a=e;a<=t;a+=1)n.push([a,a.toString()]);return n}n.d(t,{m:()=>a,B:()=>o})},37687:(e,t,n)=>{n.d(t,{Z:()=>r});var a=n(90537),o=n(1875);class i extends a.Z{constructor(){super({name:"ChartControlPanel"})}}const r=(0,o.Z)(i)},16355:(e,t,n)=>{var a,o,i;n.d(t,{cg:()=>a,Tr:()=>o,Df:()=>i,t$:()=>r,eH:()=>s,ZP:()=>l}),function(e){e.INTERACTIVE_CHART="INTERACTIVE_CHART",e.NATIVE_FILTER="NATIVE_FILTER"}(a||(a={})),function(e){e.EXPLORE="EXPLORE",e.DASHBOARD="DASHBOARD",e.FILTER_BAR="FILTER_BAR",e.FILTER_CONFIG_MODAL="FILTER_CONFIG_MODAL",e.EMBEDDED="EMBEDDED"}(o||(o={})),function(e){e.DEPRECATED="DEPRECATED",e.FEATURED="FEATURED"}(i||(i={}));const r={[i.DEPRECATED]:"This chart uses features or modules which are no longer actively maintained. It will eventually be replaced or removed.",[i.FEATURED]:"This chart was tested and verified, so the overall experience should be stable."},s={[i.DEPRECATED]:{weight:-.1},[i.FEATURED]:{weight:.1}},l={}},28062:(e,t,n)=>{n.r(t),n.d(t,{default:()=>r,DEFAULT_NAMESPACE:()=>l,getNamespace:()=>c,getColor:()=>d,getScale:()=>u});var a=n(97466),o=n(81545),i=n(86041);class r{constructor(e){this.name=void 0,this.forcedItems=void 0,this.scales=void 0,this.name=e,this.scales={},this.forcedItems={}}getScale(e){var t,n;const i=null!=(t=null!=e?e:(0,o.Z)().getDefaultKey())?t:"",r=(0,o.Z)().get(i);return new a.Z(null!=(n=null==r?void 0:r.colors)?n:[],this.forcedItems)}setColor(e,t){return this.forcedItems[(0,i.Z)(e)]=t,this}resetColors(){this.forcedItems={}}}const s={},l="GLOBAL";function c(e=l){const t=s[e];if(t)return t;const n=new r(e);return s[e]=n,n}function d(e,t,n){return c(n).getScale(t).getColor(e)}function u(e,t){return c(t).getScale(e)}},97466:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(99481),o=n(54732),i=n(86041),r=n(78161),s=n(25130),l=n(93185);class c extends o.Z{constructor(e,t){super(((e,t)=>this.getColor(e,t))),this.originColors=void 0,this.colors=void 0,this.scale=void 0,this.parentForcedColors=void 0,this.forcedColors=void 0,this.multiple=void 0,this.originColors=e,this.colors=e,this.scale=(0,a.Z)(),this.scale.range(e),this.parentForcedColors=t,this.forcedColors={},this.multiple=0}getColor(e,t){const n=(0,i.Z)(e),a=(0,r.Z)(),o=this.parentForcedColors&&this.parentForcedColors[n];if(o)return a.addSlice(n,o,t),o;const c=this.forcedColors[n];if(c)return a.addSlice(n,c,t),c;if((0,l.c)(l.T.USE_ANALAGOUS_COLORS)){const e=Math.floor(this.domain().length/this.originColors.length);if(e>this.multiple){this.multiple=e;const t=(0,s.Gh)(this.originColors,e);this.range(this.originColors.concat(t))}}const d=this.scale(n);return a.addSlice(n,d,t),d}setColor(e,t){return this.forcedColors[(0,i.Z)(e)]=t,this}getColorMap(){const e={};return this.scale.domain().forEach((t=>{e[t.toString()]=this.scale(t)})),{...e,...this.forcedColors,...this.parentForcedColors}}copy(){const e=new c(this.scale.range(),this.parentForcedColors);return e.forcedColors={...this.forcedColors},e.domain(this.domain()),e.unknown(this.unknown()),e}domain(e){return void 0===e?this.scale.domain():(this.scale.domain(e),this)}range(e){return void 0===e?this.scale.range():(this.colors=e,this.scale.range(e),this)}unknown(e){return void 0===e?this.scale.unknown():(this.scale.unknown(e),this)}}const d=c},78161:(e,t,n)=>{n.d(t,{X:()=>s,Z:()=>l});var a=n(28062),o=n(93185),i=n(1875),r=n(25130);class s{constructor(){this.sliceLabelColorMap=void 0,this.sliceLabelColorMap={}}getColorMap(e,t,n){if(t){const i=a.getNamespace(e),s=this.getSharedLabels();let l,c=[];if(s.length){const e=i.getScale(t),n=e.range();if((0,o.c)(o.T.USE_ANALAGOUS_COLORS)){const e=Math.ceil(s.length/n.length);c=(0,r.Gh)(n,e),l=s.reduce(((e,t,n)=>({...e,[t.toString()]:c[n]})),{})}else e.range(n.reverse()),l=s.reduce(((t,n)=>({...t,[n.toString()]:e(n)})),{})}return{...Object.keys(this.sliceLabelColorMap).reduce(((e,a)=>{const o=i.getScale(t);return{...e,...Object.keys(this.sliceLabelColorMap[a]).reduce(((e,t)=>({...e,[t]:n?o(t):this.sliceLabelColorMap[a][t]})),{})}}),{}),...l}}}addSlice(e,t,n){n&&(this.sliceLabelColorMap[n]={...this.sliceLabelColorMap[n],[e]:t})}removeSlice(e){delete this.sliceLabelColorMap[e]}clear(){this.sliceLabelColorMap={}}getSharedLabels(){const e=new Set,t=new Set;return Object.keys(this.sliceLabelColorMap).forEach((n=>{const a=this.sliceLabelColorMap[n];Object.keys(a).forEach((n=>{e.has(n)&&!t.has(n)?t.add(n):e.add(n)}))})),[...t]}}const l=(0,i.Z)(s)},86041:(e,t,n)=>{function a(e){return String(e).trim()}n.d(t,{Z:()=>a})},25130:(e,t,n)=>{n.d(t,{Qg:()=>r,Gh:()=>s,Zf:()=>l});var a=n(17621),o=n.n(a);const i=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/;function r(e,t=186){let n=0,a=0,o=0;if(e.length>7){const t=i.exec(e);if(!t)throw new Error(`Invalid color: ${e}`);n=parseInt(t[1],10),a=parseInt(t[2],10),o=parseInt(t[3],10)}else{let t=e;if(t.startsWith("#")&&(t=t.substring(1)),3===t.length&&(t=[t[0],t[0],t[1],t[1],t[2],t[2]].join("")),6!==t.length)throw new Error(`Invalid color: ${e}`);n=parseInt(t.slice(0,2),16),a=parseInt(t.slice(2,4),16),o=parseInt(t.slice(4,6),16)}return.299*n+.587*a+.114*o>t?"#000":"#FFF"}function s(e,t){const n=[],a=e.map((e=>o()(e).analogous(t+3).slice(3)));for(;null!=(i=a[a.length-1])&&i.length;){var i;a.forEach((e=>{const t=e.shift();n.push(t.toHexString())}))}return n}function l(e,t){if(t>1||t<0)throw new Error(`The opacity should between 0 and 1, but got: ${t}`);return`${e}${`0${Math.round(255*t).toString(16).toUpperCase()}`.slice(-2)}`}},68122:(e,t,n)=>{n.d(t,{o:()=>a,M:()=>o});const a=250,o=500},81847:(e,t,n)=>{n.d(t,{vO:()=>i,YW:()=>r,mc:()=>s});const a={},o=e=>`__superset__/${e}`;async function i(e,t){const n=o(e);if(!window[n]&&!a[e]){const o=t();a[e]=o,window[n]=await o}return a[e]}async function r(e){return Promise.all(Object.entries(e).map((([e,t])=>i(e,t))))}function s(){Object.keys(a).forEach((e=>{delete window[o(e)],delete a[e]}))}},62363:(e,t,n)=>{var a,o;n.d(t,{su:()=>a,pF:()=>o,ZP:()=>i}),function(e){e.Mean="mean",e.Sum="sum",e.Std="std",e.Cumsum="cumsum"}(a||(a={})),function(e){e.Values="values",e.Difference="difference",e.Percentage="percentage",e.Ratio="ratio"}(o||(o={}));const i={}},10916:(e,t,n)=>{var a,o;function i(e){return e.type===a.NATIVE_FILTER}function r(e){return e.type===a.DIVIDER}n.d(t,{BE:()=>a,gT:()=>o,kI:()=>i,nY:()=>r,ZP:()=>s}),function(e){e.NATIVE_FILTER="NATIVE_FILTER",e.DIVIDER="DIVIDER"}(a||(a={})),function(e){e.NativeFilters="nativeFilters",e.CrossFilters="crossFilters"}(o||(o={}));const s={}},88889:(e,t,n)=>{var a;n.d(t,{Z:()=>a,C:()=>o}),function(e){e[e.NUMERIC=0]="NUMERIC",e[e.STRING=1]="STRING",e[e.TEMPORAL=2]="TEMPORAL",e[e.BOOLEAN=3]="BOOLEAN"}(a||(a={}));const o={}},1111:(e,t,n)=>{function a(e,t){return e===t||!e&&!t||!!(e&&t&&e.length===t.length&&e.every(((e,n)=>e===t[n])))}n.d(t,{Z:()=>a})},75294:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(61988);function o(e){return!(!e||!Number.isNaN(Number(e))&&parseInt(e,10)===Number(e))&&(0,a.t)("is expected to be an integer")}},99298:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(61988);function o(e){return!(!e||!Number.isNaN(Number(e)))&&(0,a.t)("is expected to be a number")}},95826:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(61988);function o(e){return!!(null==e||""===e||Array.isArray(e)&&0===e.length)&&(0,a.t)("cannot be empty")}},872:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(61988);function o(e){return!("string"==typeof e&&e.trim().length>0&&Number.isFinite(Number(e.trim()))||"number"==typeof e&&Number.isFinite(e))&&(0,a.t)("is expected to be a number")}},37863:(e,t,n)=>{n.d(t,{u:()=>c,Z:()=>d});var a=n(61988),o=n(63389),i=n(50810),r=n(10331),s=n(44814),l=n(52256);const c={id:0,chartAlert:null,chartStatus:"loading",chartStackTrace:null,chartUpdateEndTime:null,chartUpdateStartTime:0,latestQueryFormData:{},sliceFormData:null,queryController:null,queriesResponse:null,triggerQuery:!0,lastRendered:0};function d(e={},t){const n={[l.ADD_CHART]:()=>({...c,...t.chart}),[l.CHART_UPDATE_SUCCEEDED]:e=>({...e,chartStatus:"success",chartAlert:null,queriesResponse:t.queriesResponse,chartUpdateEndTime:(0,s.zO)()}),[l.CHART_UPDATE_STARTED]:e=>({...e,chartStatus:"loading",chartStackTrace:null,chartAlert:null,chartUpdateEndTime:null,chartUpdateStartTime:(0,s.zO)(),queryController:t.queryController}),[l.CHART_UPDATE_STOPPED]:e=>({...e,chartStatus:"stopped",chartAlert:(0,a.t)("Updating chart was stopped"),chartUpdateEndTime:(0,s.zO)()}),[l.CHART_RENDERING_SUCCEEDED]:e=>({...e,chartStatus:"rendered",chartUpdateEndTime:(0,s.zO)()}),[l.CHART_RENDERING_FAILED]:e=>({...e,chartStatus:"failed",chartStackTrace:t.stackTrace,chartAlert:(0,a.t)("An error occurred while rendering the visualization: %s",t.error)}),[l.CHART_UPDATE_FAILED](e){var n,o,i,r;return{...e,chartStatus:"failed",chartAlert:t.queriesResponse?null==(n=t.queriesResponse)||null==(o=n[0])?void 0:o.error:(0,a.t)("Network error."),chartUpdateEndTime:(0,s.zO)(),queriesResponse:t.queriesResponse,chartStackTrace:t.queriesResponse?null==(i=t.queriesResponse)||null==(r=i[0])?void 0:r.stacktrace:null}},[l.DYNAMIC_PLUGIN_CONTROLS_READY]:e=>({...e,sliceFormData:(0,r.Hu)(t.controlsState)}),[l.TRIGGER_QUERY]:e=>({...e,triggerQuery:t.value,chartStatus:"loading"}),[l.RENDER_TRIGGERED]:e=>({...e,lastRendered:t.value}),[l.UPDATE_QUERY_FORM_DATA]:e=>({...e,latestQueryFormData:t.value}),[l.ANNOTATION_QUERY_STARTED](e){e.annotationQuery&&e.annotationQuery[t.annotation.name]&&e.annotationQuery[t.annotation.name].abort();const n={...e.annotationQuery,[t.annotation.name]:t.queryController};return{...e,annotationQuery:n}},[l.ANNOTATION_QUERY_SUCCESS](e){const n={...e.annotationData,[t.annotation.name]:t.queryResponse.data},a={...e.annotationError};delete a[t.annotation.name];const o={...e.annotationQuery};return delete o[t.annotation.name],{...e,annotationData:n,annotationError:a,annotationQuery:o}},[l.ANNOTATION_QUERY_FAILED](e){const n={...e.annotationData};delete n[t.annotation.name];const o={...e.annotationError,[t.annotation.name]:t.queryResponse?t.queryResponse.error:(0,a.t)("Network error.")},i={...e.annotationQuery};return delete i[t.annotation.name],{...e,annotationData:n,annotationError:o,annotationQuery:i}}};if(t.type===l.REMOVE_CHART)return delete e[t.key],e;if(t.type===l.UPDATE_CHART_ID){const{newId:n,key:a}=t;return e[n]={...e[a],id:n},delete e[a],e}return t.type===o.$?{...t.data.charts}:t.type===i.Rn.SET_DATASOURCES?Object.fromEntries(Object.entries(e).map((([e,t])=>[e,"failed"===t.chartStatus&&t.chartStackTrace?{...t,chartStatus:"",chartStackTrace:null,chartAlert:null}:t]))):t.type in n?{...e,[t.key]:n[t.type](e[t.key])}:e}},13842:(e,t,n)=>{n.d(t,{lU:()=>i,dc:()=>r,zq:()=>s}),n(67294);var a=n(51995),o=n(11965);const i=()=>{const e=(0,a.Fg)();return(0,o.tZ)("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,o.tZ)("path",{d:"M16 0H2C0.89 0 0 0.9 0 2V16C0 17.1 0.89 18 2 18H16C17.11 18 18 17.1 18 16V2C18 0.9 17.11 0 16 0Z",fill:e.colors.primary.base}),(0,o.tZ)("path",{d:"M7 14L2 9L3.41 7.59L7 11.17L14.59 3.58L16 5L7 14Z",fill:"white"}))},r=()=>{const e=(0,a.Fg)();return(0,o.tZ)("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,o.tZ)("path",{d:"M16 0H2C0.9 0 0 0.9 0 2V16C0 17.1 0.9 18 2 18H16C17.1 18 18 17.1 18 16V2C18 0.9 17.1 0 16 0Z",fill:e.colors.grayscale.light1}),(0,o.tZ)("path",{d:"M14 10H4V8H14V10Z",fill:"white"}))},s=()=>{const e=(0,a.Fg)();return(0,o.tZ)("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,o.tZ)("path",{d:"M16 0H2C0.9 0 0 0.9 0 2V16C0 17.1 0.9 18 2 18H16C17.1 18 18 17.1 18 16V2C18 0.9 17.1 0 16 0Z",fill:e.colors.grayscale.light2}),(0,o.tZ)("path",{d:"M16 2V16H2V2H16V2Z",fill:"white"}))}},87253:(e,t,n)=>{n.d(t,{lU:()=>s.lU,zq:()=>s.zq,ZP:()=>r}),n(67294);var a=n(51995),o=n(11965);const i=a.iK.span` &, & svg { vertical-align: top; } `;function r({checked:e,onChange:t,style:n}){return(0,o.tZ)(i,{style:n,onClick:()=>{t(!e)},role:"checkbox",tabIndex:0,"aria-checked":e,"aria-label":"Checkbox"},e?(0,o.tZ)(s.lU,null):(0,o.tZ)(s.zq,null))}var s=n(13842)},77775:(e,t,n)=>{n.d(t,{Q:()=>x,W:()=>M});var a=n(67294),o=n(29487),i=n(61988),r=n(51995),s=n(31069),l=n(76962),c=n(74069),d=n(35932),u=n(34858),p=n(12515),h=n(27600),m=n(98286),g=n(38703),f=n(9875),v=n(52389),b=n(14114),y=n(34581),_=n(11965);const C=(0,i.t)("Warning! Changing the dataset may break the chart if the metadata does not exist."),Z=(0,i.t)("Changing the dataset may break the chart if the chart relies on columns or metadata that does not exist in the target dataset"),E=(0,r.iK)(c.Z)` .ant-modal-body { display: flex; flex-direction: column; } `,T=r.iK.div` .btn-container { display: flex; justify-content: flex-end; padding: 0px 15px; margin: 10px 0 0 0; } .confirm-modal-container { margin: 9px; } `,S=r.iK.span` cursor: pointer; color: ${({theme:e})=>e.colors.primary.dark1}; &: hover { color: ${({theme:e})=>e.colors.primary.dark2}; } `,x=(0,b.ZP)((({addDangerToast:e,addSuccessToast:t,onChange:n,onDatasourceSave:r,onHide:c,show:b})=>{const[x,w]=(0,a.useState)(void 0),[A,R]=(0,a.useState)(0),[D,L]=(0,a.useState)(v.dY),[O,M]=(0,a.useState)(!1),[I,k]=(0,a.useState)(),N=(0,a.useRef)(null),{state:{loading:P,resourceCollection:F,resourceCount:$},fetchData:U}=(0,u.Yi)("dataset",(0,i.t)("dataset"),e),V=(0,a.useCallback)((e=>{M(!0),k(e)}),[]),q={pageIndex:A,pageSize:v.IV,filters:[],sortBy:D};(0,p.bX)((()=>{U({...q,...x&&{filters:[{id:"table_name",operator:"ct",value:x}]}})}),h.M$,[x,A,D]),(0,a.useEffect)((()=>{b&&(async()=>{setTimeout((()=>{var e;return null==N||null==(e=N.current)?void 0:e.focus()}),200)})()}),[e,U,n,r,c,V,b]);const z=[{Cell:({row:{original:e}})=>(0,_.tZ)(S,{role:"button",tabIndex:0,onClick:()=>V({type:"table",...e})},null==e?void 0:e.table_name),Header:(0,i.t)("Name"),accessor:"table_name"},{Header:(0,i.t)("Type"),accessor:"kind",disableSortBy:!0},{Header:(0,i.t)("Schema"),accessor:"schema"},{Header:(0,i.t)("Connection"),accessor:"database.database_name",disableSortBy:!0},{Cell:({row:{original:{owners:e=[]}}})=>(0,_.tZ)(y.Z,{users:e}),Header:(0,i.t)("Owners"),id:"owners",disableSortBy:!0}];return(0,_.tZ)(E,{show:b,onHide:c,responsive:!0,title:(0,i.t)("Change dataset"),width:O?"432px":"",height:O?"auto":"540px",hideFooter:!O,footer:(0,_.tZ)(a.Fragment,null,O&&(0,_.tZ)(T,null,(0,_.tZ)("div",{className:"btn-container"},(0,_.tZ)(d.Z,{onClick:()=>{M(!1)}},"Cancel"),(0,_.tZ)(d.Z,{className:"proceed-btn",buttonStyle:"primary",onClick:()=>{s.Z.get({endpoint:`/datasource/get/${null==I?void 0:I.type}/${null==I?void 0:I.id}/`}).then((({json:e})=>{r(e),n(`${null==I?void 0:I.id}__table`)})).catch((t=>{(0,m.O)(t).then((({error:t,message:n})=>{const a=t?t.error||t.statusText||t:n;e(a)}))})),c(),t("Successfully changed dataset!")}},"Proceed"))))},(0,_.tZ)(a.Fragment,null,!O&&(0,_.tZ)(a.Fragment,null,(0,_.tZ)(o.Z,{roomBelow:!0,type:"warning",css:e=>({marginBottom:4*e.gridUnit}),message:(0,_.tZ)(a.Fragment,null,(0,_.tZ)("strong",null,(0,i.t)("Warning!"))," ",Z)}),(0,_.tZ)(f.II,{ref:N,type:"text",value:x,placeholder:(0,i.t)("Search / Filter"),onChange:e=>{var t;const n=null!=(t=e.target.value)?t:"";w(n),R(0)}}),P&&(0,_.tZ)(g.Z,null),!P&&(0,_.tZ)(l.Z,{columns:z,data:F,pageSize:v.IV,initialPageIndex:A,initialSortBy:D,totalCount:$,onServerPagination:e=>{R(e.pageIndex),e.sortBy&&L(e.sortBy.length>0?e.sortBy:v.dY)},className:"table-condensed",emptyWrapperType:l.u.Small,serverPagination:!0,isPaginationSticky:!0,scrollTable:!0})),O&&(0,_.tZ)(a.Fragment,null,C)))}));var w=n(67913),A=n(91877),R=n(93185);const D=(0,w.Z)((()=>Promise.all([n.e(1216),n.e(4593),n.e(1862)]).then(n.bind(n,1862)))),L=(0,r.iK)(c.Z)` .modal-content { height: 900px; display: flex; flex-direction: column; align-items: stretch; } .modal-header { flex: 0 1 auto; } .modal-body { flex: 1 1 auto; overflow: auto; } .modal-footer { flex: 0 1 auto; } `;function O(e){const t=null!=e&&e.certified_by||null!=e&&e.certification_details?{certified_by:null==e?void 0:e.certified_by,details:null==e?void 0:e.certification_details}:void 0;return JSON.stringify({certification:t,warning_markdown:null==e?void 0:e.warning_markdown})}const M=(0,b.ZP)((({addSuccessToast:e,datasource:t,onDatasourceSave:n,onHide:r,show:l})=>{const[u,p]=(0,a.useState)(t),[h,g]=(0,a.useState)([]),[f,v]=(0,a.useState)(!1),[b,y]=(0,a.useState)(!1),C=(0,a.useRef)(null),[Z,E]=c.Z.useModal(),T=()=>{var t,a,o,l;const c=(null==(t=u.tableSelector)?void 0:t.schema)||(null==(a=u.databaseSelector)?void 0:a.schema)||u.schema;v(!0),s.Z.post({endpoint:"/datasource/save/",postPayload:{data:{...u,schema:c,metrics:null==u||null==(o=u.metrics)?void 0:o.map((e=>({...e,extra:O(e)}))),columns:null==u||null==(l=u.columns)?void 0:l.map((e=>({...e,extra:O(e)}))),type:u.type||u.datasource_type,owners:u.owners.map((e=>e.value||e.id))}}}).then((({json:t})=>{e((0,i.t)("The dataset has been saved")),n({...t,owners:u.owners}),r()})).catch((e=>{v(!1),(0,m.O)(e).then((({error:e})=>{Z.error({title:"Error",content:e||(0,i.t)("An error has occurred"),okButtonProps:{danger:!0,className:"btn-danger"}})}))}))},S=!(0,A.cr)(R.T.DISABLE_LEGACY_DATASOURCE_EDITOR);return(0,_.tZ)(L,{show:l,onHide:r,title:(0,_.tZ)("span",null,(0,i.t)("Edit Dataset "),(0,_.tZ)("strong",null,u.table_name)),maskClosable:!b,footer:(0,_.tZ)(a.Fragment,null,S&&(0,_.tZ)(d.Z,{buttonSize:"small",buttonStyle:"default",className:"m-r-5",onClick:()=>{window.location.href=u.edit_url||u.url}},(0,i.t)("Use legacy datasource editor")),(0,_.tZ)(d.Z,{buttonSize:"small",className:"m-r-5",onClick:r},(0,i.t)("Cancel")),(0,_.tZ)(d.Z,{buttonSize:"small",buttonStyle:"primary",onClick:()=>{C.current=Z.confirm({title:(0,i.t)("Confirm save"),content:(0,_.tZ)("div",null,(0,_.tZ)(o.Z,{css:e=>({marginTop:4*e.gridUnit,marginBottom:4*e.gridUnit}),type:"warning",showIcon:!0,message:(0,i.t)("The dataset configuration exposed here\n affects all the charts using this dataset.\n Be mindful that changing settings\n here may affect other charts\n in undesirable ways.")}),(0,i.t)("Are you sure you want to save and apply changes?")),onOk:T,icon:null})},disabled:f||h.length>0||u.is_managed_externally,tooltip:u.is_managed_externally?(0,i.t)("This dataset is managed externally, and can't be edited in Superset"):""},(0,i.t)("Save"))),responsive:!0},(0,_.tZ)(D,{showLoadingForImport:!0,height:500,datasource:u,onChange:(e,t)=>{p({...e,metrics:null==e?void 0:e.metrics.map((e=>({...e,is_certified:(null==e?void 0:e.certified_by)||(null==e?void 0:e.certification_details)})))}),g(t)},setIsEditing:y}),E)}))},62276:(e,t,n)=>{n.d(t,{S:()=>r,M:()=>s});var a=n(11448),o=n(51995);const i=a.Z.RangePicker,r=(0,o.iK)(i)` border-radius: ${({theme:e})=>e.gridUnit}px; `,s=a.Z},14278:(e,t,n)=>{n.d(t,{Zn:()=>g,gp:()=>f,EM:()=>C});var a=n(14176),o=n.n(a),i=n(67294),r=n(11064),s=n(22102),l=n(81847),c=n(68492),d=n(91877),u=n(93185),p=n(11965);const h=(0,r.Z)(),m={loading:!0,dynamicPlugins:{},keys:[],mountedPluginMetadata:{},fetchAll:()=>{}},g=i.createContext(m),f=()=>(0,i.useContext)(g);function v(){return{keys:h.keys(),mountedPluginMetadata:o()(h.getMap(),(e=>void 0===e))}}function b(e,t){switch(t.type){case"begin":{const n={...e.dynamicPlugins};return t.keys.forEach((e=>{n[e]={key:e,error:null,mounting:!0}})),{...e,loading:t.keys.length>0,dynamicPlugins:n}}case"complete":return{...e,loading:Object.values(e.dynamicPlugins).some((e=>e.mounting&&e.key!==t.key)),dynamicPlugins:{...e.dynamicPlugins,[t.key]:{key:t.key,mounting:!1,error:t.error}}};case"changed keys":return{...e,...v()};default:return e}}const y=(0,s.Z)({method:"GET",endpoint:"/dynamic-plugins/api/read"}),_={react:()=>Promise.resolve().then(n.t.bind(n,67294,19)),lodash:()=>n.e(6486).then(n.t.bind(n,96486,23)),"react-dom":()=>Promise.resolve().then(n.t.bind(n,90731,19)),"@superset-ui/chart-controls":()=>n.e(5289).then(n.bind(n,75289)),"@superset-ui/core":()=>Promise.all([n.e(1216),n.e(2087),n.e(2671),n.e(6377),n.e(5175),n.e(8274),n.e(7502)]).then(n.bind(n,41340))},C=({children:e})=>{const[t,n]=(0,i.useReducer)(b,m,(e=>({...e,...v(),fetchAll:a,loading:(0,d.cr)(u.T.DYNAMIC_PLUGINS)})));async function a(){try{await(0,l.YW)(_);const{result:e}=await y({});n({type:"begin",keys:e.map((e=>e.key))}),await Promise.all(e.map((async e=>{let t=null;try{await import(e.bundle_url)}catch(n){c.Z.error(`Failed to load plugin ${e.key} with the following error:`,n.stack),t=n}n({type:"complete",key:e.key,error:t})})))}catch(e){c.Z.error("Failed to load dynamic plugins",e.stack||e)}}return(0,i.useEffect)((()=>{(0,d.cr)(u.T.DYNAMIC_PLUGINS)&&a();const e=()=>{n({type:"changed keys"})};return h.addListener(e),()=>{h.removeListener(e)}}),[]),(0,p.tZ)(g.Provider,{value:t},e)}},34581:(e,t,n)=>{n.d(t,{Z:()=>m}),n(67294);var a=n(81545),o=n(51995),i=n(58593),r=n(4715);var s,l,c=n(11965);const d=null!=(s=null==(l=(0,a.Z)().get())?void 0:l.colors)?s:[],u=e=>`\n width: ${6*e.gridUnit}px;\n height: ${6*e.gridUnit}px;\n line-height: ${6*e.gridUnit}px;\n font-size: ${e.typography.sizes.m}px;\n`,p=(0,o.iK)(r.qE)` ${({theme:e})=>u(e)} `,h=(0,o.iK)(r.qE.Group)` .ant-avatar { ${({theme:e})=>u(e)} } `;function m({users:e,maxCount:t=4}){return(0,c.tZ)(h,{maxCount:t},e.map((({first_name:e,last_name:t,id:n})=>{var a,o;const r=`${e} ${t}`,s=function(e,t){return e?t[function(e,t){const n=[...e].map((e=>e.charCodeAt(0))),a=n.length,o=a%(t-1)+1,i=n.reduce(((e,t)=>e+t))%t;let r=n[0]%t;return[...new Array(a)].forEach((()=>{r=(o*r+i)%t})),r}(e,t.length)]:"transparent"}(`${n}-${e}-${t}`,d);return(0,c.tZ)(i.u,{key:r,title:r,placement:"top"},(0,c.tZ)(p,{key:r,style:{backgroundColor:s,borderColor:s}},e&&(null==(a=e[0])?void 0:a.toLocaleUpperCase()),t&&(null==(o=t[0])?void 0:o.toLocaleUpperCase())))})))}},76697:(e,t,n)=>{n.d(t,{ZP:()=>a});const a=n(19181).Z},83734:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(11965),o=(n(67294),n(51995)),i=n(58593),r=n(70163);function s({title:e,isSelected:t,children:n,onSelect:s,info:l}){const c=(0,o.Fg)();return(0,a.tZ)("div",{css:(0,a.iv)({paddingBottom:2*c.gridUnit,opacity:t?1:c.opacity.mediumHeavy},"","")},(0,a.tZ)("div",{role:"button",tabIndex:0,onClick:s,css:(0,a.iv)({display:"flex",alignItems:"center",cursor:s?"pointer":"default"},"","")},(0,a.tZ)("strong",null,e),l&&(0,a.tZ)(i.u,{title:l,css:(0,a.iv)({marginLeft:c.gridUnit},"","")},(0,a.tZ)(r.Z.InfoSolidSmall,{role:"img",width:14,height:14,iconColor:c.colors.grayscale.light1})),(0,a.tZ)(r.Z.Check,{role:"img",iconColor:t?c.colors.primary.base:c.colors.grayscale.base})),(0,a.tZ)("div",{css:(0,a.iv)({marginLeft:c.gridUnit,marginTop:c.gridUnit},"","")},n))}},41295:(e,t,n)=>{n.d(t,{$A:()=>s,fO:()=>l,a8:()=>c,t$:()=>d,Aw:()=>u});var a=n(47037),o=n.n(a),i=n(28062),r=n(22102);const s="DASHBOARD_INFO_UPDATED";function l(e,t){const n=i.getNamespace(null==e?void 0:e.color_namespace),a=o()(t)?JSON.parse(t):t;Object.keys(a).forEach((e=>{n.setColor(e,a[e])}))}function c(e){const{metadata:t}=e;return i.getNamespace(null==t?void 0:t.color_namespace).resetColors(),null!=t&&t.shared_label_colors&&l(t,null==t?void 0:t.shared_label_colors),null!=t&&t.label_colors&&l(t,null==t?void 0:t.label_colors),{type:s,newInfo:e}}const d="SET_CHART_CONFIG_COMPLETE",u=e=>async(t,n)=>{t({type:"SET_CHART_CONFIG_BEGIN",chartConfiguration:e});const{id:a,metadata:o}=n().dashboardInfo,i=(0,r.Z)({method:"PUT",endpoint:`/api/v1/dashboard/${a}`});try{const n=await i({json_metadata:JSON.stringify({...o,chart_configuration:e})});t(c({metadata:JSON.parse(n.result.json_metadata)})),t({type:d,chartConfiguration:e})}catch(n){t({type:"SET_CHART_CONFIG_FAIL",chartConfiguration:e})}}},50810:(e,t,n)=>{n.d(t,{Rn:()=>a,Fy:()=>i,QR:()=>s});var a,o=n(31069);function i(e){return{type:a.SET_DATASOURCES,datasources:e}}function r(e,t){return{type:a.SET_DATASOURCE,key:t,datasource:e}}function s(e){return(t,n)=>{const{datasources:a}=n(),i=a[e];return i?t(r(i,e)):o.Z.get({endpoint:`/superset/fetch_datasource_metadata?datasourceKey=${e}`}).then((({json:n})=>t(r(n,e))))}}!function(e){e.SET_DATASOURCES="SET_DATASOURCES",e.SET_DATASOURCE="SET_DATASOURCE"}(a||(a={}))},52794:(e,t,n)=>{n.d(t,{qe:()=>r,kN:()=>s,Zp:()=>l,RY:()=>c,xk:()=>d,pi:()=>u,xQ:()=>p,ql:()=>h,$l:()=>m,X8:()=>g,T6:()=>f,$7:()=>v,Up:()=>b});var a=n(22102),o=n(74599),i=n(41295);const r="SET_FILTER_CONFIG_COMPLETE",s="SET_IN_SCOPE_STATUS_OF_FILTERS",l="SET_FILTER_SETS_COMPLETE",c=e=>async(t,n)=>{var s;t({type:"SET_FILTER_CONFIG_BEGIN",filterConfig:e});const{id:l,metadata:c}=n().dashboardInfo,d=null==(s=n().nativeFilters)?void 0:s.filters,u=(0,a.Z)({method:"PUT",endpoint:`/api/v1/dashboard/${l}`}),p=e.map((e=>{const t=d[e.id];return t?{...t,...e}:e}));try{const e=await u({json_metadata:JSON.stringify({...c,native_filter_configuration:p})});t((0,i.a8)({metadata:JSON.parse(e.result.json_metadata)})),t({type:r,filterConfig:p}),t((0,o.Ft)(p,d))}catch(e){t({type:"SET_FILTER_CONFIG_FAIL",filterConfig:p}),t({type:o.u3,filterConfig:p})}},d=e=>async(t,n)=>{var a;const o=null==(a=n().nativeFilters)?void 0:a.filters,r=e.map((e=>({...o[e.filterId],chartsInScope:e.chartsInScope,tabsInScope:e.tabsInScope})));t({type:s,filterConfig:r});const{metadata:l}=n().dashboardInfo,c=l.native_filter_configuration.map((e=>{const t=r.find((t=>t.id===e.id));return t?{...t,...e}:e}));l.native_filter_configuration=c,t((0,i.a8)({metadata:l}))},u=e=>async t=>{const n=(0,a.Z)({method:"GET",endpoint:`/api/v1/dashboard/${e}/filtersets`});t({type:"SET_FILTER_SETS_BEGIN"});const o=await n(null);t({type:l,filterSets:o.ids.map(((e,t)=>({...o.result[t].params,id:e,name:o.result[t].name})))})},p=e=>async(t,n)=>{const o=n().dashboardInfo.id,i=(0,a.Z)({method:"POST",endpoint:`/api/v1/dashboard/${o}/filtersets`});t({type:"CREATE_FILTER_SET_BEGIN"});const r={...e};delete r.name,await i({name:e.name,owner_type:"Dashboard",owner_id:o,json_metadata:JSON.stringify(r)}),t({type:"CREATE_FILTER_SET_COMPLETE"}),t(u(o))},h=e=>async(t,n)=>{const o=n().dashboardInfo.id,i=(0,a.Z)({method:"PUT",endpoint:`/api/v1/dashboard/${o}/filtersets/${e.id}`});t({type:"UPDATE_FILTER_SET_BEGIN"});const r={...e};delete r.id,delete r.name,await i({name:e.name,json_metadata:JSON.stringify(r)}),t({type:"UPDATE_FILTER_SET_COMPLETE"}),t(u(o))},m=e=>async(t,n)=>{const o=n().dashboardInfo.id,i=(0,a.Z)({method:"DELETE",endpoint:`/api/v1/dashboard/${o}/filtersets/${e}`});t({type:"DELETE_FILTER_SET_BEGIN"}),await i({}),t({type:"DELETE_FILTER_SET_COMPLETE"}),t(u(o))},g="SET_FOCUSED_NATIVE_FILTER",f="UNSET_FOCUSED_NATIVE_FILTER";function v(e){return{type:g,id:e}}function b(){return{type:f}}},92242:(e,t,n)=>{n.d(t,{uh:()=>c,G$:()=>d,GA:()=>u,EJ:()=>p,rW:()=>h,Ky:()=>m,W6:()=>g,QN:()=>f});var a=n(14670),o=n.n(a),i=n(8868),r=n(68492),s=n(10916),l=n(80621);const c=(e,t,n=[])=>{if(n.includes(t))return!0;const a=e.get(t);return!!a&&a.some((a=>c(e,a,[...n,t])))},d=async(e,t,n)=>{try{let t;try{t=await e.validateFields()}catch(e){var a;if(null!=e&&null!=(a=e.errorFields)&&a.length||null==e||!e.outOfDate)throw e;t=e.values}return t}catch(e){if(r.Z.warn("Filter configuration failed:",e),!e.errorFields||!e.errorFields.length)return null;const a=e.errorFields;if(!a.some((e=>e.name[1]===t))){const e=a.find((e=>"filters"===e.name[0]));e&&n(e.name[1])}return null}},u=(e,t,n,a,o)=>async()=>{const r=t.filter((e=>!n[e])).map((t=>{var n,a,r,c;const d=null==(n=o.filters)?void 0:n[t];if(!d)return e[t];if(d.type===s.BE.DIVIDER)return{id:t,type:s.BE.DIVIDER,scope:{rootPath:[l._4],excluded:[]},title:d.title,description:d.description};const u={};return d.dataset&&(u.datasetId=d.dataset.value),d.dataset&&d.column&&(u.column={name:d.column}),{id:t,adhoc_filters:d.adhoc_filters,time_range:d.time_range,controlValues:null!=(a=d.controlValues)?a:{},granularity_sqla:d.granularity_sqla,requiredFirst:Object.values(null!=(r=d.requiredFirst)?r:{}).find((e=>e)),name:d.name,filterType:d.filterType,targets:[u],defaultDataMask:null!=(c=d.defaultDataMask)?c:(0,i.H)(),cascadeParentIds:d.dependencies||[],scope:d.scope,sortMetric:d.sortMetric,type:d.type,description:(d.description||"").trim()}}));await a(r)},p=(e,t,n)=>a=>{const o=window.setTimeout((()=>{(n=>{e((e=>({...e,[n]:{isPending:!1}}))),t((e=>e.filter((e=>e!==n))))})(a)}),5e3);e((e=>({...e,[a]:{isPending:!0,timerId:o}}))),n(!1)},h="NATIVE_FILTER-",m="NATIVE_FILTER_DIVIDER-",g=e=>`${e===s.BE.NATIVE_FILTER?h:m}${o().generate()}`,f=e=>e.map((e=>e.id))},1510:(e,t,n)=>{n.d(t,{zi:()=>d,on:()=>u,vk:()=>p,X3:()=>h,Rz:()=>f});var a=n(5364),o=n(16355),i=n(93185),r=n(70400),s=n(91877),l=n(81255),c=n(80621);const d=({datasetId:e,dependencies:t={},groupby:n,defaultDataMask:a,controlValues:o,filterType:i,sortMetric:s,adhoc_filters:l,time_range:c,granularity_sqla:d,type:u})=>{var p;const h={};return e&&(h.datasource=`${e}__table`),n&&(h.groupby=[n]),s&&(h.sortMetric=s),{...o,...h,adhoc_filters:null!=l?l:[],extra_filters:[],extra_form_data:t,granularity_sqla:d,metrics:["count"],row_limit:1e3,showSearch:!0,defaultValue:null==a||null==(p=a.filterState)?void 0:p.value,time_range:c,url_params:(0,r.Z)("regular"),inView:!0,viz_type:i,type:u}};function u(e={},t={}){const n={};return a.Ci.forEach((a=>{const o=[...e[a]||[],...t[a]||[]];o.length&&(n[a]=o)})),a.Ay.forEach((a=>{const o=e[a];void 0!==o&&(n[a]=o);const i=t[a];void 0!==i&&(n[a]=i)})),n}function p(e,t,n){let a={};return n.forEach((t=>{var n,o;a=u(a,null!=(n=null==(o=e[t])?void 0:o.extraFormData)?n:{})})),a}function h(e){return!e.includes(o.cg.NATIVE_FILTER)||(0,s.cr)(i.T.DASHBOARD_FILTERS_EXPERIMENTAL)&&(0,s.cr)(i.T.DASHBOARD_CROSS_FILTERS)&&e.includes(o.cg.INTERACTIVE_CHART)}const m=(e,t)=>e[t].type===l.gn,g=(e,t,n,a,o)=>{e[n].type===l.dW&&t.includes(e[n].meta.chartId)&&a.forEach(o.add,o),0===e[n].children.length||m(e,n)&&o.has(n)||e[n].children.forEach((n=>g(e,t,n,m(e,n)?[...a,n]:a,o)))},f=(e,t)=>{const n=e[c._4].children[0],a=n!==c.PV,o=new Set;var i;return a?null==(i=e[n].children)||i.forEach((n=>g(e,t,n,[n],o))):Object.values(e).filter((e=>e.type===l.gn)).forEach((n=>g(e,t,n.id,[n.id],o))),o}},39759:(e,t,n)=>{n.d(t,{a:()=>i,Z:()=>r});var a=n(52794),o=n(63389);function i({filterSetsConfig:e,filterConfig:t,state:n}){const a={},o={};var i;if(t?(t.forEach((e=>{const{id:t}=e;o[t]=e})),a.filters=o):a.filters=null!=(i=null==n?void 0:n.filters)?i:{},e){const t={};e.forEach((e=>{const{id:n}=e;t[n]=e})),a.filterSets=t}else{var r;a.filterSets=null!=(r=null==n?void 0:n.filterSets)?r:{}}return a.focusedFilterId=void 0,a}function r(e={filters:{},filterSets:{}},t){switch(t.type){case o.$:return{filters:t.data.nativeFilters.filters,filterSets:t.data.nativeFilters.filterSets};case a.qe:case a.kN:return i({filterConfig:t.filterConfig,state:e});case a.Zp:return i({filterSetsConfig:t.filterSets,state:e});case a.X8:return{...e,focusedFilterId:t.id};case a.T6:return{...e,focusedFilterId:void 0};default:return e}}},81255:(e,t,n)=>{n.d(t,{dW:()=>a,BA:()=>o,Vl:()=>i,BG:()=>r,U0:()=>s,hE:()=>l,Nc:()=>c,xh:()=>d,F0:()=>u,Os:()=>p,yR:()=>h,gn:()=>m,t:()=>g,ZP:()=>f});const a="CHART",o="COLUMN",i="HEADER",r="GRID",s="ROOT",l="DIVIDER",c="HEADER",d="MARKDOWN",u="NEW_COMPONENT_SOURCE",p="ROW",h="TABS",m="TAB",g="DYNAMIC",f={CHART_TYPE:a,COLUMN_TYPE:o,DASHBOARD_HEADER_TYPE:i,DASHBOARD_GRID_TYPE:r,DASHBOARD_ROOT_TYPE:s,DIVIDER_TYPE:l,HEADER_TYPE:c,MARKDOWN_TYPE:d,NEW_COMPONENT_SOURCE_TYPE:u,ROW_TYPE:p,TABS_TYPE:h,TAB_TYPE:m,DYNAMIC_TYPE:g}},70400:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(17563);const o=new Set(["standalone","edit"]);function i(e){const t=a.parse(window.location.search);return Object.entries(t).reduce(((t,[n,a])=>"regular"===e&&o.has(n)||"reserved"===e&&!o.has(n)?t:Array.isArray(a)?{...t,[n]:a[0]}:{...t,[n]:a}),{})}},70695:(e,t,n)=>{n.d(t,{ZP:()=>r,i5:()=>s,Ms:()=>l});var a=n(30845),o=n(5558);const i=(0,a.Z)(((e,t,n)=>!!n&&Object.values(n).some((n=>n.some((([n,a])=>n===e&&a===t)))))),r=i,s=e=>(0,o.A)(e)&&Object.keys(e.roles||{}).some((e=>"admin"===e.toLowerCase())),l=(e,t)=>(0,o.A)(t)&&(s(t)||((e,t)=>(0,o.A)(t)&&e.owners.some((e=>e.username===t.username)))(e,t))&&i("can_write","Dashboard",t.roles)},20194:(e,t,n)=>{function a({chartId:e,column:t}){return`${e}_${t}`}n.d(t,{w:()=>a,_:()=>i});const o=/^([0-9]+)_(.*)$/;function i(e){const t=o.exec(e);if(!t)throw new Error("Cannot parse invalid filter key");return{chartId:parseInt(t[1],10),column:t[2]}}},56967:(e,t,n)=>{function a(){return(window.location.hash||"#").substring(1)}n.d(t,{Z:()=>a})},74599:(e,t,n)=>{n.d(t,{Ch:()=>r,A:()=>s,mO:()=>l,u3:()=>c,Ft:()=>d,eG:()=>u,ze:()=>p,sh:()=>h});var a=n(91877),o=n(93185),i=n(8868);const r="CLEAR_DATA_MASK_STATE",s="UPDATE_DATA_MASK",l="SET_DATA_MASK_FOR_FILTER_CONFIG_COMPLETE",c="SET_DATA_MASK_FOR_FILTER_CONFIG_FAIL";function d(e,t){return{type:l,filterConfig:e,filters:t}}function u(e,t){const n=(0,a.cr)(o.T.DASHBOARD_NATIVE_FILTERS)||(0,a.cr)(o.T.DASHBOARD_CROSS_FILTERS);return{type:s,filterId:e,dataMask:n?t:{}}}function p(e){return u(e,(0,i.H)(e))}function h(){return{type:r}}},8868:(e,t,n)=>{n.d(t,{H:()=>d,Z:()=>p});var a=n(18172),o=n(93185),i=n(92242),r=n(63389),s=n(91877),l=n(74599),c=n(99543);function d(e,t={}){let n={};return e&&(n={id:e}),{...n,extraFormData:{},filterState:{},ownState:{},...t}}function u(e,t,n,a,o){e.forEach((e=>{var n;const i=a||{};t[e.id]={...d(e.id),...e.defaultDataMask,...i[e.id]},o&&!(0,c.JB)(e.defaultDataMask,null==(n=o[e.id])?void 0:n.defaultDataMask,{ignoreUndefined:!0})&&(t[e.id]={...t[e.id],...e.defaultDataMask})})),Object.values(n).forEach((e=>{String(null==e?void 0:e.id).startsWith(i.rW)||(t[null==e?void 0:e.id]=e)}))}const p=(0,a.ZP)(((e,t)=>{var n,a,i,c;const p={};switch(t.type){case l.Ch:return p;case l.A:return e[t.filterId]={...d(t.filterId),...e[t.filterId],...t.dataMask},e;case r.$:var h,m;return(0,s.cr)(o.T.DASHBOARD_CROSS_FILTERS)&&Object.keys(null==(h=t.data.dashboardInfo)||null==(m=h.metadata)?void 0:m.chart_configuration).forEach((e=>{p[e]={...d(e)}})),u(null!=(n=null==(a=t.data.dashboardInfo)||null==(i=a.metadata)?void 0:i.native_filter_configuration)?n:[],p,e,t.data.dataMask),p;case l.mO:return u(null!=(c=t.filterConfig)?c:[],p,e,t.filters),p;default:return e}}),{})},41030:(e,t,n)=>{n.d(t,{Z:()=>ya});var a=n(5872),o=n.n(a),i=n(18446),r=n.n(i),s=n(67294),l=n(51995),c=n(60812),d=n(57902),u=n(356),p=n(45697),h=n.n(p),m=n(4715),g=n(37703),f=n(61988),v=n(68135),b=n(9882),y=n(67913),_=n(12515),C=n(52256),Z=n(11965);function E(e){const{selectable:t,children:n,...a}=e,i=(0,l.Fg)(),r={"&.ant-list-item":{padding:`${i.gridUnit+2}px ${3*i.gridUnit}px`,":first-of-type":{borderTopLeftRadius:i.gridUnit,borderTopRightRadius:i.gridUnit},":last-of-type":{borderBottomLeftRadius:i.gridUnit,borderBottomRightRadius:i.gridUnit}}};return t&&(r["&:hover"]={cursor:"pointer",backgroundColor:i.colors.grayscale.light4}),(0,Z.tZ)(m.aV.Item,o()({},a,{css:r}),n)}var T=n(27845);const S=(0,y.Z)((()=>Promise.all([n.e(2087),n.e(5094)]).then(n.bind(n,25094))),(()=>(0,Z.tZ)("div",{style:{width:450,height:368}}))),x={colorScheme:h().string.isRequired,annotationError:h().object,annotationQuery:h().object,vizType:h().string,validationErrors:h().array,name:h().string.isRequired,actions:h().object,value:h().arrayOf(h().object),onChange:h().func,refreshAnnotationData:h().func};class w extends s.PureComponent{constructor(e){super(e),this.state={popoverVisible:{},addedAnnotationIndex:null},this.addAnnotationLayer=this.addAnnotationLayer.bind(this),this.removeAnnotationLayer=this.removeAnnotationLayer.bind(this),this.handleVisibleChange=this.handleVisibleChange.bind(this)}componentDidMount(){S.preload()}UNSAFE_componentWillReceiveProps(e){const{name:t,annotationError:n,validationErrors:a,value:o}=e;Object.keys(n).length&&!a.length&&this.props.actions.setControlValue(t,o,Object.keys(n)),!Object.keys(n).length&&a.length&&this.props.actions.setControlValue(t,o,[])}addAnnotationLayer(e,t){let n=this.props.value;n.includes(e)?n=n.map((n=>n===e?t:n)):(n=[...n,t],this.setState({addedAnnotationIndex:n.length-1})),this.props.refreshAnnotationData({annotation:t,force:!0}),this.props.onChange(n)}handleVisibleChange(e,t){this.setState((n=>({popoverVisible:{...n.popoverVisible,[t]:e}})))}removeAnnotationLayer(e){const t=this.props.value.filter((t=>t!==e));this.props.onChange(t)}renderPopover(e,t,n){const a=(null==t?void 0:t.name)||"_new";return(0,Z.tZ)("div",{id:`annotation-pop-${a}`},(0,Z.tZ)(S,o()({},t,{error:n,colorScheme:this.props.colorScheme,vizType:this.props.vizType,addAnnotationLayer:e=>this.addAnnotationLayer(t,e),removeAnnotationLayer:()=>this.removeAnnotationLayer(t),close:()=>{this.handleVisibleChange(!1,e),this.setState({addedAnnotationIndex:null})}})))}renderInfo(e){const{annotationError:t,annotationQuery:n,theme:a}=this.props;return n[e.name]?(0,Z.tZ)("i",{className:"fa fa-refresh",style:{color:a.colors.primary.base},"aria-hidden":!0}):t[e.name]?(0,Z.tZ)(b.V,{label:"validation-errors",bsStyle:"danger",tooltip:t[e.name]}):e.show?"":(0,Z.tZ)("span",{style:{color:a.colors.error.base}}," Hidden ")}render(){const{addedAnnotationIndex:e}=this.state,t=this.props.value[e],n=this.props.value.map(((e,t)=>(0,Z.tZ)(T.Z,{key:t,trigger:"click",title:(0,f.t)("Edit annotation layer"),css:e=>({"&:hover":{cursor:"pointer",backgroundColor:e.colors.grayscale.light4}}),content:this.renderPopover(t,e,this.props.annotationError[e.name]),visible:this.state.popoverVisible[t],onVisibleChange:e=>this.handleVisibleChange(e,t)},(0,Z.tZ)(E,{selectable:!0},(0,Z.tZ)("span",null,e.name),(0,Z.tZ)("span",{style:{float:"right"}},this.renderInfo(e))))));return(0,Z.tZ)("div",null,(0,Z.tZ)(m.aV,{bordered:!0,css:e=>({borderRadius:e.gridUnit})},n,(0,Z.tZ)(T.Z,{trigger:"click",content:this.renderPopover("add",t),title:(0,f.t)("Add annotation layer"),visible:this.state.popoverVisible.add,destroyTooltipOnHide:!0,onVisibleChange:e=>this.handleVisibleChange(e,"add")},(0,Z.tZ)(E,{selectable:!0},(0,Z.tZ)("i",{className:"fa fa-plus"})," ","  ",(0,f.t)("Add annotation layer")))))}}w.propTypes=x,w.defaultProps={vizType:"",value:[],annotationError:{},annotationQuery:{},onChange:()=>{}};const A=(0,v.b)(w),R=(0,g.$j)((function({charts:e,explore:t}){var n,a;const o=e[(0,_.Jp)(t)]||e[0]||{};return{colorScheme:null==(n=t.controls)||null==(a=n.color_scheme)?void 0:a.value,annotationError:o.annotationError,annotationQuery:o.annotationQuery,vizType:t.controls.viz_type.value}}),(function(e){return{refreshAnnotationData:t=>e((0,C.runAnnotationQuery)(t))}}))(A);var D=n(23279),L=n.n(D),O=n(9875),M=n(82342);const I=l.iK.div` display: flex; `,k=(0,l.iK)(O.Rn)` flex: 1; margin-right: ${({theme:e})=>e.gridUnit}px; `,N=(0,l.iK)(O.Rn)` flex: 1; margin-left: ${({theme:e})=>e.gridUnit}px; `,P=e=>null===e||Number.isNaN(Number(e))?null:Number(e);function F({onChange:e=(()=>{}),value:t=[null,null],...n}){const[a,o]=(0,s.useState)([P(t[0]),P(t[1])]),i=t[0],r=t[1],l=(0,s.useRef)(L()(e,300)).current,c=e=>{o(e),l([void 0===e[0]?null:e[0],void 0===e[1]?null:e[1]])};return(0,s.useEffect)((()=>{o([P(i),P(r)])}),[i,r]),(0,Z.tZ)("div",null,(0,Z.tZ)(M.Z,n),(0,Z.tZ)(I,null,(0,Z.tZ)(k,{placeholder:(0,f.t)("Min"),onChange:e=>{c([P(e),a[1]])},value:null===a[0]?void 0:a[0]}),(0,Z.tZ)(N,{placeholder:(0,f.t)("Max"),onChange:e=>{c([a[0],P(e)])},value:null===a[1]?void 0:a[1]})))}var $=n(79069),U=n(14670),V=n.n(U),q=n(95742),z=n(70163),H=n(33334);const j={name:h().string.isRequired,label:h().string,description:h().string,placeholder:h().string,addTooltip:h().string,itemGenerator:h().func,keyAccessor:h().func,onChange:h().func,value:h().oneOfType([h().array]),isFloat:h().bool,isInt:h().bool,controlName:h().string.isRequired},B={label:null,description:null,onChange:()=>{},placeholder:(0,f.t)("Empty collection"),itemGenerator:()=>({key:V().generate()}),keyAccessor:e=>e.key,value:[],addTooltip:(0,f.t)("Add an item")},G=(0,q.W8)(E),W=(0,q.JN)(m.aV),K=(0,q.W6)((()=>(0,Z.tZ)("i",{role:"img","aria-label":"drag",className:"fa fa-bars text-primary",style:{cursor:"ns-resize"}})));var Q={name:"11g6mpt",styles:"justify-content:flex-start"};class Y extends s.Component{constructor(e){super(e),this.onAdd=this.onAdd.bind(this)}onChange(e,t){const n=[...this.props.value];n[e]={...this.props.value[e],...t},this.props.onChange(n)}onAdd(){this.props.onChange(this.props.value.concat([this.props.itemGenerator()]))}onSortEnd({oldIndex:e,newIndex:t}){this.props.onChange((0,q.Rp)(this.props.value,e,t))}removeItem(e){this.props.onChange(this.props.value.filter(((t,n)=>e!==n)))}renderList(){if(0===this.props.value.length)return(0,Z.tZ)("div",{className:"text-muted"},this.props.placeholder);const e=va[this.props.controlName];return(0,Z.tZ)(W,{useDragHandle:!0,lockAxis:"y",onSortEnd:this.onSortEnd.bind(this),bordered:!0,css:e=>({borderRadius:e.gridUnit})},this.props.value.map(((t,n)=>{const{label:a,...i}=this.props;return(0,Z.tZ)(G,{className:"clearfix",css:Q,key:this.props.keyAccessor(t),index:n},(0,Z.tZ)(K,null),(0,Z.tZ)("div",{css:e=>({flex:1,marginLeft:2*e.gridUnit,marginRight:2*e.gridUnit})},(0,Z.tZ)(e,o()({},i,t,{onChange:this.onChange.bind(this,n)}))),(0,Z.tZ)(b.V,{icon:"times",label:"remove-item",tooltip:(0,f.t)("Remove item"),bsStyle:"primary",onClick:this.removeItem.bind(this,n)}))})))}render(){const{theme:e}=this.props;return(0,Z.tZ)("div",{className:"CollectionControl"},(0,Z.tZ)(H.gM,null,(0,Z.tZ)(M.Z,this.props),(0,Z.tZ)(H.IG,{onClick:this.onAdd},(0,Z.tZ)(z.Z.PlusLarge,{iconSize:"s",iconColor:e.colors.grayscale.light5}))),this.renderList())}}Y.propTypes=j,Y.defaultProps=B;const X=(0,v.b)(Y);var J=n(24198),ee=n(81545),te=n(76697);const ne={onChange:h().func,value:h().object},ae={position:"absolute",width:"50px",height:"20px",top:"0px",left:"0px",right:"0px",bottom:"0px"},oe=l.iK.div` ${({theme:e})=>`\n width: 50px;\n height: 20px;\n position: relative;\n padding: ${e.gridUnit}px;\n borderRadius: ${e.borderRadius}px;\n display: inline-block;\n cursor: pointer;\n `} `,ie={color:{...ae,borderRadius:"2px"},checkboard:{...ae,background:'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==") left center'}};class re extends s.Component{constructor(e){super(e),this.onChange=this.onChange.bind(this)}onChange(e){this.props.onChange(e.rgb)}renderPopover(){const e=(0,ee.Z)().get().colors.filter(((e,t)=>t<7));return(0,Z.tZ)("div",{id:"filter-popover",className:"color-popover"},(0,Z.tZ)(J.xS,{color:this.props.value,onChange:this.onChange,presetColors:e}))}render(){const e=this.props.value||{r:0,g:0,b:0,a:0},t={...ie.color,background:`rgba(${e.r}, ${e.g}, ${e.b}, ${e.a})`};return(0,Z.tZ)("div",null,(0,Z.tZ)(M.Z,this.props),(0,Z.tZ)(te.ZP,{trigger:"click",placement:"right",content:this.renderPopover()},(0,Z.tZ)(oe,null,(0,Z.tZ)("div",{style:ie.checkboard}),(0,Z.tZ)("div",{style:t}))))}}re.propTypes=ne,re.defaultProps={onChange:()=>{}};var se=n(95470),le=n(31069),ce=n(46078),de=n(23525),ue=n(83862),pe=n(58593),he=n(77775),me=n(35932),ge=n(91178),fe=n(86057),ve=n(27600),be=n(70695),ye=n(41331),_e=n(9679);const Ce={actions:h().object.isRequired,onChange:h().func,value:h().string,datasource:h().object.isRequired,form_data:h().object.isRequired,isEditable:h().bool,onDatasourceSave:h().func},Ze=l.iK.div` .data-container { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid ${({theme:e})=>e.colors.grayscale.light2}; padding: ${({theme:e})=>4*e.gridUnit}px; padding-right: ${({theme:e})=>2*e.gridUnit}px; } .error-alert { margin: ${({theme:e})=>2*e.gridUnit}px; } .ant-dropdown-trigger { margin-left: ${({theme:e})=>2*e.gridUnit}px; box-shadow: none; &:active { box-shadow: none; } } .btn-group .open .dropdown-toggle { box-shadow: none; &.button-default { background: none; } } i.angle { color: ${({theme:e})=>e.colors.primary.base}; } svg.datasource-modal-trigger { color: ${({theme:e})=>e.colors.primary.base}; cursor: pointer; } .title-select { flex: 1 1 100%; display: inline-block; background-color: ${({theme:e})=>e.colors.grayscale.light3}; padding: ${({theme:e})=>2*e.gridUnit}px; border-radius: ${({theme:e})=>e.borderRadius}px; text-align: center; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } .dataset-svg { margin-right: ${({theme:e})=>2*e.gridUnit}px; flex: none; } span[aria-label='dataset-physical'] { color: ${({theme:e})=>e.colors.grayscale.base}; } span[aria-label='more-vert'] { color: ${({theme:e})=>e.colors.primary.base}; } `,Ee="change_dataset",Te="view_in_sql_lab",Se="edit_dataset",xe="query_preview",we="save_as_dataset";class Ae extends s.PureComponent{constructor(e){super(e),this.state={showEditDatasourceModal:!1,showChangeDatasourceModal:!1},this.onDatasourceSave=this.onDatasourceSave.bind(this),this.toggleChangeDatasourceModal=this.toggleChangeDatasourceModal.bind(this),this.toggleEditDatasourceModal=this.toggleEditDatasourceModal.bind(this),this.toggleShowDatasource=this.toggleShowDatasource.bind(this),this.handleMenuItemClick=this.handleMenuItemClick.bind(this),this.toggleSaveDatasetModal=this.toggleSaveDatasetModal.bind(this)}onDatasourceSave(e){var t,n;this.props.actions.setDatasource(e);const a=null==(t=this.props.form_data)?void 0:t.granularity_sqla,{columns:o}=this.props.datasource,i=o.find((e=>e.is_dttm));"table"!==e.type||null!=(n=o.find((({column_name:e})=>e===a)))&&n.is_dttm||this.props.actions.setControlValue("granularity_sqla",i?i.column_name:null),this.props.onDatasourceSave&&this.props.onDatasourceSave(e)}toggleShowDatasource(){this.setState((({showDatasource:e})=>({showDatasource:!e})))}toggleChangeDatasourceModal(){this.setState((({showChangeDatasourceModal:e})=>({showChangeDatasourceModal:!e})))}toggleEditDatasourceModal(){this.setState((({showEditDatasourceModal:e})=>({showEditDatasourceModal:!e})))}toggleSaveDatasetModal(){this.setState((({showSaveDatasetModal:e})=>({showSaveDatasetModal:!e})))}handleMenuItemClick({key:e}){switch(e){case Ee:this.toggleChangeDatasourceModal();break;case Se:this.toggleEditDatasourceModal();break;case Te:{const{datasource:e}=this.props,t={datasourceKey:`${e.id}__${e.type}`,sql:e.sql};le.Z.postForm("/superset/sqllab/",{form_data:(0,_e.o)(t)})}break;case xe:break;case we:this.toggleSaveDatasetModal()}}render(){var e;const{showChangeDatasourceModal:t,showEditDatasourceModal:n,showSaveDatasetModal:a}=this.state,{datasource:o,onChange:i,theme:r}=this.props,l=null==o.id;let c=!1;if(l){const e=(0,de.eY)(ve.KD.datasourceId),t=(0,de.eY)(ve.KD.sliceId);e||t||(c=!0)}const d="table"===o.type,{user:u}=this.props,p=o.owners.map((e=>e.id||e.value)).includes(u.userId);(0,be.i5)(u);const h=(0,f.t)("Edit dataset"),g=(0,Z.tZ)(ue.v,{onClick:this.handleMenuItemClick},this.props.isEditable&&(0,Z.tZ)(ue.v.Item,{key:Se,disabled:!p},p?h:(0,Z.tZ)(pe.u,{title:(0,f.t)("You must be a dataset owner in order to edit. Please reach out to a dataset owner to request modifications or edit access.")},h)),(0,Z.tZ)(ue.v.Item,{key:Ee},(0,f.t)("Change dataset")),d&&(0,Z.tZ)(ue.v.Item,{key:Te},(0,f.t)("View in SQL Lab"))),v=(0,Z.tZ)(ue.v,{onClick:this.handleMenuItemClick},(0,Z.tZ)(ue.v.Item,{key:xe},(0,f.t)("Query preview")),(0,Z.tZ)(ue.v.Item,{key:Te},(0,f.t)("View in SQL Lab")),(0,Z.tZ)(ue.v.Item,{key:we},(0,f.t)("Save as dataset"))),{health_check_message:b}=o;let y={};if(null!=o&&o.extra)try{y=JSON.parse(null==o?void 0:o.extra)}catch{}return(0,Z.tZ)(Ze,{className:"DatasourceControl"},(0,Z.tZ)("div",{className:"data-container"},(0,Z.tZ)(z.Z.DatasetPhysical,{className:"dataset-svg"}),!l&&o.name.length>25?(0,Z.tZ)(pe.u,{title:o.name},(0,Z.tZ)("span",{className:"title-select"},o.name)):(0,Z.tZ)("span",{title:o.name,className:"title-select"},o.name),b&&(0,Z.tZ)(pe.u,{title:b},(0,Z.tZ)(z.Z.AlertSolid,{iconColor:r.colors.warning.base})),(null==(e=y)?void 0:e.warning_markdown)&&(0,Z.tZ)(fe.Z,{warningMarkdown:y.warning_markdown}),(0,Z.tZ)(m.Gj,{overlay:o.type===ce.i9.Query?v:g,trigger:["click"]},(0,Z.tZ)(pe.u,{title:(0,f.t)("More dataset related options")},(0,Z.tZ)(z.Z.MoreVert,{className:"datasource-modal-trigger"})))),l&&c&&(0,Z.tZ)("div",{className:"error-alert"},(0,Z.tZ)(ge.Z,{level:"warning",title:(0,f.t)("Missing URL parameters"),source:"explore",subtitle:(0,Z.tZ)(s.Fragment,null,(0,Z.tZ)("p",null,(0,f.t)("The URL is missing the dataset_id or slice_id parameters.")))})),l&&!c&&(0,Z.tZ)("div",{className:"error-alert"},(0,Z.tZ)(ge.Z,{level:"warning",title:(0,f.t)("Missing dataset"),source:"explore",subtitle:(0,Z.tZ)(s.Fragment,null,(0,Z.tZ)("p",null,(0,f.t)("The dataset linked to this chart may have been deleted.")),(0,Z.tZ)("p",null,(0,Z.tZ)(me.Z,{buttonStyle:"primary",onClick:()=>this.handleMenuItemClick({key:Ee})},(0,f.t)("Change dataset"))))})),n&&(0,Z.tZ)(he.W,{datasource:o,show:n,onDatasourceSave:this.onDatasourceSave,onHide:this.toggleEditDatasourceModal}),t&&(0,Z.tZ)(he.Q,{onDatasourceSave:this.onDatasourceSave,onHide:this.toggleChangeDatasourceModal,show:t,onChange:i}),a&&(0,Z.tZ)(ye.W,{visible:a,onHide:this.toggleSaveDatasetModal,buttonTextOnSave:(0,f.t)("Save & Explore"),buttonTextOnOverwrite:(0,f.t)("Overwrite & Explore"),modalDescription:(0,f.t)("Save this query as a virtual dataset to continue exploring"),datasource:o}))}}Ae.propTypes=Ce,Ae.defaultProps={onChange:()=>{},onDatasourceSave:null,value:null,isEditable:!0};const Re=(0,v.b)(Ae);var De=n(73375),Le=n(37921),Oe=n(43700),Me=n(79684),Ie=n(55786),ke=n(34087),Ne=n(42753),Pe=n(19113),Fe=n(27130);const $e=l.iK.span` display: inline-block; padding: 2px 0; `,Ue=(0,l.iK)(O.II)` border-radius: ${({theme:e})=>e.borderRadius}; height: 26px; padding-left: ${({theme:e})=>2.5*e.gridUnit}px; `,Ve=({title:e,isEditDisabled:t,onChange:n})=>{const[a,o]=(0,s.useState)(!1),[i,r]=(0,s.useState)(!1),l=(0,f.t)("My metric"),c=(0,s.useCallback)((()=>o(!0)),[]),d=(0,s.useCallback)((()=>o(!1)),[]),u=(0,s.useCallback)((()=>r(!0)),[]),p=(0,s.useCallback)((()=>r(!1)),[]),h=(0,s.useCallback)((e=>{"Enter"===e.key&&(e.preventDefault(),p())}),[p]),m=(0,s.useCallback)((e=>{""===e.target.value&&n(e),p()}),[n,p]);return t?(0,Z.tZ)("span",null,(null==e?void 0:e.label)||l):i?(0,Z.tZ)(Ue,{type:"text",placeholder:null==e?void 0:e.label,value:null!=e&&e.hasCustomLabel?e.label:"",autoFocus:!0,onChange:n,onBlur:m,onKeyPress:h}):(0,Z.tZ)(pe.u,{placement:"top",title:"Click to edit label"},(0,Z.tZ)("span",{className:"AdhocMetricEditPopoverTitle inline-editable",onMouseOver:c,onMouseOut:d,onClick:u,onBlur:p,role:"button",tabIndex:0},(0,Z.tZ)($e,null,(null==e?void 0:e.label)||l)," ",(0,Z.tZ)("i",{className:"fa fa-pencil",style:{color:a?"black":"grey"}})))};var qe=n(63325),ze=n(71262),He=n(94301),je=n(49238),Be=n(94670),Ge=n(33313),We=n(54076),Ke=n(69856),Qe=n(99963);const Ye={onChange:h().func.isRequired,onClose:h().func.isRequired,onResize:h().func.isRequired,getCurrentTab:h().func,getCurrentLabel:h().func,adhocMetric:h().instanceOf(Pe.Z).isRequired,columns:h().arrayOf(ke.Z),savedMetricsOptions:h().arrayOf(Fe.Z),savedMetric:Fe.Z,datasource:h().object},Xe={columns:[],getCurrentTab:We.EI},Je=(0,l.iK)(m.Ph)` .metric-option { & > svg { min-width: ${({theme:e})=>4*e.gridUnit+"px"}; } & > .option-label { overflow: hidden; text-overflow: ellipsis; } } `,et="SAVED";class tt extends s.PureComponent{constructor(e){super(e),this.defaultActiveTabKey=(this.props.savedMetric.metric_name||this.props.adhocMetric.isNew)&&Array.isArray(this.props.savedMetricsOptions)&&this.props.savedMetricsOptions.length>0?et:this.props.adhocMetric.expressionType,this.onSave=this.onSave.bind(this),this.onResetStateAndClose=this.onResetStateAndClose.bind(this),this.onColumnChange=this.onColumnChange.bind(this),this.onAggregateChange=this.onAggregateChange.bind(this),this.onSavedMetricChange=this.onSavedMetricChange.bind(this),this.onSqlExpressionChange=this.onSqlExpressionChange.bind(this),this.onDragDown=this.onDragDown.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onTabChange=this.onTabChange.bind(this),this.handleAceEditorRef=this.handleAceEditorRef.bind(this),this.refreshAceEditor=this.refreshAceEditor.bind(this),this.state={adhocMetric:this.props.adhocMetric,savedMetric:this.props.savedMetric,width:Ke.kc,height:Ke.H7},document.addEventListener("mouseup",this.onMouseUp)}componentDidMount(){this.props.getCurrentTab(this.defaultActiveTabKey)}componentDidUpdate(e,t){var n,a,o,i,r,s,l,c,d,u,p,h,m;(null==(n=t.adhocMetric)?void 0:n.sqlExpression)===(null==(a=this.state.adhocMetric)?void 0:a.sqlExpression)&&(null==(o=t.adhocMetric)?void 0:o.aggregate)===(null==(i=this.state.adhocMetric)?void 0:i.aggregate)&&(null==(r=t.adhocMetric)||null==(s=r.column)?void 0:s.column_name)===(null==(l=this.state.adhocMetric)||null==(c=l.column)?void 0:c.column_name)&&(null==(d=t.savedMetric)?void 0:d.metric_name)===(null==(u=this.state.savedMetric)?void 0:u.metric_name)||this.props.getCurrentLabel({savedMetricLabel:(null==(p=this.state.savedMetric)?void 0:p.verbose_name)||(null==(h=this.state.savedMetric)?void 0:h.metric_name),adhocMetricLabel:null==(m=this.state.adhocMetric)?void 0:m.getDefaultLabel()})}componentWillUnmount(){document.removeEventListener("mouseup",this.onMouseUp),document.removeEventListener("mousemove",this.onMouseMove)}onSave(){var e;const{adhocMetric:t,savedMetric:n}=this.state,a=null!=n&&n.metric_name?n:t,o=null!=(e=this.props.savedMetric)&&e.metric_name?this.props.savedMetric:this.props.adhocMetric;this.props.onChange({...a},o),this.props.onClose()}onResetStateAndClose(){this.setState({adhocMetric:this.props.adhocMetric,savedMetric:this.props.savedMetric},this.props.onClose)}onColumnChange(e){const t=this.props.columns.find((t=>t.column_name===e));this.setState((e=>({adhocMetric:e.adhocMetric.duplicateWith({column:t,expressionType:Pe.v.SIMPLE}),savedMetric:void 0})))}onAggregateChange(e){this.setState((t=>({adhocMetric:t.adhocMetric.duplicateWith({aggregate:e,expressionType:Pe.v.SIMPLE}),savedMetric:void 0})))}onSavedMetricChange(e){const t=this.props.savedMetricsOptions.find((t=>t.metric_name===e));this.setState((e=>({savedMetric:t,adhocMetric:e.adhocMetric.duplicateWith({column:void 0,aggregate:void 0,sqlExpression:void 0,expressionType:Pe.v.SIMPLE})})))}onSqlExpressionChange(e){this.setState((t=>({adhocMetric:t.adhocMetric.duplicateWith({sqlExpression:e,expressionType:Pe.v.SQL}),savedMetric:void 0})))}onDragDown(e){this.dragStartX=e.clientX,this.dragStartY=e.clientY,this.dragStartWidth=this.state.width,this.dragStartHeight=this.state.height,document.addEventListener("mousemove",this.onMouseMove)}onMouseMove(e){this.props.onResize(),this.setState({width:Math.max(this.dragStartWidth+(e.clientX-this.dragStartX),Ke.kc),height:Math.max(this.dragStartHeight+2*(e.clientY-this.dragStartY),Ke.H7)})}onMouseUp(){document.removeEventListener("mousemove",this.onMouseMove)}onTabChange(e){this.refreshAceEditor(),this.props.getCurrentTab(e)}handleAceEditorRef(e){e&&(this.aceEditorRef=e)}refreshAceEditor(){setTimeout((()=>{this.aceEditorRef&&this.aceEditorRef.editor.resize()}),0)}renderColumnOption(e){const t={...e};return t.metric_name&&!t.verbose_name&&(t.verbose_name=t.metric_name),(0,Z.tZ)(Qe.l,{column:t,showType:!0})}renderMetricOption(e){return(0,Z.tZ)(Qe.B,{metric:e,showType:!0})}render(){var e,t,n,a,i;const{adhocMetric:r,savedMetric:s,columns:l,savedMetricsOptions:c,onChange:d,onClose:u,onResize:p,datasource:h,...g}=this.props,{adhocMetric:v,savedMetric:b}=this.state,y=Ge.Z.concat(l.map((e=>({name:e.column_name,value:e.column_name,score:50,meta:"column"})))),_=v.column&&v.column.column_name||v.inferSqlExpressionColumn(),C={ariaLabel:(0,f.t)("Select column"),placeholder:(0,f.t)("%s column(s)",l.length),value:_,onChange:this.onColumnChange,allowClear:!0,autoFocus:!_},E={ariaLabel:(0,f.t)("Select aggregate options"),placeholder:(0,f.t)("%s aggregates(s)",Ke.Ps.length),value:v.aggregate||v.inferSqlExpressionAggregate(),onChange:this.onAggregateChange,allowClear:!0,autoFocus:!!_},T={ariaLabel:(0,f.t)("Select saved metrics"),placeholder:(0,f.t)("%s saved metric(s)",null!=(e=null==c?void 0:c.length)?e:0),value:null==b?void 0:b.metric_name,onChange:this.onSavedMetricChange,allowClear:!0,autoFocus:!0};"druid"===(null==(t=this.props.datasource)?void 0:t.type)&&E.options&&(E.options=E.options.filter((e=>"AVG"!==e)));const S=v.isValid()||(null==b?void 0:b.metric_name),x=!v.equals(r)||!(void 0===(null==b?void 0:b.metric_name)&&void 0===(null==s?void 0:s.metric_name))&&(null==b?void 0:b.metric_name)!==(null==s?void 0:s.metric_name);let w={};if(null!=h&&h.extra)try{w=JSON.parse(h.extra)}catch{}return(0,Z.tZ)(je.l0,o()({layout:"vertical",id:"metrics-edit-popover"},g),(0,Z.tZ)(ze.ZP,{id:"adhoc-metric-edit-tabs",defaultActiveKey:this.defaultActiveTabKey,className:"adhoc-metric-edit-tabs",style:{height:this.state.height,width:this.state.width},onChange:this.onTabChange,allowOverflow:!0},(0,Z.tZ)(ze.ZP.TabPane,{key:et,tab:(0,f.t)("Saved")},(0,Ie.Z)(c).length>0?(0,Z.tZ)(je.xJ,{label:(0,f.t)("Saved metric")},(0,Z.tZ)(Je,o()({options:(0,Ie.Z)(c).map((e=>({value:e.metric_name,label:e.metric_name,customLabel:this.renderMetricOption(e),key:e.id})))},T))):(0,Z.tZ)(He.Tc,{image:"empty.svg",title:(0,f.t)("No saved metrics found"),description:(0,f.t)('Add metrics to dataset in "Edit datasource" modal')})),(0,Z.tZ)(ze.ZP.TabPane,{key:Pe.v.SIMPLE,tab:w.disallow_adhoc_metrics?(0,Z.tZ)(pe.u,{title:(0,f.t)("Simple ad-hoc metrics are not enabled for this dataset")},(0,f.t)("Simple")):(0,f.t)("Simple"),disabled:w.disallow_adhoc_metrics},(0,Z.tZ)(je.xJ,{label:(0,f.t)("column")},(0,Z.tZ)(m.Ph,o()({options:l.map((e=>({value:e.column_name,label:e.verbose_name||e.column_name,key:e.id,customLabel:this.renderColumnOption(e)})))},C))),(0,Z.tZ)(je.xJ,{label:(0,f.t)("aggregate")},(0,Z.tZ)(m.Ph,o()({options:Ke.Ps.map((e=>({value:e,label:e,key:e})))},E)))),(0,Z.tZ)(ze.ZP.TabPane,{key:Pe.v.SQL,tab:w.disallow_adhoc_metrics||"druid"===(null==(n=this.props.datasource)?void 0:n.type)?(0,Z.tZ)(pe.u,{title:"druid"===(null==(a=this.props.datasource)?void 0:a.type)?(0,f.t)("Custom SQL ad-hoc metrics are not available for the native Druid connector"):(0,f.t)("Custom SQL ad-hoc metrics are not enabled for this dataset")},(0,f.t)("Custom SQL")):(0,f.t)("Custom SQL"),disabled:w.disallow_adhoc_metrics||"druid"===(null==(i=this.props.datasource)?void 0:i.type)},(0,Z.tZ)(Be.iO,{showLoadingForImport:!0,ref:this.handleAceEditorRef,keywords:y,height:this.state.height-80+"px",onChange:this.onSqlExpressionChange,width:"100%",showGutter:!1,value:v.sqlExpression||v.translateToSql({transformCountDistinct:!0}),editorProps:{$blockScrolling:!0},enableLiveAutocompletion:!0,className:"filter-sql-editor",wrapEnabled:!0}))),(0,Z.tZ)("div",null,(0,Z.tZ)(me.Z,{buttonSize:"small",onClick:this.onResetStateAndClose,cta:!0},(0,f.t)("Close")),(0,Z.tZ)(me.Z,{disabled:!S,buttonStyle:x&&S?"primary":"default",buttonSize:"small",onClick:this.onSave,cta:!0},(0,f.t)("Save")),(0,Z.tZ)("i",{role:"button","aria-label":"Resize",tabIndex:0,onMouseDown:this.onDragDown,className:"fa fa-expand edit-popover-resize text-muted"})))}}tt.propTypes=Ye,tt.defaultProps=Xe;class nt extends s.PureComponent{constructor(e){super(e),this.onPopoverResize=this.onPopoverResize.bind(this),this.onLabelChange=this.onLabelChange.bind(this),this.closePopover=this.closePopover.bind(this),this.togglePopover=this.togglePopover.bind(this),this.getCurrentTab=this.getCurrentTab.bind(this),this.getCurrentLabel=this.getCurrentLabel.bind(this),this.onChange=this.onChange.bind(this),this.state={adhocMetric:e.adhocMetric,popoverVisible:!1,title:{label:e.adhocMetric.label,hasCustomLabel:e.adhocMetric.hasCustomLabel},currentLabel:"",labelModified:!1,isTitleEditDisabled:!1}}static getDerivedStateFromProps(e,t){return t.adhocMetric.optionName!==e.adhocMetric.optionName?{adhocMetric:e.adhocMetric,title:{label:e.adhocMetric.label,hasCustomLabel:e.adhocMetric.hasCustomLabel},currentLabel:"",labelModified:!1}:{adhocMetric:e.adhocMetric}}onLabelChange(e){var t;const{verbose_name:n,metric_name:a}=this.props.savedMetric,o=null==(t=this.props.adhocMetric)?void 0:t.getDefaultLabel(),i=e.target.value;this.setState((e=>({title:{label:i||e.currentLabel||n||a||o,hasCustomLabel:!!i},labelModified:!0})))}onPopoverResize(){this.forceUpdate()}closePopover(){this.togglePopover(!1),this.setState({labelModified:!1})}togglePopover(e){this.setState({popoverVisible:e})}getCurrentTab(e){this.setState({isTitleEditDisabled:e===et})}getCurrentLabel({savedMetricLabel:e,adhocMetricLabel:t}){const n=e||t;this.setState({currentLabel:n,labelModified:!0}),!e&&this.state.title.hasCustomLabel||this.setState({title:{label:n,hasCustomLabel:!1}})}onChange(e,t){this.props.onMetricEdit({...e,...this.state.title},t)}render(){const{adhocMetric:e,savedMetric:t,columns:n,savedMetricsOptions:a,datasource:o,isControlledComponent:i}=this.props,{verbose_name:r,metric_name:s}=t,{hasCustomLabel:l,label:c}=e,d=l?c:e.getDefaultLabel(),u=this.state.labelModified?this.state.title:{label:r||s||d,hasCustomLabel:l},{visible:p,togglePopover:h,closePopover:m}=i?{visible:this.props.visible,togglePopover:this.props.togglePopover,closePopover:this.props.closePopover}:{visible:this.state.popoverVisible,togglePopover:this.togglePopover,closePopover:this.closePopover},g=(0,Z.tZ)(qe.b,null,(0,Z.tZ)(tt,{adhocMetric:e,columns:n,savedMetricsOptions:a,savedMetric:t,datasource:o,onResize:this.onPopoverResize,onClose:m,onChange:this.onChange,getCurrentTab:this.getCurrentTab,getCurrentLabel:this.getCurrentLabel})),f=(0,Z.tZ)(Ve,{title:u,onChange:this.onLabelChange,isEditDisabled:this.state.isTitleEditDisabled});return(0,Z.tZ)(T.Z,{placement:"right",trigger:"click",content:g,defaultVisible:p,visible:p,onVisibleChange:h,title:f,destroyTooltipOnHide:!0},this.props.children)}}const at=nt,ot={adhocMetric:h().instanceOf(Pe.Z),onMetricEdit:h().func.isRequired,onRemoveMetric:h().func,columns:h().arrayOf(ke.Z),savedMetricsOptions:h().arrayOf(Fe.Z),savedMetric:Fe.Z,datasource:h().object,onMoveLabel:h().func,onDropLabel:h().func,index:h().number,type:h().string,multi:h().bool};class it extends s.PureComponent{constructor(e){super(e),this.onRemoveMetric=this.onRemoveMetric.bind(this)}onRemoveMetric(e){e.stopPropagation(),this.props.onRemoveMetric(this.props.index)}render(){const{adhocMetric:e,onMetricEdit:t,columns:n,savedMetricsOptions:a,savedMetric:o,datasource:i,onMoveLabel:r,onDropLabel:s,index:l,type:c,multi:d}=this.props;return(0,Z.tZ)(at,{adhocMetric:e,onMetricEdit:t,columns:n,savedMetricsOptions:a,savedMetric:o,datasource:i},(0,Z.tZ)(H.yz,{savedMetric:o,adhocMetric:e,label:e.label,onRemove:this.onRemoveMetric,onMoveLabel:r,onDropLabel:s,index:l,type:null!=c?c:Ne.g.AdhocMetricOption,withCaret:!0,isFunction:!0,multi:d}))}}const rt=it;it.propTypes=ot;const st={option:h().oneOfType([h().object,h().string]).isRequired,index:h().number.isRequired,onMetricEdit:h().func,onRemoveMetric:h().func,onMoveLabel:h().func,onDropLabel:h().func,columns:h().arrayOf(ke.Z),savedMetrics:h().arrayOf(Fe.Z),savedMetricsOptions:h().arrayOf(Fe.Z),multi:h().bool,datasource:h().object};function lt({option:e,onMetricEdit:t,onRemoveMetric:n,columns:a,savedMetrics:o,savedMetricsOptions:i,datasource:r,onMoveLabel:s,onDropLabel:l,index:c,type:d,multi:u}){let p;var h;if("string"==typeof e?(h=e,p=o.find((e=>e.metric_name===h))):e.metric_name&&(p=e),e instanceof Pe.Z||p){var m;const o={onMetricEdit:t,onRemoveMetric:n,columns:a,savedMetricsOptions:i,datasource:r,adhocMetric:e instanceof Pe.Z?e:new Pe.Z({isNew:!0}),onMoveLabel:s,onDropLabel:l,index:c,savedMetric:null!=(m=p)?m:{},type:d,multi:u};return(0,Z.tZ)(rt,o)}return null}lt.propTypes=st;var ct=n(17536);const dt={name:h().string.isRequired,onChange:h().func,value:h().oneOfType([h().arrayOf(h().oneOfType([h().string,ct.Z])),h().oneOfType([h().string,ct.Z])]),columns:h().arrayOf(ke.Z),savedMetrics:h().arrayOf(Fe.Z),isLoading:h().bool,multi:h().bool,clearable:h().bool,datasource:h().object};function ut(e,t,n){var a;return null!=(a=null==e?void 0:e.filter((e=>Array.isArray(t)?!t.includes(e.metric_name)||e.metric_name===n:e)))?a:[]}function pt(e){return e&&!(e instanceof Pe.Z)&&e.expressionType}function ht(e){return e?Array.isArray(e)?e.map((e=>pt(e)?new Pe.Z(e):e)):pt(e)?[new Pe.Z(e)]:[e]:[]}const mt={metric_name:"",expression:""},gt=({onChange:e,multi:t,value:n,columns:a,savedMetrics:o,datasource:i,...d})=>{const[u,p]=(0,s.useState)(ht(n)),h=(0,l.Fg)(),m=(0,c.D)(a),g=(0,c.D)(o),v=(0,s.useCallback)((n=>{if(null===n)return void e(null);const a=(0,Ie.Z)(n).map((e=>e.metric_name?e.metric_name:e)).filter((e=>e));e(t?a:a[0])}),[t,e]),b=(0,s.useCallback)((e=>{const t=[...u,e];p(t),v(t)}),[v,u]),y=(0,s.useCallback)(((e,t)=>{const n=u.map((n=>n!==t.metric_name&&void 0===n.optionName||n.optionName!==t.optionName?n:e));p(n),v(n)}),[v,u]),_=(0,s.useCallback)((e=>{if(!Array.isArray(u))return;const t=[...u];t.splice(e,1),p(t),v(t)}),[v,u]),C=(0,s.useCallback)(((e,t)=>{const n=[...u];[n[t],n[e]]=[n[e],n[t]],p(n)}),[u]),E=(0,s.useCallback)((()=>!t&&u.length>0),[t,u.length]),T=(0,s.useMemo)((()=>ut(o,n,null)),[n,o]),S=(0,s.useMemo)((()=>new Pe.Z({isNew:!0})),[u]),x=(0,s.useCallback)((e=>E()?e:(0,Z.tZ)(at,{adhocMetric:S,onMetricEdit:b,columns:a,savedMetricsOptions:T,savedMetric:mt,datasource:i},e)),[a,i,E,S,b,T]);(0,s.useEffect)((()=>{if(n&&(!r()(m,a)||!r()(g,o))){const e=((e,t,n)=>(0,Ie.Z)(e).filter((e=>"string"==typeof e||e.metric_name?null==n?void 0:n.some((t=>t.metric_name===e||t.metric_name===e.metric_name)):null==t?void 0:t.some((t=>!e.column||e.column.column_name===t.column_name)))))(n,a,o);r()(e,n)||v(e)}}),[a,v,o]),(0,s.useEffect)((()=>{p(ht(n))}),[n]);const w=(0,s.useCallback)((()=>v(u)),[v,u]),A=(0,s.useCallback)(((e,n)=>(0,Z.tZ)(lt,{key:n,index:n,option:e,onMetricEdit:y,onRemoveMetric:_,columns:a,datasource:i,savedMetrics:o,savedMetricsOptions:ut(o,u,null==u?void 0:u[n]),onMoveLabel:C,onDropLabel:w,multi:t})),[a,i,C,t,w,y,_,o,u]);return(0,Z.tZ)("div",{className:"metrics-select"},(0,Z.tZ)(H.gM,null,(0,Z.tZ)(M.Z,d),x((0,Z.tZ)(H.IG,{disabled:E()},(0,Z.tZ)(z.Z.PlusLarge,{iconSize:"s",iconColor:h.colors.grayscale.light5})))),(0,Z.tZ)(H.yj,null,u.length>0?u.map(((e,t)=>A(e,t))):x((0,Z.tZ)(H.SW,null,(0,Z.tZ)(z.Z.PlusSmall,{iconColor:h.colors.grayscale.light1}),(0,f.t)("Add metric")))))};gt.propTypes=dt,gt.defaultProps={onChange:()=>{},clearable:!0,savedMetrics:[],columns:[]};const ft=gt;var vt=n(83734);const bt="fix",yt="metric",_t={onChange:h().func,value:h().object,isFloat:h().bool,datasource:h().object.isRequired,default:h().shape({type:h().oneOf(["fix","metric"]),value:h().oneOfType([h().string,h().number])})},Ct={onChange:()=>{},default:{type:bt,value:5}};class Zt extends s.Component{constructor(e){super(e),this.onChange=this.onChange.bind(this),this.setType=this.setType.bind(this),this.setFixedValue=this.setFixedValue.bind(this),this.setMetric=this.setMetric.bind(this);const t=(e.value?e.value.type:e.default.type)||bt,n=(e.value?e.value.value:e.default.value)||"100";this.state={type:t,fixedValue:t===bt?n:"",metricValue:t===yt?n:null}}onChange(){this.props.onChange({type:this.state.type,value:this.state.type===bt?this.state.fixedValue:this.state.metricValue})}setType(e){this.setState({type:e},this.onChange)}setFixedValue(e){this.setState({fixedValue:e},this.onChange)}setMetric(e){this.setState({metricValue:e},this.onChange)}render(){const e=(this.props.value||this.props.default).type||bt,t=this.props.datasource?this.props.datasource.columns:null,n=this.props.datasource?this.props.datasource.metrics:null;return(0,Z.tZ)("div",null,(0,Z.tZ)(M.Z,this.props),(0,Z.tZ)(Oe.Z,{ghost:!0,css:e=>(0,Z.iv)("&.ant-collapse>.ant-collapse-item.ant-collapse-no-arrow>.ant-collapse-header{border:0px;padding:0px 0px ",2*e.gridUnit,"px 0px;display:inline-block;}&.ant-collapse-ghost>.ant-collapse-item>.ant-collapse-content>.ant-collapse-content-box{padding:0px;& .well{margin-bottom:0px;padding:",2*e.gridUnit,"px;}}","")},(0,Z.tZ)(Oe.Z.Panel,{showArrow:!1,header:(0,Z.tZ)(Le.Z,{onClick:()=>{}},this.state.type===bt&&(0,Z.tZ)("span",null,this.state.fixedValue),this.state.type===yt&&(0,Z.tZ)("span",null,(0,Z.tZ)("span",null,"metric: "),(0,Z.tZ)("strong",null,this.state.metricValue?this.state.metricValue.label:null)))},(0,Z.tZ)("div",{className:"well"},(0,Z.tZ)(vt.Z,{title:(0,f.t)("Fixed"),isSelected:e===bt,onSelect:()=>{this.setType(bt)}},(0,Z.tZ)(Me.Z,{isFloat:!0,onChange:this.setFixedValue,onFocus:()=>{this.setType(bt)},value:this.state.fixedValue})),(0,Z.tZ)(vt.Z,{title:(0,f.t)("Based on a metric"),isSelected:e===yt,onSelect:()=>{this.setType(yt)}},(0,Z.tZ)(ft,{name:"metric",columns:t,savedMetrics:n,multi:!1,onFocus:()=>{this.setType(yt)},onChange:this.setMetric,value:this.state.metricValue,datasource:this.props.datasource}))))))}}Zt.propTypes=_t,Zt.defaultProps=Ct;var Et=n(14114),Tt=n(98286);function St(e){return void 0!==e.value}const xt=(0,Et.ZP)((({addDangerToast:e,allowClear:t=!0,ariaLabel:n,dataEndpoint:a,multi:o=!0,mutator:i,onChange:r,placeholder:l,value:c,...d})=>{const[u,p]=(0,s.useState)([]);return(0,s.useEffect)((()=>{le.Z.get({endpoint:a}).then((e=>{const t=i?i(e.json):e.json.result;p(t)})).catch((t=>(0,Tt.O)(t).then((t=>{const{error:n}=t;e((0,f.t)("Error while fetching data: %s",n))}))))}),[e,a,i]),(0,Z.tZ)(m.Ph,{allowClear:t,ariaLabel:n||(0,f.t)("Select ..."),value:(()=>{const e=c||(void 0!==d.default?d.default:void 0);if(null!==e||u.find((e=>null===e.value)))return e})(),header:(0,Z.tZ)(M.Z,d),mode:o?"multiple":"single",onChange:e=>{let t=e;Array.isArray(e)&&(t=e.map((e=>St(e)?e.value:e))),St(e)&&(t=e.value),r(t)},options:u,placeholder:l})}));var wt=n(82199),At=n(36155),Rt={name:"mlsake",styles:"margin-left:0;margin-right:0"};function Dt(e){return(0,Z.tZ)(At.Z,o()({},e,{css:Rt}))}var Lt=n(665),Ot=n(42878);const Mt={label:h().string,tooltip:h().string,colType:h().string,width:h().string,height:h().string,timeLag:h().oneOfType([h().string,h().number]),timeRatio:h().string,comparisonType:h().string,showYAxis:h().bool,yAxisBounds:h().array,bounds:h().array,d3format:h().string,dateFormat:h().string,onChange:h().func},It={label:(0,f.t)("Time series columns"),tooltip:"",colType:"",width:"",height:"",timeLag:"",timeRatio:"",comparisonType:"",showYAxis:!1,yAxisBounds:[null,null],bounds:[null,null],d3format:"",dateFormat:""},kt=[{value:"value",label:"Actual value",key:"value"},{value:"diff",label:"Difference",key:"diff"},{value:"perc",label:"Percentage",key:"perc"},{value:"perc_change",label:"Percentage change",key:"perc_change"}],Nt=[{value:"time",label:"Time comparison",key:"time"},{value:"contrib",label:"Contribution",key:"contrib"},{value:"spark",label:"Sparkline",key:"spark"},{value:"avg",label:"Period average",key:"avg"}],Pt=(0,l.iK)(m.X2)` margin-top: ${({theme:e})=>2*e.gridUnit}px; display: flex; align-items: center; `,Ft=(0,l.iK)(m.JX)` display: flex; align-items: center; `,$t=(0,l.iK)(b.V)` margin-left: ${({theme:e})=>e.gridUnit}px; color: ${({theme:e})=>e.colors.grayscale.light1}; `,Ut=l.iK.div` margin-top: ${({theme:e})=>5*e.gridUnit}px; display: flex; justify-content: center; `;class Vt extends s.Component{constructor(e){super(e),this.onSave=this.onSave.bind(this),this.onClose=this.onClose.bind(this),this.resetState=this.resetState.bind(this),this.initialState=this.initialState.bind(this),this.onPopoverVisibleChange=this.onPopoverVisibleChange.bind(this),this.state=this.initialState()}initialState(){return{label:this.props.label,tooltip:this.props.tooltip,colType:this.props.colType,width:this.props.width,height:this.props.height,timeLag:this.props.timeLag||0,timeRatio:this.props.timeRatio,comparisonType:this.props.comparisonType,showYAxis:this.props.showYAxis,yAxisBounds:this.props.yAxisBounds,bounds:this.props.bounds,d3format:this.props.d3format,dateFormat:this.props.dateFormat,popoverVisible:!1}}resetState(){const e=this.initialState();this.setState({...e})}onSave(){this.props.onChange(this.state),this.setState({popoverVisible:!1})}onClose(){this.resetState()}onSelectChange(e,t){this.setState({[e]:t})}onTextInputChange(e,t){this.setState({[e]:t.target.value})}onCheckboxChange(e,t){this.setState({[e]:t})}onBoundsChange(e){this.setState({bounds:e})}onPopoverVisibleChange(e){e?this.setState({popoverVisible:e}):this.resetState()}onYAxisBoundsChange(e){this.setState({yAxisBounds:e})}textSummary(){return`${this.props.label}`}formRow(e,t,n,a){return(0,Z.tZ)(Pt,null,(0,Z.tZ)(Ft,{xs:24,md:11},e,(0,Z.tZ)($t,{placement:"top",tooltip:t,label:n})),(0,Z.tZ)(m.JX,{xs:24,md:13},a))}renderPopover(){return(0,Z.tZ)("div",{id:"ts-col-popo",style:{width:320}},this.formRow("Label","The column header label","time-lag",(0,Z.tZ)(O.II,{value:this.state.label,onChange:this.onTextInputChange.bind(this,"label"),placeholder:"Label"})),this.formRow("Tooltip","Column header tooltip","col-tooltip",(0,Z.tZ)(O.II,{value:this.state.tooltip,onChange:this.onTextInputChange.bind(this,"tooltip"),placeholder:"Tooltip"})),this.formRow("Type","Type of comparison, value difference or percentage","col-type",(0,Z.tZ)(m.Ph,{ariaLabel:(0,f.t)("Type"),value:this.state.colType||void 0,onChange:this.onSelectChange.bind(this,"colType"),options:Nt})),(0,Z.tZ)("hr",null),"spark"===this.state.colType&&this.formRow("Width","Width of the sparkline","spark-width",(0,Z.tZ)(O.II,{value:this.state.width,onChange:this.onTextInputChange.bind(this,"width"),placeholder:"Width"})),"spark"===this.state.colType&&this.formRow("Height","Height of the sparkline","spark-width",(0,Z.tZ)(O.II,{value:this.state.height,onChange:this.onTextInputChange.bind(this,"height"),placeholder:"Height"})),["time","avg"].indexOf(this.state.colType)>=0&&this.formRow("Time lag","Number of periods to compare against","time-lag",(0,Z.tZ)(O.II,{value:this.state.timeLag,onChange:this.onTextInputChange.bind(this,"timeLag"),placeholder:"Time Lag"})),["spark"].indexOf(this.state.colType)>=0&&this.formRow("Time ratio","Number of periods to ratio against","time-ratio",(0,Z.tZ)(O.II,{value:this.state.timeRatio,onChange:this.onTextInputChange.bind(this,"timeRatio"),placeholder:"Time Ratio"})),"time"===this.state.colType&&this.formRow("Type","Type of comparison, value difference or percentage","comp-type",(0,Z.tZ)(m.Ph,{ariaLabel:(0,f.t)("Type"),value:this.state.comparisonType||void 0,onChange:this.onSelectChange.bind(this,"comparisonType"),options:kt})),"spark"===this.state.colType&&this.formRow("Show Y-axis","Show Y-axis on the sparkline. Will display the manually set min/max if set or min/max values in the data otherwise.","show-y-axis-bounds",(0,Z.tZ)($.Z,{value:this.state.showYAxis,onChange:this.onCheckboxChange.bind(this,"showYAxis")})),"spark"===this.state.colType&&this.formRow("Y-axis bounds","Manually set min/max values for the y-axis.","y-axis-bounds",(0,Z.tZ)(F,{value:this.state.yAxisBounds,onChange:this.onYAxisBoundsChange.bind(this)})),"spark"!==this.state.colType&&this.formRow("Color bounds","Number bounds used for color encoding from red to blue.\n Reverse the numbers for blue to red. To get pure red or blue,\n you can enter either only min or max.","bounds",(0,Z.tZ)(F,{value:this.state.bounds,onChange:this.onBoundsChange.bind(this)})),this.formRow("Number format","Optional d3 number format string","d3-format",(0,Z.tZ)(O.II,{value:this.state.d3format,onChange:this.onTextInputChange.bind(this,"d3format"),placeholder:"Number format string"})),"spark"===this.state.colType&&this.formRow("Date format","Optional d3 date format string","date-format",(0,Z.tZ)(O.II,{value:this.state.dateFormat,onChange:this.onTextInputChange.bind(this,"dateFormat"),placeholder:"Date format string"})),(0,Z.tZ)(Ut,null,(0,Z.tZ)(me.Z,{buttonSize:"small",onClick:this.onClose,cta:!0},(0,f.t)("Close")),(0,Z.tZ)(me.Z,{buttonStyle:"primary",buttonSize:"small",onClick:this.onSave,cta:!0},(0,f.t)("Save"))))}render(){return(0,Z.tZ)("span",null,this.textSummary()," ",(0,Z.tZ)(T.Z,{trigger:"click",content:this.renderPopover(),title:"Column Configuration",visible:this.state.popoverVisible,onVisibleChange:this.onPopoverVisibleChange},(0,Z.tZ)(b.V,{icon:"edit",className:"text-primary",label:"edit-ts-column"})))}}Vt.propTypes=Mt,Vt.defaultProps=It;var qt=n(79512);const zt=["longitude","latitude","zoom","bearing","pitch"],Ht={onChange:h().func,value:h().shape({longitude:h().number,latitude:h().number,zoom:h().number,bearing:h().number,pitch:h().number}),default:h().object,name:h().string.isRequired};class jt extends s.Component{constructor(e){super(e),this.onChange=this.onChange.bind(this)}onChange(e,t){this.props.onChange({...this.props.value,[e]:t})}renderTextControl(e){return(0,Z.tZ)("div",{key:e},(0,Z.tZ)(je.lX,null,e),(0,Z.tZ)(Me.Z,{value:this.props.value[e],onChange:this.onChange.bind(this,e),isFloat:!0}))}renderPopover(){return(0,Z.tZ)("div",{id:`filter-popover-${this.props.name}`},zt.map((e=>this.renderTextControl(e))))}renderLabel(){return this.props.value.longitude&&this.props.value.latitude?`${(0,qt.decimal2sexagesimal)(this.props.value.longitude)} | ${(0,qt.decimal2sexagesimal)(this.props.value.latitude)}`:"N/A"}render(){return(0,Z.tZ)("div",null,(0,Z.tZ)(M.Z,this.props),(0,Z.tZ)(te.ZP,{container:document.body,trigger:"click",placement:"right",content:this.renderPopover(),title:"Viewport"},(0,Z.tZ)(Le.Z,{className:"pointer"},this.renderLabel())))}}jt.propTypes=Ht,jt.defaultProps={onChange:()=>{},default:{type:"fix",value:5},value:{longitude:6.85236157047845,latitude:31.222656842808707,zoom:1,bearing:0,pitch:0}};var Bt=n(11064),Gt=n(14278),Wt=n(74069),Kt=n(13284);const Qt=[{name:"echarts_timeseries_line",icon:(0,Z.tZ)(z.Z.LineChartTile,null)},{name:"table",icon:(0,Z.tZ)(z.Z.TableChartTile,null)},{name:"big_number_total",icon:(0,Z.tZ)(z.Z.BigNumberChartTile,null)},{name:"pie",icon:(0,Z.tZ)(z.Z.PieChartTile,null)},{name:"echarts_timeseries_bar",icon:(0,Z.tZ)(z.Z.BarChartTile,null)},{name:"echarts_area",icon:(0,Z.tZ)(z.Z.AreaChartTile,null)}],Yt=({isActive:e,isRendered:t,vizMeta:n,onTileClick:a})=>{var i;const{mountedPluginMetadata:r}=(0,Gt.gp)(),c=(0,s.useRef)(null),d=(0,l.Fg)(),u=2*d.transitionTiming,[p,h]=(0,s.useState)(!1),[m,g]=(0,s.useState)(!1),[v,b]=(0,s.useState)(!1),y=n.name?(null==(i=r[n.name])?void 0:i.name)||`${n.name}`:(0,f.t)("Select Viz Type"),_=(0,s.useCallback)((()=>{a(n.name),g(!0),h(!1),setTimeout((()=>{g(!1)}),1e3*u)}),[a,u,n.name]);(0,s.useEffect)((()=>{b(Boolean(!m&&(!e||c.current&&c.current.scrollWidth>c.current.clientWidth)))}),[e,m]);const C=(0,s.useMemo)((()=>e?{}:{role:"button",tabIndex:0,onClick:_}),[_,e]);let E=null;return v&&(E=t?(0,f.t)("Currently rendered: %s",y):y),(0,Z.tZ)(pe.u,{title:E,onVisibleChange:e=>h(e),visible:p&&!m,placement:"top",mouseEnterDelay:.4},(0,Z.tZ)("div",o()({},C,{css:Z.iv` display: flex; align-items: center; text-transform: uppercase; color: ${d.colors.grayscale.base}; font-weight: ${d.typography.weights.bold}; border-radius: 6px; white-space: nowrap; overflow: hidden; max-width: fit-content; ${!e&&Z.iv` flex-shrink: 0; width: ${6*d.gridUnit}px; background-color: transparent; transition: none; &:hover svg path { fill: ${d.colors.primary.base}; transition: fill ${d.transitionTiming}s ease-out; } `} ${e&&Z.iv` width: 100%; background-color: ${d.colors.grayscale.light4}; transition: width ${u}s ease-out, background-color ${u}s ease-out; cursor: default; svg path { fill: ${d.colors.primary.base}; } `} `}),n.icon," ",(0,Z.tZ)("span",{css:Z.iv` overflow: hidden; text-overflow: ellipsis; min-width: 0; padding-right: ${d.gridUnit}px; `,ref:c},y)))},Xt=s.memo((({currentSelection:e,onChange:t})=>{const n=(0,g.v9)((e=>{var t,n;return e.charts&&(null==(t=Object.values(e.charts)[0])||null==(n=t.latestQueryFormData)?void 0:n.viz_type)})),a=(0,s.useMemo)((()=>{const t=[...Qt];return e&&Qt.every((t=>t.name!==e))&&e!==n&&t.unshift({name:e,icon:(0,Z.tZ)(z.Z.MonitorOutlined,{iconSize:"l",css:e=>Z.iv` padding: ${e.gridUnit}px; & > * { line-height: 0; } `})}),n&&Qt.every((e=>e.name!==n))&&t.unshift({name:n,icon:(0,Z.tZ)(z.Z.CurrentRenderedTile,null)}),t}),[e,n]);return(0,Z.tZ)("div",{css:e=>Z.iv` display: flex; justify-content: space-between; column-gap: ${e.gridUnit}px; `},a.map((a=>(0,Z.tZ)(Yt,{vizMeta:a,isActive:e===a.name,isRendered:n===a.name,onTileClick:t,key:a.name}))))})),Jt=(0,Bt.Z)();function en({vizType:e}){return(0,Gt.gp)().loading||Jt.has(e)?null:(0,Z.tZ)("div",{className:"text-danger",css:e=>Z.iv` margin-top: ${e.gridUnit}px; `},(0,Z.tZ)("i",{className:"fa fa-exclamation-circle text-danger"})," ",(0,Z.tZ)("small",null,(0,f.t)("This visualization type is not supported.")))}const tn=(0,l.iK)(Wt.Z)` .ant-modal-body { padding: 0; } `;var nn=n(46566);const an={marginTop:"5px",minHeight:"30px"},on={textAlign:"right"},rn={label:h().string.isRequired,tooltip:h().string,control:h().node.isRequired,isCheckbox:h().bool};function sn({label:e,tooltip:t,control:n,isCheckbox:a}){const o=(0,Z.tZ)("span",null,e," ",t&&(0,Z.tZ)(b.V,{placement:"top",label:e,tooltip:t}));return a?(0,Z.tZ)(m.X2,{style:an,gutter:16},(0,Z.tZ)(m.JX,{xs:24,md:8,style:on},n),(0,Z.tZ)(m.JX,{xs:24,md:16},o)):(0,Z.tZ)(m.X2,{style:an,gutter:16},(0,Z.tZ)(m.JX,{xs:24,md:8,style:on},o),(0,Z.tZ)(m.JX,{xs:24,md:16},n))}sn.propTypes=rn,sn.defaultProps={tooltip:null,isCheckbox:!1};const ln=new Set(["TINYINT","SMALLINT","INT","INTEGER","BIGINT","LONG"]),cn=new Set(["FLOAT","DOUBLE","REAL","NUMERIC","DECIMAL","MONEY"]),dn={datasource:h().object.isRequired,onChange:h().func,asc:h().bool,clearable:h().bool,multiple:h().bool,column:h().string,label:h().string,metric:h().string,searchAllOptions:h().bool,defaultValue:h().string},un={width:350};class pn extends s.Component{constructor(e){super(e);const{column:t,metric:n,asc:a,clearable:o,multiple:i,searchAllOptions:r,label:s,defaultValue:l}=e;this.state={column:t,metric:n,label:s,asc:a,clearable:o,multiple:i,searchAllOptions:r,defaultValue:l},this.onChange=this.onChange.bind(this),this.onControlChange=this.onControlChange.bind(this)}onChange(){this.props.onChange(this.state)}onControlChange(e,t){let n=t;const{column:a,multiple:o}=this.state;if(t&&!o&&e===Ke.ft.DEFAULT_VALUE){const{datasource:e}=this.props,o=e.columns.find((e=>e.column_name===a));if(o&&o.type){const e=o.type.toUpperCase();"BOOLEAN"===e?n="true"===t:ln.has(e)?n=Number.isNaN(Number(t))?null:parseInt(t,10):cn.has(e)&&(n=Number.isNaN(Number(t))?null:parseFloat(t))}}this.setState({[e]:n},this.onChange)}setType(){}textSummary(){return this.state.column||"N/A"}renderForm(){return(0,Z.tZ)("div",null,(0,Z.tZ)(sn,{label:(0,f.t)("Column"),control:(0,Z.tZ)(m.Ph,{ariaLabel:(0,f.t)("Column"),value:this.state.column,name:"column",options:this.props.datasource.columns.filter((e=>e.column_name!==this.state.column)).map((e=>({value:e.column_name,label:e.column_name}))).concat([{value:this.state.column,label:this.state.column}]),onChange:e=>this.onControlChange("column",e)})}),(0,Z.tZ)(sn,{label:(0,f.t)("Label"),control:(0,Z.tZ)(Me.Z,{value:this.state.label,name:"label",onChange:e=>this.onControlChange("label",e)})}),(0,Z.tZ)(sn,{label:(0,f.t)("Default"),tooltip:(0,f.t)("(optional) default value for the filter, when using the multiple option, you can use a semicolon-delimited list of options."),control:(0,Z.tZ)(Me.Z,{value:this.state.defaultValue,name:"defaultValue",onChange:e=>this.onControlChange(Ke.ft.DEFAULT_VALUE,e)})}),(0,Z.tZ)(sn,{label:(0,f.t)("Sort metric"),tooltip:(0,f.t)("Metric to sort the results by"),control:(0,Z.tZ)(m.Ph,{ariaLabel:(0,f.t)("Sort metric"),value:this.state.metric,name:"column",options:this.props.datasource.metrics.filter((e=>e.metric_name!==this.state.metric)).map((e=>({value:e.metric_name,label:e.metric_name}))).concat([{value:this.state.metric,label:this.state.metric}]),onChange:e=>this.onControlChange("metric",e)})}),(0,Z.tZ)(sn,{label:(0,f.t)("Sort ascending"),tooltip:(0,f.t)("Check for sorting ascending"),isCheckbox:!0,control:(0,Z.tZ)($.Z,{value:this.state.asc,onChange:e=>this.onControlChange("asc",e)})}),(0,Z.tZ)(sn,{label:(0,f.t)("Allow multiple selections"),isCheckbox:!0,tooltip:(0,f.t)("Multiple selections allowed, otherwise filter is limited to a single value"),control:(0,Z.tZ)($.Z,{value:this.state.multiple,onChange:e=>this.onControlChange(Ke.ft.MULTIPLE,e)})}),(0,Z.tZ)(sn,{label:(0,f.t)("Search all filter options"),tooltip:(0,f.t)("By default, each filter loads at most 1000 choices at the initial page load. Check this box if you have more than 1000 filter values and want to enable dynamically searching that loads filter values as users type (may add stress to your database)."),isCheckbox:!0,control:(0,Z.tZ)($.Z,{value:this.state.searchAllOptions,onChange:e=>this.onControlChange(Ke.ft.SEARCH_ALL_OPTIONS,e)})}),(0,Z.tZ)(sn,{label:(0,f.t)("Required"),tooltip:(0,f.t)("User must select a value for this filter"),isCheckbox:!0,control:(0,Z.tZ)($.Z,{value:!this.state.clearable,onChange:e=>this.onControlChange("clearable",!e)})}))}renderPopover(){return(0,Z.tZ)("div",{id:"ts-col-popo",style:un},this.renderForm())}render(){return(0,Z.tZ)("span",null,this.textSummary()," ",(0,Z.tZ)(T.Z,{trigger:"click",content:this.renderPopover(),title:(0,f.t)("Filter configuration")},(0,Z.tZ)(b.V,{icon:"edit",className:"text-primary",label:"edit-ts-column"})))}}pn.propTypes=dn,pn.defaultProps={onChange:()=>{},asc:!0,clearable:!0,multiple:!0,searchAllOptions:!1};var hn,mn=n(65013),gn=n(24554);!function(e){e.NONE="None",e.GREATER_THAN=">",e.LESS_THAN="<",e.GREATER_OR_EQUAL="≥",e.LESS_OR_EQUAL="≤",e.EQUAL="=",e.NOT_EQUAL="≠",e.BETWEEN="< x <",e.BETWEEN_OR_EQUAL="≤ x ≤",e.BETWEEN_OR_LEFT_EQUAL="≤ x <",e.BETWEEN_OR_RIGHT_EQUAL="< x ≤"}(hn||(hn={}));const fn=[hn.BETWEEN,hn.BETWEEN_OR_EQUAL,hn.BETWEEN_OR_LEFT_EQUAL,hn.BETWEEN_OR_RIGHT_EQUAL],vn=(0,l.iK)(O.Rn)` width: 100%; `,bn=l.iK.div` display: flex; justify-content: flex-end; `,yn=[{value:hn.NONE,label:"None"},{value:hn.GREATER_THAN,label:">"},{value:hn.LESS_THAN,label:"<"},{value:hn.GREATER_OR_EQUAL,label:"≥"},{value:hn.LESS_OR_EQUAL,label:"≤"},{value:hn.EQUAL,label:"="},{value:hn.NOT_EQUAL,label:"≠"},{value:hn.BETWEEN,label:"< x <"},{value:hn.BETWEEN_OR_EQUAL,label:"≤ x ≤"},{value:hn.BETWEEN_OR_LEFT_EQUAL,label:"≤ x <"},{value:hn.BETWEEN_OR_RIGHT_EQUAL,label:"< x ≤"}],_n=(e,t)=>n=>(a,o)=>n&&o&&!e(Number(n),Number(o))?Promise.reject(new Error(t)):Promise.resolve(),Cn=_n(((e,t)=>e>t),(0,f.t)("This value should be smaller than the right target value")),Zn=_n(((e,t)=>ee&&fn.includes(e),Tn=e=>!e||e===hn.NONE,Sn=[{required:!0,message:(0,f.t)("Required")}],xn=[{required:!0,message:(0,f.t)("Required")},({getFieldValue:e})=>({validator:Cn(e("targetValueRight"))})],wn=[{required:!0,message:(0,f.t)("Required")},({getFieldValue:e})=>({validator:Zn(e("targetValueLeft"))})],An=["targetValueRight"],Rn=["targetValueLeft"],Dn=(e,t)=>Tn(e.operator)!==Tn(t.operator)||En(e.operator)!==En(t.operator),Ln=(0,Z.tZ)(je.xJ,{name:"operator",label:(0,f.t)("Operator"),rules:Sn,initialValue:yn[0].value},(0,Z.tZ)(gn.ZP,{ariaLabel:(0,f.t)("Operator"),options:yn})),On=({getFieldValue:e})=>Tn(e("operator"))?(0,Z.tZ)(m.X2,{gutter:12},(0,Z.tZ)(m.JX,{span:6},Ln)):En(e("operator"))?(0,Z.tZ)(m.X2,{gutter:12},(0,Z.tZ)(m.JX,{span:9},(0,Z.tZ)(je.xJ,{name:"targetValueLeft",label:(0,f.t)("Left value"),rules:xn,dependencies:An,validateTrigger:"onBlur",trigger:"onBlur"},(0,Z.tZ)(vn,null))),(0,Z.tZ)(m.JX,{span:6},Ln),(0,Z.tZ)(m.JX,{span:9},(0,Z.tZ)(je.xJ,{name:"targetValueRight",label:(0,f.t)("Right value"),rules:wn,dependencies:Rn,validateTrigger:"onBlur",trigger:"onBlur"},(0,Z.tZ)(vn,null)))):(0,Z.tZ)(m.X2,{gutter:12},(0,Z.tZ)(m.JX,{span:6},Ln),(0,Z.tZ)(m.JX,{span:18},(0,Z.tZ)(je.xJ,{name:"targetValue",label:(0,f.t)("Target value"),rules:Sn},(0,Z.tZ)(vn,null)))),Mn=({config:e,onChange:t,columns:n=[]})=>{var a;const o=[{value:(i=(0,l.Fg)()).colors.success.light1,label:(0,f.t)("green")},{value:i.colors.alert.light1,label:(0,f.t)("yellow")},{value:i.colors.error.light1,label:(0,f.t)("red")}];var i;return(0,Z.tZ)(je.l0,{onFinish:t,initialValues:e,requiredMark:"optional",layout:"vertical"},(0,Z.tZ)(m.X2,{gutter:12},(0,Z.tZ)(m.JX,{span:12},(0,Z.tZ)(je.xJ,{name:"column",label:(0,f.t)("Column"),rules:Sn,initialValue:null==(a=n[0])?void 0:a.value},(0,Z.tZ)(gn.ZP,{ariaLabel:(0,f.t)("Select column"),options:n}))),(0,Z.tZ)(m.JX,{span:12},(0,Z.tZ)(je.xJ,{name:"colorScheme",label:(0,f.t)("Color scheme"),rules:Sn,initialValue:o[0].value},(0,Z.tZ)(gn.ZP,{ariaLabel:(0,f.t)("Color scheme"),options:o})))),(0,Z.tZ)(je.xJ,{noStyle:!0,shouldUpdate:Dn},On),(0,Z.tZ)(je.xJ,null,(0,Z.tZ)(bn,null,(0,Z.tZ)(me.Z,{htmlType:"submit",buttonStyle:"primary"},(0,f.t)("Apply")))))},In=({title:e,columns:t,onChange:n,config:a,children:i,...r})=>{const[l,c]=(0,s.useState)(!1),d=(0,s.useCallback)((e=>{c(!1),n(e)}),[n]);return(0,Z.tZ)(te.ZP,o()({title:e,content:(0,Z.tZ)(Mn,{onChange:d,config:a,columns:t}),visible:l,onVisibleChange:c,trigger:["click"],overlayStyle:{width:"450px"}},r),i)},kn=l.iK.div` ${({theme:e})=>Z.iv` padding: ${e.gridUnit}px; border: solid 1px ${e.colors.grayscale.light2}; border-radius: ${e.gridUnit}px; `} `,Nn=(0,l.iK)(H.EQ)` &, & > div { margin-bottom: ${({theme:e})=>e.gridUnit}px; :last-child { margin-bottom: 0; } } `,Pn=l.iK.button` ${({theme:e})=>Z.iv` color: ${e.colors.grayscale.light1}; height: 100%; width: ${6*e.gridUnit}px; border: none; border-right: solid 1px ${e.colors.grayscale.dark2}0C; padding: 0; outline: none; border-bottom-left-radius: 3px; border-top-left-radius: 3px; `} `,Fn=({value:e,onChange:t,columnOptions:n,verboseMap:a,...o})=>{const i=(0,l.Fg)(),[r,c]=(0,s.useState)(null!=e?e:[]);(0,s.useEffect)((()=>{t&&t(r)}),[r,t]);const d=(0,s.useCallback)((()=>{const e=r.filter((e=>n.some((t=>(null==t?void 0:t.value)===(null==e?void 0:e.column)))));e.length!==r.length&&t&&(c(e),t(e))}),[JSON.stringify(n)]);return(0,mn.d)(d),(0,Z.tZ)("div",null,(0,Z.tZ)(M.Z,o),(0,Z.tZ)(kn,null,r.map(((e,t)=>(0,Z.tZ)(Nn,{key:t},(0,Z.tZ)(Pn,{onClick:()=>(e=>{c((t=>t.filter(((t,n)=>n!==e))))})(t)},(0,Z.tZ)(z.Z.XSmall,{iconColor:i.colors.grayscale.light1})),(0,Z.tZ)(In,{title:(0,f.t)("Edit formatter"),config:e,columns:n,onChange:e=>((e,t)=>{const n=[...r];n.splice(t,1,e),c(n)})(e,t),destroyTooltipOnHide:!0},(0,Z.tZ)(H.EQ,{withCaret:!0},(0,Z.tZ)(H.__,null,(({column:e,operator:t,targetValue:n,targetValueLeft:o,targetValueRight:i})=>{var r;const s=null!=(r=e&&(null==a?void 0:a[e]))?r:e;switch(t){case hn.NONE:return`${s}`;case hn.BETWEEN:return`${o} ${hn.LESS_THAN} ${s} ${hn.LESS_THAN} ${i}`;case hn.BETWEEN_OR_EQUAL:return`${o} ${hn.LESS_OR_EQUAL} ${s} ${hn.LESS_OR_EQUAL} ${i}`;case hn.BETWEEN_OR_LEFT_EQUAL:return`${o} ${hn.LESS_OR_EQUAL} ${s} ${hn.LESS_THAN} ${i}`;case hn.BETWEEN_OR_RIGHT_EQUAL:return`${o} ${hn.LESS_THAN} ${s} ${hn.LESS_OR_EQUAL} ${i}`;default:return`${s} ${t} ${n}`}})(e)),(0,Z.tZ)(H.Ne,null,(0,Z.tZ)(z.Z.CaretRight,{iconColor:i.colors.grayscale.light1}))))))),(0,Z.tZ)(In,{title:(0,f.t)("Add new formatter"),columns:n,onChange:e=>{c((t=>[...t,e]))},destroyTooltipOnHide:!0},(0,Z.tZ)(H.SW,null,(0,Z.tZ)(z.Z.PlusSmall,{iconColor:i.colors.grayscale.light1}),(0,f.t)("Add new color formatter")))))};var $n=n(22068);function Un({displayGhostButton:e=!0,accept:t,valuesRenderer:n,...a}){const o=(0,l.Fg)(),[{isOver:i,canDrop:r},c]=(0,$n.L)({accept:t,drop:e=>{a.onDrop(e),null==a.onDropValue||a.onDropValue(e.value)},canDrop:e=>{var t;return a.canDrop(e)&&(null==(t=null==a.canDropValue?void 0:a.canDropValue(e.value))||t)},collect:e=>({isOver:e.isOver(),canDrop:e.canDrop(),type:e.getItemType()})}),d=(0,s.useMemo)((()=>n()),[n]);return(0,Z.tZ)("div",{ref:c},(0,Z.tZ)(H.gM,null,(0,Z.tZ)(M.Z,a)),(0,Z.tZ)(H.H$,{canDrop:r,isOver:i},d,e&&(0,Z.tZ)(H.SW,{cancelHover:!a.onClickGhostButton,onClick:a.onClickGhostButton},(0,Z.tZ)(z.Z.PlusSmall,{iconColor:o.colors.grayscale.light1}),(0,f.t)(a.ghostButtonText||"Drop columns here"))))}var Vn=n(41609),qn=n.n(Vn),zn=n(93185),Hn=n(38575),jn=n(27034);const Bn=(0,l.iK)(b.V)` margin: 0 ${({theme:e})=>e.gridUnit}px; `;function Gn({children:e,index:t,clickClose:n,withCaret:a,isExtra:o,canDelete:i=!0}){const r=(0,l.Fg)(),c=(0,s.useCallback)((e=>{e.stopPropagation(),n(t)}),[n,t]);return(0,Z.tZ)(H.EQ,{withCaret:a},i&&(0,Z.tZ)(H.gu,{role:"button",onClick:c},(0,Z.tZ)(z.Z.XSmall,{iconColor:r.colors.grayscale.light1})),(0,Z.tZ)(H.__,null,e),o&&(0,Z.tZ)(Bn,{icon:"exclamation-triangle",placement:"top",bsStyle:"warning",tooltip:(0,f.t)("\n This filter was inherited from the dashboard's context.\n It won't be saved when saving the chart.\n ")}),a&&(0,Z.tZ)(H.Ne,null,(0,Z.tZ)(z.Z.CaretRight,{iconColor:r.colors.grayscale.light1})))}const Wn=l.iK.div` width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; `;function Kn(e){const{index:t,label:n,tooltipTitle:a,column:i,type:r,onShiftOptions:l,clickClose:c,withCaret:d,isExtra:u,canDelete:p=!0,...h}=e,m=(0,s.useRef)(null),g=(0,s.useRef)(null),[{isDragging:f},v]=(0,jn.c)({item:{type:r,dragIndex:t},collect:e=>({isDragging:e.isDragging()})}),[,b]=(0,$n.L)({accept:r,hover:(e,n)=>{var a;if(!m.current)return;const{dragIndex:o}=e,i=t;if(o===i)return;const r=null==(a=m.current)?void 0:a.getBoundingClientRect(),s=(r.bottom-r.top)/2,c=n.getClientOffset(),d=c?c.y-r.top:0;oi&&d>s||(l(o,i),e.dragIndex=i)}}),y=!f&&a&&n&&a!==n||!f&&g&&g.current&&g.current.scrollWidth>g.current.clientWidth,_=()=>y?(0,Z.tZ)(pe.u,{title:a||n},(0,Z.tZ)("span",null,n)):(0,Z.tZ)("span",null,n),C=()=>{const e=i&&(0,Hn.GA)(i)?{verbose_name:i.label,expression:i.sqlExpression}:i;return(0,Z.tZ)(Qe.l,{column:e,labelRef:g,showType:!0})};return v(b(m)),(0,Z.tZ)(H.a7,o()({ref:m},h),(0,Z.tZ)(Gn,{index:t,clickClose:c,withCaret:d,isExtra:u,canDelete:p},(0,Z.tZ)((()=>n?(0,Z.tZ)(Wn,{ref:g},(0,Z.tZ)(_,null)):i?(0,Z.tZ)(Wn,null,(0,Z.tZ)(C,null)):null),null)))}var Qn=n(72813);const Yn=e=>(0,Hn.xN)(e)?e.column_name:e;class Xn{constructor(e,t,n){this.values=void 0,this.options=void 0,this.multi=void 0,this.options=e,this.multi=t,this.values=(0,Ie.Z)(n).map((t=>t&&(0,Qn.s9)(t)&&t in e?e[t]:(0,Qn.s9)(t)?null:t)).filter(Boolean)}add(e){(0,Qn.s9)(e)&&e in this.options?this.values.push(this.options[e]):(0,Qn.s9)(e)||this.values.push(e)}del(e){this.values.splice(e,1)}replace(e,t){this.values[e]&&(this.values[e]=(0,Qn.s9)(t)?this.options[t]:t)}swap(e,t){[this.values[e],this.values[t]]=[this.values[t],this.values[e]]}has(e){return this.values.some((t=>(0,Qn.s9)(e)?t.column_name===e||t.label===e:t.column_name===e.label||t.label===e.label))}getValues(){return this.multi?this.values.map(Yn):this.values.length>0?Yn(this.values[0]):void 0}}const Jn=(0,l.iK)(m.Ph)` .metric-option { & > svg { min-width: ${({theme:e})=>4*e.gridUnit+"px"}; } & > .option-label { overflow: hidden; text-overflow: ellipsis; } } `,ea=({columns:e,editedColumn:t,onChange:n,onClose:a,setLabel:o,getCurrentTab:i,label:r,isTemporal:l})=>{const[c]=(0,s.useState)(r),[d,u,p]=(e=>e?(0,Hn.GA)(e)?[e,void 0,void 0]:(0,Hn.zy)(e)?[void 0,e,void 0]:[void 0,void 0,e]:[void 0,void 0,void 0])(t),[h,g]=(0,s.useState)(d),[v,b]=(0,s.useState)(u),[y,_]=(0,s.useState)(p),C=(0,s.useRef)(null),[E,T]=(0,s.useMemo)((()=>null==e?void 0:e.reduce(((e,t)=>(t.expression?e[0].push(t):e[1].push(t),e)),[[],[]])),[e]),S=(0,s.useCallback)((e=>{g({label:r,sqlExpression:e}),_(void 0),b(void 0)}),[r]),x=(0,s.useCallback)((e=>{const t=E.find((t=>t.column_name===e));b(t),_(void 0),g(void 0),o((null==t?void 0:t.verbose_name)||(null==t?void 0:t.column_name)||"")}),[E,o]),w=(0,s.useCallback)((e=>{const t=T.find((t=>t.column_name===e));b(void 0),_(t),g(void 0),o((null==t?void 0:t.verbose_name)||(null==t?void 0:t.column_name)||"")}),[o,T]),A=d?"sqlExpression":p||0===E.length?"simple":"saved";(0,s.useEffect)((()=>{i(A)}),[A,i]);const R=(0,s.useCallback)((()=>{h&&h.label!==r&&(h.label=r);const e=h||v||y;e&&(n(e),a())}),[h,r,n,a,v,y]),D=(0,s.useCallback)((()=>{b(u),_(p),g(d),a()}),[d,u,p,a]),L=(0,s.useCallback)((e=>{var t;i(e),null==(t=C.current)||t.editor.focus()}),[i]),O=(0,s.useCallback)((()=>{var e;null==(e=C.current)||e.editor.resize()}),[]),M=h||v||y,I=c!==r||(null==v?void 0:v.column_name)!==(null==u?void 0:u.column_name)||(null==y?void 0:y.column_name)!==(null==p?void 0:p.column_name)||(null==h?void 0:h.sqlExpression)!==(null==d?void 0:d.sqlExpression),k=(0,f.t)("Saved expressions"),N=(0,f.t)("Column");return(0,Z.tZ)(je.l0,{layout:"vertical",id:"metrics-edit-popover"},(0,Z.tZ)(ze.ZP,{id:"adhoc-metric-edit-tabs",defaultActiveKey:A,onChange:L,className:"adhoc-metric-edit-tabs",allowOverflow:!0,css:Z.iv` height: ${Ke.H7}px; width: ${Ke.vK}px; `},(0,Z.tZ)(ze.ZP.TabPane,{key:"saved",tab:(0,f.t)("Saved")},E.length>0?(0,Z.tZ)(je.xJ,{label:k},(0,Z.tZ)(Jn,{ariaLabel:k,value:null==v?void 0:v.column_name,onChange:x,allowClear:!0,autoFocus:!v,placeholder:(0,f.t)("%s column(s)",E.length),options:E.map((e=>({value:e.column_name,label:e.verbose_name||e.column_name,customLabel:(0,Z.tZ)(Qe.l,{column:e,showType:!0}),key:e.column_name})))})):(0,Z.tZ)(He.Tc,{image:"empty.svg",title:l?(0,f.t)("No temporal columns found"):(0,f.t)("No saved expressions found"),description:l?(0,f.t)('Add calculated temporal columns to dataset in "Edit datasource" modal'):(0,f.t)('Add calculated columns to dataset in "Edit datasource" modal')})),(0,Z.tZ)(ze.ZP.TabPane,{key:"simple",tab:(0,f.t)("Simple")},l&&0===T.length?(0,Z.tZ)(He.Tc,{image:"empty.svg",title:(0,f.t)("No temporal columns found"),description:(0,f.t)('Mark a column as temporal in "Edit datasource" modal')}):(0,Z.tZ)(je.xJ,{label:N},(0,Z.tZ)(m.Ph,{ariaLabel:N,value:null==y?void 0:y.column_name,onChange:w,allowClear:!0,autoFocus:!y,placeholder:(0,f.t)("%s column(s)",T.length),options:T.map((e=>({value:e.column_name,label:e.verbose_name||e.column_name,customLabel:(0,Z.tZ)(Qe.l,{column:e,showType:!0}),key:e.column_name})))}))),(0,Z.tZ)(ze.ZP.TabPane,{key:"sqlExpression",tab:(0,f.t)("Custom SQL")},(0,Z.tZ)(Be.iO,{value:(null==h?void 0:h.sqlExpression)||(null==y?void 0:y.column_name)||(null==v?void 0:v.expression),onFocus:O,showLoadingForImport:!0,onChange:S,width:"100%",height:Ke.H7-80+"px",showGutter:!1,editorProps:{$blockScrolling:!0},enableLiveAutocompletion:!0,className:"filter-sql-editor",wrapEnabled:!0,ref:C}))),(0,Z.tZ)("div",null,(0,Z.tZ)(me.Z,{buttonSize:"small",onClick:D,cta:!0},(0,f.t)("Close")),(0,Z.tZ)(me.Z,{disabled:!M,buttonStyle:I&&M?"primary":"default",buttonSize:"small",onClick:R,cta:!0},(0,f.t)("Save"))))},ta=(0,l.iK)(O.II)` border-radius: ${({theme:e})=>e.borderRadius}; height: 26px; padding-left: ${({theme:e})=>2.5*e.gridUnit}px; `,na=({title:e,onChange:t,isEditDisabled:n,hasCustomLabel:a})=>{const[o,i]=(0,s.useState)(!1),[r,l]=(0,s.useState)(!1),c=(0,s.useCallback)((()=>{i(!0)}),[]),d=(0,s.useCallback)((()=>{i(!1)}),[]),u=(0,s.useCallback)((()=>{l(!0)}),[]),p=(0,s.useCallback)((()=>{l(!1)}),[]),h=(0,s.useCallback)((e=>{""===e.target.value&&t(e),p()}),[p,t]),m=(0,f.t)("My column");return n?(0,Z.tZ)("span",null,e||m):r?(0,Z.tZ)(ta,{type:"text",placeholder:e,value:a?e:"",autoFocus:!0,onChange:t,onBlur:h}):(0,Z.tZ)(pe.u,{placement:"top",title:(0,f.t)("Click to edit label")},(0,Z.tZ)("span",{className:"AdhocMetricEditPopoverTitle inline-editable",onMouseOver:c,onMouseOut:d,onClick:u,onBlur:p,role:"button",tabIndex:0},e||m," ",(0,Z.tZ)("i",{className:"fa fa-pencil",style:{color:o?"black":"grey"}})))},aa=(0,f.t)("My column"),oa=({columns:e,editedColumn:t,onColumnEdit:n,isControlledComponent:a,children:o,isTemporal:i,...r})=>{const[l,c]=(0,s.useState)(aa),[d,u]=(0,s.useState)(!1),[p,h]=(0,s.useState)(!0),[m,g]=(0,s.useState)(!1);let f=aa;t&&(0,Hn.xN)(t)?f=t.verbose_name||t.column_name:t&&(0,Hn.GA)(t)&&(f=t.label||aa),(0,s.useEffect)((()=>{c(f)}),[f,d]);const v=(0,s.useCallback)((e=>{u(e)}),[]),b=(0,s.useCallback)((()=>{u(!1)}),[]),{visible:y,handleTogglePopover:_,handleClosePopover:C}=a?{visible:r.visible,handleTogglePopover:r.togglePopover,handleClosePopover:r.closePopover}:{visible:d,handleTogglePopover:v,handleClosePopover:b},E=(0,s.useCallback)((e=>{h("sqlExpression"!==e)}),[]),S=(0,s.useMemo)((()=>(0,Z.tZ)(qe.b,null,(0,Z.tZ)(ea,{editedColumn:t,columns:e,onClose:C,onChange:n,label:l,setLabel:c,getCurrentTab:E,isTemporal:i}))),[e,t,E,C,i,n,l]),x=(0,s.useCallback)((e=>{c(e.target.value),g(!0)}),[]),w=(0,s.useMemo)((()=>(0,Z.tZ)(na,{title:l,onChange:x,isEditDisabled:p,hasCustomLabel:m})),[m,p,x,l]);return(0,Z.tZ)(T.Z,{trigger:"click",content:S,defaultVisible:y,visible:y,onVisibleChange:_,title:w,destroyTooltipOnHide:!0},o)};var ia=n(68492),ra=n(96055),sa=n(28543);const la=[Ne.g.Column,Ne.g.Metric,Ne.g.MetricOption,Ne.g.AdhocMetricOption],ca=e=>!(e instanceof sa.ZP)&&(null==e?void 0:e.expressionType);var da=n(88889);const ua={},pa=[Ne.g.Column,Ne.g.Metric],ha=e=>e&&!(e instanceof Pe.Z)&&e.expressionType,ma=e=>e?Array.isArray(e)?e.map((e=>ha(e)?new Pe.Z(e):e)):ha(e)?[new Pe.Z(e)]:[e]:[],ga=(e,t,n)=>{var a;return null!=(a=null==e?void 0:e.filter((e=>{var a;return Array.isArray(t)?!t.includes(null!=(a=e.metric_name)?a:"")||e.metric_name===n:e})))?a:[]},fa={AnnotationLayerControl:R,BoundsControl:F,CheckboxControl:$.Z,CollectionControl:X,ColorPickerControl:re,ColorSchemeControl:se.Z,DatasourceControl:Re,DateFilterControl:De.Z,DndColumnSelectControl:Un,DndColumnSelect:function(e){const{value:t,options:n,multi:a=!0,onChange:i,canDelete:r=!0,ghostButtonText:l,name:c,label:d,isTemporal:u}=e,[p,h]=(0,s.useState)(!1),m=(0,s.useMemo)((()=>new Xn(n,a,t)),[a,n,t]),g=(0,s.useCallback)((()=>{const e=m.getValues();typeof t!=typeof e&&i(e),"string"==typeof t&&"string"==typeof e&&t!==e&&i(e),Array.isArray(e)&&Array.isArray(t)&&(e.length!==t.length||e.every(((e,n)=>e===t[n])))&&i(e)}),[JSON.stringify(t),JSON.stringify(m.getValues())]);(0,mn.d)(g);const v=(0,s.useCallback)((e=>{const t=e.value;m.multi||qn()(m.values)?m.add(t.column_name):m.replace(0,t.column_name),i(m.getValues())}),[i,m]),b=(0,s.useCallback)((e=>{const t=e.value.column_name;return t in m.options&&!m.has(t)}),[m]),y=(0,s.useCallback)((e=>{m.del(e),i(m.getValues())}),[i,m]),_=(0,s.useCallback)(((e,t)=>{m.swap(e,t),i(m.getValues())}),[i,m]),C=(0,s.useMemo)((()=>Object.values(n)),[n]),E=(0,s.useCallback)((()=>m.values.map(((e,t)=>(0,zn.c)(zn.T.ENABLE_DND_WITH_CLICK_UX)?(0,Z.tZ)(oa,{key:t,columns:C,onColumnEdit:e=>{(0,Hn.xN)(e)?m.replace(t,e.column_name):m.replace(t,e),i(m.getValues())},editedColumn:e,isTemporal:u},(0,Z.tZ)(Kn,{key:t,index:t,clickClose:y,onShiftOptions:_,type:`${Ne.g.ColumnOption}_${c}_${d}`,canDelete:r,column:e,withCaret:!0})):(0,Z.tZ)(Kn,{key:t,index:t,clickClose:y,onShiftOptions:_,type:`${Ne.g.ColumnOption}_${c}_${d}`,canDelete:r,column:e})))),[r,d,c,i,y,_,m,C]),T=(0,s.useCallback)((e=>{(0,Hn.xN)(e)?m.add(e.column_name):m.add(e),i(m.getValues())}),[i,m]),S=(0,s.useCallback)((e=>{h(e)}),[]),x=(0,s.useCallback)((()=>{S(!1)}),[S]),w=(0,s.useCallback)((()=>{S(!0)}),[S]),A=(0,zn.c)(zn.T.ENABLE_DND_WITH_CLICK_UX)?(0,f.tn)("Drop a column here or click","Drop columns here or click",a?2:1):(0,f.tn)("Drop column here","Drop columns here",a?2:1);return(0,Z.tZ)("div",null,(0,Z.tZ)(Un,o()({onDrop:v,canDrop:b,valuesRenderer:E,accept:Ne.g.Column,displayGhostButton:a||0===m.values.length,ghostButtonText:l||A,onClickGhostButton:(0,zn.c)(zn.T.ENABLE_DND_WITH_CLICK_UX)?w:void 0},e)),(0,Z.tZ)(oa,{columns:C,onColumnEdit:T,isControlledComponent:!0,togglePopover:S,closePopover:x,visible:p,isTemporal:u},(0,Z.tZ)("div",null)))},DndFilterSelect:e=>{var t;const{datasource:n,onChange:a=(()=>{}),name:i}=e,r=Array.from(null!=(t=e.value)?t:[]),[l,c]=(0,s.useState)(r.map((e=>ca(e)?new sa.ZP(e):e))),[d,u]=(0,s.useState)(void 0),[p,h]=(0,s.useState)(!1),[m,g]=(0,s.useState)({}),v=(e,t)=>[...e,...[...(null==t?void 0:t.metrics)||[],null==t?void 0:t.metric].map((e=>e&&("string"==typeof e?{saved_metric_name:e}:new Pe.Z(e))))].filter((e=>e)).reduce(((e,t)=>("saved_metric_name"in t&&t.saved_metric_name?e.push({...t,filterOptionName:t.saved_metric_name}):"column_name"in t&&t.column_name?e.push({...t,filterOptionName:`_col_${t.column_name}`}):t instanceof Pe.Z&&e.push({...t,filterOptionName:`_adhocmetric_${t.label}`}),e)),[]).sort(((e,t)=>{var n,a;return null!=(n=null==(a=e.saved_metric_name||e.column_name||e.label)?void 0:a.localeCompare(t.saved_metric_name||t.column_name||t.label||""))?n:0})),[b,y]=(0,s.useState)(v(e.columns,e.formData));(0,s.useEffect)((()=>{if(n&&"table"===n.type){var e;const t=null==(e=n.database)?void 0:e.id,{datasource_name:a,schema:o,is_sqllab_view:i}=n;!i&&t&&a&&o&&le.Z.get({endpoint:`/api/v1/database/${t}/table_extra/${a}/${o}/`}).then((({json:e})=>{if(e&&e.partitions){const{partitions:t}=e;t&&t.cols&&1===Object.keys(t.cols).length&&u(t.cols[0])}})).catch((e=>{ia.Z.error("fetch extra_table_metadata:",e.statusText)}))}}),[n]),(0,s.useEffect)((()=>{y(v(e.columns,e.formData))}),[e.columns,e.formData]),(0,s.useEffect)((()=>{c((e.value||[]).map((e=>ca(e)?new sa.ZP(e):e)))}),[e.value]);const _=(0,s.useCallback)((e=>{const t=[...l];t.splice(e,1),c(t),a(t)}),[a,l]),C=(0,s.useCallback)(((e,t)=>{const n=[...l];[n[t],n[e]]=[n[e],n[t]],c(n)}),[l]),E=(0,s.useCallback)((t=>{var n;return null==(n=e.savedMetrics.find((e=>e.metric_name===t)))?void 0:n.expression}),[e.savedMetrics]),T=(0,s.useCallback)((e=>{if(e instanceof sa.ZP)return e;const t=e;return t.saved_metric_name?new sa.ZP({expressionType:"druid"===n.type?sa.vq.SIMPLE:sa.vq.SQL,subject:"druid"===n.type?t.saved_metric_name:E(t.saved_metric_name),operator:Ke.LT[Ke.d.GREATER_THAN].operation,operatorId:Ke.d.GREATER_THAN,comparator:0,clause:sa.Pr.HAVING}):t.label?new sa.ZP({expressionType:"druid"===n.type?sa.vq.SIMPLE:sa.vq.SQL,subject:"druid"===n.type?t.label:new Pe.Z(e).translateToSql(),operator:Ke.LT[Ke.d.GREATER_THAN].operation,operatorId:Ke.d.GREATER_THAN,comparator:0,clause:sa.Pr.HAVING}):t.column_name?new sa.ZP({expressionType:sa.vq.SIMPLE,subject:t.column_name,operator:Ke.LT[Ke.d.EQUALS].operation,operatorId:Ke.d.EQUALS,comparator:"",clause:sa.Pr.WHERE,isNew:!0}):null}),[n.type,E]),S=(0,s.useCallback)((e=>{a(l.map((t=>t.filterOptionName===e.filterOptionName?e:t)))}),[a,l]),x=(0,s.useCallback)((e=>{const t=T(e);if(t){const e=[...l,t];c(e),a(e)}}),[T,a,l]),w=(0,s.useCallback)((e=>{h(e)}),[]),A=(0,s.useCallback)((()=>{w(!1)}),[w]),R=(0,s.useCallback)((()=>l.map(((e,t)=>{const a=e.getDefaultLabel(),o=e.getTooltipTitle();return(0,Z.tZ)(ra.Z,{key:t,adhocFilter:e,options:b,datasource:n,onFilterEdit:S,partitionColumn:d},(0,Z.tZ)(Kn,{key:t,index:t,label:a,tooltipTitle:o,clickClose:_,onShiftOptions:C,type:Ne.g.FilterOption,withCaret:!0,isExtra:e.isExtra}))}))),[_,S,C,b,d,n,l]),D=(0,s.useCallback)((()=>{g({}),w(!0)}),[w]),L=(0,s.useMemo)((()=>{if(null==(e=m)?void 0:e.metric_name)return new sa.ZP({expressionType:sa.vq.SQL,clause:sa.Pr.HAVING,sqlExpression:null==m?void 0:m.expression});var e;if(m instanceof Pe.Z)return new sa.ZP({expressionType:sa.vq.SQL,clause:sa.Pr.HAVING,sqlExpression:null==m?void 0:m.translateToSql()});const t={subject:null==m?void 0:m.column_name};return t.subject&&(0,zn.c)(zn.T.UX_BETA)&&(t.operator=Ke.LT[Ke.d.IN].operation,t.operatorId=Ke.d.IN),new sa.ZP(t)}),[m]),O=(0,s.useCallback)((()=>!0),[]),M=(0,s.useCallback)((e=>{g(e.value),w(!0)}),[i,w]),I=(0,zn.c)(zn.T.ENABLE_DND_WITH_CLICK_UX)?(0,f.t)("Drop columns/metrics here or click"):(0,f.t)("Drop columns or metrics here");return(0,Z.tZ)(s.Fragment,null,(0,Z.tZ)(Un,o()({onDrop:M,canDrop:O,valuesRenderer:R,accept:la,ghostButtonText:I,onClickGhostButton:(0,zn.c)(zn.T.ENABLE_DND_WITH_CLICK_UX)?D:void 0},e)),(0,Z.tZ)(ra.Z,{adhocFilter:L,options:b,datasource:n,onFilterEdit:x,partitionColumn:d,isControlledComponent:!0,visible:p,togglePopover:w,closePopover:A},(0,Z.tZ)("div",null)))},DndMetricSelect:e=>{const{onChange:t,multi:n,columns:a,savedMetrics:i}=e,l=(0,s.useCallback)((e=>{if(null===e)return void t(null);const a=(0,Ie.Z)(e).map((e=>e.metric_name?e.metric_name:e)).filter((e=>e));t(n?a:a[0])}),[n,t]),[d,u]=(0,s.useState)(ma(e.value)),[p,h]=(0,s.useState)({}),[m,g]=(0,s.useState)(!1),v=(0,c.D)(a),b=(0,c.D)(i);(0,s.useEffect)((()=>{u(ma(e.value))}),[JSON.stringify(e.value)]),(0,s.useEffect)((()=>{if(!e.value)return;const t=(0,Ie.Z)(e.value),n=((e,t,n,a,o)=>{const i=!o||r()(o,n),s=!a||r()(a,t);return s&&i?e:e.reduce(((e,a)=>{if("string"==typeof a||a.metric_name)return(i||null!=n&&n.some((e=>e.metric_name===a||e.metric_name===a.metric_name)))&&e.push(a),e;if(s)e.push(a);else{const n=null==t?void 0:t.find((e=>{var t;return(null==(t=a.column)?void 0:t.column_name)===e.column_name}));n&&e.push({...a,column:n})}return e}),[])})(t,a,i,v,b);r()(t,n)||l(n)}),[a,i,l]);const y=(0,s.useCallback)((e=>!("metric"===e.type&&d.includes(e.value.metric_name))),[d]),_=(0,s.useCallback)((t=>{const n=e.multi?[...d,t]:[t];u(n),l(n)}),[l,e.multi,d]),C=(0,s.useCallback)(((e,t)=>{if(t instanceof Pe.Z&&t.equals(e))return;const n=d.map((n=>("metric_name"in t&&n===t.metric_name||void 0!==n.optionName)&&n.optionName===t.optionName?e:n));u(n),l(n)}),[l,d]),E=(0,s.useCallback)((e=>{if(!Array.isArray(d))return;const t=[...d];t.splice(e,1),u(t),l(t)}),[l,d]),T=(0,s.useCallback)(((e,t)=>{const n=[...d];[n[t],n[e]]=[n[e],n[t]],u(n)}),[d]),S=(0,s.useMemo)((()=>ga(e.savedMetrics,e.value)),[e.savedMetrics,e.value]),x=(0,s.useCallback)((t=>{var n;return ga(e.savedMetrics,e.value,null==(n=e.value)?void 0:n[t])}),[e.savedMetrics,e.value]),w=(0,s.useCallback)((()=>t(n?d:d[0])),[n,t,d]),A=(0,s.useCallback)(((t,a)=>(0,Z.tZ)(lt,{key:a,index:a,option:t,onMetricEdit:C,onRemoveMetric:E,columns:e.columns,savedMetrics:e.savedMetrics,savedMetricsOptions:x(a),datasource:e.datasource,onMoveLabel:T,onDropLabel:w,type:`${Ne.g.AdhocMetricOption}_${e.name}_${e.label}`,multi:n})),[x,w,T,n,C,E,e.columns,e.datasource,e.label,e.name,e.savedMetrics]),R=(0,s.useCallback)((()=>d.map(((e,t)=>A(e,t)))),[d,A]),D=(0,s.useCallback)((e=>{g(e)}),[]),L=(0,s.useCallback)((()=>{D(!1)}),[D]),O=(0,s.useCallback)((e=>{e.type===Ne.g.Metric&&_(e.value),e.type===Ne.g.Column&&(h(e),D(!0))}),[_,D]),M=(0,s.useCallback)((()=>{h({}),D(!0)}),[D]),I=(0,s.useMemo)((()=>{if((null==(e=p)?void 0:e.value)&&(null==e?void 0:e.type)&&p.type===Ne.g.Column){const e=p.value,t={column:e};return(0,zn.c)(zn.T.UX_BETA)&&(e.type_generic===da.Z.NUMERIC?t.aggregate=Ke.YY.SUM:e.type_generic!==da.Z.STRING&&e.type_generic!==da.Z.BOOLEAN&&e.type_generic!==da.Z.TEMPORAL||(t.aggregate=Ke.YY.COUNT_DISTINCT)),new Pe.Z(t)}var e;return new Pe.Z({isNew:!0})}),[p]),k=(0,zn.c)(zn.T.ENABLE_DND_WITH_CLICK_UX)?(0,f.tn)("Drop a column/metric here or click","Drop columns/metrics here or click",n?2:1):(0,f.tn)("Drop column or metric here","Drop columns or metrics here",n?2:1);return(0,Z.tZ)("div",{className:"metrics-select"},(0,Z.tZ)(Un,o()({onDrop:O,canDrop:y,valuesRenderer:R,accept:pa,ghostButtonText:k,displayGhostButton:n||0===d.length,onClickGhostButton:(0,zn.c)(zn.T.ENABLE_DND_WITH_CLICK_UX)?M:void 0},e)),(0,Z.tZ)(at,{adhocMetric:I,onMetricEdit:_,columns:e.columns,savedMetricsOptions:S,savedMetric:ua,datasource:e.datasource,isControlledComponent:!0,visible:m,togglePopover:D,closePopover:L},(0,Z.tZ)("div",null)))},FixedOrMetricControl:Zt,HiddenControl:function(e){return(0,Z.tZ)(O.II,{type:"hidden",value:e.value})},SelectAsyncControl:xt,SelectControl:wt.Z,SliderControl:function({default:e,name:t,label:n,description:a,renderTrigger:i,rightNode:r,leftNode:l,validationErrors:c,hovered:d,warning:u,danger:p,onClick:h,tooltipOnClick:m,onChange:g=(()=>{}),...f}){const v={name:t,label:n,description:a,renderTrigger:i,rightNode:r,leftNode:l,validationErrors:c,onClick:h,hovered:d,tooltipOnClick:m,warning:u,danger:p};return(0,Z.tZ)(s.Fragment,null,(0,Z.tZ)(M.Z,v),(0,Z.tZ)(Dt,o()({},f,{onChange:g,defaultValue:e})))},SpatialControl:Lt.Z,TextAreaControl:Ot.Z,TextControl:Me.Z,TimeSeriesColumnControl:Vt,ViewportControl:jt,VizTypeControl:({value:e,onChange:t=We.EI,isModalOpenInit:n})=>{const[a,o]=(0,s.useState)(!!n),[i,r]=(0,s.useState)(0),[l,c]=(0,s.useState)(e),d=(0,s.useCallback)((()=>{o(!0)}),[]),u=(0,s.useCallback)((()=>{t(l),o(!1)}),[l,t]),p=(0,s.useCallback)((()=>{o(!1),r((e=>e+1)),c(e)}),[e]);return(0,Z.tZ)(s.Fragment,null,(0,Z.tZ)("div",{css:e=>Z.iv` min-width: ${72*e.gridUnit}px; max-width: fit-content; `},(0,Z.tZ)(Xt,{onChange:t,currentSelection:e}),e&&(0,Z.tZ)(en,{vizType:e})),(0,Z.tZ)("div",{css:e=>Z.iv` display: flex; justify-content: flex-end; margin-top: ${3*e.gridUnit}px; color: ${e.colors.grayscale.base}; text-decoration: underline; `},(0,Z.tZ)("span",{role:"button",tabIndex:0,onClick:d},(0,f.t)("View all charts"))),(0,Z.tZ)(tn,{show:a,onHide:p,title:(0,f.t)("Select a visualization type"),primaryButtonName:(0,f.t)("Select"),disablePrimaryButton:!l,onHandledPrimaryAction:u,maxWidth:`${Kt.UB}px`,responsive:!0},(0,Z.tZ)(Kt.ZP,{key:i,selectedViz:l,onChange:c})))},MetricsControl:ft,AdhocFilterControl:nn.Z,FilterBoxItemControl:pn,ConditionalFormattingControl:Fn,...u.Z},va=fa,ba=l.iK.div` padding-bottom: ${({theme:e})=>4*e.gridUnit}px; `;function ya(e){const{actions:{setControlValue:t},name:n,type:a,hidden:i,isVisible:l,resetOnHide:u=!0}=e,[p,h]=(0,s.useState)(!1),m=(0,c.D)(l),g=(0,s.useCallback)(((e,a)=>t(n,e,a)),[n,t]);if((0,s.useEffect)((()=>{!0===m&&!1===l&&void 0!==e.default&&!r()(e.value,e.default)&&u&&(null==t||t(n,e.default))}),[n,m,l,t,e.value,e.default]),!a||!1===l)return null;const f="string"==typeof a?va[a]:a;return f?(0,Z.tZ)(ba,{className:"Control",style:i?{display:"none"}:void 0,onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1)},(0,Z.tZ)(d.Z,null,(0,Z.tZ)(f,o()({onChange:g,hovered:p},e)))):(console.warn(`Unknown controlType: ${a}`),null)}},82342:(e,t,n)=>{n.d(t,{Z:()=>d}),n(67294);var a=n(51995),o=n(11965),i=n(61988),r=n(9882),s=n(58593),l=n(49238),c=n(70163);const d=({name:e,label:t,description:n,validationErrors:d=[],renderTrigger:u=!1,rightNode:p,leftNode:h,onClick:m,hovered:g=!1,tooltipOnClick:f=(()=>{}),warning:v,danger:b})=>{const{gridUnit:y,colors:_}=(0,a.Fg)();if(!t)return null;const C=(null==d?void 0:d.length)>0?"text-danger":"";return(0,o.tZ)("div",{className:"ControlHeader"},(0,o.tZ)("div",{className:"pull-left"},(0,o.tZ)(l.lX,{css:e=>o.iv` margin-bottom: ${.5*e.gridUnit}px; position: relative; `},h&&(0,o.tZ)("span",null,h),(0,o.tZ)("span",{role:"button",tabIndex:0,onClick:m,className:C,style:{cursor:m?"pointer":""}},t)," ",v&&(0,o.tZ)("span",null,(0,o.tZ)(s.u,{id:"error-tooltip",placement:"top",title:v},(0,o.tZ)(c.Z.AlertSolid,{iconColor:_.alert.base,iconSize:"s"}))," "),b&&(0,o.tZ)("span",null,(0,o.tZ)(s.u,{id:"error-tooltip",placement:"top",title:b},(0,o.tZ)(c.Z.ErrorSolid,{iconColor:_.error.base,iconSize:"s"}))," "),(null==d?void 0:d.length)>0&&(0,o.tZ)("span",null,(0,o.tZ)(s.u,{id:"error-tooltip",placement:"top",title:null==d?void 0:d.join(" ")},(0,o.tZ)(c.Z.ErrorSolid,{iconColor:_.error.base,iconSize:"s"}))," "),g?(0,o.tZ)("span",{css:()=>o.iv` position: absolute; top: 50%; right: 0; padding-left: ${y}px; transform: translate(100%, -50%); white-space: nowrap; `},n&&(0,o.tZ)("span",null,(0,o.tZ)(r.V,{label:(0,i.t)("description"),tooltip:n,placement:"top",onClick:f})," "),u&&(0,o.tZ)("span",null,(0,o.tZ)(r.V,{label:(0,i.t)("bolt"),tooltip:(0,i.t)("Changing this control takes effect instantly"),placement:"top",icon:"bolt"})," ")):null)),p&&(0,o.tZ)("div",{className:"pull-right"},p),(0,o.tZ)("div",{className:"clearfix"}))}},61357:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(67294),o=n(11965);function i({controls:e}){const t=(0,a.useCallback)((e=>"HiddenControl"===(null==e?void 0:e.props.type)||!1===(null==e?void 0:e.props.isVisible)),[]),n=e.filter((e=>!t(e))),i=n.length?12/n.length:12;return(0,o.tZ)("div",{className:"row"},e.map(((e,n)=>(0,o.tZ)("div",{className:`col-lg-${i} col-xs-12`,style:{display:t(e)?"none":"block"},key:n},e))))}},42753:(e,t,n)=>{var a;n.d(t,{g:()=>a}),function(e){e.Column="column",e.ColumnOption="columnOption",e.AdhocColumnOption="adhocColumn",e.Metric="metric",e.MetricOption="metricOption",e.AdhocMetricOption="adhocMetric",e.FilterOption="filterOption"}(a||(a={}))},63325:(e,t,n)=>{n.d(t,{b:()=>a});const a=n(51995).iK.div` .edit-popover-resize { transform: scaleX(-1); float: right; margin-top: ${({theme:e})=>4*e.gridUnit}px; margin-right: ${({theme:e})=>-2*e.gridUnit}px; cursor: nwse-resize; } .filter-sql-editor { border: ${({theme:e})=>e.colors.grayscale.light2} solid thin; } `},27845:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(5872),o=n.n(a),i=n(67294),r=n(76697),s=n(11965);const l=e=>{var t,n;const a=null==(t=window)?void 0:t.innerHeight,o=null==(n=e.getBoundingClientRect())?void 0:n.top;return a&&o?o/a:0},c=({getPopupContainer:e,getVisibilityRatio:t=l,visible:n,...a})=>{const c=(0,i.useRef)(),[d,u]=(0,i.useState)(void 0===n?a.defaultVisible:n),[p,h]=i.useState("right"),m=(0,i.useCallback)((()=>{const e=t(c.current);h(e<.35?"rightTop":e>.65?"rightBottom":"right")}),[t]),g=(0,i.useCallback)((e=>{c.current&&e&&m();const t=null==(n=document.getElementById("controlSections"))?void 0:n.lastElementChild;var n;t&&t.style.setProperty("overflow-y",e?"hidden":"auto","important")}),[m]),f=(0,i.useCallback)((t=>(c.current=t,setTimeout((()=>{m()}),0),(null==e?void 0:e(t))||document.body)),[m,e]),v=(0,i.useCallback)((e=>{void 0===e&&g(e),u(!!e),null==a.onVisibleChange||a.onVisibleChange(!!e)}),[a,g]),b=(0,i.useCallback)((e=>{"Escape"===e.key&&(u(!1),null==a.onVisibleChange||a.onVisibleChange(!1))}),[a]);return(0,i.useEffect)((()=>{void 0!==n&&u(!!n)}),[n]),(0,i.useEffect)((()=>{void 0!==d&&g(d)}),[d,g]),(0,i.useEffect)((()=>(d&&document.addEventListener("keydown",b),()=>{document.removeEventListener("keydown",b)})),[b,d]),(0,s.tZ)(r.ZP,o()({},a,{visible:d,arrowPointAtCenter:!0,placement:p,onVisibleChange:v,getPopupContainer:f}))}},73375:(e,t,n)=>{n.d(t,{Z:()=>we});var a=n(5872),o=n.n(a),i=n(67294),r=n(15926),s=n.n(r),l=n(31069),c=n(51995),d=n(11965),u=n(61988),p=n(30381),h=n.n(p);const m=" : ",g=(e,t)=>e.replace("T00:00:00","")||(t?"-∞":"∞"),f=e=>{const t=e.split(m);return 1===t.length?e:`${g(t[0],!0)} ≤ col < ${g(t[1])}`},v="previous calendar week",b="previous calendar month",y="previous calendar year",_=[{value:"Common",label:(0,u.t)("Last")},{value:"Calendar",label:(0,u.t)("Previous")},{value:"Custom",label:(0,u.t)("Custom")},{value:"Advanced",label:(0,u.t)("Advanced")},{value:"No filter",label:(0,u.t)("No filter")}],C=[{value:"Last day",label:(0,u.t)("last day")},{value:"Last week",label:(0,u.t)("last week")},{value:"Last month",label:(0,u.t)("last month")},{value:"Last quarter",label:(0,u.t)("last quarter")},{value:"Last year",label:(0,u.t)("last year")}],Z=new Set(C.map((({value:e})=>e))),E=[{value:v,label:(0,u.t)("previous calendar week")},{value:b,label:(0,u.t)("previous calendar month")},{value:y,label:(0,u.t)("previous calendar year")}],T=new Set(E.map((({value:e})=>e))),S=[{value:"second",label:e=>(0,u.t)("Seconds %s",e)},{value:"minute",label:e=>(0,u.t)("Minutes %s",e)},{value:"hour",label:e=>(0,u.t)("Hours %s",e)},{value:"day",label:e=>(0,u.t)("Days %s",e)},{value:"week",label:e=>(0,u.t)("Weeks %s",e)},{value:"month",label:e=>(0,u.t)("Months %s",e)},{value:"quarter",label:e=>(0,u.t)("Quarters %s",e)},{value:"year",label:e=>(0,u.t)("Years %s",e)}],x=S.map((e=>({value:e.value,label:e.label((0,u.t)("Before"))}))),w=S.map((e=>({value:e.value,label:e.label((0,u.t)("After"))}))),A=[{value:"specific",label:(0,u.t)("Specific Date/Time")},{value:"relative",label:(0,u.t)("Relative Date/Time")},{value:"now",label:(0,u.t)("Now")},{value:"today",label:(0,u.t)("Midnight")}],R=A.slice(),D=new Set(["Last day","Last week","Last month","Last quarter","Last year"]),L=new Set([v,b,y]),O="YYYY-MM-DD[T]HH:mm:ss",M=h()().utc().startOf("day").subtract(7,"days").format(O),I=h()().utc().startOf("day").format(O),k=String.raw`\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.\d+)?(?:(?:[+-]\d\d:\d\d)|Z)?`,N=String.raw`(?:TODAY|NOW)`,P=String.raw`[+-]?[1-9][0-9]*`,F=String.raw`YEAR|QUARTER|MONTH|WEEK|DAY|HOUR|MINUTE|SECOND`,$=RegExp(String.raw`^DATEADD\(DATETIME\("(${k}|${N})"\),\s(${P}),\s(${F})\)$`,"i"),U=RegExp(String.raw`^${k}$|^${N}$`,"i"),V=["now","today"],q={sinceDatetime:M,sinceMode:"relative",sinceGrain:"day",sinceGrainValue:-7,untilDatetime:I,untilMode:"specific",untilGrain:"day",untilGrainValue:7,anchorMode:"now",anchorValue:"now"},z=["specific","today","now"],H=e=>"now"===e?h()().utc().startOf("second"):"today"===e?h()().utc().startOf("day"):h()(e),j=e=>H(e).format(O),B=e=>{const t=e.split(m);if(2===t.length){const[e,n]=t;if(U.test(e)&&U.test(n)){const t=V.includes(e)?e:"specific",a=V.includes(n)?n:"specific";return{customRange:{...q,sinceDatetime:e,untilDatetime:n,sinceMode:t,untilMode:a},matchedFlag:!0}}const a=e.match($);if(a&&U.test(n)&&e.includes(n)){const[e,t,o]=a.slice(1),i=V.includes(n)?n:"specific";return{customRange:{...q,sinceGrain:o,sinceGrainValue:parseInt(t,10),sinceDatetime:e,untilDatetime:e,sinceMode:"relative",untilMode:i},matchedFlag:!0}}const o=n.match($);if(U.test(e)&&o&&n.includes(e)){const[t,n,a]=[...o.slice(1)],i=V.includes(e)?e:"specific";return{customRange:{...q,untilGrain:a,untilGrainValue:parseInt(n,10),sinceDatetime:t,untilDatetime:t,untilMode:"relative",sinceMode:i},matchedFlag:!0}}if(a&&o){const[e,t,n]=[...a.slice(1)],[i,r,s]=[...o.slice(1)];if(e===i)return{customRange:{...q,sinceGrain:n,sinceGrainValue:parseInt(t,10),sinceDatetime:e,untilGrain:s,untilGrainValue:parseInt(r,10),untilDatetime:i,anchorValue:e,sinceMode:"relative",untilMode:"relative",anchorMode:"now"===e?"now":"specific"},matchedFlag:!0}}}return{customRange:q,matchedFlag:!1}},G=e=>{const{sinceDatetime:t,sinceMode:n,sinceGrain:a,sinceGrainValue:o,untilDatetime:i,untilMode:r,untilGrain:s,untilGrainValue:l,anchorValue:c}={...e};if(z.includes(n)&&z.includes(r))return`${"specific"===n?j(t):n} : ${"specific"===r?j(i):r}`;if(z.includes(n)&&"relative"===r){const e="specific"===n?j(t):n;return`${e} : DATEADD(DATETIME("${e}"), ${l}, ${s})`}if("relative"===n&&z.includes(r)){const e="specific"===r?j(i):r;return`DATEADD(DATETIME("${e}"), ${-Math.abs(o)}, ${a}) : ${e}`}return`DATEADD(DATETIME("${c}"), ${-Math.abs(o)}, ${a}) : DATEADD(DATETIME("${c}"), ${l}, ${s})`};var W=n(98286),K=n(35932),Q=n(82342),Y=n(37921),X=n(4715),J=n(70163),ee=n(24554),te=n(58593),ne=n(69856),ae=n(12515),oe=n(27600),ie=n(53350),re=n(54076),se=n(27845),le=n(87183);function ce(e){let t="Last week";return D.has(e.value)?t=e.value:e.onChange(t),(0,d.tZ)(i.Fragment,null,(0,d.tZ)("div",{className:"section-title"},(0,u.t)("Configure Time Range: Last...")),(0,d.tZ)(le.Y.Group,{value:t,onChange:t=>e.onChange(t.target.value)},C.map((({value:e,label:t})=>(0,d.tZ)(le.Y,{key:e,value:e,className:"vertical-radio"},t)))))}function de({onChange:e,value:t}){return(0,i.useEffect)((()=>{L.has(t)||e(v)}),[e,t]),L.has(t)?(0,d.tZ)(i.Fragment,null,(0,d.tZ)("div",{className:"section-title"},(0,u.t)("Configure Time Range: Previous...")),(0,d.tZ)(le.Y.Group,{value:t,onChange:t=>e(t.target.value)},E.map((({value:e,label:t})=>(0,d.tZ)(le.Y,{key:e,value:e,className:"vertical-radio"},t))))):null}var ue=n(93754),pe=n.n(ue),he=n(9875),me=n(62276),ge=n(9882);function fe(e){const{customRange:t,matchedFlag:n}=B(e.value);n||e.onChange(G(t));const{sinceDatetime:a,sinceMode:o,sinceGrain:i,sinceGrainValue:r,untilDatetime:s,untilMode:l,untilGrain:c,untilGrainValue:p,anchorValue:h,anchorMode:m}={...t};function g(n,a){e.onChange(G({...t,[n]:a}))}function f(n,a){pe()(a)&&a>0&&e.onChange(G({...t,[n]:a}))}return(0,d.tZ)("div",null,(0,d.tZ)("div",{className:"section-title"},(0,u.t)("Configure custom time range")),(0,d.tZ)(X.X2,{gutter:24},(0,d.tZ)(X.JX,{span:12},(0,d.tZ)("div",{className:"control-label"},(0,u.t)("START (INCLUSIVE)")," ",(0,d.tZ)(ge.V,{tooltip:(0,u.t)("Start date included in time range"),placement:"right"})),(0,d.tZ)(ee.ZP,{ariaLabel:(0,u.t)("START (INCLUSIVE)"),options:A,value:o,onChange:e=>g("sinceMode",e)}),"specific"===o&&(0,d.tZ)(X.X2,null,(0,d.tZ)(me.M,{showTime:!0,defaultValue:H(a),onChange:e=>g("sinceDatetime",e.format(O)),allowClear:!1})),"relative"===o&&(0,d.tZ)(X.X2,{gutter:8},(0,d.tZ)(X.JX,{span:11},(0,d.tZ)(he.Rn,{placeholder:(0,u.t)("Relative quantity"),value:Math.abs(r),min:1,defaultValue:1,onChange:e=>f("sinceGrainValue",e||1),onStep:e=>f("sinceGrainValue",e||1)})),(0,d.tZ)(X.JX,{span:13},(0,d.tZ)(ee.ZP,{ariaLabel:(0,u.t)("Relative period"),options:x,value:i,onChange:e=>g("sinceGrain",e)})))),(0,d.tZ)(X.JX,{span:12},(0,d.tZ)("div",{className:"control-label"},(0,u.t)("END (EXCLUSIVE)")," ",(0,d.tZ)(ge.V,{tooltip:(0,u.t)("End date excluded from time range"),placement:"right"})),(0,d.tZ)(ee.ZP,{ariaLabel:(0,u.t)("END (EXCLUSIVE)"),options:R,value:l,onChange:e=>g("untilMode",e)}),"specific"===l&&(0,d.tZ)(X.X2,null,(0,d.tZ)(me.M,{showTime:!0,defaultValue:H(s),onChange:e=>g("untilDatetime",e.format(O)),allowClear:!1})),"relative"===l&&(0,d.tZ)(X.X2,{gutter:8},(0,d.tZ)(X.JX,{span:11},(0,d.tZ)(he.Rn,{placeholder:(0,u.t)("Relative quantity"),value:p,min:1,defaultValue:1,onChange:e=>f("untilGrainValue",e||1),onStep:e=>f("untilGrainValue",e||1)})),(0,d.tZ)(X.JX,{span:13},(0,d.tZ)(ee.ZP,{ariaLabel:(0,u.t)("Relative period"),options:w,value:c,onChange:e=>g("untilGrain",e)}))))),"relative"===o&&"relative"===l&&(0,d.tZ)("div",{className:"control-anchor-to"},(0,d.tZ)("div",{className:"control-label"},(0,u.t)("Anchor to")),(0,d.tZ)(X.X2,{align:"middle"},(0,d.tZ)(X.JX,null,(0,d.tZ)(le.Y.Group,{onChange:function(n){const a=n.target.value;"now"===a?e.onChange(G({...t,anchorValue:"now",anchorMode:a})):e.onChange(G({...t,anchorValue:I,anchorMode:a}))},defaultValue:"now",value:m},(0,d.tZ)(le.Y,{key:"now",value:"now"},(0,u.t)("NOW")),(0,d.tZ)(le.Y,{key:"specific",value:"specific"},(0,u.t)("Date/Time")))),"now"!==m&&(0,d.tZ)(X.JX,null,(0,d.tZ)(me.M,{showTime:!0,defaultValue:H(h),onChange:e=>g("anchorValue",e.format(O)),allowClear:!1,className:"control-anchor-to-datetime"})))))}const ve=(0,d.tZ)(i.Fragment,null,(0,d.tZ)("div",null,(0,d.tZ)("h3",null,"DATETIME"),(0,d.tZ)("p",null,(0,u.t)("Return to specific datetime.")),(0,d.tZ)("h4",null,(0,u.t)("Syntax")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,"datetime([string])")),(0,d.tZ)("h4",null,(0,u.t)("Example")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,'datetime("2020-03-01 12:00:00")\ndatetime("now")\ndatetime("last year")'))),(0,d.tZ)("div",null,(0,d.tZ)("h3",null,"DATEADD"),(0,d.tZ)("p",null,(0,u.t)("Moves the given set of dates by a specified interval.")),(0,d.tZ)("h4",null,(0,u.t)("Syntax")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,"dateadd([datetime], [integer], [dateunit])\ndateunit = (year | quarter | month | week | day | hour | minute | second)")),(0,d.tZ)("h4",null,(0,u.t)("Example")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,'dateadd(datetime("today"), -13, day)\ndateadd(datetime("2020-03-01"), 2, day)'))),(0,d.tZ)("div",null,(0,d.tZ)("h3",null,"DATETRUNC"),(0,d.tZ)("p",null,(0,u.t)("Truncates the specified date to the accuracy specified by the date unit.")),(0,d.tZ)("h4",null,(0,u.t)("Syntax")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,"datetrunc([datetime], [dateunit])\ndateunit = (year | quarter | month | week)")),(0,d.tZ)("h4",null,(0,u.t)("Example")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,'datetrunc(datetime("2020-03-01"), week)\ndatetrunc(datetime("2020-03-01"), month)'))),(0,d.tZ)("div",null,(0,d.tZ)("h3",null,"LASTDAY"),(0,d.tZ)("p",null,(0,u.t)("Get the last date by the date unit.")),(0,d.tZ)("h4",null,(0,u.t)("Syntax")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,"lastday([datetime], [dateunit])\ndateunit = (year | month | week)")),(0,d.tZ)("h4",null,(0,u.t)("Example")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,'lastday(datetime("today"), month)'))),(0,d.tZ)("div",null,(0,d.tZ)("h3",null,"HOLIDAY"),(0,d.tZ)("p",null,(0,u.t)("Get the specify date for the holiday")),(0,d.tZ)("h4",null,(0,u.t)("Syntax")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,"holiday([string])\nholiday([holiday string], [datetime])\nholiday([holiday string], [datetime], [country name])")),(0,d.tZ)("h4",null,(0,u.t)("Example")),(0,d.tZ)("pre",null,(0,d.tZ)("code",null,'holiday("new year")\nholiday("christmas", datetime("2019"))\nholiday("christmas", dateadd(datetime("2019"), 1, year))\nholiday("christmas", datetime("2 years ago"))\nholiday("Easter Monday", datetime("2019"), "UK")')))),be=e=>{const t=(0,c.Fg)();return(0,d.tZ)(d.ms,null,(({css:n})=>(0,d.tZ)(te.u,o()({overlayClassName:n` .ant-tooltip-content { min-width: ${125*t.gridUnit}px; max-height: 410px; overflow-y: scroll; .ant-tooltip-inner { max-width: ${125*t.gridUnit}px; h3 { font-size: ${t.typography.sizes.m}px; font-weight: ${t.typography.weights.bold}; } h4 { font-size: ${t.typography.sizes.m}px; font-weight: ${t.typography.weights.bold}; } pre { border: none; text-align: left; word-break: break-word; font-size: ${t.typography.sizes.s}px; } } } `},e))))};function ye(e){return(0,d.tZ)(be,o()({title:ve},e))}function _e(e){function t(e){return e.includes(m)?e:e.startsWith("Last")?[e,""].join(m):e.startsWith("Next")?["",e].join(m):m}const n=t(e.value||""),[a,o]=n.split(m);function r(t,n){"since"===t?e.onChange(`${n} : ${o}`):e.onChange(`${a} : ${n}`)}return n!==e.value&&e.onChange(t(e.value||"")),(0,d.tZ)(i.Fragment,null,(0,d.tZ)("div",{className:"section-title"},(0,u.t)("Configure Advanced Time Range "),(0,d.tZ)(ye,{placement:"rightBottom"},(0,d.tZ)("i",{className:"fa fa-info-circle text-muted"}))),(0,d.tZ)("div",{className:"control-label"},(0,u.t)("START (INCLUSIVE)")," ",(0,d.tZ)(ge.V,{tooltip:(0,u.t)("Start date included in time range"),placement:"right"})),(0,d.tZ)(he.II,{key:"since",value:a,onChange:e=>r("since",e.target.value)}),(0,d.tZ)("div",{className:"control-label"},(0,u.t)("END (EXCLUSIVE)")," ",(0,d.tZ)(ge.V,{tooltip:(0,u.t)("End date excluded from time range"),placement:"right"})),(0,d.tZ)(he.II,{key:"until",value:o,onChange:e=>r("until",e.target.value)}))}const Ce=async e=>{const t=`/api/v1/time_range/?q=${s().encode_uri(e)}`;try{var n,a,o,i;const e=await l.Z.get({endpoint:t}),r=`${(null==e||null==(n=e.json)||null==(a=n.result)?void 0:a.since)||""} : ${(null==e||null==(o=e.json)||null==(i=o.result)?void 0:i.until)||""}`;return{value:f(r)}}catch(e){const t=await(0,W.O)(e);return{error:t.message||t.error}}},Ze=(0,c.iK)(se.Z)``,Ee=(0,c.iK)(ee.ZP)` width: 272px; `,Te=c.iK.div` ${({theme:e})=>d.iv` .ant-row { margin-top: 8px; } .ant-input-number { width: 100%; } .ant-picker { padding: 4px 17px 4px; border-radius: 4px; width: 100%; } .ant-divider-horizontal { margin: 16px 0; } .control-label { font-size: 11px; font-weight: ${e.typography.weights.medium}; color: ${e.colors.grayscale.light2}; line-height: 16px; text-transform: uppercase; margin: 8px 0; } .vertical-radio { display: block; height: 40px; line-height: 40px; } .section-title { font-style: normal; font-weight: ${e.typography.weights.bold}; font-size: 15px; line-height: 24px; margin-bottom: 8px; } .control-anchor-to { margin-top: 16px; } .control-anchor-to-datetime { width: 217px; } .footer { text-align: right; } `} `,Se=c.iK.span` span { margin-right: ${({theme:e})=>2*e.gridUnit}px; vertical-align: middle; } .text { vertical-align: middle; } .error { color: ${({theme:e})=>e.colors.error.base}; } `,xe=(0,ie.Q)("date-filter-control");function we(e){const{value:t=ne.X5,onChange:n,type:a,onOpenPopover:r=re.EI,onClosePopover:s=re.EI}=e,[l,p]=(0,i.useState)(t),[h,m]=(0,i.useState)(!1),g=(0,i.useMemo)((()=>{return e=t,Z.has(e)?"Common":T.has(e)?"Calendar":"No filter"===e?"No filter":B(e).matchedFlag?"Custom":"Advanced";var e}),[t]),[f,v]=(0,i.useState)(g),[b,y]=(0,i.useState)(t),[C,E]=(0,i.useState)(t),[S,x]=(0,i.useState)(!1),[w,A]=(0,i.useState)(t),[R,D]=(0,i.useState)(t);function L(){E(t),v(g),m(!1)}(0,i.useEffect)((()=>{Ce(t).then((({value:e,error:n})=>{n?(A(n||""),x(!1),D(t||"")):("Common"===g||"Calendar"===g||"No filter"===g?(p(t),D("error"===a?(0,u.t)("Default value is required"):e||"")):(p(e||""),D(t||"")),x(!0)),y(t)}))}),[t]),(0,ae.bX)((()=>{b!==C&&Ce(C).then((({value:e,error:t})=>{t?(A(t||""),x(!1)):(A(e||""),x(!0)),y(C)}))}),oe.M$,[C]);const O=(0,c.Fg)(),M=(0,d.tZ)(Te,null,(0,d.tZ)("div",{className:"control-label"},(0,u.t)("RANGE TYPE")),(0,d.tZ)(Ee,{ariaLabel:(0,u.t)("RANGE TYPE"),options:_,value:f,onChange:function(e){"No filter"===e&&E("No filter"),v(e)}}),"No filter"!==f&&(0,d.tZ)(X.iz,null),"Common"===f&&(0,d.tZ)(ce,{value:C,onChange:E}),"Calendar"===f&&(0,d.tZ)(de,{value:C,onChange:E}),"Advanced"===f&&(0,d.tZ)(_e,{value:C,onChange:E}),"Custom"===f&&(0,d.tZ)(fe,{value:C,onChange:E}),"No filter"===f&&(0,d.tZ)("div",null),(0,d.tZ)(X.iz,null),(0,d.tZ)("div",null,(0,d.tZ)("div",{className:"section-title"},(0,u.t)("Actual time range")),S&&(0,d.tZ)("div",null,w),!S&&(0,d.tZ)(Se,{className:"warning"},(0,d.tZ)(J.Z.ErrorSolidSmall,{iconColor:O.colors.error.base}),(0,d.tZ)("span",{className:"text error"},w))),(0,d.tZ)(X.iz,null),(0,d.tZ)("div",{className:"footer"},(0,d.tZ)(K.Z,{buttonStyle:"secondary",cta:!0,key:"cancel",onClick:L},(0,u.t)("CANCEL")),(0,d.tZ)(K.Z,o()({buttonStyle:"primary",cta:!0,disabled:!S,key:"apply",onClick:function(){n(C),m(!1)}},xe("apply-button")),(0,u.t)("APPLY")))),I=(0,d.tZ)(Se,null,(0,d.tZ)(J.Z.EditAlt,{iconColor:O.colors.grayscale.base}),(0,d.tZ)("span",{className:"text"},(0,u.t)("Edit time range")));return(0,d.tZ)(i.Fragment,null,(0,d.tZ)(Q.Z,e),(0,d.tZ)(Ze,{placement:"right",trigger:"click",content:M,title:I,defaultVisible:h,visible:h,onVisibleChange:()=>{h?(L(),s()):(E(t),v(g),m(!0),r())},overlayStyle:{width:"600px"}},(0,d.tZ)(te.u,{placement:"top",title:R},(0,d.tZ)(Y.Z,{className:"pointer"},l))))}},96055:(e,t,n)=>{n.d(t,{Z:()=>W});var a=n(67294),o=n(5872),i=n.n(o),r=n(45697),s=n.n(r),l=n(35932),c=n(58593),d=n(51995),u=n(61988),p=n(57902),h=n(71262),m=n(17536),g=n(28543),f=(n(4591),n(4715)),v=n(31069),b=n(69856),y=n(40266),_=n(9875),C=n(54076),Z=n(91877),E=n(93185),T=n(23279),S=n.n(T),x=n(55786),w=n(15926),A=n.n(w);const R={parsedAdvancedDataType:"",advancedDataTypeOperatorList:[],errorMessage:""};var D=n(11965);const L=(0,d.iK)(_.II)` margin-bottom: ${({theme:e})=>4*e.gridUnit}px; `,O=(0,d.iK)(f.Ph)` .ant-select-selector::after { content: ${({labelText:e})=>e||"\\A0"}; display: inline-block; white-space: nowrap; color: ${({theme:e})=>e.colors.grayscale.light1}; width: max-content; } `,M=e=>{var t,n;const{onSubjectChange:o,onOperatorChange:r,isOperatorRelevant:s,onComparatorChange:l}=(e=>{const t=(t,n)=>{var a;const o=null==(a=e.datasource.columns)?void 0:a.find((e=>e.column_name===n)),i=!!o&&("BOOL"===o.type||"BOOLEAN"===o.type),r=!!o&&("INT"===o.type||"INTEGER"===o.type),s=!!o&&!!o.expression;if(t&&b.qB.has(t)){const{partitionColumn:t}=e;return t&&n&&n===t}return t===b.d.IS_TRUE||t===b.d.IS_FALSE?i||r||s:i?t===b.d.IS_NULL||t===b.d.IS_NOT_NULL:!("druid"===e.datasource.type&&b.QB.indexOf(t)>=0||"table"===e.datasource.type&&b.fV.indexOf(t)>=0||e.adhocFilter.clause===g.Pr.HAVING&&-1===b.Ak.indexOf(t))};return{onSubjectChange:n=>{const a=e.options.find((e=>"column_name"in e&&e.column_name===n||"optionName"in e&&e.optionName===n));let o,i="";a&&"column_name"in a?(i=a.column_name,o=g.Pr.WHERE):a&&"saved_metric_name"in a?(i=a.saved_metric_name,o=g.Pr.HAVING):a&&a.label&&(i=a.label,o=g.Pr.HAVING);const{operator:r,operatorId:s}=e.adhocFilter;e.onChange(e.adhocFilter.duplicateWith({subject:i,clause:o,operator:r&&s&&t(s,i)?b.LT[s].operation:null,expressionType:g.vq.SIMPLE,operatorId:s}))},onOperatorChange:t=>{const n=e.adhocFilter.comparator;let a;a=b.qK.has(t)?Array.isArray(n)?n:[n].filter((e=>e)):Array.isArray(n)?n[0]:n,t!==b.d.IS_TRUE&&t!==b.d.IS_FALSE||(a=b.d.IS_TRUE===t),t&&b.qB.has(t)?e.onChange(e.adhocFilter.duplicateWith({subject:e.adhocFilter.subject,clause:g.Pr.WHERE,operatorId:t,operator:b.LT[t].operation,expressionType:g.vq.SQL,datasource:e.datasource})):e.onChange(e.adhocFilter.duplicateWith({operatorId:t,operator:b.LT[t].operation,comparator:a,expressionType:g.vq.SIMPLE}))},onComparatorChange:t=>{e.onChange(e.adhocFilter.duplicateWith({comparator:t,expressionType:g.vq.SIMPLE}))},isOperatorRelevant:t,clearOperator:()=>{e.onChange(e.adhocFilter.duplicateWith({operatorId:void 0,operator:void 0}))}}})(e),[d,p]=(0,a.useState)([]),[h,m]=(0,a.useState)(e.adhocFilter.comparator),[_,T]=(0,a.useState)(!1),{advancedDataTypesState:w,subjectAdvancedDataType:M,fetchAdvancedDataTypeValueCallback:I,fetchSubjectAdvancedDataType:k}=(e=>{const[t,n]=(0,a.useState)(R),[o,i]=(0,a.useState)(),r=(0,a.useCallback)(((t,a,o)=>{const i=(0,x.Z)(t);o?S()((()=>{const t=`/api/v1/advanced_data_type/convert?q=${A().encode({type:o,values:i})}`;v.Z.get({endpoint:t}).then((({json:t})=>{n({parsedAdvancedDataType:t.result.display_value,advancedDataTypeOperatorList:t.result.valid_filter_operators,errorMessage:t.result.error_message}),e(!t.result.error_message)})).catch((()=>{n({parsedAdvancedDataType:"",advancedDataTypeOperatorList:a.advancedDataTypeOperatorList,errorMessage:(0,u.t)("Failed to retrieve advanced type")}),e(!1)}))}),600)():n(R)}),[e]);return{advancedDataTypesState:t,subjectAdvancedDataType:o,setAdvancedDataTypesState:n,fetchAdvancedDataTypeValueCallback:r,fetchSubjectAdvancedDataType:e=>{const t=e.options.find((t=>"column_name"in t&&t.column_name===e.adhocFilter.subject||"optionName"in t&&t.optionName===e.adhocFilter.subject));t&&"advanced_data_type"in t?i(t.advanced_data_type):e.validHandler(!0)}}})(e.validHandler),N=(e,t)=>M?s(e,t)&&w.advancedDataTypeOperatorList.includes(e):s(e,t),P=()=>{const e=(()=>{var e;const t=Array.isArray(h)?h.filter((e=>d.includes(e))).length:0;return null!=(e=(null==d?void 0:d.length)-t)?e:0})(),t=(0,u.t)("%s option(s)",e);return e?t:""};let F=e.options;const{subject:$,operator:U,operatorId:V}=e.adhocFilter,q={ariaLabel:(0,u.t)("Select subject"),value:null!=$?$:void 0,onChange:e=>{m(void 0),o(e)},notFoundContent:(0,u.t)("No such column found. To filter on a metric, try the Custom SQL tab."),autoFocus:!$,placeholder:""};"druid"===e.datasource.type?q.placeholder=(0,u.t)("%s column(s) and metric(s)",F.length):(q.placeholder=e.adhocFilter.clause===g.Pr.WHERE?(0,u.t)("%s column(s)",F.length):(0,u.t)("To filter on a metric, use Custom SQL tab."),F=e.options.filter((e=>"column_name"in e&&e.column_name)));const z={placeholder:(0,u.t)("%s operator(s)",(null!=(t=e.operators)?t:b.GS).filter((e=>N(e,$))).length),value:V,onChange:r,autoFocus:!!q.value&&!U,ariaLabel:(0,u.t)("Select operator")},H=!!q.value&&!!z.value,j={allowClear:!0,allowNewOptions:!0,ariaLabel:(0,u.t)("Comparator option"),mode:b.qK.has(V)?"multiple":"single",loading:_,value:h,onChange:l,notFoundContent:(0,u.t)("Type a value here"),disabled:b.yi.includes(V),placeholder:P(),autoFocus:H},B=h&&h.length>0&&P();return(0,a.useEffect)((()=>{(()=>{const{datasource:t}=e,n=e.adhocFilter.subject,a=e.adhocFilter.clause===g.Pr.HAVING;if(n&&t&&t.filter_select&&!a){const e=new AbortController,{signal:a}=e;_&&e.abort(),T(!0),v.Z.get({signal:a,endpoint:`/superset/filter/${t.type}/${t.id}/${n}/`}).then((({json:e})=>{p(e.map((e=>({value:e,label:(0,C.lo)(e)})))),T(!1)})).catch((()=>{p([]),T(!1)}))}})()}),[e.adhocFilter.subject]),(0,a.useEffect)((()=>{(0,Z.cr)(E.T.ENABLE_ADVANCED_DATA_TYPES)&&k(e)}),[e.adhocFilter.subject]),(0,a.useEffect)((()=>{(0,Z.cr)(E.T.ENABLE_ADVANCED_DATA_TYPES)&&I(void 0===h?"":h,w,M)}),[h,M,I]),(0,a.useEffect)((()=>{(0,Z.cr)(E.T.ENABLE_ADVANCED_DATA_TYPES)&&m(e.adhocFilter.comparator)}),[e.adhocFilter.comparator]),(0,D.tZ)(a.Fragment,null,(0,D.tZ)(f.Ph,i()({css:e=>({marginTop:4*e.gridUnit,marginBottom:4*e.gridUnit}),options:F.map((e=>{return{value:"column_name"in e&&e.column_name||"optionName"in e&&e.optionName||"",label:"saved_metric_name"in e&&e.saved_metric_name||"column_name"in e&&e.column_name||"label"in e&&e.label,key:"id"in e&&e.id||"optionName"in e&&e.optionName||void 0,customLabel:(t=e,(0,D.tZ)(y.Z,{option:t}))};var t}))},q)),(0,D.tZ)(f.Ph,i()({css:e=>({marginBottom:4*e.gridUnit}),options:(null!=(n=e.operators)?n:b.GS).filter((e=>N(e,$))).map(((e,t)=>({value:e,label:b.LT[e].display,key:e,order:t})))},z)),b.qK.has(V)||d.length>0?(0,D.tZ)(c.u,{title:w.errorMessage||w.parsedAdvancedDataType},(0,D.tZ)(O,i()({labelText:B,options:d},j))):(0,D.tZ)(c.u,{title:w.errorMessage||w.parsedAdvancedDataType},(0,D.tZ)(L,{name:"filter-value",ref:e=>{e&&H&&e.focus()},onChange:e=>{const{value:t}=e.target;m(t),l(t)},value:h,placeholder:(0,u.t)("Filter value (case sensitive)"),disabled:b.yi.includes(V)})))};var I=n(94670),k=n(33313),N=n(72201);const P={adhocFilter:s().instanceOf(g.ZP).isRequired,onChange:s().func.isRequired,options:s().arrayOf(s().oneOfType([N.Z,s().shape({saved_metric_name:s().string.isRequired}),m.Z])).isRequired,height:s().number.isRequired,activeKey:s().string.isRequired},F=(0,d.iK)(f.Ph)` ${({theme:e})=>`\n width: ${30*e.gridUnit}px;\n marginRight: ${e.gridUnit}px;\n `} `;class $ extends a.Component{constructor(e){super(e),this.onSqlExpressionChange=this.onSqlExpressionChange.bind(this),this.onSqlExpressionClauseChange=this.onSqlExpressionClauseChange.bind(this),this.handleAceEditorRef=this.handleAceEditorRef.bind(this),this.selectProps={ariaLabel:(0,u.t)("Select column")}}componentDidUpdate(){this.aceEditorRef&&this.aceEditorRef.editor.resize()}onSqlExpressionClauseChange(e){this.props.onChange(this.props.adhocFilter.duplicateWith({clause:e,expressionType:g.vq.SQL}))}onSqlExpressionChange(e){this.props.onChange(this.props.adhocFilter.duplicateWith({sqlExpression:e,expressionType:g.vq.SQL}))}handleAceEditorRef(e){e&&(this.aceEditorRef=e)}render(){const{adhocFilter:e,height:t,options:n}=this.props,a={placeholder:(0,u.t)("choose WHERE or HAVING..."),value:e.clause,onChange:this.onSqlExpressionClauseChange},o=k.Z.concat(n.map((e=>e.column_name?{name:e.column_name,value:e.column_name,score:50,meta:"option"}:null)).filter(Boolean)),r=Object.keys(g.Pr).map((e=>({label:e,value:e})));return(0,D.tZ)("span",null,(0,D.tZ)("div",{className:"filter-edit-clause-section"},(0,D.tZ)(F,i()({options:r},this.selectProps,a)),(0,D.tZ)("span",{className:"filter-edit-clause-info"},(0,D.tZ)("strong",null,"WHERE")," ",(0,u.t)("Filters by columns"),(0,D.tZ)("br",null),(0,D.tZ)("strong",null,"HAVING")," ",(0,u.t)("Filters by metrics"))),(0,D.tZ)("div",{css:e=>({marginTop:4*e.gridUnit})},(0,D.tZ)(I.iO,{ref:this.handleAceEditorRef,keywords:o,height:t-130+"px",onChange:this.onSqlExpressionChange,width:"100%",showGutter:!1,value:e.sqlExpression||e.translateToSql(),editorProps:{$blockScrolling:!0},enableLiveAutocompletion:!0,className:"filter-sql-editor",wrapEnabled:!0})))}}$.propTypes=P;const U={adhocFilter:s().instanceOf(g.ZP).isRequired,onChange:s().func.isRequired,onClose:s().func.isRequired,onResize:s().func.isRequired,options:s().arrayOf(s().oneOfType([N.Z,s().shape({saved_metric_name:s().string.isRequired}),m.Z])).isRequired,datasource:s().object,partitionColumn:s().string,theme:s().object,sections:s().arrayOf(s().string),operators:s().arrayOf(s().string)},V=d.iK.i` margin-left: ${({theme:e})=>2*e.gridUnit}px; `,q=d.iK.div` .adhoc-filter-edit-tabs > .nav-tabs { margin-bottom: ${({theme:e})=>2*e.gridUnit}px; & > li > a { padding: ${({theme:e})=>e.gridUnit}px; } } #filter-edit-popover { max-width: none; } .filter-edit-clause-info { font-size: ${({theme:e})=>e.typography.sizes.xs}px; padding-left: ${({theme:e})=>e.gridUnit}px; } .filter-edit-clause-section { display: inline-flex; } .adhoc-filter-simple-column-dropdown { margin-top: ${({theme:e})=>5*e.gridUnit}px; } `,z=d.iK.div` margin-top: ${({theme:e})=>2*e.gridUnit}px; `;class H extends a.Component{constructor(e){var t,n;super(e),this.onSave=this.onSave.bind(this),this.onDragDown=this.onDragDown.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onAdhocFilterChange=this.onAdhocFilterChange.bind(this),this.setSimpleTabIsValid=this.setSimpleTabIsValid.bind(this),this.adjustHeight=this.adjustHeight.bind(this),this.onTabChange=this.onTabChange.bind(this),this.state={adhocFilter:this.props.adhocFilter,width:b.kc,height:b.H7,activeKey:(null==(t=this.props)||null==(n=t.adhocFilter)?void 0:n.expressionType)||"SIMPLE",isSimpleTabValid:!0},this.popoverContentRef=a.createRef()}componentDidMount(){document.addEventListener("mouseup",this.onMouseUp)}componentWillUnmount(){document.removeEventListener("mouseup",this.onMouseUp),document.removeEventListener("mousemove",this.onMouseMove)}onAdhocFilterChange(e){this.setState({adhocFilter:e})}setSimpleTabIsValid(e){this.setState({isSimpleTabValid:e})}onSave(){this.props.onChange(this.state.adhocFilter),this.props.onClose()}onDragDown(e){this.dragStartX=e.clientX,this.dragStartY=e.clientY,this.dragStartWidth=this.state.width,this.dragStartHeight=this.state.height,document.addEventListener("mousemove",this.onMouseMove)}onMouseMove(e){this.props.onResize(),this.setState({width:Math.max(this.dragStartWidth+(e.clientX-this.dragStartX),b.kc),height:Math.max(this.dragStartHeight+2*(e.clientY-this.dragStartY),b.H7)})}onMouseUp(){document.removeEventListener("mousemove",this.onMouseMove)}onTabChange(e){this.setState({activeKey:e})}adjustHeight(e){this.setState((t=>({height:t.height+e})))}render(){const{adhocFilter:e,options:t,onChange:n,onClose:a,onResize:o,datasource:r,partitionColumn:s,theme:d,operators:m,...f}=this.props,{adhocFilter:v}=this.state,b=v.isValid(),y=!v.equals(e);return(0,D.tZ)(q,i()({id:"filter-edit-popover"},f,{ref:this.popoverContentRef}),(0,D.tZ)(h.ZP,{id:"adhoc-filter-edit-tabs",defaultActiveKey:v.expressionType,className:"adhoc-filter-edit-tabs",style:{minHeight:this.state.height,width:this.state.width},allowOverflow:!0,onChange:this.onTabChange},(0,D.tZ)(h.ZP.TabPane,{className:"adhoc-filter-edit-tab",key:g.vq.SIMPLE,tab:(0,u.t)("Simple")},(0,D.tZ)(p.Z,null,(0,D.tZ)(M,{operators:m,adhocFilter:this.state.adhocFilter,onChange:this.onAdhocFilterChange,options:t,datasource:r,onHeightChange:this.adjustHeight,partitionColumn:s,popoverRef:this.popoverContentRef.current,validHandler:this.setSimpleTabIsValid}))),(0,D.tZ)(h.ZP.TabPane,{className:"adhoc-filter-edit-tab",key:g.vq.SQL,tab:"druid"===(null==r?void 0:r.type)?(0,D.tZ)(c.u,{title:(0,u.t)("Custom SQL ad-hoc filters are not available for the native Druid connector")},(0,u.t)("Custom SQL")):(0,u.t)("Custom SQL"),disabled:"druid"===(null==r?void 0:r.type)},(0,D.tZ)(p.Z,null,(0,D.tZ)($,{adhocFilter:this.state.adhocFilter,onChange:this.onAdhocFilterChange,options:this.props.options,height:this.state.height,activeKey:this.state.activeKey})))),(0,D.tZ)(z,null,(0,D.tZ)(l.Z,{buttonSize:"small",onClick:this.props.onClose,cta:!0},(0,u.t)("Close")),(0,D.tZ)(l.Z,{disabled:!b||!this.state.isSimpleTabValid,buttonStyle:y&&b?"primary":"default",buttonSize:"small",className:"m-r-5",onClick:this.onSave,cta:!0},(0,u.t)("Save")),(0,D.tZ)(V,{role:"button","aria-label":"Resize",tabIndex:0,onMouseDown:this.onDragDown,className:"fa fa-expand edit-popover-resize text-muted"})))}}H.propTypes=U;var j=n(63325),B=n(27845);class G extends a.PureComponent{constructor(e){super(e),this.onPopoverResize=this.onPopoverResize.bind(this),this.closePopover=this.closePopover.bind(this),this.togglePopover=this.togglePopover.bind(this),this.state={popoverVisible:!1}}onPopoverResize(){this.forceUpdate()}closePopover(){this.togglePopover(!1)}togglePopover(e){this.setState({popoverVisible:e})}render(){const{adhocFilter:e,isControlledComponent:t}=this.props,{visible:n,togglePopover:a,closePopover:o}=t?{visible:this.props.visible,togglePopover:this.props.togglePopover,closePopover:this.props.closePopover}:{visible:this.state.popoverVisible,togglePopover:this.togglePopover,closePopover:this.closePopover},i=(0,D.tZ)(j.b,null,(0,D.tZ)(H,{adhocFilter:e,options:this.props.options,datasource:this.props.datasource,partitionColumn:this.props.partitionColumn,onResize:this.onPopoverResize,onClose:o,sections:this.props.sections,operators:this.props.operators,onChange:this.props.onFilterEdit}));return(0,D.tZ)(B.Z,{trigger:"click",content:i,defaultVisible:n,visible:n,onVisibleChange:a,destroyTooltipOnHide:!0},this.props.children)}}const W=G},33334:(e,t,n)=>{n.d(t,{a7:()=>g,EQ:()=>f,__:()=>v,Ne:()=>y,gu:()=>_,gM:()=>Z,yj:()=>E,H$:()=>T,SW:()=>S,IG:()=>x,yz:()=>w});var a=n(5872),o=n.n(a),i=n(67294),r=n(22068),s=n(27034),l=n(51995),c=n(61988),d=n(9882),u=n(58593),p=n(70163),h=n(99963),m=n(11965);const g=l.iK.div` margin-bottom: ${({theme:e})=>e.gridUnit}px; :last-child { margin-bottom: 0; } `,f=l.iK.div` display: flex; align-items: center; width: 100%; font-size: ${({theme:e})=>e.typography.sizes.s}px; height: ${({theme:e})=>6*e.gridUnit}px; background-color: ${({theme:e})=>e.colors.grayscale.light3}; border-radius: 3px; cursor: ${({withCaret:e})=>e?"pointer":"default"}; `,v=l.iK.div` ${({theme:e})=>`\n display: flex;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n align-items: center;\n white-space: nowrap;\n padding-left: ${e.gridUnit}px;\n svg {\n margin-right: ${e.gridUnit}px;\n }\n .type-label {\n margin-right: ${2*e.gridUnit}px;\n margin-left: ${e.gridUnit}px;\n font-weight: ${e.typography.weights.normal};\n width: auto;\n }\n .option-label {\n display: inline;\n }\n `} `,b=l.iK.span` overflow: hidden; text-overflow: ellipsis; `,y=l.iK.div` height: 100%; border-left: solid 1px ${({theme:e})=>e.colors.grayscale.dark2}0C; margin-left: auto; `,_=l.iK.div` height: 100%; width: ${({theme:e})=>6*e.gridUnit}px; border-right: solid 1px ${({theme:e})=>e.colors.grayscale.dark2}0C; cursor: pointer; `,C=(0,l.iK)(d.V)` margin: 0 ${({theme:e})=>e.gridUnit}px; `,Z=l.iK.div` display: flex; align-items: center; justify-content: space-between; `,E=l.iK.div` padding: ${({theme:e})=>e.gridUnit}px; border: solid 1px ${({theme:e})=>e.colors.grayscale.light2}; border-radius: ${({theme:e})=>e.gridUnit}px; `,T=l.iK.div` padding: ${({theme:e})=>e.gridUnit}px; border: ${({canDrop:e,isOver:t,theme:n})=>e?`dashed 1px ${n.colors.info.dark1}`:t&&!e?`dashed 1px ${n.colors.error.dark1}`:`solid 1px ${n.colors.grayscale.light2}`}; border-radius: ${({theme:e})=>e.gridUnit}px; `,S=l.iK.div` display: flex; align-items: center; width: 100%; height: ${({theme:e})=>6*e.gridUnit}px; padding-left: ${({theme:e})=>e.gridUnit}px; font-size: ${({theme:e})=>e.typography.sizes.s}px; color: ${({theme:e})=>e.colors.grayscale.light1}; border: dashed 1px ${({theme:e})=>e.colors.grayscale.light2}; border-radius: ${({theme:e})=>e.gridUnit}px; cursor: ${({cancelHover:e})=>e?"inherit":"pointer"}; :hover { background-color: ${({cancelHover:e,theme:t})=>e?"inherit":t.colors.grayscale.light4}; } :active { background-color: ${({cancelHover:e,theme:t})=>e?"inherit":t.colors.grayscale.light3}; } `,x=l.iK.button` display: flex; align-items: center; justify-content: center; height: ${({theme:e})=>4*e.gridUnit}px; width: ${({theme:e})=>4*e.gridUnit}px; padding: 0; background-color: ${({theme:e})=>e.colors.primary.dark1}; border: none; border-radius: 2px; :disabled { cursor: not-allowed; background-color: ${({theme:e})=>e.colors.grayscale.light1}; } `,w=({label:e,savedMetric:t,adhocMetric:n,onRemove:a,onMoveLabel:d,onDropLabel:Z,withCaret:E,isFunction:T,type:S,index:x,isExtra:w,tooltipTitle:A,multi:R=!0,...D})=>{const L=(0,l.Fg)(),O=(0,i.useRef)(null),M=(0,i.useRef)(null),I=null==t?void 0:t.metric_name,[,k]=(0,r.L)({accept:S,drop(){R&&(null==Z||Z())},hover(e,t){var n;if(!R)return;if(!O.current)return;const a=e.index,o=x;if(a===o)return;const i=null==(n=O.current)?void 0:n.getBoundingClientRect(),r=(i.bottom-i.top)/2,s=t.getClientOffset(),l=null!=s&&s.y?(null==s?void 0:s.y)-i.top:0;ao&&l>r||(null==d||d(a,o),e.index=o)}}),[{isDragging:N},P]=(0,s.c)({item:{type:S,index:x,value:null!=t&&t.metric_name?t:n},collect:e=>({isDragging:e.isDragging()})});return P(k(O)),(0,m.tZ)(g,{ref:O},(0,m.tZ)(f,o()({withCaret:E},D),(0,m.tZ)(_,{role:"button",onClick:a},(0,m.tZ)(p.Z.XSmall,{iconColor:L.colors.grayscale.light1})),(0,m.tZ)(v,null,T&&(0,m.tZ)(p.Z.FieldDerived,null),(()=>{const n=!N&&"string"==typeof e&&A&&e&&A!==e||!N&&M&&M.current&&M.current.scrollWidth>M.current.clientWidth;return t&&I?(0,m.tZ)(h.B,{metric:t,labelRef:M,shouldShowTooltip:!N}):n?(0,m.tZ)(u.u,{title:A||e},(0,m.tZ)(b,{ref:M},e)):(0,m.tZ)(b,{ref:M},e)})()),w&&(0,m.tZ)(C,{icon:"exclamation-triangle",placement:"top",bsStyle:"warning",tooltip:(0,c.t)("\n This filter was inherited from the dashboard's context.\n It won't be saved when saving the chart.\n ")}),E&&(0,m.tZ)(y,null,(0,m.tZ)(p.Z.CaretRight,{iconColor:L.colors.grayscale.light1}))))}},79684:(e,t,n)=>{n.d(t,{Z:()=>h});var a=n(67294),o=n(99298),i=n(75294),r=n(23279),s=n.n(r),l=n(27600),c=n(82342),d=n(9875),u=n(11965);const p=e=>null==e?"":String(e);class h extends a.Component{constructor(e){super(e),this.initialValue=void 0,this.onChange=e=>{var t,n;let a=e;const r=[];if(""!==e&&this.props.isFloat){const t=(0,o.Z)(e);t?r.push(t):a=e.match(/.*([.0])$/g)?e:parseFloat(e)}if(""!==e&&this.props.isInt){const t=(0,i.Z)(e);t?r.push(t):a=parseInt(e,10)}null==(t=(n=this.props).onChange)||t.call(n,a,r)},this.debouncedOnChange=s()((e=>{this.onChange(e)}),l.oP),this.onChangeWrapper=e=>{const{value:t}=e.target;this.setState({value:t},(()=>{this.debouncedOnChange(t)}))},this.initialValue=e.value,this.state={value:p(this.initialValue)}}render(){let{value:e}=this.state;return this.initialValue!==this.props.value&&(this.initialValue=this.props.value,e=p(this.props.value)),(0,u.tZ)("div",null,(0,u.tZ)(c.Z,this.props),(0,u.tZ)(d.II,{type:"text",placeholder:this.props.placeholder,onChange:this.onChangeWrapper,onFocus:this.props.onFocus,value:e,disabled:this.props.disabled,"aria-label":this.props.label}))}}},13284:(e,t,n)=>{n.d(t,{UB:()=>T,ZP:()=>K});var a,o=n(5872),i=n.n(o),r=n(67294),s=n(74221),l=n(94184),c=n.n(l),d=n(61988),u=n(51995),p=n(11965),h=n(16355),m=n(4715),g=n(58593),f=n(9875),v=n(37921),b=n(14278),y=n(70163),_=n(1510),C=n(64239);!function(e){e.ALL_CHARTS="ALL_CHARTS",e.CATEGORY="CATEGORY",e.TAGS="TAGS",e.RECOMMENDED_TAGS="RECOMMENDED_TAGS"}(a||(a={}));const Z=["line","big_number","big_number_total","table","pivot_table_v2","echarts_timeseries_line","echarts_area","echarts_timeseries_bar","echarts_timeseries_scatter","pie","mixed_timeseries","filter_box","dist_bar","area","bar","deck_polygon","time_table","histogram","deck_scatter","deck_hex","time_pivot","deck_arc","heatmap","deck_grid","dual_line","deck_screengrid","line_multi","treemap","box_plot","sunburst","sankey","word_cloud","mapbox","kepler","cal_heatmap","rose","bubble","deck_geojson","horizon","deck_multi","compare","partition","event_flow","deck_path","graph_chart","world_map","paired_ttest","para","country_map"],E=new Set(Z),T=1090,S=(0,d.t)("Other"),x=(0,d.t)("All charts"),w=[(0,d.t)("Popular"),(0,d.t)("ECharts"),(0,d.t)("Advanced-Analytics")],A=u.iK.div` ${({isSelectedVizMetadata:e})=>`\n display: grid;\n grid-template-rows: ${e?"auto minmax(100px, 1fr) minmax(200px, 35%)":"auto minmax(100px, 1fr)"};\n // em is used here because the sidebar should be sized to fit the longest standard tag\n grid-template-columns: minmax(14em, auto) 5fr;\n grid-template-areas:\n 'sidebar search'\n 'sidebar main'\n 'details details';\n height: 70vh;\n overflow: auto;\n `} `,R=u.iK.h3` margin-top: 0; margin-bottom: ${({theme:e})=>2*e.gridUnit}px; font-size: ${({theme:e})=>e.typography.sizes.l}px; font-weight: ${({theme:e})=>e.typography.weights.bold}; line-height: ${({theme:e})=>6*e.gridUnit}px; `,D=u.iK.div` grid-area: sidebar; display: flex; flex-direction: column; border-right: 1px solid ${({theme:e})=>e.colors.grayscale.light2}; overflow: auto; .ant-collapse .ant-collapse-item { .ant-collapse-header { font-size: ${({theme:e})=>e.typography.sizes.s}px; color: ${({theme:e})=>e.colors.grayscale.base}; padding-left: ${({theme:e})=>2*e.gridUnit}px; padding-bottom: ${({theme:e})=>e.gridUnit}px; } .ant-collapse-content .ant-collapse-content-box { display: flex; flex-direction: column; padding: 0 ${({theme:e})=>2*e.gridUnit}px; } } `,L=u.iK.div` grid-area: main; overflow-y: auto; `,O=u.iK.div` ${({theme:e})=>`\n grid-area: search;\n margin-top: ${3*e.gridUnit}px;\n margin-bottom: ${e.gridUnit}px;\n margin-left: ${3*e.gridUnit}px;\n margin-right: ${3*e.gridUnit}px;\n .ant-input-affix-wrapper {\n padding-left: ${2*e.gridUnit}px;\n }\n `} `,M=u.iK.div` display: flex; justify-content: center; align-items: center; color: ${({theme:e})=>e.colors.grayscale.base}; `,I=u.iK.button` ${({theme:e})=>`\n all: unset; // remove default button styles\n display: flex;\n flex-direction: row;\n align-items: center;\n cursor: pointer;\n margin: ${e.gridUnit}px 0;\n padding: 0 ${e.gridUnit}px;\n border-radius: ${e.borderRadius}px;\n line-height: 2em;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n\n &:focus {\n outline: initial;\n }\n\n &.selected {\n background-color: ${e.colors.primary.dark1};\n color: ${e.colors.primary.light5};\n\n svg {\n color: ${e.colors.primary.light5};\n }\n\n &:hover {\n .cancel {\n visibility: visible;\n }\n }\n }\n\n & span:first-of-type svg {\n margin-top: ${1.5*e.gridUnit}px;\n }\n\n .cancel {\n visibility: hidden;\n }\n `} `,k=u.iK.div` overflow: auto; display: grid; grid-template-columns: repeat( auto-fill, ${({theme:e})=>24*e.gridUnit}px ); grid-auto-rows: max-content; justify-content: space-evenly; grid-gap: ${({theme:e})=>2*e.gridUnit}px; justify-items: center; // for some reason this padding doesn't seem to apply at the bottom of the container. Why is a mystery. padding: ${({theme:e})=>2*e.gridUnit}px; `,N=e=>p.iv` grid-area: details; border-top: 1px solid ${e.colors.grayscale.light2}; `,P=e=>p.iv` padding: ${4*e.gridUnit}px; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto auto 1fr; grid-template-areas: 'viz-name examples-header' 'viz-tags examples' 'description examples'; `,F=u.iK.div` grid-area: viz-tags; width: ${({theme:e})=>120*e.gridUnit}px; padding-right: ${({theme:e})=>14*e.gridUnit}px; padding-bottom: ${({theme:e})=>2*e.gridUnit}px; `,$=u.iK.p` grid-area: description; overflow: auto; padding-right: ${({theme:e})=>14*e.gridUnit}px; margin: 0; `,U=u.iK.div` grid-area: examples; display: flex; flex-direction: row; flex-wrap: nowrap; overflow: auto; gap: ${({theme:e})=>4*e.gridUnit}px; img { height: 100%; border-radius: ${({theme:e})=>e.gridUnit}px; border: 1px solid ${({theme:e})=>e.colors.grayscale.light2}; } `,V=e=>p.iv` cursor: pointer; width: ${24*e.gridUnit}px; position: relative; img { min-width: ${24*e.gridUnit}px; min-height: ${24*e.gridUnit}px; border: 1px solid ${e.colors.grayscale.light2}; border-radius: ${e.gridUnit}px; transition: border-color ${e.transitionTiming}; } &.selected img { border: 2px solid ${e.colors.primary.light2}; } &:hover:not(.selected) img { border: 1px solid ${e.colors.grayscale.light1}; } .viztype-label { margin-top: ${2*e.gridUnit}px; text-align: center; } `,q=u.iK.div` ${({theme:e})=>`\n border: 1px solid ${e.colors.primary.dark1};\n box-sizing: border-box;\n border-radius: ${e.gridUnit}px;\n background: ${e.colors.grayscale.light5};\n line-height: ${2.5*e.gridUnit}px;\n color: ${e.colors.primary.dark1};\n font-size: ${e.typography.sizes.s}px;\n font-weight: ${e.typography.weights.bold};\n text-align: center;\n padding: ${.5*e.gridUnit}px ${e.gridUnit}px;\n text-transform: uppercase;\n cursor: pointer;\n\n div {\n transform: scale(0.83,0.83);\n }\n `} `,z=u.iK.div` position: absolute; right: ${({theme:e})=>e.gridUnit}px; top: ${({theme:e})=>19*e.gridUnit}px; `,H=u.iK.div` display: inline-block !important; margin-left: ${({theme:e})=>2*e.gridUnit}px; `;function j(e){return E.has(e.key)?Z.indexOf(e.key):Z.length}const B=({entry:e,selectedViz:t,setSelectedViz:n})=>{const a=(0,u.Fg)(),{key:o,value:i}=e,r=t===e.key;return(0,p.tZ)("div",{role:"button",css:V(a),tabIndex:0,className:r?"selected":"",onClick:()=>n(o)},(0,p.tZ)("img",{alt:i.name,width:"100%",className:"viztype-selector "+(r?"selected":""),src:i.thumbnail}),(0,p.tZ)("div",{className:"viztype-label"},i.name),i.label&&(0,p.tZ)(z,null,(0,p.tZ)(q,null,(0,p.tZ)("div",null,(0,d.t)(i.label)))))},G=({vizEntries:e,...t})=>(0,p.tZ)(k,null,e.map((e=>(0,p.tZ)(B,i()({key:e.key},t,{entry:e}))))),W=({selector:e,sectionId:t,icon:n,isSelected:a,onClick:o,className:i})=>{const s=(0,r.useRef)(null);return(0,r.useEffect)((()=>{a&&queueMicrotask((()=>(0,C.default)(s.current,{behavior:"smooth",scrollMode:"if-needed"})))}),[]),(0,p.tZ)(I,{ref:s,key:e,name:e,className:c()(i,a&&"selected"),onClick:()=>o(e,t)},n,e)};function K(e){var t,n;const{selectedViz:o,onChange:i,className:l}=e,{mountedPluginMetadata:c}=(0,b.gp)(),u=(0,r.useRef)(),[C,Z]=(0,r.useState)(""),[E,T]=(0,r.useState)(!0),I=E&&!!C,k=o?c[o]:null,V=(0,r.useMemo)((()=>{const e=Object.entries(c).map((([e,t])=>({key:e,value:t}))).filter((({value:e})=>(0,_.X3)(e.behaviors||[])&&!e.deprecated));return e.sort(((e,t)=>j(e)-j(t))),e}),[c]),z=(0,r.useMemo)((()=>{const e={};return V.forEach((t=>{const n=t.value.category||S;e[n]||(e[n]=[]),e[n].push(t)})),e}),[V]),B=(0,r.useMemo)((()=>Object.keys(z).sort(((e,t)=>e===S?1:t===S?-1:e.localeCompare(t)))),[z]),K=(0,r.useMemo)((()=>{const e={};return V.forEach((t=>{(t.value.tags||[]).forEach((n=>{e[n]||(e[n]=[]),e[n].push(t)}))})),e}),[V]),Q=(0,r.useMemo)((()=>Object.keys(K).sort(((e,t)=>e.localeCompare(t))).filter((e=>-1===w.indexOf(e)))),[K]),Y=(0,r.useMemo)((()=>V.sort(((e,t)=>e.key.localeCompare(t.key)))),[V]),[X,J]=(0,r.useState)((()=>(null==k?void 0:k.category)||w[0])),[ee,te]=(0,r.useState)((()=>null!=k&&k.category?a.CATEGORY:a.RECOMMENDED_TAGS)),ne=(0,r.useMemo)((()=>new s.Z(V,{ignoreLocation:!0,threshold:.3,keys:[{name:"value.name",weight:4},{name:"value.tags",weight:2},"value.description"]})),[V]),ae=(0,r.useMemo)((()=>""===C.trim()?[]:ne.search(C).map((e=>e.item)).sort(((e,t)=>{var n,a;const o=null==(n=e.value)?void 0:n.label,i=null==(a=t.value)?void 0:a.label,r=o&&h.eH[o]?h.eH[o].weight:0;return(i&&h.eH[i]?h.eH[i].weight:0)-r}))),[C,ne]),oe=(0,r.useCallback)((()=>{T(!0)}),[]),ie=(0,r.useCallback)((e=>Z(e.target.value)),[]),re=(0,r.useCallback)((()=>{T(!1),Z(""),u.current.blur()}),[]),se=(0,r.useCallback)(((e,t)=>{E&&re(),J(e),te(t);const n=k&&((e,t)=>t===e.category||t===S&&null==e.category||(e.tags||[]).indexOf(t)>-1)(k,e);e===X||n||i(null)}),[re,E,X,k,i]),le=(0,r.useMemo)((()=>({[a.RECOMMENDED_TAGS]:{title:(0,d.t)("Recommended tags"),icon:(0,p.tZ)(y.Z.Tags,null),selectors:w},[a.CATEGORY]:{title:(0,d.t)("Category"),icon:(0,p.tZ)(y.Z.Category,null),selectors:B},[a.TAGS]:{title:(0,d.t)("Tags"),icon:(0,p.tZ)(y.Z.Tags,null),selectors:Q}})),[B,Q]);return(0,p.tZ)(A,{className:l,isSelectedVizMetadata:Boolean(k)},(0,p.tZ)(D,null,(0,p.tZ)(W,{css:({gridUnit:e})=>p.iv` margin: ${2*e}px; margin-bottom: 0; `,sectionId:a.ALL_CHARTS,selector:x,icon:(0,p.tZ)(y.Z.Ballot,null),isSelected:!I&&x===X&&a.ALL_CHARTS===ee,onClick:se}),(0,p.tZ)(m.Ol,{expandIconPosition:"right",ghost:!0,defaultActiveKey:Object.keys(le)},Object.keys(le).map((e=>{const t=le[e];return(0,p.tZ)(m.Ol.Panel,{header:(0,p.tZ)("span",{className:"header"},t.title),key:e},t.selectors.map((n=>(0,p.tZ)(W,{key:n,selector:n,sectionId:e,icon:t.icon,isSelected:!I&&n===X&&e===ee,onClick:se}))))})))),(0,p.tZ)(O,null,(0,p.tZ)(f.II,{type:"text",ref:u,value:C,placeholder:(0,d.t)("Search all charts"),onChange:ie,onFocus:oe,prefix:(0,p.tZ)(M,null,(0,p.tZ)(y.Z.Search,{iconSize:"m"})),suffix:(0,p.tZ)(M,null,C&&(0,p.tZ)(y.Z.XLarge,{iconSize:"m",onClick:re}))})),(0,p.tZ)(L,null,(0,p.tZ)(G,{vizEntries:I?ae:X===x&&ee===a.ALL_CHARTS?Y:ee===a.CATEGORY&&z[X]?z[X]:ee!==a.TAGS&&ee!==a.RECOMMENDED_TAGS||!K[X]?[]:K[X],selectedViz:o,setSelectedViz:i})),k?(0,p.tZ)("div",{css:e=>[N(e),P(e)]},(0,p.tZ)(r.Fragment,null,(0,p.tZ)(R,{css:p.iv` grid-area: viz-name; position: relative; `},null==k?void 0:k.name,(null==k?void 0:k.label)&&(0,p.tZ)(g.u,{id:"viz-badge-tooltip",placement:"top",title:null!=(t=k.labelExplanation)?t:h.t$[k.label]},(0,p.tZ)(H,null,(0,p.tZ)(q,null,(0,p.tZ)("div",null,(0,d.t)(k.label)))))),(0,p.tZ)(F,null,null==k?void 0:k.tags.map((e=>(0,p.tZ)(v.Z,{key:e},e)))),(0,p.tZ)($,null,(null==k?void 0:k.description)||(0,d.t)("No description available.")),(0,p.tZ)(R,{css:p.iv` grid-area: examples-header; `},!(null==k||null==(n=k.exampleGallery)||!n.length)&&(0,d.t)("Examples")),(0,p.tZ)(U,null,((null==k?void 0:k.exampleGallery)||[]).map((e=>(0,p.tZ)("img",{src:e.url,alt:e.caption,title:e.caption})))))):null)}},99963:(e,t,n)=>{n.d(t,{B:()=>l,l:()=>c}),n(67294);var a=n(51995),o=n(51384),i=n(65634),r=n(11965);const s=a.iK.div` width: 100%; > span { display: flex; align-items: center; } .option-label { display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; & ~ i { margin-left: ${({theme:e})=>e.gridUnit}px; } } .type-label { margin-right: ${({theme:e})=>3*e.gridUnit}px; width: ${({theme:e})=>7*e.gridUnit}px; display: inline-block; text-align: center; font-weight: ${({theme:e})=>e.typography.weights.bold}; } `,l=e=>(0,r.tZ)(s,null,(0,r.tZ)(o.m,e)),c=e=>(0,r.tZ)(s,null,(0,r.tZ)(i.E,e))},10331:(e,t,n)=>{n.d(t,{os:()=>$,RO:()=>Z,mi:()=>T,Bx:()=>_,vP:()=>E,YY:()=>D,Hu:()=>S,Bq:()=>b});var a={};n.r(a),n.d(a,{NVD3TimeSeries:()=>f,annotations:()=>g,colorScheme:()=>h,datasourceAndVizType:()=>p,druidTimeSeries:()=>u,sqlaTimeSeries:()=>m});var o=n(30845),i=n(37687),r=n(38575),s=n(89368),l=(n(67294),n(61988)),c=n(12515),d=n(11965);const u={label:(0,l.t)("Time"),expanded:!0,description:(0,l.t)("Time related form attributes"),controlSetRows:[["time_range"]]},p={label:(0,l.t)("Visualization type"),expanded:!0,controlSetRows:[["datasource"],["viz_type"],[{name:"slice_id",config:{type:"HiddenControl",label:(0,l.t)("Chart ID"),hidden:!0,description:(0,l.t)("The id of the active chart")}},{name:"cache_timeout",config:{type:"HiddenControl",label:(0,l.t)("Cache Timeout (seconds)"),hidden:!0,description:(0,l.t)("The number of seconds before expiring the cache")}},{name:"url_params",config:{type:"HiddenControl",label:(0,l.t)("URL parameters"),hidden:!0,description:(0,l.t)("Extra parameters for use in jinja templated queries")}}]]},h={label:(0,l.t)("Color scheme"),controlSetRows:[["color_scheme"]]},m={label:(0,l.t)("Time"),description:(0,l.t)("Time related form attributes"),expanded:!0,controlSetRows:[["granularity_sqla"],["time_range"]]},g={label:(0,l.t)("Annotations and layers"),tabOverride:"data",expanded:!0,controlSetRows:[[{name:"annotation_layers",config:{type:"AnnotationLayerControl",label:"",default:[],description:"Annotation layers",renderTrigger:!0,tabOverride:"data"}}]]},f=[{label:(0,l.t)("Query"),expanded:!0,controlSetRows:[["metrics"],["adhoc_filters"],["groupby"],["limit","timeseries_limit_metric"],["order_desc"],[{name:"contribution",config:{type:"CheckboxControl",label:(0,l.t)("Contribution"),default:!1,description:(0,l.t)("Compute the contribution to the total")}}],["row_limit",null]]},{label:(0,l.t)("Advanced analytics"),tabOverride:"data",description:(0,l.t)("This section contains options that allow for advanced analytical post processing of query results"),controlSetRows:[[(0,d.tZ)("div",{className:"section-header"},(0,l.t)("Rolling window"))],[{name:"rolling_type",config:{type:"SelectControl",label:(0,l.t)("Rolling function"),default:"None",choices:(0,c.mG)(["None","mean","sum","std","cumsum"]),description:(0,l.t)("Defines a rolling window function to apply, works along with the [Periods] text box")}},{name:"rolling_periods",config:{type:"TextControl",label:(0,l.t)("Periods"),isInt:!0,description:(0,l.t)("Defines the size of the rolling window function, relative to the time granularity selected")}},{name:"min_periods",config:{type:"TextControl",label:(0,l.t)("Min periods"),isInt:!0,description:(0,l.t)('The minimum number of rolling periods required to show a value. For instance if you do a cumulative sum on 7 days you may want your "Min Period" to be 7, so that all data points shown are the total of 7 periods. This will hide the "ramp up" taking place over the first 7 periods')}}],[(0,d.tZ)("div",{className:"section-header"},(0,l.t)("Time comparison"))],[{name:"time_compare",config:{type:"SelectControl",multi:!0,freeForm:!0,label:(0,l.t)("Time shift"),choices:(0,c.mG)(["1 day","1 week","28 days","30 days","52 weeks","1 year","104 weeks","2 years","156 weeks","3 years"]),description:(0,l.t)("Overlay one or more timeseries from a relative time period. Expects relative time deltas in natural language (example: 24 hours, 7 days, 52 weeks, 365 days). Free text is supported.")}},{name:"comparison_type",config:{type:"SelectControl",label:(0,l.t)("Calculation type"),default:"values",choices:[["values","Actual values"],["absolute","Difference"],["percentage","Percentage change"],["ratio","Ratio"]],description:(0,l.t)("How to display time shifts: as individual lines; as the difference between the main time series and each time shift; as the percentage change; or as the ratio between series and time shifts.")}}],[(0,d.tZ)("div",{className:"section-header"},(0,l.t)("Resample"))],[{name:"resample_rule",config:{type:"SelectControl",freeForm:!0,label:(0,l.t)("Rule"),default:null,choices:(0,c.mG)(["1T","1H","1D","7D","1M","1AS"]),description:(0,l.t)("Pandas resample rule")}},{name:"resample_method",config:{type:"SelectControl",freeForm:!0,label:(0,l.t)("Method"),default:null,choices:(0,c.mG)(["asfreq","bfill","ffill","median","mean","sum"]),description:(0,l.t)("Pandas resample method")}}]]}],v=(0,o.Z)(((e,t)=>{const{sectionOverrides:n={},controlOverrides:o,controlPanelSections:i=[]}=t,l={...a};Object.entries(n).forEach((([e,t])=>{"object"==typeof t&&t.constructor===Object?l[e]={...l[e],...t}:l[e]=t}));const{datasourceAndVizType:c}=l,d="table"===e?["granularity","druid_time_origin"]:["granularity_sqla","time_grain_sqla"];return[c].concat(i.filter(r.D_)).map((e=>{const{controlSetRows:t}=e;return{...e,controlSetRows:(null==t?void 0:t.map((e=>e.filter((e=>"string"!=typeof e||!d.includes(e))).map((e=>(0,s.q)(e,o))))))||[]}}))}));function b(e,t){const n=(0,i.Z)().get(e)||{};return v(t,n)}const y=(0,o.Z)(((e,t)=>{const{controlOverrides:n={},controlPanelSections:a=[]}=t,o=(0,s.q)(function(e,t){var n;return null!=(n=e.filter(r.D_).map((e=>e.controlSetRows)).flat(2).find((e=>t===e||null!==e&&"object"==typeof e&&"name"in e&&e.name===t)))?n:null}(a,e),n);return o&&"config"in o?o.config:o})),_=function(e,t){const n=(0,i.Z)().get(t)||{};return y(e,n)};var C=n(55786);function Z(e,t){const{mapStateToProps:n}=e;let a={...e},{value:o}=a;return n&&t&&(a={...e,...n.call(e,t,e)},o=o||a.value),"function"==typeof a.default&&(a.default=a.default(a,t),"function"==typeof a.default&&delete a.default),a.default&&void 0===o&&(o=a.default),o&&a.multi&&!Array.isArray(o)&&(o=[o]),a.value=o,function(e,t){const n=e.validators,{externalValidationErrors:a=[]}=e,o=[];n&&n.length>0&&n.forEach((n=>{const a=n.call(e,e.value,t);a&&o.push(a)}));const i=[...o,...a];return{...e,validationErrors:i}}(function(e){if("SelectControl"===e.type&&!e.freeForm&&e.choices&&e.value){const t={...e},n=e.choices,a=(0,C.Z)(e.value),o=n.map((e=>e[0]));if(e.multi&&a.length>0)return t.value=a.filter((e=>o.includes(e))),t;if(!e.multi&&!o.includes(a[0]))return t.value=null,t}return e}(a),a)}function E(e,t,n){if(!e)return null;const a={...e,value:n};return null!=t&&t.controls||null===t?Z(a,t):a}function T(e,t,n,a){const o={};return b(e,t).forEach((e=>e.controlSetRows.forEach((e=>e.forEach((e=>{if(e&&e.config&&e.name){const{config:t,name:i}=e;o[i]=E(t,n,a[i])}})))))),o}function S(e){const t={};return Object.keys(e).forEach((n=>{const a=e[n];t[n]=a.value})),t}var x=n(20620),w=n(62446),A=n(46306);const R=(e,t,n)=>t.options&&"string"==typeof n&&(Array.isArray(t.options)&&t.options.some((e=>e[0]===n))||n in t.options)?e.columns.some((e=>e.column_name===n)):t.savedMetrics&&(0,x.AG)(n)&&t.savedMetrics.some((e=>e.metric_name===n))?e.metrics.some((e=>e.metric_name===n)):!(!t.columns||!(0,w.n)(n)&&!(0,A.Ki)(n)||!t.columns.some((e=>{var t;return e.column_name===(null==(t=n.column)?void 0:t.column_name)||e.column_name===n.subject})))&&e.columns.some((e=>{var t;return e.column_name===(null==(t=n.column)?void 0:t.column_name)||e.column_name===n.subject})),D=(e,t,n)=>{if(null!=n){if(Array.isArray(n)){const a=n.filter((n=>R(e,t,n)));return a.length>0?a:t.default}return R(e,t,n)?n:t.default}};var L=n(25325),O=n.n(L),M=n(41609),I=n.n(M),k=n(35854);const N={metric:"metrics",metrics:"metrics",metric_2:"metrics",groupby:"columns",columns:"columns",groupbyColumns:"columns",groupbyRows:"columns"},P={metrics:[],columns:[]};Object.entries(N).forEach((([e,t])=>P[t].push(e)));const F=["granularity_sqla","time_grain_sqla","time_range","adhoc_filters","limit","timeseries_limit_metric","series_limit_metric","order_desc","row_limit","x_axis","rolling_type","rolling_periods","min_periods","time_compare","comparison_type","resample_rule","resample_method"];class ${constructor(e){var t;this.sfd=void 0;const n=Object.freeze(e),a=Array.isArray(null==n||null==(t=n.standardizedFormData)?void 0:t.memorizedFormData)?new Map(n.standardizedFormData.memorizedFormData):new Map,o=n.viz_type;a.has(o)&&a.delete(o),a.set(o,n);const i=$.getStandardizedState(n);this.sfd={standardizedState:i,memorizedFormData:a}}static getStandardizedState(e){var t;let n={metrics:[],columns:[]};Object.entries(e).forEach((([e,t])=>{e in N&&n[N[e]].push(...(0,C.Z)(t))}));let a={metrics:[],columns:[]};null!=e&&null!=(t=e.standardizedFormData)&&t.standardizedState&&Array.isArray(e.standardizedFormData.standardizedState.metrics)&&Array.isArray(e.standardizedFormData.standardizedState.columns)&&(a=e.standardizedFormData.standardizedState),I()(a.metrics)&&I()(a.columns)&&(a=n),Object.keys(P).forEach((t=>{I()(O()(Object.keys(e),P[t]))&&(n[t]=a[t])}));const o=(0,i.Z)().get(e.viz_type);return null!=o&&o.updateStandardizedState&&(n=o.updateStandardizedState(a,n)),Object.entries(n).forEach((([e,t])=>{n[e]=t.filter(Boolean)})),n}getLatestFormData(e){return this.has(e)?this.get(e):this.memorizedFormData.slice(-1)[0][1]}get standardizedState(){return this.sfd.standardizedState}get memorizedFormData(){return Array.from(this.sfd.memorizedFormData.entries())}serialize(){return{standardizedState:this.standardizedState,memorizedFormData:this.memorizedFormData}}has(e){return this.sfd.memorizedFormData.has(e)}get(e){return this.sfd.memorizedFormData.get(e)}transform(e,t){const n=this.getLatestFormData(e),a={};F.forEach((e=>{e in t.form_data&&(a[e]=t.form_data[e])}));const o=(0,k.R3)(t,{...n,...a,viz_type:e}),r={...S(o),standardizedFormData:this.serialize()},s=(0,i.Z)().get(e);if(null!=s&&s.denormalizeFormData){const e=s.denormalizeFormData(r);return{formData:e,controlsState:(0,k.R3)(t,e)}}return{formData:r,controlsState:o}}}},42190:(e,t,n)=>{n.d(t,{ni:()=>a,l6:()=>s,s_:()=>c});var a,o=n(22102),i=n(67294);!function(e){e.LOADING="loading",e.COMPLETE="complete",e.ERROR="error"}(a||(a={}));const r={status:a.LOADING,result:null,error:null};function s(e,t){return(0,i.useMemo)((()=>{if(e.status!==a.COMPLETE)return e;try{return{...e,result:t(e.result)}}catch(e){return{status:a.ERROR,result:null,error:e}}}),[e,t])}const l=e=>e.result;function c(e){return s(function(e){const[t,n]=(0,i.useState)(r),s=(0,i.useRef)((()=>{}));return(0,i.useEffect)((()=>{n(r),s.current();let t=!1;return s.current=()=>{t=!0},(0,o.Z)({method:"GET",endpoint:e})({}).then((e=>{t||n({status:a.COMPLETE,result:e,error:null})})).catch((e=>{t||n({status:a.ERROR,result:null,error:e})})),()=>{t=!0}}),[e]),t}(e),l)}},65013:(e,t,n)=>{n.d(t,{d:()=>o});var a=n(67294);const o=e=>{const t=(0,a.useRef)(!1);(0,a.useEffect)((()=>{t.current?e():t.current=!0}),[e])}},60812:(e,t,n)=>{n.d(t,{D:()=>o});var a=n(67294);function o(e,t){const n=(0,a.useRef)(t);return(0,a.useEffect)((()=>{n.current=e}),[e]),n.current}},3741:(e,t,n)=>{n.d(t,{W9:()=>a,aD:()=>o,Ev:()=>i,Wl:()=>r,$b:()=>s,Iq:()=>l,TD:()=>c,Ep:()=>d,vH:()=>u,H3:()=>p,S:()=>h,oK:()=>m,PC:()=>g,Qg:()=>f,TY:()=>v,Yd:()=>b});const a="load_chart",o="render_chart",i="hide_browser_tab",r="mount_dashboard",s="mount_explorer",l="select_dashboard_tab",c="force_refresh_chart",d="change_explore_controls",u="toggle_edit_dashboard",p="force_refresh_dashboard",h="periodic_render_dashboard",m="explore_dashboard_chart",g="export_csv_dashboard_chart",f="change_dashboard_filter",v=new Set([a,o,i]),b=(new Set([r,l,m,c,g,f,d,u,p,h,s]),{timeOriginOffset:0,markTimeOrigin(){this.timeOriginOffset=window.performance.now()},getTimestamp(){return Math.round(window.performance.now()-this.timeOriginOffset)}})},97381:(e,t,n)=>{n.r(t),n.d(t,{LOG_EVENT:()=>a,logEvent:()=>o});const a="LOG_EVENT";function o(e,t){return n=>n({type:a,payload:{eventName:e,eventData:t}})}},77997:(e,t,n)=>{n.d(t,{YJ:()=>y});var a=n(31069),o=n(55786),i=n(68492),r=n(22102),s=n(91877),l=n(93185),c=n(98286);const d="polling",u="last_async_event_id";let p,h,m,g,f,v,b;const y=async e=>new Promise(((t,n)=>{const r=e.job_id;var s;s=async e=>{switch(e.status){case"done":{let{data:i,status:r}=await(async e=>{let t,n="success";try{const{json:n}=await a.Z.get({endpoint:String(e.result_url)});t="result"in n?n.result:n}catch(e){n="error",t=await(0,c.O)(e)}return{status:n,data:t}})(e);i=(0,o.Z)(i),"success"===r?t(i):n(i);break}case"error":{const t=(0,c.M)(e);n(t);break}default:i.Z.warn("received event with status",e.status)}var s;f[s=r]&&delete f[s]},f[r]=s})),_=(0,r.Z)({method:"GET",endpoint:"/api/v1/async_event/"}),C=async e=>{e.forEach((e=>{const t=e.job_id,n=f[t];n?(n(e),delete v[t]):(v[t]||(v[t]=0),v[t]+=1,v[t]<=6?setTimeout((()=>{C([e])}),100*v[t]):(delete v[t],i.Z.warn("listener not found for job_id",e.job_id))),(e=>{b=e.id;try{localStorage.setItem(u,b)}catch(e){i.Z.warn("Error saving event Id to localStorage",e)}})(e)}))},Z=async()=>{const e=b?{last_id:b}:{};if(Object.keys(f).length)try{const{result:t}=await _(e);t&&t.length&&await C(t)}catch(e){i.Z.warn(e)}h===d&&(g=window.setTimeout(Z,m))};let E,T,S=0;const x=()=>{let e=p.GLOBAL_ASYNC_QUERIES_WEBSOCKET_URL;b&&(e+=`?last_id=${b}`),T=new WebSocket(e),T.addEventListener("open",(()=>{i.Z.log("WebSocket connected"),clearTimeout(E),S=0})),T.addEventListener("close",(()=>{E=setTimeout((()=>{S+=1,S<=6?x():(i.Z.warn("WebSocket not available, falling back to async polling"),Z())}),2500)})),T.addEventListener("error",(()=>{T.readyState<2&&T.close()})),T.addEventListener("message",(async e=>{let t=[];try{t=[JSON.parse(e.data)],await C(t)}catch(e){i.Z.warn(e)}}))};(e=>{if((0,s.cr)(l.T.GLOBAL_ASYNC_QUERIES)){g&&clearTimeout(g),f={},v={},b=null;{const e=document.getElementById("app");if(e){var t;const n=JSON.parse((null==e?void 0:e.getAttribute("data-bootstrap"))||"{}");p=null==n||null==(t=n.common)?void 0:t.conf}else p={},i.Z.warn("asyncEvent: app config data not found")}h=p.GLOBAL_ASYNC_QUERIES_TRANSPORT||d,m=p.GLOBAL_ASYNC_QUERIES_POLLING_DELAY||500;try{b=localStorage.getItem(u)}catch(e){i.Z.warn("Failed to fetch last event Id from localStorage")}h===d&&Z(),"ws"===h&&x()}})()},5558:(e,t,n)=>{n.d(t,{A:()=>i});var a=n(68630),o=n.n(a);function i(e){return function(e){return o()(e)&&"username"in e}(e)&&"permissions"in e&&"roles"in e}},53350:(e,t,n)=>{n.d(t,{Q:()=>a});const a=(e,t=!1)=>(n,a=!1)=>{const o=a||t;if(!n&&e)return o?e:{"data-test":e};if(n&&!e)return o?n:{"data-test":n};if(!n&&!e)return console.warn('testWithId function has missed "prefix" and "id" params'),o?"":{"data-test":""};const i=`${e}__${n}`;return o?i:{"data-test":i}}},8911:(e,t,n)=>{n.d(t,{Z:()=>a});const a=(()=>{let e;try{e=n(Object(function(){var e=new Error("Cannot find module '../../../superset_text'");throw e.code="MODULE_NOT_FOUND",e}()))}catch(t){e={}}return e})()},23525:(e,t,n)=>{n.d(t,{eY:()=>p,YE:()=>b,Nm:()=>y});var a=n(41609),o=n.n(a),i=n(31069),r=n(15926),s=n.n(r),l=n(98286),c=n(27600),d=n(43399),u=n(11370);function p({name:e,type:t}){const n=new URLSearchParams(window.location.search).get(e);switch(t){case"number":return n?"true"===n?1:"false"===n?0:Number.isNaN(Number(n))?null:Number(n):null;case"object":return n?JSON.parse(n):null;case"boolean":return n?"false"!==n&&"0"!==n:null;case"rison":if(!n)return null;try{return s().decode(n)}catch{return n}default:return n}}function h(e){const t=new URLSearchParams;return new URLSearchParams(window.location.search).forEach(((n,a)=>{e.includes(a)||t.append(a,n)})),t}function m(e){const t=[];return e.forEach(((e,n)=>t.push([n,e]))),t}function g(e){const t=e||c.$O,n=h(t),a=(0,d.De)();return o()(a)||t.includes(c.KD.preselectFilters.name)||n.append(c.KD.preselectFilters.name,JSON.stringify((0,u.Z)((0,d.De)()))),m(n)}function f(){const e=h(c.Rv),t=(0,d.De)();return o()(t)||e.append(c.KD.preselectFilters.name,JSON.stringify((0,u.Z)((0,d.De)()))),m(e)}function v(e,t){return i.Z.post({endpoint:e,jsonPayload:t}).then((e=>e.json.url)).catch((e=>(0,l.O)(e).then((({error:e,statusText:t})=>Promise.reject(e||t)))))}function b(e,t){return v("/api/v1/explore/permalink",{formData:e,urlParams:g(t)})}function y({dashboardId:e,filterState:t,hash:n}){return v(`/api/v1/dashboard/${e}/permalink`,{filterState:t,urlParams:f(),hash:n})}},52389:(e,t,n)=>{n.d(t,{IV:()=>o,dY:()=>i,iX:()=>r,mI:()=>s});var a=n(61988);const o=25,i=[{id:"changed_on_delta_humanized",desc:!0}],r=(0,a.t)('The passwords for the databases below are needed in order to import them together with the datasets. Please note that the "Secure Extra" and "Certificate" sections of the database configuration are not present in export files, and should be added manually after the import if they are needed.'),s=(0,a.t)("You are importing one or more datasets that already exist. Overwriting might cause you to lose some of your work. Are you sure you want to overwrite?")},34858:(e,t,n)=>{n.d(t,{Yi:()=>m,LE:()=>g,PW:()=>f,NE:()=>y,fF:()=>_,bR:()=>C,rM:()=>Z,jb:()=>E,z:()=>T,xx:()=>S,cb:()=>x,h1:()=>w,_l:()=>A});var a=n(15926),o=n.n(a),i=n(67294),r=n(31069),s=n(61988),l=n(22102),c=n(40768),d=n(10222),u=n(98286),p=n(8911);const h=e=>"string"==typeof e?e:Object.entries(e).map((([e,t])=>Array.isArray(t)?`(${e}) ${t.join(", ")}`:`(${e}) ${t}`)).join("\n");function m(e,t,n,a=!0,l=[],d,u=!0){const[p,h]=(0,i.useState)({count:0,collection:l,loading:u,lastFetchDataConfig:null,permissions:[],bulkSelectEnabled:!1});function m(e){h((t=>({...t,...e})))}(0,i.useEffect)((()=>{a&&r.Z.get({endpoint:`/api/v1/${e}/_info?q=${o().encode({keys:["permissions"]})}`}).then((({json:e={}})=>{m({permissions:e.permissions})}),(0,c.v$)((e=>n((0,s.t)("An error occurred while fetching %s info: %s",t,e)))))}),[]);const g=(0,i.useCallback)((({pageIndex:a,pageSize:i,sortBy:l,filters:u})=>{m({lastFetchDataConfig:{filters:u,pageIndex:a,pageSize:i,sortBy:l},loading:!0});const p=(d||[]).concat(u).map((({id:e,operator:t,value:n})=>({col:e,opr:t,value:n&&"object"==typeof n&&"value"in n?n.value:n}))),h=o().encode_uri({order_column:l[0].id,order_direction:l[0].desc?"desc":"asc",page:a,page_size:i,...p.length?{filters:p}:{}});return r.Z.get({endpoint:`/api/v1/${e}/?q=${h}`}).then((({json:e={}})=>{m({collection:e.result,count:e.count,lastFetched:(new Date).toISOString()})}),(0,c.v$)((e=>n((0,s.t)("An error occurred while fetching %ss: %s",t,e))))).finally((()=>{m({loading:!1})}))}),[d]);return{state:{loading:p.loading,resourceCount:p.count,resourceCollection:p.collection,bulkSelectEnabled:p.bulkSelectEnabled,lastFetched:p.lastFetched},setResourceCollection:e=>m({collection:e}),hasPerm:function(e){return!!p.permissions.length&&Boolean(p.permissions.find((t=>t===e)))},fetchData:g,toggleBulkSelect:function(){m({bulkSelectEnabled:!p.bulkSelectEnabled})},refreshData:e=>p.lastFetchDataConfig?g(p.lastFetchDataConfig):e?g(e):null}}function g(e,t,n){const[a,o]=(0,i.useState)({loading:!1,resource:null,error:null});function l(e){o((t=>({...t,...e})))}return{state:a,setResource:e=>l({resource:e}),fetchResource:(0,i.useCallback)((a=>(l({loading:!0}),r.Z.get({endpoint:`/api/v1/${e}/${a}`}).then((({json:e={}})=>(l({resource:e.result,error:null}),e.result)),(0,c.v$)((e=>{n((0,s.t)("An error occurred while fetching %ss: %s",t,h(e))),l({error:e})}))).finally((()=>{l({loading:!1})})))),[n,e,t]),createResource:(0,i.useCallback)(((a,o=!1)=>(l({loading:!0}),r.Z.post({endpoint:`/api/v1/${e}/`,body:JSON.stringify(a),headers:{"Content-Type":"application/json"}}).then((({json:e={}})=>(l({resource:{id:e.id,...e.result},error:null}),e.id)),(0,c.v$)((e=>{o||n((0,s.t)("An error occurred while creating %ss: %s",t,h(e))),l({error:e})}))).finally((()=>{l({loading:!1})})))),[n,e,t]),updateResource:(0,i.useCallback)(((a,o,i=!1,d=!0)=>(d&&l({loading:!0}),r.Z.put({endpoint:`/api/v1/${e}/${a}`,body:JSON.stringify(o),headers:{"Content-Type":"application/json"}}).then((({json:e={}})=>(l({resource:{...e.result,id:e.id},error:null}),e.result)),(0,c.v$)((e=>(i||n((0,s.t)("An error occurred while fetching %ss: %s",t,JSON.stringify(e))),l({error:e}),e)))).finally((()=>{d&&l({loading:!1})})))),[n,e,t]),clearError:()=>l({error:null})}}function f(e,t,n){const[a,o]=(0,i.useState)({loading:!1,passwordsNeeded:[],alreadyExists:[],failed:!1});function l(e){o((t=>({...t,...e})))}return{state:a,importResource:(0,i.useCallback)(((a,o={},i=!1)=>{l({loading:!0,failed:!1});const d=new FormData;return d.append("formData",a),o&&d.append("passwords",JSON.stringify(o)),i&&d.append("overwrite","true"),r.Z.post({endpoint:`/api/v1/${e}/import/`,body:d,headers:{Accept:"application/json"}}).then((()=>(l({passwordsNeeded:[],alreadyExists:[],failed:!1}),!0))).catch((e=>(0,u.O)(e).then((e=>(l({failed:!0}),e.errors?((0,c.Er)(e.errors)?n((0,s.t)("An error occurred while importing %s: %s",t,[...e.errors.map((e=>e.message)),(0,s.t)("Please re-export your file and try importing again")].join("\n"))):l({passwordsNeeded:(0,c.$u)(e.errors),alreadyExists:(0,c.cE)(e.errors)}),!1):(n((0,s.t)("An error occurred while importing %s: %s",t,e.message||e.error)),!1)))))).finally((()=>{l({loading:!1})}))}),[])}}var v;!function(e){e.CHART="slice",e.DASHBOARD="Dashboard"}(v||(v={}));const b={chart:(0,l.Z)({requestType:"rison",method:"GET",endpoint:"/api/v1/chart/favorite_status/"}),dashboard:(0,l.Z)({requestType:"rison",method:"GET",endpoint:"/api/v1/dashboard/favorite_status/"})};function y(e,t,n){const[a,o]=(0,i.useState)({}),l=e=>o((t=>({...t,...e})));return(0,i.useEffect)((()=>{t.length&&b[e](t).then((({result:e})=>{const t=e.reduce(((e,t)=>(e[t.id]=t.value,e)),{});l(t)}),(0,c.v$)((e=>n((0,s.t)("There was an error fetching the favorite status: %s",e)))))}),[t,e,n]),[(0,i.useCallback)(((t,a)=>{const o=a?"unselect":"select";r.Z.get({endpoint:`/superset/favstar/${"chart"===e?v.CHART:v.DASHBOARD}/${t}/${o}/`}).then((({json:e})=>{l({[t]:(null==e?void 0:e.count)>0})}),(0,c.v$)((e=>n((0,s.t)("There was an error saving the favorite status: %s",e)))))}),[e]),a]}const _=(e,t)=>{const[n,a]=(0,i.useState)(null);return{sliceCurrentlyEditing:n,handleChartUpdated:function(n){const a=t.map((e=>e.id===n.id?{...e,...n}:e));e(a)},openChartEditModal:function(e){a({slice_id:e.id,slice_name:e.slice_name,description:e.description,cache_timeout:e.cache_timeout,certified_by:e.certified_by,certification_details:e.certification_details,is_managed_externally:e.is_managed_externally})},closeChartEditModal:function(){a(null)}}},C=(e,t,n)=>{(0,d.Z)((()=>Promise.resolve(`${window.location.origin}/superset/sqllab?savedQueryId=${e}`))).then((()=>{n((0,s.t)("Link Copied!"))})).catch((()=>{t((0,s.t)("Sorry, your browser does not support copying."))}))},Z=()=>p.Z.DB_IMAGES,E=()=>p.Z.DB_CONNECTION_ALERTS,T=()=>p.Z.DB_CONNECTION_DOC_LINKS,S=(e,t,n)=>{r.Z.post({endpoint:"api/v1/database/test_connection",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}}).then((()=>{n((0,s.t)("Connection looks good!"))}),(0,c.v$)((e=>{t((0,s.t)("ERROR: %s",h(e)))})))};function x(){const[e,t]=(0,i.useState)(null);return[e,(0,i.useCallback)((()=>{r.Z.get({endpoint:"/api/v1/database/available/"}).then((({json:e})=>{t(e)}))}),[t])]}function w(){const[e,t]=(0,i.useState)(null);return[e,(0,i.useCallback)(((e,n=!1)=>r.Z.post({endpoint:"/api/v1/database/validate_parameters",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}}).then((()=>{t(null)})).catch((e=>{if("function"==typeof e.json)return e.json().then((({errors:e=[]})=>{const a=e.filter((e=>!["CONNECTION_MISSING_PARAMETERS_ERROR","CONNECTION_ACCESS_DENIED_ERROR"].includes(e.error_type)||n)).reduce(((e,{error_type:t,extra:n,message:a})=>{var o,i;return n.catalog?n.catalog.name?{...e,error_type:t,[n.catalog.idx]:{name:a}}:n.catalog.url?{...e,error_type:t,[n.catalog.idx]:{url:a}}:{...e,error_type:t,[n.catalog.idx]:{name:a,url:a}}:n.invalid?{...e,[n.invalid[0]]:a,error_type:t}:n.missing?{...e,error_type:t,...Object.assign({},...n.missing.map((e=>({[e]:"This is a required field"}))))}:null!=(o=n.issue_codes)&&o.length?{...e,error_type:t,description:a||(null==(i=n.issue_codes[0])?void 0:i.message)}:e}),{});return t(a),a}));console.error(e)}))),[t]),t]}const A=(e,t,n)=>{var a;return n?null==(a=e.reports[t])?void 0:a[n]:{}}},40768:(e,t,n)=>{n.d(t,{IV:()=>f,Ld:()=>b,B1:()=>y,Hn:()=>_,tm:()=>C,wk:()=>Z,v$:()=>E,Gm:()=>T,Iu:()=>S,IB:()=>x,iv:()=>w,mq:()=>A,_L:()=>R,ZB:()=>D,xL:()=>L,$u:()=>I,cE:()=>k,Er:()=>N,Mc:()=>F});var a=n(25325),o=n.n(a),i=n(31069),r=n(61988),s=n(68492),l=n(51995),c=n(11965),d=n(15926),u=n.n(d),p=n(98286),h=n(8911),m=n(70695);(()=>{const e=u(),t=[];for(let e=0;e<16;e+=1)for(let n=0;n<16;n+=1){if(e+n===0)continue;const a=String.fromCharCode(16*e+n);/\w|[-_./~]/.test(a)||t.push(`\\u00${e.toString(16)}${n.toString(16)}`)}e.not_idchar=t.join(""),e.not_idstart="-0123456789";const n=`[^${e.not_idstart}${e.not_idchar}][^${e.not_idchar}]*`;e.id_ok=new RegExp(`^${n}$`),e.next_id=new RegExp(n,"g")})();const g=e=>(t,n,a,o)=>async(a="",r,s)=>{var l;const c=`/api/v1/${t}/${e}/${n}`,d=u().encode_uri({filter:a,page:r,page_size:s}),{json:p={}}=await i.Z.get({endpoint:`${c}?q=${d}`});let h=!1;const m=o?{label:`${o.firstName} ${o.lastName}`,value:o.userId}:void 0,g=[];return null==p||null==(l=p.result)||l.forEach((({text:e,value:t})=>{m&&t===m.value&&e===m.label?h=!0:g.push({label:e,value:t})})),!m||a&&!h||g.unshift(m),{data:g,totalCount:null==p?void 0:p.count}},f=5,v=e=>{const t={order_column:"changed_on_delta_humanized",order_direction:"desc",page:0,page_size:f,filters:e};return e||delete t.filters,u().encode(t)},b=e=>{const t={edited:[{col:"changed_by",opr:"rel_o_m",value:`${e}`}]},n=[i.Z.get({endpoint:`/api/v1/dashboard/?q=${v(t.edited)}`}),i.Z.get({endpoint:`/api/v1/chart/?q=${v(t.edited)}`})];return Promise.all(n).then((([e,t])=>{var n,a;return{editedDash:null==(n=t.json)?void 0:n.result.slice(0,3),editedChart:null==(a=e.json)?void 0:a.result.slice(0,3)}})).catch((e=>e))},y=(e,t,n=[{col:"owners",opr:"rel_m_m",value:`${e}`}])=>i.Z.get({endpoint:`/api/v1/${t}/?q=${v(n)}`}).then((e=>{var t;return null==(t=e.json)?void 0:t.result})),_=(e,t,n)=>i.Z.get({endpoint:t}).then((e=>{const t={},a=[{col:"created_by",opr:"rel_o_m",value:0}],o=[i.Z.get({endpoint:`/api/v1/chart/?q=${v(a)}`}),i.Z.get({endpoint:`/api/v1/dashboard/?q=${v(a)}`})];return Promise.all(o).then((([n,a])=>(t.examples=[...n.json.result,...a.json.result],t.viewed=e.json,t))).catch((e=>n((0,r.t)("There was an error fetching your recent activity:"),e)))})),C=g("related"),Z=g("distinct");function E(e){return async t=>{const n=await(0,p.O)(t),a=null==n?void 0:n.errors,o=await h.Z;a&&a.length&&o&&o.ERRORS&&a[0].error_type in o.ERRORS&&(n.message=o.ERRORS[a[0].error_type]),s.Z.error(t),e(n.message||n.error)}}function T({id:e,slice_name:t},n,a,o,s,l){const c={pageIndex:0,pageSize:f,sortBy:[{id:"changed_on_delta_humanized",desc:!0}],filters:[{id:"created_by",operator:"rel_o_m",value:`${l}`}]};i.Z.delete({endpoint:`/api/v1/chart/${e}`}).then((()=>{"Mine"===s?o(c):o(),n((0,r.t)("Deleted: %s",t))}),(()=>{a((0,r.t)("There was an issue deleting: %s",t))}))}function S({id:e,dashboard_title:t},n,a,o,s,l){return i.Z.delete({endpoint:`/api/v1/dashboard/${e}`}).then((()=>{"Mine"===s?n({pageIndex:0,pageSize:f,sortBy:[{id:"changed_on_delta_humanized",desc:!0}],filters:[{id:"owners",operator:"rel_m_m",value:`${l}`}]}):n(),a((0,r.t)("Deleted: %s",t))}),E((e=>o((0,r.t)("There was an issue deleting %s: %s",t,e)))))}function x(e,t){let n=e.split("\n");return n.length>=t&&(n=n.slice(0,t),n.push("...")),n.join("\n")}const w=5,A=[576,768,992,1200].map((e=>`@media (max-width: ${e}px)`)),R=l.iK.div` ${({showThumbnails:e,theme:t})=>`\n overflow: hidden;\n display: grid;\n grid-gap: ${12*t.gridUnit}px ${4*t.gridUnit}px;\n grid-template-columns: repeat(auto-fit, 300px);\n max-height: ${e?"314":"148"}px;\n margin-top: ${-6*t.gridUnit}px;\n padding: ${e?`${8*t.gridUnit+3}px ${9*t.gridUnit}px`:`${8*t.gridUnit+1}px ${9*t.gridUnit}px`};\n `} `,D=l.iK.div` cursor: pointer; a { text-decoration: none; } .ant-card-cover > div { /* Height is calculated based on 300px width, to keep the same aspect ratio as the 800*450 thumbnails */ height: 168px; } `,L=e=>c.iv` margin: auto ${2*e.gridUnit}px auto 0; color: ${e.colors.grayscale.base}; `,O=e=>"object"==typeof e&&Array.isArray(e._schema)&&1===e._schema.length&&"Must provide a password for the database"===e._schema[0],M=e=>"string"==typeof e&&e.includes("already exists and `overwrite=true` was not passed"),I=e=>e.map((e=>Object.entries(e.extra).filter((([,e])=>O(e))).map((([e])=>e)))).flat(),k=e=>e.map((e=>Object.entries(e.extra).filter((([,e])=>M(e))).map((([e])=>e)))).flat(),N=e=>e.some((e=>{const t=Object.entries(e.extra).filter((([e])=>"issue_codes"!==e));return 0===t.length||!t.every((([,e])=>O(e)||M(e)))})),P=(e,t)=>void 0!==e&&o()(e,t).length>0,F=(e,t,n,a,o)=>{const i=(0,m.ZP)("can_this_form_get","CsvToDatabaseView",e)&&P(t,o),r=P(n,o)&&(0,m.ZP)("can_this_form_get","ColumnarToDatabaseView",e),s=P(a,o)&&(0,m.ZP)("can_this_form_get","ExcelToDatabaseView",e);return{canUploadCSV:i,canUploadColumnar:r,canUploadExcel:s,canUploadData:i||r||s}}}}]); //# sourceMappingURL=3389.e22df7156d4c7985a2e1.entry.js.map