Browse Source

Open/pending positions number display

master
Denis Tereshkin 9 years ago
parent
commit
9aaf1f7153
  1. 22
      templates/dashboard/overview.html
  2. 24
      views.py

22
templates/dashboard/overview.html

@ -2,19 +2,23 @@
{% block content %} {% block content %}
<div class="panel-group"> <div class="panel-group">
{% for index, instanceId, state, positions, last_store in robot_states %} {% for entry in robot_states %}
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading" id="heading-{{instanceId}}"> <div class="panel-heading" id="heading-{{entry.instance_id}}">
<a role="button" data-toggle="collapse" href="#collapse-{{index}}"> <a role="button" data-toggle="collapse" href="#collapse-{{entry.index}}">
{{ instanceId }} {{ entry.instance_id }}
{% if last_store %}<div class="pull-right"><span class="badge">{{ last_store }}</span></div>{% endif %} <div class="pull-right">
{% if entry.open_pos_counter > 0 %} <span class="label label-primary">{{ entry.open_pos_counter }}</span> {% endif %}
{% if entry.pending_pos_counter > 0 %} <span class="label label-warning">{{ entry.pending_pos_counter }}</span> {% endif %}
{% if entry.last_store %}<span class="badge">{{ entry.last_store }}</span>{% endif %}
</div>
</a> </a>
</div> </div>
<div id="collapse-{{index}}" class="panel-collapse collapse"> <div id="collapse-{{entry.index}}" class="panel-collapse collapse">
<div class="panel-body"> <div class="panel-body">
<pre>{{ state }}</pre> <pre>{{ entry.state }}</pre>
{% for position in positions %} {% for position in entry.positions %}
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-body"> <div class="panel-body">
<p>State: {{ position.posState.tag }} </p> <p>State: {{ position.posState.tag }} </p>
@ -39,7 +43,7 @@
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
<a class="btn btn-danger" href="{% url 'delete_instance' instanceId %}">Delete</a> <a class="btn btn-danger" href="{% url 'delete_instance' entry.instance_id %}">Delete</a>
</div> </div>
</div> </div>
</div> </div>

24
views.py

@ -16,22 +16,38 @@ def overview(request):
robot_states = [] robot_states = []
index = 0 index = 0
for robot in robot_instances: for robot in robot_instances:
entry = {}
raw_state = r.get(robot.instanceId) raw_state = r.get(robot.instanceId)
if raw_state is not None: if raw_state is not None:
state = json.loads(str(raw_state, 'utf-8')) state = json.loads(str(raw_state, 'utf-8'))
try: try:
positions = state['positions'] entry['positions'] = state['positions']
del state['positions'] del state['positions']
except KeyError: except KeyError:
positions = dict() entry['positions'] = dict()
else: else:
state = dict() state = dict()
open_pos_counter = 0
pending_pos_counter = 0
for pos in entry['positions']:
if pos['posState']['tag'] == 'PositionOpen':
open_pos_counter += 1
elif pos['posState']['tag'] == 'PositionWaitingOpen':
pending_pos_counter += 1
entry['open_pos_counter'] = open_pos_counter
entry['pending_pos_counter'] = pending_pos_counter
entry['state'] = json.dumps(state, sort_keys=True, indent=2, separators=(',', ': '))
last_store = r.get(robot.instanceId + ":last_store") last_store = r.get(robot.instanceId + ":last_store")
if last_store is not None: if last_store is not None:
last_store = datetime.datetime.utcfromtimestamp(float(str(last_store, 'utf-8')[:-1])) entry['last_store'] = datetime.datetime.utcfromtimestamp(float(str(last_store, 'utf-8')[:-1]))
index += 1 index += 1
robot_states.append((index, robot.instanceId, json.dumps(state, sort_keys=True, indent=2, separators=(',', ': ')), positions, last_store)) entry['index'] = index
entry['instance_id'] = robot.instanceId
robot_states.append(entry)
template = loader.get_template('dashboard/overview.html') template = loader.get_template('dashboard/overview.html')
context = { context = {

Loading…
Cancel
Save