blob: 768435b1b9ea92ea8becb69f0b64ccad9f2ffd40 [file] [log] [blame]
// Copyright (c) 2000-2017 Ericsson Telecom AB //
// All rights reserved. This program and the accompanying materials are made available under the //
// terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at //
// http://www.eclipse.org/legal/epl-v10.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function ServerBrowser_View(p_viewmodel) {
"use strict";
var HTML = "WebApplications/ServerBrowser/View.html";
var CSS = "WebApplications/ServerBrowser/View.css";
var CSSNodeId = "WebAppStyle";
var v_mainId = "servercontainer";
var v_mainSelector = '#' + v_mainId;
var v_viewmodel = p_viewmodel;
var v_this = this;
this.init = function(p_callback) {
var mainDiv = document.createElement("div");
mainDiv.setAttribute("id", v_mainId);
$("#TSGuiFrameworkMain").append(mainDiv);
function htmlLoaded(ok, data) {
if (ok) {
$(v_mainSelector).append(data);
// View's HTML fragment loaded, now go for the CSS.
v_viewmodel.loadCss(CSSNodeId, CSS);
// Load files of the root dir
fillPanel('/', 'leftlist');
fillPanel('/', 'rightlist');
p_callback(true);
} else {
p_callback(false, "Error loading " + HTML);
}
}
v_viewmodel.loadFile(HTML, htmlLoaded);
};
this.destroy = function() {
$(v_mainSelector).remove();
};
this.applicationCreated = function(request) {
};
function fillPanel(path, p_id) {
v_viewmodel.ls(path, function(d) {
var dirs = d.sort(sortLs);
var v_ul = document.createElement('ul');
var v_idSelector = '#' + p_id;
if (path !== "/") {
var v_liup = document.createElement('li');
v_liup.setAttribute('path', pathOneUp(path));
v_liup.setAttribute('filetype', "-d");
v_liup.innerHTML = "..";
v_ul.appendChild(v_liup);
}
for (var k in dirs) {
if (dirs.hasOwnProperty(k)) {
var v_li = document.createElement('li');
var v_value = dirs[k];
if (v_value.fileName[0] != "/")
v_value.fileName = "/" + v_value.fileName;
if (v_value.fileName.endsWith("/"))
v_value.fileName = v_value.fileName.slice(0, -1);
var v_displayname = v_value.fileName.substr(v_value.fileName.lastIndexOf('/') + 1);
v_li.setAttribute('path', v_value.fileName);
v_li.setAttribute('filetype', v_value.contentType);
if (v_value.contentType.endsWith("d"))
v_li.innerHTML = "<span class='name'>" + v_displayname + "</span>";
else if (v_value.contentType.endsWith("f"))
v_li.innerHTML = "<span class='name'>" + v_displayname + "</span><span class='size'>" + v_value.size + "</span><span class='time'>" + (new Date(v_value.timestamp * 1000)).toISOString() + "</span>";
else
v_li.innerHTML = v_value.contentType + ": <span class='name'>" + v_displayname + "</span><span class='size'>" + v_value.size + "</span><span class='time'>" + (new Date(v_value.timestamp * 1000)).toISOString() + "</span>";
v_ul.appendChild(v_li);
}
}
$('ul', v_idSelector).remove();
$(v_idSelector, v_mainSelector).siblings(".bread").text(path);
$(v_idSelector, v_mainSelector).append(v_ul);
$('ul', v_idSelector).off('click', 'li', onItemClick);
$('ul', v_idSelector).on('click', 'li', onItemClick);
});
}
function onItemClick(event) {
var v_parentId = event.currentTarget.parentElement.parentElement.id;
var v_newpath = event.currentTarget.getAttribute('path');
var v_filetype = event.currentTarget.getAttribute('filetype');
if (v_filetype.endsWith("d")) {
fillPanel(v_newpath, v_parentId);
} else {
download(v_newpath.substr(v_newpath.lastIndexOf("/")+1), v_newpath);
}
return false;
}
function sortLs(a, b) {
var isDirA = (a.contentType.endsWith("d")), isDirB = (b.contentType.endsWith("d"));
// Directories first.
if (isDirA && !isDirB) {
return -1;
} else if (isDirB && !isDirA) {
return 1;
} else {
return a.fileName.localeCompare(b.fileName);
}
}
function pathOneUp(path) {
if (path.slice(-1) == "/")
path = path.slice(0, -1);
return path.substr(0, path.lastIndexOf("/") + 1);
}
function download(filename, path) {
var element = document.createElement('a');
element.setAttribute('href', path);
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
}
//# sourceURL=ServerBrowser\View.js