finery 3.0.1 → 3.0.2

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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/assets/javascripts/blazer/application.js +2 -2
  4. data/app/assets/javascripts/blazer/controllers/application.js.erb +2 -0
  5. data/app/assets/javascripts/blazer/controllers/index.js +1 -0
  6. data/app/assets/javascripts/blazer/controllers/navbar_padding_controller.js +7 -0
  7. data/app/assets/stylesheets/blazer/application.css +17 -51
  8. data/app/controllers/blazer/base_controller.rb +1 -0
  9. data/app/controllers/blazer/queries_controller.rb +1 -1
  10. data/app/views/blazer/_navbar.html.erb +38 -0
  11. data/app/views/blazer/checks/_form.html.erb +6 -6
  12. data/app/views/blazer/checks/index.html.erb +0 -19
  13. data/app/views/blazer/dashboards/_form.html.erb +7 -5
  14. data/app/views/blazer/dashboards/show.html.erb +7 -18
  15. data/app/views/blazer/queries/_form.html.erb +19 -13
  16. data/app/views/blazer/queries/home.html.erb +17 -30
  17. data/app/views/blazer/queries/run.html.erb +1 -1
  18. data/app/views/blazer/queries/show.html.erb +19 -26
  19. data/app/views/blazer/uploads/_form.html.erb +3 -3
  20. data/app/views/blazer/uploads/index.html.erb +0 -18
  21. data/app/views/layouts/blazer/application.html.erb +10 -11
  22. data/lib/blazer/engine.rb +0 -5
  23. data/lib/blazer/version.rb +1 -1
  24. data/lib/blazer.rb +11 -8
  25. metadata +5 -15
  26. data/app/assets/fonts/blazer/glyphicons-halflings-regular.eot +0 -0
  27. data/app/assets/fonts/blazer/glyphicons-halflings-regular.svg +0 -288
  28. data/app/assets/fonts/blazer/glyphicons-halflings-regular.ttf +0 -0
  29. data/app/assets/fonts/blazer/glyphicons-halflings-regular.woff +0 -0
  30. data/app/assets/fonts/blazer/glyphicons-halflings-regular.woff2 +0 -0
  31. data/app/assets/javascripts/blazer/bootstrap.js +0 -2580
  32. data/app/assets/javascripts/blazer/controllers/application.js +0 -2
  33. data/app/assets/javascripts/blazer/selectize.js +0 -3891
  34. data/app/assets/stylesheets/blazer/bootstrap-propshaft.css +0 -10
  35. data/app/assets/stylesheets/blazer/bootstrap-sprockets.css.erb +0 -10
  36. data/app/assets/stylesheets/blazer/bootstrap.css +0 -6828
  37. data/app/assets/stylesheets/blazer/selectize.css +0 -403
  38. data/app/views/blazer/_nav.html.erb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a40d95bfaaec38b95bad08470391cd99a51a83fe31644fc72cf513b6ac0b69f
4
- data.tar.gz: e0e41fd7197e9f4a14b288f253bb865ce97cc85a4937b5f2e64112468fe1940b
3
+ metadata.gz: 4c11bf80f48ee76d4afaed581aabb6481bccd7b56a839c49b2bd61613b8e000e
4
+ data.tar.gz: f350e697db4948e3b1426961b3b26f46fdd49a2db2a3411812cb85be6510671b
5
5
  SHA512:
6
- metadata.gz: 6df58aa1566ca58dbb5f0fcfdae18ba56657a1fdba72a87a4e77e1415cef15852efb2522703939870906523fb099e28849d4788a6a8ef6eb1e9f6f90fe1f1645
7
- data.tar.gz: a4e647be9599ba0869f71be477f3829de5d6e26e266f879b9b5f37ddf740af7404a90801b06b68d427c18f5450a610371cbb16a6170c666d220902d35716073c
6
+ metadata.gz: 6398ed311ae7de30b5f8c8b7f9ad3a3de14c793f62ceeb6bf3b35970703f5d69e5e093888bf41fef8df77945928be7aff3a911b17799bc4b3fbab48c2d221620
7
+ data.tar.gz: 25553c55eeb394fc57084d8174d408a6a4f977cf28e4333f59c3c611b6fd5bb30f0cc2288e6609cec15cef936db451cec44808ddf0b305d19ee15f88c53e5fa3
data/README.md CHANGED
@@ -53,7 +53,7 @@ gem "finery"
53
53
  Run:
54
54
 
55
55
  ```sh
56
- rails generate finery:install
56
+ rails generate blazer:install
57
57
  rails db:migrate
58
58
  ```
59
59
 
@@ -5,7 +5,7 @@
5
5
  //= require ./stupidtable
6
6
  //= require ./stupidtable-custom-settings
7
7
  //= require ./jquery.stickytableheaders
8
- //= require ./selectize
8
+ //= require selectize.min
9
9
  //= require ./highlight.min
10
10
  //= require ./moment
11
11
  //= require ./moment-timezone-with-data
@@ -17,7 +17,7 @@
17
17
  //= require ./chartjs-plugin-annotation.min
18
18
  //= require ./ace
19
19
  //= require ./Sortable
20
- //= require ./bootstrap
20
+ //= require bootstrap.bundle.min
21
21
  //= require ./vue.global.prod
22
22
  //= require ./routes
23
23
  //= require ./queries
@@ -0,0 +1,2 @@
1
+ import { Application, Controller } from "<%= javascript_url "stimulus.min" %>"
2
+ window.Stimulus = Application.start()
@@ -7,5 +7,6 @@
7
7
  //= require ./code_controller
8
8
  //= require ./datepicker_controller
9
9
  //= require ./daterangepicker_controller
10
+ //= require ./navbar_padding_controller
10
11
  //= require ./selectize_controller
11
12
  //= require ./unsaved_controller
@@ -0,0 +1,7 @@
1
+ Stimulus.register("navbar-padding", class extends Controller {
2
+ static targets = [ "navbar" ]
3
+
4
+ connect() {
5
+ this.element.style.paddingTop = (this.navbarTarget.clientHeight || 0) + "px"
6
+ }
7
+ })
@@ -1,20 +1,26 @@
1
1
  /*
2
- *= require ./bootstrap-sprockets
3
- *= require ./bootstrap
4
- *= require ./selectize
2
+ *= require bootstrap.min
3
+ *= require selectize.bootstrap5
5
4
  *= require ./github
6
5
  *= require ./daterangepicker
7
6
  *= require_self
8
7
  */
9
8
 
9
+ .hide {
10
+ display: none !important;
11
+ }
12
+
10
13
  pre {
11
14
  border: none;
12
15
  border-radius: 0;
13
16
  }
14
17
 
15
- body {
16
- padding-top: 15px;
17
- padding-bottom: 15px;
18
+ .text-pre-line {
19
+ white-space: pre-line;
20
+ }
21
+
22
+ body.with-navbar {
23
+ padding-top: 3.5rem;
18
24
  }
19
25
 
20
26
  table.results-table {
@@ -52,6 +58,10 @@ input.search:focus {
52
58
  outline: none;
53
59
  }
54
60
 
61
+ .selectize-control {
62
+ min-width: 10em;
63
+ }
64
+
55
65
  .form-inline .selectize-control, .text-right .selectize-control {
56
66
  display: inline-block;
57
67
  vertical-align: middle;
@@ -157,26 +167,10 @@ input.search:focus {
157
167
  background-color: #fff;
158
168
  }
159
169
 
160
- .glyphicon-remove {
161
- cursor: pointer;
162
- color: #d9534f;
163
- display: none;
164
- float: right;
165
- margin-top: 3px;
166
- }
167
-
168
- .list-group li:hover .glyphicon-remove {
169
- display: inline;
170
- }
171
-
172
- .list-group {
170
+ #queries.list-group {
173
171
  cursor: move;
174
172
  }
175
173
 
176
- #header a.active {
177
- color: #999;
178
- }
179
-
180
174
  [v-cloak] {
181
175
  display: none;
182
176
  }
@@ -197,34 +191,6 @@ input.search:focus {
197
191
  color: red;
198
192
  }
199
193
 
200
- .small-form {
201
- margin-right: auto;
202
- margin-left: auto;
203
- max-width: 400px;
204
- }
205
-
206
- .alert {
207
- padding-top: 8px;
208
- padding-bottom: 8px;
209
- }
210
-
211
- h1, h2, h3, h4, p, hr, .table, .navbar, #header, .alert, .form-group {
212
- margin-top: 0;
213
- margin-bottom: 15px;
214
- }
215
-
216
- .double-margin, .chart-container {
217
- margin-bottom: 30px;
218
- }
219
-
220
- h1 {
221
- font-size: 24px;
222
- }
223
-
224
- h2 {
225
- font-size: 20px;
226
- }
227
-
228
194
  .schema-table {
229
195
  max-width: 500px;
230
196
  }
@@ -103,6 +103,7 @@ module Blazer
103
103
  end
104
104
 
105
105
  def variable_params(resource, var_params = nil)
106
+ return {} unless resource.present?
106
107
  permitted_keys = resource.variables
107
108
  var_params ||= request.query_parameters
108
109
  var_params.slice(*permitted_keys)
@@ -273,7 +273,7 @@ module Blazer
273
273
  raise Error, @error if @error && Rails.env.test?
274
274
 
275
275
  data = csv_data(@columns, @rows, @data_source)
276
- query_params = variable_params.select { |k| @query.variables.include?(k) }
276
+ query_params = variable_params(@query).select { |k| @query.variables.include?(k) }
277
277
  name = @query.try(:name).presence || "query"
278
278
  filename = "#{name}-#{query_params.to_query}".parameterize + ".csv"
279
279
  send_data data, type: "text/csv; charset=utf-8", disposition: "attachment", filename: filename
@@ -0,0 +1,38 @@
1
+ <nav class="navbar navbar-expand-md fixed-top bg-body-tertiary" data-navbar-padding-target="navbar">
2
+ <div class="container flex-nowrap">
3
+ <span class="navbar-brand d-none d-sm-inline">Finery</span>
4
+ <button class="navbar-toggler me-3" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
5
+ <span class="navbar-toggler-icon"></span>
6
+ </button>
7
+ <span class="navbar-brand d-sm-none text-truncate"><%= blazer_title || "Finery" %></span>
8
+ <div class="collapse navbar-collapse" id="navbarCollapse">
9
+ <ul class="navbar-nav me-auto mb-2 mb-md-0">
10
+ <li class="nav-item">
11
+ <%= link_to "Home", blazer.root_path, class: "nav-link" %>
12
+ </li>
13
+ <li class="nav-item">
14
+ <%= link_to "Checks", blazer.checks_path, class: "nav-link" %>
15
+ </li>
16
+ <% if Blazer.uploads? %>
17
+ <li class="nav-item">
18
+ <%= link_to "Uploads", blazer.uploads_path, class: "nav-link" %>
19
+ </li>
20
+ <% end %>
21
+ <li class="nav-item dropdown">
22
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
23
+ New
24
+ </a>
25
+ <ul class="dropdown-menu">
26
+ <li><%= link_to "Query", blazer.new_query_path, class: "dropdown-item" %></li>
27
+ <li><%= link_to "Dashboard", blazer.new_dashboard_path, class: "dropdown-item" %></li>
28
+ <li><%= link_to "Check", blazer.new_check_path(query_id: @query&.id), class: "dropdown-item" %></li>
29
+ <% if Blazer.uploads? %>
30
+ <%= link_to "Upload", blazer.new_upload_path, class: "dropdown-item" %>
31
+ <% end %>
32
+ </ul>
33
+ </li>
34
+ </ul>
35
+ <%= yield(:nav) %>
36
+ </div>
37
+ </div>
38
+ </nav>
@@ -7,7 +7,7 @@
7
7
  <div class="alert alert-danger"><%= @check.errors.full_messages.first %></div>
8
8
  <% end %>
9
9
 
10
- <div class="form-group">
10
+ <div class="form-group mb-3">
11
11
  <%= f.label :query_id, "Query" %>
12
12
  <div class="hide">
13
13
  <%= f.select :query_id, [], {include_blank: true} %>
@@ -21,7 +21,7 @@
21
21
  </div>
22
22
 
23
23
  <% if @check.respond_to?(:check_type) %>
24
- <div class="form-group">
24
+ <div class="form-group mb-3">
25
25
  <%= f.label :check_type, "Alert if" %>
26
26
  <div class="hide">
27
27
  <% check_options = [["Any results (bad data)", "bad_data"], ["No results (missing data)", "missing_data"]] %>
@@ -33,7 +33,7 @@
33
33
  </script>
34
34
  </div>
35
35
  <% elsif @check.respond_to?(:invert) %>
36
- <div class="form-group">
36
+ <div class="form-group mb-3">
37
37
  <%= f.label :invert, "Fails if" %>
38
38
  <div class="hide">
39
39
  <%= f.select :invert, [["Any results (bad data)", false], ["No results (missing data)", true]] %>
@@ -45,7 +45,7 @@
45
45
  <% end %>
46
46
 
47
47
  <% if @check.respond_to?(:schedule) && Blazer.check_schedules %>
48
- <div class="form-group">
48
+ <div class="form-group mb-3">
49
49
  <%= f.label :schedule, "Run every" %>
50
50
  <div class="hide">
51
51
  <%= f.select :schedule, Blazer.check_schedules.map { |v| [v, v] } %>
@@ -56,13 +56,13 @@
56
56
  </div>
57
57
  <% end %>
58
58
 
59
- <div class="form-group">
59
+ <div class="form-group mb-3">
60
60
  <%= f.label :emails %>
61
61
  <%= f.text_field :emails, placeholder: "Optional, comma separated", class: "form-control" %>
62
62
  </div>
63
63
 
64
64
  <% if Blazer.slack? %>
65
- <div class="form-group">
65
+ <div class="form-group mb-3">
66
66
  <%= f.label :slack_channels %>
67
67
  <%= f.text_field :slack_channels, placeholder: "Optional, comma separated", class: "form-control" %>
68
68
  </div>
@@ -1,25 +1,6 @@
1
1
  <% blazer_title "Checks" %>
2
2
 
3
3
  <div id="header">
4
- <div class="pull-right" style="line-height: 34px;">
5
- <div class="btn-group">
6
- <%= link_to "New Check", new_check_path, class: "btn btn-info" %>
7
- <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
8
- <span class="caret"></span>
9
- <span class="sr-only">Toggle Dropdown</span>
10
- </button>
11
- <ul class="dropdown-menu">
12
- <li><%= link_to "Home", root_path %></li>
13
- <% if Blazer.uploads? %>
14
- <li><%= link_to "Uploads", uploads_path %></li>
15
- <% end %>
16
- <li role="separator" class="divider"></li>
17
- <li><%= link_to "New Query", new_query_path %></li>
18
- <li><%= link_to "New Dashboard", new_dashboard_path %></li>
19
- </ul>
20
- </div>
21
- </div>
22
-
23
4
  <input id="search" type="text" placeholder="Start typing a query or state" style="width: 300px; display: inline-block;" class="search form-control" />
24
5
  </div>
25
6
 
@@ -3,21 +3,23 @@
3
3
  <div class="alert alert-danger"><%= @dashboard.errors.full_messages.first %></div>
4
4
  <% end %>
5
5
 
6
- <div class="form-group">
6
+ <div class="form-group mb-3">
7
7
  <%= f.label :name %>
8
8
  <%= f.text_field :name, class: "form-control" %>
9
9
  </div>
10
- <div class="form-group" v-show="queries.length">
10
+ <div class="form-group mb-3" v-show="queries.length">
11
11
  <%= f.label :charts %>
12
12
  <ul id="queries" class="list-group">
13
- <li class="list-group-item" v-for="(query, index) in queries" :key="query.id" v-cloak>
14
- <span class="glyphicon glyphicon-remove" aria-hidden="true" v-on:click="remove(index)"></span>
13
+ <li class="list-group-item d-flex justify-content-between align-items-center" v-for="(query, index) in queries" :key="query.id" v-cloak>
15
14
  {{ query.name }}
15
+ <button class="btn btn-sm btn-danger" v-on:click="remove(index)">
16
+ remove
17
+ </button>
16
18
  <input type="hidden" name="query_ids[]" :value="query.id">
17
19
  </li>
18
20
  </ul>
19
21
  </div>
20
- <div class="form-group" v-cloak>
22
+ <div class="form-group mb-3" v-cloak>
21
23
  <%= f.label :query_id, "Add Chart" %>
22
24
  <%= select_tag :query_id, nil, {include_blank: true, placeholder: "Select chart"} %>
23
25
  </div>
@@ -1,22 +1,11 @@
1
1
  <% blazer_title @dashboard.name %>
2
-
3
- <div class="topbar">
4
- <div class="container">
5
- <div class="row" style="padding-top: 13px;">
6
- <div class="col-sm-9">
7
- <%= render partial: "blazer/nav" %>
8
- <h3 style="line-height: 34px; display: inline; margin-left: 5px;">
9
- <%= @dashboard.name %>
10
- </h3>
11
- </div>
12
- <div class="col-sm-3 text-right">
13
- <%= link_to "Edit", edit_dashboard_path(@dashboard, params: variable_params(@dashboard)), class: "btn btn-info" %>
14
- </div>
15
- </div>
16
- </div>
17
- </div>
18
-
19
- <div style="margin-bottom: 60px;"></div>
2
+ <% content_for :nav do %>
3
+ <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
4
+ <li class="nav-item">
5
+ <%= link_to "Edit", blazer.edit_dashboard_path(@dashboard, params: variable_params(@dashboard)), class: "nav-link" %>
6
+ </li>
7
+ </ul>
8
+ <% end %>
20
9
 
21
10
  <% if @data_sources.any? { |ds| ds.cache_mode != "off" } %>
22
11
  <p class="text-muted" style="float: right;">
@@ -7,38 +7,44 @@
7
7
  <div id="app" v-cloak>
8
8
  <%= form_for @query, url: (@query.persisted? ? query_path(@query, params: @variable_params) : queries_path(params: @variable_params)), html: {autocomplete: "off"}, data: { controller: "unsaved", action: "unsaved#clear input->unsaved#set" } do |f| %>
9
9
  <div class="row">
10
- <div id="statement-box" class="col-xs-8">
10
+ <div id="statement-box" class="col-8">
11
11
  <div class= "form-group">
12
12
  <%= f.hidden_field :statement %>
13
13
  <div id="editor-container">
14
14
  <div id="editor" :style="{ height: editorHeight }"><%= @query.statement %></div>
15
15
  </div>
16
16
  </div>
17
- <div class="form-group text-right" style="margin-bottom: 8px;">
18
- <div class="pull-left" style="margin-top: 8px;">
19
- <%= link_to "Back", :back %>
20
- <a :href="docsPath" target="_blank" style="margin-left: 40px;">Docs</a>
21
- <a :href="schemaPath" target="_blank" style="margin-left: 40px;">Schema</a>
17
+ <div class="form-group d-flex justify-content-between my-2">
18
+ <div>
19
+ <%= link_to "Back", :back, class: "me-2" %>
20
+ <a :href="docsPath" target="_blank" class="m-2">Docs</a>
21
+ <a :href="schemaPath" target="_blank" class="m-2">Schema</a>
22
22
  </div>
23
23
 
24
- <%= f.select :data_source, Blazer.data_sources.map { |_, ds| [ds.name, ds.id] }, {}, class: ("hide" if Blazer.data_sources.size <= 1), style: "width: 140px;" %>
25
- <div id="tables" style="display: inline-block; width: 250px; margin-right: 10px;">
26
- <select id="table_names" style="width: 240px;" placeholder="Preview table"></select>
24
+ <div class="row">
25
+ <div class="col">
26
+ <%= f.select :data_source, Blazer.data_sources.map { |_, ds| [ds.name, ds.id] }, {}, class: ("hide" if Blazer.data_sources.size <= 1) %>
27
+ </div>
28
+ <div class="col">
29
+ <select id="table_names" placeholder="Preview table"></select>
30
+ </div>
27
31
  </div>
32
+ </div>
33
+ <div class="form-group">
28
34
  <a v-on:click="run" v-if="!running" class="btn btn-info" style="vertical-align: top; width: 70px;">Run</a>
29
35
  <a v-on:click="cancel" v-if="running" class="btn btn-danger" style="vertical-align: top; width: 70px;">Cancel</a>
30
36
  </div>
31
37
  </div>
32
- <div class="col-xs-4">
33
- <div class="form-group">
38
+ <div class="col-4">
39
+ <div class="form-group mb-3">
34
40
  <%= f.label :name %>
35
41
  <%= f.text_field :name, class: "form-control" %>
36
42
  </div>
37
- <div class="form-group">
43
+ <div class="form-group mb-3">
38
44
  <%= f.label :description %>
39
45
  <%= f.text_area :description, placeholder: "Optional", style: "height: 80px;", class: "form-control" %>
40
46
  </div>
41
- <div class="form-group text-right">
47
+ <div class="form-group text-end mb-3">
42
48
  <%= f.submit "For Enter Press", class: "hide" %>
43
49
  <% if @query.persisted? %>
44
50
  <%= link_to "Delete", query_path(@query), method: :delete, "data-confirm" => "Are you sure?", class: "btn btn-danger" %>
@@ -1,35 +1,22 @@
1
1
  <div id="queries">
2
- <div id="header">
3
- <div class="pull-right" style="line-height: 34px;">
4
- <% if blazer_user %>
5
- <%= link_to "All", root_path, class: !params[:filter] ? "active" : nil, style: "margin-right: 40px;" %>
6
-
7
- <% if Blazer.audit %>
8
- <%= link_to "Viewed", root_path(filter: "viewed"), class: params[:filter] == "viewed" ? "active" : nil, style: "margin-right: 40px;" %>
9
- <% end %>
10
-
11
- <%= link_to "Mine", root_path(filter: "mine"), class: params[:filter] == "mine" ? "active" : nil, style: "margin-right: 40px;" %>
2
+ <ul class="nav nav-pills d-flex flex-column flex-sm-row mb-3">
3
+ <li class="text-start flex-fill">
4
+ <input type="text" v-model="searchTerm" placeholder="Start typing a query, dashboard, or person" autofocus class="search form-control flex-fill align-self-stretch" />
5
+ </li>
6
+ <% if blazer_user %>
7
+ <li class="nav-item">
8
+ <%= link_to "All", blazer.root_path, class: { "nav-link": true, active: !params[:filter] } %>
9
+ </li>
10
+ <% if Blazer.audit %>
11
+ <li class="nav-item">
12
+ <%= link_to "Viewed", blazer.root_path(filter: "viewed"), class: { "nav-link": true, active: params[:filter] == "viewed" } %>
13
+ </li>
12
14
  <% end %>
13
-
14
- <div class="btn-group">
15
- <%= link_to "New Query", new_query_path, class: "btn btn-info" %>
16
- <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
17
- <span class="caret"></span>
18
- <span class="sr-only">Toggle Dropdown</span>
19
- </button>
20
- <ul class="dropdown-menu">
21
- <li><%= link_to "Checks", checks_path %></li>
22
- <% if Blazer.uploads? %>
23
- <li><%= link_to "Uploads", uploads_path %></li>
24
- <% end %>
25
- <li role="separator" class="divider"></li>
26
- <li><%= link_to "New Dashboard", new_dashboard_path %></li>
27
- <li><%= link_to "New Check", new_check_path %></li>
28
- </ul>
29
- </div>
30
- </div>
31
- <input type="text" v-model="searchTerm" placeholder="Start typing a query, dashboard, or person" style="width: 300px; display: inline-block;" v-focus class="search form-control" />
32
- </div>
15
+ <li class="nav-item">
16
+ <%= link_to "Mine", blazer.root_path(filter: "mine"), class: { "nav-link": true, active: params[:filter] == "mine" } %>
17
+ </li>
18
+ <% end %>
19
+ </ul>
33
20
 
34
21
  <table class="table">
35
22
  <thead>
@@ -131,7 +131,7 @@
131
131
 
132
132
  <% unless @only_chart && !@no_chart %>
133
133
  <% header_width = 100 / @columns.size.to_f %>
134
- <div class="results-container">
134
+ <div class="results-container overflow-x-scroll">
135
135
  <% if @columns == ["QUERY PLAN"] %>
136
136
  <pre><code><%= @rows.map { |r| r[0] }.join("\n") %></code></pre>
137
137
  <% elsif @columns == ["PLAN"] && @data_source.adapter == "druid" %>
@@ -1,27 +1,20 @@
1
1
  <% blazer_title @query.name %>
2
-
3
- <div class="topbar">
4
- <div class="container">
5
- <div class="row" style="padding-top: 13px;">
6
- <div class="col-sm-9">
7
- <%= render partial: "blazer/nav" %>
8
- <h3 style="line-height: 34px; display: inline; margin-left: 5px;">
9
- <%= @query.name %>
10
- </h3>
11
- </div>
12
- <div class="col-sm-3 text-right">
13
- <%= link_to "Edit", edit_query_path(@query, params: variable_params(@query)), class: "btn btn-default", disabled: !@query.editable?(blazer_user) %>
14
- <%= link_to "Fork", new_query_path(params: {variables: variable_params(@query), fork_query_id: @query.id, data_source: @query.data_source, name: @query.name}), class: "btn btn-info" %>
15
-
16
- <% if !@error && @success %>
17
- <%= button_to "Download", run_queries_path(format: "csv"), params: @run_data, class: "btn btn-primary" %>
18
- <% end %>
19
- </div>
20
- </div>
21
- </div>
22
- </div>
23
-
24
- <div style="margin-bottom: 60px;"></div>
2
+ <% content_for :nav do %>
3
+ <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
4
+ <li class="navbar-brand d-none d-sm-inline text-wrap"><%= @query.name %></li>
5
+ <li class="nav-item">
6
+ <%= link_to "Edit", blazer.edit_query_path(@query, params: variable_params(@query)), class: "nav-link", disabled: !@query.editable?(blazer_user) %>
7
+ </li>
8
+ <li class="nav-item">
9
+ <%= link_to "Fork", blazer.new_query_path(params: {variables: variable_params(@query), fork_query_id: @query.id, data_source: @query.data_source, name: @query.name}), class: "nav-link" %>
10
+ </li>
11
+ <li class="nav-item dropdown">
12
+ <% if !@error && @success %>
13
+ <%= button_to "Download", blazer.run_queries_path(format: "csv"), params: @run_data, class: "nav-link" %>
14
+ <% end %>
15
+ </li>
16
+ </ul>
17
+ <% end %>
25
18
 
26
19
  <% if @sql_errors.any? %>
27
20
  <div class="alert alert-danger">
@@ -34,13 +27,13 @@
34
27
  <% end %>
35
28
 
36
29
  <% if @query.description.present? %>
37
- <p style="white-space: pre-line;"><%= @query.description %></p>
30
+ <p class="text-pre-line"><%= @query.description %></p>
38
31
  <% end %>
39
32
 
40
33
  <%= render partial: "blazer/variables", locals: {action: query_path(@query)} %>
41
34
 
42
35
  <details class="row">
43
- <summary class="col-md-1 col-md-offset-11 btn btn-sm btn-info">Show source</summary>
36
+ <summary class="col-md-1 offset-md-11 btn btn-sm btn-info">Show source</summary>
44
37
  <pre id="code" class="col-md-12">
45
38
  <code data-controller="code"><%= @statement.display_statement %></code>
46
39
  </pre>
@@ -54,7 +47,7 @@
54
47
  <script>
55
48
  function showRun(data) {
56
49
  $("#results").html(data)
57
- $("#results table").stupidtable(stupidtableCustomSettings).stickyTableHeaders({fixedOffset: 60})
50
+ $("#results table").stupidtable(stupidtableCustomSettings).stickyTableHeaders({fixedOffset: 56})
58
51
  }
59
52
 
60
53
  function showError(message) {
@@ -5,15 +5,15 @@
5
5
  <p>Create a database table from a CSV file. The table will be created in the <code><%= Blazer.settings["uploads"]["schema"] %></code> schema.</p>
6
6
  <% end %>
7
7
 
8
- <div class="form-group">
8
+ <div class="form-group mb-3">
9
9
  <%= f.label :table %>
10
10
  <%= f.text_field :table, class: "form-control" %>
11
11
  </div>
12
- <div class="form-group">
12
+ <div class="form-group mb-3">
13
13
  <%= f.label :description %>
14
14
  <%= f.text_area :description, placeholder: "Optional", style: "height: 60px;", class: "form-control" %>
15
15
  </div>
16
- <div class="form-group">
16
+ <div class="form-group mb-3">
17
17
  <%= f.label :file %>
18
18
  <%= f.file_field :file, accept: "text/csv", style: "margin-top: 6px; margin-bottom: 21px;" %>
19
19
  </div>
@@ -1,24 +1,6 @@
1
1
  <% blazer_title "Uploads" %>
2
2
 
3
3
  <div id="header">
4
- <div class="pull-right" style="line-height: 34px;">
5
- <div class="btn-group">
6
- <%= link_to "New Upload", new_upload_path, class: "btn btn-info" %>
7
- <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
8
- <span class="caret"></span>
9
- <span class="sr-only">Toggle Dropdown</span>
10
- </button>
11
- <ul class="dropdown-menu">
12
- <li><%= link_to "Home", root_path %></li>
13
- <li><%= link_to "Checks", checks_path %></li>
14
- <li role="separator" class="divider"></li>
15
- <li><%= link_to "New Query", new_query_path %></li>
16
- <li><%= link_to "New Dashboard", new_dashboard_path %></li>
17
- <li><%= link_to "New Check", new_check_path %></li>
18
- </ul>
19
- </div>
20
- </div>
21
-
22
4
  <input id="search" type="text" placeholder="Start typing a table or person" style="width: 300px; display: inline-block;" class="search form-control" />
23
5
  </div>
24
6
 
@@ -1,25 +1,24 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title><%= blazer_title ? blazer_title : "Blazer" %></title>
4
+ <title><%= blazer_title ? blazer_title : "Finery" %></title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
6
+ <meta name="robots" content="noindex" />
7
+ <meta name="referrer" content="same-origin" />
5
8
 
6
9
  <meta charset="utf-8" />
7
10
  <%= favicon_link_tag "blazer/favicon.png" %>
8
- <% if defined?(Propshaft::Railtie) %>
9
- <%= stylesheet_link_tag "blazer/bootstrap-propshaft", "blazer/bootstrap", "blazer/selectize", "blazer/github", "blazer/daterangepicker", "blazer/application" %>
10
- <%= javascript_include_tag "blazer/jquery", "blazer/rails-ujs", "blazer/stupidtable", "blazer/stupidtable-custom-settings", "blazer/jquery.stickytableheaders", "blazer/selectize", "blazer/highlight.min", "blazer/moment", "blazer/moment-timezone-with-data", "blazer/daterangepicker", "blazer/chart.umd", "blazer/chartjs-adapter-date-fns.bundle", "blazer/chartkick", "blazer/mapkick.bundle", "blazer/ace/ace", "blazer/ace/ext-language_tools", "blazer/ace/theme-twilight", "blazer/ace/mode-sql", "blazer/ace/snippets/text", "blazer/ace/snippets/sql", "blazer/Sortable", "blazer/bootstrap", "blazer/vue.global.prod", "blazer/routes", "blazer/queries", "blazer/fuzzysearch", "blazer/application" %>
11
- <% else %>
12
- <%= stylesheet_link_tag "blazer/application" %>
13
- <%= javascript_include_tag "blazer/application" %>
14
- <%= javascript_include_tag "blazer/module", type: "module" %>
15
- <% end %>
11
+ <%= stylesheet_link_tag "blazer/application" %>
12
+ <%= javascript_include_tag "blazer/application" %>
13
+ <%= javascript_include_tag "blazer/module", type: "module" %>
16
14
  <script>
17
15
  <%= blazer_js_var "rootPath", root_path %>
18
16
  </script>
19
17
  <%= csrf_meta_tags %>
20
18
  </head>
21
- <body>
22
- <div class="container">
19
+ <body class="with-navbar overflow-y-scroll" data-controller="navbar-padding">
20
+ <%= render partial: "blazer/navbar" %>
21
+ <div class="container mt-2">
23
22
  <%= yield %>
24
23
  </div>
25
24
  </body>