{
renameHandler();
}}
@@ -43,7 +43,7 @@
{
deleteHandler();
}}
diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json
index 1ef7fef8..36ad86ab 100644
--- a/src/lib/i18n/locales/vi-VN/translation.json
+++ b/src/lib/i18n/locales/vi-VN/translation.json
@@ -55,9 +55,9 @@
"Check for updates": "Kiểm tra cập nhật",
"Checking for updates...": "Đang kiểm tra cập nhật...",
"Choose a model before saving...": "Chọn mô hình trước khi lưu...",
- "Chunk Overlap": "Kích thước chồng lấn (overlap)",
+ "Chunk Overlap": "Chồng lấn (overlap)",
"Chunk Params": "Cài đặt số lượng ký tự cho khối ký tự (chunk)",
- "Chunk Size": "Kích thức khối (size)",
+ "Chunk Size": "Kích thước khối (size)",
"Click here for help.": "Bấm vào đây để được trợ giúp.",
"Click here to check other modelfiles.": "Bấm vào đây để kiểm tra các tệp mô tả mô hình (modelfiles) khác.",
"Click here to select": "Bấm vào đây để chọn",
@@ -65,7 +65,7 @@
"click here.": "bấm vào đây.",
"Click on the user role button to change a user's role.": "Bấm vào nút trong cột VAI TRÒ để thay đổi quyền của người sử dụng.",
"Close": "Đóng",
- "Collection": "Bộ sưu tập",
+ "Collection": "Tổng hợp mọi tài liệu",
"Command": "Lệnh",
"Confirm Password": "Xác nhận Mật khẩu",
"Connections": "Kết nối",
@@ -76,7 +76,7 @@
"Copy last response": "Sao chép phản hồi cuối cùng",
"Copying to clipboard was successful!": "Sao chép vào clipboard thành công!",
"Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "Tạo một cụm từ súc tích, 3-5 từ làm tiêu đề cho truy vấn sau, tuân thủ nghiêm ngặt giới hạn 3-5 từ và tránh sử dụng từ 'tiêu đề':",
- "Create a modelfile": "Tạo tệp mô tả mô hình",
+ "Create a modelfile": "Tạo tệp mô tả cho mô hình",
"Create Account": "Tạo Tài khoản",
"Created at": "Được tạo vào lúc",
"Created by": "Được tạo bởi",
@@ -347,7 +347,7 @@
"Valid time units:": "Đơn vị thời gian hợp lệ:",
"variable": "biến",
"variable to have them replaced with clipboard content.": "biến để có chúng được thay thế bằng nội dung clipboard.",
- "Version": "Phiên bản",
+ "Version": "Version",
"Web": "Web",
"WebUI Add-ons": "Tiện ích WebUI",
"WebUI Settings": "Cài đặt WebUI",
diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts
index 3ea82783..132c57d8 100644
--- a/src/lib/utils/index.ts
+++ b/src/lib/utils/index.ts
@@ -493,4 +493,25 @@ export const templatePrompt = (template: string, prompt: string) => {
}
return template;
+
+export const approximateToHumanReadable = (nanoseconds: number) => {
+ const seconds = Math.floor((nanoseconds / 1e9) % 60);
+ const minutes = Math.floor((nanoseconds / 6e10) % 60);
+ const hours = Math.floor((nanoseconds / 3.6e12) % 24);
+
+ const results: string[] = [];
+
+ if (seconds >= 0) {
+ results.push(`${seconds}s`);
+ }
+
+ if (minutes > 0) {
+ results.push(`${minutes}m`);
+ }
+
+ if (hours > 0) {
+ results.push(`${hours}h`);
+ }
+
+ return results.reverse().join(' ');
};
diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte
index ff3ecb76..2000d87c 100644
--- a/src/routes/(app)/+layout.svelte
+++ b/src/routes/(app)/+layout.svelte
@@ -106,11 +106,6 @@
// IndexedDB Not Found
}
- console.log();
-
- await models.set(await getModels());
- await tick();
-
await settings.set(JSON.parse(localStorage.getItem('settings') ?? '{}'));
await modelfiles.set(await getModelfiles(localStorage.token));
diff --git a/src/routes/(app)/admin/+page.svelte b/src/routes/(app)/admin/+page.svelte
index a90b3262..a3493cb6 100644
--- a/src/routes/(app)/admin/+page.svelte
+++ b/src/routes/(app)/admin/+page.svelte
@@ -12,6 +12,7 @@
import { getSignUpEnabledStatus, toggleSignUpEnabledStatus } from '$lib/apis/auths';
import EditUserModal from '$lib/components/admin/EditUserModal.svelte';
import SettingsModal from '$lib/components/admin/SettingsModal.svelte';
+ import Pagination from '$lib/components/common/Pagination.svelte';
const i18n = getContext('i18n');
@@ -21,6 +22,8 @@
let search = '';
let selectedUser = null;
+ let page = 1;
+
let showSettingsModal = false;
let showEditUserModal = false;
@@ -159,15 +162,17 @@
- {#each users.filter((user) => {
- if (search === '') {
- return true;
- } else {
- let name = user.name.toLowerCase();
- const query = search.toLowerCase();
- return name.includes(query);
- }
- }) as user}
+ {#each users
+ .filter((user) => {
+ if (search === '') {
+ return true;
+ } else {
+ let name = user.name.toLowerCase();
+ const query = search.toLowerCase();
+ return name.includes(query);
+ }
+ })
+ .slice((page - 1) * 20, page * 20) as user}