forked from criteo/consul-templaterb
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcriteo_choregraphies.html.erb
99 lines (97 loc) · 3.16 KB
/
criteo_choregraphies.html.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<% require 'base64'
require 'json'
require 'date'
@current_time = Time.now.utc
%><%= render_file('common/header.html.erb', title: 'Choregraphies', refresh: 30) %>
<main class="container">
<div>
<h1>Show all choregraphie information</h1>
<div>This page only show choregraphie when at least one holder exists.</div>
<%
def display_holder(holder, value)
begin
holder_date = Time.parse(value)
status = 'success'
diff = (@current_time - holder_date).round(0)
status = 'warning' if diff > 3600
status = 'danger' if diff > 7200
diff_txt = "#{diff % 3600} seconds"
diff_txt = "#{(diff % 86400) / 3600} hours, #{diff_txt}" if diff > 3600
diff_txt = "#{diff / 86400} days, #{diff_txt}" if diff > 86400
rescue StandardError => e
status = 'info'
holder_date = "Cannot parse date: #{e}"
diff_txt = "Error Parsing date #{value}"
end
["<li class=\"list-group-item list-group-item-#{status}\">#{holder}: #{holder_date} : #{diff_txt} ago", status]
end
%>
<div id="accordion">
<% kv('choregraphie', recurse:true).each do |tuple| %>
<!-- <%= tuple['Key'] %> -->
<%
key = tuple['Key'].gsub('/', '-')
if tuple['Value'].nil?
json = []
holders = []
%>
<div class="alert alert-warning" role="alert">
Invalid Choregraphie data: <%= tuple %>
</div>
<%
else
json = JSON.parse(Base64.decode64(tuple['Value']))
begin
holders = json['holders']
rescue StandardError => e
%>
<h1>Failed to parse holders <%= e %> in <%= json %></h1>
<%
holders = []
end
end
%>
<% if holders.count > 0 %>
<div class="card">
<div class="card-header" id="heading-<%= key %>">
<span class="badge badge-pill badge-primary float-right"><%= holders.count%>/<%= json['concurrency'] %></span>
<h5 class="mb-0">
<a href="#<%= key %>" class="btn btn-link collapsed" data-toggle="collapse" data-target="#collapse-<%= key %>" aria-expanded="true" aria-controls="collapse-<%= key %>">
<%= tuple['Key'] %>
</a>
</h5>
</div>
<%
text_result = ''
clazz = 'collapse'
holders.each_pair do |key,value|
if value.is_a?(Hash)
text_result+= "<li><u>#{key}:</u><ul class=\"list-group\">"
value.each_pair do |k, v|
res, status = display_holder(k, v)
clazz = 'collapse show' unless status == 'success'
text_result += res
end
text_result += '</ul></li>'
else
res, status = display_holder(key, value)
clazz = 'collapse show' unless status == 'success'
text_result << res
end
end
%>
<div id="collapse-<%= key %>" class="<%= clazz %>" aria-labelledby="heading-<%= key %>" data-parent="#accordion">
<div class="card-body">
<pre class="pre-scrollable"><code><%= JSON.pretty_generate(json) %></code></pre>
<ul class="list-group">
<%= text_result %>
</ul>
</div>
</div>
</div>
<% end %>
<% end %>
</div>
</div>
</main>
<%= render_file 'common/footer.html.erb' %>