mirror of https://git.48k.eu/ogcp
WIP Make scopes tree async
parent
d029df8e84
commit
20935966ef
|
@ -3,6 +3,18 @@ const macs = new Map();
|
|||
const Interval = 1000;
|
||||
let updateTimeoutId = null;
|
||||
|
||||
async function buildScopesTree() {
|
||||
const resp = await fetch('/ogservers');
|
||||
const servers = await resp.json();
|
||||
const scopes = document.getElementById("scopes")
|
||||
|
||||
for (const s of servers) {
|
||||
const resp = await fetch('/scopes-tree?server=' + s);
|
||||
const htmlText = await resp.text();
|
||||
scopes.innerHTML += htmlText;
|
||||
}
|
||||
}
|
||||
|
||||
async function show_client_mac(pill_id) {
|
||||
const pill = $('#' +pill_id);
|
||||
const ip = pill.html().split('<br>')[1]
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
{% macro scopes_tree_collapse(scopes, state='', selection_mode='scopes') -%}
|
||||
{% macro scopes_tree_collapse(state='', selection_mode='scopes') -%}
|
||||
|
||||
<ul id="scopes" class="nav ogcp-nav flex-column nav-pills">
|
||||
{{ scopes_tree_collapse_level(scopes["scope"], "", "", state, selection_mode) }}
|
||||
</ul>
|
||||
<ul id="scopes" class="nav ogcp-nav flex-column nav-pills"></ul>
|
||||
<script>
|
||||
// Launch the javascript on document ready, so all the global functions exists
|
||||
// in the scope
|
||||
|
@ -18,6 +16,7 @@
|
|||
{% elif selection_mode == 'scopes' %}
|
||||
limitCheckboxes();
|
||||
{% endif %}
|
||||
buildScopesTree();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block sidebar %}
|
||||
{{ macros.scopes_tree_collapse(scopes, sidebar_state, 'scopes') }}
|
||||
{{ macros.scopes_tree_collapse(sidebar_state, 'scopes') }}
|
||||
{% endblock %}
|
||||
|
||||
{% block commands %}
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
{% import "macros.html" as macros %}
|
||||
{{ macros.scopes_tree_collapse_level(scopes["scope"], '', '', '', 'scopes') }}
|
|
@ -237,6 +237,27 @@ def get_server_from_ip_port(str_ip_port):
|
|||
raise Exception('Server with address ' + str_ip_port + 'is not configured')
|
||||
|
||||
|
||||
def get_scopes_from_server(server):
|
||||
r = server.get('/scopes')
|
||||
server_scope = {}
|
||||
server_scope['name'] = server.name
|
||||
server_scope['type'] = "server"
|
||||
server_scope['server_ip_port'] = (server.ip + ":" + str(server.port))
|
||||
server_scope.update(r.json())
|
||||
list_scopes = []
|
||||
list_scopes.append(server_scope)
|
||||
scopes = {'scope': list_scopes}
|
||||
if current_user.scopes:
|
||||
allowed_scopes = []
|
||||
get_allowed_scopes(scopes, allowed_scopes)
|
||||
scopes = {'scope': allowed_scopes}
|
||||
r = server.get('/clients')
|
||||
clients = r.json()
|
||||
add_state_and_ips(scopes, clients['clients'], set())
|
||||
|
||||
return scopes
|
||||
|
||||
|
||||
def get_scopes(ips=set()):
|
||||
list_scopes = []
|
||||
responses = multi_request('get', '/scopes')
|
||||
|
@ -410,11 +431,28 @@ def get_client_mac():
|
|||
return jsonify(pretty_mac)
|
||||
|
||||
|
||||
@app.route('/ogservers', methods=['GET'])
|
||||
@login_required
|
||||
def get_ogservers():
|
||||
servers_list = [s.ip + ':' + str(s.port) for s in servers]
|
||||
resp = jsonify(servers_list)
|
||||
return resp
|
||||
|
||||
|
||||
@app.route('/scopes-tree', methods=['GET'])
|
||||
@login_required
|
||||
def scopes_tree():
|
||||
params = request.args.to_dict()
|
||||
server = get_server_from_ip_port(params['server'])
|
||||
scopes = get_scopes_from_server(server)
|
||||
return render_template('tree.html', scopes=scopes)
|
||||
|
||||
|
||||
@app.route('/scopes/')
|
||||
@login_required
|
||||
def scopes():
|
||||
scopes, clients = get_scopes()
|
||||
return render_template('scopes.html', scopes=scopes, clients=clients)
|
||||
return render_template('scopes.html')
|
||||
|
||||
|
||||
@app.route('/action/poweroff', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
|
|
Loading…
Reference in New Issue