prosperity 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/prosperity/graph.js.coffee +14 -3
  3. data/app/assets/stylesheets/prosperity/graph.css.scss +4 -6
  4. data/app/controllers/prosperity/graphs_controller.rb +24 -15
  5. data/app/models/prosperity/graph.rb +4 -1
  6. data/app/views/layouts/prosperity/application.html.erb +1 -1
  7. data/app/views/layouts/prosperity/embedabble.html.erb +16 -0
  8. data/app/views/prosperity/graphs/edit.html.erb +20 -3
  9. data/app/views/prosperity/graphs/show.html.erb +3 -0
  10. data/db/migrate/20140516222642_add_graph_type_to_graphs.rb +11 -0
  11. data/lib/prosperity/version.rb +1 -1
  12. data/spec/controllers/prosperity/dashboard_graphs_controller_spec.rb +1 -1
  13. data/spec/controllers/prosperity/graphs_controller_spec.rb +31 -12
  14. data/spec/dummy/db/schema.rb +2 -1
  15. data/spec/dummy/log/development.log +4244 -0
  16. data/spec/dummy/log/test.log +14113 -0
  17. data/spec/dummy/tmp/cache/assets/development/sass/34a577735054231563e7022ea73e1468db9203ba/graph.css.scssc +0 -0
  18. data/spec/dummy/tmp/cache/assets/development/sprockets/197492ed379339e17a0f5d01d3b01b8c +0 -0
  19. data/spec/dummy/tmp/cache/assets/development/sprockets/1c55cf24465f311353197ce336df0178 +0 -0
  20. data/spec/dummy/tmp/cache/assets/development/sprockets/210050da208fb75a75b701bfa4e8470f +0 -0
  21. data/spec/dummy/tmp/cache/assets/development/sprockets/27a59e08207d3ae723f2b2b3d22264c3 +0 -0
  22. data/spec/dummy/tmp/cache/assets/development/sprockets/5f7660fd92b228b2de09f92d54ca6b49 +0 -0
  23. data/spec/dummy/tmp/cache/assets/development/sprockets/6882b260ae69f1594eff540d803e5ac3 +0 -0
  24. data/spec/dummy/tmp/cache/assets/development/sprockets/828a046f0e7dc2dad0eecfe49d31e14d +0 -0
  25. data/spec/dummy/tmp/cache/assets/development/sprockets/a2b14d5c46db32da9183354fb3fcd0bf +0 -0
  26. data/spec/dummy/tmp/cache/assets/development/sprockets/a6d6196cfd275dea0718553a95f997a5 +0 -0
  27. data/spec/dummy/tmp/cache/assets/development/sprockets/aacfd4457155e8607cbe66d5fdaf11b3 +0 -0
  28. data/spec/dummy/tmp/cache/assets/development/sprockets/d94883bc533251c5e4b4821c716ae300 +0 -0
  29. data/spec/dummy/tmp/cache/assets/development/sprockets/f4648036e284d9aa3468f4f7b9bbb967 +0 -0
  30. data/spec/dummy/tmp/cache/assets/test/sass/34a577735054231563e7022ea73e1468db9203ba/graph.css.scssc +0 -0
  31. data/spec/dummy/tmp/cache/assets/test/sprockets/197492ed379339e17a0f5d01d3b01b8c +0 -0
  32. data/spec/dummy/tmp/cache/assets/test/sprockets/1c55cf24465f311353197ce336df0178 +0 -0
  33. data/spec/dummy/tmp/cache/assets/test/sprockets/210050da208fb75a75b701bfa4e8470f +0 -0
  34. data/spec/dummy/tmp/cache/assets/test/sprockets/27a59e08207d3ae723f2b2b3d22264c3 +0 -0
  35. data/spec/dummy/tmp/cache/assets/test/sprockets/6882b260ae69f1594eff540d803e5ac3 +0 -0
  36. data/spec/dummy/tmp/cache/assets/test/sprockets/a2b14d5c46db32da9183354fb3fcd0bf +0 -0
  37. data/spec/dummy/tmp/cache/assets/test/sprockets/a6d6196cfd275dea0718553a95f997a5 +0 -0
  38. data/spec/dummy/tmp/cache/assets/test/sprockets/aacfd4457155e8607cbe66d5fdaf11b3 +0 -0
  39. data/spec/dummy/tmp/cache/assets/test/sprockets/d94883bc533251c5e4b4821c716ae300 +0 -0
  40. data/spec/dummy/tmp/cache/assets/test/sprockets/f4648036e284d9aa3468f4f7b9bbb967 +0 -0
  41. data/spec/models/prosperity/graph_spec.rb +7 -0
  42. metadata +4 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a2b4fadf928d57f33383ad55b6a989b2dfd8d22
4
- data.tar.gz: 01781f83c18c0da2e1ea23b94c220d480f523f1c
3
+ metadata.gz: a5c67a59270ef33317323ebdc699936e5e89ac5f
4
+ data.tar.gz: 21df5064d10dc796a58e8d7510ac7c0a0e26e5a6
5
5
  SHA512:
6
- metadata.gz: 78b242530b5999fbdde7a9a1bba6b444a95d6073a143cd9f47d80be04498badcad408b5bbe64fe79d871f09be4588d007f3e7107034a7d4713336781e6a9c214
7
- data.tar.gz: 8d0875abb61818781caa6445711a0bbb92330838185d920d89937609f26e4f1c2fd0d82ccac8dc33cbad67301dae8878d9ad8d14ca54d4c64b1e09342737ab75
6
+ metadata.gz: faf49f6e8fe66d517f58b6f53bd95280f1ebff3cb5673288d9db7da7f879fb072374d97e4d30eefb37a278840d657f15bbe59837eaa8191cc681e13b1b3c4680
7
+ data.tar.gz: bfb5e793939e5d190935b0dde676a4ef7fdf07632e041245e111650519a0a47d141daff898f54edbf3f4c5ca18a7f237e0b70a33eef8dc040aa6a8bcab317b2e
@@ -1,6 +1,8 @@
1
1
  class SubGraph
2
2
  constructor: (options = {}) ->
3
3
  @el = $('<div>', class: 'sub-graph')
4
+ @graphType = options.graphType
5
+
4
6
  if options.showTitle
5
7
  @el.append("<div class='title'>Loading...</div>")
6
8
 
@@ -37,11 +39,17 @@ class SubGraph
37
39
 
38
40
  @el
39
41
 
42
+ class: =>
43
+ if @graphType == 'area'
44
+ Morris.Area
45
+ else
46
+ Morris.Line
47
+
40
48
  draw: ->
41
49
  # Because of a bug in Morris (https://github.com/morrisjs/morris.js/issues/388)
42
50
  # it's not possible to add data on a hidden element. We just redraw the
43
51
  # entire thing in the meantime.
44
- @chart = new Morris.Line(@chartOptions)
52
+ @chart = new @class()(@chartOptions)
45
53
 
46
54
  class Graph
47
55
  constructor: (options) ->
@@ -54,7 +62,11 @@ class Graph
54
62
  $.getJSON @url, (json) =>
55
63
  for extractor, index in json.extractors
56
64
  $.get extractor.url, (line_json) =>
57
- subgraph = @getSubgraph(label: line_json.label, key: line_json.key)
65
+ subgraph = @getSubgraph
66
+ label: line_json.label
67
+ key: line_json.key
68
+ graphType: json.graph_type
69
+
58
70
  subgraph.addSeries(line_json)
59
71
 
60
72
  if @$el.hasClass('dashboard')
@@ -100,5 +112,4 @@ $(document).on "change", ".edit_graph .metric-title-select select", (e) ->
100
112
  $ ->
101
113
  $(".edit_graph .metric-title-select select").each (i, el) ->
102
114
  updateMetricOptions el
103
-
104
115
 
@@ -3,10 +3,8 @@
3
3
  They will automatically be included in application.css.
4
4
  */
5
5
 
6
- .sub-graph {
7
- .title {
8
- text-align: center;
9
- font-size: 14px;
10
- font-weight: bold;
11
- }
6
+ .sub-graph .title, .metric-title {
7
+ text-align: center;
8
+ font-size: 14px;
9
+ font-weight: bold;
12
10
  }
@@ -17,20 +17,29 @@ module Prosperity
17
17
  end
18
18
 
19
19
  def show
20
- render json: {
21
- title: @graph.title,
22
- extractors: @graph.graph_lines.map do |line|
23
- {
24
- key: line.extractor,
25
- url: data_metric_path(id: line.metric,
26
- extractor: line.extractor,
27
- option: line.option,
28
- period: @graph.period,
29
- start_time: start_time,
30
- end_time: end_time),
20
+ respond_to do |format|
21
+ format.json do
22
+ render json: {
23
+ title: @graph.title,
24
+ graph_type: @graph.graph_type,
25
+ extractors: @graph.graph_lines.map do |line|
26
+ {
27
+ key: line.extractor,
28
+ url: data_metric_path(id: line.metric,
29
+ extractor: line.extractor,
30
+ option: line.option,
31
+ period: @graph.period,
32
+ start_time: start_time,
33
+ end_time: end_time),
34
+ }
35
+ end
31
36
  }
32
37
  end
33
- }
38
+
39
+ format.html {
40
+ render layout: 'prosperity/embedabble'
41
+ }
42
+ end
34
43
  end
35
44
 
36
45
  def update
@@ -42,7 +51,7 @@ module Prosperity
42
51
 
43
52
  def create
44
53
  @graph = Graph.new
45
- [:title, :period].each do |attr|
54
+ [:title, :period, :graph_type].each do |attr|
46
55
  @graph.send("#{attr}=", graph_params[attr])
47
56
  end
48
57
 
@@ -53,7 +62,7 @@ module Prosperity
53
62
  render action: :new
54
63
  end
55
64
  end
56
-
65
+
57
66
  private
58
67
 
59
68
  def get_graph
@@ -65,7 +74,7 @@ module Prosperity
65
74
  params.require(:graph).
66
75
  permit(Graph::ATTR_ACCESSIBLE + [:graph_lines_attributes => (GraphLine::ATTR_ACCESSIBLE + [:id])])
67
76
  else
68
- params.fetch(:graph, {})
77
+ params.fetch(:graph, {})
69
78
  end
70
79
  end
71
80
  end
@@ -4,10 +4,13 @@ module Prosperity
4
4
  validates_presence_of :title, :period
5
5
  accepts_nested_attributes_for :graph_lines, reject_if: :not_filled?
6
6
 
7
- ATTR_ACCESSIBLE = [:title, :period, :graph_lines].freeze
7
+ ATTR_ACCESSIBLE = [:title, :period, :graph_lines, :graph_type].freeze
8
8
 
9
9
  attr_accessible *ATTR_ACCESSIBLE unless defined?(ActionController::StrongParameters)
10
10
 
11
+ VALID_GRAPH_TYPES = %w(line area)
12
+ validates :graph_type, inclusion: {in: VALID_GRAPH_TYPES}
13
+
11
14
  private
12
15
  def not_filled?(line)
13
16
  if line[:id]
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html>(lang="en")
2
+ <html>
3
3
  <head>
4
4
  <title>
5
5
  <%= content_for?(:title) ? yield(:title) : app_name %>
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <%= csrf_meta_tags %>
5
+ <!-- Le HTML5 shim, for IE6-8 support of HTML elements
6
+ -->
7
+ <!--[if lt IE 9]
8
+ <%= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.1/html5shiv.js" %>
9
+ -->
10
+ <%= stylesheet_link_tag "prosperity/application", :media => "all" %>
11
+ </head>
12
+ <body>
13
+ <%= yield %>
14
+ <%= javascript_include_tag "prosperity/application" %>
15
+ </body>
16
+ </html>
@@ -1,10 +1,18 @@
1
1
  <h1>Edit Graph</h1>
2
2
 
3
- <p>Title: <%= @graph.title%></p>
4
-
5
3
  <div class="row">
6
4
  <div class="span6">
7
5
  <%= form_for @graph, data: {metric_options: @options} do |f| %>
6
+ <div class="form-group">
7
+ <%= f.label :title %>
8
+ <%= f.text_field :title %>
9
+ </div>
10
+
11
+ <div class="form-group">
12
+ <%= f.label :graph_type %>
13
+ <%= f.select :graph_type, Prosperity::Graph::VALID_GRAPH_TYPES %>
14
+ </div>
15
+
8
16
  <h4>Lines</h4>
9
17
  <%= f.fields_for :graph_lines do |l| %>
10
18
  <% if l.object.new_record? %>
@@ -35,7 +43,16 @@
35
43
 
36
44
  <div class="span8">
37
45
  <div class="graph well"/>
38
- <div class="metric" data-url="<%= graph_path(@graph) %>"></div>
46
+ <div class="metric dashboard" data-url="<%= graph_path(@graph) %>"></div>
47
+ </div>
48
+
49
+ <div>
50
+ <p>
51
+ You can embed this graph by embedding the following snippet in your web page.
52
+ </p>
53
+ <input disabled value='<iframe height="400px" src="<%= graph_url(@graph) %>" style="border: none;" width="512px"></iframe>' />
54
+
55
+ </div>
39
56
  </div>
40
57
  </div>
41
58
 
@@ -0,0 +1,3 @@
1
+ <div class='metric-title'><%= @graph.title %></div>
2
+ <div class="metric dashboard" data-url="<%= graph_path(@graph) %>"></div>
3
+
@@ -0,0 +1,11 @@
1
+ class AddGraphTypeToGraphs < ActiveRecord::Migration
2
+ def up
3
+ add_column :prosperity_graphs, :graph_type, :string
4
+ execute "UPDATE prosperity_graphs SET graph_type='line'"
5
+ change_column :prosperity_graphs, :graph_type, :string, null: false
6
+ end
7
+
8
+ def down
9
+ remove_column :prosperity_graphs, :graph_type, :string
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Prosperity
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -5,7 +5,7 @@ module Prosperity
5
5
  routes { Prosperity::Engine.routes }
6
6
 
7
7
  let(:valid_graph_attributes) do
8
- { title: "My Graph", period: "month" }
8
+ { title: "My Graph", period: "month", graph_type: 'line' }
9
9
  end
10
10
 
11
11
  let!(:valid_dashboard_attributes) do
@@ -8,6 +8,7 @@ module Prosperity
8
8
  {
9
9
  title: "My Graph",
10
10
  period: "month",
11
+ graph_type: 'line',
11
12
  }
12
13
  end
13
14
 
@@ -48,20 +49,38 @@ module Prosperity
48
49
  end
49
50
 
50
51
  describe "GET 'show'" do
51
- it "renders the JSON representation of the graph" do
52
- get :show, id: graph.id
53
- response.should be_success
54
- json['title'].should == graph.title
55
- json['extractors'].should == []
52
+ context "in JSON" do
53
+ it "renders the JSON representation of the graph" do
54
+ get :show, id: graph.id, format: 'json'
55
+ response.should be_success
56
+ json['title'].should == graph.title
57
+ json['extractors'].should == []
58
+ end
59
+
60
+ it "returns one extractor per graph line" do
61
+ get :show, id: graph_w_line, format: 'json'
62
+ response.should be_success
63
+ json['extractors'].count.should == 1
64
+ ext = json['extractors'].first
65
+ ext['key'].should == valid_line_attributes[:extractor]
66
+ ext['url'].should be_present
67
+ end
56
68
  end
57
69
 
58
- it "returns one extractor per graph line" do
59
- get :show, id: graph_w_line
60
- response.should be_success
61
- json['extractors'].count.should == 1
62
- ext = json['extractors'].first
63
- ext['key'].should == valid_line_attributes[:extractor]
64
- ext['url'].should be_present
70
+ context "as embedabble HTML" do
71
+ before do
72
+ get :show, id: graph.id, format: 'html'
73
+ response.should be_success
74
+ end
75
+
76
+ it "renders html" do
77
+ response.content_type.should == 'text/html'
78
+ response.body.should include('metric dashboard')
79
+ end
80
+
81
+ it "should render the embedabble layout" do
82
+ response.body.should_not include('navbar')
83
+ end
65
84
  end
66
85
  end
67
86
 
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20140217005117) do
14
+ ActiveRecord::Schema.define(version: 20140516222642) do
15
15
 
16
16
  # These are extensions that must be enabled in order to support this database
17
17
  enable_extension "plpgsql"
@@ -49,6 +49,7 @@ ActiveRecord::Schema.define(version: 20140217005117) do
49
49
  t.string "period", null: false
50
50
  t.datetime "created_at"
51
51
  t.datetime "updated_at"
52
+ t.string "graph_type", null: false
52
53
  end
53
54
 
54
55
  create_table "users", force: true do |t|