kennel 1.40.0 → 1.41.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48d299703094c1309aec2c1e902a6c0e8a37174395a9fccd233cf72f3b75b255
4
- data.tar.gz: 72f45df5f14f29c97f4a906d6f59cc9a70acc26040fed0a36520e8c675dbacb0
3
+ metadata.gz: 8fd1df00b8cba5414b3c34f245b8c67c7263faf63440400850762406b999517d
4
+ data.tar.gz: 81c1c103f5792d68999531e09b2198d803ea0ec4085c8ca18d7b5871981da980
5
5
  SHA512:
6
- metadata.gz: ef6beaa1c5ffa0c2b1c6d534e1fd30cd3276d29bf1a16074e06f1499b76466b187c0694e5bc50ca9c9e8bb814cccfec05f477bee16b15b34067df3c78c83d2d3
7
- data.tar.gz: eeabb869d2528613cbb1d18b92fe603404c160fc88212b76f97a02d4a77e8262b930fde867ae3fb33e13c0ce330b8998d5494ee233655b294b37461d6e10e5f3
6
+ metadata.gz: d684a807b876bbe5e438d6fb3a8f5d1de4797c9b81fe4545d2bf2eb2aecd69a3f50e0adf0437b5952ffc4a83de05a090874a30e5bf2764c6cd37f48a136e5628
7
+ data.tar.gz: 870ec2d6580e31f437f07bf21c2becc36b2bc1926e523a054bde905f86754f5e7c4fcab2914f7d3c107b96e1f8c7992931a1e8997b5dd5a4cad0cf54a13ebb44
@@ -13,16 +13,22 @@ module Kennel
13
13
  REQUEST_DEFAULTS = {
14
14
  style: { line_width: "normal", palette: "dog_classic", line_type: "solid" }
15
15
  }.freeze
16
+ SUPPORTED_DEFINITION_OPTIONS = [:events, :markers, :precision].freeze
16
17
 
17
- settings :id, :title, :description, :widgets, :kennel_id, :layout_type
18
+ settings :id, :title, :description, :definitions, :widgets, :kennel_id, :layout_type
18
19
 
19
20
  defaults(
20
21
  description: -> { "" },
22
+ definitions: -> { [] },
21
23
  widgets: -> { [] },
22
24
  id: -> { nil }
23
25
  )
24
26
 
25
27
  class << self
28
+ def api_resource
29
+ "dashboard"
30
+ end
31
+
26
32
  def normalize(expected, actual)
27
33
  super
28
34
 
@@ -56,10 +62,6 @@ module Kennel
56
62
  super(*args)
57
63
  end
58
64
 
59
- def self.api_resource
60
- "dashboard"
61
- end
62
-
63
65
  def as_json
64
66
  return @json if @json
65
67
  @json = {
@@ -67,7 +69,7 @@ module Kennel
67
69
  title: "#{title}#{LOCK}",
68
70
  description: description,
69
71
  template_variables: render_template_variables,
70
- widgets: widgets
72
+ widgets: render_definitions + widgets
71
73
  }
72
74
 
73
75
  @json[:id] = id if id
@@ -88,6 +90,26 @@ module Kennel
88
90
 
89
91
  validate_template_variables data, :widgets
90
92
  end
93
+
94
+ def render_definitions
95
+ definitions.map do |title, type, display_type, queries, options = {}, ignored = nil|
96
+ # validate inputs
97
+ if ignored || (!title || !type || !queries || !options.is_a?(Hash))
98
+ raise ArgumentError, "Expected exactly 5 arguments for each definition (title, type, display_type, queries, options)"
99
+ end
100
+ if (SUPPORTED_DEFINITION_OPTIONS | options.keys) != SUPPORTED_DEFINITION_OPTIONS
101
+ raise ArgumentError, "Supported options are: #{SUPPORTED_DEFINITION_OPTIONS.map(&:inspect).join(", ")}"
102
+ end
103
+
104
+ # build definition
105
+ requests = Array(queries).map do |q|
106
+ request = { q: q }
107
+ request[:display_type] = display_type if display_type
108
+ request
109
+ end
110
+ { definition: { title: title, type: type, requests: requests, **options } }
111
+ end
112
+ end
91
113
  end
92
114
  end
93
115
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.40.0"
3
+ VERSION = "1.41.0"
4
4
  end
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.40.0
4
+ version: 1.41.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: 2019-06-14 00:00:00.000000000 Z
11
+ date: 2019-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday