Добавление системы приоритетов
This commit is contained in:
+73
-21
@@ -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;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
<div data-tauri-drag-region class="titlebar h-[30px] select-none fixed flex justify-end top-0 right-0 left-0 bg-gray-100 dark:bg-zinc-800">
|
||||
<div data-tauri-drag-region class="z-50 opacity-50 titlebar h-[30px] select-none fixed flex justify-end top-0 right-0 left-0 bg-gray-100 dark:bg-zinc-800">
|
||||
<div class="titlebar-button hover:bg-gray-200 dark:hover:bg-gray-700 justify-center inline-flex w-[30px] h-[30px] items-center dark:text-white" id="titlebar-minimize">
|
||||
<Icon class="" icon="mdi:window-minimize" width="20" height="20"/>
|
||||
</div>
|
||||
@@ -154,18 +196,27 @@ async function edit_task(id_task, name, description){
|
||||
<p class="truncate text-xs leading-5 text-gray-500 dark:text-gray-400">{{task.description}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="opacity-0 shrink-0 group-hover/task:opacity-100 transition-all">
|
||||
<div class="shrink-0 group-hover/task:opacity-100 transition-all">
|
||||
<div class="inline-flex items-center gap-x-1">
|
||||
<div title="Приоритет" class="mr-4 cursor-pointer drop-shadow-sm dark:drop-shadow-[0_1px_1px_rgba(255,255,255,0.35)]" @click="change_priority(task.id, task.name, task.priority)">
|
||||
<Icon v-if="parseInt(task.priority) === 0" class="opacity-60 dark:text-white text-gray-500" icon="streamline:signal-none-solid" width="26" height="26"/>
|
||||
<Icon v-if="parseInt(task.priority) > 0 && parseInt(task.priority) < 4" class="opacity-80 text-orange-300" icon="streamline:signal-low-solid" width="26" height="26"/>
|
||||
<Icon v-if="parseInt(task.priority) >= 4 && parseInt(task.priority) < 7" class="opacity-85 text-amber-500" icon="streamline:signal-medium-solid" width="26" height="26"/>
|
||||
<Icon v-if="parseInt(task.priority) >= 7 && parseInt(task.priority) < 9" class="opacity-90 text-orange-600" icon="streamline:signal-full-solid" width="26" height="26"/>
|
||||
<Icon v-if="parseInt(task.priority) >= 9" class="opacity-100 text-red-500" icon="heroicons-solid:exclamation" width="32" height="32"/>
|
||||
</div>
|
||||
<p class="mt-0.5 text-xs text-gray-400 mr-2 text-center">{{task.date}}<br>{{task.time}}</p>
|
||||
<button @click="edit_task(task.id, task.name, task.description)" class="group/button border-2 rounded-lg p-1.5 border-green-400/70 hover:bg-green-400 hover:border-green-400 transition-colors"><Icon class="group-hover/button:invert dark:invert" icon="mdi:pencil" width="24" height="24" style="color: black"/></button>
|
||||
<button @click="edit_task(task.id, task.name, task.description, task.priority)" class="group/button border-2 rounded-lg p-1.5 border-green-400/70 hover:bg-green-400 hover:border-green-400 transition-colors"><Icon class="group-hover/button:invert dark:invert" icon="mdi:pencil" width="24" height="24" style="color: black"/></button>
|
||||
<button @click="delete_task(task.id)" class="group/button border-2 rounded-lg p-1.5 border-red-400/70 hover:bg-red-500 hover:border-red-500 transition-colors"><Icon class="group-hover/button:invert dark:invert" icon="ic:baseline-delete" width="24" height="24" style="color: black"/></button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div v-if="create_modal || edit_modal || priority_modal" class="bg-black w-[100vw] h-full fixed top-0 opacity-70 z-40"/>
|
||||
<CreateModal v-if="create_modal" @close="create_modal = !create_modal"/>
|
||||
<EditModal v-if="edit_modal" :task_id="to_edit_id" :task_name="to_edit_name" :task_description="to_edit_description" @close="edit_modal = !edit_modal"/>
|
||||
<EditModal v-if="edit_modal" :task_id="to_edit_id" :task_name="to_edit_name" :task_description="to_edit_description" :task_priority="to_edit_priority" @close="edit_modal = !edit_modal"/>
|
||||
<PriorityModal v-if="priority_modal" :task_id="to_change_id" :task_name="to_change_name" :task_priority="to_change_priority" @close="priority_modal = !priority_modal"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user