XForms 中排序和分组的数据表

发布于 2024-11-06 06:58:01 字数 357 浏览 0 评论 0原文

我正在使用 Orbeon 表单运行程序来执行一些 XForms 文档。我想管理一个条目列表来进行一些时间跟踪。我使用 xforms:repeat 生成包含我的数据的表,并使用 xforms:trigger 和 xforms:insert 插入新条目。现在我想按日期对条目进行排序并按月份对条目进行分组,如下图所示:

分组表示例

对于每个月,我想计算总小时数。有人可以提示如何使用 XForms/Orbeon 构建这个吗?是否有一个正在做类似事情的工作示例?

谢谢你!

I am using Orbeon form runner to execute some XForms documents. I would like to manage a list of entries to do some time tracking. I am using xforms:repeat to generate a table with my data and xforms:trigger with xforms:insert to insert new entries. Now I would like to sort the entries by date and group the entries by month, as seen in the following picture:

Grouped table example

For each month I would like to calculate the total hours. Can somebody give a hint how to build this with XForms/ Orbeon, is there a working example out there that is doing something similar?

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绝不放开 2024-11-13 06:58:01

以下是执行一些类似分组以输出以下内容的示例:

  • 2011 年 5 月
    • 2011-05-10:荷马
    • 2011-05-09:丽莎
  • 2011 年 4 月
    • 2011-04-07:巴特
    • 2011-04-05:巴特
    • 2011-04-02:丽莎

这并不完全是您在屏幕截图中所显示的内容,但应该让您充分了解如何进行此分组。

<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
      xmlns:xforms="http://www.w3.org/2002/xforms"
      xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
      xmlns:ev="http://www.w3.org/2001/xml-events"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:fr="http://orbeon.org/oxf/xml/form-runner">
    <xhtml:head>
        <xhtml:title>Timesheet</xhtml:title>
        <xforms:model>
            <xforms:instance>
                <instance>
                    <entry>
                        <start>2011-05-10</start>
                        <person>Homer</person>
                    </entry>
                    <entry>
                        <start>2011-05-09</start>
                        <person>Lisa</person>
                    </entry>
                    <entry>
                        <start>2011-04-07</start>
                        <person>Bart</person>
                    </entry>
                    <entry>
                        <start>2011-04-05</start>
                        <person>Bart</person>
                    </entry>
                    <entry>
                        <start>2011-04-02</start>
                        <person>Lisa</person>
                    </entry>
                </instance>
            </xforms:instance>
        </xforms:model>
        <xhtml:style type="text/css">
            .xforms-repeat-selected-item-1, .xforms-repeat-selected-item-2 { background: transparent }
        </xhtml:style>
    </xhtml:head>
    <xhtml:body>
        <xxforms:variable name="entries" select="entry"/>
        <xxforms:variable name="months" select="distinct-values($entries/start/substring(., 1, 7))"/>
        <xhtml:ul>
            <xforms:repeat nodeset="$months">
                <xxforms:variable name="current-month" select="."/>
                <xhtml:li>
                    <xforms:output value="format-date(xs:date(concat(., '-01')), '[MNn] [Y]')"/>
                    <xhtml:ul>
                        <xforms:repeat nodeset="$entries[substring(start, 1, 7) = $current-month]">
                            <xhtml:li>
                                <xforms:output ref="start"/>:
                                <xforms:output ref="person"/>
                            </xhtml:li>
                        </xforms:repeat>
                    </xhtml:ul>
                </xhtml:li>
            </xforms:repeat>
        </xhtml:ul>
    </xhtml:body>
</xhtml:html>

Here is an example that does some similar grouping to output the following:

  • May 2011
    • 2011-05-10: Homer
    • 2011-05-09: Lisa
  • April 2011
    • 2011-04-07: Bart
    • 2011-04-05: Bart
    • 2011-04-02: Lisa

It is not exactly what you have in your screenshot, but should give you a good enough idea of how to do this grouping.

<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
      xmlns:xforms="http://www.w3.org/2002/xforms"
      xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
      xmlns:ev="http://www.w3.org/2001/xml-events"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:fr="http://orbeon.org/oxf/xml/form-runner">
    <xhtml:head>
        <xhtml:title>Timesheet</xhtml:title>
        <xforms:model>
            <xforms:instance>
                <instance>
                    <entry>
                        <start>2011-05-10</start>
                        <person>Homer</person>
                    </entry>
                    <entry>
                        <start>2011-05-09</start>
                        <person>Lisa</person>
                    </entry>
                    <entry>
                        <start>2011-04-07</start>
                        <person>Bart</person>
                    </entry>
                    <entry>
                        <start>2011-04-05</start>
                        <person>Bart</person>
                    </entry>
                    <entry>
                        <start>2011-04-02</start>
                        <person>Lisa</person>
                    </entry>
                </instance>
            </xforms:instance>
        </xforms:model>
        <xhtml:style type="text/css">
            .xforms-repeat-selected-item-1, .xforms-repeat-selected-item-2 { background: transparent }
        </xhtml:style>
    </xhtml:head>
    <xhtml:body>
        <xxforms:variable name="entries" select="entry"/>
        <xxforms:variable name="months" select="distinct-values($entries/start/substring(., 1, 7))"/>
        <xhtml:ul>
            <xforms:repeat nodeset="$months">
                <xxforms:variable name="current-month" select="."/>
                <xhtml:li>
                    <xforms:output value="format-date(xs:date(concat(., '-01')), '[MNn] [Y]')"/>
                    <xhtml:ul>
                        <xforms:repeat nodeset="$entries[substring(start, 1, 7) = $current-month]">
                            <xhtml:li>
                                <xforms:output ref="start"/>:
                                <xforms:output ref="person"/>
                            </xhtml:li>
                        </xforms:repeat>
                    </xhtml:ul>
                </xhtml:li>
            </xforms:repeat>
        </xhtml:ul>
    </xhtml:body>
</xhtml:html>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文