feat: 实现目标列表左滑删除功能及相关组件
- 在目标列表中添加左滑删除功能,用户可通过左滑手势显示删除按钮并确认删除目标 - 修改 GoalCard 组件,使用 Swipeable 组件包装卡片内容,支持删除操作 - 更新目标列表页面,集成删除目标的逻辑,确保与 Redux 状态管理一致 - 添加开发模式下的模拟数据,方便测试删除功能 - 更新相关文档,详细描述左滑删除功能的实现和使用方法
This commit is contained in:
@@ -220,8 +220,15 @@ export async function fetchHealthDataForDate(date: Date): Promise<TodayHealthDat
|
||||
// 获取最新的血氧饱和度值
|
||||
const latestOxygen = res[res.length - 1];
|
||||
if (latestOxygen && latestOxygen.value !== undefined && latestOxygen.value !== null) {
|
||||
let value = Number(latestOxygen.value);
|
||||
|
||||
// 检查数据格式:如果值小于1,可能是小数形式(0.0-1.0),需要转换为百分比
|
||||
if (value > 0 && value < 1) {
|
||||
value = value * 100;
|
||||
console.log('血氧饱和度数据从小数转换为百分比:', latestOxygen.value, '->', value);
|
||||
}
|
||||
|
||||
// 血氧饱和度通常在0-100之间,验证数据有效性
|
||||
const value = Number(latestOxygen.value);
|
||||
if (value >= 0 && value <= 100) {
|
||||
resolve(Number(value.toFixed(1)));
|
||||
} else {
|
||||
@@ -346,3 +353,66 @@ export async function updateWeight(weight: number) {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// 新增:测试血氧饱和度数据获取
|
||||
export async function testOxygenSaturationData(date: Date = new Date()): Promise<void> {
|
||||
console.log('=== 开始测试血氧饱和度数据获取 ===');
|
||||
|
||||
const start = dayjs(date).startOf('day').toDate();
|
||||
const end = dayjs(date).endOf('day').toDate();
|
||||
|
||||
const options = {
|
||||
startDate: start.toISOString(),
|
||||
endDate: end.toISOString()
|
||||
} as any;
|
||||
|
||||
return new Promise((resolve) => {
|
||||
AppleHealthKit.getOxygenSaturationSamples(options, (err, res) => {
|
||||
if (err) {
|
||||
console.error('获取血氧饱和度失败:', err);
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('原始血氧饱和度数据:', res);
|
||||
|
||||
if (!res || !Array.isArray(res) || res.length === 0) {
|
||||
console.warn('血氧饱和度数据为空');
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
// 分析所有数据样本
|
||||
res.forEach((sample, index) => {
|
||||
console.log(`样本 ${index + 1}:`, {
|
||||
value: sample.value,
|
||||
valueType: typeof sample.value,
|
||||
startDate: sample.startDate,
|
||||
endDate: sample.endDate
|
||||
});
|
||||
});
|
||||
|
||||
// 获取最新的血氧饱和度值
|
||||
const latestOxygen = res[res.length - 1];
|
||||
if (latestOxygen && latestOxygen.value !== undefined && latestOxygen.value !== null) {
|
||||
let value = Number(latestOxygen.value);
|
||||
|
||||
console.log('处理前的值:', latestOxygen.value);
|
||||
console.log('转换为数字后的值:', value);
|
||||
|
||||
// 检查数据格式:如果值小于1,可能是小数形式(0.0-1.0),需要转换为百分比
|
||||
if (value > 0 && value < 1) {
|
||||
const originalValue = value;
|
||||
value = value * 100;
|
||||
console.log('血氧饱和度数据从小数转换为百分比:', originalValue, '->', value);
|
||||
}
|
||||
|
||||
console.log('最终处理后的值:', value);
|
||||
console.log('数据有效性检查:', value >= 0 && value <= 100 ? '有效' : '无效');
|
||||
}
|
||||
|
||||
console.log('=== 血氧饱和度数据测试完成 ===');
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user