news 2026/7/7 19:40:44

Cordova与OpenHarmony运动目标管理系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cordova与OpenHarmony运动目标管理系统

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。

目标驱动的运动

运动目标是激励用户坚持运动的重要因素。通过Cordova框架与OpenHarmony的数据管理能力,我们可以构建一个完整的目标管理系统。本文将介绍这个系统的实现。

目标数据模型

classFitnessGoal{constructor(name,type,targetValue,deadline){this.id=generateUUID();this.name=name;this.type=type;// 'distance', 'duration', 'calories', 'frequency'this.targetValue=targetValue;this.currentValue=0;this.deadline=deadline;this.createdAt=newDate().getTime();this.status='active';this.progress=0;}updateProgress(newValue){this.currentValue=newValue;this.progress=(this.currentValue/this.targetValue)*100;if(this.progress>=100){this.status='completed';}}isOverdue(){returnnewDate().getTime()>this.deadline&&this.status!=='completed';}}

FitnessGoal类定义了运动目标的数据结构。每个目标包含名称、类型、目标值和截止日期等信息。通过updateProgress方法,我们可以实时更新目标的完成进度。isOverdue方法检查目标是否已过期。

目标存储与检索

asyncfunctionsaveGoal(goal){constdb=awaitopenDatabase('SportsDB');consttransaction=db.transaction(['goals'],'readwrite');conststore=transaction.objectStore('goals');constgoalData={id:goal.id,name:goal.name,type:goal.type,targetValue:goal.targetValue,currentValue:goal.currentValue,deadline:goal.deadline,status:goal.status,progress:goal.progress};store.add(goalData);returnnewPromise((resolve,reject)=>{transaction.oncomplete=()=>resolve(goal.id);transaction.onerror=()=>reject(transaction.error);});}

这段代码实现了目标的数据库存储。通过IndexedDB的事务机制,我们确保了数据的一致性。每个目标都被存储为一个完整的对象,包含所有必要的信息。

目标进度追踪

functiontrackGoalProgress(goal,newWorkoutData){letprogressIncrement=0;switch(goal.type){case'distance':progressIncrement=newWorkoutData.distance;break;case'duration':progressIncrement=newWorkoutData.duration;break;case'calories':progressIncrement=newWorkoutData.calories;break;case'frequency':progressIncrement=1;break;}goal.updateProgress(goal.currentValue+progressIncrement);if(goal.progress>=100){triggerGoalCompletionNotification(goal);}elseif(goal.progress>=75){triggerGoalAlmostCompleteNotification(goal);}returngoal;}

这个函数根据新的运动数据更新目标进度。根据目标类型的不同,我们计算相应的进度增量。当目标完成或即将完成时,系统会触发相应的通知。这种实时追踪方式能够激励用户坚持运动。

目标可视化展示

functionrenderGoalCard(goal){constcard=document.createElement('div');card.className='goal-card harmony-card';constprogressPercentage=Math.min(goal.progress,100);constdaysRemaining=Math.ceil((goal.deadline-newDate().getTime())/(1000*60*60*24));card.innerHTML=`<div class="goal-header"> <h3>${goal.name}</h3> <span class="goal-status${goal.status}">${goal.status}</span> </div> <div class="goal-progress"> <div class="progress-bar"> <div class="progress-fill" style="width:${progressPercentage}%"></div> </div> <div class="progress-text">${goal.currentValue}/${goal.targetValue}${getUnitForType(goal.type)}</div> </div> <div class="goal-deadline"> 剩余时间:${daysRemaining}天 </div>`;returncard;}

目标卡片以可视化的方式展示目标信息。这个函数创建了一个包含目标名称、进度条、当前进度和剩余时间的卡片。通过这种直观的展示方式,用户能够清晰地了解自己的目标进度。

目标提醒系统

functionsetupGoalReminders(goal){constreminders=[];// 50%进度提醒constfiftyPercentValue=goal.targetValue*0.5;reminders.push({triggerValue:fiftyPercentValue,message:`你已完成50%的目标"${goal.name}",继续加油!`});// 75%进度提醒constseventyFivePercentValue=goal.targetValue*0.75;reminders.push({triggerValue:seventyFivePercentValue,message:`你已完成75%的目标"${goal.name}",就快完成了!`});// 截止日期前3天提醒constthreeDaysBeforeDeadline=goal.deadline-(3*24*60*60*1000);reminders.push({triggerTime:threeDaysBeforeDeadline,message:`目标"${goal.name}"还有3天就要截止了,加紧完成吧!`});reminders.forEach(reminder=>scheduleReminder(reminder));}

目标提醒系统在关键时刻提醒用户。这个函数设置了多个提醒点,包括50%、75%进度和截止日期前3天。通过这些提醒,用户能够及时了解自己的目标进度,并保持动力。

目标建议系统

functionsuggestGoals(userProfile){constsuggestions=[];if(userProfile.averageWeeklyDistance<10){suggestions.push(newFitnessGoal('每周跑步10公里','distance',10,newDate().getTime()+(30*24*60*60*1000)));}if(userProfile.workoutFrequency<3){suggestions.push(newFitnessGoal('每周运动3次','frequency',3,newDate().getTime()+(30*24*60*60*1000)));}if(userProfile.averageCaloriesBurned<500){suggestions.push(newFitnessGoal('每次运动消耗500卡路里','calories',500,newDate().getTime()+(30*24*60*60*1000)));}returnsuggestions;}

目标建议系统根据用户的运动历史提供个性化的目标建议。这个函数分析用户的运动数据,识别出可以改进的方面,并提出相应的目标。通过这种个性化的建议,用户能够制定更合理的运动计划。

目标完成奖励

functionrewardGoalCompletion(goal){constreward={points:calculateRewardPoints(goal),badge:generateBadge(goal),achievement:recordAchievement(goal)};// 计算奖励积分functioncalculateRewardPoints(goal){letbasePoints=100;constdaysToComplete=(goal.deadline-goal.createdAt)/(1000*60*60*24);constcompletionBonus=Math.max(0,50-daysToComplete);returnbasePoints+completionBonus;}// 生成成就徽章functiongenerateBadge(goal){constbadges={'distance':'🏃 距离达人','duration':'⏱️ 耐力王者','calories':'🔥 燃脂专家','frequency':'📅 坚持达人'};returnbadges[goal.type];}returnreward;}

目标完成奖励系统激励用户完成目标。这个函数计算奖励积分、生成成就徽章和记录成就。通过提供这些奖励,我们能够增强用户的成就感,激励他们继续运动。

总结

运动目标管理系统通过Cordova与OpenHarmony的结合,提供了完整的目标管理和激励机制。从目标创建到进度追踪,从可视化展示到智能提醒,这个系统为用户提供了全面的目标管理功能。通过个性化的建议和完成奖励,我们能够有效地激励用户坚持运动,实现自己的健身目标。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 11:09:31

一个基于 .NET + Vue3 开源、免费、精美的通用业务型后台管理系统

致力于挖掘功能强大、性能优越、创新前沿且简单易用的 C#/.NET 开源框架、项目、类库与工具。助力 .NET 开发者轻松解锁并运用这些实用的宝藏资源&#xff0c;提升开发效率与创新能力&#xff01;项目概述SimpleAdmin 是一个基于 .NET Vue3 开发的通用业务型后台管理系统&…

作者头像 李华
网站建设 2026/7/7 18:48:11

如何为LobeChat添加身份认证以保护内部AI系统安全?

如何为 LobeChat 添加身份认证以保护内部 AI 系统安全 在企业逐步将大语言模型&#xff08;LLM&#xff09;引入办公流程的今天&#xff0c;一个直观、易用的前端界面往往决定了 AI 工具能否真正落地。LobeChat 凭借其现代化的设计、对多种模型的无缝支持以及灵活的插件体系&a…

作者头像 李华
网站建设 2026/7/6 18:53:07

数据编目与元数据管理:不可不知的关系

数据编目与元数据管理&#xff1a;像图书馆管理员和藏书索引的共生密码 关键词 数据编目、元数据管理、数据治理、数据资产、元数据模型、数据目录、数据发现 摘要 你有没有过这样的经历&#xff1f;打开企业的数据平台&#xff0c;看到几百张表名像乱码的数据库表&#xff08;…

作者头像 李华
网站建设 2026/7/6 19:08:53

Safari浏览器特殊配置:iOS设备上的最佳实践

Safari浏览器特殊配置&#xff1a;iOS设备上的最佳实践 在移动互联网高度成熟的今天&#xff0c;用户早已不再满足于“能用”的网页体验——他们期待的是流畅、智能、无缝的交互。而当你的 Web 应用承载着语音识别、实时流式响应、文件上传等复杂功能时&#xff0c;一个看似普…

作者头像 李华
网站建设 2026/7/7 15:09:10

大数据升级之路 | Storm理论详解

随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍&#xff0c;比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等&#xff0c;大数据实时处理解决方案&#xff08;流计算&#xff09;的应用日趋广泛&#xff0c;目前已是分布式技术领域最新爆发点&#xff…

作者头像 李华
网站建设 2026/7/7 7:36:59

字节新论文:通过Context-Folding记忆折叠实现复杂Agent

摘要 今天一起看下字节新出论文《Scaling Long-Horizon LLM Agent via Context-Folding》。 在构建长程(Long-Horizon)Agent 时,上下文窗口的线性增长与注意力的二次方开销是制约模型推理能力与运行效率的核心瓶颈。不同于传统的 RAG 或基于摘要的被动压缩,字节提出的Cont…

作者头像 李华