首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Bluemix 提供的 IoT 和 GPS 服务提高您的健康水平(4)

使用 Bluemix 提供的 IoT 和 GPS 服务提高您的健康水平(4)

扩充数据您想在显示页使用的很多数据已经包含在 JSON 响应中。但您想通过一些额外的计算扩充这一原始 Fitbit 数据。与其创建另一个 JSON 对象,您可以扩大这一响应,然后使用嵌入式        JS (EJS) render 函数将您的 HTML 模板和该数据结合到用户看到的视图中。响应扩大工作大部分是在上一节 REST        调用中的这个回调函数中完成的。
代码包含一些数学函数,因此一个简短的解释有助于澄清这些函数。我创建了一个二维数组        welcome_messages。该数组基于两个变量(现在距下一天还有多长时间,以及用户距离其步数目标有多近),这两个变量成为鼓励、挑战或挖苦性地刺激用户的一列消息的索引。由于我仅为一天的        4 个 “象限”(0-25%,25-50%,50-75% 和 75-100%)创建了 4 条不同的消息,您必须将一天已过去的时间的百分比转化为数字 0、1、2 或        3,以作为数组的索引。
类似地,必须将用户 Fitbit 步数目标的实现率转化为同样的 4        个索引。将两个索引组合起来生成适当的消息。这里显示的数学函数将那些百分比转化为这个索引,另外还计算了步数目标实现百分比的 “上限”,因为您可能会超过当天的步数目标,但只有 4        条消息可用,所以最高的数组索引必须是 3:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function(respData) {
  //check for error codes:
  if (!handleError(respData, curDateTime)) {
    //if no errors, augment data with added display info
    var dayMsgIndex = Math.ceil(percentOfDay/100*4 - 1);
    var percentGoal = respData.summary.steps/respData.goals.steps;
    //since you can surpass the goal in steps, max at "100%" response
    var goalMsgIndex = Math.min(Math.ceil(percentGoal*4 - 1), 3);
    //add one of our canned messages to the JSON data
    respData["welcome_msg"] = messages.welcome_messages[dayMsgIndex][goalMsgIndex];
    respData["daypercent"] = percentOfDay;
  }

  res.render('iotview', respData)
}




渲染 EJS 模板(名为        iotview.ejs)中的响应数据的是一个仪表板,其中显示了用户的步数,并且基于当天时间和已完成步数显示有关用户进度的一条可能有帮助(或挖苦)的消息:
您使用 Wearable Fitness 服务 API 成功查询并显示了一些基本信息,但帮助用户 “get moar steps”        的承诺如何履行呢?应用程序的第二部分专门侧重于这个方面。
返回列表