219 lines
No EOL
5.7 KiB
JavaScript
219 lines
No EOL
5.7 KiB
JavaScript
this.Dash = this.Dash || {} ;
|
|
|
|
/**
|
|
* Entry point
|
|
*/
|
|
Dash.main = function()
|
|
{
|
|
// hide code or data container
|
|
if(Dash.conf.widgetType == Dash.TYPE_CODE)
|
|
document.getElementById("data-container").style.display = "none";
|
|
else if (Dash.conf.widgetType == Dash.TYPE_DATA)
|
|
document.getElementById("code-container").style.display = "none";
|
|
|
|
// display background
|
|
if (Dash.conf.widgetType == Dash.TYPE_CODE_AND_DATA)
|
|
{
|
|
document.getElementById("dash-bg").src = Dash.conf.bgSrc;
|
|
document.getElementById("body").className = "body-double";
|
|
}
|
|
else
|
|
{
|
|
document.getElementById("dash-bg").src = Dash.conf.bgSimpleSrc;
|
|
document.getElementById("body").className = "body-simple";
|
|
}
|
|
|
|
// get branches from server
|
|
Dash.get(Dash.conf["branchUrl"], function(branches)
|
|
{
|
|
// display branches
|
|
var select = '<select id="branch" name="branch" onchange="Dash.refresh()">';
|
|
for(var i = 0 , size = branches.length; i < size ; i++)
|
|
{
|
|
var branch = branches[i];
|
|
select += '<option value="' + branch.idBranch + '" ' + (branch.selected ? 'selected="selected"': '') + '>' + branch.name + '</option>';
|
|
}
|
|
select += '</select>';
|
|
document.getElementById("branch-container").innerHTML += select;
|
|
|
|
// Schedule refresh
|
|
setInterval(function(){
|
|
Dash.refresh();
|
|
}, Dash.conf.refreshDelay);
|
|
|
|
// init display
|
|
Dash.refresh();
|
|
|
|
// show application
|
|
document.getElementById("overall").style.display = "block";
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Refresh application display
|
|
*/
|
|
Dash.refresh = function()
|
|
{
|
|
var url = Dash.conf[Dash.conf.widgetType + "Url"];
|
|
|
|
// add branch param in the url
|
|
var selectedBranch = document.getElementById("branch").value;
|
|
url += "/" + selectedBranch;
|
|
|
|
// refresh links
|
|
var links = document.getElementsByTagName("a");
|
|
var branchName = Dash.getSelectedBranchName();
|
|
for(var i = 0 , l = links.length ; i <l ; i++)
|
|
{
|
|
var link = links[i];
|
|
if(link.className == "code-link") link.href = Dash.conf.linkCodeUrl + "?branch=" + branchName;
|
|
if(link.className == "data-link") link.href = Dash.conf.linkDataUrl + "?branch=" + branchName;
|
|
}
|
|
|
|
Dash.get(url, function(response){
|
|
|
|
// -------------------- CODE --------------------
|
|
|
|
if(typeof response.code != "undefined")
|
|
{
|
|
var build = response.code;
|
|
|
|
// get HTML Elements
|
|
var codeStateEl = document.getElementById("code-state");
|
|
var codeClEl = document.getElementById("code-cl");
|
|
var codeErrorEl = document.getElementById("code-error");
|
|
|
|
// display Change list
|
|
codeClEl.innerHTML = build.changeList;
|
|
// display state
|
|
codeStateEl.className = "state " +((build.status == "success") ? "success": "error");
|
|
|
|
if(build.error)
|
|
{
|
|
codeErrorEl.innerHTML = build.error;
|
|
codeErrorEl.style.display = "block";
|
|
}
|
|
else
|
|
{
|
|
codeErrorEl.style.display = "none";
|
|
}
|
|
|
|
// show
|
|
document.getElementById("dashcode-with-data").style.display = "block";
|
|
document.getElementById("dashcode-without-data").style.display = "none";
|
|
}
|
|
else
|
|
{
|
|
// display "no data"
|
|
document.getElementById("dashcode-with-data").style.display = "none";
|
|
document.getElementById("dashcode-without-data").style.display = "block";
|
|
}
|
|
|
|
// -------------------- DATA --------------------
|
|
|
|
if(typeof response.data != "undefined")
|
|
{
|
|
var vg = response.data;
|
|
// get HTML Elements
|
|
var dataStateEl = document.getElementById("data-state");
|
|
var dataClEl = document.getElementById("data-cl");
|
|
var engineClEl = document.getElementById("engine-cl");
|
|
var dataErrorEl = document.getElementById("data-error");
|
|
|
|
// display Change list
|
|
dataClEl.innerHTML = vg.dataCl;
|
|
engineClEl.innerHTML = vg.engineCl;
|
|
// display state
|
|
dataStateEl.className = "state " +((vg.dataBuildSuccess) ? "success": "error");
|
|
if(vg.error)
|
|
{
|
|
dataErrorEl.innerHTML = vg.error;
|
|
dataErrorEl.style.display = "block";
|
|
}
|
|
else
|
|
{
|
|
dataErrorEl.style.display = "none";
|
|
}
|
|
|
|
// show
|
|
document.getElementById("dashdata-with-data").style.display = "block";
|
|
document.getElementById("dashdata-without-data").style.display = "none";
|
|
}
|
|
else
|
|
{
|
|
// display "no data"
|
|
document.getElementById("dashdata-with-data").style.display = "none";
|
|
document.getElementById("dashdata-without-data").style.display = "block";
|
|
}
|
|
|
|
});
|
|
};
|
|
|
|
Dash.getSelectedBranchName = function()
|
|
{
|
|
var select = document.getElementById("branch");
|
|
return select.options[select.selectedIndex].text;
|
|
}
|
|
|
|
/**
|
|
* Make a GET request
|
|
*
|
|
* @param {string} url URL
|
|
* @param {Function} success Callback when success
|
|
* @param {Function} error Callback when error
|
|
* @return {object}
|
|
*/
|
|
Dash.get = function(url, success, error)
|
|
{
|
|
ajax = new ActiveXObject("Msxml2.XMLHTTP");
|
|
ajax.open("GET", url, true);
|
|
ajax.onreadystatechange = function() {
|
|
if(ajax.readyState == 4)
|
|
{
|
|
var response = Dash.parseJSON(ajax.responseText)
|
|
|
|
if(ajax.status == 200)
|
|
if(success) success(response);
|
|
else
|
|
if(error) error(response);
|
|
}
|
|
};
|
|
ajax.send(null);
|
|
};
|
|
|
|
/**
|
|
* Convert text to JSON object
|
|
*
|
|
* @param {string} data Json text
|
|
* @return {object}
|
|
*/
|
|
Dash.parseJSON = function( data )
|
|
{
|
|
var rvalidchars = /^[\],:{}\s]*$/;
|
|
var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
|
|
var rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g;
|
|
var rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g;
|
|
|
|
// Attempt to parse using the native JSON parser first
|
|
if ( window.JSON && window.JSON.parse ) {
|
|
return window.JSON.parse( data );
|
|
}
|
|
|
|
if ( data === null ) {
|
|
return data;
|
|
}
|
|
|
|
if ( typeof data === "string" ) {
|
|
|
|
if ( data ) {
|
|
// Make sure the incoming data is actual JSON
|
|
// Logic borrowed from http://json.org/json2.js
|
|
if ( rvalidchars.test( data.replace( rvalidescape, "@" )
|
|
.replace( rvalidtokens, "]" )
|
|
.replace( rvalidbraces, "")) ) {
|
|
|
|
return ( new Function( "return " + data ) )();
|
|
}
|
|
}
|
|
}
|
|
}; |