Skip to content

Commit

Permalink
✨ feat: ソートの種別追加
Browse files Browse the repository at this point in the history
  • Loading branch information
nkita committed Apr 3, 2024
1 parent 7e30ed5 commit 11876e7
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 26 deletions.
32 changes: 16 additions & 16 deletions src/components/config.ts
Expand Up @@ -21,11 +21,11 @@ export type Keymap = {
moveProjectRight: KeymapItem;
moveProjectLeft: KeymapItem;
sortMode: KeymapItem;
sortTextMode: KeymapItem;
sortPriorityMode: KeymapItem;
sortCompletionMode: KeymapItem;
sortCreationDateMode: KeymapItem;
sortContextMode: KeymapItem;
sortText: KeymapItem;
sortPriority: KeymapItem;
sortCreationDate: KeymapItem;
sortContext: KeymapItem;
sortCompletion: KeymapItem;
sortClear: KeymapItem
normalMode: KeymapItem;
normalModeOnSort: KeymapItem;
Expand Down Expand Up @@ -107,35 +107,35 @@ export const keymap: Keymap = {
enable: { mode: ["normal"] },
description: "ソート"
},
sortTextMode: {
sortText: {
keys: ['t'],
enable: { mode: ["sort"] },
description: "タスク内容"
},
sortPriorityMode: {
sortPriority: {
keys: ['p'],
enable: { mode: ["sort"] },
description: "優先度"
},
sortCompletionMode: {
keys: ['x'],
enable: { mode: ["sort"] },
description: "タスク完了・未完了"
},
sortCreationDateMode: {
sortCreationDate: {
keys: ['d'],
enable: { mode: ["sort"] },
description: "作成日"
},
sortContextMode: {
sortContext: {
keys: ['@'],
enable: { mode: ["sort"] },
description: "コンテキスト"
},
sortCompletion: {
keys: ['x'],
enable: { mode: ["sort"] },
description: "完了・未完了"
},
sortClear: {
keys: ['Delete'],
keys: ['q'],
enable: { mode: ["sort"] },
description: "クリア"
description: "ソート解除"
},
normalMode: {
keys: ['Esc', 'Enter'],
Expand Down
42 changes: 33 additions & 9 deletions src/components/todo.tsx
Expand Up @@ -48,10 +48,14 @@ export const Todo = () => {
const _todos = !currentProject ? [...todos] : todos.filter(t => t.project === currentProject)
if (currentSort !== undefined) {
_todos.sort((a, b) => {
const _a = a[currentSort]
const _b = b[currentSort]
if (_a === undefined) return 1
if (_b === undefined) return -1
let _a = a[currentSort]
let _b = b[currentSort]
if (currentSort === 'isCompletion' || typeof _a === "boolean" || typeof _b === "boolean") {
_a = _a === undefined ? "a" : _a ? undefined : "a"
_b = _b === undefined ? "a" : _b ? undefined : "a"
}
if (_a === undefined || !_a) return 1
if (_b === undefined || !_b) return -1
return _a.localeCompare(_b); // 文字列の比較にする
});
}
Expand Down Expand Up @@ -120,7 +124,6 @@ export const Todo = () => {

// add task to Top
useHotkeys(keymap['insertTopOnSort'].keys, (e) => {
console.log("koko")
setFocus('newtask')
setMode('editOnSort')
}, setKeyEnableDefine(keymap['insertTopOnSort'].enable))
Expand Down Expand Up @@ -218,10 +221,31 @@ export const Todo = () => {
*
*******************/

useHotkeys(keymap['sortPriorityMode'].keys, (e) => {
useHotkeys(keymap['sortPriority'].keys, (e) => {
setCurrentSort("priority")
setMode("normal")
}, setKeyEnableDefine(keymap['sortPriorityMode'].enable))
}, setKeyEnableDefine(keymap['sortPriority'].enable))

useHotkeys(keymap['sortClear'].keys, (e) => {
setCurrentSort(undefined)
setMode("normal")
}, setKeyEnableDefine(keymap['sortClear'].enable))

useHotkeys(keymap['sortCreationDate'].keys, (e) => {
setCurrentSort("creationDate")
setMode("normal")
}, setKeyEnableDefine(keymap['sortCreationDate'].enable))

useHotkeys(keymap['sortContext'].keys, (e) => {
setCurrentSort("context")
setMode("normal")
}, setKeyEnableDefine(keymap['sortContext'].enable))

useHotkeys(keymap['sortCompletion'].keys, (e) => {
setCurrentSort("isCompletion")
setMode("normal")
}, setKeyEnableDefine(keymap['sortCompletion'].enable))


// change command mode
// useHotkeys(':', (e) => {
Expand Down Expand Up @@ -312,7 +336,7 @@ export const Todo = () => {
<div className="flex items-center border-b truncate bg-white">
<input
tabIndex={-1}
className={`text-left truncate outline-none bg-transparent focus:bg-gray-100`}
className={`text-left truncate outline-none bg-transparent focus:bg-gray-100 focus:h-auto h-0`}
type="text"
maxLength={prefix === 'priority' ? 1 : -1}
{...register(`newtask`)}
Expand Down Expand Up @@ -400,7 +424,7 @@ export const Todo = () => {
filterdTodos.map((t, i) => {
return (
<div key={`debug:${t.id}`} className="py-2 border-b-2">
{Object.entries(t).map(([key, val]) => key === "id" || key === "text" ? <div key={`debug:${key}`}>{key}:{val}</div> : undefined)}
{Object.entries(t).map(([key, val]) => (key === "id" || key === "text" || key === "priority" || key === "project") ? <div key={`debug:${key}`}>{key}:{val ?? "undefined or null"}</div> : undefined)}
</div>
)
})
Expand Down
2 changes: 1 addition & 1 deletion src/types.ts
Expand Up @@ -10,5 +10,5 @@ export interface TodoProps {
}


export type Sort = "text" | "priority" | "context" | "creationDate" | undefined
export type Sort = "text" | "priority" | "context" | "creationDate" | "isCompletion" | undefined
export type Mode = "normal" | "edit" | "editOnSort" | "sort" | "command"

0 comments on commit 11876e7

Please sign in to comment.