D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
build
/
Filename :
parcaPlugin.1b2c1c6cafe531391d3e.js
back
Copy
"use strict";(self.webpackChunkgrafana=self.webpackChunkgrafana||[]).push([[2015],{86954:(S,m,r)=>{r.d(m,{K:()=>y});var h=r(42844),a=r(27702),b=r(66310);function y(E){const p=(0,b.wW)((0,a.useCallback)(L=>x(L,E),[E]));return a.createElement("div",{className:p.root},E.children)}const x=(E,p)=>({root:(0,h.css)({display:"flex",flexDirection:p.direction??"row",flexWrap:p.wrap??!0?"wrap":void 0,alignItems:p.alignItems,gap:E.spacing(p.gap??2),flexGrow:p.flexGrow})})},48170:(S,m,r)=>{r.r(m),r.d(m,{plugin:()=>de});var h=r(68246),a=r(27702),b=r(49257),y=r(12308);const x=e=>{const{options:t,onOptionsChange:n}=e;return a.createElement(a.Fragment,null,a.createElement(b.E,{defaultUrl:"http://localhost:7070",dataSourceConfig:t,showAccessOptions:!1,onChange:n,secureSocksDSProxyEnabled:y.config.secureSocksDSProxyEnabled}))};var E=r(89949),p=r(97990),L=r(62247),D=r(58964);const I="both",B={labelSelector:"{}"};var g=r(42844),C=r(66310),T=r(86954);const A=({children:e,stackProps:t})=>{const n=(0,C.wW)(z);return a.createElement("div",{className:n.root},a.createElement(T.K,{gap:2,...t},e))},z=e=>({root:(0,g.css)({padding:e.spacing(1),backgroundColor:e.colors.background.secondary,borderRadius:e.shape.borderRadius(1)})}),W=({children:e})=>a.createElement(T.K,{gap:.5,direction:"column"},e);var K=r(92024),U=r(11649);const F={id:"parca",extensions:[".parca"],aliases:["parca"],mimetypes:[],def:{language:{ignoreCase:!1,defaultToken:"",tokenPostfix:".fireql",keywords:[],operators:[],symbols:/[=><!~?:&|+\-*\/^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,integersuffix:/(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,floatsuffix:/[fFlL]?/,tokenizer:{root:[[/[a-z_]\w*(?=\s*(=|!=|=~|!~))/,"tag"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d+/,"number"],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"]],string_double:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],string_single:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]],clauses:[[/[^(,)]/,"tag"],[/\)/,"identifier","@pop"]],whitespace:[[/[ \t\r\n]+/,"white"]]}},languageConfiguration:{wordPattern:/(-?\d*\.\d\w*)|([^`~!#%^&*()\-=+\[{\]}\\|;:'",.<>\/?\s]+)/g,brackets:[["{","}"]],autoClosingPairs:[{open:"{",close:"}"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{}}}};class Q{constructor(t,n,s){this.datasource=t,this.monaco=n,this.editor=s,this.triggerCharacters=["{",",","[","(","=","~"," ",'"'],this.labels={}}async init(){const t=await this.datasource.getLabelNames();this.labels=t.reduce((n,s)=>(n[s]=[],n),{})}provideCompletionItems(t,n){if(this.editor.getModel()?.id!==t.id)return{suggestions:[]};const{range:s,offset:i}=j(this.monaco,t,n),l=H(t.getValue(),i);return this.getCompletions(l).then(c=>{const d=c.length.toString().length;return{suggestions:c.map((o,u)=>({kind:$(o.type,this.monaco),label:o.label,insertText:o.insertText,sortText:u.toString().padStart(d,"0"),range:s}))}})}async getCompletions(t){if(!Object.keys(this.labels).length)return[];switch(t.type){case"UNKNOWN":return[];case"EMPTY":return Object.keys(this.labels).map(s=>({label:s,insertText:`{${s}="`,type:"LABEL_NAME"}));case"IN_LABEL_NAME":return Object.keys(this.labels).map(s=>({label:s,insertText:s,type:"LABEL_NAME"}));case"IN_LABEL_VALUE":let n=[];return this.labels[t.labelName].length?n=this.labels[t.labelName]:(n=await this.datasource.getLabelValues(t.labelName),this.labels[t.labelName]=n),n.map(s=>({label:s,insertText:t.betweenQuotes?s:`"${s}"`,type:"LABEL_VALUE"}));default:throw new Error(`Unexpected situation ${t}`)}}}function $(e,t){switch(e){case"LABEL_NAME":return t.languages.CompletionItemKind.Enum;case"LABEL_VALUE":return t.languages.CompletionItemKind.EnumMember;default:throw new Error(`Unexpected CompletionType: ${e}`)}}const N=/[a-zA-Z_][a-zA-Z0-9_]*/,R=/[^"]*/,V=new RegExp(`(${N.source})="(${R.source})"`,"g"),Z=new RegExp(`(${N.source})=("?)${R.source}$`),k=new RegExp(/[{,]\s*[a-zA-Z0-9_]*$/);function H(e,t){if(e==="")return{type:"EMPTY"};const n=e.matchAll(V),s=Array.from(n).reduce((c,d)=>{const[f,o,u]=d[1];return c.push({name:o,value:u}),c},[]),i=e.substring(0,t).match(Z);return i?{type:"IN_LABEL_VALUE",labelName:i[1],betweenQuotes:!!i[2],otherLabels:s}:e.substring(0,t).match(k)?{type:"IN_LABEL_NAME",otherLabels:s}:{type:"UNKNOWN"}}function j(e,t,n){const s=t.getWordAtPosition(n),i=s!=null?e.Range.lift({startLineNumber:n.lineNumber,endLineNumber:n.lineNumber,startColumn:s.startColumn,endColumn:s.endColumn}):e.Range.fromPositions(n),l={column:n.column,lineNumber:n.lineNumber};return{offset:t.getOffsetAt(l),range:i}}function G(e){const t=Y(e.datasource),n=(0,C.wW)(q),s=(0,K.Z)(e.onRunQuery),i=(0,a.useRef)(null);return a.createElement("div",{className:n.wrapper,ref:i},a.createElement(U.p,{value:e.value,language:v,onBlur:e.onChange,containerStyles:n.queryField,monacoOptions:{folding:!1,fontSize:14,lineNumbers:"off",overviewRulerLanes:0,renderLineHighlight:"none",scrollbar:{vertical:"hidden",verticalScrollbarSize:8,horizontal:"hidden",horizontalScrollbarSize:0},scrollBeyondLastLine:!1,wordWrap:"on",padding:{top:5,bottom:6}},onBeforeEditorMount:J,onEditorDidMount:(l,c)=>{t(l,c);const d=()=>{const f=i.current;if(f!==null){const o=l.getContentHeight();f.style.height=`${o+X}px`,f.style.width="100%";const u=f.clientWidth;l.layout({width:u,height:o})}};l.onDidContentSizeChange(d),d(),l.addCommand(c.KeyMod.Shift|c.KeyCode.Enter,()=>{s.current(l.getValue())})}}))}const X=2;function Y(e){const t=(0,a.useRef)(null);return(0,a.useEffect)(()=>()=>{t.current?.()},[]),async(n,s)=>{const i=new Q(e,s,n);await i.init();const{dispose:l}=s.languages.registerCompletionItemProvider(v,i);t.current=l}}let P=!1;const v="parca";function J(e){if(P===!1){P=!0;const{aliases:t,extensions:n,mimetypes:s,def:i}=F;e.languages.register({id:v,aliases:t,extensions:n,mimetypes:s}),e.languages.setMonarchTokensProvider(v,i.language),e.languages.setLanguageConfiguration(v,i.languageConfiguration)}}const q=()=>({queryField:(0,g.css)` flex: 1; // Not exactly sure but without this the editor doe not shrink after resizing (so you can make it bigger but not // smaller). At the same time this does not actually make the editor 100px because it has flex 1 so I assume // this should sort of act as a flex-basis (but flex-basis does not work for this). So yeah CSS magic. width: 100px; `,wrapper:(0,g.css)` display: flex; flex: 1; border: 1px solid rgba(36, 41, 46, 0.3); border-radius: 2px; `});var _=r(73195),w=r(66670),ee=r(73453),te=r(22209),ne=r(40705);const O=[{value:"metrics",label:"Metric",description:"Return aggregated metrics"},{value:"profile",label:"Profile",description:"Return profile"},{value:"both",label:"Both",description:"Return both metric and profile data"}];function ae(e){return e===L.zj.Explore?O:O.filter(t=>t.value!=="both")}function se({query:e,onQueryTypeChange:t,app:n}){const[s,i]=(0,_.Z)(!1),l=(0,C.wW)(re),c=ae(n),d=(0,C.wW)(w.gN);return a.createElement(T.K,{gap:0,direction:"column"},a.createElement(w.zx,{className:(0,g.cx)(l.header,d),onClick:i,title:"Click to edit options"},a.createElement("div",{className:l.toggle},a.createElement(ee.J,{name:s?"angle-down":"angle-right"})),a.createElement("h6",{className:l.title},"Options"),!s&&a.createElement("div",{className:l.description},a.createElement("span",null,"Type: ",e.queryType))),s&&a.createElement("div",{className:l.body},a.createElement(te.g,{label:"Query Type"},a.createElement(ne.S,{options:c,value:e.queryType,onChange:t}))))}const re=e=>({switchLabel:(0,g.css)({color:e.colors.text.secondary,cursor:"pointer",fontSize:e.typography.bodySmall.fontSize,"&:hover":{color:e.colors.text.primary}}),header:(0,g.css)({display:"flex",cursor:"pointer",alignItems:"baseline",color:e.colors.text.primary,"&:hover":{background:e.colors.emphasize(e.colors.background.primary,.03)}}),title:(0,g.css)({flexGrow:1,overflow:"hidden",fontSize:e.typography.bodySmall.fontSize,fontWeight:e.typography.fontWeightMedium,margin:0}),description:(0,g.css)({color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize,paddingLeft:e.spacing(2),gap:e.spacing(2),display:"flex"}),body:(0,g.css)({display:"flex",paddingTop:e.spacing(2),gap:e.spacing(2),flexWrap:"wrap"}),toggle:(0,g.css)({color:e.colors.text.secondary,marginRight:`${e.spacing(1)}`})}),oe={...B,queryType:I};function le(e){const[t,n]=(0,a.useState)([]);function s(o,u){if(u.length===0)return;const M=u[u.length-1].value;if(typeof M!="string")throw new Error("id is not string");e.onChange({...e.query,profileTypeId:M})}function i(o){e.onChange({...e.query,labelSelector:o})}function l(o){e.onChange({...e.query,labelSelector:o}),e.onRunQuery()}(0,p.Z)(async()=>{const o=await e.datasource.getProfileTypes();n(o)});const c=(0,a.useMemo)(()=>{let o=new Map;for(let u of t)o.has(u.name)||o.set(u.name,{label:u.name,value:u.ID,children:[]}),o.get(u.name)?.children?.push({label:u.sample_type,value:u.ID});return Array.from(o.values())},[t]),d=(0,a.useMemo)(()=>{if(!t)return"Loading";const o=t.find(u=>u.ID===e.query.profileTypeId);return o?o.name+" - "+o.sample_type:"Select a profile type"},[e.query.profileTypeId,t]);let f=ie(e.query,e.app);return a.createElement(W,null,a.createElement(A,{stackProps:{wrap:!1,gap:1}},a.createElement(D.O,{onChange:s,options:c,buttonProps:{variant:"secondary"}},d),a.createElement(G,{value:f.labelSelector,onChange:i,datasource:e.datasource,onRunQuery:l})),a.createElement(A,null,a.createElement(se,{query:f,onQueryTypeChange:o=>{e.onChange({...f,queryType:o})},app:e.app})))}function ie(e,t){let n=(0,E.defaults)(e,oe);return t!==L.zj.Explore&&n.queryType==="both"&&(n.queryType="profile"),n}var ue=r(45383),ce=r(42751);class ge extends ce.CK{constructor(t){super(t)}query(t){return t.targets.every(n=>n.profileTypeId)?super.query(t):(0,ue.of)({data:[]})}async getProfileTypes(){return await super.getResource("profileTypes")}async getLabelNames(){return await super.getResource("labelNames")}async getLabelValues(t){return await super.getResource("labelValues",{label:t})}}const de=new h.hf(ge).setConfigEditor(x).setQueryEditor(le)},92024:(S,m,r)=>{r.d(m,{Z:()=>b});var h=r(27702),a=function(y){var x=(0,h.useRef)(y);return x.current=y,x};const b=a},97990:(S,m,r)=>{r.d(m,{Z:()=>b});var h=r(19559),a=function(y){(0,h.Z)(function(){y()})};const b=a}}]); //# sourceMappingURL=parcaPlugin.1b2c1c6cafe531391d3e.js.map