Fixes table sort for file size (#86)

* Fixed algorithm to de-humanize size string to bytes

* Resolved linting issues
This commit is contained in:
2023-01-16 22:50:25 +01:00
committed by GitHub
parent ba3cb6486e
commit 28a559727f
3 changed files with 10 additions and 8 deletions

View File

@@ -20,7 +20,7 @@
</template>
<script setup lang="ts">
import { ref, inject, defineProps } from "vue";
import { ref, watch, inject, defineProps } from "vue";
import { useStore } from "vuex";
import Loader from "@/components/ui/Loader.vue";
import TorrentTable from "@/components/torrent/TorrentTable.vue";
@@ -96,6 +96,8 @@
});
}
watch(props, newValue => newValue?.query?.length && fetchTorrents());
fetchTorrents();
</script>

View File

@@ -131,12 +131,12 @@
function sortSize() {
const torrentsCopy = [...torrents.value];
if (direction.value) {
torrents.value = torrentsCopy.sort(
(a, b) => sortableSize(a.size) - sortableSize(b.size)
torrents.value = torrentsCopy.sort((a, b) =>
sortableSize(a.size) > sortableSize(b.size) ? 1 : -1
);
} else {
torrents.value = torrentsCopy.sort(
(a, b) => sortableSize(b.size) - sortableSize(a.size)
torrents.value = torrentsCopy.sort((a, b) =>
sortableSize(a.size) < sortableSize(b.size) ? 1 : -1
);
}
}

View File

@@ -1,11 +1,11 @@
export const sortableSize = (string: string): number => {
const UNITS = ["B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
const UNITS = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
const [numStr, unit] = string.split(" ");
if (UNITS.indexOf(unit) === -1) return null;
const exponent = UNITS.indexOf(unit) * 3;
return Number(numStr) * exponent ** 10;
const exponent = UNITS.indexOf(unit) * 3 + 4;
return Math.floor(Number(numStr) * 10 ** exponent);
};
export const parseJwt = (token: string) => {