blob: e35becff2a43d51680603e0f56d67da53c5879a8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
*******************************************************************************/
function getCommand() {
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
};
}
var cmds = [];
cmds = document.querySelector("#command_field").value.split(" ");
var cleanCmd = "";
if (document.querySelector("#details_img").getAttribute("class") == "selected")
cleanCmd += "set details=true ";
for (var i = 0; i < cmds.length;i++) {
var trimmed = cmds[i].trim();
if (trimmed != "")
cleanCmd += trimmed + " ";
}
return cleanCmd.trim();
}
function moveCommandToDiv() {
var textInput = document.querySelector("#command_field");
var content = document.createTextNode(textInput.value);
var parContent = document.createElement("p");
var consoleDiv = document.querySelector("#console_area");
var commandCount = consoleDiv.querySelectorAll(".command").length;
parContent.setAttribute("class", "command");
parContent.appendChild(content);
consoleDiv.appendChild(parContent);
textInput.value = "";
}
function printResponse(response) {
var parContent = document.createElement("p");
parContent.setAttribute("class", "response");
var preTag = document.createElement("pre");
parContent.appendChild(preTag);
var content = document.createTextNode(response);
preTag.appendChild(content);
var consoleDiv = document.querySelector("#console_area");
consoleDiv.appendChild(parContent);
consoleDiv.scrollTop = consoleDiv.scrollHeight;
}
function clearHistory() {
var consoleDiv = document.querySelector("#console_area");
var curr;
while (curr=consoleDiv.firstChild) {
consoleDiv.removeChild(curr);
}
document.querySelector("#command_field").value = "";
currentCmd = 0;
}
function buttonChangeFontSize(direction) {
var slider = document.querySelector("#text_size_slider");
var currentSize = parseInt(slider.value);
var newSize;
if (direction == "inc") {
newSize = currentSize + 10;
} else {
newSize = currentSize - 10;
}
if (newSize > slider.max) newSize = parseInt(slider.max);
if (newSize < slider.min) newSize = parseInt(slider.min);
slider.value = newSize;
changeFontSize(newSize);
}
function changeFontSize(size) {
var consoleDiv = document.querySelector("#console_area");
consoleDiv.style.fontSize = size + "%";
}
function handleDivHiding(id, img) {
var options_link = document.querySelector("#options_link");
var divHeight = toggleVisibility(document.querySelector("#"+id));
if (id == 'options') {
if (options_link.getAttribute("class") == "open") {
changeImg(document.querySelector("#options_img"), "../../theme/options_down.png");
options_link.setAttribute("class", "closed");
} else {
changeImg(document.querySelector("#options_img"), "../../theme/options_up.png");
options_link.setAttribute("class", "open");
}
moveToggleImg(options_link, divHeight);
} else { //id=text_slider
selectOption(img,divHeight);
}
}
function selectOption(img, divHeight) {
var options_link = document.querySelector("#options_link");
var anySelected;
if (img.getAttribute("class") != "selected") {
anySelected = document.querySelectorAll(".selected").length>0;
if (anySelected == false)
divHeight += 4;
img.setAttribute("class", "selected");
} else {
img.setAttribute("class", "");
anySelected = document.querySelectorAll(".selected").length>0;
if (anySelected == false)
divHeight -= 4;
}
moveToggleImg(options_link, divHeight);
}
function toggleVisibility(element) {
var divHeight;
if(element.style.display == 'block') {
divHeight = 0 - element.clientHeight;
element.style.display = 'none';
} else {
element.style.display = 'block';
divHeight = element.clientHeight;
}
return divHeight;
}
function moveToggleImg(element, height) {
var curTop = (element.style.top == "" ? 0 : parseInt(element.style.top));
element.style.top = curTop + height;
}
function changeImg(img, loc) {
img.src = loc;
}
var currentCmd = 0;
function keyPressed() {
document.querySelector("#command_field").onkeyup=function(e) {
if (!e) e = window.event;
var keyCode = e.which || e.keyCode;
if (keyCode == 38 || keyCode == 40 || keyCode == 13 || keyCode == 27) {
var cmdHistoryList = document.querySelectorAll(".command");
switch (keyCode) {
case 13:
// press enter
if (getCommand().toLowerCase()=="clear") {
clearHistory();
} else {
currentCmd = cmdHistoryList.length + 1;
document.querySelector("#submit").click();
}
break;
case 27:
//press escape
currentCmd = cmdHistoryList.length;
document.querySelector("#command_field").value = "";
break;
case 38:
// press arrow up
if (currentCmd != 0)
currentCmd -= 1;
if (cmdHistoryList.length != 0)
document.querySelector("#command_field").value = cmdHistoryList[currentCmd].innerHTML;
break;
case 40:
// press arrow down
var cmdText = "";
currentCmd = (currentCmd == cmdHistoryList.length) ? currentCmd : currentCmd + 1;
if (currentCmd < cmdHistoryList.length)
cmdText = cmdHistoryList[currentCmd].innerHTML;
document.querySelector("#command_field").value = cmdText;
break;
}
}
}
}
function saveToFile() {
var commands = document.querySelectorAll(".command");
var responses = document.querySelectorAll(".response");
var textToWrite = "";
for (var i = 0; i < commands.length; i++) {
textToWrite += "> " + commands[i].innerHTML + "\r\n";
textToWrite += prettyResponse(responses[i].firstChild.innerHTML);
}
var ie = navigator.userAgent.match(/MSIE\s([\d.]+)/);
var ie11 = navigator.userAgent.match(/Trident\/7.0/) && navigator.userAgent.match(/rv:11/);
var ieVer=(ie ? ie[1] : (ie11 ? 11 : -1));
// if (ie && ieVer<10) {
// console.log("No blobs on IE ver<10");
// return;
// }
var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
var fileName = "AAFcommands.log";
if (ieVer >= 10) {
// window.navigator.msSaveBlob(textFileAsBlob, fileName);
window.navigator.msSaveOrOpenBlob(textFileAsBlob, fileName);
} else {
var downloadLink = document.createElement("a");
downloadLink.download = fileName;
downloadLink.innerHTML = "Download File";
if (window.webkitURL != null) {
// Chrome allows the link to be clicked
// without actually adding it to the DOM.
downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
} else {
// Firefox requires the link to be added to the DOM
// before it can be clicked.
downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
downloadLink.onclick = destroyClickedElement;
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
}
downloadLink.click();
}
}
function prettyResponse(response) {
var lines = response.split('\n');
var cleanResponse = "";
for (var i=0; i < lines.length; i++) {
cleanResponse += lines[i] + "\r\n";
}
cleanResponse = cleanResponse.replace(/(&lt;)/g,"<").replace(/(&gt;)/g,">");
return cleanResponse;
}
function destroyClickedElement(event){
document.body.removeChild(event.target);
}
function fakePlaceholder() {
document.querySelector("#command_field").setAttribute("value", "Type your AAFCLI commands here");
}
function maximizeConsole(img) {
var footer = document.querySelector("#footer");
var console_area = document.querySelector("#console_area");
var content = document.querySelector("#content");
var input_area = document.querySelector("#input_area");
var help_msg = document.querySelector("#help_msg");
var console_space = document.documentElement.clientHeight;
console_space -= input_area.outerHeight;
console_space -= help_msg.outerHeight;
var height = getStyle(console_area,'paddingTop') + getStyle(console_area,'paddingBottom');
console_space -= height;
if (content.getAttribute("class") != "maximized") {
content.setAttribute("class", "maximized");
footer.style.display="none";
console_area.style.resize="none";
console_area.style.height=console_space.toString()+"px";
} else {
content.removeAttribute("class");
footer.style.display="";
console_area.style.resize="vertical";
console_area.style.height="300px";
}
selectOption(img,0);
}