news 2026/5/15 19:34:35

旅行记录应用统计分析 - Cordova OpenHarmony 混合开发实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
旅行记录应用统计分析 - Cordova OpenHarmony 混合开发实战

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

📌 概述

统计分析功能提供了旅行数据的深度分析。用户可以查看旅行的统计数据,如总旅行数、总花费、平均花费等。统计分析还支持按目的地、时间等维度进行分析。在 Cordova 与 OpenHarmony 的混合开发框架中,统计分析需要实现复杂的数据计算和可视化。

🔗 完整流程

第一步:数据统计计算

统计分析需要对旅行数据进行各种计算,如求和、平均、最大值、最小值等。计算结果需要按不同维度进行分组和排序。

第二步:统计结果展示与可视化

统计结果可以以表格、图表等形式展示。用户可以选择不同的统计维度和时间范围。

第三步:原生层数据处理与缓存

OpenHarmony 原生层可以实现高性能的数据计算和缓存。原生层还可以实现图表的渲染。

🔧 Web 代码实现

统计分析页面 HTML 结构

<divid="statistics-page"class="page"><divclass="page-header"><h1>统计分析</h1></div><divclass="statistics-container"><divclass="stats-cards"><divclass="stat-card"><spanclass="stat-label">总旅行数</span><spanclass="stat-value"id="totalTrips">0</span></div><divclass="stat-card"><spanclass="stat-label">总花费</span><spanclass="stat-value"id="totalExpense">¥0</span></div><divclass="stat-card"><spanclass="stat-label">平均花费</span><spanclass="stat-value"id="avgExpense">¥0</span></div><divclass="stat-card"><spanclass="stat-label">总天数</span><spanclass="stat-value"id="totalDays">0</span></div></div><divclass="stats-chart"id="statsChart"><!-- 图表动态加载 --></div><divclass="stats-table"id="statsTable"><!-- 统计表格动态加载 --></div></div></div>

HTML 结构包含统计卡片、图表和表格。

加载统计数据函数

asyncfunctionloadStatistics(){try{// 获取所有旅行consttrips=awaitdb.getAllTrips();// 计算统计数据conststats=calculateStatistics(trips);// 更新统计卡片document.getElementById('totalTrips').textContent=stats.totalTrips;document.getElementById('totalExpense').textContent=`¥${stats.totalExpense}`;document.getElementById('avgExpense').textContent=`¥${stats.avgExpense}`;document.getElementById('totalDays').textContent=stats.totalDays;// 渲染统计表格renderStatisticsTable(stats.byDestination);}catch(error){console.error('Error loading statistics:',error);showToast('加载统计数据失败');}}

加载统计数据函数计算统计信息。

统计计算函数

functioncalculateStatistics(trips){lettotalTrips=trips.length;lettotalExpense=0;lettotalDays=0;constbyDestination={};trips.forEach(trip=>{// 累加花费totalExpense+=trip.expense||0;// 计算天数conststartDate=newDate(trip.startDate);constendDate=newDate(trip.endDate);constdays=Math.ceil((endDate-startDate)/(1000*60*60*24))+1;totalDays+=days;// 按目的地分组if(!byDestination[trip.destination]){byDestination[trip.destination]={count:0,expense:0,days:0};}byDestination[trip.destination].count++;byDestination[trip.destination].expense+=trip.expense||0;byDestination[trip.destination].days+=days;});constavgExpense=totalTrips>0?Math.round(totalExpense/totalDays):0;return{totalTrips,totalExpense,avgExpense,totalDays,byDestination};}

统计计算函数计算各种统计指标。

统计表格渲染函数

functionrenderStatisticsTable(byDestination){constcontainer=document.getElementById('statsTable');container.innerHTML='<h3>按目的地统计</h3>';consttable=document.createElement('table');table.className='stats-table';table.innerHTML=`<thead> <tr> <th>目的地</th> <th>次数</th> <th>总花费</th> <th>总天数</th> <th>平均花费</th> </tr> </thead> <tbody>${Object.entries(byDestination).map(([destination,stats])=>`<tr> <td>${destination}</td> <td>${stats.count}</td> <td>¥${stats.expense}</td> <td>${stats.days}</td> <td>¥${Math.round(stats.expense/stats.days)}</td> </tr>`).join('')}</tbody>`;container.appendChild(table);}

统计表格渲染函数展示按目的地的统计数据。

🔌 OpenHarmony 原生代码实现

统计分析插件

// StatisticsPlugin.etsimport{BusinessError}from'@ohos.base';exportclassStatisticsPlugin{// 处理统计数据加载事件onStatisticsLoaded(args:any,callback:Function):void{try{consttripCount=args[0].tripCount;consttotalExpense=args[0].totalExpense;console.log(`[Statistics] Loaded:${tripCount}trips, ¥${totalExpense}`);callback({success:true,message:'统计数据已加载'});}catch(error){callback({success:false,error:error.message});}}}

统计分析插件处理统计数据加载。

📝 总结

统计分析功能展示了如何在 Cordova 与 OpenHarmony 框架中实现一个数据分析系统。Web 层负责统计计算和 UI 展示,原生层负责高性能数据处理。通过统计分析,用户可以深入了解旅行数据。

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

LangFlow中的法律条款生成器:合同文书快速起草

LangFlow中的法律条款生成器&#xff1a;合同文书快速起草 在企业日常运营中&#xff0c;一份技术服务合同的初稿往往需要法务人员反复查阅模板、核对条款、调整措辞&#xff0c;耗时动辄数小时。而如今&#xff0c;借助AI工具&#xff0c;这一过程可以被压缩到几分钟——只需填…

作者头像 李华
网站建设 2026/5/15 12:36:23

GIS 数据转换:使用 GDAL 将 TXT 转换为 Shp 数据

前言 ❝ TXT 作为一种文本格式&#xff0c;可以很方便的存储一些简单几何数据。在 GIS 开发中&#xff0c;经常需要进行数据的转换处理&#xff0c;其中常见的便是将 TXT 转换为 Shp 数据进行展示。本篇教程在之前一系列文章的基础上讲解如如果你还没有看过&#xff0c;建议从以…

作者头像 李华
网站建设 2026/5/15 2:41:09

LangFlow中的A/B测试节点:比较不同提示词效果

LangFlow中的A/B测试节点&#xff1a;比较不同提示词效果 在构建基于大语言模型&#xff08;LLM&#xff09;的应用时&#xff0c;一个看似微小的改动——比如把“请解释”换成“你能告诉我吗&#xff1f;”——可能显著影响输出质量。然而&#xff0c;在实际开发中&#xff0c…

作者头像 李华
网站建设 2026/5/10 6:31:34

CANFD协议控制字段功能逐项解读

深入CAN FD控制字段&#xff1a;一位嵌入式工程师的实战解析最近在调试一个ADAS雷达节点时&#xff0c;我遇到了一个奇怪的问题&#xff1a;明明发送的是64字节的数据帧&#xff0c;接收端却只收到了8个字节&#xff0c;还报了CRC错误。花了整整两天排查硬件、示波器抓波形、翻…

作者头像 李华
网站建设 2026/5/2 16:12:06

LangFlow与用药提醒系统结合:慢性病患者管理工具

LangFlow与用药提醒系统结合&#xff1a;慢性病患者管理工具 在慢性病管理的日常实践中&#xff0c;一个看似简单却影响深远的问题始终存在&#xff1a;患者是否按时服药&#xff1f;据世界卫生组织统计&#xff0c;慢性病患者的平均用药依从性不足50%。这意味着&#xff0c;超…

作者头像 李华
网站建设 2026/5/13 18:14:52

LangFlow与简历筛选结合:HR招聘流程智能化

LangFlow与简历筛选结合&#xff1a;HR招聘流程智能化 在企业招聘一线&#xff0c;HR每天面对成百上千份简历&#xff0c;却仍不得不花费大量时间逐字阅读、手动比对岗位要求。这种高度重复的初筛工作不仅效率低下&#xff0c;还容易因疲劳导致误判。更棘手的是&#xff0c;当业…

作者头像 李华