Files
LanMountainDesktop/docs/archive/ZHIJIAO_HUB_COMPONENT_FINAL.md

129 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

2026-03-29 15:34:17 +08:00
# 智教Hub组件 - 最终实现总结
## 功能特性
### 核心功能
-**最小尺寸 2×2** - 符合要求
-**自由缩放** - ResizeMode.Free允许任意调整大小
-**双数据源** - ClassIsland Hub 和 SECTL Hub
-**上下滑动切换** - 像短视频一样的交互体验
-**鼠标滚轮支持** - 滚轮上下滚动切换图片
-**图片名称显示** - 左下角显示当前图片名称
-**自动刷新** - 可配置间隔,可开启/关闭
-**设置面板** - 数据源切换、自动刷新配置
### 交互方式
1. **触摸/鼠标拖动**: 上下拖动超过50px切换图片
2. **鼠标滚轮**: 滚轮上下滚动切换图片
3. **自动刷新**: 定时刷新图片列表
## 技术实现
### 文件清单
| 文件 | 说明 |
|------|------|
| `Models/ComponentSettingsSnapshot.cs` | 配置字段 + ZhiJiaoHubSources常量 |
| `Services/IRecommendationDataService.cs` | 数据接口和类型定义 |
| `Services/RecommendationDataService.cs` | GitHub API数据获取实现 |
| `Views/Components/ZhiJiaoHubWidget.axaml` | 组件UI布局 |
| `Views/Components/ZhiJiaoHubWidget.axaml.cs` | 组件逻辑(滑动交互) |
| `Views/ComponentEditors/ZhiJiaoHubComponentEditor.axaml` | 设置编辑器UI |
| `Views/ComponentEditors/ZhiJiaoHubComponentEditor.axaml.cs` | 设置编辑器逻辑 |
| `ComponentSystem/BuiltInComponentIds.cs` | 组件ID常量 |
| `ComponentSystem/ComponentRegistry.cs` | 组件注册 |
| `Views/Components/DesktopComponentRuntimeRegistry.cs` | 运行时注册 |
| `Services/DesktopComponentEditorRegistryFactory.cs` | 编辑器注册 |
| `Views/MainWindow.ComponentSystem.cs` | 比例约束 |
### 滑动交互实现
```csharp
// 核心滑动逻辑
private void OnPointerPressed(object? sender, PointerPressedEventArgs e)
{
_isDragging = true;
_dragStartPoint = e.GetPosition(this);
}
private void OnPointerMoved(object? sender, PointerEventArgs e)
{
if (!_isDragging) return;
var currentPoint = e.GetPosition(this);
_dragOffset = currentPoint.Y - _dragStartPoint.Y;
}
private void OnPointerReleased(object? sender, PointerReleasedEventArgs e)
{
if (!_isDragging) return;
_isDragging = false;
// 超过阈值切换图片
if (Math.Abs(_dragOffset) > SwipeThreshold)
{
if (_dragOffset > 0) SwitchToPrevImage(); // 向下滑动
else SwitchToNextImage(); // 向上滑动
}
}
```
### 数据源
| 源 | API地址 | 图片数量 |
|----|---------|----------|
| ClassIsland Hub | api.github.com/repos/ClassIsland/classisland-hub/contents/images | ~70张 |
| SECTL Hub | api.github.com/repos/SECTL/SECTL-hub/contents/docs/.vuepress/public/images | ~78张 |
### 缓存策略
- 图片列表缓存1小时
- 图片缓存最多5张当前+前后各1张
- 预加载:自动加载相邻图片
## 设置选项
### 数据源选择
- ClassIsland Hub默认
- SECTL Hub
### 自动刷新
- 开关:开启/关闭
- 间隔5-1440分钟默认30分钟
## 构建状态
**构建成功** - 无错误
```
23 个警告(与本次修改无关)
0 个错误
```
## 使用说明
### 添加组件
1. 进入桌面编辑模式
2. 从组件库选择 "ZhiJiao Hub"
3. 最小2×2可自由调整大小
### 浏览图片
- **上下滑动**:像短视频一样切换图片
- **鼠标滚轮**:滚动切换
- **指示器**:右侧显示当前位置
### 切换数据源
1. 选中组件,点击设置按钮
2. 选择 "Image Source"
3. 选择 ClassIsland 或 SECTL
### 配置自动刷新
1. 在设置面板中开关 "Auto Refresh"
2. 设置刷新间隔(分钟)
## 后续优化建议
1. **动画效果**: 添加滑动时的图片过渡动画
2. **本地缓存**: 持久化图片到本地磁盘
3. **收藏功能**: 允许用户收藏喜欢的图片
4. **分享功能**: 分享图片链接
5. **更多源**: 添加更多教育技术社区图片源