在App Maker的表格小部件中显示每个用户的记录

时间:2019-03-07 11:56:55

标签: user-interface widget report google-app-maker

我的第一个App Maker应用程序快要完成了(学到了很多东西,感谢到目前为止的帮助!)。当用户登录和退出工作站点时,该应用程序当前会收集时间戳数据。由于离开和返回之间的时间可能需要几个小时,而且由于App Maker是基于浏览器的,所以我最初遇到的问题是用户无法完成记录并点击Time_IN按钮。我通过将 Time IN 按钮移动到记录页面上的弹出窗口来解决此问题,因此当用户返回工作位置时,他们可以打开记录,点击 Time IN 并继续前进。很简单,对吧?

New Time IN method

我现在的麻烦是,除非我让他们成为管理员,否则用户将无法在 UserRecords 页上看到他们自己的记录,但是这样一来,它不仅授予他们访问整个表的权限,还显示了所有用户的所有记录。导航菜单最初具有我删除的以下代码段:

(@user.roles).indexOf('Admins', 'Managers') !== -1

但是我不确定是否错过了某些内容,因为问题似乎仍然部分基于用户角色?这是数据源字段的图像,此应用程序中只有两种模型:GatePass(如图所示)和Directory(用于用户选择器)。

Datasource Fields

导出看起来像这样(并且想法是让每个用户获得他们自己的数据,而不是整个源表):

Export data

此外,这是用户输入页面现在的外观(如果有帮助),我设法在onBeforeCreate中使用record.Email = Session.getActiveUser().getEmail();自动填充用户电子邮件:

User Entry Latest

简而言之,用户应该只在 UserRecords 页面上查看其记录,以便他们可以访问并完成其提交。他们的出口也是如此。谁能帮忙吗?

1 个答案:

答案 0 :(得分:1)

在您的模型中,转到 DATASOURCES 标签。如果显示的数据源不止一个,则由您选择合适的数据源。确保取消选中自动加载数据选项。

enter image description here

接下来,转到表所在的页面。然后在表 onAttach 事件上输入以下内容:

var ds = widget.datasource;
if(!app.user.role.Admins){
  ds.query.filters.Email._equals = app.user.email;
}
ds.load();

应该可以解决问题。关于管理员角色的权限问题,请确保模型具有适当的权限。为此,请使用模型的安全 标签,并确保设置适当的权限。

enter image description here

参考文献:

https://developers.google.com/appmaker/security/secure-app-data https://developers.google.com/appmaker/models/datasources