Skip to content

feat(webui): 设备面板支持长按 3 秒后拖拽排序 #25#26

Merged
massif-01 merged 4 commits intoRMinte:mainfrom
massif-01:feat/25-device-panel-drag-sort
Mar 13, 2026
Merged

feat(webui): 设备面板支持长按 3 秒后拖拽排序 #25#26
massif-01 merged 4 commits intoRMinte:mainfrom
massif-01:feat/25-device-panel-drag-sort

Conversation

@massif-01
Copy link
Collaborator

关联 Issue

Closes #25

变更说明

设备面板中的数据组件和快捷操作卡片此前无法排序,本次新增「按住 3 秒后可拖拽排序」能力。

功能

  • 数据组件:在设备面板中按住组件 3 秒,进入拖拽模式后可调整顺序,顺序持久化到后端 API
  • 快捷操作:在设备面板中按住卡片 3 秒,进入拖拽模式后可调整顺序,顺序持久化到 localStorage(后端无排序 API)

实现要点

  • 新增 dragSort.js 通用长按拖拽工具,供两处复用
  • 事件委托 + document 级 pointer 监听,保证指针移出容器仍能收到事件
  • 支持 pointercancel、Escape 取消;语言切换时调用 stopSystemPageTimers 正确清理
  • PENDING 阶段在 document 监听 pointerup/pointercancel,避免移出容器松手仍触发拖拽

涉及文件

  • components/ts_webui/web/js/dragSort.js(新增)
  • components/ts_webui/web/index.html(引入脚本)
  • components/ts_webui/web/js/app.js(初始化、stopSystemPageTimers、refreshQuickActions)
  • components/ts_webui/web/css/style.css(拖拽态样式)
  • components/ts_webui/web/js/lang/*.js(文案)

- Add destroy_sessions_by_client() to free slots for re-login
- When session slots are full, evict existing sessions for the same
  client_id before creating new session
- Fixes 'Invalid credentials' on re-login after page refresh when
  slots were exhausted by orphaned sessions
- Bump version to 0.4.4
- ts_webui_api: 登录响应增加 expires_in,修复 ts_expires=NaN 导致 isLoggedIn 失效
- index.html: translateDOM 后调用 updateAuthUI,避免语言包异步加载覆盖已登录用户名
- build.yml: main 分支编译成功后自动创建 Release,tag 已存在时跳过
- 新增 dragSort.js 通用长按拖拽工具
- 数据组件与快捷操作卡片均可长按后拖拽排序
- 数据组件顺序持久化到 API,快捷操作顺序持久化到 localStorage
- 支持 pointercancel、Escape 取消,语言切换时正确清理
@massif-01 massif-01 merged commit 4a3a734 into RMinte:main Mar 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

设备面板:支持长按 3 秒后拖拽排序数据组件与快捷操作

1 participant