Skip to content

Commit 4744918

Browse files
committed
major updates
1 parent 5dcf522 commit 4744918

File tree

1 file changed

+255
-0
lines changed

1 file changed

+255
-0
lines changed

src/templates/dashboard.html

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>TradingView Webhooks Bot</title>
6+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
7+
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
8+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js"
9+
integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13"
10+
crossorigin="anonymous"></script>
11+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css"
12+
integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g=="
13+
crossorigin="anonymous" referrerpolicy="no-referrer"/>
14+
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
15+
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
16+
<script src='https://cdn.plot.ly/plotly-2.11.1.min.js'></script>
17+
<script src="/static/js/jsonFormatting.js"></script>
18+
<script src="/static/js/handleLogs.js"></script>
19+
<link href="/static/css/pre.css" rel="stylesheet">
20+
<link href="/static/css/main.css" rel="stylesheet"/>
21+
</head>
22+
<body>
23+
<div class="container">
24+
<div class="row mb-5">
25+
<div class="col-lg-6">
26+
<img src="/static/img/tvwb-logo.png" style="height: 128px" class="py-3 my-2 ps-5 ms-5"/>
27+
</div>
28+
<div class="col-lg-6 d-flex align-items-center">
29+
<div>
30+
<div class="text-muted fw-bolder">MOTD: TVWB 0.5v released!</div>
31+
<div class="text-muted">
32+
<i>tradingview-webhooks-bot is <b>not</b> affiliated with TradingView.com</i>
33+
<br>follow development <a href="https://www.twitter.com/robswc" class="link-secondary">@robswc</a>
34+
on <i class="fa-brands fa-twitter fs-5 pe-3 text-muted"></i>
35+
</div>
36+
</div>
37+
</div>
38+
<div style="border-bottom: whitesmoke 2px dashed;"></div>
39+
</div>
40+
41+
<div class="row mb-3">
42+
<h1><i class="fa-solid fa-user-gear pe-3 text-muted"></i>Settings</h1>
43+
<div class="col-lg-12">
44+
<div class="accordion accordion-flush" id="accordionFlushExample">
45+
<div class="accordion-item">
46+
<h2 class="accordion-header" id="flush-headingOne">
47+
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
48+
data-bs-target="#flush-collapseOne" aria-expanded="false"
49+
aria-controls="flush-collapseOne">
50+
<div class="d-flex align-items-center gap-2">
51+
<div>Registered Actions</div>
52+
<div class="text-muted small">({{ action_list|length }})</div>
53+
</div>
54+
</button>
55+
</h2>
56+
<div id="flush-collapseOne" class="accordion-collapse collapse" aria-labelledby="flush-headingOne"
57+
data-bs-parent="#accordionFlushExample">
58+
<div class="accordion-body">
59+
{% if action_list %}
60+
{% for action in action_list %}
61+
<div class="card shadow-sm mb-2">
62+
<div class="card-body">
63+
<div class="d-flex align-items-center justify-content-between">
64+
<div class="d-flex align-items-center">
65+
<i class="fa-brands fa-python fs-3 pe-3 text-muted"></i>
66+
{{ action.name }}
67+
</div>
68+
<i class="fa-solid fa-circle-check fs-3 text-success"></i>
69+
</div>
70+
</div>
71+
</div>
72+
{% endfor %}
73+
{% else %}
74+
<div class="text-muted p-2">
75+
<div class="fs-3">No <code>actions</code> are currently registered.</div>
76+
<p><a href="">See how to register actions</a> on our GitHub Wiki.</p>
77+
</div>
78+
{% endif %}
79+
</div>
80+
</div>
81+
</div>
82+
<div class="accordion-item">
83+
<h2 class="accordion-header" id="flush-headingTwo">
84+
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
85+
data-bs-target="#flush-collapseTwo" aria-expanded="false"
86+
aria-controls="flush-collapseTwo">
87+
<div class="d-flex align-items-center gap-2">
88+
<div>Registered Events</div>
89+
<div class="text-muted small">({{ event_list|length }})</div>
90+
</div>
91+
</button>
92+
</h2>
93+
<div id="flush-collapseTwo" class="accordion-collapse collapse" aria-labelledby="flush-headingTwo"
94+
data-bs-parent="#accordionFlushExample">
95+
<div class="accordion-body">
96+
{% if event_list %}
97+
{% for event in event_list %}
98+
<div class="card shadow-sm">
99+
<div class="card-body">
100+
<div class="d-flex align-items-center justify-content-between">
101+
<div class="d-flex align-items-center gap-4">
102+
<div class='d-flex align-items-center'>
103+
<i class="fa-brands fa-python fs-3 pe-3 text-muted"></i>
104+
<div>{{ event.name }}</div>
105+
</div>
106+
<div>
107+
<details>
108+
<summary class="text-muted small">details</summary>
109+
<div class='d-flex flex-column gap-2 ps-3 ms-1 border-start border-light'>
110+
<div class="p-3 bg-light shadow-sm">
111+
<div class='fs-4'>Triggers</div>
112+
{% for action in event._actions %}
113+
<div class='d-flex align-items-center'>
114+
<div class="fw-bolder">{{ action }}</div>
115+
<div class="ms-2 text-muted">: action</div>
116+
</div>
117+
{% endfor %}
118+
</div>
119+
<div class="p-3 bg-light shadow-sm">
120+
<div class='fs-4'>Key</div>
121+
<div>
122+
<code id="{{ key }}-field">{{ event.key }}</code>
123+
<button
124+
onclick="copyToClipboard('#{{ key }}-field')"
125+
class="btn btn-sm ms-2 px-2 py-1 shadow-sm"
126+
>
127+
128+
<i class="fa-solid fa-copy"></i>
129+
</button>
130+
</div>
131+
</div>
132+
</div>
133+
</details>
134+
</div>
135+
</div>
136+
<div>
137+
<i class="fa-solid fa-circle-check fs-3 text-success"></i>
138+
</div>
139+
</div>
140+
</div>
141+
</div>
142+
{% endfor %}
143+
{% else %}
144+
<div class="text-muted p-2">
145+
<div class="fs-3">No <code>events</code> are currently registered.</div>
146+
<p><a href="">See how to register events</a> on our GitHub Wiki.</p>
147+
</div>
148+
{% endif %}
149+
</div>
150+
</div>
151+
</div>
152+
<div class="accordion-item">
153+
<h2 class="accordion-header" id="flush-headingThree">
154+
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
155+
data-bs-target="#flush-collapseThree" aria-expanded="false"
156+
aria-controls="flush-collapseThree">
157+
Registered Schemas
158+
</button>
159+
</h2>
160+
<div id="flush-collapseThree" class="accordion-collapse collapse"
161+
aria-labelledby="flush-headingThree"
162+
data-bs-parent="#accordionFlushExample">
163+
<div class="accordion-body">
164+
<div class="row">
165+
<p class="text-muted">
166+
Schemas can make reading data from Tradingview easier!
167+
<a href="https://www.github.com" class="link-secondary">(Read more about schemas on
168+
the Wiki)</a>
169+
Below are the schemas that have been registered in <code>settings.py</code>
170+
from here, you can copy and paste the generated JSON into your tradingview webhook.
171+
</p>
172+
</div>
173+
<div class="row">
174+
{% for k, v in schema_list.items() %}
175+
<div class="col-4">
176+
<div class="card shadow-sm">
177+
<div class="card-body">
178+
<span class="fs-3 pe-2">{{ k }}</span><span
179+
class="text-muted">(JSON)</span>
180+
<pre class="json-snippet bg-dark text-light">
181+
<code>
182+
{{ v }}
183+
</code>
184+
</pre>
185+
</div>
186+
</div>
187+
</div>
188+
{% endfor %}
189+
</div>
190+
</div>
191+
</div>
192+
</div>
193+
</div>
194+
</div>
195+
</div>
196+
<div class="row mb-3">
197+
<h1><i class="fa-solid fa-chart-area pe-3 text-muted"></i>Monitoring</h1>
198+
</div>
199+
<div class="row">
200+
<div class="col-lg-6 h-100">
201+
<div class="p-1 text-muted fs-3">Graph</div>
202+
<div class="card h-100 shadow-sm">
203+
<div class="card-body h-100">
204+
{# <div id="metricsTest"></div>#}
205+
<div class="text-muted text-center">More features coming soon!</div>
206+
</div>
207+
</div>
208+
</div>
209+
<div class="col-lg-6 h-100">
210+
<div class="p-1 text-muted fs-3">Logs</div>
211+
<div class="card h-100 shadow-sm">
212+
<div class="card-body">
213+
<div id="logContainer"></div>
214+
</div>
215+
</div>
216+
</div>
217+
</div>
218+
</div>
219+
220+
<script>
221+
var data = [
222+
{
223+
x: ['giraffes', 'orangutans', 'monkeys'],
224+
y: [20, 14, 23],
225+
type: 'bar'
226+
}
227+
];
228+
229+
Plotly.newPlot('metricsTest', data);
230+
</script>
231+
<script>
232+
$('.json-snippet').each(function () {
233+
const jsonText = $(this).children().text();
234+
console.log(jsonText)
235+
const jsonObj = JSON.parse(jsonText)
236+
console.log(jsonObj)
237+
$(this).html(library.json.prettyPrint(jsonObj));
238+
});
239+
</script>
240+
<script>
241+
function copyToClipboard(element) {
242+
var $temp = $("<input>");
243+
$("body").append($temp);
244+
$temp.val($(element).text()).select();
245+
document.execCommand("copy");
246+
$temp.remove();
247+
}
248+
</script>
249+
<div class="beta-border-bottom"></div>
250+
<div class="beta-border-top"></div>
251+
<div class="beta-tag">
252+
TVWB BETA v{{ version }}
253+
</div>
254+
</body>
255+
</html>

0 commit comments

Comments
 (0)