start working on uploading folders

This commit is contained in:
joshuaboud 2021-07-19 15:37:33 -03:00
parent 7d4616a229
commit 62d8ff793b
No known key found for this signature in database
GPG Key ID: 17EFB59E2A8BF50E
5 changed files with 34 additions and 27 deletions

View File

@ -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");

View File

@ -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:

View File

@ -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;
} }

View File

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

View File

@ -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>