跳转到主要内容

用于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目录为源。

表格源配置指定了源必须加载哪些数据以及如何排序和显示。

有关详细信息,请参阅接口定义和内置源和配置。

卸载

此包提供了一个卸载通用设置配置文件,但它不会卸载包依赖项。确保在不再使用时卸载依赖项。

变更日志

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方法。现在只有当作者真正存在时才链接可读作者

    1. 如果用户已登录

    2. 如果允许匿名用户查看属性设置为true,则以匿名用户身份

    3. [elioschmutz]

    [elioschmutz]

1.12.4 (2013-11-28)

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

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 (67.8 kB 查看哈希值)

上传时间 源代码

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面