mirror of
https://github.com/45Drives/cockpit-navigator.git
synced 2025-07-29 16:45:13 +02:00
Merge pull request #39 from 45Drives/dev-josh
Add Modification and Creation Time to Columns and Sorting Methods
This commit is contained in:
commit
a36d434383
@ -1,3 +1,4 @@
|
|||||||
## Cockpit Navigator 0.5.6-1
|
## Cockpit Navigator 0.5.7-1
|
||||||
|
|
||||||
* Fix mangling of large files during upload.
|
* Fix bug where loading spinner doesn't go away after upload dialog is cancelled.
|
||||||
|
* Add modification and creation time columns and allow sorting by them.
|
10
README.md
10
README.md
@ -23,17 +23,17 @@ With no command line use needed, you can:
|
|||||||
# Installation
|
# Installation
|
||||||
## From Github Release
|
## From Github Release
|
||||||
### Ubuntu
|
### Ubuntu
|
||||||
1. `$ wget https://github.com/45Drives/cockpit-navigator/releases/download/v0.5.6/cockpit-navigator_0.5.6-1focal_all.deb`
|
1. `$ wget https://github.com/45Drives/cockpit-navigator/releases/download/v0.5.7/cockpit-navigator_0.5.7-1focal_all.deb`
|
||||||
1. `# apt install ./cockpit-navigator_0.5.6-1focal_all.deb`
|
1. `# apt install ./cockpit-navigator_0.5.7-1focal_all.deb`
|
||||||
### EL7
|
### EL7
|
||||||
1. `# yum install https://github.com/45Drives/cockpit-navigator/releases/download/v0.5.6/cockpit-navigator-0.5.6-1.el7.noarch.rpm`
|
1. `# yum install https://github.com/45Drives/cockpit-navigator/releases/download/v0.5.7/cockpit-navigator-0.5.7-1.el7.noarch.rpm`
|
||||||
### EL8
|
### EL8
|
||||||
1. `# dnf install https://github.com/45Drives/cockpit-navigator/releases/download/v0.5.6/cockpit-navigator-0.5.6-1.el8.noarch.rpm`
|
1. `# dnf install https://github.com/45Drives/cockpit-navigator/releases/download/v0.5.7/cockpit-navigator-0.5.7-1.el8.noarch.rpm`
|
||||||
## From Source
|
## From Source
|
||||||
1. Ensure dependencies are installed: `cockpit`, `python3`, `rsync`, `zip`.
|
1. Ensure dependencies are installed: `cockpit`, `python3`, `rsync`, `zip`.
|
||||||
1. `$ git clone https://github.com/45Drives/cockpit-navigator.git`
|
1. `$ git clone https://github.com/45Drives/cockpit-navigator.git`
|
||||||
1. `$ cd cockpit-navigator`
|
1. `$ cd cockpit-navigator`
|
||||||
1. `$ git checkout <version>` (v0.5.6 is latest)
|
1. `$ git checkout <version>` (v0.5.7 is latest)
|
||||||
1. `# make install`
|
1. `# make install`
|
||||||
## From 45Drives Repositories
|
## From 45Drives Repositories
|
||||||
### Automatic Repo Setup with Script
|
### Automatic Repo Setup with Script
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"name": "cockpit-navigator",
|
"name": "cockpit-navigator",
|
||||||
"title": "Cockpit Navigator",
|
"title": "Cockpit Navigator",
|
||||||
"prerelease": false,
|
"prerelease": false,
|
||||||
"version": "0.5.6",
|
"version": "0.5.7",
|
||||||
"buildVersion": "1",
|
"buildVersion": "1",
|
||||||
"author": "Josh Boudreau <jboudreau@45drives.com>",
|
"author": "Josh Boudreau <jboudreau@45drives.com>",
|
||||||
"url": "https://github.com/45Drives/cockpit-navigator",
|
"url": "https://github.com/45Drives/cockpit-navigator",
|
||||||
@ -54,7 +54,7 @@
|
|||||||
],
|
],
|
||||||
"changelog": {
|
"changelog": {
|
||||||
"urgency": "medium",
|
"urgency": "medium",
|
||||||
"version": "0.5.6",
|
"version": "0.5.7",
|
||||||
"buildVersion": "1",
|
"buildVersion": "1",
|
||||||
"ignore": [],
|
"ignore": [],
|
||||||
"date": null,
|
"date": null,
|
||||||
|
@ -47,9 +47,10 @@ export class NavDragDrop {
|
|||||||
uploader.using_webkit = false;
|
uploader.using_webkit = false;
|
||||||
uploads.push(uploader);
|
uploads.push(uploader);
|
||||||
}
|
}
|
||||||
uploads = await this.handle_conflicts(uploads);
|
if (uploads.length) {
|
||||||
this.upload_manager.add(... uploads);
|
uploads = await this.handle_conflicts(uploads);
|
||||||
this.nav_window_ref.stop_load();
|
this.upload_manager.add(... uploads);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
document.getElementById("nav-upload-btn").addEventListener("click", this.upload_dialog.bind(this));
|
document.getElementById("nav-upload-btn").addEventListener("click", this.upload_dialog.bind(this));
|
||||||
}
|
}
|
||||||
@ -213,7 +214,6 @@ export class NavDragDrop {
|
|||||||
}
|
}
|
||||||
|
|
||||||
upload_dialog() {
|
upload_dialog() {
|
||||||
this.nav_window_ref.start_load();
|
|
||||||
this.upload_element.click();
|
this.upload_element.click();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,18 +73,30 @@ export class NavEntry {
|
|||||||
let owner = document.createElement("div");
|
let owner = document.createElement("div");
|
||||||
let group = document.createElement("div");
|
let group = document.createElement("div");
|
||||||
let size = document.createElement("div");
|
let size = document.createElement("div");
|
||||||
|
let modified = document.createElement("div");
|
||||||
|
let created = document.createElement("div");
|
||||||
mode.title = mode.innerText = this.stat["mode-str"];
|
mode.title = mode.innerText = this.stat["mode-str"];
|
||||||
owner.title = owner.innerText = this.stat["owner"];
|
owner.title = owner.innerText = this.stat["owner"];
|
||||||
group.title = group.innerText = this.stat["group"];
|
group.title = group.innerText = this.stat["group"];
|
||||||
size.title = size.innerText = format_bytes(this.stat["size"]);
|
size.title = size.innerText = format_bytes(this.stat["size"]);
|
||||||
|
modified.title = modified.innerText = format_time(this.stat["mtime"]);
|
||||||
|
created.title = created.innerText = format_time(this.stat["ctime"]);
|
||||||
mode.classList.add("nav-item-title", "no-select", "monospace-sm");
|
mode.classList.add("nav-item-title", "no-select", "monospace-sm");
|
||||||
owner.classList.add("nav-item-title", "no-select");
|
owner.classList.add("nav-item-title", "no-select");
|
||||||
group.classList.add("nav-item-title", "no-select");
|
group.classList.add("nav-item-title", "no-select");
|
||||||
size.classList.add("nav-item-title", "no-select");
|
size.classList.add("nav-item-title", "no-select");
|
||||||
|
modified.classList.add("nav-item-title", "no-select");
|
||||||
|
created.classList.add("nav-item-title", "no-select");
|
||||||
|
modified.style.flexGrow = 2;
|
||||||
|
modified.style.flexBasis = 0;
|
||||||
|
created.style.flexGrow = 2;
|
||||||
|
created.style.flexBasis = 0;
|
||||||
this.dom_element.appendChild(mode);
|
this.dom_element.appendChild(mode);
|
||||||
this.dom_element.appendChild(owner);
|
this.dom_element.appendChild(owner);
|
||||||
this.dom_element.appendChild(group);
|
this.dom_element.appendChild(group);
|
||||||
this.dom_element.appendChild(size);
|
this.dom_element.appendChild(size);
|
||||||
|
this.dom_element.appendChild(modified);
|
||||||
|
this.dom_element.appendChild(created);
|
||||||
}
|
}
|
||||||
this.visible = true;
|
this.visible = true;
|
||||||
}
|
}
|
||||||
|
@ -24,9 +24,11 @@ export class SortFunctions {
|
|||||||
owner: "asc",
|
owner: "asc",
|
||||||
group: "asc",
|
group: "asc",
|
||||||
size: "asc",
|
size: "asc",
|
||||||
|
modified: "asc",
|
||||||
|
created: "asc",
|
||||||
}
|
}
|
||||||
this.icons = {};
|
this.icons = {};
|
||||||
for (let option of ["name", "owner", "group", "size"]) {
|
for (let option of ["name", "owner", "group", "size", "modified", "created"]) {
|
||||||
this.icons[option] = document.getElementById(`sort-${option}-icon`);
|
this.icons[option] = document.getElementById(`sort-${option}-icon`);
|
||||||
}
|
}
|
||||||
this.current_choice = "name";
|
this.current_choice = "name";
|
||||||
@ -90,4 +92,20 @@ export class SortFunctions {
|
|||||||
size_desc(first, second) {
|
size_desc(first, second) {
|
||||||
return second.stat["size"] - first.stat["size"];
|
return second.stat["size"] - first.stat["size"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
modified_asc(first, second) {
|
||||||
|
return first.stat["mtime"] - second.stat["mtime"];
|
||||||
|
}
|
||||||
|
|
||||||
|
modified_desc(first, second) {
|
||||||
|
return second.stat["mtime"] - first.stat["mtime"];
|
||||||
|
}
|
||||||
|
|
||||||
|
created_asc(first, second) {
|
||||||
|
return first.stat["ctime"] - second.stat["ctime"];
|
||||||
|
}
|
||||||
|
|
||||||
|
created_desc(first, second) {
|
||||||
|
return second.stat["ctime"] - first.stat["ctime"];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,10 +75,12 @@
|
|||||||
<div class="contents-view-list-header nav-item">
|
<div class="contents-view-list-header nav-item">
|
||||||
<i class="nav-item-icon"></i>
|
<i class="nav-item-icon"></i>
|
||||||
<div class="nav-item-title" id="sort-name-btn">Name<i class="sort-arrow fas fa-chevron-up" id="sort-name-icon"></i></div>
|
<div class="nav-item-title" id="sort-name-btn">Name<i class="sort-arrow fas fa-chevron-up" id="sort-name-icon"></i></div>
|
||||||
<div id="sort-mode-btn">Mode</div>
|
<div class="nav-item-title" id="sort-mode-btn">Mode</div>
|
||||||
<div id="sort-owner-btn">Owner<i class="sort-arrow fas" id="sort-owner-icon"></i></div>
|
<div class="nav-item-title" id="sort-owner-btn">Owner<i class="sort-arrow fas" id="sort-owner-icon"></i></div>
|
||||||
<div id="sort-group-btn">Group<i class="sort-arrow fas" id="sort-group-icon"></i></div>
|
<div class="nav-item-title" id="sort-group-btn">Group<i class="sort-arrow fas" id="sort-group-icon"></i></div>
|
||||||
<div id="sort-size-btn">Size<i class="sort-arrow fas" id="sort-size-icon"></i></div>
|
<div class="nav-item-title" id="sort-size-btn">Size<i class="sort-arrow fas" id="sort-size-icon"></i></div>
|
||||||
|
<div class="nav-item-title" id="sort-modified-btn">Modified<i class="sort-arrow fas" id="sort-modified-icon"></i></div>
|
||||||
|
<div class="nav-item-title" id="sort-created-btn">Created<i class="sort-arrow fas" id="sort-created-icon"></i></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-notifications" id="nav-notifications">
|
<div class="nav-notifications" id="nav-notifications">
|
||||||
|
@ -119,7 +119,7 @@ function set_up_buttons() {
|
|||||||
document.getElementById("toggle-theme").addEventListener("change", switch_theme, false);
|
document.getElementById("toggle-theme").addEventListener("change", switch_theme, false);
|
||||||
document.getElementById("nav-show-hidden").addEventListener("change", nav_window.toggle_show_hidden.bind(nav_window));
|
document.getElementById("nav-show-hidden").addEventListener("change", nav_window.toggle_show_hidden.bind(nav_window));
|
||||||
document.getElementById("nav-item-display-btn").addEventListener("click", nav_window.switch_item_display.bind(nav_window));
|
document.getElementById("nav-item-display-btn").addEventListener("click", nav_window.switch_item_display.bind(nav_window));
|
||||||
for (let option of ["name", "owner", "group", "size"]) {
|
for (let option of ["name", "owner", "group", "size", "modified", "created"]) {
|
||||||
var elem = document.getElementById("sort-" + option + "-btn");
|
var elem = document.getElementById("sort-" + option + "-btn");
|
||||||
elem.addEventListener("click", (event) => {
|
elem.addEventListener("click", (event) => {
|
||||||
nav_window.sort_function.set_func(option);
|
nav_window.sort_function.set_func(option);
|
||||||
|
@ -396,6 +396,11 @@ input[type="text"] {
|
|||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.contents-view-list > .nav-item > #sort-modified-btn, #sort-created-btn {
|
||||||
|
flex-basis: 0;
|
||||||
|
flex-grow: 2;
|
||||||
|
}
|
||||||
|
|
||||||
.nav-info-column {
|
.nav-info-column {
|
||||||
background-color: var(--container);
|
background-color: var(--container);
|
||||||
flex-basis: 0;
|
flex-basis: 0;
|
||||||
@ -692,4 +697,4 @@ input:checked + .slider:before {
|
|||||||
|
|
||||||
.no-border {
|
.no-border {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,9 @@ rm -rf %{buildroot}
|
|||||||
/usr/share/cockpit/navigator/*
|
/usr/share/cockpit/navigator/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Nov 29 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.7-1
|
||||||
|
- Fix bug where loading spinner doesn't go away after upload dialog is cancelled.
|
||||||
|
- Add modification and creation time columns and allow sorting by them.
|
||||||
* Fri Nov 12 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.6-1
|
* Fri Nov 12 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.6-1
|
||||||
- Fix mangling of large files during upload.
|
- Fix mangling of large files during upload.
|
||||||
* Mon Oct 04 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.5-2
|
* Mon Oct 04 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.5-2
|
||||||
|
@ -32,6 +32,9 @@ rm -rf %{buildroot}
|
|||||||
/usr/share/cockpit/navigator/*
|
/usr/share/cockpit/navigator/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Nov 29 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.7-1
|
||||||
|
- Fix bug where loading spinner doesn't go away after upload dialog is cancelled.
|
||||||
|
- Add modification and creation time columns and allow sorting by them.
|
||||||
* Fri Nov 12 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.6-1
|
* Fri Nov 12 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.6-1
|
||||||
- Fix mangling of large files during upload.
|
- Fix mangling of large files during upload.
|
||||||
* Mon Oct 04 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.5-2
|
* Mon Oct 04 2021 Joshua Boudreau <jboudreau@45drives.com> 0.5.5-2
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
cockpit-navigator (0.5.7-1focal) focal; urgency=medium
|
||||||
|
|
||||||
|
* Fix bug where loading spinner doesn't go away after upload dialog is cancelled.
|
||||||
|
* Add modification and creation time columns and allow sorting by them.
|
||||||
|
|
||||||
|
-- Joshua Boudreau <jboudreau@45drives.com> Mon, 29 Nov 2021 08:52:51 -0400
|
||||||
|
|
||||||
cockpit-navigator (0.5.6-1focal) focal; urgency=medium
|
cockpit-navigator (0.5.6-1focal) focal; urgency=medium
|
||||||
|
|
||||||
* Fix mangling of large files during upload.
|
* Fix mangling of large files during upload.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user