用于zope内部的表格生成工具。
项目描述
简介
《ftw.table》包提供了一种用于生成字典、目录大脑和其他对象HTML表格的工具。
它附带了一个jQuery插件,可以通过Plone通用设置配置文件安装,提供排序、过滤、分组复选框等功能。
目的
此库包的主要目的是抽象《ftw.tabbedview》包的表格生成,但它也可以在纯plone / zope安装中使用。
表格生成工具
表格生成工具可以生成HTML或JSON输出。它期望有一个数据对象列表,可以通过使用item.get(attrname)以类似字典的语法访问,或者通过使用item.attrname以对象语法访问。它还期望一个列配置,指示哪些列/属性在表中显示以及如何显示。
示例
>>> from ftw.table.interfaces import ITableGenerator >>> from zope.component import getUtility >>> >>> generator = getUtility(ITableGenerator, name="ftw.tablegenerator") >>> >>> data = [ ... {'id': 1, ... 'name': 'Ptolemy I Soter', ... 'dates': '305-285 BC', ... }, ... {'id': 2, ... 'name': 'Ptolemy II Philadelphos', ... 'dates': '288-246 BC', ... }] >>> >>> columns = ['id', 'name', 'dates'] >>> print generator.generate(data, columns) <table class="listing"> <colgroup> <col class="col-id" /> <col class="col-name" /> <col class="col-dates" /> </colgroup> <thead> <tr> <BLANKLINE> <th id="header-id"> <span>id</span> </th> <BLANKLINE> <BLANKLINE> <th id="header-name"> <span>name</span> </th> <BLANKLINE> <BLANKLINE> <th id="header-dates"> <span>dates</span> </th> <BLANKLINE> </tr> </thead> <tbody> <tr> <td> 1 </td> <td> Ptolemy I Soter </td> <td> 305-285 BC </td> </tr> <tr> <td> 2 </td> <td> Ptolemy II Philadelphos </td> <td> 288-246 BC </td> </tr> </tbody> </table> <BLANKLINE>>>> columns = ['id', 'name', 'dates'] >>> print generator.generate(data, columns, output='json') {"totalCount": 2, "rows": [{"dates": "305-285 BC", "id": 1, "name": "Ptolemy I Soter"}, {"dates": "288-246 BC", "id": 2, "name": "Ptolemy II Philadelphos"}], "metaData": {"fields": [{"type": "string", "name": "id"}, {"type": "string", "name": "name"}, {"type": "string", "name": "dates"}], "translations": {"dragDropLocked": "dragDropLocked", "sortDescText": "sortDescText", "columnsText": "columnsText", "showGroupsText": "showGroupsText", "groupByText": "groupByText", "itemsSingular": "itemsSingular", "sortAscText": "sortAscText", "selectedRowen": "selectedRowen", "itemsPlural": "itemsPlural"}, "totalProperty": "totalCount", "root": "rows", "config": {"sort": null, "dir": "ASC", "gridstate": null}, "columns": [{"header": "id", "hidden": false, "sortable": true, "groupable": true, id": "id", "dataIndex": "id"}, {"header": "name", "hidden": false, "sortable": true, "groupable": true, "id": "name", "dataIndex": "name"}, {"header": "dates", "hidden": false, "sortable": true, "groupable": true, "id": "dates", "dataIndex": "dates"}]}}
定义列
列定义可以是属性名列表,也可以是更复杂配置的字典。
>>> advanced_columns = [ ... {'column': 'the_attribute_name', ... 'column_title': 'Title to display', ... 'condition': lambda: True, ... 'sort_index': 'sortable_title', ... 'transform': lambda item, value: str(value)} ... ]
排序
将sortable参数添加到HTML输出模式中每个列头的“sortable”CSS类。
>>> 'sortable' in generator.generate(data, columns, sortable=True) True
数据源和配置
对于从Plone目录等数据源生成列表表格,有一个高级抽象层。它允许创建针对不同源(如Plone目录、SQLAlchemy或Python字典)的通用列表视图。
表格源是一个适配器,用于检索表格源配置的数据。这是一种获取数据的一般方式。例如,有一个内置的目录源,它以Plone目录为源。
表格源配置指定了源必须加载哪些数据以及如何排序和显示。
有关详细信息,请参阅接口定义和内置源和配置。
卸载
此包提供了一个卸载通用设置配置文件,但它不会卸载包依赖项。确保在不再使用时卸载依赖项。
链接
版权
本包版权所有:4teamwork。
《ftw.table》根据GNU通用公共许可证,版本2授权。
变更日志
1.22.0 (2019-03-06)
添加对Plone 5.1的支持。[mbaechtold, jone]
停止支持Plone 4.2。现在仅支持Plone 4.3。[busykoala]
1.21.0 (2018-09-28)
CatalogTableSource:从结果中排除searchroot。[lgraf]
1.20.0 (2018-08-28)
重构TableGenerator以使其线程安全。[njohner]
修复生成器中的并发错误:数据在线程之间泄露。[jone]
1.19.1 (2018-04-04)
当没有内容显示时隐藏分批导航。[phgross]
1.19.0 (2018-01-24)
允许根据类而不是仅根据ID注册extjs静态容器,以防止在HTML中重复ID。[elioschmutz]
移除对ftw.testing[splinter]的依赖(已在ftw.testing中删除)。[lgraf]
1.18.1 (2017-04-24)
使用绝对URL设置和重置网格状态,以解决在Plone中使用表格时的问题。Plone不向非文件夹内容在HTML base标签中添加尾部斜杠。这意味着,相对URL将解析为父对象。[elioschmutz]
1.18.0 (2017-03-16)
在列定义(字典)中支持“groupable”键。[jone]
停止支持Plone 4.1。[jone]
1.17.0 (2016-06-27)
将viewReady事件公开到DOM。[Kevin Bieri]
1.16.0 (2015-10-19)
当可用时使用plones IContentIcon适配器。[jone]
在销毁表格期间刷新groupBy参数,以避免无效的groupBy值。[phgross]
1.15.2 (2014-10-24)
修复无法解析的查询字符串的问题。[deiferni]
1.15.1 (2014-08-20)
修复“linked”辅助工具中的编码错误,与solr flairs相关。[jone]
1.15.0 (2014-06-03)
修复ftwtable.extjs.js(缺少分号)。[mathias.leimgruber]
将ftw.labels过滤支持添加到目录源。[jone]
从ftwtable.extjs.js中移除#33遗留的多行注释。[lgraf]
实现卸载配置文件。[deif]
1.14.2 (2014-05-04)
将多行JS注释替换为单行注释,以防止压缩问题。[lgraf]
1.14.1 (2014-04-30)
错误修复:防止在行选择时滚动。[mathias.leimgruber]
1.14 (2014-03-20)
修复readable_date_text辅助工具,如果没有有效的日期(例如,Archetype DateTimeField的初始化值(EffectiveDate返回1000/01/01))。[mathias.leimgruber]
添加英文翻译。[jone]
1.13 (2014-01-10)
清理测试。移除所有模拟测试并用集成测试替换。[elioschmutz]
更新readable_author方法。现在只有当作者真正存在时才链接可读作者
如果用户已登录
如果允许匿名用户查看属性设置为true,则以匿名用户身份
[elioschmutz]
[elioschmutz]
1.12.4 (2013-11-28)
修复IE9中的一个bug,当悬停在动态生成的内容上时内容会增长。有关详细信息,请参阅http://blog.brianrichards.net/post/6721471926/ie9-hover-bug-workaround。[Julian Infanger]
1.12.3 (2013-10-16)
修复图标辅助工具中Products.ATContentTypes的bug。[mathias.leimgruber]
1.12.2 (2013-07-18)
修复导致自定义模板永久存储的bug。[jone]
1.12.1 (2013-07-09)
修复由更好的“可排序”支持(1.12)引起的回归,这导致在自定义表格模板时出现AttributeErrors。
在自定义表格模板中使用view.sortable_class(th)而不是view.sortable_class(th[‘sort_index’])。
[jone]
1.12 (2013-07-09)
支持在非ExtJS模式下将列的“可排序”设置为false。[jone]
HTML样式:支持列定义的“宽度”作为
宽度。[jone] ExtJS样式:修复不正确的布局。同时,在表体中使用与标题相同的宽度显示虚拟列。[Julian Infanger]
1.11 (2013-05-06)
不要隐藏extJs表格中的虚拟列,它用于轻松调整大小。[Julian Infanger]
修复辅助工具中的unicode解码错误。[elio.schmutz]
1.10 (2013-04-04)
实现“可调用”值 - 在TableGenerator的get_value方法中实现。[mathias.leimgruber]
1.9 (2013-01-28)
Plone 4.3兼容性:修复导入。[jone]
修复“linked”辅助工具,将href作为属性传递。[mathias.leimgruber]
修复ExtJS配置文件中的javascript顺序(这次是真的)。不仅ftwtable.extjs.js需要在jquery.ftwtable.js之后加载,而且jquery.ftwtable.js需要在ExtJS(collective.js.extjs-resources/js/ext-all.js)之后加载。[lgraf]
修复ExtJS配置文件中的javascript顺序。[jone]
支持列定义(字典)中的“隐藏”键。[jone]
支持列定义(字典)中的“可排序”键。[jone]
修改链接辅助工具 - 仅显示图标。[mathias.leimgruber]
1.8.2 (2012-11-28)
修复基本URL获取器,当URL不以斜杠结尾时。[phgross]
1.8.1 (2012-11-05)
调整javascript:使用$代替已弃用的jq。[phgross]
将extjs超时从0.5分钟增加到2分钟。[jone]
使用base标签而不是kss-base-url rel标签来获取基本URL。[phgross]
1.8 (2012-10-16)
修复readable_author辅助工具中的解码错误。[phgross]
为extjs配置文件添加zcml条件。[Julian Infanger]
改进虚拟列的hack,以改进最后一列的调整大小手柄大小。[jone]
Ext JS:移除forceFit支持(拉伸列宽度),因为我们现在能够在定义中定义列宽,这是一个更准确的解决方案。[jone]
支持使用关键字“宽度”在字典样式列中定义列宽。[jone]
1.7.10 (2012-08-21)
添加一个link()辅助工具来动态创建配置辅助工具。[jone]
1.7.9 (2012-05-16)
JavaScript:优化重新加载表格,使其不进行不必要的请求。[jone]
1.7.8 (2012-05-09)
调整ITableSource接口中的注释。[eschmutz]
减少在非extjs模式下使用tabbedview时的重复请求。[jone]
1.7.7 (2012-03-28)
移除registerPackage指令。[jone]
1.7.6 (2012-03-12)
改进 spinner 与 tabbedview 的集成,使用新的辅助函数。[jone]
修复在 tabbed view 中在列表标签和非列表标签间切换时 extjs 的 bug。[jone]
1.7.5 (2012-03-05)
修复了辅助函数,使其与 solr flares 兼容。[Julian Infanger]
在 helpers 中使用 getToolByName 获取 portal_url。[Julian Infanger]
图标辅助函数如果没有为该类型定义图标,则不应返回图像。[Julian Infanger]
1.7.4 (2012-02-28)
修复了 path_checkbox 和 path_radiobutton 辅助函数中的杂散单引号。[lgraf]
如果没有为该类型定义图标,则在 linked-helper 中显示 contenttype 类。[Julian Infanger]
添加 extjs reset_grid_state 函数。[jone]
1.7.3 (2012-02-27)
移除了为 sprites 的 contenttype span 标签。[mathias.leimgruber]
调整了不同的辅助函数:确保标签内容和标签标题被正确转义。[phgross]
1.7.2 (2012-02-24)
添加了测试。[mathias.leimgruber]
将所有不可排序的列添加 nosort 类。[ttschanz]
添加了一些法语翻译。[ttschanz]
将 icon 类围绕对象图标包裹。[Julian Infanger]
在表头中显示 HTML 结构。[Julian Infanger]
在基于字典的列定义中添加了对条件函数的支持。[jone]
添加了默认 ftwtable jquery 插件实现中缺少的功能。
实现选择复选框。
使用 jquery 插件的准备功能更好地支持两种实现(extjs + 默认)。
正确触发事件。
各种 JavaScript 清理,移除未使用的内容。
[jone]
1.7.1 (2011-11-17)
修复 readable_author:如果用户的全名是 None,也应该可以工作。[jone]
1.7 (2011-10-07)
修复了 extjs-table 的翻译。[eschmutz]
1.6 (2011-09-29)
调整所有翻译,以便它们现在使用 zope.i18n translate 方法。[eschmutz]
添加了针对 plone 4.1 的测试构建。[eschmutz]
1.5 (2011-07-13)
允许最后一列可调整大小。[fsprenger]
修复了 CatalogTableSource 的 batching_enabled 属性。[phgross]
1.4
清理了包,将其移至 github(https://github.com/4teamwork/ftw.table)并准备在 pypi 上发布。[jbaumann]
1.3
移除了重音符号。[fsprenger]
1.2
修复了 IE8 选择行的 bug。[fsprenger]
1.1
使日期辅助方法在无有效日期时返回 None。[25.01.2011, mathias.leimgruber]
1.1c11
1.1c10
修复了翻译。[ttschanz]
1.1c9
Extjs:修复了静态内容的更新。[jbaumann]
1.1c8
在列菜单中不显示“groupBy”列 -> 使其不可隐藏。[jbaumann]
不允许按“draggable”排序并分组,这是矛盾的。[jbaumann]
Extjs 复选框:保护层太小(firefox)[jbaumann]
Extjs:修复了即使在启用分组时也能使批处理工作。[jbaumann]
Extjs:移除了用于状态存储的 ftwtable-prefix,因为这将用于以后猜测视图。还修复了 tabbedview 检查中的 typo。[jbaumann]
1.1c7
修复了 extjs 实现中的 bug:不要期望 tabbedview 存在,但如果有则使用它[jbaumann]
1.1c6
在 extjs 中不允许对“draggable”列进行降序排序,因为它没有意义,可能会破坏排序。[jbaumann]
修复了排序 bug,导致行 ID 在 extjs store 中缺失[jbaumann]
从网格存储中读取 sort_on 属性[jbaumann]
1.1c5
在表源中实现了服务器端分组[jbaumann]
1.1c4
1.1c3
在模板中禁用了列标题的翻译,因为它在 json 模式下也不会工作。您需要从元组列定义切换到字典列定义,或切换到 Column-object 定义,在您的域中使用消息对象来翻译列标题。[jbaumann]
1.1
在 linked 和 quick_preview 辅助函数中添加了实体编码替换[phgross]
1.0a5
添加了 quick_preview 辅助函数[phgross]
1.0a4
将 TableGenerator 修改为使用特定模板而不是标准列表模板[pgross]
1.0a3
1.0a2
1.0
初始版本
项目详情
ftw.table-1.22.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 44a03bb5e30a263a674476059448595ffa9a8c7dd38a9810ccbbc7895229cafa |
|
MD5 | cf98008c80fd59c035e7787b0bf816ef |
|
BLAKE2b-256 | 93c8ea1a1a970a4843639ab013811657d71f570a25430bbbda949ab07211b1df |