Commit d41268e1 authored by Sebastien Robin's avatar Sebastien Robin

display throughput in the user interface

parent b174b9b8
...@@ -48,6 +48,7 @@ def setSimulationParameters(): ...@@ -48,6 +48,7 @@ def setSimulationParameters():
box_to_enable_list = [1, 2, 3, 7, 8, 9] box_to_enable_list = [1, 2, 3, 7, 8, 9]
available_people_list = [x for x in parameter_dict if parameter_dict[x]] available_people_list = [x for x in parameter_dict if parameter_dict[x]]
to_enable = len(available_people_list) >= 6 to_enable = len(available_people_list) >= 6
throughput = None
for box in model["box_list"]: for box in model["box_list"]:
box["worker"] = None box["worker"] = None
box["enabled"] = False box["enabled"] = False
...@@ -55,6 +56,12 @@ def setSimulationParameters(): ...@@ -55,6 +56,12 @@ def setSimulationParameters():
box["enabled"] = to_enable box["enabled"] = to_enable
if to_enable: if to_enable:
box["worker"] = available_people_list.pop() box["worker"] = available_people_list.pop()
if throughput is None:
throughput = box["throughput"]
throughput = min(throughput, box["throughput"])
if throughput is None:
throughput = 0
model["throughput"] = throughput
return "ok" return "ok"
@app.route("/getModel", methods=["GET", "OPTIONS"]) @app.route("/getModel", methods=["GET", "OPTIONS"])
......
...@@ -86,6 +86,16 @@ body { ...@@ -86,6 +86,16 @@ body {
border-radius: 10px; border-radius: 10px;
} }
#total_throughput {
position: absolute;
width: 100px;
height: 80px;
border: 2px solid;
margin-top: 135px;
margin-left: 720px;
border-radius: 10px;
}
/* Setting for dialog */ /* Setting for dialog */
label, input { display:block; } label, input { display:block; }
...@@ -198,3 +208,13 @@ path, ._jsPlumb_endpoint { cursor:pointer; } ...@@ -198,3 +208,13 @@ path, ._jsPlumb_endpoint { cursor:pointer; }
._jsPlumb_endpoint._jsPlumb_hover { ._jsPlumb_endpoint._jsPlumb_hover {
z-index:22 !important; z-index:22 !important;
} }
._jsPlumb_overlay {
border:1px solid #346789;
opacity:0.8;
filter:alpha(opacity=80);
background-color:white;
color:black;
font-family:helvetica;
padding:0.5em;
}
...@@ -21,7 +21,11 @@ ...@@ -21,7 +21,11 @@
<ul> <ul>
</ul> </ul>
</div> </div>
</div> <div id="total_throughput">
Throughput
<h2></h2>
</div>
</div>
<div id="sidebar"> <div id="sidebar">
<div id="explanation"> <div id="explanation">
<p>This is a demonstration of Flowchart combined with simulation.</p> <p>This is a demonstration of Flowchart combined with simulation.</p>
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
// listen for clicks on connections, and offer to change values on click. // listen for clicks on connections, and offer to change values on click.
jsPlumb.bind("click", function(conn, originalEvent) { jsPlumb.bind("click", function(conn, originalEvent) {
console.log("user click connection", conn); console.log("user click connection", conn);
dialog_connection = conn; priv.dialog_connection = conn;
$( "#dialog-form" ).dialog( "open" ); $( "#dialog-form" ).dialog( "open" );
}); });
...@@ -65,8 +65,7 @@ ...@@ -65,8 +65,7 @@
priv.initDialog = function() { priv.initDialog = function() {
var throughput = $( "#throughput" ), var throughput = $( "#throughput" ),
allFields = $( [] ).add( throughput ), allFields = $( [] ).add( throughput ),
tips = $( ".validateTips" ), tips = $( ".validateTips" );
dialog_connection;
function updateTips( t ) { function updateTips( t ) {
tips tips
...@@ -113,7 +112,7 @@ ...@@ -113,7 +112,7 @@
if ( bValid ) { if ( bValid ) {
console.log("new value is ok...", throughput.val()); console.log("new value is ok...", throughput.val());
console.log("dialog_connection", dialog_connection); console.log("dialog_connection", priv.dialog_connection);
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
...@@ -161,7 +160,9 @@ ...@@ -161,7 +160,9 @@
j_length = box.target_list.length; j_length = box.target_list.length;
for (j=0; j < j_length; j++) { for (j=0; j < j_length; j++) {
console.log("in dream, jsPlumb.connect", box.id, box.target_list[j]); console.log("in dream, jsPlumb.connect", box.id, box.target_list[j]);
line = jsPlumb.connect({source:box.id, target: box.target_list[j], label: "foo"}); line = jsPlumb.connect({source:box.id, target: box.target_list[j],
labelStyle : { cssClass:"component label" }});
//, label: box.throughput.toString()});
// Example to change line color // Example to change line color
// line.setPaintStyle({strokeStyle:"#42a62c", lineWidth:2 }); // line.setPaintStyle({strokeStyle:"#42a62c", lineWidth:2 });
} }
...@@ -235,6 +236,18 @@ ...@@ -235,6 +236,18 @@
}); });
}; };
priv.updateConnectionLabel = function (source_id, target_id, title) {
var connection_array, i, i_length, connection;
connection_array = jsPlumb.getConnections({source: source_id, target: target_id});
i_length = connection_array.length;
for (i = 0; i < i_length; i++) {
connection = connection_array[i];
if (connection.getLabel() !== title) {
connection.setLabel(title);
}
}
};
priv.updateModel = function (success) { priv.updateModel = function (success) {
var refreshGraph = function(model) { var refreshGraph = function(model) {
//console.log("model", model); //console.log("model", model);
...@@ -254,8 +267,15 @@ ...@@ -254,8 +267,15 @@
} else { } else {
priv.updateBoxStyle(box.id, {"background-color": "#FF0000"}); priv.updateBoxStyle(box.id, {"background-color": "#FF0000"});
} }
// Update content of the box
priv.updateBoxContent(box.id, box.title, box.worker); priv.updateBoxContent(box.id, box.title, box.worker);
// Update the label
if (box.target_list !== undefined) {
priv.updateConnectionLabel(box.id, box.target_list[0], box.throughput.toString());
};
} }
// Refresh total throughput value
$("#total_throughput h2").text(model.throughput.toString());
}; };
priv.getModel(refreshGraph); priv.getModel(refreshGraph);
}; };
......
(function($) { (function($) {
"use strict";
jsPlumb.bind("ready", function() { jsPlumb.bind("ready", function() {
var graph_data = {}, dream_instance, available_people = {}, people_list, var graph_data = {}, dream_instance, available_people = {}, people_list,
i, i_length; i, i_length;
graph_data.throughput = 0;
graph_data.box_list = [ graph_data.box_list = [
{id: 'window1', title: 'attach1', target_list: ['window2'], coordinate: {top: 5, left: 5}}, {id: 'window1', title: 'attach1', throughput: 23, target_list: ['window2'], coordinate: {top: 5, left: 5}},
{id: 'window2', title: 'attach2', target_list: ['window3'], coordinate: {top: 5, left: 15}}, {id: 'window2', title: 'attach2', throughput: 21, target_list: ['window3'], coordinate: {top: 5, left: 15}},
{id: 'window3', title: 'attach3', target_list: ['window7'], coordinate: {top: 5, left: 25}}, {id: 'window3', title: 'attach3', throughput: 23, target_list: ['window7'], coordinate: {top: 5, left: 25}},
{id: 'window4', title: 'attach1', target_list: ['window5'], coordinate: {top: 20, left: 5}}, {id: 'window4', title: 'attach1', throughput: 22, target_list: ['window5'], coordinate: {top: 20, left: 5}},
{id: 'window5', title: 'attach2', target_list: ['window6'], coordinate: {top: 20, left: 15}}, {id: 'window5', title: 'attach2', throughput: 23, target_list: ['window6'], coordinate: {top: 20, left: 15}},
{id: 'window6', title: 'attach3', target_list: ['window7'], coordinate: {top: 20, left: 25}}, {id: 'window6', title: 'attach3', throughput: 23, target_list: ['window7'], coordinate: {top: 20, left: 25}},
{id: 'window7', title: 'Moulding', target_list: ['window8', 'window10'], coordinate: {top: 12, left: 35}}, {id: 'window7', title: 'Moulding', throughput: 40, target_list: ['window8', 'window10'], coordinate: {top: 12, left: 35}},
{id: 'window8', title: 'tests', target_list: ['window9'], coordinate: {top: 5, left: 45}}, {id: 'window8', title: 'tests', throughput: 23, target_list: ['window9'], coordinate: {top: 5, left: 45}},
{id: 'window9', title: 'packaging', coordinate: {top: 5, left: 55}}, {id: 'window9', title: 'packaging', throughput: 23, coordinate: {top: 5, left: 55}},
{id: 'window10', title: 'tests', target_list: ['window11'], coordinate: {top: 20, left: 45}}, {id: 'window10', title: 'tests', throughput: 23, target_list: ['window11'], coordinate: {top: 20, left: 45}},
{id: 'window11', title: 'packaging', coordinate: {top: 20, left: 55}}, {id: 'window11', title: 'packaging', throughput: 23, coordinate: {top: 20, left: 55}},
]; ];
dream_instance = DREAM.newDream(graph_data); dream_instance = DREAM.newDream(graph_data);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment