mirror of
https://github.com/hibiken/asynq.git
synced 2025-10-25 23:06:12 +08:00
(cli): Disable arrow keys while modal is open
This commit is contained in:
@@ -107,7 +107,7 @@ func (h *keyEventHandler) downKeyQueueDetails() {
|
|||||||
} else {
|
} else {
|
||||||
state.groupTableRowIdx = 0 // loop back
|
state.groupTableRowIdx = 0 // loop back
|
||||||
}
|
}
|
||||||
} else {
|
} else if state.taskID == "" {
|
||||||
if state.taskTableRowIdx < len(state.tasks) {
|
if state.taskTableRowIdx < len(state.tasks) {
|
||||||
state.taskTableRowIdx++
|
state.taskTableRowIdx++
|
||||||
} else {
|
} else {
|
||||||
@@ -144,7 +144,7 @@ func (h *keyEventHandler) upKeyQueueDetails() {
|
|||||||
} else {
|
} else {
|
||||||
state.groupTableRowIdx--
|
state.groupTableRowIdx--
|
||||||
}
|
}
|
||||||
} else {
|
} else if state.taskID == "" {
|
||||||
if state.taskTableRowIdx == 0 {
|
if state.taskTableRowIdx == 0 {
|
||||||
state.taskTableRowIdx = len(state.tasks)
|
state.taskTableRowIdx = len(state.tasks)
|
||||||
} else {
|
} else {
|
||||||
@@ -215,7 +215,7 @@ func (h *keyEventHandler) handleLeftKey() {
|
|||||||
f = h.fetcher
|
f = h.fetcher
|
||||||
d = h.drawer
|
d = h.drawer
|
||||||
)
|
)
|
||||||
if state.view == viewTypeQueueDetails {
|
if state.view == viewTypeQueueDetails && state.taskID == "" {
|
||||||
state.taskState = prevTaskState(state.taskState)
|
state.taskState = prevTaskState(state.taskState)
|
||||||
state.pageNum = 1
|
state.pageNum = 1
|
||||||
state.taskTableRowIdx = 0
|
state.taskTableRowIdx = 0
|
||||||
@@ -233,7 +233,7 @@ func (h *keyEventHandler) handleRightKey() {
|
|||||||
f = h.fetcher
|
f = h.fetcher
|
||||||
d = h.drawer
|
d = h.drawer
|
||||||
)
|
)
|
||||||
if state.view == viewTypeQueueDetails {
|
if state.view == viewTypeQueueDetails && state.taskID == "" {
|
||||||
state.taskState = nextTaskState(state.taskState)
|
state.taskState = nextTaskState(state.taskState)
|
||||||
state.pageNum = 1
|
state.pageNum = 1
|
||||||
state.taskTableRowIdx = 0
|
state.taskTableRowIdx = 0
|
||||||
|
|||||||
@@ -164,6 +164,48 @@ func TestKeyEventHandler(t *testing.T) {
|
|||||||
taskID: "", // this field should be unset
|
taskID: "", // this field should be unset
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
desc: "Arrow keys are disabled while task info modal is open",
|
||||||
|
state: &State{
|
||||||
|
view: viewTypeQueueDetails,
|
||||||
|
queues: []*asynq.QueueInfo{
|
||||||
|
{Queue: "default", Size: 500, Active: 10, Pending: 40},
|
||||||
|
},
|
||||||
|
queueTableRowIdx: 1,
|
||||||
|
selectedQueue: &asynq.QueueInfo{Queue: "default", Size: 50, Active: 10, Pending: 40},
|
||||||
|
taskState: asynq.TaskStatePending,
|
||||||
|
pageNum: 1,
|
||||||
|
tasks: []*asynq.TaskInfo{
|
||||||
|
{ID: "xxxx", Type: "foo"},
|
||||||
|
{ID: "yyyy", Type: "bar"},
|
||||||
|
{ID: "zzzz", Type: "baz"},
|
||||||
|
},
|
||||||
|
taskTableRowIdx: 2,
|
||||||
|
taskID: "yyyy", // presence of this field opens the modal
|
||||||
|
},
|
||||||
|
events: []*tcell.EventKey{
|
||||||
|
tcell.NewEventKey(tcell.KeyLeft, ' ', tcell.ModNone),
|
||||||
|
},
|
||||||
|
|
||||||
|
// no change
|
||||||
|
wantState: State{
|
||||||
|
view: viewTypeQueueDetails,
|
||||||
|
queues: []*asynq.QueueInfo{
|
||||||
|
{Queue: "default", Size: 500, Active: 10, Pending: 40},
|
||||||
|
},
|
||||||
|
queueTableRowIdx: 1,
|
||||||
|
selectedQueue: &asynq.QueueInfo{Queue: "default", Size: 50, Active: 10, Pending: 40},
|
||||||
|
taskState: asynq.TaskStatePending,
|
||||||
|
pageNum: 1,
|
||||||
|
tasks: []*asynq.TaskInfo{
|
||||||
|
{ID: "xxxx", Type: "foo"},
|
||||||
|
{ID: "yyyy", Type: "bar"},
|
||||||
|
{ID: "zzzz", Type: "baz"},
|
||||||
|
},
|
||||||
|
taskTableRowIdx: 2,
|
||||||
|
taskID: "yyyy", // presence of this field opens the modal
|
||||||
|
},
|
||||||
|
},
|
||||||
// TODO: Add more tests
|
// TODO: Add more tests
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user