使用 OData 模型在间隔时间内更改表的单元格

2024-05-22

我有这段代码,我需要我的表格显示前 10 位患者,并在 10 秒后显示接下来的 10 位患者,而无需触摸任何按钮(自动)。

我正在寻找与此类似的东西:https://embed.plnkr.co/ioh85m5OtPmcvPHyl3Bg/ https://embed.plnkr.co/ioh85m5OtPmcvPHyl3Bg/

但是使用 OData 模型(如我的视图和控制器上指定的)。

这是我的观点:

<Table id="tablaPacientes" items="{/EspCoSet}">
  <columns>
    <!-- ... -->
  </columns>
  <ColumnListItem>
    <ObjectIdentifier title="{Bett}" />
    <!-- ... -->
  </ColumnListItem>
</Table>

这是我的控制器:

onInit: function () {
  var oModel = this.getOwnerComponent().getModel("zctv");
  this.getView().setModel(oModel);
},

onBeforeRendering: function () { // method to get the local IP because I need it for the OData
  var ipAddress;
  var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
  var self = this;

  function grepSDP (sdp) {
    var ip = /(192\.168\.(0|\d{0,3})\.(0|\d{0,3}))/i;
    sdp.split('\r\n').forEach(function (line) {
      if (line.match(ip)) {
        ipAddress = line.match(ip)[0];
        self.setIp(ipAddress);
      }
    });
  }

  if (RTCPeerConnection) {
    (function () {
      var rtc = new RTCPeerConnection({
        iceServers: []
      });
      rtc.createDataChannel('', {
        reliable: false
      });
      rtc.onicecandidate = function (evt) {
        if (evt.candidate) {
          grepSDP(evt.candidate.candidate);
        }
      };
      rtc.createOffer(function (offerDesc) {
        rtc.setLocalDescription(offerDesc);
      }, function (e) {
        console.log("Failed to get Ip address");
      });
    })();
  }
},

setIp: function (ip) {
  this.getView().byId("planta").bindElement({
    path: "/CenTVSet('" + ip + "')"
  });
  var oModel = this.getView().getModel();
  var that = this;
  oModel.read("/CenTVSet('" + ip + "')", {
    success: function (oData, oRes) {
      var einri = oData.Einri;
      var orgpf = oData.Orgpf;
      var oTable = that.getView().byId("tablaPacientes");
      var oBinding = oTable.getBinding("items");
      var aFilters = [];
      var filterO = new Filter("Orgna", sap.ui.model.FilterOperator.EQ, orgpf);
      aFilters.push(filterO);
      var filterE = new Filter("Einri", sap.ui.model.FilterOperator.EQ, einri);
      aFilters.push(filterE);
      oBinding.filter(aFilters);
    }
  });
}

我搜索了一些函数,例如IntervalTrigger但我真的不知道如何在这个例子中使用它。


以下是一些小样本:

  • OData V4:https://embed.plnkr.co/4zIAH7q2E0lngbyX https://embed.plnkr.co/4zIAH7q2E0lngbyX?show=controller%2FRoot.controller.js,preview:%3Fsap-ui-xx-componentPreload%3Doff
  • OData V2:https://embed.plnkr.co/rNa0TktXiQqSCGJV https://embed.plnkr.co/rNa0TktXiQqSCGJV?show=controller%2FRoot.controller.js,preview:%3Fsap-ui-xx-componentPreload%3Doff
startList: function(listBase, $skip, $top, restInfo) {
  let startIndex = $skip;
  let length = $top;
  let totalSize;
  (function repeat(that) {
    const bindingInfo = Object.assign({ startIndex, length }, restInfo);
    listBase.bindItems(bindingInfo);
    listBase.data("repeater", event => {
      totalSize = event.getParameter("total"); // $count value
      startIndex += $top;
      startIndex = startIndex < totalSize ? startIndex : 0;
      setTimeout(() => repeat(that), 2000);
    }).attachEventOnce("updateFinished", listBase.data("repeater"), that);
  })(this);
},

stopList: function(listBase) {
  listBase.detachEvent("updateFinished", listBase.data("repeater"), this);
},

样本利用startIndex and length在列表中的绑定信息翻译为$skip and $top实体请求 URL 的系统查询。 IE。将这些系统查询附加到请求 URL(例如https://<host>/<service>/<EntitySet>?$skip=3&$top=3),应该返回正确的实体集.

列表绑定信息的其他选项可以在 UI5 文档中找到,正如我所解释的here https://stackoverflow.com/a/59158697/5846045.

JavaScript部分

该间隔是通过 IIFE(立即调用函数表达式)结合setTimeout代替setInterval.

setInterval具有以下缺点:

  • 回调不会立即调用。您必须先等待 10 秒才能触发第一个回调。
  • 不等待数据响应到达。这可能会导致跳过批次或将其显示的时间太短,因为无论服务器响应如何,延迟都会继续。

setTimeout相反,当应该请求下一批时提供更好的控制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OData 模型在间隔时间内更改表的单元格 的相关文章

随机推荐

  • MVC3 Controller 文件夹不会出现在 URL 中

    这只是一个例子 我不知道如何让它工作 在我的 MVC3 控制器文件夹中 如果我添加一个名为 Admin 的新文件夹 并添加一个带有操作 Index 的控制器 News 则当您尝试打开该 url 404 时 您会收到服务器错误 http ur
  • Eclipse 中的“自动插入通用前缀”有什么作用?

    我一直在寻找一种改进 Eclipse 中自动完成功能的方法 并且在首选项窗口的 Java gt 编辑器 gt 内容辅助部分中发现了此首选项设置 自动插入公共前缀 我想知道它有什么作用 因为我没有感觉到任何区别 帮助说 如果启用 代码辅助将自
  • 将文件从 Dropbox 下载到服务器

    我想从 Dropbox 下载文件 并需要代表 Dropbox 用户将其保留在我的服务器中 我尝试使用curl 和file get contents 但未能成功 我需要使用 dropbox 的任何 api 方法吗 我可以从浏览器下载该文件 但
  • 如何在Windows的node js中设置默认时区

    我正在尝试在应用程序启动时设置时区 set TZ UTC node main js 但这不起作用 main js var tz process env TZ var date new Date console log tz date UTC
  • DWR 如何转换传入数据并避免类型擦除

    我想请求一个集合的项目类 某种特定的反映 但是关于类型擦除似乎是不可能的 而且关于我在堆栈上读到的一些主题也是如此 有一些解决方法 here https stackoverflow com questions 8452893 avoidin
  • 在 MVC 4 中的另一个表单中验证 JQuery UI 模式表单

    我在 MVC 4 中有一个表单 其中包含多个字段 根据组合的值 我需要打开一个模式对话框表单并加载到这 3 个附加字段中 这些字段将影响我正在创建的同一实体 在主窗体中进行编辑 对于这个模式对话框 我使用的是 jQuery UI 中的对话框
  • Windows Azure 实例到底是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 在 Windows Azure 门户上 截至 2013 年 1 月 当我将 Windows Azure 网站实例从 1 扩展到 6 时 我会得到什么
  • 使用 .Net 创建 CalDAV 服务

    我想在我的应用程序中创建一个外部用户可以查看的日历 CalDAV 基本上是 WebDAV iCalendar 格式似乎得到了相对广泛的支持 尽管某些客户端 例如 Outlook 不太支持这种格式 不过对我来说完全是新的 我想外部发布事件 我
  • 哪些因素会导致 App Engine 请求中未跟踪时间的高度可变性?

    我刚刚对我的应用程序进行了负载测试 我注意到两个相同请求的延迟存在很大差异 3 秒与 30 秒 当我挖掘痕迹时 我发现了以下内容 Traced ms Untraced ms High latency Request 193 29948 Lo
  • CSS“内容”不起作用

    我想通过 CSS 添加该段落的文本 而不是在 HTML 中 因为它会随着网站的响应能力而变化 现在我无法让它工作 我想知道CSS是否有问题 另外 这是唯一可以做到的方法 使用纯 HTML 和 CSS 还是有另一种方法来定位文本并根据每个分辨
  • Google BigQuery,使用“unnest”函数时丢失了空行

    StandardSQL WITH tableA AS SELECT T001 T002 T003 AS T id 1 5 AS L id UNION ALL SELECT T008 T009 AS T id NULL AS L id SEL
  • 在 iPad 上显示 PDF 文档 - 颜色问题

    我为 iPad 构建了一个 PDF 阅读器 在将预览中的文档与模拟器和设备进行并排比较时 我注意到一些颜色问题 最好的形容就是颜色变得更加浓郁 近距离使用的相似颜色之间的任何差异都会变得更加明显 而所有颜色总体上看起来都更亮 尽管大肆宣传将
  • 在 VBScript 中,如何使用 mid 获取字符串并在“;”处分割字符串

    所以我对 VBScript 比较陌生 并且正在努力获取字符串并删除 拆分它 我目前有 id mid storeline id instr id storeline 1 我本质上想删除 之后的任何代码 例如 ID 12049302 Heigh
  • 转换为父类型——Java

    这实际上是一种验证 有没有any将子对象转换为父类型有好处吗 假设我有两个课程Parent and Child Child正在延伸Parent 有什么区别吗 代码 Parent p new Child and Parent p Parent
  • 在同一进程中混合 .NET 3.5 与 4/4.5 程序集

    我想将基于 NET 3 5 WinForms 的应用程序迁移到最新的 NET 版本 4 5 该应用程序使用当前也基于 NET 3 5 的 外部 组件 可以视为插件 我想知道我们转换时使用哪些运行时 核心库仅应用程序使用 NET 4 5 进行
  • 适合 .Net 开发人员的 Grails/Roo

    我目前正在学习 Grails 和 Roo 绝大多数培训材料都是针对新开发人员或现有 Java 开发人员 有谁知道使用 Net C ASP Net Asp Net MVC 翻译现有开发经验的任何指南 资源或技巧 你做过很多 ASP MVC 吗
  • MySQL SELECT OpenCarts 数据库中的重复行

    只是玩一下 OpenCart DB 看看我是否能学到一些东西 如果我使用以下SELECT结果返回重复的行 SELECT DISTINCT p product id AS pid p model AS modelo SUBSTRING p m
  • 对构建过程依赖于与另一个容器通信的应用程序进行 Docker 化

    我有一个 Ruby on Rails 应用程序 我正在尝试对其进行容器化 以便可以使用 Docker 进行部署 version 3 4 services db image postgres web container name my rai
  • 为什么在概念中使用 std::forward ?

    我正在读有关约束的 cppreference 页面 http en cppreference com w cpp language constraints并注意到这个例子 example constraint from the standa
  • 使用 OData 模型在间隔时间内更改表的单元格

    我有这段代码 我需要我的表格显示前 10 位患者 并在 10 秒后显示接下来的 10 位患者 而无需触摸任何按钮 自动 我正在寻找与此类似的东西 https embed plnkr co ioh85m5OtPmcvPHyl3Bg https