";
html += "
";
html += "
";
if (text != null){
html += text;
}
html += "
";
return this.htmlStringToObject(html);
},
changeBoxColor: function (id, newColor){
var box = $(id);
if (box != null){
var type =box.getAttribute("type");
if ("shadowbox" == type)
box = box.firstChild;
box.style.backgroundColor= newColor;
if ("shadowbox" == type)
$(id).style.filter = "shadow(color:gray, direction=135)";
}
},
getBoxCanvas: function(box){
var type =box.getAttribute("type");
if ("box" == type)
return box.firstChild;
else if ("shadowbox" == type)
return box.firstChild.firstChild;
else
return box;
},
g_dialogs:{},
createDialog: function(id, dataGetter){
var dialog = this.g_dialogs[id];
if (dialog == null){
dialog = new _F_pipeline.ui.dockableDialog(id, dataGetter);
this.g_dialogs[id] = dialog;
}else {
dialog.dataGetter = dataGetter;
}
return dialog;
},
showDialog: function(id){
var dialog = this.g_dialogs[id];
if (dialog != null){
dialog.show();
}
},
hideDialog: function(id){
var dialog = this.g_dialogs[id];
if (dialog != null){
dialog.hide();
}
},
updateDialogs: function(){
for (var id in this.g_dialogs){
var dialog = this.g_dialogs[id];
if (dialog.isShowing())
dialog.show();
}
}
}
}
_F_pipeline.ui.dockingManager = function(){
this.widthOffest = 0;
this.heightOffest = 0;
this.dockingOrder = [];
}
_F_pipeline.ui.dockingManager.constants = {LEFT_DOCK_WIDTH:550,RIGHT_DOCK_WIDTH:450, BOTTOM_DOCK_HEIGHT:300};
_F_pipeline.ui.dockingManager.areas = {
bottom:{x:0,
y:-1 * _F_pipeline.ui.dockingManager.constants.BOTTOM_DOCK_HEIGHT,
dx:-1,
dy:-1},
left:{ x:0,
y:0,
dx:_F_pipeline.ui.dockingManager.constants.LEFT_DOCK_WIDTH,
dy:-1},
right:{
x:-1 * _F_pipeline.ui.dockingManager.constants.RIGHT_DOCK_WIDTH,
y:0,
dx:-1,
dy:-1},
content:{
x:0,
y:0,
dx:-1,
dy:-1}
};
_F_pipeline.ui.dockingManager.prototype = {
getCoordinates:function(dock){
var cod= _F_pipeline.ui.dockingManager.areas[dock];
if (cod != null){
var calculatedCod = new Object();
calculatedCod.x = cod.x < 0 ? xClientWidth() + cod.x: cod.x;
calculatedCod.y = cod.y < 0 ? xClientHeight() + cod.y: cod.y;
calculatedCod.dx = cod.dx < 0 ? xClientWidth() + cod.dx: cod.dx;
calculatedCod.dy = cod.dy < 0 ? xClientHeight() + cod.dy: cod.dy;
var index = _F_Array.indexOf(this.dockingOrder, dock);
if (index == -1 )
index = this.dockingOrder.length;
for (var i = 0 ; i< index; i++){
var c = this.getCoordinates(this.dockingOrder[i]);
if ( this.dockingOrder[i] != "bottom"){
calculatedCod.x = calculatedCod.x >= c.x && calculatedCod.x <= c.dx ? c.dx +1 : calculatedCod.x;
calculatedCod.dx = calculatedCod.dx >= c.x && calculatedCod.dx <= c.dx ? c.x -1 : calculatedCod.dx;
}else{
calculatedCod.y = calculatedCod.y >= c.y && calculatedCod.y <= c.dy ? c.dy +1 : calculatedCod.y;
calculatedCod.dy = calculatedCod.dy >= c.y && calculatedCod.dy <= c.dy ? c.y -1 : calculatedCod.dy;
}
}
return calculatedCod;
}
return null;
},
dock: function(where, viewId, animation){
if (animation == null)
var animation = true;
var dialogObject = _F_pipeline.ui.g_dialogs[viewId];
var previousDock = dialogObject.docked;
var found = false;
for (var id in _F_pipeline.ui.g_dialogs){
var d = _F_pipeline.ui.g_dialogs[id].dialog;
if (dialogObject == d)
continue;
if (previousDock == d.docked){
found = true;
break
}
}
if (!found && _F_Array.indexOf(this.dockingOrder, previousDock) != -1){
this.dockingOrder.splice(_F_Array.indexOf(this.dockingOrder, previousDock), 1);
}
if (!this.isDocked(where) && where != "restore")
this.dockingOrder[this.dockingOrder.length] = where;
var content = $("dock_view_content");
if (content == null){
var node = document.body;
content = _F_pipeline.ui.div(null, "dock_view_content");
content.style.overflow="auto";
content.style.position ="absolute";
var nodes = node.childNodes;
var children=[];
var count = 0;
for (var i=0;i
");
this.dialog.minDialogWidth=100;
var btn = $(dlg_id + "btn" + ui_dialog.button["CLOSEBOX"]);
if (btn != null){
xAddEventListener(btn, "click", function(){_self.hide()});
}
}
_F_pipeline.ui.dockableDialog.prototype={
hide: function(){this.dialog.hide();this.dockingManager.dock("restore", this.id, false)},
show: function(){
var data = null;
if (this.dataGetter != null){
try {data = this.dataGetter()} catch(e){};
}
if (data != null)
data.update(this);
this.dialog.show();
},
isShowing:function(){
return this.dialog.dlg.style.display!="none";
},
setContent: function(content){
if (content != null){
if (typeof content == 'string')
$(this.id + "dock_content").innerHTML=content;
else{
$(this.id + "dock_content").innerHTML="";
$(this.id + "dock_content").appendChild(content);
}
}
},
setTitle: function(title){
if (title != null){
this.dialog.setCaption(title +" - " + _F_pipeline.utils.getTime());
}
},
dock: function(where, step){
var dlg_id = "dock_"+this.id;
var obj = this.dialog;
if (step == null){
step = _F_pipeline.constants.DOCK_ANIMATION_STEPS;
}
if (where != "restore" && this.docked=="restore"){
this.restoreHeight = xHeight(this.dialog.dlg);
this.restoreWidth = xWidth(this.dialog.dlg);
this.restoreX = this.dialog.x;
this.restoreY = this.dialog.y;
}
var cod = this.dockingManager.getCoordinates(where);
var newHeight = cod != null ? cod.dy - cod.y : this.restoreHeight;
var newWidth = cod != null ? cod.dx - cod.x : this.restoreWidth;
var newTop = cod != null ? cod.y : this.restoreY;
var newLeft = cod != null ? cod.x : this.restoreX;
var ox = obj.x;
var oy = obj.y;
var oheight = xHeight(obj.dlg);
var owidth = xWidth(obj.dlg);
obj.lastX = ox;
obj.lastY=oy;
obj.startX = ox;
obj.startY=oy;
if (step > 1){
obj.onresize({ xdlg:obj},
Math.floor((newWidth - owidth )/ step),
Math.floor((newHeight - oheight )/ step));
obj.onmove({ xdlg:obj,
xDPX:ox + Math.floor((newLeft - ox )/ step),
xDPY:oy + Math.floor((newTop - oy )/ step)
});
setTimeout("_F_pipeline.ui.g_dialogs['" + this.id+ "'].dock('"+where+"',"+ (step-1) +")",1);
}else{
obj.onresize({ xdlg:obj},
newWidth - owidth,
newHeight - oheight);
obj.onmove({ xdlg:obj,
xDPX:newLeft,
xDPY:newTop
});
this.docked = where;
this.dockingManager.updateContent();
if ("restore" == where)
xEnableDrag($(dlg_id+"caption"),obj.onstartmove, obj.onmove, null);
else
xDisableDrag($(dlg_id+"caption"));
}
}
}
_F_pipeline.execution = function(obj){
this.id = obj.id;
this.name = obj.name;
this.outputs = [];
this.params = [];
this.paramsBefore = [];
this.processes = [];
}
_F_pipeline.execution.prototype = {
getId: function(){
return this.id;
},
getName: function(){
return this.name;
},
getOutputs: function(){
return this.outputs;
},
getOutput: function(label){
var length = this.outputs.length;
for (var i = 0; i< length; i++){
var output = this.outputs[i];
if (label == output.getLabel()){
return output;
}
}
return null;
},
getParams: function(){
return this.params;
},
getParamInitialValues: function(){
return this.paramsBefore;
},
getParam: function(name){
var length = this.params.length;
for (var i = 0; i< length; i++){
var param = this.params[i];
if (name == param.getName()){
return param;
}
}
return null;
},
getParamInitialValue: function(name){
var length = this.paramsBefore.length;
for (var i = 0; i< length; i++){
var param = this.paramsBefore[i];
if (name == param.getName()){
return param;
}
}
return null;
},
getProcess: function(name){
var length = this.processes.length;
for (var i = 0; i< length; i++){
var process = this.processes[i];
if (name == process.getName()){
return process;
}
}
return null;
},
getProcesses: function(){
return this.processes;
},
addParam: function(obj){
obj.process = this;
this.params.push(obj);
},
addParamInitialValue: function(obj){
obj.process = this;
this.paramsBefore.push(obj);
},
addProcess: function(obj){
obj.execution = this;
this.processes.push(obj);
},
addOutput: function(obj){
this.outputs.push(obj);
},
getDisplayName:function(){
return this.getName();
},
getResolver: function(){
var id = this.id;
return function(){
return _F_pipeline.getExecution(id);
}
}
}
_F_pipeline.process = function(obj){
this.execution = obj.execution;
this.name = obj.name;
this.className = obj.className;
this.params = [];
this.paramsBefore = []
this.outputs= [];
this.inputs=[];
this.traces=[];
}
_F_pipeline.process.prototype = {
getId: function(){
return this.execution.getId() +"_process_"+ this.name;
},
getName: function(){
return this.name;
},
getExecution: function(){
return this.execution;
},
getParams: function(){
return this.params;
},
getParamInitialValues: function(){
return this.paramsBefore;
},
getOutputs: function(){
return this.outputs;
},
getInputs: function(){
return this.inputs;
},
getTraces: function(){
return this.traces;
},
addParam: function(param){
param.process = this;
this.params.push(param);
},
addOutput: function(output){
output.process = this;
this.execution.addOutput(output);
this.outputs.push(output);
},
addTrace: function(trace){
trace.process = this;
trace.name = trace.name + " (trace"+(this.traces.length+1)+")";
this.traces.push(trace);
},
addInput: function(input){
input.process = this;
var output = input.getOutput();
if (output != null)
output.addConsumer(this);
this.inputs.push(input);
},
getOutput: function(label){
var length = this.outputs.length;
for (var i = 0; i< length; i++){
var output = this.outputs[i];
if (label == output.getLabel()){
return output;
}
}
return null;
},
getParam: function(name){
var length = this.params.length;
for (var i = 0; i< length; i++){
var param = this.params[i];
if (name == param.getName()){
return param;
}
}
return null;
},
getTrace: function(name){
var length = this.traces.length;
for (var i = 0; i< length; i++){
var trace = this.traces[i];
if (name == trace.getName()){
return trace;
}
}
return null;
},
getParamInitialValue: function(name){
var length = this.paramsBefore.length;
for (var i = 0; i< length; i++){
var param = this.paramsBefore[i];
if (name == param.getName()){
return param;
}
}
return null;
},
addParamInitialValue: function(obj){
obj.process = this;
this.paramsBefore.push(obj);
},
getInput: function(label){
var length = this.inputs.length;
for (var i = 0; i< length; i++){
var input = this.inputs[i];
if (label == input.getLabel()){
return input;
}
}
return null;
},
getDisplayName:function(){
return this.getName();
},
getResolver: function(){
var parentResolver = this.execution.getResolver();
var name = this.name;
return function(){
return parentResolver().getProcess(name);
}
}
}
_F_pipeline.param = function(obj)
{
this.process = obj.process;
this.name = obj.name;
this.content = obj.content;
this.initialValue = obj.initialValue;
}
_F_pipeline.param.prototype = {
getId: function(){
return this.process.getId() +"_param_"+ this.name + (this.initialValue ? "_before" : "_after");
},
getName:function(){
return this.name;
},
getContent:function(){
return this.content;
},
getProcess: function(){
return this.process;
},
update: function(dialog){
dialog.setContent(_F_pipeline.utils.xmlToHtml(this.getContent()));
dialog.setTitle(this.process.getDisplayName() + " - " + this.getDisplayName() +" parameter "+ (this.initialValue ? "(before execution)" : "(after execution)"));
},
getDisplayName:function(){
return this.getName();
},
getResolver: function(){
var parentResolver = this.process.getResolver();
var name = this.name;
var initialValue = this.initialValue;
return function(){
if (initialValue)
return parentResolver().getParamInitialValue(name);
else
return parentResolver().getParam(name);
}
}
}
_F_pipeline.trace = function(obj)
{
this.process = obj.process;
this.name = obj.name;
this.content = obj.content;
}
_F_pipeline.trace.prototype = {
getId: function(){
return this.process.getId() +"_trace_"+ this.name;
},
getName:function(){
return this.name;
},
getContent:function(){
return this.content;
},
getProcess: function(){
return this.process;
},
update: function(dialog){
dialog.setContent(_F_pipeline.utils.xmlToHtml(this.getContent()));
dialog.setTitle(this.process.getDisplayName() + " - " + this.getDisplayName());
},
getDisplayName:function(){
return this.getName().replace("_"," ").replace("_"," ") ;
},
getResolver: function(){
var parentResolver = this.process.getResolver();
var name = this.name;
return function(){
return parentResolver().getTrace(name);
}
}
}
_F_pipeline.output = function(obj){
this.label = obj.label;
this.name = obj.name;
this.process = obj.process;
this.content = obj.content;
this.consumers=[];
}
_F_pipeline.output.prototype = {
getId: function(){
return this.process.getId() + "_param_"+ this.getLabel();
},
getLabel: function(){
return this.label;
},
getName: function(){
return this.name;
},
getContent: function(){
return this.content;
},
getProcess: function(){
return this.process;
},
addConsumer: function(obj){
this.consumers.push(obj);
},
getConsumers:function(){
return this.consumers;
},
update: function(dialog){
dialog.setContent(_F_pipeline.utils.xmlToHtml(this.getContent()));
dialog.setTitle(this.process.getDisplayName() + " - " + this.getDisplayName() +" Output");
},
getDisplayName:function(){
return this.getName() + (this.getContent() == "NULL" ? " (NULL)" : "");
},
getResolver: function(){
var parentResolver = this.process.getResolver();
var label = this.getLabel();
return function(){
return parentResolver().getOutput(label);
}
}
}
_F_pipeline.input = function(obj){
this.name = obj.name;
this.label = obj.label;
this.process = obj.process;
this.content = obj.content;
}
_F_pipeline.input.prototype = {
getId: function(){
return this.process.getId()+ "_input_" + this.getLabel();
},
getContent: function(){
if (this.label != null && this.label != ""){
return this.process.getExecution().getOutput(this.label).getContent();
}
return this.content;
},
getProcess: function(){
return this.process;
},
getName: function(){
return this.name;
},
getLabel: function(){
return (this.label != null && this.label != "") ? this.label : this.getName();
},
getOutput: function(){
if (this.label != null && this.label != ""){
return this.process.execution.getOutput(this.label);
}
return null;
},
getProducer: function(){
var output = this.getOutput();
return output != null ? output.getProcess(): null;
}
,
update: function(dialog){
dialog.setContent(_F_pipeline.utils.xmlToHtml(this.getContent()));
dialog.setTitle(this.process.getDisplayName() + " - " +this.getName() +" Input");
},
getDisplayName:function(){
return this.getName() + (this.getContent() == "NULL" ? "( NULL)" : "");;
},
getResolver: function(){
var parentResolver = this.process.getResolver();
var label = this.getLabel();
return function(){
return parentResolver().getInput(label);
}
}
}
_F_pipeline.view = {
constants :{
UI_PARAM_INPUT_COLOR : "#666699",
UI_PARAM_OUTPUT_COLOR : "#666699",
UI_OUTPUT_COLOR : "#778899",
UI_TRACE_COLOR : "gray",
UI_INPUT_COLOR : "#99aacc",
UI_PROCESS_COLOR : "#336699",
UI_PIPELINE_COLOR : "silver",
UI_SELECTED_COLOR : "336600",
UI_RELATED_COLOR : "660033",
UI_RELATED_EQUAL_COLOR : "669900"
}
};
_F_pipeline.view.pipelineView = function(executionId){
this.executionId = executionId;
}
_F_pipeline.view.pipelineView.prototype = {
getId: function(){
return this.executionId +"_view";
},
getUI:function(){
return this.getPipelineUI();
},
getPipelineUI:function(){
var UI_HEIGHT = "";
var UI_WIDTH = "";
var execution = _F_pipeline.getExecution(this.executionId);
var UI_ID = execution.getId() +"pipeline_box";
var box = _F_pipeline.ui.createBox(UI_ID, execution.getDisplayName(),_F_pipeline.view.constants.UI_PIPELINE_COLOR,UI_HEIGHT, UI_WIDTH, _F_pipeline.constants.CSS_THUMBNAIL, _F_pipeline.constants.CSS_THUMBNAIL_BOX);
var canvas = _F_pipeline.ui.getBoxCanvas(box);
var table = _F_pipeline.ui.table(0,5,0,"");
canvas.appendChild(table);
table.id=UI_ID +"processtable";
table.align="center";
var processes = execution.getProcesses();
var length = processes.length;
for (var i = 0 ; i < length; i++){
this.getProcessUI(processes[i], table);
if (i < length - 1){
var tr = _F_pipeline.ui.tr(table)
var td = _F_pipeline.ui.td(tr)
td.colSpan="10";
td.align = "center";
td.style.padding="30px";
_F_pipeline.ui.img(td,null, "move_down.gif");
}
}
return box;
},
getProcessUI: function(process, table){
var params = process.getParams();
var paramInitialValue = process.getParamInitialValues();
var outputs = process.getOutputs();
var inputs = process.getInputs();
var paramsSize = params.length;
var outputSize = outputs.length;
var inputSize = inputs.length;
var isPipelineRendered = false;
for (var i = 0 ; i < paramsSize; i++){
var tr = _F_pipeline.ui.tr(table)
var td = _F_pipeline.ui.td(tr)
td.appendChild(this.getParamInputUI(paramInitialValue[i], process));
if (!isPipelineRendered){
isPipelineRendered = true;
td = _F_pipeline.ui.td(tr);
td.rowSpan = paramsSize + outputSize;
td.valign="middle";
_F_pipeline.ui.img(td,null, "move_right.gif");
td = _F_pipeline.ui.td(tr);
td.rowSpan = paramsSize + outputSize;
td.width="50";
td.height="100%";
td.appendChild(this.getProcessBoxUI(process));
td = _F_pipeline.ui.td(tr);
td.rowSpan = paramsSize + outputSize;
td.valign="middle";
_F_pipeline.ui.img(td,null, "move_right.gif");
}
td = _F_pipeline.ui.td(tr);
td.appendChild(this.getParamOutputUI(params[i], process));
}
var size = inputSize > outputSize ? inputSize : outputSize;
for (var i = 0 ; i < size; i++){
var tr = _F_pipeline.ui.tr(table)
// before
var td = _F_pipeline.ui.td(tr)
if (i < inputSize){
td.appendChild(this.getInputUI(inputs[i], process));
}
if (!isPipelineRendered){
isPipelineRendered = true;
td = _F_pipeline.ui.td(tr);
td.rowSpan = paramsSize + outputSize;
td.valign="middle";
_F_pipeline.ui.img(td,null, "move_right.gif");
td = _F_pipeline.ui.td(tr);
td.rowSpan = paramsSize + outputSize;
td.width="50";
td.height="100%";
td.appendChild(this.getProcessBoxUI(process));
td = _F_pipeline.ui.td(tr);
td.rowSpan = paramsSize + outputSize;
td.valign="middle";
_F_pipeline.ui.img(td,null, "move_right.gif");
}
td = _F_pipeline.ui.td(tr);
if (i < outputSize){
td.appendChild(this.getOutputUI(outputs[i],process));
}
}
},
getProcessBoxUI: function(process){
var UI_ID = process.getId();
var UI_HEIGHT = "";
var UI_WIDTH = "";
var processBox = _F_pipeline.ui.createBoxWithShadow(UI_ID,process.getDisplayName(), _F_pipeline.view.constants.UI_PROCESS_COLOR, UI_HEIGHT, UI_WIDTH, _F_pipeline.constants.CSS_THUMBNAIL, _F_pipeline.constants.CSS_THUMBNAIL_BOX );
var traces = process.getTraces();
var canvas = _F_pipeline.ui.getBoxCanvas(processBox);
for (var j = 0 ; j < traces.length; j++){
var trace = traces[j];
canvas.appendChild(this.getTraceUI(traces[j], process));
if (j < traces.length -1)
_F_pipeline.ui.div(canvas).style.height="5px";
}
return processBox;
},
getTraceUI:function(trace, process){
var traceBox = _F_pipeline.ui.createBox(trace.getId(),trace.getDisplayName(), _F_pipeline.view.constants.UI_TRACE_COLOR, "", "", _F_pipeline.constants.CSS_THUMBNAIL, _F_pipeline.constants.CSS_THUMBNAIL_BOX );
traceBox.style.cursor = "pointer";
var _self = this;
var DLG_ID =this.getId()+ "_dlg";
xAddEventListener(traceBox, "mouseOver", function(){_self.traceClick(trace)});
xAddEventListener(traceBox, "mouseOut", function(){_self.resetHighlight(); _self.updateHighlight()});
xAddEventListener(traceBox, "click", function(){
_self.traceClick(trace);
var resolver = trace.getResolver();
_self.restoreHighlight = function(){_self.traceClick(resolver());};
_F_pipeline.ui.createDialog(DLG_ID,resolver);
_F_pipeline.ui.showDialog(DLG_ID);
});
return traceBox;
},
getParamInputUI:function(param, process){
var UI_HEIGHT = 20;
var UI_WIDTH = "";
var UI_ID = param.getId();
var DLG_ID =this.getId()+ "_dlg";
var obj = _F_pipeline.ui.createBoxWithShadow(UI_ID, param.getDisplayName(), _F_pipeline.view.constants.UI_PARAM_INPUT_COLOR, UI_HEIGHT, UI_WIDTH, _F_pipeline.constants.CSS_THUMBNAIL, _F_pipeline.constants.CSS_THUMBNAIL_BOX);
obj.style.cursor = "pointer";
var _self = this;
xAddEventListener(obj, "mouseOver", function(){_self.paramClick(param)});
xAddEventListener(obj, "mouseOut", function(){_self.resetHighlight(); _self.updateHighlight()});
xAddEventListener(obj, "click", function(){
var resolver = param.getResolver();
_self.paramClick(param);
_self.restoreHighlight = function(){_self.paramClick(resolver());};
_F_pipeline.ui.createDialog(DLG_ID,resolver);
_F_pipeline.ui.showDialog(DLG_ID);
});
return obj;
},
getParamOutputUI:function(param, process){
var UI_HEIGHT = 20;
var UI_WIDTH = "";
var UI_ID = param.getId();
var DLG_ID =this.getId()+ "_dlg";
var obj = _F_pipeline.ui.createBoxWithShadow(UI_ID, param.getDisplayName(),_F_pipeline.view.constants.UI_PARAM_OUTPUT_COLOR, UI_HEIGHT, UI_WIDTH, _F_pipeline.constants.CSS_THUMBNAIL, _F_pipeline.constants.CSS_THUMBNAIL_BOX);
obj.style.cursor = "pointer";
var _self = this;
xAddEventListener(obj, "mouseOver", function(){_self.paramClick(param)});
xAddEventListener(obj, "mouseOut", function(){_self.resetHighlight(); _self.updateHighlight()});
xAddEventListener(obj, "click", function(){
var resolver = param.getResolver();
_self.paramClick(param);
_self.restoreHighlight = function(){_self.paramClick(resolver());};
_F_pipeline.ui.createDialog(DLG_ID,resolver);
_F_pipeline.ui.showDialog(DLG_ID);
});
return obj;
},
getOutputUI:function(output, process){
var UI_HEIGHT = 30;
var UI_WIDTH = "";
var UI_ID = output.getId();
var DLG_ID =this.getId()+ "_dlg";
var box = _F_pipeline.ui.createBoxWithShadow(UI_ID, output.getDisplayName(), _F_pipeline.view.constants.UI_OUTPUT_COLOR, UI_HEIGHT,UI_WIDTH, _F_pipeline.constants.CSS_THUMBNAIL, _F_pipeline.constants.CSS_THUMBNAIL_BOX);
box.style.cursor = "pointer";
var _self = this;
xAddEventListener(box, "mouseOver", function(){_self.outputClick(output)});
xAddEventListener(box, "mouseOut", function(){_self.resetHighlight(); _self.updateHighlight()});
xAddEventListener(box, "click", function(){
var resolver = output.getResolver();
_self.outputClick(output);
_self.restoreHighlight = function(){_self.outputClick(resolver());}
_F_pipeline.ui.createDialog(DLG_ID,resolver);
_F_pipeline.ui.showDialog(DLG_ID);
});
return box;
},
getInputUI:function(input, process){
var UI_HEIGHT = 30;
var UI_WIDTH = "";
var UI_ID = input.getId();
var DLG_ID =this.getId()+ "_dlg";
var box = _F_pipeline.ui.createBoxWithShadow(UI_ID, input.getDisplayName(), _F_pipeline.view.constants.UI_INPUT_COLOR, UI_HEIGHT,UI_WIDTH, _F_pipeline.constants.CSS_THUMBNAIL, _F_pipeline.constants.CSS_THUMBNAIL_BOX);
box.style.cursor = "pointer";
var _self = this;
xAddEventListener(box, "mouseOver", function(){_self.inputClick(input)});
xAddEventListener(box, "mouseOut", function(){_self.resetHighlight(); _self.updateHighlight()});
xAddEventListener(box, "click", function(){
var resolver = input.getResolver();
_self.inputClick(input);
_self.restoreHighlight = function(){_self.inputClick(resolver());}
_F_pipeline.ui.createDialog(DLG_ID,resolver);
_F_pipeline.ui.showDialog(DLG_ID);
});
return box;
},
resetHighlight:function(){
var execution = _F_pipeline.getExecution(this.executionId);
var plength = execution.processes.length;
for (var h = 0 ; h < plength; h++){
var length = execution.processes[h].outputs.length;
for (var i = 0; i< length; i++){
var output = execution.processes[h].outputs[i];
_F_pipeline.ui.changeBoxColor(output.getId(), _F_pipeline.view.constants.UI_OUTPUT_COLOR);
}
length = execution.processes[h].inputs.length;
for (var i = 0; i< length; i++){
var input = execution.processes[h].inputs[i];
_F_pipeline.ui.changeBoxColor(input.getId(), _F_pipeline.view.constants.UI_INPUT_COLOR);
}
length = execution.processes[h].params.length;
for (var i = 0; i< length; i++){
var param = execution.processes[h].params[i];
_F_pipeline.ui.changeBoxColor(param.getId(), (param.initialValue ? _F_pipeline.view.constants.UI_PARAM_INPUT_COLOR : _F_pipeline.view.constants.UI_PARAM_OUTPUT_COLOR));
}
length = execution.processes[h].paramsBefore.length;
for (var i = 0; i< length; i++){
var param = execution.processes[h].paramsBefore[i];
_F_pipeline.ui.changeBoxColor(param.getId(), (param.initialValue ? _F_pipeline.view.constants.UI_PARAM_INPUT_COLOR : _F_pipeline.view.constants.UI_PARAM_OUTPUT_COLOR));
}
length = execution.processes[h].traces.length;
for (var i = 0; i< length; i++){
var trace = execution.processes[h].traces[i];
_F_pipeline.ui.changeBoxColor(trace.getId(), _F_pipeline.view.constants.UI_TRACE_COLOR);
}
}
},
paramClick:function(param){
this.resetHighlight();
_F_pipeline.ui.changeBoxColor(param.getId(), _F_pipeline.view.constants.UI_SELECTED_COLOR);
if (param.getProcess().getExecution){
var execution = param.getProcess().getExecution();
var processes= execution.getProcesses();
var length = processes.length;
for (var i = 0; i< length; i++){
var process = processes[i];
var paramsIn = process.getParamInitialValues();
var plength = paramsIn.length;
for (var j = 0; j< plength; j++){
if (paramsIn[j] == param)
continue;
if (paramsIn[j].getName() == param.getName())
_F_pipeline.ui.changeBoxColor(paramsIn[j].getId(),paramsIn[j].getContent() == param.getContent()? _F_pipeline.view.constants.UI_RELATED_EQUAL_COLOR : _F_pipeline.view.constants.UI_RELATED_COLOR);
}
var paramsOut = process.getParams();
plength = paramsOut.length;
for (var j = 0; j< plength; j++){
if (paramsOut[j] == param)
continue;
if (paramsOut[j].getName() == param.getName())
_F_pipeline.ui.changeBoxColor(paramsOut[j].getId(), paramsOut[j].getContent() == param.getContent()? _F_pipeline.view.constants.UI_RELATED_EQUAL_COLOR : _F_pipeline.view.constants.UI_RELATED_COLOR);
}
}
}
},
outputClick:function(output){
this.resetHighlight();
_F_pipeline.ui.changeBoxColor(output.getId(), _F_pipeline.view.constants.UI_SELECTED_COLOR);
if (output.getProcess().getExecution){
var execution = output.getProcess().getExecution();
var processes= execution.getProcesses();
var length = processes.length;
for (var i = 0; i< length; i++){
var process = processes[i];
var inputs = process.getInputs();
var plength = inputs.length;
for (var j = 0; j< plength; j++){
if (inputs[j].getLabel() == output.getLabel())
_F_pipeline.ui.changeBoxColor(inputs[j].getId(), _F_pipeline.view.constants.UI_RELATED_EQUAL_COLOR);
}
}
}
},
traceClick:function(trace){
this.resetHighlight();
_F_pipeline.ui.changeBoxColor(trace.getId(), _F_pipeline.view.constants.UI_SELECTED_COLOR);
},
inputClick:function(input){
this.resetHighlight();
_F_pipeline.ui.changeBoxColor(input.getId(), _F_pipeline.view.constants.UI_SELECTED_COLOR);
if (input.getProcess().getExecution){
var execution = input.getProcess().getExecution();
var processes= execution.getProcesses();
var length = processes.length;
for (var i = 0; i< length; i++){
var process = processes[i];
var outputs = process.getOutputs();
var plength = outputs.length;
for (var j = 0; j< plength; j++){
if (outputs[j].getLabel() == input.getLabel())
_F_pipeline.ui.changeBoxColor(outputs[j].getId(), _F_pipeline.view.constants.UI_RELATED_EQUAL_COLOR);
}
var inputs = process.getInputs();
plength = inputs.length;
for (var j = 0; j< plength; j++){
if (inputs[j] == input)
continue;
if (inputs[j].getLabel() == input.getLabel())
_F_pipeline.ui.changeBoxColor(inputs[j].getId(), _F_pipeline.view.constants.UI_RELATED_EQUAL_COLOR);
}
}
}
},
update: function(dialog){
dialog.setContent(this.getUI());
dialog.setTitle(_F_pipeline.getExecution(this.executionId).getName());
this.updateHighlight();
},
updateHighlight: function(dialog){
if (this.restoreHighlight)
this.restoreHighlight();
}
}
_F_pipeline.view.toolbar = function(executionId, name, loader){
this.executionId = executionId;
this.name = name;
this.loader = loader;
this.loaded = false;
if (_F_pipeline.getExecution(executionId) != null)
this.load();
}
_F_pipeline.view.toolbar.prototype = {
getUI: function(){
var viewId = this.getId();
var div = _F_pipeline.ui.div(null, this.getId());
_F_pipeline.ui.text(div, "DEBUG MODE (" + this.name+"): ");
var _self = this;
_F_pipeline.ui.textWithOnclick(div, "Pipeline View", function(){
if (!_self.loaded){
_self.load();
}
DOCKING_MANAGER.dock('left',viewId);
_F_pipeline.ui.showDialog(viewId);
});
return div ;
},
getId: function(){
return this.executionId;
},
load: function(){
if (!this.loaded){
if (this.loader != null)
this.loader();
var viewId = this.getId();
var pipelineView = _F_pipeline.view.views[viewId];
if (pipelineView == null){
pipelineView = new _F_pipeline.view.pipelineView(this.executionId);
_F_pipeline.view.views[viewId] = pipelineView;
}
_F_pipeline.ui.createDialog(viewId, function(){ return pipelineView;});
this.loaded = true;
}
}
}
_F_pipeline.executions = {};
_F_pipeline.view.views = {};
_F_pipeline.getExecution = function(id){
return _F_pipeline.executions[id];
}
_F_pipeline.attach = function(fragment, executionId, loader){
var toolbar = new _F_pipeline.view.toolbar(executionId, fragment.title, loader);
fragment.addEventListener("fragment.load", function(){
$(fragment.id + "debugViewContainer").innerHTML="";
$(fragment.id +"debugViewContainer").appendChild(toolbar.getUI());
_F_pipeline.ui.updateDialogs();
});
}
fragment.prototype.oldRenderURI= fragment.prototype.renderURI;
fragment.prototype.renderURI = function(params){
var p = this.oldRenderURI(params);
if (p.indexOf("?") != -1)
p = p + "&";
else
p = p + "?";
p = p + "frag-debug=fragment";
return p;
}