*这篇文章是上一篇文章的延续。本文假设在上一篇文章中创建了环境,所以如果你还没有这样做,请参考这篇文章。
本文解释了AppGyver应用中调用和显示上一篇文章中HANA云的BLOB类型列中存储的图像数据的部分。
为AppGyver应用程序进行额外开发
添加页面
在这种情况下,我们想创建一个函数,显示一个图像ID的列表,当你点击它时,显示一个图像。你可以在同一个页面上创建,但我们希望为这个功能添加一个单独的页面。
添加一个名为GetImage的新页面。

此外,在导航功能中把这个新添加的页面添加到导航菜单。

这将使你能够在智能手机屏幕底部的导航菜单中导航到这个新添加的页面。
添加数据资源
有一种现象似乎是当前AppGyver的规范,上次定义的OData集成资源无法按预期获取数据。添加一个新的REST API直接集成资源,即BlobTest的OData服务。
与OData集成资源不同,ResourceURL必须输入到实际的服务,/incident/BlobTest,而不是元数据。URL必须输入到实际执行服务的地方,也就是/incident/BlobTest,而不是元数据。

这次只使用了GET COLLECTION(获取)。
记住要把资源键路径设置为值。(如果你将OData资源设置为REST API资源,这是必要的)。还有。

添加$select作为查询参数。这应该被设置为

是静态的应该设置为True,ID为Value。这将添加一个带有?$select=ID将被赋予并执行,意味着只检索ID列。
让我们用TEST运行它。

然后点击SET SCHEMA FROM RESPONSE。
最终的模式设置将看起来像这样

这就完成了数据资源的配置。
余談:REST API Direct Integrationで設定した理由
前回設定したODataリソースを使用しようとしたのですが、以下の理由で今回は断念しています。
・$selectによるフィルタが現状のODataリソースでは出来なかった。
IDの一覧表示の場合はIDカラムだけのデータが欲しかったのですが、ODataリソースの場合この設定が出来ませんでした。
このためREST APIとして設定して回避しています。これは今後改善されると思われますのでこのブログ公開時点のものと考えて下さい。
テスト機能では$select指定が出来るのですが、実使用の際に引数を与えられないのが謎ですね。
设置变量。
在这个屏幕上设置页面变量。

设置Imagedata和mimetype的文本类型,像这样。这将被用来保存从OData收到的同名列的值。
开发屏幕和逻辑
该屏幕应具有以下简单的结构

一个可滚动的基本列表被放置在滚动视图内。一个图像被放在它的下面。
滚动视图被固定在30%的高度,因此如果有更多的列表需要显示,它们将被滚动到那里。
可滚动基本列表的设置是

刷新数据?"被设置为 "True",刷新率被设置为5000毫秒,因为我们希望数据能自动刷新。
列表资源中的设置是

在公式中,内容和标签被赋予了空字符串,因此没有任何东西被显示。
在这个可滚动的基本列表中设置了以下逻辑。

这个可滚动的基本列表有一个有用的属性tappeditem.id。这将返回(最后)被点击的项目的ID值。这个ID值是属性List Resource中分配给id的值。这意味着,在这种情况下,你可以通过参考tappeditem.id来获得那里显示的ID值。
使用这个功能,你可以首先使用获取记录(而不是获取记录集合!)。在。

指定这个tappeditem.id作为ID。这将导致对/incident/BlobTest(<tappeditem.id>)的OData调用,并且只检索到该ID的数据。
随后的设置页面变量将从该获取记录返回的Imagedata和mimetype分配给各自的页面变量。
放在ScrollView底部的图片是

用这样的表达方式来设置。
这篇文章的重点是,事实上,这里给出的参数是Source,也可以设置成数据URI格式。这在这里被设定为一个公式,具体如下。
"data:image/"+ pageVars.mimetype + ";base64," + REPLACE_ALL(REPLACE_ALL(pageVars.Imagedata, '_', '/'), '-', '+')
OData发送的Base64字符串是否称为URL的Base64数据格式?我不确定官方名称,但它是以一种格式发送的,其中"/"原来是"_","+"是"-"。然后将其还原为原始格式,并格式化为数据URI格式。(这就是为什么我使用mimetype来获取扩展名)。
这个表达式在输入时将显示一个红色的错误信息,但请按原样保存。
测试。
现在我们已经完成了逻辑的构建,我们要对它进行测试。
点屏幕底部导航菜单中的GetImage按钮来改变页面。

如果逻辑上没有问题,你应该看到你注册的照片的ID列表,如上所示。
点选你想从列表中显示的照片的ID。

如果注册的照片是这样显示的,你就成功了。
情况如何?这种方法也可用于其他应用,所以请试一试。