start working on uploading folders
This commit is contained in:
parent
7d4616a229
commit
62d8ff793b
|
@ -46,14 +46,6 @@ export class FileUpload {
|
||||||
this.using_webkit = true;
|
this.using_webkit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
check_if_exists() {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
var proc = cockpit.spawn(["/usr/share/cockpit/navigator/scripts/fail-if-exists.py3", this.path], {superuser: "try"});
|
|
||||||
proc.done((data) => {resolve(false)});
|
|
||||||
proc.fail((e, data) => {resolve(true)});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
make_html_element() {
|
make_html_element() {
|
||||||
var notification = document.createElement("div");
|
var notification = document.createElement("div");
|
||||||
notification.classList.add("nav-notification");
|
notification.classList.add("nav-notification");
|
||||||
|
|
|
@ -18,8 +18,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {FileUpload} from "./FileUpload.js";
|
import {FileUpload} from "./FileUpload.js";
|
||||||
import { ModalPrompt } from "./ModalPrompt.js";
|
import {ModalPrompt} from "./ModalPrompt.js";
|
||||||
import {NavWindow} from "./NavWindow.js";
|
import {NavWindow} from "./NavWindow.js";
|
||||||
|
import {check_if_exists} from "../functions.js";
|
||||||
|
|
||||||
export class NavDragDrop {
|
export class NavDragDrop {
|
||||||
/**
|
/**
|
||||||
|
@ -82,7 +83,6 @@ export class NavDragDrop {
|
||||||
let path = "";
|
let path = "";
|
||||||
if (item) {
|
if (item) {
|
||||||
let new_uploads = await this.scan_files(item, path);
|
let new_uploads = await this.scan_files(item, path);
|
||||||
console.log(new_uploads);
|
|
||||||
uploads.push(... new_uploads);
|
uploads.push(... new_uploads);
|
||||||
} else {
|
} else {
|
||||||
reject();
|
reject();
|
||||||
|
@ -101,7 +101,7 @@ export class NavDragDrop {
|
||||||
let keepers = [];
|
let keepers = [];
|
||||||
let requests = {};
|
let requests = {};
|
||||||
for (let upload of uploads) {
|
for (let upload of uploads) {
|
||||||
if (!await upload.check_if_exists()) {
|
if (!await check_if_exists(upload.path)) {
|
||||||
keepers.push(upload.filename);
|
keepers.push(upload.filename);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -147,6 +147,7 @@ export class NavDragDrop {
|
||||||
this.drop_area.classList.remove("drag-enter");
|
this.drop_area.classList.remove("drag-enter");
|
||||||
break;
|
break;
|
||||||
case "drop":
|
case "drop":
|
||||||
|
this.nav_window_ref.start_load();
|
||||||
let uploads;
|
let uploads;
|
||||||
let items = e.dataTransfer.items;
|
let items = e.dataTransfer.items;
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
@ -165,6 +166,7 @@ export class NavDragDrop {
|
||||||
if (uploads.length === 0)
|
if (uploads.length === 0)
|
||||||
break;
|
break;
|
||||||
uploads = await this.handle_conflicts(uploads);
|
uploads = await this.handle_conflicts(uploads);
|
||||||
|
this.nav_window_ref.stop_load();
|
||||||
uploads.forEach((upload) => {upload.upload()});
|
uploads.forEach((upload) => {upload.upload()});
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -681,7 +681,7 @@ export class NavWindow {
|
||||||
|
|
||||||
start_load() {
|
start_load() {
|
||||||
document.getElementById("nav-loader-container").style.display = "block";
|
document.getElementById("nav-loader-container").style.display = "block";
|
||||||
var buttons = document.getElementsByTagName("button");
|
var buttons = document.getElementsByClassName("disable-while-loading");
|
||||||
for (let button of buttons) {
|
for (let button of buttons) {
|
||||||
button.disabled = true;
|
button.disabled = true;
|
||||||
}
|
}
|
||||||
|
@ -689,7 +689,7 @@ export class NavWindow {
|
||||||
|
|
||||||
stop_load() {
|
stop_load() {
|
||||||
document.getElementById("nav-loader-container").style.display = "none";
|
document.getElementById("nav-loader-container").style.display = "none";
|
||||||
var buttons = document.getElementsByTagName("button");
|
var buttons = document.getElementsByClassName("disable-while-loading");
|
||||||
for (let button of buttons) {
|
for (let button of buttons) {
|
||||||
button.disabled = false;
|
button.disabled = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,4 +95,17 @@ export function format_permissions(mode) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {string} path
|
||||||
|
* @returns {Promise<boolean>}
|
||||||
|
*/
|
||||||
|
export function check_if_exists(path) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
var proc = cockpit.spawn(["/usr/share/cockpit/navigator/scripts/fail-if-exists.py3", path], {superuser: "try"});
|
||||||
|
proc.done((data) => {resolve(false)});
|
||||||
|
proc.fail((e, data) => {resolve(true)});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -40,13 +40,13 @@
|
||||||
<div class="flex-col outer-container">
|
<div class="flex-col outer-container">
|
||||||
<div class="flex-row nav-header">
|
<div class="flex-row nav-header">
|
||||||
<div class="nav-btn-group">
|
<div class="nav-btn-group">
|
||||||
<button class="pf-c-button pf-m-secondary" id="nav-back-btn" title="Back"><i class="fas fa-arrow-left"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-secondary" id="nav-back-btn" title="Back"><i class="fas fa-arrow-left"></i></button>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<button class="pf-c-button pf-m-secondary" id="nav-forward-btn" title="Forward"><i class="fas fa-arrow-right"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-secondary" id="nav-forward-btn" title="Forward"><i class="fas fa-arrow-right"></i></button>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<button class="pf-c-button pf-m-secondary" id="nav-up-dir-btn" title="Up"><i class="fas fa-arrow-up"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-secondary" id="nav-up-dir-btn" title="Up"><i class="fas fa-arrow-up"></i></button>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<button class="pf-c-button pf-m-secondary" id="nav-refresh-btn" title="Refresh"><i class="fas fa-sync"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-secondary" id="nav-refresh-btn" title="Refresh"><i class="fas fa-sync"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<input type="text" list="possible-paths-list" autocomplete="off" class="navigation-bar" id="pwd" title="Navigation Bar"></input>
|
<input type="text" list="possible-paths-list" autocomplete="off" class="navigation-bar" id="pwd" title="Navigation Bar"></input>
|
||||||
|
@ -59,11 +59,11 @@
|
||||||
<i class="fas fa-search"></i>
|
<i class="fas fa-search"></i>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<div class="nav-btn-group">
|
<div class="nav-btn-group">
|
||||||
<button class="pf-c-button pf-m-primary" id="nav-mkdir-btn" title="New Directory"><i class="fas fa-folder-plus"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-primary" id="nav-mkdir-btn" title="New Directory"><i class="fas fa-folder-plus"></i></button>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<button class="pf-c-button pf-m-primary" id="nav-touch-btn" title="New File"><i class="fas fa-file-medical"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-primary" id="nav-touch-btn" title="New File"><i class="fas fa-file-medical"></i></button>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<button class="pf-c-button pf-m-primary" id="nav-ln-btn" title="New Symbolic Link"><i class="fas fa-link nav-icon-decorated"><i class="fas fa-plus nav-icon-decoration"></i></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-primary" id="nav-ln-btn" title="New Symbolic Link"><i class="fas fa-link nav-icon-decorated"><i class="fas fa-plus nav-icon-decoration"></i></i></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="vertical-spacer"></div>
|
<div class="vertical-spacer"></div>
|
||||||
|
@ -86,9 +86,9 @@
|
||||||
<textarea id="nav-edit-contents-textarea" spellcheck="false"></textarea>
|
<textarea id="nav-edit-contents-textarea" spellcheck="false"></textarea>
|
||||||
<div class="vertical-spacer"></div>
|
<div class="vertical-spacer"></div>
|
||||||
<div class="nav-btn-group">
|
<div class="nav-btn-group">
|
||||||
<button class="pf-c-button pf-m-danger editor-btn" id="nav-cancel-edit-contents-btn" title="Cancel"><i class="fas fa-times"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-danger editor-btn" id="nav-cancel-edit-contents-btn" title="Cancel"><i class="fas fa-times"></i></button>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<button class="pf-c-button pf-m-primary editor-btn" id="nav-continue-edit-contents-btn" title="Save"><i class="fas fa-save"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-primary editor-btn" id="nav-continue-edit-contents-btn" title="Save"><i class="fas fa-save"></i></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
|
@ -97,9 +97,9 @@
|
||||||
<div class="flex-row space-between">
|
<div class="flex-row space-between">
|
||||||
<div class="nav-info-column-filename"></div>
|
<div class="nav-info-column-filename"></div>
|
||||||
<div class="nav-btn-group">
|
<div class="nav-btn-group">
|
||||||
<button class="pf-c-button pf-m-danger" id="nav-delete-btn" title="Delete"><i class="fas fa-trash-alt"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-danger" id="nav-delete-btn" title="Delete"><i class="fas fa-trash-alt"></i></button>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<button class="pf-c-button pf-m-primary" id="nav-edit-properties-btn" title="Edit Properties"><i class="fas fa-sliders-h"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-primary" id="nav-edit-properties-btn" title="Edit Properties"><i class="fas fa-sliders-h"></i></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-info-column-properties" id="nav-info-column-properties"></div>
|
<div class="nav-info-column-properties" id="nav-info-column-properties"></div>
|
||||||
|
@ -153,9 +153,9 @@
|
||||||
<div class="flex-grow monospace-sm" id="selected-files-list"></div>
|
<div class="flex-grow monospace-sm" id="selected-files-list"></div>
|
||||||
<div class="vertical-spacer"></div>
|
<div class="vertical-spacer"></div>
|
||||||
<div class="nav-btn-group">
|
<div class="nav-btn-group">
|
||||||
<button class="pf-c-button pf-m-danger" id="nav-cancel-edit-btn" title="Cancel"><i class="fas fa-times"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-danger" id="nav-cancel-edit-btn" title="Cancel"><i class="fas fa-times"></i></button>
|
||||||
<div class="horizontal-spacer"></div>
|
<div class="horizontal-spacer"></div>
|
||||||
<button class="pf-c-button pf-m-primary" id="nav-apply-edit-btn" title="Save Changes"><i class="fas fa-save"></i></button>
|
<button class="disable-while-loading pf-c-button pf-m-primary" id="nav-apply-edit-btn" title="Save Changes"><i class="fas fa-save"></i></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue