From c3b3f77935e9dbdc2dcb8335f3d433ad5de966c8 Mon Sep 17 00:00:00 2001 From: joshuaboud Date: Thu, 15 Jul 2021 13:00:45 -0300 Subject: [PATCH] add danger bool to confirm and sort groups/users --- navigator/components/FileUpload.js | 2 +- navigator/components/ModalPrompt.js | 16 +++++++++++++--- navigator/components/NavDir.js | 2 +- navigator/components/NavWindow.js | 16 ++++++++++++---- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/navigator/components/FileUpload.js b/navigator/components/FileUpload.js index 20be803..836d4d7 100644 --- a/navigator/components/FileUpload.js +++ b/navigator/components/FileUpload.js @@ -92,7 +92,7 @@ export class FileUpload { async upload() { if (await this.check_if_exists()) { - if (!await this.nav_window_ref.modal_prompt.confirm(this.filename + ": File exists. Replace?")) + if (!await this.nav_window_ref.modal_prompt.confirm(this.filename + ": File exists. Replace?", "", true)) return; } this.make_html_element(); diff --git a/navigator/components/ModalPrompt.js b/navigator/components/ModalPrompt.js index dea9558..de7a6c1 100644 --- a/navigator/components/ModalPrompt.js +++ b/navigator/components/ModalPrompt.js @@ -1,10 +1,15 @@ /** * @typedef {Object} Request * @property {string} label - * @property {("text"|"checkbox")} type + * @property {"text"|"checkbox"} type * @property {string|undefined} default */ +let primary_btn = "pf-m-primary"; +let secondary_btn = "pf-m-secondary"; +let danger_btn = "pf-m-danger"; +let all_btn = [primary_btn, secondary_btn, danger_btn]; + export class ModalPrompt { constructor() { this.ok = document.createElement("button"); @@ -98,14 +103,19 @@ export class ModalPrompt { * * @param {string} header * @param {string} message + * @param {boolean} danger * @returns {Promise} */ - confirm(header, message = "") { + confirm(header, message = "", danger = false) { this.set_header(header); this.set_body(message); this.footer.innerHTML = ""; this.footer.append(this.no, this.yes); - // this.footer.appendChild(this.yes); + this.yes.classList.remove(... all_btn); + if (danger) + this.yes.classList.add(danger_btn); + else + this.yes.classList.add(primary_btn); this.show(); return new Promise((resolve, reject) => { let resolve_true = () => { diff --git a/navigator/components/NavDir.js b/navigator/components/NavDir.js index 0d15ebc..3aa2e40 100644 --- a/navigator/components/NavDir.js +++ b/navigator/components/NavDir.js @@ -104,7 +104,7 @@ export class NavDir extends NavEntry { }); proc.fail(async (e, data) => { if (/^rmdir: failed to remove .*: Directory not empty\n?$/.test(data)) { - if (await this.nav_window_ref.modal_prompt.confirm("WARNING: '" + this.path_str() + "' is not empty.", "Delete recursively? This can NOT be undone.")) { + if (await this.nav_window_ref.modal_prompt.confirm("WARNING: '" + this.path_str() + "' is not empty.", "Delete recursively? This can NOT be undone.", true)) { this.rm_recursive(resolve, reject); } } else { diff --git a/navigator/components/NavWindow.js b/navigator/components/NavWindow.js index d1b1b50..58c5823 100644 --- a/navigator/components/NavWindow.js +++ b/navigator/components/NavWindow.js @@ -4,7 +4,7 @@ import {NavContextMenu} from "./NavContextMenu.js"; import {NavDragDrop} from "./NavDragDrop.js"; import {SortFunctions} from "./SortFunctions.js"; import {ModalPrompt} from "./ModalPrompt.js"; -import {format_bytes} from "../functions.js"; +import {format_bytes, format_permissions} from "../functions.js"; export class NavWindow { constructor() { @@ -268,7 +268,8 @@ export class NavWindow { "Warning: editing " + dangerous_selected_str + " can be dangerous.", - "Are you sure?" + "Are you sure?", + true )) { return; } @@ -277,7 +278,8 @@ export class NavWindow { "Warning: editing permissions for " + this.selected_entries.size + " files.", - "Are you sure?" + "Are you sure?", + true )) { return; } @@ -378,7 +380,7 @@ export class NavWindow { } else { prompt = "Deleting `" + this.selected_entry().path_str() + "`."; } - if (!await this.modal_prompt.confirm(prompt, "This cannot be undone. Are you sure?")) { + if (!await this.modal_prompt.confirm(prompt, "This cannot be undone. Are you sure?", true)) { return; } for (let target of this.selected_entries) { @@ -712,6 +714,9 @@ export class NavWindow { return; } var passwd_entries = passwd.split("\n"); + passwd_entries.sort((first, second) => { + return first.split(":")[0].localeCompare(second.split(":")[0]); + }); for (let entry of passwd_entries) { var cols = entry.split(":"); var username = cols[0]; @@ -745,6 +750,9 @@ export class NavWindow { return; } var group_entries = group.split("\n"); + group_entries.sort((first, second) => { + return first.split(":")[0].localeCompare(second.split(":")[0]); + }); for (let entry of group_entries) { var cols = entry.split(":"); var groupname = cols[0];