D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
usr
/
share
/
grafana
/
public
/
build
/
Filename :
grafanaPlugin.aee8494db4c836362107.js
back
Copy
"use strict";(self.webpackChunkgrafana=self.webpackChunkgrafana||[]).push([[7537],{24794:(J,C,s)=>{s.r(C),s.d(C,{plugin:()=>G});var L=s(68246),A=s(42844),D=s(6772),z=s.n(D),t=s(27702),S=s(76305),b=s(66784),R=s(21609),I=s(86312),y=s(34667),M=s(73289),V=s(10864),m=s(48024),g=s(28580),F=s(1128),T=s(63439),v=s(71107),P=s(53901),Q=s(79399),N=s(66310),B=s(12308),E=s(40397),d=s(89050),O=s(11649);function $({value:f,onChange:r}){const[e,n]=(0,t.useState)(""),[a,l]=(0,t.useState)(f.query??"");(0,t.useEffect)(()=>{n(JSON.stringify({...{query:"*",location:"",ds_uid:"",sort:"",tags:[],kind:[],explain:!1,facet:[{field:"kind"},{field:"tags"}],from:0,limit:20},...f},null,2))},[f]);const o=h=>{a!==f.query&&r({...f,query:a})},i=h=>{h.key==="Enter"&&o(h)},u=h=>{try{const c=JSON.parse(h);r(c),l(c.query??"")}catch(c){console.log("UNABLE TO parse search",h,c)}};return t.createElement(t.Fragment,null,t.createElement(v.Z,null,t.createElement(m._,{label:"Query",grow:!0,labelWidth:12},t.createElement(F.I,{placeholder:"Everything",value:a,onChange:h=>l(h.currentTarget.value),onKeyDown:i,onBlur:o,spellCheck:!1}))),t.createElement(O.p,{height:300,language:"json",value:e,onBlur:u,onSave:u,showMiniMap:!1,showLineNumbers:!0}))}const p=12;class x extends t.PureComponent{constructor(r){super(r),this.state={channels:[],channelFields:{}},this.queryTypes=[{label:"Random Walk",value:d.hR.RandomWalk,description:"Random signal within the selected time range"},{label:"Live Measurements",value:d.hR.LiveMeasurements,description:"Stream real-time measurements from Grafana"},{label:"List public files",value:d.hR.List,description:"Show directory listings for public resources"}],this.onQueryTypeChange=e=>{const{onChange:n,query:a,onRunQuery:l}=this.props;n({...a,queryType:e.value}),l(),this.loadChannelInfo()},this.onChannelChange=e=>{const{onChange:n,query:a,onRunQuery:l}=this.props;n({...a,channel:e?.value}),l()},this.onFieldNamesChange=e=>{const{onChange:n,query:a,onRunQuery:l}=this.props;let o=[];if(Array.isArray(e)?o=e.map(i=>i.value):e.value&&(o=[e.value]),o.length===1&&!a.filter?.fields?.length&&a.channel){const u=(this.state.channelFields[a.channel]??[]).find(h=>h.value==="time"||h.value==="Time");u&&u.value&&u.value!==o[0]&&(o=[u.value,...o])}n({...a,filter:{...a.filter,fields:o}}),l()},this.checkAndUpdateValue=(e,n)=>{const{onChange:a,query:l,onRunQuery:o}=this.props;if(e==="buffer"){let i;if(n)try{i=S.intervalToSeconds(n)*1e3}catch(u){console.warn("ERROR",u)}a({...l,buffer:i})}else a({...l,[e]:n});o()},this.handleEnterKey=e=>{e.key==="Enter"&&this.checkAndUpdateValue("buffer",e.target.value)},this.handleBlur=e=>{this.checkAndUpdateValue("buffer",e.target.value)},this.onFolderChanged=e=>{const{onChange:n,query:a,onRunQuery:l}=this.props;n({...a,path:e?.value}),l()},this.fileListRenderer=(e,n)=>null,this.onFileDrop=(e,n,a)=>{E.eM(e).subscribe(l=>{const o=[];l.dataFrames.forEach(i=>{const u=(0,b.Y)(i);o.push(u)}),this.props.onChange({...this.props.query,file:{name:l.file.name,size:l.file.size},queryType:d.hR.Snapshot,snapshot:o}),this.props.onRunQuery(),(0,I.ff)("grafana_datasource_drop_files",{number_of_files:n.length+e.length,accepted_files:e.map(i=>({type:i.type,size:i.size})),rejected_files:n.map(i=>({type:i.file.type,size:i.file.size}))})})},this.onSearchChange=e=>{const{query:n,onChange:a,onRunQuery:l}=this.props;a({...n,search:e}),l()},y.config.featureToggles.panelTitleSearch&&B.Oh&&this.queryTypes.push({label:"Search",value:d.hR.Search,description:"Search for grafana resources"}),y.config.featureToggles.editPanelCSVDragAndDrop&&this.queryTypes.push({label:"Spreadsheet or snapshot",value:d.hR.Snapshot,description:"Query an uploaded spreadsheet or a snapshot"})}loadChannelInfo(){(0,M.i)().fetch({url:"api/live/list"}).subscribe({next:r=>{const e=r.data?.channels;if(e?.length){const n={},a=e.map(l=>{if(l.data){const o=new Set,i=(0,b.vP)(l.data);for(const u of i.fields)o.add(u.name);n[l.channel]=Array.from(o).map(u=>({value:u,label:u}))}return{value:l.channel,label:l.channel+" ["+l.minute_rate+" msg/min]"}});this.setState({channelFields:n,channels:a})}}})}loadFolderInfo(){const r={targets:[{queryType:d.hR.List,refId:"A"}]};(0,V.F)().get("-- Grafana --").then(e=>{e.query(r).subscribe({next:a=>{if(a.data.length){const o=a.data[0].fields[0].values.map(i=>({value:i,label:i}));this.setState({folders:o})}}})})}componentDidMount(){this.loadChannelInfo()}renderMeasurementsQuery(){let{channel:r,filter:e,buffer:n}=this.props.query,{channels:a,channelFields:l}=this.state,o=a.find(c=>c.value===r);r&&!o&&(o={value:r,label:r,description:`Connected to ${r}`},a=[o,...a]);const i=new Set,u=r?l[r]??[]:[];if(e?.fields)for(const c of e.fields)i.has(c)||(u.push({value:c,label:`${c} (not loaded)`,description:"Configured, but not found in the query results"}),i.add(c));let h="";return n&&(h=S.secondsToHms(n/1e3)),t.createElement(t.Fragment,null,t.createElement("div",{className:"gf-form"},t.createElement(m._,{label:"Channel",grow:!0,labelWidth:p},t.createElement(g.Ph,{options:a,value:o||"",onChange:this.onChannelChange,allowCustomValue:!0,backspaceRemovesValue:!0,placeholder:"Select measurements channel",isClearable:!0,noOptionsMessage:"Enter channel name",formatCreateLabel:c=>`Connect to: ${c}`}))),r&&t.createElement("div",{className:"gf-form"},t.createElement(m._,{label:"Fields",grow:!0,labelWidth:p},t.createElement(g.Ph,{options:u,value:e?.fields||[],onChange:this.onFieldNamesChange,allowCustomValue:!0,backspaceRemovesValue:!0,placeholder:"All fields",isClearable:!0,noOptionsMessage:"Unable to list all fields",formatCreateLabel:c=>`Field: ${c}`,isSearchable:!0,isMulti:!0})),t.createElement(m._,{label:"Buffer"},t.createElement(F.I,{placeholder:"Auto",width:12,defaultValue:h,onKeyDown:this.handleEnterKey,onBlur:this.handleBlur,spellCheck:!1}))),t.createElement(T.b,{title:"Grafana Live - Measurements",severity:"info"},"This supports real-time event streams in Grafana core. This feature is under heavy development. Expect the interfaces and structures to change as this becomes more production ready."))}renderListPublicFiles(){let{path:r}=this.props.query,{folders:e}=this.state;e||(e=[],this.loadFolderInfo());const n=e.find(a=>a.value===r);return r&&!n&&(e=[...e,{value:r,label:r}]),t.createElement(v.Z,null,t.createElement(m._,{label:"Path",grow:!0,labelWidth:p},t.createElement(g.Ph,{options:e,value:n||"",onChange:this.onFolderChanged,allowCustomValue:!0,backspaceRemovesValue:!0,placeholder:"Select folder",isClearable:!0,formatCreateLabel:a=>`Folder: ${a}`})))}renderSnapshotQuery(){const{query:r,theme:e}=this.props,n=r.file,a=K(e),l=(0,R.Cf)("decbytes")(n?n.size:0);return t.createElement(t.Fragment,null,t.createElement(v.Z,null,t.createElement(m._,{label:"Snapshot",grow:!0,labelWidth:p},t.createElement(P.W,null,z()("frame",r.snapshot?.length??0,!0)))),y.config.featureToggles.editPanelCSVDragAndDrop&&t.createElement(t.Fragment,null,t.createElement(Q.Yo,{readAs:"readAsArrayBuffer",fileListRenderer:this.fileListRenderer,options:{onDrop:this.onFileDrop,maxSize:E.dg,multiple:!1,accept:E.DK}},t.createElement(Q.A_,{primaryText:this.props?.query?.file?"Replace file":"Drop file here or click to upload"})),n&&t.createElement("div",{className:a.file},t.createElement("span",null,n?.name),t.createElement("span",null,t.createElement("span",null,(0,R.zc)(l))))))}render(){const r={...d.wi,...this.props.query},{queryType:e}=r;let n=this.queryTypes;return e===d.hR.Snapshot&&!y.config.featureToggles.editPanelCSVDragAndDrop&&(n=[...this.queryTypes,{label:"Snapshot",value:e}]),t.createElement(t.Fragment,null,e===d.hR.Search&&t.createElement(T.b,{title:"Grafana Search",severity:"info"},"Using this datasource to call the new search system is experimental, and subject to change at any time without notice."),t.createElement(v.Z,null,t.createElement(m._,{label:"Query type",grow:!0,labelWidth:p},t.createElement(g.Ph,{options:n,value:n.find(a=>a.value===e)||n[0],onChange:this.onQueryTypeChange}))),e===d.hR.LiveMeasurements&&this.renderMeasurementsQuery(),e===d.hR.List&&this.renderListPublicFiles(),e===d.hR.Snapshot&&this.renderSnapshotQuery(),e===d.hR.Search&&t.createElement($,{value:r.search??{},onChange:this.onSearchChange}))}}const U=(0,N.HE)(x);function K(f){return{file:(0,A.css)` width: 100%; display: flex; flex-direction: row; align-items: center; justify-content: space-between; padding: ${f.spacing(2)}; border: 1px dashed ${f.colors.border.medium}; background-color: ${f.colors.background.secondary}; margin-top: ${f.spacing(1)}; `}}var q=s(28062);const G=new L.hf(q.k).setQueryEditor(U)}}]); //# sourceMappingURL=grafanaPlugin.aee8494db4c836362107.js.map