JD2022-TU1/data/EngineData/JustDash.gadget/js/script.js

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 ) )();
}
}
}
};