Skip to content
Snippets Groups Projects
Commit aeb3e1e8 authored by shinedday's avatar shinedday
Browse files

Add offline canvas

parent d6d87b39
Branches
Tags
No related merge requests found
No preview for this file type
...@@ -9,6 +9,53 @@ ...@@ -9,6 +9,53 @@
<title>Play - IOTAMAK</title> <title>Play - IOTAMAK</title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript">
window.addEventListener('load', eventWindowLoaded, false);
function eventWindowLoaded() {
canvasApp();
}
function canvasApp() {
var metrics = {{metrics}};
var cycle = 0;
theCanvas = document.getElementById('canvasOne');
context = theCanvas.getContext('2d');
function erraseCanvas() {
context.clearRect(0,0,theCanvas.width,theCanvas.height);
}
function drawScreen () {
erraseCanvas();
var count = metrics[cycle].length;
for (let id_agent = 0; id_agent<count; id_agent++){
context.fillStyle = "#000000";
context.beginPath();
context.arc(metrics[cycle][id_agent][0],metrics[cycle][id_agent][1],15,0,Math.PI*2,true);
context.closePath();
context.fill();
}
}
function gameLoop() {
if (cycle < metrics.length) {
window.setTimeout(gameLoop, 20);
drawScreen();
cycle = cycle + 1 ;
}
}
gameLoop();
}
</script>
</head> </head>
<body> <body>
...@@ -51,5 +98,9 @@ ...@@ -51,5 +98,9 @@
<button type='submit'> Load</button> <button type='submit'> Load</button>
</form> </form>
<canvas id="canvasOne" width="500" height="500" style="border:1px solid #000000;">
Your browser does not support the HTML 5 Canvas.
</canvas>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -7,7 +7,7 @@ from subprocess import Popen ...@@ -7,7 +7,7 @@ from subprocess import Popen
from time import sleep from time import sleep
from django.conf import settings from django.conf import settings
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
from django.template import loader from django.template import loader
from django.urls import reverse from django.urls import reverse
from iotAmak.tool.ssh_client import Cmd from iotAmak.tool.ssh_client import Cmd
...@@ -40,10 +40,16 @@ def agent_metric(client, userdata, message) -> None: ...@@ -40,10 +40,16 @@ def agent_metric(client, userdata, message) -> None:
metric = Metrics(experiment_name=exp.name, cycle=exp.cycle, agent_id=agent_id, metrics=result) metric = Metrics(experiment_name=exp.name, cycle=exp.cycle, agent_id=agent_id, metrics=result)
metric.save() metric.save()
def cycle_done(client, userdata, message) -> None:
cur_exp = CurrentExperiment.objects.all()[0]
cur_exp.cycle += 1
cur_exp.save()
def update_nbr_agent(client, userdata, message) -> None: def update_nbr_agent(client, userdata, message) -> None:
exp = CurrentExperiment.objects.all()[0] exp = CurrentExperiment.objects.all()[0]
subscribe(client, "agent/"+str(exp.nbr_agent)+"/metric", agent_metric) subscribe(client, "agent/"+str(exp.nbr_agent)+"/metric", agent_metric)
subscribe(client, "scheduler/cycledone", cycle_done)
exp.nbr_agent += 1 exp.nbr_agent += 1
exp.save() exp.save()
...@@ -101,10 +107,19 @@ def experiment_start(request): ...@@ -101,10 +107,19 @@ def experiment_start(request):
p3 = Popen([sys.executable, experiment_path+'/env.py', broker_ip]) p3 = Popen([sys.executable, experiment_path+'/env.py', broker_ip])
return HttpResponseRedirect(reverse('ping:play')) return HttpResponseRedirect(reverse('ping:play'))
def main_play(request): def main_play(request):
cycle = CurrentExperiment.objects.all()[0].cycle
metrics = []
for i in range(cycle):
# get all the agent 0 metrics
raw_context = Metrics.objects.filter(cycle=i)
cycle_metrics = [[metric.metrics.get("x"), metric.metrics.get("y")] for metric in raw_context]
metrics.append(cycle_metrics)
template = loader.get_template('ping/play.html') template = loader.get_template('ping/play.html')
context = {} context = {"metrics": metrics}
return HttpResponse(template.render(context, request)) return HttpResponse(template.render(context, request))
......
...@@ -7,8 +7,8 @@ from iotAmak.agent import Agent ...@@ -7,8 +7,8 @@ from iotAmak.agent import Agent
class Ant(Agent): class Ant(Agent):
def __init__(self, identifier: int, broker_ip: str): def __init__(self, identifier: int, broker_ip: str):
self.x = 0 self.x = 250
self.y = 0 self.y = 250
super().__init__(identifier, broker_ip) super().__init__(identifier, broker_ip)
def on_act(self) -> None: def on_act(self) -> None:
......
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment