D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
build
/
Filename :
graphitePlugin.675e1d755edc5c0381d9.js
back
Copy
"use strict";(self.webpackChunkgrafana=self.webpackChunkgrafana||[]).push([[7494],{23621:(Ha,ie,g)=>{g.r(ie),g.d(ie,{plugin:()=>za});var oe=g(68246),y=g(42844),s=g(27702),I=g(66310),M=g(66670),v=g(34099);const ze=(0,v.PH)("init"),He=(0,v.PH)("time-range-changed"),Le=(0,v.PH)("queries-changed"),Qe=(0,v.PH)("query-changed"),We=(0,v.PH)("segment-value-changed"),Ue=(0,v.PH)("add-new-tag"),je=(0,v.PH)("tag-changed"),Je=(0,v.PH)("unpause"),Ke=(0,v.PH)("add-function"),Ze=(0,v.PH)("remove-function"),Xe=(0,v.PH)("move-function"),Ye=(0,v.PH)("change-function-param"),_e=(0,v.PH)("update-query"),et=(0,v.PH)("run-current-query"),tt=(0,v.PH)("toggle-editor"),f={init:ze,timeRangeChanged:He,queriesChanged:Le,queryChanged:Qe,segmentValueChanged:We,tagChanged:je,addNewTag:Ue,unpause:Je,addFunction:Ke,removeFunction:Ze,moveFunction:Xe,updateFunctionParam:Ye,updateQuery:_e,runQuery:et,toggleEditorMode:tt};var at=g(24077),Q=g(99386),nt=g(39317),m=g(89949),rt=g(69513);const W=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3805,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4304,4346,4348,4348,4352,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7104,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11520,11557,11568,11621,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,13312,19893,19893,19968,19968,40907,40907,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42897,42912,42921,43002,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,44032,55203,55203,55216,55238,55243,55291,63744,64045,64048,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66334,66352,66378,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67840,67861,67872,67897,68096,68096,68112,68115,68117,68119,68121,68147,68192,68220,68352,68405,68416,68437,68448,68466,68608,68680,69635,69687,69763,69807,73728,74606,74752,74850,77824,78894,92160,92728,110592,110593,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,131072,131072,173782,173782,173824,173824,177972,177972,177984,177984,178205,178205,194560,195101],U=[];for(let t=0;t<128;t++)U[t]=t>=48&&t<=57||t===36||t===126||t===124||t>=65&&t<=90||t===95||t===45||t===42||t===58||t===91||t===93||t===63||t===37||t===35||t===61||t>=97&&t<=122;const st=U;class it{constructor(e){this.input=e,this.char=1,this.from=1}peek(e){return this.input.charAt(e||0)}skip(e){e=e||1,this.char+=e,this.input=this.input.slice(e)}tokenize(){const e=[];let a=this.next();for(;a;)e.push(a),a=this.next();return e}next(){if(this.from=this.char,/\s/.test(this.peek())){for(;/\s/.test(this.peek());)this.from+=1,this.skip();if(this.peek()==="")return null}let e=this.scanStringLiteral();return e||(e=this.scanPunctuator()||this.scanNumericLiteral()||this.scanIdentifier()||this.scanTemplateSequence(),e?(this.skip(e.value.length),e):null)}scanTemplateSequence(){return this.peek()==="["&&this.peek(1)==="["?{type:"templateStart",value:"[[",pos:this.char}:this.peek()==="]"&&this.peek(1)==="]"?{type:"templateEnd",value:"[[",pos:this.char}:null}scanIdentifier(){let e="",a=0,n,r;function i(d){for(let h=0;h<W.length;){if(d<W[h++])return!1;if(d<=W[h++])return!0}return!1}function o(d){return/^[0-9a-fA-F]$/.test(d)}const l=(0,m.bind)(function(){if(a+=1,this.peek(a)!=="u")return null;const d=this.peek(a+1),h=this.peek(a+2),E=this.peek(a+3),P=this.peek(a+4);let k;return o(d)&&o(h)&&o(E)&&o(P)?(k=parseInt(d+h+E+P,16),i(k)?(a+=5,"\\u"+d+h+E+P):null):null},this),c=(0,m.bind)(function(){const d=this.peek(a),h=d.charCodeAt(0);return d==="*"?(a+=1,d):h===92?l():h<128?U[h]?(a+=1,d):null:i(h)?(a+=1,d):null},this),p=(0,m.bind)(function(){const d=this.peek(a),h=d.charCodeAt(0);return h===92?l():h<128?st[h]?(a+=1,d):null:i(h)?(a+=1,d):null},this);if(r=c(),r===null)return null;for(e=r;r=p(),r!==null;)e+=r;switch(e){case"true":{n="bool";break}case"false":{n="bool";break}default:n="identifier"}return{type:n,value:e,pos:this.char}}scanNumericLiteral(){let e=0,a="";const n=this.input.length;let r=this.peek(e),i;function o(d){return/^[0-9]$/.test(d)}function l(d){return/^[0-7]$/.test(d)}function c(d){return/^[0-9a-fA-F]$/.test(d)}function p(d){return d==="$"||d==="_"||d==="\\"||d>="a"&&d<="z"||d>="A"&&d<="Z"}if(r==="-"&&(a+=r,e+=1,r=this.peek(e)),r!=="."&&!o(r))return null;if(r!=="."){if(a+=this.peek(e),e+=1,r=this.peek(e),a==="0"){if(r==="x"||r==="X"){for(e+=1,a+=r;e<n&&(r=this.peek(e),!!c(r));)a+=r,e+=1;return a.length<=2?{type:"number",value:a,isMalformed:!0,pos:this.char}:e<n&&(r=this.peek(e),p(r))?null:{type:"number",value:a,base:16,isMalformed:!1,pos:this.char}}if(l(r)){for(e+=1,a+=r,i=!1;e<n;){if(r=this.peek(e),o(r)&&(i=!0),!l(r)){if(!this.isPunctuator(r))return null;break}a+=r,e+=1}return e<n&&(r=this.peek(e),p(r))?null:{type:"number",value:a,base:8,isMalformed:i}}o(r)&&(e+=1,a+=r)}for(;e<n&&(r=this.peek(e),!!o(r));)a+=r,e+=1}if(r===".")for(a+=r,e+=1;e<n&&(r=this.peek(e),!!o(r));)a+=r,e+=1;if(r==="e"||r==="E")if(a+=r,e+=1,r=this.peek(e),(r==="+"||r==="-")&&(a+=this.peek(e),e+=1),r=this.peek(e),o(r))for(a+=r,e+=1;e<n&&(r=this.peek(e),!!o(r));)a+=r,e+=1;else return null;return e<n&&(r=this.peek(e),!this.isPunctuator(r))?null:{type:"number",value:a,base:10,pos:this.char,isMalformed:!isFinite(+a)}}isPunctuator(e){switch(e){case".":case"(":case")":case",":case"{":case"}":return!0}return!1}scanPunctuator(){const e=this.peek();return this.isPunctuator(e)?{type:e,value:e,pos:this.char}:null}scanStringLiteral(){const e=this.peek();if(e!=='"'&&e!=="'")return null;let a="";for(this.skip();this.peek()!==e;){if(this.peek()==="")return{type:"string",value:a,isUnclosed:!0,quote:e,pos:this.char};const n=this.peek(),r=1;a+=n,this.skip(r)}return this.skip(),{type:"string",value:a,isUnclosed:!1,quote:e,pos:this.char}}}function ot(t){if(t&&t.status===500&&t.data?.message?.startsWith("<body")){const e=(0,m.last)(t.data.message.replace(/(<([^>]+)>)/gi,"").trim().split(/\n/)).replace(/u?&#[^;]+;/g,"");t.data.message=`Graphite encountered an unexpected error while handling your request. ${e}`}return t}function lt(t){return typeof t=="object"&&t!==null&&"message"in t&&"pos"in t}class ut{constructor(e){this.expression=e,this.lexer=new it(e),this.tokens=this.lexer.tokenize(),this.index=0}getAst(){return this.start()}start(){try{return this.functionCall()||this.metricExpression()}catch(e){if(lt(e))return{type:"error",message:e.message,pos:e.pos}}return null}curlyBraceSegment(){if(this.match("identifier","{")||this.match("{")){let e="";for(;!this.match("")&&!this.match("}");)e+=this.consumeToken().value;return this.match("}")||this.errorMark("Expected closing '}'"),e+=this.consumeToken().value,this.match("identifier")&&(e+=this.consumeToken().value),{type:"segment",value:e}}else return null}metricSegment(){const e=this.curlyBraceSegment();if(e)return e;if(this.match("identifier")||this.match("number")||this.match("bool")){const n=this.consumeToken().value,r=n&&typeof n=="string"?n.split("."):"";return r.length===2&&(this.tokens.splice(this.index,0,{type:"."}),this.tokens.splice(this.index+1,0,{type:"number",value:r[1]})),{type:"segment",value:r[0]}}this.match("templateStart")||this.errorMark("Expected metric identifier"),this.consumeToken(),this.match("identifier")||this.errorMark("Expected identifier after templateStart");const a={type:"template",value:this.consumeToken().value};return this.match("templateEnd")||this.errorMark("Expected templateEnd"),this.consumeToken(),a}metricExpression(){if(!this.match("templateStart")&&!this.match("identifier")&&!this.match("number")&&!this.match("{"))return null;const e={type:"metric",segments:[]},a=this.metricSegment();for(e.segments&&a&&e.segments.push(a);this.match(".");){this.consumeToken();const n=this.metricSegment();n||this.errorMark("Expected metric identifier"),e.segments&&n&&e.segments.push(n)}return e}functionCall(){if(!this.match("identifier","("))return null;let e="";const a=this.consumeToken();typeof a.value=="string"&&(e=a.value);const n={type:"function",name:e};return this.consumeToken(),n.params=this.functionParameters(),this.match(")")||this.errorMark("Expected closing parenthesis"),this.consumeToken(),n}boolExpression(){return this.match("bool")?{type:"bool",value:this.consumeToken().value==="true"}:null}functionParameters(){if(this.match(")")||this.match(""))return[];const e=this.functionCall()||this.numericLiteral()||this.seriesRefExpression()||this.boolExpression()||this.metricExpression()||this.stringLiteral();return!this.match(",")&&e?[e]:(this.consumeToken(),e?[e].concat(this.functionParameters()):[])}seriesRefExpression(){if(!this.match("identifier"))return null;const e=this.tokens[this.index].value;return e&&typeof e=="string"&&!e.match(/\#[A-Z]/)?null:{type:"series-ref",value:this.consumeToken().value}}numericLiteral(){if(!this.match("number"))return null;const e=this.consumeToken();return e&&e.value&&typeof e.value=="string"?{type:"number",value:parseFloat(e.value)}:null}stringLiteral(){if(!this.match("string"))return null;const e=this.consumeToken();if(e.isUnclosed&&e.pos)throw{message:"Unclosed string parameter",pos:e.pos};return{type:"string",value:e.value}}errorMark(e){const a=this.tokens[this.index],n=a?a.type:"end of string";throw{message:e+" instead found "+n,pos:a&&a.pos?a.pos:this.lexer.char}}consumeToken(){return this.index++,this.tokens[this.index-1]}matchToken(e,a){const n=this.tokens[this.index+a];return n===void 0&&e===""||n&&n.type===e}match(e,a){return this.matchToken(e,0)&&(!a||this.matchToken(a,1))}}class le{constructor(e,a,n,r){this.functions=[],this.segments=[],this.tags=[],this.seriesByTagUsed=!1,this.checkOtherSegmentsIndex=0,this.datasource=e,this.target=a,this.templateSrv=n,this.scopedVars=r,this.parseTarget(),this.removeTagValue="-- remove tag --"}parseTarget(){if(this.functions=[],this.segments=[],this.tags=[],this.seriesByTagUsed=!1,this.error=null,this.target.textEditor)return;const a=new ut(this.target.target).getAst();if(a===null){this.checkOtherSegmentsIndex=0;return}if(a.type==="error"){this.error=a.message+" at position: "+a.pos,this.target.textEditor=!0;return}try{this.parseTargetRecursive(a,null)}catch(n){n instanceof Error&&(console.error("error parsing target:",n.message),this.error=n.message),this.target.textEditor=!0}this.checkOtherSegmentsIndex=this.segments.length-1}getSegmentPathUpTo(e){const a=this.segments.slice(0,e);return(0,m.reduce)(a,(n,r)=>n?n+"."+r.value:r.value,"")}parseTargetRecursive(e,a){if(e===null)return null;switch(e.type){case"function":const n=this.datasource.createFuncInstance(e.name,{withDefaultParams:!1});ct(e),(0,m.each)(e.params,r=>{this.parseTargetRecursive(r,n)}),n.updateText(),this.functions.push(n),n.def.name==="seriesByTag"&&!this.seriesByTagUsed&&(this.seriesByTagUsed=!0,n.hidden=!0,this.tags=this.splitSeriesByTagParams(n));break;case"series-ref":this.segments.length>0||this.getSeriesByTagFuncIndex()>=0?this.addFunctionParameter(a,e.value):this.segments.push(e);break;case"bool":case"string":case"number":this.addFunctionParameter(a,e.value);break;case"metric":this.segments.length||this.tags.length?this.addFunctionParameter(a,(0,m.join)((0,m.map)(e.segments,"value"),".")):this.segments=e.segments;break}}updateSegmentValue(e,a){this.segments[a].value=e.value}addSelectMetricSegment(){this.segments.push({value:"select metric"})}addFunction(e){this.functions.push(e)}addFunctionParameter(e,a){if(e.params.length>=e.def.params.length&&!(0,m.get)((0,m.last)(e.def.params),"multiple",!1))throw{message:"too many parameters for function "+e.def.name};e.params.push(a)}removeFunction(e){this.functions=(0,m.without)(this.functions,e)}moveFunction(e,a){const n=this.functions.indexOf(e);(0,rt.R)(this.functions,n,n+a)}updateModelTarget(e){const a=(n,r)=>r.render(n,i=>this.templateSrv.replace(i,this.scopedVars));if(!this.target.textEditor){const n=this.getSegmentPathUpTo(this.segments.length).replace(/\.?select metric$/,"");this.target.target=(0,m.reduce)(this.functions,a,n)}this.updateRenderedTarget(this.target,e);for(const n of e||[])n.refId!==this.target.refId&&this.updateRenderedTarget(n,e);this.functions.forEach(n=>n.added=!1)}updateRenderedTarget(e,a){const n=(0,m.keyBy)(a,"refId");delete n[e.refId];const r=/\#([A-Z])/g;let i=e.target;for((0,m.each)(n,(o,l)=>{const c=RegExp(`#(${l})`,"g"),p=i.match(c);o.refCount=p?.length??0});i.match(r);){const o=i.replace(r,(l,c)=>{const p=n[c];return p?(p.refCount===0&&delete n[c],p.refCount--,p.target):l});if(o===i)break;i=o}delete e.targetFull,e.target!==i&&(e.targetFull=i)}splitSeriesByTagParams(e){const a=/([^\!=~]+)(\!?=~?)(.*)/;return(0,m.flatten)((0,m.map)(e.params,n=>{const r=a.exec(n);if(r){const i=r.slice(1);if(i.length===3)return{key:i[0],operator:i[1],value:i[2]}}return[]}))}getSeriesByTagFuncIndex(){return(0,m.findIndex)(this.functions,e=>e.def.name==="seriesByTag")}getSeriesByTagFunc(){const e=this.getSeriesByTagFuncIndex();if(e>=0)return this.functions[e]}addTag(e){const a=ue(e);this.getSeriesByTagFunc().params.push(a),this.tags.push(e)}removeTag(e){this.getSeriesByTagFunc().params.splice(e,1),this.tags.splice(e,1)}updateTag(e,a){if(this.error=null,e.key===this.removeTagValue){this.removeTag(a),this.tags.length===0&&(this.removeFunction(this.getSeriesByTagFunc()),this.checkOtherSegmentsIndex=0,this.seriesByTagUsed=!1);return}this.getSeriesByTagFunc().params[a]=ue(e),this.tags[a]=e}renderTagExpressions(e=-1){return(0,m.compact)((0,m.map)(this.tags,(a,n)=>{if(n!==e)return a.key+a.operator+a.value}))}}function ue(t){return t.key+t.operator+t.value}function ct(t){if(t.params&&t.params.length>=2){let e=0;t.params=t.params.map(a=>{if(a.type==="function"&&(e+=1),e===2&&a.type==="function"&&a.name==="seriesByTag"){const n=a.params&&a.params.reduce((r,i,o,l)=>o===0||o!==l.length-1?`${r}'${i.value}',`:`${r}'${i.value}'`,"");return{type:"string",value:`${a.name}(${n})`}}return a})}}var ce=g(73807),me=g(4021),pe=g(84749);const mt=["=","!=","=~","!=~"],de="tag: ";async function O(t){t.queryModel.parseTarget(),await ge(t)}async function ge(t,e=!0){t.segments=(0,m.clone)(t.queryModel.segments);const a=t.queryModel.checkOtherSegmentsIndex||0;await q(t,a,e)}function j(t){t.queryModel.addSelectMetricSegment(),t.segments.push({value:"select metric",fake:!0})}async function q(t,e,a=!0){if(t.queryModel.segments.length===1&&t.queryModel.segments[0].type==="series-ref")return;if(e===0){j(t);return}const n=e+1,r=t.queryModel.getSegmentPathUpTo(n);if(r!=="")try{const i=await t.datasource.metricFindQuery(r);i.length===0?r!==""&&a&&(t.queryModel.segments=t.queryModel.segments.splice(0,n),t.segments=t.segments.splice(0,n),(0,m.some)(t.segments,{fake:!0})||j(t)):i[0].expandable&&(t.segments.length===e?j(t):await q(t,n))}catch(i){i instanceof Error&&fe(t,i)}}function pt(t,e){t.segments=t.segments.splice(0,e),t.queryModel.segments=t.queryModel.segments.splice(0,e)}function he(t){t.queryModel.segments=[],t.segments=[]}async function dt(t,e){const a=t.datasource.createFuncInstance("seriesByTag",{withDefaultParams:!1}),n=`${e}=`;a.params=[n],t.queryModel.addFunction(a),a.added=!0,he(t),T(t),await O(t)}function gt(t,e){if(e.def.name==="aliasByNode"){for(let a=0;a<t.segments.length;a++)if(t.segments[a].value.indexOf("*")>=0){e.params[0]=a,e.added=!1,T(t);return}}}function ht(t){t.paused=!0}function ft(t){return t.replace(de,"")}function T(t){if(t.queryModel.error)return;let e=t.queryModel.target.target;t.queryModel.updateModelTarget((t.queries||[]).filter(n=>"target"in n&&typeof n.target=="string"));const a=t.queryModel.target.target.replace(/\s+/g,"");e=e.replace(/\s+/g,""),a!==e&&!t.paused&&t.refresh()}function fe(t,e){return t.metricAutoCompleteErrorShown||(t.metricAutoCompleteErrorShown=!0,(0,pe.WI)((0,me.$l)((0,ce.t_)(`Fetching metrics failed: ${e.message}.`)))),t}function ye(t,e){return t.tagsAutoCompleteErrorShown||(t.tagsAutoCompleteErrorShown=!0,(0,pe.WI)((0,me.$l)((0,ce.t_)(`Fetching tags failed: ${e.message}.`)))),t}const yt=async(t,e)=>{if(e={...e},f.init.match(t)){const a=t.payload;a.target.target=a.target.target||"",await a.datasource.waitForFuncDefsLoaded(),e={...e,...a,queryModel:new le(a.datasource,a.target,(0,nt.J)()),supportsTags:a.datasource.supportsTags,paused:!1,removeTagValue:"-- remove tag --",funcDefs:a.datasource.funcDefs,queries:a.queries},await ge(e,!1)}if(f.timeRangeChanged.match(t)&&(e.range=t.payload),f.queriesChanged.match(t)&&(e.queries=t.payload,T(e)),f.queryChanged.match(t)&&(e.target.target=t.payload.target||"",await O(e),T(e)),f.segmentValueChanged.match(t)){const{segment:a,index:n}=t.payload;let r;if(typeof a=="string"?r={value:a,expandable:!0,fake:!1}:r=a,e.error=null,e.segments[n]=r,e.queryModel.updateSegmentValue(r,n),e.queryModel.functions.length>0&&e.queryModel.functions[0].def.fake&&(e.queryModel.functions=[]),r.type==="tag"){const i=ft(r.value);return ht(e),await dt(e,i),e}r.expandable?await q(e,n+1):pt(e,n+1),T(e)}if(f.tagChanged.match(t)){const{tag:a,index:n}=t.payload;e.queryModel.updateTag(a,n),T(e),e.queryModel.tags.length===0&&(await q(e,0),e.paused=!1)}if(f.addNewTag.match(t)){const r={key:t.payload.segment.value,operator:"=",value:""};e.queryModel.addTag(r),T(e)}if(f.unpause.match(t)&&(e.paused=!1,e.refresh()),f.addFunction.match(t)){const a=e.datasource.createFuncInstance(t.payload.name,{withDefaultParams:!0});a.added=!0,e.queryModel.addFunction(a),gt(e,a),e.segments.length===1&&e.segments[0].fake&&he(e),!a.params.length&&a.added&&T(e),a.def.name==="seriesByTag"&&await O(e)}if(f.removeFunction.match(t)&&(e.queryModel.removeFunction(t.payload.func),T(e)),f.moveFunction.match(t)){const{func:a,offset:n}=t.payload;e.queryModel.moveFunction(a,n),T(e)}if(f.updateFunctionParam.match(t)){const{func:a,index:n,value:r}=t.payload;a.updateParam(r,n),T(e)}return f.updateQuery.match(t)&&(e.target.target=t.payload.query,T(e)),f.runQuery.match(t)&&e.refresh(),f.toggleEditorMode.match(t)&&(e.target.textEditor=!e.target.textEditor,await O(e)),{...e}},vt=t=>{let e={};return async n=>{e=await yt(n,e),t(e)}},ve=(0,s.createContext)({}),Ee=(0,s.createContext)({}),w=()=>(0,s.useContext)(ve),Et=()=>(0,s.useContext)(Ee),Tt=({datasource:t,onRunQuery:e,onChange:a,query:n,queries:r,range:i,children:o})=>{const[l,c]=(0,s.useState)(),[p,d]=(0,s.useState)(!1),h=(0,s.useMemo)(()=>vt(P=>{c(P)}),[]),E=(0,at.Z)(i);return(0,s.useEffect)(()=>{JSON.stringify(E?.raw)!==JSON.stringify(i?.raw)&&h(f.timeRangeChanged(i))},[h,i,E]),(0,s.useEffect)(()=>{l&&h(f.queriesChanged(r))},[JSON.stringify(r)]),(0,s.useEffect)(()=>{l&&l.target?.target!==n.target&&h(f.queryChanged(n))},[h,n]),(0,s.useEffect)(()=>{p&&l&&(d(!1),a({...n,target:l.target.target}),e())},[p,JSON.stringify(n)]),l?s.createElement(Ee.Provider,{value:l},s.createElement(ve.Provider,{value:h},o)):(h(f.init({target:n,datasource:t,range:i,templateSrv:(0,Q.J)(),queries:r||[],refresh:()=>{d(!0)}})),null)};var Te=g(44541),J=g(95578),b=(t=>(t.Default="Default",t.Value="Value",t.MetricName="Metric Name",t))(b||{}),D=(t=>(t.Default="default",t.Metrictank="metrictank",t))(D||{});function K(t){return t.map(e=>({value:e,label:e}))}function Se(t){return t.map(e=>({label:e.value,value:e}))}function St(t){const e={};return(0,m.forEach)(t,a=>{a.category&&(e[a.category]||(e[a.category]={label:a.category,value:a.category,options:[]}),e[a.category].options.push({label:a.name,value:a.name}))}),(0,m.sortBy)(e,"label")}function Z(t,e,a){return{name:t.name,value:a?.toString()||"",optional:!!t.optional||e,multiple:!!t.multiple,options:t.options?.map(n=>({value:n.toString(),label:n.toString()}))??[]}}function bt(t){const e=t.def.params.map((a,n)=>Z(a,!1,t.params[n]));for(;e.length<t.params.length;){const a=t.def.params[t.def.params.length-1],n=t.params[e.length];e.push(Z(a,!0,n))}if(e.length&&e[e.length-1].value&&e[e.length-1]?.multiple){const a=t.def.params[t.def.params.length-1];e.push(Z(a,!0,""))}return e}function be(t){return typeof t=="string"?{refId:"A",target:t,queryType:b.Default.toString()}:t}function xt({funcDefs:t}){const e=w(),[a,n]=(0,s.useState)(void 0),r=(0,I.wW)(Ct),i=(0,s.useMemo)(()=>St(t),[t]);return(0,s.useEffect)(()=>{a?.value!==void 0&&(e(f.addFunction({name:a.value})),n(void 0))},[a,e]),s.createElement(J.X,{Component:s.createElement(M.zx,{icon:"plus",variant:"secondary",className:(0,y.cx)(r.button),"aria-label":"Add new function"}),options:i,onChange:n,inputMinWidth:150})}function Ct(t){return{button:(0,y.css)` margin-right: ${t.spacing(.5)}; `}}var Pt=g(64022),xe=g(53901),X=g(80011),F=g(73453);const kt=s.lazy(async()=>({default(t){return s.createElement("div",null,t.description)}})),wt=t=>{if(t.description){let e=s.createElement(s.Suspense,{fallback:s.createElement("span",null,"Loading description...")},s.createElement(kt,{description:t.description}));return s.createElement(X.u,{content:e,placement:"bottom-end"},s.createElement(F.J,{className:t.description?void 0:"pointer",name:"question-circle"}))}return s.createElement(F.J,{className:"pointer",name:"question-circle",onClick:()=>{window.open("http://graphite.readthedocs.org/en/latest/functions.html#graphite.render.functions."+t.name,"_blank")}})},Mt=t=>{const{func:e,onMoveLeft:a,onMoveRight:n,onRemove:r}=t;return s.createElement("div",{style:{display:"flex",width:"60px",justifyContent:"space-between"}},s.createElement(F.J,{name:"arrow-left",onClick:()=>a(e)}),s.createElement(wt,{name:e.def.name,description:e.def.description}),s.createElement(F.J,{name:"times",onClick:()=>r(e)}),s.createElement(F.J,{name:"arrow-right",onClick:()=>n(e)}))},Ft=t=>({icon:(0,y.css)` margin-right: ${t.spacing(.5)}; `,label:(0,y.css)({fontWeight:t.typography.fontWeightMedium,fontSize:t.typography.bodySmall.fontSize,cursor:"pointer",display:"inline-block"})}),It=({onMoveLeft:t,onMoveRight:e,func:a,...n})=>{const r=(0,I.wW)(Ft),i=({updatePopperPosition:o})=>s.createElement(Mt,{...n,func:a,onMoveLeft:()=>{t(a),o()},onMoveRight:()=>{e(a),o()}});return s.createElement(s.Fragment,null,a.def.unknown&&s.createElement(X.u,{content:s.createElement(Ce,null),placement:"bottom",interactive:!0},s.createElement(F.J,{"data-testid":"warning-icon",name:"exclamation-triangle",size:"xs",className:r.icon})),s.createElement(X.u,{content:i,placement:"top",interactive:!0},s.createElement("span",{className:r.label},a.def.name)))},Ce=s.memo(()=>s.createElement("span",null,"This function is not supported. Check your function for typos and"," ",s.createElement("a",{target:"_blank",className:"external-link",rel:"noreferrer noopener",href:"https://graphite.readthedocs.io/en/latest/functions.html"},"read the docs")," ","to see whether you need to upgrade your data source\u2019s version to make this function available."));Ce.displayName="FunctionEditorTooltipContent";var At=g(45066);function Nt({editableParam:t,onChange:e,onExpandedChange:a,autofocus:n}){const r=(0,I.wW)(Rt);return t.options?.length>0?s.createElement(J.X,{autofocus:n,value:t.value,inputPlaceholder:t.name,className:r.segment,options:t.options,placeholder:" +"+t.name,onChange:i=>{e(i.value||"")},onExpandedChange:a,inputMinWidth:150,allowCustomValue:!0,allowEmptyValue:!0}):s.createElement(At.X,{autofocus:n,className:r.input,value:t.value||"",placeholder:" +"+t.name,inputPlaceholder:t.name,onChange:i=>{e(i.toString())},onExpandedChange:a,style:{height:"25px",paddingTop:"2px",marginTop:"2px",paddingLeft:"4px",minWidth:"100px"}})}const Rt=t=>({segment:(0,y.css)({margin:0,padding:0}),input:(0,y.css)` margin: 0; padding: 0; input { height: 25px; }, `});function Ot({func:t}){const e=w(),a=(0,I.wW)(qt),[n,r]=(0,s.useState)(!1),[i,o]=(0,s.useState)(!1);let l=bt(t);return l=l.filter((c,p)=>p<t.def.params.length&&!c.optional||t.added||c.value||i||n),s.createElement("div",{className:(0,y.cx)(a.container,{[a.error]:t.def.unknown}),onBlur:()=>r(!1),onFocus:()=>r(!0),onMouseOver:()=>r(!0),onMouseOut:()=>r(!1)},s.createElement(Pt.Lh,{spacing:"none"},s.createElement(It,{func:t,onMoveLeft:()=>{e(f.moveFunction({func:t,offset:-1}))},onMoveRight:()=>{e(f.moveFunction({func:t,offset:1}))},onRemove:()=>{e(f.removeFunction({func:t}))}}),s.createElement(xe.W,{className:a.label},"("),l.map((c,p)=>s.createElement(s.Fragment,{key:p},s.createElement(Nt,{autofocus:p===0&&t.added,editableParam:c,onChange:d=>{(d!==""||c.optional)&&e(f.updateFunctionParam({func:t,index:p,value:d})),o(!1),r(!1)},onExpandedChange:o}),p!==l.length-1?",":"")),s.createElement(xe.W,{className:a.label},")")))}const qt=t=>({container:(0,y.css)({backgroundColor:t.colors.background.secondary,borderRadius:t.shape.borderRadius(),marginRight:t.spacing(.5),padding:`0 ${t.spacing(1)}`,height:`${t.v1.spacing.formInputHeight}px`}),error:(0,y.css)` border: 1px solid ${t.colors.error.main}; `,label:(0,y.css)({padding:0,margin:0}),button:(0,y.css)({padding:t.spacing(.5)})});function Dt({functions:t=[],funcDefs:e}){return s.createElement(Te.f,{label:"Functions",fill:!0},t.map((a,n)=>!a.hidden&&s.createElement(Ot,{key:n,func:a})),s.createElement(xt,{funcDefs:e}))}var Bt=g(9857);function Gt({rawQuery:t}){const e=w(),a=(0,s.useCallback)(r=>{e(f.updateQuery({query:r}))},[e]),n=(0,s.useCallback)(()=>{e(f.runQuery())},[e]);return s.createElement(Bt.q,{query:t,onChange:a,onBlur:n,onRunQuery:n,placeholder:"Enter a Graphite query (run with Shift+Enter)",portalOrigin:"graphite"})}var B=g(92472);const G=5e3;async function Vt(t,e,a){let n=a.length>0?"*"+a+"*":"*";e>0&&(n=t.queryModel.getSegmentPathUpTo(e)+"."+n);const r={range:t.range,requestId:"get-alt-segments"};try{const i=await t.datasource.metricFindQuery(n,r),o=(0,m.map)(i,l=>({value:l.text,expandable:l.expandable}));return e>0&&o.length===0?o:(e===0&&(0,m.eachRight)(t.queries,l=>{l.refId!==t.queryModel.target.refId&&o.unshift({type:"series-ref",value:"#"+l.refId,expandable:!1})}),(0,m.eachRight)(t.templateSrv.getVariables(),l=>{o.unshift({type:"template",value:"$"+l.name,expandable:!0})}),o.unshift({value:"*",expandable:!0}),o.splice(G),t.supportsTags&&e===0?(Jt(o),await jt(t,a,o)):o)}catch(i){i instanceof Error&&fe(t,i)}return[]}async function $t(t,e,a){return Se(await Vt(t,e,a))}function zt(){return K(mt)}async function Ht(t,e,a){try{const n=t.queryModel.renderTagExpressions(e),r=await t.datasource.getTagsAutoComplete(n,a,{range:t.range,limit:G}),i=(0,m.map)(r,"text");return i.splice(0,0,t.removeTagValue),i}catch(n){n instanceof Error&&ye(t,n)}return[]}async function Lt(t,e,a){return K(await Ht(t,e,a))}async function Pe(t,e){let a;try{const n=t.queryModel.renderTagExpressions(),r=await t.datasource.getTagsAutoComplete(n,e,{range:t.range,limit:G});a=(0,m.map)(r,i=>({value:i.text,type:"tag",expandable:!1}))}catch(n){a=[],n instanceof Error&&ye(t,n)}return a}async function Qt(t,e){return Se(await Pe(t,e))}async function Wt(t,e,a,n){const r=t.queryModel.renderTagExpressions(a),i=e.key,o=await t.datasource.getTagValuesAutoComplete(r,i,n,{limit:G}),l=(0,m.map)(o,"text");return(0,m.eachRight)(t.templateSrv.getVariables(),c=>{l.push("${"+c.name+":regex}")}),l}async function Ut(t,e,a,n){return K(await Wt(t,e,a,n))}async function jt(t,e,a){let n=await Pe(t,e);return n=(0,m.map)(n,r=>(r.value=de+r.value,r)),a.concat(...n)}function Jt(t){(0,m.remove)(t,e=>e.value==="_tagged")}function Kt({metricIndex:t,segment:e,state:a}){const n=w(),r=(0,s.useCallback)(c=>$t(a,t,c||""),[a,t]),i=(0,s.useMemo)(()=>(0,m.debounce)(r,200,{leading:!0}),[r]),o=(0,s.useCallback)(c=>{n(f.segmentValueChanged({segment:c.value,index:t}))},[n,t]),l=(0,s.useMemo)(()=>(0,m.debounce)(o,100),[o]);return s.createElement(B.V,{value:e.value,inputMinWidth:150,allowCustomValue:!0,loadOptions:i,reloadOptionsOnChange:!0,onChange:l})}function Zt({segments:t=[],state:e}){return s.createElement(s.Fragment,null,t.map((a,n)=>s.createElement(Kt,{segment:a,metricIndex:n,key:n,state:e})))}function Xt(){const t=w(),e=(0,s.useCallback)(()=>{t(f.unpause())},[t]);return s.createElement(M.zx,{icon:"play",onClick:e,type:"button",variant:"secondary","aria-label":"Unpause query"})}function Yt({tag:t,tagIndex:e,state:a}){const n=w(),r=(0,s.useCallback)(c=>Lt(a,e,c||""),[a,e]),i=(0,s.useMemo)(()=>(0,m.debounce)(r,200,{leading:!0}),[r]),o=(0,s.useCallback)(c=>Ut(a,t,e,c||""),[a,e,t]),l=(0,s.useMemo)(()=>(0,m.debounce)(o,200,{leading:!0}),[o]);return s.createElement(s.Fragment,null,s.createElement(B.V,{inputMinWidth:150,value:t.key,loadOptions:i,reloadOptionsOnChange:!0,onChange:c=>{n(f.tagChanged({tag:{...t,key:c.value},index:e}))},allowCustomValue:!0}),s.createElement(J.X,{inputMinWidth:50,value:t.operator,options:zt(),onChange:c=>{n(f.tagChanged({tag:{...t,operator:c.value},index:e}))}}),s.createElement(B.V,{inputMinWidth:150,value:t.value,loadOptions:l,reloadOptionsOnChange:!0,onChange:c=>{n(f.tagChanged({tag:{...t,value:c.value},index:e}))},allowCustomValue:!0}))}function _t({tags:t,state:e}){const a=w(),n=(0,I.wW)(ea),r=(0,s.useCallback)(o=>Qt(e,o||""),[e]),i=(0,s.useMemo)(()=>(0,m.debounce)(r,200,{leading:!0}),[r]);return s.createElement(s.Fragment,null,t.map((o,l)=>s.createElement(Yt,{key:l,tagIndex:l,tag:o,state:e})),t.length&&s.createElement(B.V,{inputMinWidth:150,onChange:o=>{a(f.addNewTag({segment:o.value}))},loadOptions:i,reloadOptionsOnChange:!0,Component:s.createElement(M.zx,{icon:"plus",variant:"secondary",className:n.button,"aria-label":"Add new tag"})}),e.paused&&s.createElement(Xt,null))}function ea(t){return{button:(0,y.css)` margin-right: ${t.spacing(.5)}; `}}function ta({state:t}){const e=t.queryModel?.seriesByTagUsed?s.createElement(_t,{tags:t.queryModel?.tags,state:t}):s.createElement(Zt,{segments:t.segments,state:t});return s.createElement(Te.f,{label:"Series",fill:!0},e)}function aa({datasource:t,onRunQuery:e,onChange:a,query:n,range:r,queries:i}){return s.createElement(Tt,{datasource:t,onRunQuery:e,onChange:a,query:n,queries:i,range:r},s.createElement(na,null))}function na(){const t=w(),e=Et(),a=(0,I.wW)(ra);return s.createElement("div",{className:a.container},s.createElement("div",{className:a.visualEditor},e.target?.textEditor&&s.createElement(Gt,{rawQuery:e.target.target}),!e.target?.textEditor&&s.createElement(s.Fragment,null,s.createElement(ta,{state:e}),s.createElement(Dt,{functions:e.queryModel?.functions,funcDefs:e.funcDefs}))),s.createElement(M.zx,{className:a.toggleButton,icon:"pen",variant:"secondary","aria-label":"Toggle editor mode",onClick:()=>{t(f.toggleEditorMode())}}))}function ra(t){return{container:(0,y.css)` display: flex; `,visualEditor:(0,y.css)` flex-grow: 1; `,toggleButton:(0,y.css)` margin-left: ${t.spacing(.5)}; `}}var Y=g(48024),_=g(28580),ee=g(1128);const sa=[{label:"Default Query",value:b.Default},{label:"Value Query",value:b.Value},{label:"Metric Name Query",value:b.MetricName}],ia=t=>{const{query:e,onChange:a}=t,[n,r]=(0,s.useState)(be(e));return s.createElement(s.Fragment,null,s.createElement(Y._,{label:"Select query type",labelWidth:20},s.createElement(_.Ph,{"aria-label":"select query type",options:sa,width:25,value:n.queryType??b.Default,onChange:i=>{r({...n,queryType:i.value}),n.target&&a({...n,queryType:i.value},n.target??"")}})),s.createElement(Y._,{label:"Query",labelWidth:20,grow:!0},s.createElement(ee.I,{"aria-label":"Variable editor query input",value:n.target,onBlur:()=>a(n,n.target??""),onChange:i=>{r({...n,target:i.currentTarget.value})}})))};var ke=g(76305),oa=g(80402),we=g(12308);function la(t){if(t)return parseInt(t,10)}function ua(t){if(t)return t==="true"?!0:t==="false"?!1:parseInt(t,10)}function Me(t){for(const e of t){const a=e["archive-read"];if(a>0){const r=Ie(e["schema-retentions"])[a].interval,i=(e["consolidator-normfetch"]??"").replace("Consolidator","");return{text:`Data is rolled up, aggregated over ${r} using ${i} function`,severity:"info",inspect:"meta"}}}return null}function Fe(t){for(const e of t){const a=e["aggnum-rc"];if(a>0){const n=(e["consolidator-rc"]??"").replace("Consolidator","");return{text:`Data is runtime consolidated, ${a} datapoints combined using ${n} function`,severity:"info",inspect:"meta"}}}return null}function Ie(t){return t?t.split(",").map(e=>{const a=e.split(":");return{interval:a[0],retention:a[1],chunkspan:a[2],numchunks:la(a[3]),ready:ua(a[4])}}):[]}class ca extends s.PureComponent{renderMeta(e,a){const n=ma(),r=Ie(e["schema-retentions"]),i=Me([e]),o=Fe([e]),l=(e["consolidator-normfetch"]??"").replace("Consolidator",""),c=r.reduce((p,d)=>p+(d.retention?ke.intervalToSeconds(d.retention):0),0);return s.createElement("div",{className:n.metaItem,key:a},s.createElement("div",{className:n.metaItemHeader},"Schema: ",e["schema-name"],s.createElement("div",{className:"small muted"},"Series count: ",e.count)),s.createElement("div",{className:n.metaItemBody},s.createElement("div",{className:n.step},s.createElement("div",{className:n.stepHeading},"Step 1: Fetch"),s.createElement("div",{className:n.stepDescription},"First data is fetched, either from raw data archive or a rollup archive"),i&&s.createElement("p",null,i.text),!i&&s.createElement("p",null,"No rollup archive was used"),s.createElement("div",null,r.map((p,d)=>{const E=(p.retention?ke.intervalToSeconds(p.retention):0)/c*100,P=d===e["archive-read"];return s.createElement("div",{key:p.retention,className:n.bucket},s.createElement("div",{className:n.bucketInterval},p.interval),s.createElement("div",{className:(0,y.cx)(n.bucketRetention,{[n.bucketRetentionActive]:P}),style:{flexGrow:E}}),s.createElement("div",{style:{flexGrow:100-E}},p.retention))}))),s.createElement("div",{className:n.step},s.createElement("div",{className:n.stepHeading},"Step 2: Normalization"),s.createElement("div",{className:n.stepDescription},"Normalization happens when series with different intervals between points are combined."),e["aggnum-norm"]>1&&s.createElement("p",null,"Normalization did occur using ",l),e["aggnum-norm"]===1&&s.createElement("p",null,"No normalization was needed")),s.createElement("div",{className:n.step},s.createElement("div",{className:n.stepHeading},"Step 3: Runtime consolidation"),s.createElement("div",{className:n.stepDescription},"If there are too many data points at this point Metrictank will consolidate them down to below max data points (set in queries tab)."),o&&s.createElement("p",null,o.text),!o&&s.createElement("p",null,"No runtime consolidation"))))}render(){const{data:e}=this.props,a={};for(const n of e)if(n?.meta?.custom?.seriesMetaList)for(const r of n.meta.custom.seriesMetaList){const i=`${JSON.stringify(r)}`;a[i]?a[i].count+=r.count:a[i]=r}return Object.keys(a).length===0?s.createElement("div",null,"No response meta data"):s.createElement("div",null,s.createElement("h2",{className:"page-heading"},"Metrictank Lineage"),Object.keys(a).map(n=>this.renderMeta(a[n],n)))}}const ma=(0,oa.B)(()=>{const{theme:t}=we.config,e=t.isDark?t.palette.gray25:t.palette.gray85,a=t.isDark?t.palette.dark1:t.palette.white,n=t.isDark?t.palette.gray15:t.palette.gray85;return{metaItem:(0,y.css)` background: ${a}; border: 1px solid ${e}; margin-bottom: ${t.spacing.md}; `,metaItemHeader:(0,y.css)` background: ${n}; padding: ${t.spacing.xs} ${t.spacing.md}; font-size: ${t.typography.size.md}; display: flex; justify-content: space-between; `,metaItemBody:(0,y.css)` padding: ${t.spacing.md}; `,stepHeading:(0,y.css)` font-size: ${t.typography.size.md}; `,stepDescription:(0,y.css)` font-size: ${t.typography.size.sm}; color: ${t.colors.textWeak}; margin-bottom: ${t.spacing.sm}; `,step:(0,y.css)` margin-bottom: ${t.spacing.lg}; &:last-child { margin-bottom: 0; } `,bucket:(0,y.css)` display: flex; margin-bottom: ${t.spacing.sm}; border-radius: ${t.border.radius.sm}; `,bucketInterval:(0,y.css)` flex-grow: 0; width: 60px; `,bucketRetention:(0,y.css)` background: linear-gradient(0deg, ${t.palette.blue85}, ${t.palette.blue95}); text-align: center; color: ${t.palette.white}; margin-right: ${t.spacing.md}; border-radius: ${t.border.radius.sm}; `,bucketRetentionActive:(0,y.css)` background: linear-gradient(0deg, ${t.palette.greenBase}, ${t.palette.greenShade}); `}});var V=g(17312),pa=g(82367),Ae=g(63439),da=g(49257),$=g(60644),te=g(56812);const Ne=["0.9","1.0","1.1"],Re=(0,m.last)(Ne);var ga=g(71107);function ha(t){return s.createElement(Ae.b,{severity:"info",title:"How to map Graphite metrics to labels?",onRemove:t.onDismiss},s.createElement("p",null,"Mappings are currently supported only between Graphite and Loki queries."),s.createElement("p",null,"When you switch your data source from Graphite to Loki, your queries are mapped according to the mappings defined in the example below. To define a mapping, write the full path of the metric and replace nodes you want to map to label with the label name in parentheses. The value of the label is extracted from your Graphite query when you switch data sources."),s.createElement("p",null,"All tags are automatically mapped to labels regardless of the mapping configuration. Graphite matching patterns (using {}) are converted to Loki's regular expressions matching patterns. When you use functions in your queries, the metrics, and tags are extracted to match them with defined mappings."),s.createElement("p",null,"Example: for a mapping = ",s.createElement("code",null,"servers.(cluster).(server).*"),":"),s.createElement("table",null,s.createElement("thead",null,s.createElement("tr",null,s.createElement("th",null,"Graphite query"),s.createElement("th",null,"Mapped to Loki query"))),s.createElement("tbody",null,s.createElement("tr",null,s.createElement("td",null,s.createElement("code",null,"alias(servers.",s.createElement("u",null,"west"),".",s.createElement("u",null,"001"),".cpu,1,2)")),s.createElement("td",null,s.createElement("code",null,'{cluster="',s.createElement("u",null,"west"),'", server="',s.createElement("u",null,"001"),'"}'))),s.createElement("tr",null,s.createElement("td",null,s.createElement("code",null,"alias(servers.*.",s.createElement("u",null,"{001,002}"),".*,1,2)")),s.createElement("td",null,s.createElement("code",null,'{server=~"',s.createElement("u",null,"(001|002)"),'"}'))),s.createElement("tr",null,s.createElement("td",null,s.createElement("code",null,"interpolate(seriesByTag('foo=bar', 'server=002'), inf))")),s.createElement("td",null,s.createElement("code",null,'{foo="bar", server="002"}'))))))}const fa=t=>{const[e,a]=(0,s.useState)(t.mappings||[]);return s.createElement("div",null,s.createElement("h3",{className:"page-heading"},"Label mappings"),!t.showHelp&&s.createElement("p",null,s.createElement(M.zx,{fill:"text",onClick:t.onRestoreHelp},"Learn how label mappings work")),t.showHelp&&s.createElement(ha,{onDismiss:t.onDismiss}),s.createElement("div",{className:"gf-form-group"},e.map((n,r)=>s.createElement(ga.Z,{key:r},s.createElement(Y._,{label:`Mapping (${r+1})`},s.createElement(ee.I,{width:50,onChange:i=>{let o=e.concat();o[r]=i.target.value,a(o)},onBlur:()=>{t.onChange(e)},placeholder:"e.g. test.metric.(labelName).*",value:n})),s.createElement(M.zx,{type:"button","aria-label":"Remove header",variant:"secondary",size:"xs",onClick:i=>{let o=e.concat();o.splice(r,1),a(o),t.onChange(o)}},s.createElement(F.J,{name:"trash-alt"})))),s.createElement(M.zx,{variant:"secondary",icon:"plus",type:"button",onClick:()=>{a([...e,""])}},"Add label mapping")))};function ya(t){return{matchers:t.split(".").map(e=>e.startsWith("(")&&e.endsWith(")")?{value:"*",labelName:e.slice(1,-1)}:{value:e})}}function va(t){return t.matchers.map(e=>e.labelName?`(${e.labelName})`:`${e.value}`).join(".")}const{Switch:Ea}=pa.LegacyForms,ae="grafana.datasources.graphite.config.showMappingsHelp",Oe=Ne.map(t=>({label:`${t}.x`,value:t})),qe=Object.entries(D).map(([t,e])=>({label:t,value:e}));class Ta extends s.PureComponent{constructor(e){super(e),this.renderTypeHelp=()=>s.createElement("p",null,"There are different types of Graphite compatible backends. Here you can specify the type you are using. If you are using"," ",s.createElement("a",{href:"https://github.com/grafana/metrictank",className:"pointer",target:"_blank",rel:"noreferrer"},"Metrictank")," ","then select that here. This will enable Metrictank specific features like query processing meta data. Metrictank is a multi-tenant timeseries engine for Graphite and friends."),this.state={showMappingsHelp:te.Z.getObject(ae,!0)}}componentDidMount(){(0,V.tp)(this.props,"graphiteVersion",this.currentGraphiteVersion)}render(){const{options:e,onOptionsChange:a}=this.props,n=Oe.find(r=>r.value===this.currentGraphiteVersion);return s.createElement(s.Fragment,null,e.access==="direct"&&s.createElement(Ae.b,{title:"Deprecation Notice",severity:"warning"},"This data source uses browser access mode. This mode is deprecated and will be removed in the future. Please use server access mode instead."),s.createElement(da.E,{defaultUrl:"http://localhost:8080",dataSourceConfig:e,onChange:a,secureSocksDSProxyEnabled:we.config.secureSocksDSProxyEnabled}),s.createElement("h3",{className:"page-heading"},"Graphite details"),s.createElement("div",{className:"gf-form-group"},s.createElement("div",{className:"gf-form-inline"},s.createElement("div",{className:"gf-form"},s.createElement($.c,{tooltip:"This option controls what functions are available in the Graphite query editor."},"Version"),s.createElement(_.Ph,{"aria-label":"Graphite version",value:n,options:Oe,className:"width-8",onChange:(0,V.nx)(this.props,"graphiteVersion")}))),s.createElement("div",{className:"gf-form-inline"},s.createElement("div",{className:"gf-form"},s.createElement($.c,{tooltip:this.renderTypeHelp},"Type"),s.createElement(_.Ph,{"aria-label":"Graphite backend type",options:qe,value:qe.find(r=>r.value===e.jsonData.graphiteType),className:"width-8",onChange:(0,V.nx)(this.props,"graphiteType")}))),e.jsonData.graphiteType===D.Metrictank&&s.createElement("div",{className:"gf-form-inline"},s.createElement("div",{className:"gf-form"},s.createElement(Ea,{label:"Rollup indicator",labelClass:"width-10",tooltip:"Shows up as an info icon in panel headers when data is aggregated",checked:!!e.jsonData.rollupIndicatorEnabled,onChange:(0,V.hz)(this.props,"rollupIndicatorEnabled")})))),s.createElement(fa,{mappings:(e.jsonData.importConfiguration?.loki?.mappings||[]).map(va),showHelp:this.state.showMappingsHelp,onDismiss:()=>{this.setState({showMappingsHelp:!1}),te.Z.setObject(ae,!1)},onRestoreHelp:()=>{this.setState({showMappingsHelp:!0}),te.Z.setObject(ae,!0)},onChange:r=>{a({...e,jsonData:{...e.jsonData,importConfiguration:{...e.jsonData.importConfiguration,loki:{mappings:r.map(ya)}}}})}}))}get currentGraphiteVersion(){return this.props.options.jsonData.graphiteVersion||Re}}var Sa=g(48592),ba=g(6857),ne=g(45383),S=g(78209),xa=g(91826),Ca=g(15084),x=g(39343),re=g(56469),A=g(69376),De=g(32053),Pa=g(1726),Be=g(83505),z=g(99633),ka=g(73289);const wa=/^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:-([0-9A-Za-z\.]+))?/;class H{constructor(e){this.major=0,this.minor=0,this.patch=0,this.meta="";const a=wa.exec(e);a&&(this.major=Number(a[1]),this.minor=Number(a[2]||0),this.patch=Number(a[3]||0),this.meta=a[4])}isGtOrEq(e){const a=new H(e);for(let n=0;n<this.comparable.length;++n){if(this.comparable[n]>a.comparable[n])return!0;if(this.comparable[n]<a.comparable[n])return!1}return!0}isValid(){return(0,m.isNumber)(this.major)}get comparable(){return[this.major,this.minor,this.patch]}}function se(t,e){return new H(t).isGtOrEq(e)}var Ma=g(72699);const Fa=t=>{const{query:e,onChange:a}=t,[n,r]=(0,s.useState)(e.target??""),[i,o]=(0,s.useState)(e.tags??[]),l=(p,d)=>{a(p==="tags"?{...e,[p]:d,fromAnnotations:!0,queryType:p}:{...e,[p]:d,fromAnnotations:!0,textEditor:!0})},c=p=>{o(p),l("tags",p)};return s.createElement("div",{className:"gf-form-group"},s.createElement("div",{className:"gf-form"},s.createElement($.c,{width:12},"Graphite Query"),s.createElement(ee.I,{value:n,onChange:p=>r(p.currentTarget.value||""),onBlur:()=>l("target",n),placeholder:"Example: statsd.application.counters.*.count"})),s.createElement("h5",{className:"section-heading"},"Or"),s.createElement("div",{className:"gf-form"},s.createElement($.c,{width:12},"Graphite events tags"),s.createElement(Ma.B,{id:"tags-input",width:50,tags:i,onChange:c,placeholder:"Example: event_tag"})))},N={};function u(t){t.params=t.params||[],t.defaultParams=t.defaultParams||[],N[t.name]=t,t.shortName&&(N[t.shortName]=t)}const C=[{name:"other",type:"value_or_series",optional:!0,multiple:!0}];u({name:"scaleToSeconds",category:"Transform",params:[{name:"seconds",type:"int"}],defaultParams:[1]}),u({name:"perSecond",category:"Transform",params:[{name:"max value",type:"int",optional:!0}],defaultParams:[]}),u({name:"holtWintersForecast",category:"Calculate"}),u({name:"holtWintersConfidenceBands",category:"Calculate",params:[{name:"delta",type:"int"}],defaultParams:[3]}),u({name:"holtWintersAberration",category:"Calculate",params:[{name:"delta",type:"int"}],defaultParams:[3]}),u({name:"nPercentile",category:"Calculate",params:[{name:"Nth percentile",type:"int"}],defaultParams:[95]}),u({name:"diffSeries",params:C,defaultParams:["#A"],category:"Combine"}),u({name:"stddevSeries",params:C,defaultParams:[""],category:"Combine"}),u({name:"divideSeries",params:C,defaultParams:["#A"],category:"Combine"}),u({name:"multiplySeries",params:C,defaultParams:["#A"],category:"Combine"}),u({name:"asPercent",params:C,defaultParams:["#A"],category:"Combine"}),u({name:"group",params:C,defaultParams:["#A","#B"],category:"Combine"}),u({name:"sumSeries",shortName:"sum",category:"Combine",params:C,defaultParams:[""]}),u({name:"averageSeries",shortName:"avg",category:"Combine",params:C,defaultParams:[""]}),u({name:"rangeOfSeries",category:"Combine"}),u({name:"percentileOfSeries",category:"Combine",params:[{name:"n",type:"int"},{name:"interpolate",type:"boolean",options:["true","false"]}],defaultParams:[95,"false"]}),u({name:"sumSeriesWithWildcards",category:"Combine",params:[{name:"node",type:"int",multiple:!0}],defaultParams:[3]}),u({name:"maxSeries",shortName:"max",category:"Combine"}),u({name:"minSeries",shortName:"min",category:"Combine"}),u({name:"averageSeriesWithWildcards",category:"Combine",params:[{name:"node",type:"int",multiple:!0}],defaultParams:[3]}),u({name:"alias",category:"Alias",params:[{name:"alias",type:"string"}],defaultParams:["alias"]}),u({name:"aliasSub",category:"Alias",params:[{name:"search",type:"string"},{name:"replace",type:"string"}],defaultParams:["","\\1"]}),u({name:"consolidateBy",category:"Special",params:[{name:"function",type:"string",options:["sum","average","min","max"]}],defaultParams:["max"]}),u({name:"cumulative",category:"Special",params:[],defaultParams:[]}),u({name:"groupByNode",category:"Combine",params:[{name:"node",type:"int",options:[0,1,2,3,4,5,6,7,8,9,10,12]},{name:"function",type:"string",options:["sum","avg","maxSeries"]}],defaultParams:[3,"sum"]}),u({name:"aliasByNode",category:"Alias",params:[{name:"node",type:"int",options:[0,1,2,3,4,5,6,7,8,9,10,12],multiple:!0}],defaultParams:[3]}),u({name:"substr",category:"Special",params:[{name:"start",type:"int",options:[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,12]},{name:"stop",type:"int",options:[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,12]}],defaultParams:[0,0]}),u({name:"sortByName",category:"Sorting",params:[{name:"natural",type:"boolean",options:["true","false"],optional:!0}],defaultParams:["false"]}),u({name:"sortByMaxima",category:"Sorting"}),u({name:"sortByMinima",category:"Sorting"}),u({name:"sortByTotal",category:"Sorting"}),u({name:"aliasByMetric",category:"Alias"}),u({name:"randomWalk",fake:!0,category:"Special",params:[{name:"name",type:"string"}],defaultParams:["randomWalk"]}),u({name:"countSeries",category:"Combine"}),u({name:"constantLine",category:"Special",params:[{name:"value",type:"int"}],defaultParams:[10]}),u({name:"cactiStyle",category:"Special"}),u({name:"keepLastValue",category:"Transform",params:[{name:"n",type:"int"}],defaultParams:[100]}),u({name:"changed",category:"Special",params:[],defaultParams:[]}),u({name:"scale",category:"Transform",params:[{name:"factor",type:"int"}],defaultParams:[1]}),u({name:"offset",category:"Transform",params:[{name:"amount",type:"int"}],defaultParams:[10]}),u({name:"transformNull",category:"Transform",params:[{name:"amount",type:"int"}],defaultParams:[0]}),u({name:"integral",category:"Transform"}),u({name:"derivative",category:"Transform"}),u({name:"nonNegativeDerivative",category:"Transform",params:[{name:"max value or 0",type:"int",optional:!0}],defaultParams:[""]}),u({name:"timeShift",category:"Transform",params:[{name:"amount",type:"select",options:["1h","6h","12h","1d","2d","7d","14d","30d"]}],defaultParams:["1d"]}),u({name:"timeStack",category:"Transform",params:[{name:"timeShiftUnit",type:"select",options:["1h","6h","12h","1d","2d","7d","14d","30d"]},{name:"timeShiftStart",type:"int"},{name:"timeShiftEnd",type:"int"}],defaultParams:["1d",0,7]}),u({name:"summarize",category:"Transform",params:[{name:"interval",type:"string"},{name:"func",type:"select",options:["sum","avg","min","max","last"]},{name:"alignToFrom",type:"boolean",optional:!0,options:["false","true"]}],defaultParams:["1h","sum","false"]}),u({name:"smartSummarize",category:"Transform",params:[{name:"interval",type:"string"},{name:"func",type:"select",options:["sum","avg","min","max","last"]}],defaultParams:["1h","sum"]}),u({name:"absolute",category:"Transform"}),u({name:"hitcount",category:"Transform",params:[{name:"interval",type:"string"}],defaultParams:["10s"]}),u({name:"log",category:"Transform",params:[{name:"base",type:"int"}],defaultParams:["10"]}),u({name:"averageAbove",category:"Filter Series",params:[{name:"n",type:"int"}],defaultParams:[25]}),u({name:"averageBelow",category:"Filter Series",params:[{name:"n",type:"int"}],defaultParams:[25]}),u({name:"currentAbove",category:"Filter Series",params:[{name:"n",type:"int"}],defaultParams:[25]}),u({name:"currentBelow",category:"Filter Series",params:[{name:"n",type:"int"}],defaultParams:[25]}),u({name:"maximumAbove",category:"Filter Series",params:[{name:"value",type:"int"}],defaultParams:[0]}),u({name:"maximumBelow",category:"Filter Series",params:[{name:"value",type:"int"}],defaultParams:[0]}),u({name:"minimumAbove",category:"Filter Series",params:[{name:"value",type:"int"}],defaultParams:[0]}),u({name:"minimumBelow",category:"Filter Series",params:[{name:"value",type:"int"}],defaultParams:[0]}),u({name:"limit",category:"Filter Series",params:[{name:"n",type:"int"}],defaultParams:[5]}),u({name:"mostDeviant",category:"Filter Series",params:[{name:"n",type:"int"}],defaultParams:[10]}),u({name:"exclude",category:"Filter Series",params:[{name:"exclude",type:"string"}],defaultParams:["exclude"]}),u({name:"highestCurrent",category:"Filter Series",params:[{name:"count",type:"int"}],defaultParams:[5]}),u({name:"highestMax",category:"Filter Series",params:[{name:"count",type:"int"}],defaultParams:[5]}),u({name:"lowestCurrent",category:"Filter Series",params:[{name:"count",type:"int"}],defaultParams:[5]}),u({name:"movingAverage",category:"Calculate",params:[{name:"windowSize",type:"int_or_interval",options:["5","7","10","5min","10min","30min","1hour"]}],defaultParams:[10]}),u({name:"movingMedian",category:"Calculate",params:[{name:"windowSize",type:"int_or_interval",options:["5","7","10","5min","10min","30min","1hour"]}],defaultParams:["5"]}),u({name:"stdev",category:"Calculate",params:[{name:"n",type:"int"},{name:"tolerance",type:"int"}],defaultParams:[5,.1]}),u({name:"highestAverage",category:"Filter Series",params:[{name:"count",type:"int"}],defaultParams:[5]}),u({name:"lowestAverage",category:"Filter Series",params:[{name:"count",type:"int"}],defaultParams:[5]}),u({name:"removeAbovePercentile",category:"Filter Data",params:[{name:"n",type:"int"}],defaultParams:[5]}),u({name:"removeAboveValue",category:"Filter Data",params:[{name:"n",type:"int"}],defaultParams:[5]}),u({name:"removeBelowPercentile",category:"Filter Data",params:[{name:"n",type:"int"}],defaultParams:[5]}),u({name:"removeBelowValue",category:"Filter Data",params:[{name:"n",type:"int"}],defaultParams:[5]}),u({name:"useSeriesAbove",category:"Filter Series",params:[{name:"value",type:"int"},{name:"search",type:"string"},{name:"replace",type:"string"}],defaultParams:[0,"search","replace"]}),u({name:"aggregateLine",category:"Calculate",params:[{name:"func",type:"select",options:["sum","avg","min","max","last"]}],defaultParams:["avg"],version:"1.0"}),u({name:"averageOutsidePercentile",category:"Filter Series",params:[{name:"n",type:"int"}],defaultParams:[95],version:"1.0"}),u({name:"delay",category:"Transform",params:[{name:"steps",type:"int"}],defaultParams:[1],version:"1.0"}),u({name:"exponentialMovingAverage",category:"Calculate",params:[{name:"windowSize",type:"int_or_interval",options:["5","7","10","5min","10min","30min","1hour"]}],defaultParams:[10],version:"1.0"}),u({name:"fallbackSeries",category:"Special",params:[{name:"fallback",type:"string"}],defaultParams:["constantLine(0)"],version:"1.0"}),u({name:"grep",category:"Filter Series",params:[{name:"grep",type:"string"}],defaultParams:["grep"],version:"1.0"}),u({name:"groupByNodes",category:"Combine",params:[{name:"function",type:"string",options:["sum","avg","maxSeries"]},{name:"node",type:"int",options:[0,1,2,3,4,5,6,7,8,9,10,12],multiple:!0}],defaultParams:["sum",3],version:"1.0"}),u({name:"integralByInterval",category:"Transform",params:[{name:"intervalUnit",type:"select",options:["1h","6h","12h","1d","2d","7d","14d","30d"]}],defaultParams:["1d"],version:"1.0"}),u({name:"interpolate",category:"Transform",params:[{name:"limit",type:"int",optional:!0}],defaultParams:[],version:"1.0"}),u({name:"invert",category:"Transform",version:"1.0"}),u({name:"isNonNull",category:"Combine",version:"1.0"}),u({name:"linearRegression",category:"Calculate",params:[{name:"startSourceAt",type:"select",options:["-1h","-6h","-12h","-1d","-2d","-7d","-14d","-30d"],optional:!0},{name:"endSourceAt",type:"select",options:["-1h","-6h","-12h","-1d","-2d","-7d","-14d","-30d"],optional:!0}],defaultParams:[],version:"1.0"}),u({name:"mapSeries",shortName:"map",params:[{name:"node",type:"int"}],defaultParams:[3],category:"Combine",version:"1.0"}),u({name:"movingMin",category:"Calculate",params:[{name:"windowSize",type:"int_or_interval",options:["5","7","10","5min","10min","30min","1hour"]}],defaultParams:[10],version:"1.0"}),u({name:"movingMax",category:"Calculate",params:[{name:"windowSize",type:"int_or_interval",options:["5","7","10","5min","10min","30min","1hour"]}],defaultParams:[10],version:"1.0"}),u({name:"movingSum",category:"Calculate",params:[{name:"windowSize",type:"int_or_interval",options:["5","7","10","5min","10min","30min","1hour"]}],defaultParams:[10],version:"1.0"}),u({name:"multiplySeriesWithWildcards",category:"Combine",params:[{name:"position",type:"int",options:[0,1,2,3,4,5,6,7,8,9,10,12],multiple:!0}],defaultParams:[2],version:"1.0"}),u({name:"offsetToZero",category:"Transform",version:"1.0"}),u({name:"pow",category:"Transform",params:[{name:"factor",type:"int"}],defaultParams:[10],version:"1.0"}),u({name:"powSeries",category:"Transform",params:C,defaultParams:[""],version:"1.0"}),u({name:"reduceSeries",shortName:"reduce",params:[{name:"function",type:"string",options:["asPercent","diffSeries","divideSeries"]},{name:"reduceNode",type:"int",options:[0,1,2,3,4,5,6,7,8,9,10,11,12,13]},{name:"reduceMatchers",type:"string",multiple:!0}],defaultParams:["asPercent",2,"used_bytes"],category:"Combine",version:"1.0"}),u({name:"removeBetweenPercentile",category:"Filter Series",params:[{name:"n",type:"int"}],defaultParams:[95],version:"1.0"}),u({name:"removeEmptySeries",category:"Filter Series",version:"1.0"}),u({name:"squareRoot",category:"Transform",version:"1.0"}),u({name:"timeSlice",category:"Transform",params:[{name:"startSliceAt",type:"select",options:["-1h","-6h","-12h","-1d","-2d","-7d","-14d","-30d"]},{name:"endSliceAt",type:"select",options:["-1h","-6h","-12h","-1d","-2d","-7d","-14d","-30d"],optional:!0}],defaultParams:["-1h"],version:"1.0"}),u({name:"weightedAverage",category:"Combine",params:[{name:"other",type:"value_or_series",optional:!0},{name:"node",type:"int",options:[0,1,2,3,4,5,6,7,8,9,10,12]}],defaultParams:["#A",4],version:"1.0"}),u({name:"seriesByTag",category:"Special",params:[{name:"tagExpression",type:"string",multiple:!0}],version:"1.1"}),u({name:"groupByTags",category:"Combine",params:[{name:"function",type:"string",options:["sum","avg","maxSeries"]},{name:"tag",type:"string",multiple:!0}],defaultParams:["sum","tag"],version:"1.1"}),u({name:"aliasByTags",category:"Alias",params:[{name:"tag",type:"string",multiple:!0}],defaultParams:["tag"],version:"1.1"});function Ge(t,e){return!t.version||se(e,t.version)}class Ia{constructor(e,a){this.def=e,this.params=[],a&&a.withDefaultParams&&e.defaultParams&&(this.params=e.defaultParams.slice(0)),this.updateText()}render(e,a){const n=this.def.name+"(",r=(0,m.map)(this.params,(i,o)=>{let l;o<this.def.params.length?l=this.def.params[o].type:(0,m.get)((0,m.last)(this.def.params),"multiple")&&(l=(0,m.get)((0,m.last)(this.def.params),"type"));const c=["value_or_series","boolean","int","float","node","int_or_infinity"],p=["asPercent"];if((0,m.includes)(c,l)||(0,m.includes)(p,this.def.name))return i;const d=(0,m.isString)(i)?a(i):i;return(0,m.includes)(["int_or_interval","node_or_tag"],l)&&(0,m.isFinite)(+d)?(0,m.toString)(i):"'"+i+"'"});for(;r[r.length-1]==="";)r.pop();return e&&r.unshift(e),n+r.join(", ")+")"}_hasMultipleParamsInString(e,a){return e.indexOf(",")===-1?!1:!!(this.def.params[a+1]&&this.def.params[a+1].optional||a+1>=this.def.params.length&&(0,m.get)((0,m.last)(this.def.params),"multiple"))}updateParam(e,a){if(this._hasMultipleParamsInString(e,a)){(0,m.each)(e.split(","),(n,r)=>{this.updateParam(n.trim(),a+r)});return}e===""&&(a>=this.def.params.length||this.def.params[a].optional)?this.params.splice(a,1):this.params[a]=e,this.updateText()}updateText(){if(this.params.length===0){this.text=this.def.name+"()";return}let e=this.def.name+"(";e+=this.params.join(", "),e+=")",this.text=e}}function Aa(t,e,a){return(0,m.isString)(t)&&(t=Ve(t,a)),new Ia(t,e)}function Ve(t,e){return(e||N)[t]?(e||N)[t]:{name:t,params:[{name:"",type:"",multiple:!0}],defaultParams:[""],unknown:!0}}function Na(t,e){const a={};return(0,m.forEach)(e||N,n=>{Ge(n,t)&&(a[n.name]=(0,m.assign)({},n,{params:(0,m.filter)(n.params,r=>Ge(r,t))}))}),a}function Ra(t){const e={};return(0,m.forEach)(t||{},(a,n)=>{if(a.group==="Graph")return;let r=a.description;r&&(r=r.replace(/:py:func:`(.+)( <[^>]*>)?`/g,"``$1``").replace(/.. seealso:: /g,"See also: ").replace(/.. code-block *:: *none/g,".. code-block::"));const i={name:a.name,description:r,category:a.group,params:[],defaultParams:[],fake:!1};/^seriesLists?$/.test((0,m.get)(a,"params[0].type",""))?a.params[0].multiple?a.params[0].required=!1:a.params.shift():i.fake=!0,(0,m.forEach)(a.params,o=>{const l={name:o.name,type:"string",optional:!o.required,multiple:!!o.multiple,options:void 0};o.default!==void 0?o.default===1/0?i.defaultParams.push("inf"):i.defaultParams.push((0,m.toString)(o.default)):o.suggestions?i.defaultParams.push((0,m.toString)(o.suggestions[0])):i.defaultParams.push(""),o.type==="boolean"?(l.type="boolean",l.options=["true","false"]):o.type==="integer"?l.type="int":o.type==="float"?l.type="float":o.type==="node"?(l.type="node",l.options=["0","1","2","3","4","5","6","7","8","9","10","11","12"]):o.type==="nodeOrTag"?(l.type="node_or_tag",l.options=["name","0","1","2","3","4","5","6","7","8","9","10","11","12"]):o.type==="intOrInterval"?l.type="int_or_interval":o.type==="seriesList"?l.type="value_or_series":o.type==="intOrInf"&&(l.type="int_or_infinity"),o.options?l.options=(0,m.map)(o.options,m.toString):o.suggestions&&(l.options=(0,m.map)(o.suggestions,m.toString)),i.params.push(l)}),e[n]=i}),e}const R={createFuncInstance:Aa,getFuncDef:Ve,getFuncDefs:Na,parseFuncDefs:Ra},Oa=t=>typeof t.target=="string"&&t.target?{fromAnnotations:!0,target:t.target,textEditor:!0}:{queryType:"tags",tags:(t.tags||"").split(" "),fromAnnotations:!0},qa=t=>{const e=t.target&&typeof t.target!="string"?t.target:Oa(t);return t.target=e,t},Da={"=":A.K2.Equal,"!=":A.K2.NotEqual,"=~":A.K2.EqualRegEx,"!=~":A.K2.NotEqualRegEx};function Ba(t){return t.includes("*")||t.includes("{")?"^"+t.replace(/\*/g,".*").replace(/\{/g,"(").replace(/}/g,")").replace(/,/g,"|"):t}class Ga extends oe.MF{constructor(e,a=(0,Q.J)()){super(e),this.templateSrv=a,this.funcDefs=null,this.funcDefsPromise=null,this.requestCounter=100,this.convertResponseToDataFrames=n=>{const r=[];if(!n||!n.data)return{data:r};const i=n.data.series||n.data;if(!(0,m.isArray)(i))throw{message:"Missing series in result",data:n};for(let o=0;o<i.length;o++){const l=i[o];l.title=l.target;for(let p=0;p<l.datapoints.length;p++)l.datapoints[p][1]*=1e3;const c=(0,De.g0)(l);if(l.meta){if(c.meta={custom:{requestMetaList:n.data.meta,seriesMetaList:l.meta}},this.rollupIndicatorEnabled){const p=Me(l.meta),d=Fe(l.meta);p?c.meta.notices=[p]:d&&(c.meta.notices=[d])}o===0&&n.data.meta.stats&&(c.meta.stats=this.getRequestStats(n.data.meta))}r.push(c)}return{data:r}},this.basicAuth=e.basicAuth,this.url=e.url,this.name=e.name,this.graphiteVersion=e.jsonData.graphiteVersion||Re,this.metricMappings=e.jsonData.importConfiguration?.loki?.mappings||[],this.isMetricTank=e.jsonData.graphiteType===D.Metrictank,this.supportsTags=Va(this.graphiteVersion),this.cacheTimeout=e.cacheTimeout,this.rollupIndicatorEnabled=e.jsonData.rollupIndicatorEnabled,this.withCredentials=e.withCredentials,this.funcDefs=null,this.funcDefsPromise=null,this._seriesRefLetters="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.annotations={QueryEditor:Fa,prepareAnnotation:qa}}getQueryOptionsInfo(){return{maxDataPoints:!0,cacheTimeout:!0,links:[{text:"Help",url:"http://docs.grafana.org/features/datasources/graphite/#using-graphite-in-grafana"}]}}getImportQueryConfiguration(){return{loki:{mappings:this.metricMappings}}}async exportToAbstractQueries(e){return e.map(a=>this.exportToAbstractQuery(a))}exportToAbstractQuery(e){const a=new le(this,{...e,target:e.target||"",textEditor:!1},(0,Q.J)());a.parseTarget();let n=[];const r=this.getImportQueryConfiguration().loki;if(a.seriesByTagUsed)a.tags.forEach(i=>{n.push({name:i.key,operator:Da[i.operator],value:i.value})});else{const i=a.segments.map(l=>l.value);let o=r.mappings.filter(l=>l.matchers.length<=i.length);for(let l of o)l.matchers.concat().every((p,d)=>{if(p.labelName){let h=i[d];if(h==="*")return!0;const E=Ba(h);return n.push({name:p.labelName,operator:E!==h?A.K2.EqualRegEx:A.K2.Equal,value:E}),!0}return i[d]===p.value||p.value==="*"})}return{refId:e.refId,labelMatchers:n}}query(e){if(e.targets.some(i=>i.fromAnnotations)){const i=[];for(const o of e.targets)i.push(new Sa.y(l=>{this.annotationEvents(e.range,o).then(c=>l.next({data:[(0,De.g0)(c)]})).catch(c=>l.error(new Error(c))).finally(()=>l.complete())}));return(0,ba.T)(...i)}const a={from:this.translateTime(e.range.from,!1,e.timezone),until:this.translateTime(e.range.to,!0,e.timezone),targets:e.targets,format:e.format,cacheTimeout:e.cacheTimeout||this.cacheTimeout,maxDataPoints:e.maxDataPoints},n=this.buildGraphiteParams(a,e.scopedVars);if(n.length===0)return(0,ne.of)({data:[]});this.isMetricTank&&n.push("meta=true");const r={method:"POST",url:"/render",data:n.join("&"),headers:{"Content-Type":"application/x-www-form-urlencoded"}};return this.addTracingHeaders(r,e),e.panelId&&(r.requestId=this.name+".panelId."+e.panelId),this.doGraphiteRequest(r).pipe((0,x.U)(this.convertResponseToDataFrames))}addTracingHeaders(e,a){!this.url.match(/^http/)&&(a.dashboardId&&(e.headers["X-Dashboard-Id"]=a.dashboardId),a.panelId&&(e.headers["X-Panel-Id"]=a.panelId))}getRequestStats(e){const a=[];for(const n in e.stats){let r;n.endsWith(".ms")&&(r="ms"),a.push({displayName:n,value:e.stats[n],unit:r})}return a}parseTags(e){let a=[];return a=e.split(","),a.length===1&&(a=e.split(" "),a[0]===""&&(a=[])),a}interpolateVariablesInQueries(e,a){let n=e;return e&&e.length>0&&(n=e.map(r=>({...r,datasource:this.getRef(),target:this.templateSrv.replace(r.target??"",a)}))),n}annotationEvents(e,a){if(a.target){const n=this.templateSrv.replace(a.target,{},"glob"),r={range:e,targets:[{target:n}],format:"json",maxDataPoints:100};return(0,S.n)(this.query(r).pipe((0,x.U)(i=>{const o=[];for(let l=0;l<i.data.length;l++){const c=i.data[l];for(let p=0;p<c.length;p++){const d=c.fields[0].values[p];c.fields[1].values[p]&&o.push({annotation:c,time:d,title:c.name})}}return o})))}else{const n=this.templateSrv.replace(a.tags?.join(" "));return this.events({range:e,tags:n}).then(r=>{const i=[];if(!(0,m.isArray)(r.data))return console.error(`Unable to get annotations from ${r.url}.`),[];for(let o=0;o<r.data.length;o++){const l=r.data[o];let c=l.tags;(0,m.isString)(l.tags)&&(c=this.parseTags(l.tags)),i.push({annotation:a,time:l.when*1e3,title:l.what,tags:c,text:l.data})}return i})}}events(e){try{let a="";return e.tags&&(a="&tags="+e.tags),(0,S.n)(this.doGraphiteRequest({method:"GET",url:"/events/get_data?from="+this.translateTime(e.range.raw.from,!1,e.timezone)+"&until="+this.translateTime(e.range.raw.to,!0,e.timezone)+a}))}catch(a){return Promise.reject(a)}}targetContainsTemplate(e){return this.templateSrv.containsTemplate(e.target??"")}translateTime(e,a,n){if((0,m.isString)(e)){if(e==="now")return"now";if(e.indexOf("now-")>=0&&e.indexOf("/")===-1)return e=e.substring(3),e=e.replace("m","min"),e=e.replace("M","mon"),e;e=Pa.parse(e,a,n)}return a?e.get("s")&&e.add(1,"s"):a===!1&&e.get("s")&&e.subtract(1,"s"),e.unix()}metricFindQuery(e,a){const n=a||{},r=be(e);if(r.queryType===b.Value||r.queryType===b.MetricName)return this.requestMetricRender(r,n,r.queryType);let i=r.target??"",o=this.templateSrv.replace(i,(0,Be._)({query:i,wildcardChar:"",options:a})),l=o.match(/^tag_values\((.*)\)$/),c=l?l[1].split(",").filter(h=>!!h):void 0;if(c)return n.limit=1e4,this.getTagValuesAutoComplete(c.slice(1),c[0],void 0,n);if(l=o.match(/^tags\((.*)\)$/),c=l?l[1].split(",").filter(h=>!!h):void 0,c)return n.limit=1e4,this.getTagsAutoComplete(c,void 0,n);let p=i.match(/^expand\((.*)\)$/);i=p?p[1]:i,o=this.templateSrv.replace(i,(0,Be._)({query:i,wildcardChar:"*",options:a}));let d;return n.range&&(d={from:this.translateTime(n.range.from,!1,n.timezone),until:this.translateTime(n.range.to,!0,n.timezone)}),p?this.requestMetricExpand(o,n.requestId,d):this.requestMetricFind(o,n.requestId,d)}async requestMetricRender(e,a,n){const r=a.requestId??`Q${this.requestCounter++}`,i=a.range??{from:(0,z.CQ)().subtract(6,"hour"),to:(0,z.CQ)(),raw:{from:"now - 6h",to:"now"}},o={app:"graphite-variable-editor",interval:"1s",intervalMs:1e4,startTime:Date.now(),targets:[{...e}],timezone:"browser",scopedVars:{},requestId:r,range:i},l=await(0,S.n)(this.query(o));let c;return n===b.Value?c=l.data[0].fields[1].values.filter(p=>!!p).map(p=>({text:p.toString(),value:p,expandable:!1})):n===b.MetricName?c=l.data.map(p=>({text:p.name,value:p.name,expandable:!1})):c=[],Promise.resolve(c)}requestMetricFind(e,a,n){const r={method:"POST",url:"/metrics/find",params:{},data:`query=${e}`,headers:{"Content-Type":"application/x-www-form-urlencoded"},requestId:a};return n&&(r.params.from=n.from,r.params.until=n.until),(0,S.n)(this.doGraphiteRequest(r).pipe((0,x.U)(i=>(0,m.map)(i.data,o=>({text:o.text,expandable:!!o.expandable})))))}requestMetricExpand(e,a,n){const r={method:"GET",url:"/metrics/expand",params:{query:e},headers:{"Content-Type":"application/x-www-form-urlencoded"},requestId:a};return n&&(r.params.from=n.from,r.params.until=n.until),(0,S.n)(this.doGraphiteRequest(r).pipe((0,x.U)(i=>(0,m.map)(i.data.results,o=>({text:o,expandable:!1})))))}getTags(e){const a=e||{},n={method:"GET",url:"/tags",requestId:a.requestId};return a.range&&(n.params.from=this.translateTime(a.range.from,!1,a.timezone),n.params.until=this.translateTime(a.range.to,!0,a.timezone)),(0,S.n)(this.doGraphiteRequest(n).pipe((0,x.U)(r=>(0,m.map)(r.data,i=>({text:i.tag,id:i.id})))))}getTagValues(e={}){const a={method:"GET",url:"/tags/"+this.templateSrv.replace(e.key),requestId:e.requestId};return e.range&&(a.params.from=this.translateTime(e.range.from,!1,e.timezone),a.params.until=this.translateTime(e.range.to,!0,e.timezone)),(0,S.n)(this.doGraphiteRequest(a).pipe((0,x.U)(n=>n.data&&n.data.values?(0,m.map)(n.data.values,r=>({text:r.value,id:r.id})):[])))}getTagsAutoComplete(e,a,n){const r=n||{},i={method:"GET",url:"/tags/autoComplete/tags",params:{expr:(0,m.map)(e,o=>this.templateSrv.replace((o||"").trim()))},requestId:r.requestId};return a&&(i.params.tagPrefix=a),r.limit&&(i.params.limit=r.limit),r.range&&(i.params.from=this.translateTime(r.range.from,!1,r.timezone),i.params.until=this.translateTime(r.range.to,!0,r.timezone)),(0,S.n)(this.doGraphiteRequest(i).pipe($e()))}getTagValuesAutoComplete(e,a,n,r){const i=r||{},o={method:"GET",url:"/tags/autoComplete/values",params:{expr:(0,m.map)(e,l=>this.templateSrv.replace((l||"").trim())),tag:this.templateSrv.replace((a||"").trim())},requestId:i.requestId};return n&&(o.params.valuePrefix=n),i.limit&&(o.params.limit=i.limit),i.range&&(o.params.from=this.translateTime(i.range.from,!1,i.timezone),o.params.until=this.translateTime(i.range.to,!0,i.timezone)),(0,S.n)(this.doGraphiteRequest(o).pipe($e()))}getVersion(e){const n={method:"GET",url:"/version",requestId:(e||{}).requestId};return(0,S.n)(this.doGraphiteRequest(n).pipe((0,x.U)(r=>r.data&&new H(r.data).isValid()?r.data:""),(0,re.K)(()=>(0,ne.of)(""))))}createFuncInstance(e,a){return R.createFuncInstance(e,a,this.funcDefs)}getFuncDef(e){return R.getFuncDef(e,this.funcDefs)}waitForFuncDefsLoaded(){return this.getFuncDefs()}getFuncDefs(){if(this.funcDefsPromise!==null)return this.funcDefsPromise;if(!$a(this.graphiteVersion))return this.funcDefs=R.getFuncDefs(this.graphiteVersion),this.funcDefsPromise=Promise.resolve(this.funcDefs),this.funcDefsPromise;const e={method:"GET",url:"/functions",responseType:"text"};return(0,S.n)(this.doGraphiteRequest(e).pipe((0,x.U)(a=>{const n=JSON.parse(a.data.replace(/"default": ?Infinity/g,'"default": 1e9999'));return this.funcDefs=R.parseFuncDefs(n),this.funcDefs}),(0,re.K)(a=>(console.error("Fetching graphite functions error",a),this.funcDefs=R.getFuncDefs(this.graphiteVersion),(0,ne.of)(this.funcDefs)))))}testDatasource(){const e={app:"graphite",interval:"10ms",intervalMs:10,requestId:"reqId",scopedVars:{},startTime:0,timezone:"browser",panelId:3,rangeRaw:{from:"now-1h",to:"now"},range:{from:(0,z.CQ)("now-1h"),to:(0,z.CQ)("now"),raw:{from:"now-1h",to:"now"}},targets:[{refId:"A",target:"constantLine(100)"}],maxDataPoints:300};return(0,S.n)(this.query(e)).then(()=>({status:"success",message:"Data source is working"}))}doGraphiteRequest(e){return(this.basicAuth||this.withCredentials)&&(e.withCredentials=!0),this.basicAuth&&(e.headers=e.headers||{},e.headers.Authorization=this.basicAuth),e.url=this.url+e.url,e.inspect={type:"graphite"},(0,ka.i)().fetch(e).pipe((0,re.K)(a=>(0,xa._)(ot(a))))}buildGraphiteParams(e,a){const n=["from","until","rawData","format","maxDataPoints","cacheTimeout"],r=[],i={};let o,l,c;const p=/\#([A-Z])/g,d=/'(\d+)m'/gi;let h=!1;e.format="json";function E(k){return k.replace("m","min").replace("M","mon")}for(c=0;c<e.targets.length;c++)o=e.targets[c],o.target&&(o.refId||(o.refId=this._seriesRefLetters[c]),l=this.templateSrv.replace(o.target,a),l=l.replace(d,E),i[o.refId]=l);function P(k,L){return i[L]||k}for(c=0;c<e.targets.length;c++)o=e.targets[c],o.target&&(l=i[o.refId],l=l.replace(p,P),i[o.refId]=l,o.hide||(h=!0,r.push("target="+encodeURIComponent(l))));return(0,m.each)(e,(k,L)=>{(0,m.indexOf)(n,L)!==-1&&k&&r.push(L+"="+encodeURIComponent(k))}),h?r:[]}}function Va(t){return se(t,"1.1")}function $a(t){return se(t,"1.1")}function $e(){return(0,Ca.z)((0,x.U)(t=>t.data?(0,m.map)(t.data,e=>({text:e})):[]))}const za=new oe.hf(Ga).setQueryEditor(aa).setConfigEditor(Ta).setVariableQueryEditor(ia).setMetadataInspector(ca)}}]); //# sourceMappingURL=graphitePlugin.675e1d755edc5c0381d9.js.map