diff --git a/c-historico/handler.cr b/c-historico/handler.cr index cc571cf..d74a9fd 100644 --- a/c-historico/handler.cr +++ b/c-historico/handler.cr @@ -3,8 +3,38 @@ require "http/headers" require "http/request" require "ishi/html" require "json" +require "uuid" class Handler + def format_buffer(buffer, canvas_name) + # Process the gnuplot output so it works in the page + # + # buffer is the Ishi output + # name is a string to replace for gnuplot_canvas so + # we can have multiple charts in a page + + html = buffer.to_s.split("\n") + html = html[html.index("")] + html = html.join("\n") + %( +
+ + + +
+ + Sorry, your browser seems not to support the HTML 5 canvas element + +
+ +
+ ) + # This ID needs to be unique in case + # we have 2 charts in the same page + html.gsub("gnuplot_canvas", canvas_name) + end + def query(sql) params = URI::Params.encode({"q": sql}) response = HTTP::Client.get URI.new( @@ -70,27 +100,8 @@ class Handler } end - # This is a whole page, we just need some bits - html = buffer.to_s.split("\n") - html = html[html.index("")] - html = html.join("\n") + %( -
- - - -
- - Sorry, your browser seems not to support the HTML 5 canvas element - -
- -
-) - { - body: html, + body: format_buffer(buffer, "historico"), status_code: 200, headers: HTTP::Headers{"Content-Type" => "text/html"}, }