From f4fc01c56d1082ab396ab57d340cfa0139945b7d Mon Sep 17 00:00:00 2001 From: Danil Date: Sat, 15 Jun 2024 15:34:07 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D1=8B?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=BE=D1=80=D0=B8=D1=82=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/tasks_functions.rs | 7 +- src/App.vue | 94 +++++++++++++++++++------ src/components/modals/CreateModal.vue | 6 +- src/components/modals/EditModal.vue | 23 ++++-- src/components/modals/PriorityModal.vue | 73 +++++++++++++++++++ 5 files changed, 170 insertions(+), 33 deletions(-) create mode 100644 src/components/modals/PriorityModal.vue diff --git a/src-tauri/src/tasks_functions.rs b/src-tauri/src/tasks_functions.rs index e94ab49..f904263 100644 --- a/src-tauri/src/tasks_functions.rs +++ b/src-tauri/src/tasks_functions.rs @@ -148,7 +148,7 @@ pub fn search_tasks(app_handle: tauri::AppHandle, value: String) -> Value { } #[tauri::command] -pub fn add_task(app_handle: tauri::AppHandle, date: String, time: String, name: String, description: String, priority: i32) { +pub fn add_task(app_handle: tauri::AppHandle, date: String, time: String, name: String, description: String, priority: String) { let mut path = app_handle.path_resolver().app_local_data_dir().unwrap(); path.push("ToDo"); path.push("tasks"); @@ -178,7 +178,7 @@ pub fn add_task(app_handle: tauri::AppHandle, date: String, time: String, name: } #[tauri::command] -pub fn edit_task(app_handle: tauri::AppHandle, id_task: String, name: String, description: String) { +pub fn edit_task(app_handle: tauri::AppHandle, id_task: String, name: String, description: String, priority: String) { let mut path = app_handle.path_resolver().app_local_data_dir().unwrap(); path.push("ToDo"); path.push("tasks"); @@ -188,7 +188,8 @@ pub fn edit_task(app_handle: tauri::AppHandle, id_task: String, name: String, de let content = decrypt_file(path.clone()); let mut data: Value = serde_json::from_str(content.as_str()).unwrap(); data["tasks"][id_task.clone()]["name"] = json!(name); - data["tasks"][id_task]["description"] = json!(description); + data["tasks"][id_task.clone()]["description"] = json!(description); + data["tasks"][id_task]["priority"] = json!(priority); encrypt_n_save_file(path.into(), data.to_string()); } diff --git a/src/App.vue b/src/App.vue index 26de36c..e7ff65b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -8,20 +8,28 @@ import CreateModal from "./components/modals/CreateModal.vue"; import { appWindow } from '@tauri-apps/api/window'; import {useDark, useToggle} from "@vueuse/core"; +import PriorityModal from "./components/modals/PriorityModal.vue"; const isDark = useDark(); const toggleDark = useToggle(isDark); let tasks = ref({}); let pending = ref(true); + let create_modal = ref(false); let edit_modal = ref(false); +let priority_modal = ref(false); let search_text = ref(""); let to_edit_id = ref(""); let to_edit_name = ref(""); let to_edit_description = ref(""); +let to_edit_priority = ref(0); + +let to_change_id = ref(""); +let to_change_name = ref(""); +let to_change_priority = ref(""); onBeforeMount(async () => { await invoke('check_or_create_tasks_file'); @@ -40,18 +48,37 @@ onBeforeMount(async () => { .addEventListener('click', () => appWindow.close()) }); + +function compare_priority(a, b) { + if ( parseInt(a.priority) < parseInt(b.priority) ){ + return -1; + } + if ( parseInt(a.priority) > parseInt(b.priority) ){ + return 1; + } + return 0; +} + async function get_tasks(){ + let tmp_tasks = []; await invoke('get_tasks').then((res) => { - tasks.value = res; + for (let value in res){ + tmp_tasks.push(res[value]); + } + tasks.value = tmp_tasks.sort(compare_priority).reverse(); }); } async function search_tasks(event){ + let tmp_tasks = []; if (event.target.value) { await invoke('search_tasks', { value: event.target.value }).then((res) => { - tasks.value = res; + for (let value in res){ + tmp_tasks.push(res[value]); + } + tasks.value = tmp_tasks.sort(compare_priority).reverse(); }); } else{ await get_tasks(); @@ -61,7 +88,7 @@ async function search_tasks(event){ async function set_task_field(id_task, completed){ let field = "completed" id_task = id_task.toString(); - completed = completed.toString() + completed = completed.toString(); if (completed === "false"){ completed = "true" } else{ @@ -72,7 +99,12 @@ async function set_task_field(id_task, completed){ field: field, value: completed }).then(async () => { - tasks.value[id_task][field] = completed; + for (let index in tasks.value){ + if (tasks.value[index].id === id_task){ + tasks.value[index][field] = completed; + break; + } + } }); } @@ -85,17 +117,27 @@ async function delete_task(id_task){ }); } -async function edit_task(id_task, name, description){ - to_edit_id = id_task; +function edit_task(id_task, name, description, priority){ + window.scrollTo({top:0}); + to_edit_id.value = id_task; to_edit_name.value = name; to_edit_description.value = description; - edit_modal.value = true + to_edit_priority.value = priority; + edit_modal.value = true; +} + +function change_priority(id_task, name, priority){ + window.scrollTo({top:0}); + to_change_id.value = id_task; + to_change_name.value = name; + to_change_priority.value = priority; + priority_modal.value = true; } @@ -175,18 +226,19 @@ async function edit_task(id_task, name, description){ @tailwind utilities; :root { - font-family: Inter, Avenir, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 400; + overflow-x: hidden; + font-family: Inter, Avenir, Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 24px; + font-weight: 400; - background-color: rgb(249 250 251); + background-color: rgb(249 250 251); - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; } :root.dark { diff --git a/src/components/modals/CreateModal.vue b/src/components/modals/CreateModal.vue index ac285f0..c379058 100644 --- a/src/components/modals/CreateModal.vue +++ b/src/components/modals/CreateModal.vue @@ -4,7 +4,7 @@ import {ref} from "vue"; let name = ""; let description = ""; -let priority = "0"; +let priority = 0; let error = ref(" "); @@ -22,7 +22,7 @@ async function create_task(){ time: time, name: name, description: description, - priority: priority + priority: priority.toString() }); location.reload(); @@ -52,7 +52,7 @@ async function create_task(){
- +
diff --git a/src/components/modals/EditModal.vue b/src/components/modals/EditModal.vue index b0370a0..053670a 100644 --- a/src/components/modals/EditModal.vue +++ b/src/components/modals/EditModal.vue @@ -4,17 +4,20 @@ import {invoke} from "@tauri-apps/api"; const props = defineProps({ task_id: String, task_name: String, - task_description: String + task_description: String, + task_priority: String }) -let name = props.task_name -let description = props.task_description +let name = props.task_name; +let description = props.task_description; +let priority = parseInt(props.task_priority); async function send_edited_task(){ await invoke('edit_task', { idTask: props.task_id, name: name, - description: description + description: description, + priority: priority.toString() }).then(() => location.reload()); } @@ -27,7 +30,7 @@ async function send_edited_task(){

- Новая задача + Изменить задачу

+
+
+ +
+
+ +
+
- +
diff --git a/src/components/modals/PriorityModal.vue b/src/components/modals/PriorityModal.vue new file mode 100644 index 0000000..2d0d287 --- /dev/null +++ b/src/components/modals/PriorityModal.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file