OpenRefine-只读实例



我想让一个OpenRefine实例可以用于数据探索,使用它的过滤、分面、集群和其他功能。但是用户(这将在网络上共享(不应该能够编辑任何内容。

一些想法,邀请更多或关于如何实现的线索

  • 将本地项目文件夹设为只读。

  • 使其不持久(即,用户进行更改,OpenRefine假装同意,但下次加载时,所有更改都消失了(。这实际上是在docker中本地发生的,在经历了一些挫折之后,我们学习了如何使用持久卷运行docker映像。但是,只有当关闭实例并重新启动时,数据的"重置"才会生效。我们如何才能使它在浏览器会话中不持久?

  • 在代码内部,如果有任何标志变量作为编辑决策的基础,那么我们可以稍微修改一下吗?在该路由中,通常位于顶部的黄色警报消息(表示编辑了这么多单元格(可能会显示类似"错误:编辑失败!"的内容。我们可以把它修改成更贴切的东西,比如"对不起,在这种情况下编辑被禁用了。">

我不认为有任何内置功能可以禁用编辑。您可以做的一件事是在后台禁用所有用于进行更改的API命令,但不能保证当用户触发这些操作时,UI会优雅地拒绝这些操作。

若要禁用API命令,请打开./main/webapp/modules/core/MOD-INF/controller.js文件。然后,您需要确定要禁用哪些命令。例如,你不希望用户删除项目,所以你应该删除

RS.registerCommand(module, "delete-project", new Packages.com.google.refine.commands.project.DeleteProjectCommand());

这将使您无法从UI中删除项目。

您还应该禁用扩展中的命令(例如,对于Wikidata扩展,在extensions/wikidata/module/MOD-INF/controller.js中(。

我在这里创建了相应的增强请求:https://github.com/OpenRefine/OpenRefine/issues/1910