aboutsummaryrefslogtreecommitdiff
path: root/public/js/queueRenderer.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/js/queueRenderer.js')
-rw-r--r--public/js/queueRenderer.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/public/js/queueRenderer.js b/public/js/queueRenderer.js
new file mode 100644
index 0000000..ae06531
--- /dev/null
+++ b/public/js/queueRenderer.js
@@ -0,0 +1,87 @@
+var getQueueRenderer = function () {
+ return new QueueRenderer();
+};
+var QueueRenderer = (function () {
+ function QueueRenderer() {
+ }
+ QueueRenderer.prototype.createTextDiv = function (className, value) {
+ var element = document.createElement("div");
+ element.className = className;
+ element.innerHTML = value;
+ return element;
+ };
+ QueueRenderer.prototype.createButton = function (value, callback) {
+ var element = document.createElement("button");
+ element.className = "table-row-button";
+ element.innerHTML = value;
+ element.addEventListener("click", callback);
+ return element;
+ };
+ QueueRenderer.prototype.createQueueRow = function (file, queueSettings) {
+ var itemRow = document.createElement("div");
+ itemRow.id = file.guid;
+ itemRow.className = "table-row-item";
+ this.renderQueueRowContent(itemRow, file, queueSettings);
+ return itemRow;
+ };
+ QueueRenderer.prototype.translateFileStatus = function (file) {
+ console.log(file)
+ console.log(pu)
+ switch (file.uploadStatus.toString()) {
+ case pu.UploadStatus.queued:
+ return "Queued";
+ case pu.UploadStatus.uploading:
+ return "Uploading";
+ case pu.UploadStatus.uploaded:
+ return "Uploaded";
+ case pu.UploadStatus.failed:
+ return "Failed";
+ case pu.UploadStatus.canceled:
+ return "Canceled";
+ }
+ return "Unknown";
+ };
+ QueueRenderer.prototype.renderQueueRowContent = function (itemRow, file, queueSettings) {
+ while (itemRow.firstChild)
+ itemRow.removeChild(itemRow.firstChild);
+ itemRow.appendChild(this.createTextDiv('table-row-item-status', this.translateFileStatus(file)));
+ itemRow.appendChild(this.createTextDiv('table-row-item-name', file.name));
+ itemRow.appendChild(this.createTextDiv('table-row-item-progress', file.progress.toString() + "%"));
+ switch (file.uploadStatus.toString()) {
+ case pu.UploadStatus.queued:
+ if (!queueSettings.autoStart) {
+ itemRow.appendChild(this.createButton("Start", function () { return file.start(); }));
+ break;
+ }
+ case pu.UploadStatus.uploading:
+ itemRow.appendChild(this.createButton("Cancel", function () { return file.cancel(); }));
+ break;
+ case pu.UploadStatus.uploaded:
+ case pu.UploadStatus.failed:
+ case pu.UploadStatus.canceled:
+ itemRow.appendChild(this.createButton("Delete", function () { return file.remove(); }));
+ break;
+ }
+ };
+ QueueRenderer.prototype.renderItemProgress = function (queueId, file) {
+ var itemRow = document.getElementById(file.guid);
+ for (var i = 0; i < itemRow.childNodes.length; i++) {
+ var node = itemRow.childNodes[i];
+ if (node.attributes.getNamedItem('class').value == 'table-row-item-progress') {
+ node.textContent = file.progress.toString() + "%";
+ break;
+ }
+ }
+ };
+ QueueRenderer.prototype.renderQueue = function (queueId, queueTitle, files, queueSettings) {
+ var _this = this;
+ var queue = document.getElementById(queueId);
+ while (queue.firstChild)
+ queue.removeChild(queue.firstChild);
+ queue.appendChild(this.createTextDiv("table-header-title", queueTitle));
+ files.forEach(function (file) {
+ queue.appendChild(_this.createQueueRow(file, queueSettings));
+ });
+ };
+ return QueueRenderer;
+})();