kennel 1.8.3 → 1.9.0
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.
- checksums.yaml +4 -4
- data/lib/kennel/models/base.rb +1 -2
- data/lib/kennel/models/dash.rb +1 -1
- data/lib/kennel/models/screen.rb +37 -4
- data/lib/kennel/syncer.rb +2 -1
- data/lib/kennel/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f12b86071e1e495725a1f4fe210c0a51ed8503bc8c1f8fdeae9cb3d1703335fd
|
4
|
+
data.tar.gz: cf352fce060f9547781ec6faae4387bb3e8e1486f6499e0f2841fe0b287f6460
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52f1e980cb83c6249c03c455bb72b0d3675ac8d37088cf403a634b21d01546a9cab9ffc530045ef8d847b11bebd744a2234d23ceba84614f2d09ecf3296b1875
|
7
|
+
data.tar.gz: 7429f9056cefd2a83b21b810e8aae07033d10d61daee7d8b141e9c9a838b218ec513889cb4c8727508470ada5a1dab3e4ff07a5fe293773323512bab6a2342c1
|
data/lib/kennel/models/base.rb
CHANGED
data/lib/kennel/models/dash.rb
CHANGED
@@ -71,7 +71,7 @@ module Kennel
|
|
71
71
|
|
72
72
|
# check for fields that are unsettable
|
73
73
|
data[:graphs].each do |g|
|
74
|
-
if g.
|
74
|
+
if g[:definition].key?(:status)
|
75
75
|
raise "#{tracking_id} remove definition status, it is unsettable and will always produce a diff"
|
76
76
|
end
|
77
77
|
end
|
data/lib/kennel/models/screen.rb
CHANGED
@@ -3,8 +3,14 @@ module Kennel
|
|
3
3
|
module Models
|
4
4
|
class Screen < Base
|
5
5
|
include TemplateVariables
|
6
|
+
include OptionalValidations
|
6
7
|
|
7
8
|
API_LIST_INCOMPLETE = true
|
9
|
+
REQUEST_DEFAULTS = {
|
10
|
+
style: { width: "normal", palette: "dog_classic", type: "solid" },
|
11
|
+
conditional_formats: [],
|
12
|
+
aggregator: "avg"
|
13
|
+
}.freeze
|
8
14
|
|
9
15
|
settings :id, :board_title, :description, :widgets, :kennel_id
|
10
16
|
|
@@ -34,6 +40,9 @@ module Kennel
|
|
34
40
|
widgets: render_widgets,
|
35
41
|
template_variables: render_template_variables
|
36
42
|
}
|
43
|
+
|
44
|
+
validate_json(@json) if validate
|
45
|
+
|
37
46
|
@json
|
38
47
|
end
|
39
48
|
|
@@ -51,14 +60,29 @@ module Kennel
|
|
51
60
|
actual.delete(:board_bgtype)
|
52
61
|
actual.delete(:height)
|
53
62
|
actual.delete(:width)
|
63
|
+
actual.delete(:showGlobalTimeOnboarding)
|
54
64
|
actual[:template_variables] ||= []
|
55
65
|
(actual[:widgets] || []).each do |w|
|
56
66
|
# api randomly returns time.live_span or timeframe
|
57
67
|
w[:timeframe] = w.delete(:time)[:live_span] if w[:time]
|
58
68
|
|
59
|
-
|
60
|
-
w.delete :
|
69
|
+
w.delete :board_id # copied value, can ignore
|
70
|
+
w.delete :isShared # copied value, can ignore
|
71
|
+
end
|
72
|
+
|
73
|
+
# discard styles/conditional_formats/aggregator if nothing would change when we applied (both are default or nil)
|
74
|
+
as_json[:widgets].each_with_index do |e_w, wi|
|
75
|
+
(e_w.dig(:tile_def, :requests) || []).each_with_index do |e_r, ri|
|
76
|
+
next unless a_r = actual.dig(:widgets, wi, :tile_def, :requests, ri) # skip newly added widgets/requests
|
77
|
+
REQUEST_DEFAULTS.each do |key, default|
|
78
|
+
if [a_r, e_r].all? { |r| r[key].nil? || r[key] == default }
|
79
|
+
a_r.delete(key)
|
80
|
+
e_r.delete(key)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
61
84
|
end
|
85
|
+
|
62
86
|
super
|
63
87
|
end
|
64
88
|
|
@@ -68,14 +92,23 @@ module Kennel
|
|
68
92
|
|
69
93
|
private
|
70
94
|
|
95
|
+
def validate_json(data)
|
96
|
+
# check for fields that are unsettable
|
97
|
+
data[:widgets].each do |w|
|
98
|
+
[:isShared, :board_id].each do |ignored|
|
99
|
+
if w.key?(ignored)
|
100
|
+
raise "#{tracking_id} remove definition #{ignored}, it is unsettable and will always produce a diff"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
71
106
|
def render_widgets
|
72
107
|
widgets.map do |widget|
|
73
108
|
widget = widget_defaults(widget[:type]).merge(widget)
|
74
109
|
if tile = widget[:tile_def]
|
75
|
-
tile.fetch(:requests).each { |r| r[:conditional_formats] ||= [] }
|
76
110
|
tile[:autoscale] = true unless widget[:tile_def].key?(:autoscale)
|
77
111
|
end
|
78
|
-
widget.delete :board_id
|
79
112
|
widget
|
80
113
|
end
|
81
114
|
end
|
data/lib/kennel/syncer.rb
CHANGED
@@ -67,7 +67,8 @@ module Kennel
|
|
67
67
|
|
68
68
|
if e = delete_matching_expected(a)
|
69
69
|
fill_details(a, cache) if e.class::API_LIST_INCOMPLETE
|
70
|
-
|
70
|
+
diff = e.diff(a)
|
71
|
+
if diff.any?
|
71
72
|
@update << [id, e, a, diff]
|
72
73
|
end
|
73
74
|
elsif tracking_id(a) # was previously managed
|
data/lib/kennel/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kennel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|