D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
build
/
Filename :
2787.fa535543dd9b82b9916f.js
back
Copy
"use strict";(self.webpackChunkgrafana=self.webpackChunkgrafana||[]).push([[2787],{5562:(cs,ae,m)=>{m.d(ae,{i:()=>h});var U=m(42844),re=m(27702),xe=m(66310);const h=({hideLine:A=!1})=>{const z=(0,xe.wW)(r);return A?re.createElement("hr",{className:z.dividerHideLine}):re.createElement("hr",{className:z.divider})},r=A=>({divider:(0,U.css)` margin: ${A.spacing(4,0)}; `,dividerHideLine:(0,U.css)` border: none; margin: ${A.spacing(3,0)}; `})},2787:(cs,ae,m)=>{m.r(ae),m.d(ae,{plugin:()=>Na});var U=m(68246),re=m(84714),xe=m(32713),h=m(42844),r=m(27702),A=m(8508),z=m(63439),H=m(66310),Ke=m(9857),G=m(53901),f=m(48024),E=m(1128);const us=t=>(e,s)=>{const n={};for(const a in t)n[a]=t[a](e[a],s);return n},Ie=(t,e,s)=>(0,r.useCallback)(a=>{t(s(e,a))},[t,e,s]),Ye=(0,r.createContext)(void 0),T=()=>{const t=(0,r.useContext)(Ye);if(!t)throw new Error("Use DispatchContext first.");return t},Je=t=>({name:t,pipelineAgg:""}),Ze=t=>`var${Math.max(0,...t.map(e=>parseInt(e.name.match("^var(\\d+)$")?.[1]||"0",10)))+1}`,Xe=t=>t.settings?.model==="ewma",Me=t=>t.settings?.model==="holt",ie=t=>t.settings?.model==="holt_winters",ds=t=>["holt","ewma","holt_winters"].includes(t.settings?.model||""),N=t=>b[t.type].requiresField,K=t=>b[t.type].isPipelineAgg,le=t=>b[t.type].supportsMultipleBucketPaths,gs=t=>b[t.type].supportsMissing,we=t=>b[t.type].hasSettings,ms=t=>b[t.type].hasMeta,et=t=>b[t.type].supportsInlineScript,ps=["count","avg","sum","min","max","extended_stats","percentiles","cardinality","raw_document","raw_data","logs","moving_avg","moving_fn","derivative","serial_diff","cumulative_sum","bucket_script","rate","top_metrics"],fs=t=>ps.includes(t),b={count:{label:"Count",impliedQueryType:"metrics",requiresField:!1,isPipelineAgg:!1,supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!1,hasMeta:!1,supportsInlineScript:!1,defaults:{}},avg:{label:"Average",impliedQueryType:"metrics",requiresField:!0,supportsInlineScript:!0,supportsMissing:!0,isPipelineAgg:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,hasMeta:!1,defaults:{}},sum:{label:"Sum",impliedQueryType:"metrics",requiresField:!0,supportsInlineScript:!0,supportsMissing:!0,isPipelineAgg:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,hasMeta:!1,defaults:{}},max:{label:"Max",impliedQueryType:"metrics",requiresField:!0,supportsInlineScript:!0,supportsMissing:!0,isPipelineAgg:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,hasMeta:!1,defaults:{}},min:{label:"Min",impliedQueryType:"metrics",requiresField:!0,supportsInlineScript:!0,supportsMissing:!0,isPipelineAgg:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,hasMeta:!1,defaults:{}},extended_stats:{label:"Extended Stats",impliedQueryType:"metrics",requiresField:!0,supportsMissing:!0,supportsInlineScript:!0,isPipelineAgg:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,hasMeta:!0,defaults:{meta:{std_deviation_bounds_lower:!0,std_deviation_bounds_upper:!0}}},percentiles:{label:"Percentiles",impliedQueryType:"metrics",requiresField:!0,supportsMissing:!0,supportsInlineScript:!0,isPipelineAgg:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,hasMeta:!1,defaults:{settings:{percents:["25","50","75","95","99"]}}},cardinality:{label:"Unique Count",impliedQueryType:"metrics",requiresField:!0,supportsMissing:!0,isPipelineAgg:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,supportsInlineScript:!1,hasMeta:!1,defaults:{}},moving_avg:{label:"Moving Average",impliedQueryType:"metrics",requiresField:!0,isPipelineAgg:!0,versionRange:"<8.0.0",supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,supportsInlineScript:!1,hasMeta:!1,defaults:{settings:{model:"simple",window:"5"}}},moving_fn:{label:"Moving Function",impliedQueryType:"metrics",requiresField:!0,isPipelineAgg:!0,supportsMultipleBucketPaths:!1,supportsInlineScript:!1,supportsMissing:!1,hasMeta:!1,hasSettings:!0,defaults:{}},derivative:{label:"Derivative",impliedQueryType:"metrics",requiresField:!0,isPipelineAgg:!0,supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,supportsInlineScript:!1,hasMeta:!1,defaults:{}},serial_diff:{label:"Serial Difference",impliedQueryType:"metrics",requiresField:!0,isPipelineAgg:!0,supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,supportsInlineScript:!1,hasMeta:!1,defaults:{settings:{lag:"1"}}},cumulative_sum:{label:"Cumulative Sum",impliedQueryType:"metrics",requiresField:!0,isPipelineAgg:!0,supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,supportsInlineScript:!1,hasMeta:!1,defaults:{}},bucket_script:{label:"Bucket Script",impliedQueryType:"metrics",requiresField:!1,isPipelineAgg:!0,supportsMissing:!1,supportsMultipleBucketPaths:!0,hasSettings:!0,supportsInlineScript:!1,hasMeta:!1,defaults:{pipelineVariables:[Je(Ze([]))]}},raw_document:{label:"Raw Document (deprecated)",requiresField:!1,impliedQueryType:"raw_document",isPipelineAgg:!1,supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,supportsInlineScript:!1,hasMeta:!1,defaults:{settings:{size:"500"}}},raw_data:{label:"Raw Data",requiresField:!1,impliedQueryType:"raw_data",isPipelineAgg:!1,supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,supportsInlineScript:!1,hasMeta:!1,defaults:{settings:{size:"500"}}},logs:{label:"Logs",requiresField:!1,isPipelineAgg:!1,supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,impliedQueryType:"logs",supportsInlineScript:!1,hasMeta:!1,defaults:{settings:{limit:"500"}}},top_metrics:{label:"Top Metrics",impliedQueryType:"metrics",requiresField:!1,isPipelineAgg:!1,supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,supportsInlineScript:!1,hasMeta:!1,defaults:{settings:{order:"desc"}}},rate:{label:"Rate",impliedQueryType:"metrics",requiresField:!0,isPipelineAgg:!1,supportsMissing:!1,supportsMultipleBucketPaths:!1,hasSettings:!0,supportsInlineScript:!0,hasMeta:!1,defaults:{}}},hs={moving_avg:[{label:"window",default:5},{label:"model",default:"simple"},{label:"predict"},{label:"minimize",default:!1}],moving_fn:[{label:"window",default:5},{label:"script"}],derivative:[{label:"unit"}],serial_diff:[{label:"lag"}],cumulative_sum:[{label:"format"}],bucket_script:[]},tt=(t,e)=>{const s=e.filter(n=>le(n)?n.pipelineVariables?.some(a=>a.pipelineAgg===t.id):N(n)&&t.id===n.field);return[...s,...s.flatMap(n=>tt(n,e))]},Te=[{label:"Avg",value:"avg"},{label:"Min",value:"min"},{label:"Max",value:"max"},{label:"Sum",value:"sum"},{label:"Count",value:"count"},{label:"Std Dev",value:"std_deviation"},{label:"Std Dev Upper",value:"std_deviation_bounds_upper"},{label:"Std Dev Lower",value:"std_deviation_bounds_lower"}],ys=[{label:"Simple",value:"simple"},{label:"Linear",value:"linear"},{label:"Exponentially Weighted",value:"ewma"},{label:"Holt Linear",value:"holt"},{label:"Holt Winters",value:"holt_winters"}],oe={pre:"@HIGHLIGHT@",post:"@/HIGHLIGHT@"};function ce(t="1"){return{type:"count",id:t}}function ue(t="1"){return{type:"date_histogram",id:t,settings:{interval:"auto"}}}const st=(t,e)=>t.find(s=>s.id===e);function De(t,e){return!!t?.metrics?.some(s=>s.type===e)}function vs(t){return t in hs}function Es(t){return!!b[t].supportsMultipleBucketPaths}var Pe=m(4763);const k=t=>N(t)?`${b[t.type].label} ${t.field}`:b[t.type].label,Ce=t=>Object.entries(t).reduce((e,[s,n])=>{if(n==null)return{...e};if(Array.isArray(n)&&n.length===0)return{...e};if(typeof n=="string"&&n.length===0)return{...e};if(!Array.isArray(n)&&typeof n=="object"){const a=Ce(n);return Object.keys(a).length===0?{...e}:{...e,[s]:a}}return{...e,[s]:n}},{}),nt=t=>{const e=t.match(/^(\d+)/);return e?e[1]:void 0},Y=t=>(typeof t.settings?.script=="object"?t.settings?.script?.inline:t.settings?.script)||"",at=t=>!!(0,Pe.gte)(t,"7.16.0"),rt="Support for Elasticsearch versions after their end-of-life (currently versions < 7.16) was removed. Using unsupported version of Elasticsearch may lead to unexpected and incorrect results.",it=t=>t?.bucketAggs?.slice(-1)[0]?.type==="date_histogram";var F=m(34099);const lt=(0,F.PH)("@metrics/add"),ot=(0,F.PH)("@metrics/remove"),ct=(0,F.PH)("@metrics/toggle_visibility"),_e=(0,F.PH)("@metrics/change_field"),de=(0,F.PH)("@metrics/change_type"),ut=(0,F.PH)("@metrics/change_attr"),M=(0,F.PH)("@metrics/change_setting"),dt=(0,F.PH)("@metrics/change_meta"),J=(0,F.PH)("init"),gt=(0,F.PH)("change_query"),mt=(0,F.PH)("change_alias_pattern"),bs=(t,e)=>gt.match(e)?e.payload:J.match(e)?t||"":t,Ss=(t,e)=>mt.match(e)?e.payload:J.match(e)?t||"":t;var Oe=m(80369);const pt=()=>({label:"",query:"*"}),x={terms:{label:"Terms",requiresField:!0,defaultSettings:{min_doc_count:"1",size:"10",order:"desc",orderBy:"_term"}},filters:{label:"Filters",requiresField:!1,defaultSettings:{filters:[pt()]}},geohash_grid:{label:"Geo Hash Grid",requiresField:!0,defaultSettings:{precision:"3"}},date_histogram:{label:"Date Histogram",requiresField:!0,defaultSettings:{interval:"auto",min_doc_count:"0",trimEdges:"0",timeZone:Oe.RQ.utc}},histogram:{label:"Histogram",requiresField:!0,defaultSettings:{interval:"1000",min_doc_count:"0"}},nested:{label:"Nested (experimental)",requiresField:!0,defaultSettings:{}}},ft=[{label:"Term value",value:"_term"},{label:"Doc Count",value:"_count"}],$e=[{label:"Top",value:"desc"},{label:"Bottom",value:"asc"}],Fs=[{label:"No limit",value:"0"},{label:"1",value:"1"},{label:"2",value:"2"},{label:"3",value:"3"},{label:"5",value:"5"},{label:"10",value:"10"},{label:"15",value:"15"},{label:"20",value:"20"}],ht=(0,F.PH)("@bucketAggs/add"),yt=(0,F.PH)("@bucketAggs/remove"),vt=(0,F.PH)("@bucketAggs/change_type"),Et=(0,F.PH)("@bucketAggs/change_field"),D=(0,F.PH)("@bucketAggs/change_setting"),xs=t=>(e,s)=>{if(ht.match(s)){const n={id:s.payload,type:"terms",settings:x.terms.defaultSettings},a=e[e.length-1];return a?.type==="date_histogram"?[...e.slice(0,e.length-1),n,a]:[...e,n]}return yt.match(s)?e.filter(n=>n.id!==s.payload):vt.match(s)?e.map(n=>n.id!==s.payload.id?n:{id:n.id,type:s.payload.newType,settings:x[s.payload.newType].defaultSettings}):Et.match(s)?e.map(n=>n.id!==s.payload.id?n:{...n,field:s.payload.newField}):de.match(s)?b[s.payload.type].impliedQueryType!=="metrics"?[]:e.length===0?[{...ue("2"),field:t}]:e:D.match(s)?e.map(n=>{if(n.id!==s.payload.bucketAgg.id)return n;const a=Ce({...n.settings,[s.payload.settingName]:s.payload.newValue});return{...n,settings:{...a}}}):J.match(s)?e&&e.length>0?e:[{...ue("2"),field:t}]:e},Is=(t,e)=>{if(lt.match(e))return[...t,ce(e.payload)];if(ot.match(e)){const s=t.find(i=>i.id===e.payload),n=[s,...tt(s,t)],a=t.filter(i=>!n.some(l=>l.id===i.id));return a.length===0?[ce("1")]:a}return de.match(e)?t.filter(s=>b[e.payload.type].impliedQueryType==="metrics"?!0:s.id===e.payload.id).map(s=>s.id!==e.payload.id?s:{id:s.id,type:e.payload.type,...b[e.payload.type].defaults}):_e.match(e)?t.map(s=>{if(s.id!==e.payload.id)return s;const n={...s,field:e.payload.field};return K(s)?{...n,pipelineAgg:e.payload.field}:n}):ct.match(e)?t.map(s=>s.id!==e.payload?s:{...s,hide:!s.hide}):M.match(e)?t.map(s=>{if(s.id!==e.payload.metric.id)return s;if(we(s)){const n=Ce({...s.settings,[e.payload.settingName]:e.payload.newValue});return{...s,settings:{...n}}}return s}):dt.match(e)?t.map(s=>s.id!==e.payload.metric.id?s:ms(s)?{...s,meta:{...s.meta,[e.payload.meta]:e.payload.newValue}}:s):ut.match(e)?t.map(s=>s.id!==e.payload.metric.id?s:{...s,[e.payload.attribute]:e.payload.newValue}):J.match(e)?t&&t.length>0?t:[ce("1")]:t},bt=(0,r.createContext)(void 0),St=(0,r.createContext)(void 0),Ft=(0,r.createContext)(void 0),Ms=({children:t,onChange:e,onRunQuery:s,query:n,datasource:a,range:i})=>{const l=(0,r.useCallback)(p=>{e(p),s()},[e,s]),u=us({query:bs,alias:Ss,metrics:Is,bucketAggs:xs(a.timeField)}),c=Ie(p=>l({...n,...p,timeField:a.timeField}),n,u),o=!n.metrics||!n.bucketAggs||n.query===void 0,[d,g]=(0,r.useState)(o);return(0,r.useEffect)(()=>{d&&o&&(c(J()),g(!1))},[d,c,o]),o?null:r.createElement(bt.Provider,{value:a},r.createElement(St.Provider,{value:n},r.createElement(Ft.Provider,{value:i},r.createElement(Ye.Provider,{value:c},t))))},Re=t=>()=>{const e=(0,r.useContext)(t);if(!e)throw new Error("use ElasticsearchProvider first.");return e},L=Re(St),xt=Re(bt),ws=Re(Ft),It=t=>t.id,Ts=t=>parseInt(t,10),Ds=()=>{const{metrics:t,bucketAggs:e}=L();return(0,r.useMemo)(()=>(Math.max(...[...t?.map(It)||["0"],...e?.map(It)||["0"]].map(Ts))+1).toString(),[t,e])};var j=m(66670),y=m(89949),Mt=m(71107),Z=m(88413),wt=m(67437);const Tt=({children:t,label:e,onRemoveClick:s,onHideClick:n,hidden:a=!1})=>{const i=(0,H.wW)(Ps);return r.createElement(Mt.Z,null,r.createElement(Z.m,null,r.createElement(G.W,{width:17,as:"div"},r.createElement("span",null,e),r.createElement("span",{className:i.iconWrapper},n&&r.createElement(wt.h,{name:a?"eye-slash":"eye",onClick:n,size:"sm","aria-pressed":a,className:i.icon,tooltip:"Hide row"}),r.createElement(wt.h,{name:"trash-alt",size:"sm",className:i.icon,onClick:s||y.noop,disabled:!s,tooltip:"Remove row"})))),t)},Ps=t=>({iconWrapper:(0,h.css)` display: flex; `,icon:(0,h.css)` color: ${t.colors.text.secondary}; margin-left: ${t.spacing(.25)}; `});var Dt=m(95578),ge=m(92472),O=m(78209);const Ne=t=>x[t.type].requiresField,Cs=["date_histogram","histogram","terms","filters","geohash_grid","nested"],_s=t=>Cs.includes(t),Os=t=>{if(fs(t))switch(t){case"cardinality":return[];case"top_metrics":return["number"];default:return["number"]}if(_s(t))switch(t){case"date_histogram":return["date"];case"geohash_grid":return["geo_point"];case"histogram":return["number"];default:return[]}return[]},$s=({text:t})=>({label:t,value:t}),me=t=>{const e=xt(),s=ws(),n=Array.isArray(t)?t:Os(t);let a;return async i=>(a||(a=await(0,O.n)(e.getFields(n,s))),a.filter(({text:l})=>i===void 0||l.includes(i)).map($s))},q=(0,h.css)` min-width: 150px; `;var Rs=m(73453);const Ns=(t,e)=>({wrapper:(0,h.css)` max-width: 500px; display: flex; flex-direction: column; `,settingsWrapper:(0,h.css)` padding-top: ${t.spacing(.5)}; `,icon:(0,h.css)` margin-right: ${t.spacing(.5)}; `,button:(0,h.css)` justify-content: start; ${e&&(0,h.css)` color: ${t.colors.text.disabled}; `} `}),Pt=({label:t,children:e,hidden:s=!1})=>{const[n,a]=(0,r.useState)(!1),i=(0,H.l4)(),l=Ns(i,s);return r.createElement(Z.m,null,r.createElement("div",{className:(0,h.cx)(l.wrapper)},r.createElement("button",{className:(0,h.cx)("gf-form-label query-part",l.button,q),onClick:()=>a(!n),"aria-expanded":n,type:"button"},r.createElement(Rs.J,{name:n?"angle-down":"angle-right","aria-hidden":"true",className:l.icon}),t),n&&r.createElement("div",{className:l.settingsWrapper},e)))};var $=m(28580),Qs=m(15672);const As=t=>({value:e})=>e===t,Ls=(t,e)=>e===void 0||t.some(As(e))?t:[...t,{value:e,label:e}],Ct=({options:t,value:e,onChange:s})=>{const[n,a]=(0,r.useState)(Ls(t,e)),i=l=>a([...n,{value:l,label:l}]);return{onCreateOption:l=>{i(l),s({value:l})},onChange:s,allowCustomValue:!0,options:n,value:e}},Vs=[{label:"auto",value:"auto"},{label:"10s",value:"10s"},{label:"1m",value:"1m"},{label:"5m",value:"5m"},{label:"10m",value:"10m"},{label:"20m",value:"20m"},{label:"1h",value:"1h"},{label:"1d",value:"1d"}],ks=t=>({value:e})=>e===t,Bs=(t,e,s)=>!s.some(ks(t))&&t.trim().length>0,Ws=(t,e)=>t.value?.startsWith(e)||!1,zs=({bucketAgg:t})=>{const e=T(),{current:s}=(0,r.useRef)((0,y.uniqueId)("es-date_histogram-")),n=({value:a})=>e(D({bucketAgg:t,settingName:"interval",newValue:a}));return r.createElement(r.Fragment,null,r.createElement(f._,{label:"Interval",...C},r.createElement($.Ph,{inputId:(0,y.uniqueId)("es-date_histogram-interval"),isValidNewOption:Bs,filterOption:Ws,...Ct({options:Vs,value:t.settings?.interval||x.date_histogram.defaultSettings?.interval,onChange:n})})),r.createElement(f._,{label:"Min Doc Count",...C},r.createElement(E.I,{id:`${s}-min_doc_count`,onBlur:a=>e(D({bucketAgg:t,settingName:"min_doc_count",newValue:a.target.value})),defaultValue:t.settings?.min_doc_count||x.date_histogram.defaultSettings?.min_doc_count})),r.createElement(f._,{label:"Trim Edges",...C,tooltip:"Trim the edges on the timeseries datapoints"},r.createElement(E.I,{id:`${s}-trime_edges`,onBlur:a=>e(D({bucketAgg:t,settingName:"trimEdges",newValue:a.target.value})),defaultValue:t.settings?.trimEdges||x.date_histogram.defaultSettings?.trimEdges})),r.createElement(f._,{label:"Offset",...C,tooltip:"Change the start value of each bucket by the specified positive (+) or negative offset (-) duration, such as 1h for an hour, or 1d for a day"},r.createElement(E.I,{id:`${s}-offset`,onBlur:a=>e(D({bucketAgg:t,settingName:"offset",newValue:a.target.value})),defaultValue:t.settings?.offset||x.date_histogram.defaultSettings?.offset})),r.createElement(f._,{label:"Timezone",...C},r.createElement(Qs.O,{value:t.settings?.timeZone||x.date_histogram.defaultSettings?.timeZone,includeInternal:[Oe.RQ.utc],onChange:a=>{e(D({bucketAgg:t,settingName:"timeZone",newValue:a}))}})))},_t=({index:t,onAdd:e,onRemove:s,elements:n})=>r.createElement("div",{className:(0,h.css)` display: flex; `},t===0&&r.createElement(j.zx,{variant:"secondary",fill:"text",icon:"plus",onClick:e,tooltip:"Add","aria-label":"Add"}),n.length>=2&&r.createElement(j.zx,{variant:"secondary",fill:"text",icon:"minus",onClick:s,tooltip:"Remove","aria-label":"Remove"})),Qe=(0,F.PH)("@bucketAggregations/filter/add"),Ot=(0,F.PH)("@bucketAggregations/filter/remove"),Ae=(0,F.PH)("@bucketAggregations/filter/change"),Hs=(t=[],e)=>Qe.match(e)?[...t,pt()]:Ot.match(e)?t.slice(0,e.payload).concat(t.slice(e.payload+1)):Ae.match(e)?t.map((s,n)=>n!==e.payload.index?s:e.payload.filter):t,js=({bucketAgg:t})=>{const{current:e}=(0,r.useRef)((0,y.uniqueId)("es-filters-")),s=T(),n=Ie(a=>s(D({bucketAgg:t,settingName:"filters",newValue:a})),t.settings?.filters,Hs);return(0,r.useEffect)(()=>{t.settings?.filters?.length||n(Qe())},[n,t.settings?.filters?.length]),r.createElement(r.Fragment,null,r.createElement("div",{className:(0,h.css)` display: flex; flex-direction: column; `},t.settings?.filters.map((a,i)=>r.createElement("div",{key:i,className:(0,h.css)` display: flex; `},r.createElement(f._,{label:"Query",labelWidth:8},r.createElement("div",{className:(0,h.css)` width: 150px; `},r.createElement(Ke.q,{placeholder:"Lucene Query",portalOrigin:"elasticsearch",onChange:l=>n(Ae({index:i,filter:{...a,query:l}})),query:a.query}))),r.createElement(f._,{label:"Label",labelWidth:8},r.createElement(E.I,{width:16,id:`${e}-label-${i}`,placeholder:"Label",onBlur:l=>n(Ae({index:i,filter:{...a,label:l.target.value}})),defaultValue:a.label})),r.createElement(_t,{index:i,elements:t.settings?.filters||[],onAdd:()=>n(Qe()),onRemove:()=>n(Ot(i))})))))},qs=({bucketAgg:t})=>{const{metrics:e}=L(),s=Ys(e),{current:n}=(0,r.useRef)((0,y.uniqueId)("es-terms-")),a=T();return r.createElement(r.Fragment,null,r.createElement(f._,{label:"Order",...C},r.createElement($.Ph,{inputId:`${n}-order`,onChange:i=>a(D({bucketAgg:t,settingName:"order",newValue:i.value})),options:$e,value:t.settings?.order||x.terms.defaultSettings?.order})),r.createElement(f._,{label:"Size",...C},r.createElement($.Ph,{inputId:`${n}-size`,...Ct({options:Fs,value:t.settings?.size||x.terms.defaultSettings?.size,onChange({value:i}){a(D({bucketAgg:t,settingName:"size",newValue:i}))}})})),r.createElement(f._,{label:"Min Doc Count",...C},r.createElement(E.I,{id:`${n}-min_doc_count`,onBlur:i=>a(D({bucketAgg:t,settingName:"min_doc_count",newValue:i.target.value})),defaultValue:t.settings?.min_doc_count||x.terms.defaultSettings?.min_doc_count})),r.createElement(f._,{label:"Order By",...C},r.createElement($.Ph,{inputId:`${n}-order_by`,onChange:i=>a(D({bucketAgg:t,settingName:"orderBy",newValue:i.value})),options:s,value:t.settings?.orderBy||x.terms.defaultSettings?.orderBy})),r.createElement(f._,{label:"Missing",...C},r.createElement(E.I,{id:`${n}-missing`,onBlur:i=>a(D({bucketAgg:t,settingName:"missing",newValue:i.target.value})),defaultValue:t.settings?.missing||x.terms.defaultSettings?.missing})))};function Us(t){return t.meta?Object.keys(t.meta).filter(s=>t.meta?.[s]).map(s=>{let n=s;return s==="std_deviation_bounds_lower"&&(n="std_lower"),s==="std_deviation_bounds_upper"&&(n="std_upper"),{label:`${k(t)} (${n})`,value:`${t.id}[${n}]`}}):[]}function Gs(t){return t.settings?.percents?t.settings.percents.map(e=>{const s=/^\d+\.\d+/.test(`${e}`)?e:`${e}.0`;return{label:`${k(t)} (${e})`,value:`${t.id}[${s}]`}}):[]}function Ks(t){return t.type!=="top_metrics"&&!K(t)}const Ys=(t=[])=>{const e=t.filter(Ks).flatMap(s=>s.type==="extended_stats"?Us(s):s.type==="percentiles"?Gs(s):{label:k(s),value:s.id});return[...ft,...e]},$t=t=>e=>e.value===t,Js=t=>{const{metrics:e}=L();switch(t.type){case"terms":{const s=t.settings?.order||"desc",n=t.settings?.size||"10",a=parseInt(t.settings?.min_doc_count||"0",10),i=t.settings?.orderBy||"_term";let l="";n!=="0"&&(l=`${$e.find($t(s))?.label} ${n}, `),a>0&&(l+=`Min Doc Count: ${a}, `),l+="Order by: ";const u=ft.find($t(i));if(u)l+=u.label;else{const c=e?.find(o=>o.id===nt(i));c?l+=k(c):l+="metric not found"}return n==="0"&&(l+=` (${s})`),l}case"histogram":{const s=t.settings?.interval||"1000",n=parseInt(t.settings?.min_doc_count||"1",10);return`Interval: ${s}${n>0?`, Min Doc Count: ${n}`:""}`}case"filters":return`Filter Queries (${(t.settings?.filters||x.filters.defaultSettings?.filters).length})`;case"geohash_grid":return`Precision: ${Math.max(Math.min(parseInt(t.settings?.precision||"5",10),12),1)}`;case"date_histogram":{const s=t.settings?.interval||"auto",n=parseInt(t.settings?.min_doc_count||"0",10),a=parseInt(t.settings?.trimEdges||"0",10);let i=`Interval: ${s}`;return n>0&&(i+=`, Min Doc Count: ${n}`),a>0&&(i+=`, Trim edges: ${a}`),i}default:return"Settings"}},C={labelWidth:16},Zs=({bucketAgg:t})=>{const{current:e}=(0,r.useRef)((0,y.uniqueId)("es-setting-")),s=T(),n=Js(t);return r.createElement(Pt,{label:n},t.type==="terms"&&r.createElement(qs,{bucketAgg:t}),t.type==="date_histogram"&&r.createElement(zs,{bucketAgg:t}),t.type==="filters"&&r.createElement(js,{bucketAgg:t}),t.type==="geohash_grid"&&r.createElement(f._,{label:"Precision",...C},r.createElement(E.I,{id:`${e}-geohash_grid-precision`,onBlur:a=>s(D({bucketAgg:t,settingName:"precision",newValue:a.target.value})),defaultValue:t.settings?.precision||x[t.type].defaultSettings?.precision})),t.type==="histogram"&&r.createElement(r.Fragment,null,r.createElement(f._,{label:"Interval",...C},r.createElement(E.I,{id:`${e}-histogram-interval`,onBlur:a=>s(D({bucketAgg:t,settingName:"interval",newValue:a.target.value})),defaultValue:t.settings?.interval||x[t.type].defaultSettings?.interval})),r.createElement(f._,{label:"Min Doc Count",...C},r.createElement(E.I,{id:`${e}-histogram-min_doc_count`,onBlur:a=>s(D({bucketAgg:t,settingName:"min_doc_count",newValue:a.target.value})),defaultValue:t.settings?.min_doc_count||x[t.type].defaultSettings?.min_doc_count}))))},Xs=Object.entries(x).map(([t,{label:e}])=>({label:e,value:t})),en=t=>({label:x[t.type].label,value:t.type}),tn=({value:t})=>{const e=T(),s=me(t.type);return r.createElement(r.Fragment,null,r.createElement(Z.m,null,r.createElement(Dt.X,{className:q,options:Xs,onChange:n=>e(vt({id:t.id,newType:n.value})),value:en(t)}),Ne(t)&&r.createElement(ge.V,{className:q,loadOptions:s,onChange:n=>e(Et({id:t.id,newField:n.value})),placeholder:"Select Field",value:t.field})),r.createElement(Zs,{bucketAgg:t}))},sn=({nextId:t})=>{const e=T(),{bucketAggs:s}=L(),n=s?.length||0;return r.createElement(r.Fragment,null,s.map((a,i)=>r.createElement(Tt,{key:`${a.type}-${a.id}`,label:i===0?"Group By":"Then By",onRemoveClick:n>1&&(()=>e(yt(a.id)))},r.createElement(tn,{value:a}),i===0&&r.createElement(j.zx,{variant:"secondary",fill:"text",icon:"plus",onClick:()=>e(ht(t)),tooltip:"Add grouping condition","aria-label":"Add grouping condition"}))))};var X=m(42074);const nn=(0,h.css)` white-space: nowrap; `,Rt=t=>({label:k(t),value:t}),an=t=>t.map(Rt),Nt=({options:t,onChange:e,className:s,value:n})=>{const a=t.find(i=>i.id===n);return r.createElement(Dt.X,{className:(0,h.cx)(s,nn),options:an(t),onChange:e,placeholder:"Select Metric",value:a?Rt(a):void 0})};function P({label:t,settingName:e,metric:s,placeholder:n,tooltip:a}){const i=T(),[l]=(0,r.useState)((0,y.uniqueId)("es-field-id-"));let c=s.settings?.[e]||"";return e==="script"&&(c=Y(s)),r.createElement(f._,{label:t,labelWidth:16,tooltip:a},r.createElement(E.I,{id:l,placeholder:n,onBlur:o=>i(M({metric:s,settingName:e,newValue:o.target.value})),defaultValue:c}))}const Le=(0,F.PH)("@pipelineVariables/add"),Qt=(0,F.PH)("@pipelineVariables/remove"),At=(0,F.PH)("@pipelineVariables/rename"),Lt=(0,F.PH)("@pipelineVariables/change_metric"),rn=(t=[],e)=>Le.match(e)?[...t,Je(Ze(t))]:Qt.match(e)?t.slice(0,e.payload).concat(t.slice(e.payload+1)):At.match(e)?t.map((s,n)=>n!==e.payload.index?s:{...s,name:e.payload.newName}):Lt.match(e)?t.map((s,n)=>n!==e.payload.index?s:{...s,pipelineAgg:e.payload.newMetric}):t,ln=({value:t,previousMetrics:e})=>{const s=T(),n=Ie(a=>s(ut({metric:t,attribute:"pipelineVariables",newValue:a})),t.pipelineVariables,rn);return(0,r.useEffect)(()=>{t.pipelineVariables?.length||n(Le())},[n,t.pipelineVariables?.length]),r.createElement(r.Fragment,null,r.createElement("div",{className:(0,h.css)` display: flex; `},r.createElement(G.W,{width:16},"Variables"),r.createElement("div",{className:(0,h.css)` display: grid; grid-template-columns: 1fr auto; row-gap: 4px; margin-bottom: 4px; `},t.pipelineVariables.map((a,i)=>r.createElement(r.Fragment,{key:(0,y.uniqueId)("es-bs-")},r.createElement("div",{className:(0,h.css)` display: grid; column-gap: 4px; grid-template-columns: auto auto; `},r.createElement(E.I,{"aria-label":"Variable name",defaultValue:a.name,placeholder:"Variable Name",onBlur:l=>n(At({newName:l.target.value,index:i}))}),r.createElement(Nt,{onChange:l=>n(Lt({newMetric:l.value.id,index:i})),options:e,value:a.pipelineAgg})),r.createElement(_t,{index:i,elements:t.pipelineVariables||[],onAdd:()=>n(Le()),onRemove:()=>n(Qt(i))}))))),r.createElement(P,{label:"Script",metric:t,settingName:"script",tooltip:"Elasticsearch v5.0 and above: Scripting language is Painless. Use params.<var> to reference a variable. Elasticsearch pre-v5.0: Scripting language is per default Groovy if not changed. For Groovy use <var> to reference a variable.",placeholder:"params.var1 / params.var2"}))},on=({metric:t})=>{const e=T(),{current:s}=(0,r.useRef)((0,y.uniqueId)("es-moving-avg-"));return r.createElement(r.Fragment,null,r.createElement(f._,{label:"Model",labelWidth:16},r.createElement($.Ph,{inputId:`${s}-model`,onChange:n=>e(M({metric:t,settingName:"model",newValue:n.value})),options:ys,value:t.settings?.model})),r.createElement(P,{label:"Window",settingName:"window",metric:t,placeholder:"5"}),r.createElement(P,{label:"Predict",settingName:"predict",metric:t}),(Xe(t)||Me(t)||ie(t))&&r.createElement(f._,{label:"Alpha",labelWidth:16},r.createElement(E.I,{id:`${s}-alpha`,onBlur:n=>e(M({metric:t,settingName:"settings",newValue:{...t.settings?.settings,alpha:n.target.value}})),defaultValue:t.settings?.settings?.alpha})),(Me(t)||ie(t))&&r.createElement(f._,{label:"Beta",labelWidth:16},r.createElement(E.I,{id:`${s}-beta`,onBlur:n=>e(M({metric:t,settingName:"settings",newValue:{...t.settings?.settings,beta:n.target.value}})),defaultValue:t.settings?.settings?.beta})),ie(t)&&r.createElement(r.Fragment,null,r.createElement(f._,{label:"Gamma",labelWidth:16},r.createElement(E.I,{id:`${s}-gamma`,onBlur:n=>e(M({metric:t,settingName:"settings",newValue:{...t.settings?.settings,gamma:n.target.value}})),defaultValue:t.settings?.settings?.gamma})),r.createElement(f._,{label:"Period",labelWidth:16},r.createElement(E.I,{id:`${s}-period`,onBlur:n=>e(M({metric:t,settingName:"settings",newValue:{...t.settings?.settings,period:n.target.value}})),defaultValue:t.settings?.settings?.period})),r.createElement(f._,{label:"Pad",labelWidth:16},r.createElement(X.x,{id:`${s}-pad`,onChange:n=>e(M({metric:t,settingName:"settings",newValue:{...t.settings?.settings,pad:n.target.checked}})),checked:!!t.settings?.settings?.pad}))),(Xe(t)||Me(t)||ie(t))&&r.createElement(f._,{label:"Minimize",labelWidth:16},r.createElement(X.x,{id:`${s}-minimize`,onChange:n=>e(M({metric:t,settingName:"minimize",newValue:n.target.checked})),checked:!!t.settings?.minimize})))},cn=t=>({value:t,label:t}),un=({metric:t})=>{const e=T(),s=me(["number","date"]),n=me(t.type);return r.createElement(r.Fragment,null,r.createElement(f._,{label:"Metrics",labelWidth:16},r.createElement($.M8,{onChange:a=>e(M({metric:t,settingName:"metrics",newValue:a.map(i=>i.value)})),loadOptions:n,value:t.settings?.metrics?.map(cn),closeMenuOnSelect:!1,defaultOptions:!0})),r.createElement(f._,{label:"Order",labelWidth:16},r.createElement($.Ph,{onChange:a=>e(M({metric:t,settingName:"order",newValue:a.value})),options:$e,value:t.settings?.order})),r.createElement(f._,{label:"Order By",labelWidth:16,className:(0,h.css)` & > div { width: 100%; } `},r.createElement(ge.V,{className:(0,h.css)` margin-right: 0; `,loadOptions:s,onChange:a=>e(M({metric:t,settingName:"orderBy",newValue:a.value})),placeholder:"Select Field",value:t.settings?.orderBy})))},dn=t=>e=>e.value===t,gn=t=>{switch(t.type){case"cardinality":return`Precision threshold: ${t.settings?.precision_threshold||""}`;case"percentiles":return t.settings?.percents&&t.settings?.percents?.length>=1?`Values: ${t.settings?.percents}`:"Percents: Default";case"extended_stats":{const e=Object.entries(t.meta||{}).map(([s,n])=>n&&Te.find(dn(s))?.label).filter(Boolean);return`Stats: ${e.length>0?e.join(", "):"None selected"}`}case"raw_document":case"raw_data":return`Size: ${t.settings?.size||500}`;default:return"Options"}},ee={labelWidth:16},Vt=({metric:t,previousMetrics:e})=>{const{current:s}=(0,r.useRef)((0,y.uniqueId)("es-setting-")),n=T(),a=gn(t),i=L(),l=[{value:"second",label:"Second"},{value:"minute",label:"Minute"},{value:"hour",label:"Hour"},{value:"day",label:"Day"},{value:"week",label:"Week"},{value:"month",label:"Month"},{value:"quarter",label:"Quarter"},{value:"Year",label:"Year"}],u=[{value:"sum",label:"Sum"},{value:"value_count",label:"Value count"}];return r.createElement(Pt,{label:a,hidden:t.hide},t.type==="derivative"&&r.createElement(P,{label:"Unit",metric:t,settingName:"unit"}),t.type==="serial_diff"&&r.createElement(P,{label:"Lag",metric:t,settingName:"lag",placeholder:"1"}),t.type==="cumulative_sum"&&r.createElement(P,{label:"Format",metric:t,settingName:"format"}),t.type==="moving_avg"&&r.createElement(on,{metric:t}),t.type==="moving_fn"&&r.createElement(r.Fragment,null,r.createElement(P,{label:"Window",metric:t,settingName:"window"}),r.createElement(P,{label:"Script",metric:t,settingName:"script"}),r.createElement(P,{label:"Shift",metric:t,settingName:"shift"})),t.type==="top_metrics"&&r.createElement(un,{metric:t}),t.type==="bucket_script"&&r.createElement(ln,{value:t,previousMetrics:e}),(t.type==="raw_data"||t.type==="raw_document")&&r.createElement(f._,{label:"Size",...ee},r.createElement(E.I,{id:`ES-query-${i.refId}_metric-${t.id}-size`,onBlur:c=>n(M({metric:t,settingName:"size",newValue:c.target.value})),defaultValue:t.settings?.size??b.raw_data.defaults.settings?.size})),t.type==="logs"&&r.createElement(P,{label:"Limit",metric:t,settingName:"limit",placeholder:"500"}),t.type==="cardinality"&&r.createElement(P,{label:"Precision Threshold",metric:t,settingName:"precision_threshold"}),t.type==="extended_stats"&&r.createElement(r.Fragment,null,Te.map(c=>r.createElement(mn,{key:c.value,stat:c,onChange:o=>n(dt({metric:t,meta:c.value,newValue:o})),value:t.meta?.[c.value]!==void 0?!!t.meta?.[c.value]:!!b.extended_stats.defaults.meta?.[c.value]})),r.createElement(P,{label:"Sigma",metric:t,settingName:"sigma",placeholder:"3"})),t.type==="percentiles"&&r.createElement(f._,{label:"Percentiles",...ee},r.createElement(E.I,{id:`${s}-percentiles-percents`,onBlur:c=>n(M({metric:t,settingName:"percents",newValue:c.target.value.split(",").filter(Boolean)})),defaultValue:t.settings?.percents||b.percentiles.defaults.settings?.percents,placeholder:"1,5,25,50,75,95,99"})),t.type==="rate"&&r.createElement(r.Fragment,null,r.createElement(f._,{label:"Unit",...ee,"data-testid":"unit-select"},r.createElement($.Ph,{id:`ES-query-${i.refId}_metric-${t.id}-unit`,onChange:c=>n(M({metric:t,settingName:"unit",newValue:c.value})),options:l,value:t.settings?.unit})),r.createElement(f._,{label:"Mode",...ee,"data-testid":"mode-select"},r.createElement($.Ph,{id:`ES-query-${i.refId}_metric-${t.id}-mode`,onChange:c=>n(M({metric:t,settingName:"mode",newValue:c.value})),options:u,value:t.settings?.unit}))),et(t)&&r.createElement(P,{label:"Script",metric:t,settingName:"script",placeholder:"_value * 1"}),gs(t)&&r.createElement(P,{label:"Missing",metric:t,settingName:"missing",tooltip:`The missing parameter defines how documents that are missing a value should be treated. By default they will be ignored but it is also possible to treat them as if they had a value`}))},mn=({stat:t,onChange:e,value:s})=>{const[n]=(0,r.useState)((0,y.uniqueId)("es-field-id-"));return r.createElement(f._,{label:t.label,...ee,key:t.value},r.createElement(X.x,{id:n,onChange:a=>e(a.target.checked),value:s}))},Ve=({name:t,metric:e})=>{const s=[];return r.createElement(Mt.Z,null,r.createElement(Z.m,null,r.createElement(G.W,{width:17,as:"div"},r.createElement("span",null,t))),r.createElement(Vt,{metric:e,previousMetrics:s}))},pn=(t,e)=>({color:e&&(0,h.css)` &, &:hover, label, a { color: ${e?t.colors.text.disabled:t.colors.text.primary}; } `}),fn=t=>({label:b[t.type].label,value:t.type}),hn=t=>!b[t.type].isPipelineAgg,yn=(t,e)=>{const s=t.some(hn);return Object.entries(b).filter(([n,a])=>a.impliedQueryType==="metrics").filter(([n,{versionRange:a="*"}])=>e!=null?(0,Pe.satisfies)(e,a):!0).filter(([n,a])=>s||!a.isPipelineAgg).map(([n,{label:a}])=>({label:a,value:n}))},vn=({value:t})=>{const e=pn((0,H.l4)(),!!t.hide),s=xt(),n=L(),a=T(),i=me(t.type),l=async o=>{const d=await s.getDatabaseVersion();return yn(o,d)},u=(0,r.useCallback)(async()=>{const o=await i();return et(t)?[{label:"None"},...o]:o},[i,t]),c=n.metrics.slice(0,n.metrics.findIndex(o=>o.id===t.id));return r.createElement(r.Fragment,null,r.createElement(Z.m,null,r.createElement(ge.V,{className:(0,h.cx)(e.color,q),loadOptions:()=>l(c),onChange:o=>a(de({id:t.id,type:o.value})),value:fn(t)}),N(t)&&!K(t)&&r.createElement(ge.V,{className:(0,h.cx)(e.color,q),loadOptions:u,onChange:o=>a(_e({id:t.id,field:o.value})),placeholder:"Select Field",value:t.field}),K(t)&&!le(t)&&r.createElement(Nt,{className:(0,h.cx)(e.color,q),onChange:o=>a(_e({id:t.id,field:o.value?.id})),options:c,value:t.field})),we(t)&&r.createElement(Vt,{metric:t,previousMetrics:c}))},En=({nextId:t})=>{const e=T(),{metrics:s}=L(),n=s?.length||0;return r.createElement(r.Fragment,null,s?.map((a,i)=>{switch(a.type){case"logs":return r.createElement(Ve,{key:`${a.type}-${a.id}`,name:"Logs",metric:a});case"raw_data":return r.createElement(Ve,{key:`${a.type}-${a.id}`,name:"Raw Data",metric:a});case"raw_document":return r.createElement(r.Fragment,null,r.createElement(Ve,{key:`${a.type}-${a.id}`,name:"Raw Document",metric:a}),r.createElement(z.b,{severity:"warning",title:"The 'Raw Document' query type is deprecated."}));default:return r.createElement(Tt,{key:`${a.type}-${a.id}`,label:`Metric (${a.id})`,hidden:a.hide,onHideClick:()=>e(ct(a.id)),onRemoveClick:n>1&&(()=>e(ot(a.id)))},r.createElement(vn,{value:a}),b[a.type].impliedQueryType==="metrics"&&i===0&&r.createElement(j.zx,{variant:"secondary",fill:"text",icon:"plus",onClick:()=>e(lt(t)),tooltip:"Add metric","aria-label":"Add metric"}))}}))};var bn=m(40705);const Sn=[{value:"metrics",label:"Metrics"},{value:"logs",label:"Logs"},{value:"raw_data",label:"Raw Data"},{value:"raw_document",label:"Raw Document"}];function Fn(t){switch(t){case"logs":case"raw_data":case"raw_document":return t;case"metrics":return"count";default:throw new Error(`invalid query type: ${t}`)}}const xn=()=>{const t=L(),e=T(),s=t.metrics?.[0];if(s==null)return null;const n=b[s.type].impliedQueryType,a=i=>{e(de({id:s.id,type:Fn(i)}))};return r.createElement(bn.S,{fullWidth:!1,options:Sn,value:n,onChange:a})};function In(t){const[e,s]=(0,r.useState)(null);return(0,r.useEffect)(()=>{let n=!1;return t.getDatabaseVersion().then(a=>{n||s(a)},a=>{console.log(a)}),()=>{n=!0}},[t]),e}const Mn=({query:t,onChange:e,onRunQuery:s,datasource:n,range:a})=>{const i=In(n),l=i!=null&&!at(i);return r.createElement(Ms,{datasource:n,onChange:e,onRunQuery:s,query:t,range:a||(0,A.JK)()},l&&r.createElement(z.b,{title:rt}),r.createElement(wn,{value:t}))},kt=t=>({root:(0,h.css)` display: flex; `,queryItem:(0,h.css)` flex-grow: 1; margin: 0 ${t.spacing(.5)} ${t.spacing(.5)} 0; `}),Bt=({value:t,onChange:e})=>{const s=(0,H.wW)(kt);return r.createElement("div",{className:s.queryItem},r.createElement(Ke.q,{query:t,onChange:e,placeholder:"Enter a lucene query",portalOrigin:"elasticsearch"}))},wn=({value:t})=>{const e=T(),s=Ds(),n=(0,H.wW)(kt),a=it(t),i=t.metrics?.every(l=>b[l.type].impliedQueryType==="metrics");return r.createElement(r.Fragment,null,r.createElement("div",{className:n.root},r.createElement(G.W,{width:17},"Query type"),r.createElement("div",{className:n.queryItem},r.createElement(xn,null))),r.createElement("div",{className:n.root},r.createElement(G.W,{width:17},"Lucene Query"),r.createElement(Bt,{onChange:l=>e(gt(l)),value:t?.query}),a&&r.createElement(f._,{label:"Alias",labelWidth:15,tooltip:"Aliasing only works for timeseries queries (when the last group is 'Date Histogram'). For all other query types this field is ignored."},r.createElement(E.I,{id:`ES-query-${t.refId}_alias`,placeholder:"Alias Pattern",onBlur:l=>e(mt(l.currentTarget.value)),defaultValue:t.alias}))),r.createElement(En,{nextId:s}),i&&r.createElement(sn,{nextId:s}))};var Tn=m(84923),Dn=m(77195),Pn=m(19010),Cn=m(49257),pe=m(5562),Wt=m(12308),_n=m(3569),On=m(24094),ke=m(78102),Be=m(47449),$n=m(24077),Rn=m(82367),Nn=m(80402),Qn=m(22965),An=m(53229);const{FormField:We,Switch:Ln}=Rn.LegacyForms,Vn=(0,Nn.B)(()=>({firstRow:(0,h.css)` display: flex; `,nameField:(0,h.css)` flex: 2; `,regexField:(0,h.css)` flex: 3; `,row:(0,h.css)` display: flex; align-items: baseline; `,urlField:(0,h.css)` flex: 1; `,urlDisplayLabelField:(0,h.css)` flex: 1; `})),kn=t=>{const{value:e,onChange:s,onDelete:n,suggestions:a,className:i}=t,l=Vn(),[u,c]=Bn(e.datasourceUid),o=d=>g=>{s({...e,[d]:g.currentTarget.value})};return r.createElement("div",{className:i},r.createElement("div",{className:l.firstRow+" gf-form"},r.createElement(We,{className:l.nameField,labelWidth:6,inputWidth:null,label:"Field",type:"text",value:e.field,tooltip:"Can be exact field name or a regex pattern that will match on the field name.",onChange:o("field")}),r.createElement(j.zx,{variant:"destructive",title:"Remove field",icon:"times",onClick:d=>{d.preventDefault(),n()}})),r.createElement("div",{className:"gf-form"},r.createElement(We,{label:u?"Query":"URL",labelWidth:6,inputEl:r.createElement(Qn.v,{placeholder:u?"${__value.raw}":"http://example.com/${__value.raw}",value:e.url||"",onChange:d=>s({...e,url:d}),suggestions:a}),className:l.urlField}),r.createElement(We,{className:l.urlDisplayLabelField,inputWidth:null,labelWidth:7,label:"URL Label",type:"text",value:e.urlDisplayLabel,onChange:o("urlDisplayLabel"),tooltip:"Use to override the button label."})),r.createElement("div",{className:l.row},r.createElement(Ln,{labelClass:"width-6",label:"Internal link",checked:u,onChange:()=>{u&&s({...e,datasourceUid:void 0}),c(!u)}}),u&&r.createElement(An.q,{tracing:!0,onChange:d=>{s({...e,datasourceUid:d.uid})},current:e.datasourceUid})))};function Bn(t){const[e,s]=(0,r.useState)(!!t),n=(0,$n.Z)(t);return(0,r.useEffect)(()=>{!n&&t&&!e&&s(!0),n&&!t&&e&&s(!1)},[n,t,e]),[e,s]}const Wn=t=>({addButton:(0,h.css)` margin-right: 10px; `,container:(0,h.css)` margin-bottom: ${t.spacing(2)}; `,dataLink:(0,h.css)` margin-bottom: ${t.spacing(1)}; `}),zn=t=>{const{value:e,onChange:s}=t,n=(0,H.wW)(Wn);return r.createElement(ke._,{title:"Data links",description:r.createElement(Be.W,{description:"Add links to existing fields. Links will be shown in log row details next to the field value.",suffix:"elasticsearch/#data-links",feature:"Elasticsearch data links"})},r.createElement("div",{className:n.container},e&&e.length>0&&r.createElement("div",{className:"gf-form-group"},e.map((a,i)=>r.createElement(kn,{className:n.dataLink,key:i,value:a,onChange:l=>{const u=[...e];u.splice(i,1,l),s(u)},onDelete:()=>{const l=[...e];l.splice(i,1),s(l)},suggestions:[{value:_n.W.valueRaw,label:"Raw value",documentation:"Raw value of the field",origin:On.L8.Value}]}))),r.createElement(j.zx,{type:"button",variant:"secondary",className:n.addButton,icon:"plus",onClick:a=>{a.preventDefault();const i=[...e||[],{field:"",url:""}];s(i)}},"Add")))},ze=[{label:"No pattern",value:"none"},{label:"Hourly",value:"Hourly",example:"[logstash-]YYYY.MM.DD.HH"},{label:"Daily",value:"Daily",example:"[logstash-]YYYY.MM.DD"},{label:"Weekly",value:"Weekly",example:"[logstash-]GGGG.WW"},{label:"Monthly",value:"Monthly",example:"[logstash-]YYYY.MM"},{label:"Yearly",value:"Yearly",example:"[logstash-]YYYY"}],Hn=({value:t,onChange:e})=>r.createElement(ke._,{title:"Elasticsearch details",description:r.createElement(Be.W,{description:"Specific settings for the Elasticsearch data source.",suffix:"elasticsearch/#index-settings",feature:"Elasticsearch details"})},r.createElement(f._,{label:"Index name",htmlFor:"es_config_indexName",labelWidth:26},r.createElement(E.I,{id:"es_config_indexName",value:t.jsonData.index??(t.database||""),onChange:jn(t,e),width:24,placeholder:"es-index-name",required:!0})),r.createElement(f._,{label:"Pattern",htmlFor:"es_config_indexPattern",labelWidth:26},r.createElement($.Ph,{inputId:"es_config_indexPattern",value:ze.find(s=>s.value===(t.jsonData.interval===void 0?"none":t.jsonData.interval)),options:ze,onChange:qn(t,e),width:24})),r.createElement(f._,{label:"Time field name",htmlFor:"es_config_timeField",labelWidth:26},r.createElement(E.I,{id:"es_config_timeField",value:t.jsonData.timeField||"",onChange:He("timeField",t,e),width:24,placeholder:"@timestamp",required:!0})),r.createElement(f._,{label:"Max concurrent Shard Requests",htmlFor:"es_config_shardRequests",labelWidth:26},r.createElement(E.I,{id:"es_config_shardRequests",value:t.jsonData.maxConcurrentShardRequests||"",onChange:He("maxConcurrentShardRequests",t,e),width:24})),r.createElement(f._,{label:"Min time interval",htmlFor:"es_config_minTimeInterval",labelWidth:26,tooltip:r.createElement(r.Fragment,null,"A lower limit for the auto group by time interval. Recommended to be set to write frequency, for example"," ",r.createElement("code",null,"1m")," if your data is written every minute."),error:"Value is not valid, you can use number with time unit specifier: y, M, w, d, h, m, s",invalid:!!t.jsonData.timeInterval&&!/^\d+(ms|[Mwdhmsy])$/.test(t.jsonData.timeInterval)},r.createElement(E.I,{id:"es_config_minTimeInterval",value:t.jsonData.timeInterval||"",onChange:He("timeInterval",t,e),width:24,placeholder:"10s"})),r.createElement(f._,{label:"X-Pack enabled",labelWidth:26},r.createElement(X.x,{id:"es_config_xpackEnabled",value:t.jsonData.xpack||!1,onChange:zt("xpack",t,e)})),t.jsonData.xpack&&r.createElement(f._,{label:"Include Frozen Indices",htmlFor:"es_config_frozenIndices",labelWidth:26},r.createElement(X.x,{id:"es_config_frozenIndices",value:t.jsonData.includeFrozen??!1,onChange:zt("includeFrozen",t,e)}))),jn=(t,e)=>s=>{e({...t,database:"",jsonData:{...t.jsonData,index:s.currentTarget.value}})},He=(t,e,s)=>n=>{s({...e,jsonData:{...e.jsonData,[t]:n.currentTarget.value}})},zt=(t,e,s)=>n=>{s({...e,jsonData:{...e.jsonData,[t]:n.currentTarget.checked}})},qn=(t,e)=>s=>{const n=s.value==="none"?void 0:s.value,a=t.jsonData.index??t.database;if(!a||a.length===0||a.startsWith("[logstash-]")){let i="";if(n!==void 0){const l=ze.find(u=>u.value===n);l&&(i=l.example??"")}e({...t,database:"",jsonData:{...t.jsonData,index:i,interval:n}})}else e({...t,jsonData:{...t.jsonData,interval:n}})};function Un(){return 5}const Gn=t=>{const{value:e,onChange:s}=t,n=a=>i=>{s({...e,[a]:i.currentTarget.value})};return r.createElement(ke._,{title:"Logs",description:r.createElement(Be.W,{description:"Configure which fields the data source uses for log messages and log levels.",suffix:"elasticsearch/#logs",feature:"Elasticsearch log fields"})},r.createElement(f._,{label:"Message field name",labelWidth:22},r.createElement(E.I,{id:"es_logs-config_logMessageField",value:e.logMessageField,onChange:n("logMessageField"),placeholder:"_source",width:24})),r.createElement(f._,{label:"Level field name",labelWidth:22},r.createElement(E.I,{id:"es_logs-config_logLevelField",value:e.logLevelField,onChange:n("logLevelField"),width:24})))},Kn=t=>({...t,jsonData:{...t.jsonData,timeField:t.jsonData.timeField||"@timestamp",maxConcurrentShardRequests:t.jsonData.maxConcurrentShardRequests||Un(),logMessageField:t.jsonData.logMessageField||"",logLevelField:t.jsonData.logLevelField||"",includeFrozen:t.jsonData.includeFrozen??!1}}),Yn=t=>!!t.jsonData.timeField&&!!t.jsonData.maxConcurrentShardRequests&&t.jsonData.logMessageField!==void 0&&t.jsonData.logLevelField!==void 0,Jn=t=>{const e=(0,r.useRef)(t.options.access==="direct"),{options:s,onOptionsChange:n}=t;return(0,r.useEffect)(()=>{Yn(s)||n(Kn(s))},[n,s]),r.createElement(r.Fragment,null,s.access==="direct"&&r.createElement(z.b,{title:"Error",severity:"error"},"Browser access mode in the Elasticsearch datasource is no longer available. Switch to server access mode."),r.createElement(Dn.j,{dataSourceName:"Elasticsearch",docsLink:"https://grafana.com/docs/grafana/latest/datasources/elasticsearch",hasRequiredFields:!1}),r.createElement(pe.i,null),r.createElement(Cn.E,{defaultUrl:"http://localhost:9200",dataSourceConfig:s,showAccessOptions:e.current,onChange:n,sigV4AuthToggleEnabled:Wt.config.sigV4AuthEnabled,renderSigV4Editor:r.createElement(Tn.IW,{...t}),secureSocksDSProxyEnabled:Wt.config.secureSocksDSProxyEnabled}),r.createElement(pe.i,null),r.createElement(Pn.K,{title:"Additional settings",description:"Additional settings are optional settings that can be configured for more control over your data source.",isCollapsible:!0,isInitiallyOpen:!0},r.createElement(Hn,{value:s,onChange:n}),r.createElement(pe.i,{hideLine:!0}),r.createElement(Gn,{value:s.jsonData,onChange:a=>n({...s,jsonData:a})}),r.createElement(pe.i,{hideLine:!0}),r.createElement(zn,{value:s.jsonData.dataLinks,onChange:a=>{n({...s,jsonData:{...s.jsonData,dataLinks:a}})}})))};var Zn=m(87730),fe=m(91053),te=m(45383),he=m(56469),Ht=m(22479),Xn=m(71780),ea=m(23403),ta=m(775),B=m(39343),jt=m(76970),w=m(51451),sa=m(76305),je=m(62247),I=m(99633),Q=m(29241),na=m(42751),V=m(34667),aa=m(10864),ra=m(26858),ia=m(99386),qt=m(30209),la=m(22833);const Ut={Hourly:{startOf:"hour",amount:"hours"},Daily:{startOf:"day",amount:"days"},Weekly:{startOf:"isoWeek",amount:"weeks"},Monthly:{startOf:"month",amount:"months"},Yearly:{startOf:"year",amount:"years"}};class oa{constructor(e,s){this.pattern=e,this.interval=s,this.dateLocale="en"}getIndexForToday(){return this.interval?(0,I.zh)().locale(this.dateLocale).format(this.pattern):this.pattern}getIndexList(e,s){if(!this.interval)return this.pattern;const a=Ut[this.interval],i=(0,I.CQ)(e||(0,I.CQ)(s).add(-7,a.amount)).utc().startOf(a.startOf),l=(0,I.CQ)(s||(0,I.CQ)(e).add(7,a.amount)).utc().startOf(a.startOf).valueOf(),u=[];for(;i.valueOf()<=l;)u.push(i.locale(this.dateLocale).format(this.pattern)),i.add(1,a.amount);return u}}var ye=m(69376);class ca extends U.iL{constructor(e,s){super(),this.datasource=e,Object.assign(this,s)}importFromAbstractQuery(e){return{metrics:[{id:"1",type:"logs"}],query:this.getElasticsearchQuery(e.labelMatchers),refId:e.refId}}getElasticsearchQuery(e){return e.map(s=>{switch(s.operator){case ye.K2.Equal:return s.name+':"'+s.value+'"';case ye.K2.NotEqual:return"-"+s.name+':"'+s.value+'"';case ye.K2.EqualRegEx:return s.name+":/"+s.value+"/";case ye.K2.NotEqualRegEx:return"-"+s.name+":/"+s.value+"/"}}).join(" AND ")}}var qe=m(91826),Gt=m(95381),ua=m(73289),Ue=m(32053),da=m(72164),Kt=m(28291),ga=m(44380);const Yt=`${oe.pre}([^@]+)${oe.post}`;class Jt{constructor(e,s){this.targets=e,this.response=s,this.processResponseToSeries=()=>{const n=[];for(let a=0;a<this.response.responses.length;a++){const i=this.response.responses[a],l=this.targets[a];if(i.error)throw this.getErrorFromElasticResponse(this.response,i.error);if(i.hits&&i.hits.hits.length>0&&this.processHits(i.hits,n,l),i.aggregations){const u=i.aggregations,c=this.targets[a],o=[],d=new Kt.Z;d.refId=c.refId,this.processBuckets(u,c,o,d,{},0),this.trimDatapoints(o,c),this.nameSeries(o,c);for(let g=0;g<o.length;g++)n.push(o[g]);d.rows.length>0&&n.push(d)}}return{data:n}},this.targets=e,this.response=s}processMetrics(e,s,n,a){let i;for(let l=0;l<s.metrics.length;l++){const u=s.metrics[l];if(!u.hide)switch(u.type){case"count":{i={datapoints:[],metric:"count",props:a,refId:s.refId};for(let c=0;c<e.buckets.length;c++){const o=e.buckets[c],d=o.doc_count;i.datapoints.push([d,o.key])}n.push(i);break}case"percentiles":{if(e.buckets.length===0)break;const o=e.buckets[0][u.id].values;for(const d in o){i={datapoints:[],metric:"p"+d,props:a,field:u.field,refId:s.refId};for(let g=0;g<e.buckets.length;g++){const p=e.buckets[g],v=p[u.id].values;i.datapoints.push([v[d],p.key])}n.push(i)}break}case"extended_stats":{for(const c in u.meta)if(u.meta[c]){i={datapoints:[],metric:c,props:a,field:u.field,refId:s.refId};for(let o=0;o<e.buckets.length;o++){const d=e.buckets[o],g=d[u.id];g.std_deviation_bounds_upper=g.std_deviation_bounds.upper,g.std_deviation_bounds_lower=g.std_deviation_bounds.lower,i.datapoints.push([g[c],d.key])}n.push(i)}break}case"top_metrics":{if(u.settings?.metrics?.length)for(const c of u.settings?.metrics){i={datapoints:[],metric:u.type,props:a,refId:s.refId,field:c};for(let o=0;o<e.buckets.length;o++){const d=e.buckets[o],p=d[u.id].top.map(S=>S.metrics[c]?S.metrics[c]:null),v=[p[p.length-1],d.key];i.datapoints.push(v)}n.push(i)}break}default:{i={datapoints:[],metric:u.type,metricId:u.id,props:a,refId:s.refId},N(u)&&(i.field=u.field);for(let c=0;c<e.buckets.length;c++){const o=e.buckets[c],d=o[u.id];d!==void 0&&(d.normalized_value?i.datapoints.push([d.normalized_value,o.key]):i.datapoints.push([d.value,o.key]))}n.push(i);break}}}}processAggregationDocs(e,s,n,a,i){if(a.columns.length===0){for(const c of(0,y.keys)(i))a.addColumn({text:c,filterable:!0});a.addColumn({text:s.field,filterable:!0})}const l=(c,o,d)=>{a.addColumn({text:o}),c.push(d)},u=(0,y.isArray)(e.buckets)?e.buckets:[e.buckets];for(const c of u){const o=[];for(const d of(0,y.values)(i))o.push(d);o.push(c.key);for(const d of n.metrics||[])switch(d.type){case"count":{l(o,this.getMetricName(d.type),c.doc_count);break}case"extended_stats":{for(const g in d.meta){if(!d.meta[g])continue;const p=c[d.id];p.std_deviation_bounds_upper=p.std_deviation_bounds.upper,p.std_deviation_bounds_lower=p.std_deviation_bounds.lower,l(o,this.getMetricName(g),p[g])}break}case"percentiles":{const g=c[d.id].values;for(const p in g)l(o,`p${p} ${d.field}`,g[p]);break}case"top_metrics":{const g=this.getMetricName(d.type);if(d.settings?.metrics)for(const p of d.settings.metrics){const v=d.settings.metrics.length>1?`${g} ${p}`:g,S=c[d.id];l(o,v,S.top[0].metrics[p])}break}default:{let g=this.getMetricName(d.type);(0,y.filter)(n.metrics,{type:d.type}).length>1&&(N(d)&&(g+=" "+d.field),d.type==="bucket_script"&&(g=Y(d))),l(o,g,c[d.id].value);break}}a.rows.push(o)}}processBuckets(e,s,n,a,i,l){let u,c,o,d;const g=s.bucketAggs.length-1;for(d in e)if(c=(0,y.find)(s.bucketAggs,{id:d}),o=e[d],!!c){if(c.type==="nested"){this.processBuckets(o,s,n,a,i,l+1);continue}if(l===g)c.type==="date_histogram"?this.processMetrics(o,s,n,i):this.processAggregationDocs(o,c,s,a,i);else for(const p in o.buckets)u=o.buckets[p],i=(0,y.clone)(i),u.key!==void 0?i[c.field]=u.key:i.filter=p,u.key_as_string&&(i[c.field]=u.key_as_string),this.processBuckets(u,s,n,a,i,l+1)}}getMetricName(e){const s=Object.entries(b).filter(([a])=>a===e).map(([a,i])=>i)[0];if(s)return s.label;const n=Te.find(a=>a.value===e);return n?n.label:e}getSeriesName(e,s,n){let a=this.getMetricName(e.metric);if(s.alias){const u=/\{\{([\s\S]+?)\}\}/g;return s.alias.replace(u,(c,o,d)=>{const g=o||d;return g.indexOf("term ")===0?e.props[g.substring(5)]:e.props[g]!==void 0?e.props[g]:g==="metric"?a:g==="field"?e.field||"":c})}if(vs(e.metric))if(e.metric&&Es(e.metric)){const u=(0,y.find)(s.metrics,{id:e.metricId});if(u&&u.settings.script){a=Y(u);for(const c of u.pipelineVariables){const o=(0,y.find)(s.metrics,{id:c.pipelineAgg});o&&(a=a.replace("params."+c.name,k(o)))}}else a="Unset"}else{const u=(0,y.find)(s.metrics,{id:e.field});u?a+=" "+k(u):a="Unset"}else e.field&&(a+=" "+e.field);if((0,y.keys)(e.props).length===0)return a;let l="";for(const u in e.props)l+=e.props[u]+" ";return n?l.trim()+" "+a:l.trim()}nameSeries(e,s){const n=(0,y.uniq)((0,y.map)(e,"metric")).length,a=(s.metrics?.filter(i=>i.type==="top_metrics")).some(i=>(i?.settings?.metrics?.length||0)>1);for(let i=0;i<e.length;i++){const l=e[i];l.target=this.getSeriesName(l,s,n>1||a)}}processHits(e,s,n){const a=typeof e.total=="number"?e.total:e.total.value,i={target:n.refId,type:"docs",refId:n.refId,datapoints:[],total:a,filterable:!0};let l,u,c,o;for(o=0;o<e.hits.length;o++){if(u=e.hits[o],c={_id:u._id,_type:u._type,_index:u._index,sort:u.sort,highlight:u.highlight},u._source)for(l in u._source)c[l]=u._source[l];for(l in u.fields)c[l]=u.fields[l];i.datapoints.push(c)}s.push(i)}trimDatapoints(e,s){const n=(0,y.find)(s.bucketAggs,{type:"date_histogram"});if(n&&n.settings&&n.settings.trimEdges){const i=n.settings.trimEdges;for(const l in e){const u=e[l];u.datapoints.length>i*2&&(u.datapoints=u.datapoints.slice(i,u.datapoints.length-i))}}}getErrorFromElasticResponse(e,s){const n={};return n.data=JSON.stringify(s,null,4),s.root_cause&&s.root_cause.length>0&&s.root_cause[0].reason?n.message=s.root_cause[0].reason:n.message=s.reason||"Unknown elastic error response",e.$$config&&(n.config=e.$$config),n}getTimeSeries(){if(this.targets.some(s=>De(s,"raw_data")))return this.processResponseToDataFrames(!1);const e=this.processResponseToSeries();return{...e,data:e.data.map(s=>(0,Ue.g0)(s))}}getLogs(e,s){return this.processResponseToDataFrames(!0,e,s)}processResponseToDataFrames(e,s,n){const a=[];for(let i=0;i<this.response.responses.length;i++){const l=this.response.responses[i];if(l.error)throw this.getErrorFromElasticResponse(this.response,l.error);if(l.hits){const{propNames:u,docs:c}=ma(l.hits.hits),o=c.length?Zt(u.map(pa(c)),e,this.targets[0].timeField,s,n):Zt([],e);e&&Xt(o,"logs");for(const g of c){if(n&&(g.level=g[n]),g.highlight){const p=new RegExp(Yt,"g"),v=new RegExp(Yt),S=Object.keys(g.highlight).flatMap(W=>g.highlight[W].flatMap(ne=>{const Fe=ne.match(p);return Fe?Fe.map(R=>{const os=R.match(v);return os&&os[1]||null}):[]})).filter(y.identity),_=o.meta?.searchWords?(0,y.uniq)([...o.meta.searchWords,...S]):[...S];o.meta=o.meta?{...o.meta,searchWords:_}:{searchWords:_}}o.add(g)}const d=this.targets[i];o.refId=d.refId,a.push(o)}if(l.aggregations){const u=l.aggregations,c=this.targets[i],o=[],d=new Kt.Z;if(this.processBuckets(u,c,o,d,{},0),this.trimDatapoints(o,c),this.nameSeries(o,c),d.rows.length>0){const g=(0,Ue.g0)(d);g.refId=c.refId,a.push(g)}for(let g=0;g<o.length;g++){let p=(0,Ue.g0)(o[g]);e&&Xt(p,"graph"),p.refId=c.refId,a.push(p)}}}for(let i of a)for(let l of i.fields)l.type===Q.fS.time&&typeof l.values[0]!="number"&&(l.values=(0,Gt.p8)(l,{destinationType:Q.fS.time}).values);return{data:a}}}const ma=t=>{const e=[];let s=[];for(const n of t){const a=n._source?(0,ga.default)(n._source):{},i={_id:n._id,_type:n._type,_index:n._index,sort:n.sort,highlight:n.highlight,_source:{...a},...a};for(const l of Object.keys(i))s.indexOf(l)===-1&&s.push(l);e.push(i)}return s.sort(),{docs:e,propNames:s}},Zt=(t,e,s,n,a)=>{const i=new da.v({fields:[]});if(s&&i.addField({config:{filterable:!0},name:s,type:Q.fS.time}),n){const u=i.addField({name:n,type:Q.fS.string});i.setParser(u,c=>c||"")}if(a){const u=i.addField({name:"level",type:Q.fS.string});i.setParser(u,c=>c||"")}const l=i.fields.map(u=>u.name);for(const[u,c]of t){if(l.includes(u)||!e&&u==="_source")continue;const o=i.addField({config:{filterable:!0},name:u,type:c});i.setParser(o,d=>d||"")}return i},Xt=(t,e)=>{let s=t;s.meta?s.meta.preferredVisualisationType=e:s.meta={preferredVisualisationType:e}},pa=t=>e=>[e,fa(t.find(s=>s[e]!==void 0)?.[e])],fa=t=>{switch(typeof t){case"number":return Q.fS.number;case"string":return Q.fS.string;default:return Q.fS.other}};var Ge=m(86312),ha=m(81587),ya=m(31886);const va=({payload:{dashboardId:t,orgId:e,grafanaVersion:s,queries:n}})=>{try{const a=n[ya.id].filter(v=>!v.hide);if(!a?.length)return;const i=a.filter(ba),l=a.filter(v=>!!v.query),u=a.filter(v=>se(v)==="logs"),c=a.filter(v=>se(v)==="metric"),o=a.filter(v=>se(v)==="raw_data"),d=a.filter(v=>se(v)==="raw_document"),g=a.filter(Ea),p={grafana_version:s,dashboard_id:t,org_id:e,queries_count:a.length,logs_queries_count:u.length,metric_queries_count:c.length,raw_data_queries_count:o.length,raw_document_queries_count:d.length,queries_with_template_variables_count:i.length,queries_with_changed_line_limit_count:g.length,queries_with_lucene_query_count:l.length};(0,Ge.ff)("grafana_elasticsearch_dashboard_loaded",p)}catch(a){console.error("error in elasticsearch tracking handler",a)}},se=t=>!t.metrics||!t.metrics.length?void 0:["logs","raw_data","raw_document"].includes(t.metrics[0].type)?t.metrics[0].type:"metric",es=t=>{if(t.metrics?.[0]?.type!=="logs")return;const e=t.metrics?.[0].settings?.limit;return e?parseInt(e,10):void 0},Ea=t=>{const e=es(t);return e!==void 0&&e!==500},ba=t=>ha.J7.test(t.query??""),Sa=t=>!!t.startsWith(rs);function ts(t,e,s){const{targets:n,app:a}=e;if(!(a===je.zj.Dashboard||a===je.zj.PanelViewer))for(const i of n){if(Sa(i.refId))return;(0,Ge.ff)("grafana_elasticsearch_query_executed",{app:a,grafana_version:V.config.buildInfo.version,with_lucene_query:!!i.query,query_type:se(i),line_limit:es(i),alias:i.alias,has_error:t.error!==void 0,has_data:t.data.some(l=>l.length>0),simultaneously_sent_query_count:n.length,time_range_from:e?.range?.from?.toISOString(),time_range_to:e?.range?.to?.toISOString(),time_taken:Date.now()-s.getTime()})}}function Fa(t){(0,Ge.ff)("grafana_elasticsearch_annotation_query_executed",{grafana_version:V.config.buildInfo.version,has_target_query:!!t.target?.query,has_query:!!t.query,has_time_field:!!t.timeField,has_time_end_field:!!t.timeEndField,has_tags_field:!!t.tagsField,has_text_field:!!t.textField,has_index:!!t.index})}class xa{constructor(e,s){this.datasource=e,this.templateSrv=s}request(e,s,n,a){if(!this.datasource.isProxyAccess){const l=new Error("Browser access mode in the Elasticsearch datasource is no longer available. Switch to server access mode.");return(0,qe._)(()=>l)}const i={url:this.datasource.url+"/"+s,method:e,data:n,headers:a};return e==="POST"&&(i.headers=i.headers??{},i.headers["Content-Type"]="application/x-ndjson"),(this.datasource.basicAuth||this.datasource.withCredentials)&&(i.withCredentials=!0),this.datasource.basicAuth&&(i.headers={Authorization:this.datasource.basicAuth}),(0,ua.i)().fetch(i).pipe((0,B.U)(l=>(l.data.$$config=l.config,l.data)),(0,he.K)(l=>{if(l.data){const u=l.data.error?.reason??l.data.message??"Unknown error";return(0,qe._)({message:u,error:l.data.error})}return(0,qe._)(l)}))}async logContextQuery(e,s){const a=e.dataFrame.fields.find(R=>R.name==="sort")?.values[e.rowIndex]||[e.timeEpochMs],i=s?.direction===w.M4.Forward?"asc":"desc",l=s?.direction===w.M4.Forward?this.datasource.getQueryHeader("query_then_fetch",(0,I.CQ)(e.timeEpochMs)):this.datasource.getQueryHeader("query_then_fetch",void 0,(0,I.CQ)(e.timeEpochMs)),u=s?.limit??10,c=JSON.stringify({size:u,query:{bool:{filter:[{range:{[this.datasource.timeField]:{[s?.direction===w.M4.Forward?"gte":"lte"]:e.timeEpochMs,format:"epoch_millis"}}}]}},sort:[{[this.datasource.timeField]:i},{_doc:i}],search_after:a}),o=[l,c].join(` `)+` `,d=this.datasource.getMultiSearchUrl(),g=await(0,O.n)(this.request("POST",d,o)),p=[{refId:`${e.dataFrame.refId}`,metrics:[{type:"logs",id:"1"}]}],S=new Jt(p,Ia(g,i)).getLogs(this.datasource.logMessageField,this.datasource.logLevelField),_=(0,y.first)(S.data);if(!_)return{data:[]};const W=_.fields.find(R=>R.name===this.datasource.timeField),ne=_.fields.find(R=>R.name===this.datasource.logMessageField),Fe=_.fields.filter(R=>R!==W&&R!==ne);return W&&ne?{data:[{..._,fields:[(0,Gt.J_)(W),ne,...Fe]}]}:S}query(e){let s="";const n=this.datasource.interpolateVariablesInQueries((0,y.cloneDeep)(e.targets),e.scopedVars),a=[];let i=n.some(o=>De(o,"logs"));const l=[];for(const o of n){if(o.hide)continue;let d;if(De(o,"logs")){o.bucketAggs=[ue()];const S=o.metrics?.find(W=>W.type==="logs"),_=S.settings?.limit?parseInt(S.settings?.limit,10):500;l.push(_),o.metrics=[],d=this.datasource.queryBuilder.getLogsQuery(o,_)}else l.push(),o.alias&&(o.alias=this.datasource.interpolateLuceneQuery(o.alias,e.scopedVars)),d=this.datasource.queryBuilder.build(o);const g=JSON.stringify(d),p="query_then_fetch",v=this.datasource.getQueryHeader(p,e.range.from,e.range.to);s+=v+` `,s+=g+` `,a.push(o)}if(a.length===0)return(0,te.of)({data:[]});s=s.replace(/"\$timeFrom"/g,e.range.from.valueOf().toString()),s=s.replace(/"\$timeTo"/g,e.range.to.valueOf().toString()),s=this.templateSrv.replace(s,e.scopedVars);const u=this.datasource.getMultiSearchUrl(),c=new Date;return this.request("POST",u,s).pipe((0,B.U)(o=>{const d=new Jt(a,o);if(i){const g=d.getLogs(this.datasource.logMessageField,this.datasource.logLevelField);return g.data.forEach((p,v)=>{Ma(p,this.datasource.dataLinks,l[v])}),g}return d.getTimeSeries()}),(0,jt.b)(o=>ts(o,e,c)))}}function Ia(t,e){if(e==="desc")return t;const s=t.responses[0];return{...t,responses:[{...s,hits:{...s.hits,hits:s.hits.hits.reverse()}}]}}function Ma(t,e,s){s&&(t.meta={...t.meta,limit:s}),ls(t,e)}class wa{constructor(e){this.timeField=e.timeField}getRangeFilter(){const e={};return e[this.timeField]={gte:"$timeFrom",lte:"$timeTo",format:"epoch_millis"},e}buildTermsAgg(e,s,n){if(s.terms={field:e.field},!e.settings)return s;const a=e.settings?.size?parseInt(e.settings.size,10):500;if(s.terms.size=a===0?500:a,e.settings.orderBy!==void 0){s.terms.order={},e.settings.orderBy==="_term"?s.terms.order._key=e.settings.order:s.terms.order[e.settings.orderBy]=e.settings.order;const i=nt(e.settings.orderBy);if(i){for(let l of n.metrics||[])if(l.id===i){l.type==="count"?s.terms.order={_count:e.settings.order}:N(l)&&(s.aggs={},s.aggs[l.id]={[l.type]:{field:l.field}});break}}}return e.settings.min_doc_count!==void 0&&(s.terms.min_doc_count=parseInt(e.settings.min_doc_count,10),isNaN(s.terms.min_doc_count)&&(s.terms.min_doc_count=e.settings.min_doc_count)),e.settings.missing&&(s.terms.missing=e.settings.missing),s}getDateHistogramAgg(e){const s={},n=e.settings||{};s.field=e.field||this.timeField,s.min_doc_count=n.min_doc_count||0,s.extended_bounds={min:"$timeFrom",max:"$timeTo"},s.format="epoch_millis",n.timeZone&&n.timeZone!==Oe.RQ.utc&&(s.time_zone=n.timeZone),n.offset!==""&&(s.offset=n.offset);const a=n.interval==="auto"?"${__interval_ms}ms":n.interval;return s.fixed_interval=a,s}getHistogramAgg(e){const s={},n=e.settings||{};return s.interval=n.interval,s.field=e.field,s.min_doc_count=n.min_doc_count||0,s}getFiltersAgg(e){const s={};for(let{query:n,label:a}of e.settings?.filters||[])s[a||n]={query_string:{query:n,analyze_wildcard:!0}};return s}documentQuery(e,s){return e.size=s,e.sort=[{[this.timeField]:{order:"desc",unmapped_type:"boolean"}},{_doc:{order:"desc"}}],e.script_fields={},e}build(e){e.metrics=e.metrics||[ce()],e.bucketAggs=e.bucketAggs||[ue()],e.timeField=this.timeField;let s,n,a,i,l;const u={size:0,query:{bool:{filter:[{range:this.getRangeFilter()}]}}};if(e.query&&e.query!==""&&(u.query.bool.filter=[...u.query.bool.filter,{query_string:{analyze_wildcard:!0,query:e.query}}]),e.bucketAggs.length===0&&(s=e.metrics[0],!s||!(s.type==="raw_document"||s.type==="raw_data")))throw{message:"Invalid query"};if(e.metrics?.[0]?.type==="raw_document"||e.metrics?.[0]?.type==="raw_data"){s=e.metrics[0];const c=s.settings?.size?parseInt(s.settings.size,10):500;return this.documentQuery(u,c||500)}for(l=u,n=0;n<e.bucketAggs.length;n++){const c=e.bucketAggs[n],o={};switch(c.type){case"date_histogram":{o.date_histogram=this.getDateHistogramAgg(c);break}case"histogram":{o.histogram=this.getHistogramAgg(c);break}case"filters":{o.filters={filters:this.getFiltersAgg(c)};break}case"terms":{this.buildTermsAgg(c,o,e);break}case"geohash_grid":{o.geohash_grid={field:c.field,precision:c.settings?.precision};break}case"nested":{o.nested={path:c.field};break}}l.aggs=l.aggs||{},l.aggs[c.id]=o,l=o}for(l.aggs={},n=0;n<e.metrics.length;n++){if(s=e.metrics[n],s.type==="count")continue;const c={};let o={};if(K(s))if(le(s))if(s.pipelineVariables){for(o={buckets_path:{}},a=0;a<s.pipelineVariables.length;a++)if(i=s.pipelineVariables[a],i.name&&i.pipelineAgg&&/^\d*$/.test(i.pipelineAgg)){const d=st(e.metrics,i.pipelineAgg);d&&(d.type==="count"?o.buckets_path[i.name]="_count":o.buckets_path[i.name]=i.pipelineAgg)}}else continue;else if(s.field&&/^\d*$/.test(s.field)){const d=st(e.metrics,s.field);d&&(d.type==="count"?o={buckets_path:"_count"}:o={buckets_path:s.field})}else continue;else N(s)&&(o={field:s.field});if(we(s))switch(Object.entries(s.settings||{}).filter(([d,g])=>g!==null).forEach(([d,g])=>{o[d]=d==="script"?this.buildScript(Y(s)):g}),s.type){case"moving_avg":o={...o,...o?.window!==void 0&&{window:this.toNumber(o.window)},...o?.predict!==void 0&&{predict:this.toNumber(o.predict)},...ds(s)&&{settings:{...o.settings,...Object.fromEntries(Object.entries(o.settings||{}).filter(([d])=>["alpha","beta","gamma","period"].includes(d)).filter(([d,g])=>g!==void 0).map(([d,g])=>[d,this.toNumber(g)]))}}};break;case"serial_diff":o={...o,...o.lag!==void 0&&{lag:this.toNumber(o.lag)}};break;case"top_metrics":o={metrics:s.settings?.metrics?.map(d=>({field:d})),size:1},s.settings?.orderBy&&(o.sort=[{[s.settings?.orderBy]:s.settings?.order}]);break}c[s.type]=o,l.aggs[s.id]=c}return u}buildScript(e){return e}toNumber(e){const s=parseFloat(`${e}`);return isNaN(s)?e:s}getTermsQuery(e){const s={size:0,query:{bool:{filter:[{range:this.getRangeFilter()}]}}};e.query&&s.query.bool.filter.push({query_string:{analyze_wildcard:!0,query:e.query}});let n=500;e.size&&(n=e.size),s.aggs={1:{terms:{field:e.field,size:n,order:{}}}};const{orderBy:a="key",order:i=a==="doc_count"?"desc":"asc"}=e;if(["asc","desc"].indexOf(i)<0)throw{message:`Invalid query sort order ${i}`};switch(a){case"key":case"term":const l="_key";s.aggs[1].terms.order[l]=i;break;case"doc_count":s.aggs[1].terms.order._count=i;break;default:throw{message:`Invalid query sort type ${a}`}}return s}getLogsQuery(e,s){let n={size:0,query:{bool:{filter:[{range:this.getRangeFilter()}]}}};return e.query&&n.query.bool.filter.push({query_string:{analyze_wildcard:!0,query:e.query}}),n=this.documentQuery(n,s),{...n,aggs:this.build(e).aggs,highlight:{fields:{"*":{}},pre_tags:[oe.pre],post_tags:[oe.post],fragment_size:2147483647}}}}var Ta=m(57942),ve=m(81924);function Da(t){const e=t.annotation,s=t.onAnnotationChange;return r.createElement(r.Fragment,null,r.createElement("div",{className:"gf-form-group"},r.createElement(Bt,{value:e.target?.query,onChange:n=>{const i={...e.target??{refId:"annotation_query"},query:n};s({...e,target:i})}})),r.createElement("div",{className:"gf-form-group"},r.createElement("h6",null,"Field mappings"),r.createElement(Ta.p,null,r.createElement(ve.S,{label:"Time"},r.createElement(E.I,{type:"text",placeholder:"@timestamp",value:e.timeField,onChange:n=>{s({...e,timeField:n.currentTarget.value})}})),r.createElement(ve.S,{label:"Time End"},r.createElement(E.I,{type:"text",value:e.timeEndField,onChange:n=>{s({...e,timeEndField:n.currentTarget.value})}})),r.createElement(ve.S,{label:"Text"},r.createElement(E.I,{type:"text",value:e.textField,onChange:n=>{s({...e,textField:n.currentTarget.value})}})),r.createElement(ve.S,{label:"Tags"},r.createElement(E.I,{type:"text",placeholder:"tags",value:e.tagsField,onChange:n=>{s({...e,tagsField:n.currentTarget.value})}})))))}function Pa(t){return!t||typeof t!="object"?!1:"meta"in t}var ss=m(95676);function Ee(t,e,s,n=""){e=Se(e);const a=ns(e,s),i=t.matchAll(a);for(const l of i)if(n==="-"&&l[0].startsWith(n)||n===""&&!l[0].startsWith("-"))return!0;return!1}function be(t,e,s,n=""){if(Ee(t,e,s,n))return t;e=Se(e);const a=`${n}${e}:"${s}"`;return t===""?a:`${t} AND ${a}`}function ns(t,e){return new RegExp(`[-]{0,1}\\s*${(0,ss.yI)(t)}\\s*:\\s*["']{0,1}${(0,ss.yI)(e)}["']{0,1}`,"ig")}function as(t,e,s,n=""){e=Se(e);const a=ns(e,s),i=t.matchAll(a),l=new RegExp("\\s+(?:AND|OR)\\s*$|^\\s*(?:AND|OR)\\s+","ig");for(const u of i)n==="-"&&u[0].startsWith(n)&&(t=t.replace(a,"").replace(l,"")),n===""&&!u[0].startsWith("-")&&(t=t.replace(a,"").replace(l,""));return t=t.replace(/AND\s+OR/gi,"OR"),t=t.replace(/OR\s+AND/gi,"AND"),t}function Se(t){return t.replace(/:/g,"\\:")}const rs="log-volume-",is="log-sample-",Ca=["_index","_type","_id","_source","_size","_field_names","_ignored","_routing","_meta"];class _a extends na.CK{constructor(e,s=(0,ia.J)()){super(e),this.templateSrv=s,this.getLogRowContext=async(a,i)=>{const{enableElasticsearchBackendQuerying:l}=V.config.featureToggles;if(l){const u=this.makeLogContextDataRequest(a,i);return(0,O.n)(this.query(u).pipe((0,he.K)(c=>{throw{message:"Error during context query. Please check JS console logs.",status:c.status,statusText:c.statusText}})))}else return this.legacyQueryRunner.logContextQuery(a,i)},this.makeLogContextDataRequest=(a,i)=>{const l=i?.direction||w.M4.Backward,u={type:"logs",id:"1",settings:{limit:i?.limit?i?.limit.toString():"10",sortDirection:l===w.M4.Backward?"desc":"asc",searchAfter:a.dataFrame.fields.find(v=>v.name==="sort")?.values[a.rowIndex]??[a.timeEpochMs]}},c={refId:`log-context-${a.dataFrame.refId}-${l}`,metrics:[u],query:""},o=$a(a.timeEpochMs,l,this.intervalPattern),d={from:o.from,to:o.to,raw:o},g=sa.calculateInterval(d,1);return{requestId:`log-context-request-${a.dataFrame.refId}-${i?.direction}`,targets:[c],interval:g.interval,intervalMs:g.intervalMs,range:d,scopedVars:{},timezone:"UTC",app:je.zj.Explore,startTime:Date.now(),hideFromInspector:!0}},this.basicAuth=e.basicAuth,this.withCredentials=e.withCredentials,this.url=e.url,this.name=e.name,this.isProxyAccess=e.access==="proxy";const n=e.jsonData||{};this.index=n.index??e.database??"",this.timeField=n.timeField,this.xpack=!!n.xpack,this.indexPattern=new oa(this.index,n.interval),this.intervalPattern=n.interval,this.interval=n.timeInterval,this.maxConcurrentShardRequests=n.maxConcurrentShardRequests,this.queryBuilder=new wa({timeField:this.timeField}),this.logMessageField=n.logMessageField||"",this.logLevelField=n.logLevelField||"",this.dataLinks=n.dataLinks||[],this.includeFrozen=n.includeFrozen??!1,this.databaseVersion=null,this.annotations={QueryEditor:Da},this.logMessageField===""&&(this.logMessageField=void 0),this.logLevelField===""&&(this.logLevelField=void 0),this.languageProvider=new ca(this),this.timeSrv=(0,ra.$t)(),this.legacyQueryRunner=new xa(this,this.templateSrv)}getResourceRequest(e,s,n){return this.getResource(e,s,n)}postResourceRequest(e,s,n){const a=n??{};return a.headers=a.headers??{},a.headers["content-type"]="application/x-ndjson",this.postResource(e,s,a)}async importFromAbstractQueries(e){return e.map(s=>this.languageProvider.importFromAbstractQuery(s))}requestAllIndices(e,s=(0,A.JK)()){let n=this.indexPattern.getIndexList(s.from,s.to);Array.isArray(n)||(n=[this.indexPattern.getIndexForToday()]);const a=n.map(u=>u+e),i=7,l=a.length;return(0,Zn.R)({initialState:0,condition:u=>u<Math.min(l,i),iterate:u=>u+1}).pipe((0,Ht.z)(u=>{const c=a[l-u-1];return(V.config.featureToggles.enableElasticsearchBackendQuerying?(0,fe.D)(this.getResource(c)):this.legacyQueryRunner.request("GET",c)).pipe((0,he.K)(d=>(0,te.of)({err:d})))}),(0,Xn.n)(u=>u?.err?.status===404),(0,ea.T)(()=>"Could not find an available index for this time range."),(0,ta.P)(),(0,B.U)(u=>{if(u.err)throw u.err;return u}))}annotationQuery(e){const s=this.prepareAnnotationRequest(e);Fa(e.annotation);const n=V.config.featureToggles.enableElasticsearchBackendQuerying?(0,fe.D)(this.postResourceRequest("_msearch",s)):this.legacyQueryRunner.request("POST","_msearch",s);return(0,O.n)(n.pipe((0,B.U)(a=>{const i=a.responses[0].hits.hits;return this.processHitsToAnnotationEvents(e.annotation,i)})))}prepareAnnotationRequest(e){const s=e.annotation,n=s.timeField||"@timestamp",a=s.timeEndField||null,i=s.query??s.target?.query??"",l=[],u={};if(u[n]={from:e.range.from.valueOf(),to:e.range.to.valueOf(),format:"epoch_millis"},l.push({range:u}),a){const v={};v[a]={from:e.range.from.valueOf(),to:e.range.to.valueOf(),format:"epoch_millis"},l.push({range:v})}const c=this.interpolateLuceneQuery(i),o={bool:{filter:[{bool:{should:l,minimum_should_match:1}}]}};c&&o.bool.filter.push({query_string:{query:c}});const d={query:o,size:1e4},g={search_type:"query_then_fetch",ignore_unavailable:!0};return s.index?g.index=s.index:g.index=this.indexPattern.getIndexList(e.range.from,e.range.to),JSON.stringify(g)+` `+JSON.stringify(d)+` `}processHitsToAnnotationEvents(e,s){const n=e.timeField||"@timestamp",a=e.timeEndField||null,i=e.textField||"tags",l=e.tagsField||null,u=[],c=(o,d)=>{if(!d)return;const g=d.split(".");let p=o;for(let v=0;v<g.length;v++)if(p=p[g[v]],!p)return"";return p};for(let o=0;o<s.length;o++){const d=s[o]._source;let g=c(d,n);if(typeof s[o].fields<"u"){const S=s[o].fields;typeof S=="object"&&((0,y.isString)(S[n])||(0,y.isNumber)(S[n]))&&(g=S[n])}const p={annotation:e,time:(0,I.zh)(g).valueOf(),text:c(d,i)};if(a){const S=c(d,a);S&&(p.timeEnd=(0,I.zh)(S).valueOf())}if(e.titleField){const S=c(d,e.titleField);S&&(p.text=S+` `+p.text)}const v=c(d,l);typeof v=="string"?p.tags=v.split(","):p.tags=v,u.push(p)}return u}interpolateLuceneQuery(e,s){return this.templateSrv.replace(e,s,"lucene")}interpolateVariablesInQueries(e,s){return e.map(n=>this.applyTemplateVariables(n,s))}async testDatasource(){const e=await this.getDatabaseVersion(!1),n=(e!=null?at(e):!0)?"":`WARNING: ${rt} `;return(0,O.n)(this.getFields(["date"]).pipe((0,Ht.z)(a=>(0,y.find)(a,{text:this.timeField})?(0,te.of)({status:"success",message:`${n}Data source successfully connected.`}):(0,te.of)({status:"error",message:"No date field named "+this.timeField+" found"})),(0,he.K)(a=>{const l=`Unable to connect with Elasticsearch${a.message?` (${a.message})`:""}. Please check the server logs for more details.`;return(0,te.of)({status:"error",message:l})})))}getQueryHeader(e,s,n){const a={search_type:e,ignore_unavailable:!0,index:this.indexPattern.getIndexList(s,n)};return JSON.stringify(a)}getQueryDisplayText(e){const s=e.metrics,n=e.bucketAggs;let a="";return e.query&&(a+="Query: "+e.query+", "),a+="Metrics: ",a+=s?.reduce((i,l)=>{let c=b[l.type].label+"(";return N(l)&&(c+=l.field),le(l)&&(c+=Y(l).replace(new RegExp("params.","g"),"")),c+="), ",`${i} ${c}`},""),a+=n?.reduce((i,l,u)=>{const c=x[l.type];let o="";return u===0&&(o+=" Group by: "),o+=c.label+"(",Ne(l)&&(o+=l.field),`${i} ${o}), `},""),e.alias&&(a+="Alias: "+e.alias),a}showContextToggle(){return!0}getDataProvider(e,s){if(this.getSupportedSupplementaryQueryTypes().includes(e))switch(e){case w.v8.LogsVolume:return this.getLogsVolumeDataProvider(s);case w.v8.LogsSample:return this.getLogsSampleDataProvider(s);default:return}}getSupportedSupplementaryQueryTypes(){return[w.v8.LogsVolume,w.v8.LogsSample]}getSupplementaryQuery(e,s){if(!this.getSupportedSupplementaryQueryTypes().includes(e.type))return;let n=!1;switch(e.type){case w.v8.LogsVolume:if(n=s.metrics?.length===1&&s.metrics[0].type==="logs",!n)return;const a=[],i=this.timeField??"@timestamp";return this.logLevelField&&a.push({id:"2",type:"terms",settings:{min_doc_count:"0",size:"0",order:"desc",orderBy:"_count",missing:w.in.unknown},field:this.logLevelField}),a.push({id:"3",type:"date_histogram",settings:{interval:"auto",min_doc_count:"0",trimEdges:"0"},field:i}),{refId:`${rs}${s.refId}`,query:s.query,metrics:[{type:"count",id:"1"}],timeField:i,bucketAggs:a};case w.v8.LogsSample:return n=it(s),n?e.limit?{refId:`${is}${s.refId}`,query:s.query,metrics:[{type:"logs",id:"1",settings:{limit:e.limit.toString()}}]}:{refId:`${is}${s.refId}`,query:s.query,metrics:[{type:"logs",id:"1"}]}:void 0;default:return}}getLogsVolumeDataProvider(e){const s=(0,y.cloneDeep)(e),n=s.targets.map(a=>this.getSupplementaryQuery({type:w.v8.LogsVolume},a)).filter(a=>!!a);if(n.length)return(0,qt.Bz)(this,{...s,targets:n},{range:e.range,targets:e.targets,extractLevel:Ra})}getLogsSampleDataProvider(e){const s=(0,y.cloneDeep)(e),i=s.targets.map(l=>this.getSupplementaryQuery({type:w.v8.LogsSample,limit:100},l)).filter(l=>!!l);if(i.length)return(0,qt.Ce)(this,{...s,targets:i})}query(e){const{enableElasticsearchBackendQuerying:s}=V.config.featureToggles;if(s){const n=new Date;return super.query(e).pipe((0,jt.b)(a=>ts(a,e,n)),(0,B.U)(a=>(a.data.forEach(i=>{ls(i,this.dataLinks)}),a)))}return this.legacyQueryRunner.query(e)}filterQuery(e){return!e.hide}isMetadataField(e){return Ca.includes(e)}getFields(e,s){const n={float:"number",double:"number",integer:"number",long:"number",date:"date",date_nanos:"date",string:"string",text:"string",scaled_float:"number",nested:"nested",histogram:"number"};return this.requestAllIndices("/_mapping",s).pipe((0,B.U)(a=>{const i=(o,d)=>this.isMetadataField(d)?!1:!e||e.length===0?!0:e.includes(o.type)||e.includes(n[o.type]),l=[],u={};function c(o){for(const d in o){const g=o[d];if((0,y.isObject)(g.properties)&&(l.push(d),c(g.properties)),(0,y.isObject)(g.fields)&&(l.push(d),c(g.fields)),(0,y.isString)(g.type)){const p=l.concat(d).join(".");i(g,d)&&(u[p]={text:p,type:g.type})}}l.pop()}for(const o in a){const d=a[o];if(d&&d.mappings){const p=d.mappings.properties;c(p)}}return(0,y.map)(u,o=>o)}))}getTerms(e,s=(0,A.JK)()){const n="query_then_fetch",a=this.getQueryHeader(n,s.from,s.to);let i=JSON.stringify(this.queryBuilder.getTermsQuery(e));i=i.replace(/\$timeFrom/g,s.from.valueOf().toString()),i=i.replace(/\$timeTo/g,s.to.valueOf().toString()),i=a+` `+i+` `;const l=this.getMultiSearchUrl();return(V.config.featureToggles.enableElasticsearchBackendQuerying?(0,fe.D)(this.postResourceRequest(l,i)):this.legacyQueryRunner.request("POST",l,i)).pipe((0,B.U)(c=>{if(!c.responses[0].aggregations)return[];const o=c.responses[0].aggregations[1].buckets;return(0,y.map)(o,d=>({text:d.key_as_string||d.key,value:d.key}))}))}getMultiSearchUrl(){const e=new URLSearchParams;return this.maxConcurrentShardRequests&&e.append("max_concurrent_shard_requests",`${this.maxConcurrentShardRequests}`),this.xpack&&this.includeFrozen&&e.append("ignore_throttled","false"),("_msearch?"+e.toString()).replace(/\?$/,"")}metricFindQuery(e,s){const n=s?.range,a=JSON.parse(e);if(e){if(a.find==="fields")return a.type=this.interpolateLuceneQuery(a.type),(0,O.n)(this.getFields(a.type,n));if(a.find==="terms")return a.field=this.interpolateLuceneQuery(a.field),a.query=this.interpolateLuceneQuery(a.query),(0,O.n)(this.getTerms(a,n))}return Promise.resolve([])}getTagKeys(){return(0,O.n)(this.getFields())}getTagValues(e){const s=this.timeSrv.timeRange();return(0,O.n)(this.getTerms({field:e.key},s))}targetContainsTemplate(e){if(this.templateSrv.containsTemplate(e.query)||this.templateSrv.containsTemplate(e.alias))return!0;if(e.bucketAggs){for(const s of e.bucketAggs)if(Ne(s)&&this.templateSrv.containsTemplate(s.field)||this.objectContainsTemplate(s.settings))return!0}if(e.metrics){for(const s of e.metrics)if(N(s)&&(s.field&&this.templateSrv.containsTemplate(s.field)||s.settings&&this.objectContainsTemplate(s.settings)||Pa(s)&&this.objectContainsTemplate(s.meta)))return!0}return!1}objectContainsTemplate(e){if(typeof e=="string")return this.templateSrv.containsTemplate(e);if(!e||typeof e!="object")return!1;for(const s of Object.keys(e))if(Array.isArray(e[s])){for(const n of e[s])if(this.objectContainsTemplate(n))return!0}else if(this.objectContainsTemplate(e[s]))return!0;return!1}toggleQueryFilter(e,s){let n=e.query??"";switch(s.type){case"FILTER_FOR":{n=Ee(n,s.options.key,s.options.value)?as(n,s.options.key,s.options.value):be(n,s.options.key,s.options.value);break}case"FILTER_OUT":{Ee(n,s.options.key,s.options.value)&&(n=as(n,s.options.key,s.options.value)),n=be(n,s.options.key,s.options.value,"-");break}}return{...e,query:n}}queryHasFilter(e,s){let n=e.query??"";return Ee(n,s.key,s.value)}modifyQuery(e,s){if(!s.options)return e;let n=e.query??"";switch(s.type){case"ADD_FILTER":{n=be(n,s.options.key,s.options.value);break}case"ADD_FILTER_OUT":{n=be(n,s.options.key,s.options.value,"-");break}}return{...e,query:n}}addAdHocFilters(e){const s=this.templateSrv.getAdhocFilters(this.name);if(s.length===0)return e;const n=s.map(i=>{let{key:l,operator:u,value:c}=i;if(!(!l||!c))switch(l=Se(l),u){case"=":return`${l}:"${c}"`;case"!=":return`-${l}:"${c}"`;case"=~":return`${l}:/${c}/`;case"!~":return`-${l}:/${c}/`;case">":return`${l}:>${c}`;case"<":return`${l}:<${c}`}});return[e,...n].filter(i=>i).join(" AND ")}applyTemplateVariables(e,s){const n=l=>l.type==="filters"?{...l,settings:{...l.settings,filters:l.settings?.filters?.map(u=>({...u,query:this.interpolateLuceneQuery(u.query,s)||"*"}))}}:l,a={...e,datasource:this.getRef(),query:this.addAdHocFilters(this.interpolateLuceneQuery(e.query||"",s)),bucketAggs:e.bucketAggs?.map(n)};return JSON.parse(this.templateSrv.replace(JSON.stringify(a),s))}getDatabaseVersionUncached(){const e=V.config.featureToggles.enableElasticsearchBackendQuerying?(0,fe.D)(this.getResourceRequest("")):this.legacyQueryRunner.request("GET","/");return(0,O.n)(e).then(s=>{const n=s?.version?.number;if(typeof n!="string")return null;try{return new Pe.SemVer(n)}catch(a){return console.error(a),null}},s=>(console.error(s),null))}async getDatabaseVersion(e=!0){if(e){const n=this.databaseVersion;if(n!=null)return n}const s=await this.getDatabaseVersionUncached();return this.databaseVersion=s,s}}function ls(t,e){if(e.length)for(const s of t.fields){const n=e.filter(a=>new RegExp(a.field).test(s.name));n.length!==0&&(s.config=s.config||{},s.config.links=[...(s.config.links,n.map(Oa))])}}function Oa(t){const e=(0,aa.F)();if(t.datasourceUid){const s=e.getInstanceSettings(t.datasourceUid);return{title:t.urlDisplayLabel||"",url:"",internal:{query:{query:t.url},datasourceUid:t.datasourceUid,datasourceName:s?.name??"Data source not found"}}}else return{title:t.urlDisplayLabel||"",url:t.url}}function $a(t,e,s){if(s){const a=Ut[s];return e===w.M4.Forward?{from:(0,I.CQ)(t).utc(),to:(0,I.CQ)(t).add(7,a.amount).utc().startOf(a.startOf)}:{from:(0,I.CQ)(t).subtract(7,a.amount).utc().startOf(a.startOf),to:(0,I.CQ)(t).utc()}}else return e===w.M4.Forward?{from:(0,I.CQ)(t).utc(),to:(0,I.CQ)(t).add(7,"hours").utc()}:{from:(0,I.CQ)(t).subtract(7,"hours").utc(),to:(0,I.CQ)(t).utc()}}function Ra(t){const s=t.fields.find(n=>n.type===Q.fS.number)?.labels?.level??"";return(0,la.jx)(s)}const Na=new U.hf(_a).setQueryEditor(Mn).setConfigEditor(Jn);(0,xe.N$)().subscribe(re.Pl,va)}}]); //# sourceMappingURL=2787.fa535543dd9b82b9916f.js.map