1

Orbeonフォームランナーを使用していくつかのXFormsドキュメントを実行しています。エントリのリストを管理して、タイムトラッキングを実行したいと思います。xforms:repeatを使用してデータを含むテーブルを生成し、xforms:triggerをxforms:insertを使用して新しいエントリを挿入しています。次の図に示すように、エントリを日付で並べ替え、エントリを月でグループ化します。

グループ化されたテーブルの例

毎月の合計時間を計算したいと思います。誰かがXForms/Orbeonでこれを構築する方法のヒントを与えることができますか、似たようなことをしている実用的な例がそこにありますか?

ありがとうございました!

4

1 に答える 1

1

以下は、同様のグループ化を行って次のように出力する例です。

  • 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>
于 2011-05-11T02:21:10.817 に答える