class Grafana::ImageRenderingDatasource
Implements the interface to image rendering datasources.
Public Instance Methods
request(query_description)
click to toggle source
:raw_query
needs to contain a Hash with the following structure:
{ panel: {Panel} which shall be rendered }
@see AbstractDatasource#request
# File lib/grafana/image_rendering_datasource.rb, line 12 def request(query_description) webrequest = query_description[:prepared_request] webrequest.relative_url = query_description[:raw_query][:panel].render_url + url_params(query_description) webrequest.options.merge!({ accept: 'image/png' }) result = webrequest.execute { header: ['image'], content: [result.body] } end
Private Instance Methods
default_vars()
click to toggle source
# File lib/grafana/image_rendering_datasource.rb, line 36 def default_vars { 'fullscreen' => Variable.new(true), 'theme' => Variable.new('light'), 'timeout' => Variable.new(60) } end
url_params(query_desc)
click to toggle source
# File lib/grafana/image_rendering_datasource.rb, line 24 def url_params(query_desc) url_vars = query_desc[:variables].select { |k, _v| k =~ /^(?:timeout|height|width|theme|fullscreen|var-.+)$/ } url_vars = default_vars.merge(url_vars) url_vars['from'] = Variable.new(query_desc[:from]) url_vars['to'] = Variable.new(query_desc[:to]) result = URI.encode_www_form(url_vars.map { |k, v| [k, v.raw_value.to_s] }) return '' if result.empty? "&#{result}" end