Skip to content

Instantly share code, notes, and snippets.

@avernet
Created March 10, 2011 02:46
Show Gist options
  • Save avernet/863487 to your computer and use it in GitHub Desktop.
Save avernet/863487 to your computer and use it in GitHub Desktop.
<xhtml:html xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
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:xi="http://www.w3.org/2001/XInclude"
xmlns:xxi="http://orbeon.org/oxf/xml/xinclude"
xmlns:xbl="http://www.w3.org/ns/xbl"
xmlns:fr="http://orbeon.org/oxf/xml/form-runner">
<xhtml:head>
<xhtml:title>XForms Controls</xhtml:title>
<xhtml:link type="text/css" rel="stylesheet" href="/ops/yui/logger/assets/logger.css"/>
<xhtml:script type="text/javascript" src="/ops/yui/logger/logger.js"/>
<xhtml:script type="text/javascript" src="/ops/yui/event-simulate/event-simulate.js"/>
<xhtml:script type="text/javascript" src="/ops/yui/yuitest/yuitest.js"/>
<!--<xhtml:script type="text/javascript" src="/apps/xforms-sandbox/samples/test-update-full.js"/>-->
<xforms:model xxforms:xhtml-layout="span" xxforms:ajax.update.full.threshold="1">
<xforms:instance id="ui">
<ui>
<show-one>true</show-one>
<show-two>true</show-two>
<case-value>1</case-value>
<focus-restore>Initial</focus-restore>
<focus-non-relevant-no-error>Initial</focus-non-relevant-no-error>
<focus-readonly-no-error>Initial</focus-readonly-no-error>
<server-value>false</server-value>
</ui>
</xforms:instance>
<xforms:bind nodeset="focus-non-relevant-no-error" relevant=". != 'Non-relevant'"/>
<xforms:bind nodeset="focus-readonly-no-error" readonly=". = 'Read-only'"/>
<xforms:bind nodeset="server-value" type="xs:boolean"/>
<xforms:instance id="numbers">
<numbers>
<number value="1">One</number>
<number value="2">Two</number>
<number value="3">Three</number>
</numbers>
</xforms:instance>
</xforms:model>
<xhtml:style type="text/css">
.xforms-repeat-selected-item-1 { background-color: transparent }
fieldset div { margin-top: 1em }
</xhtml:style>
</xhtml:head>
<xhtml:body>
<xhtml:fieldset>
<xhtml:legend>Full update on group around tr</xhtml:legend>
<fr:button id="toggle-two">
<xforms:label>Toggle two</xforms:label>
<xforms:setvalue ev:event="DOMActivate" ref="instance('ui')/show-two" value="if (. = 'true') then 'false' else 'true'"/>
</fr:button>
<xhtml:div>
<xhtml:table>
<xforms:repeat nodeset="instance('numbers')/number">
<xxforms:variable name="position" select="position()"/>
<xforms:group ref=".[@value != 2 or instance('ui')/show-two = 'true']" xxforms:update="full" id="group-update-full">
<xhtml:tr>
<xhtml:td>
<xforms:output value="." id="number"/>
</xhtml:td>
<xhtml:td>
<xforms:input id="field" ref=".">
<xforms:setvalue ev:event="DOMFocusIn" ref="instance('ui')/show-two" value="if (. = 'true') then 'false' else 'true'"/>
</xforms:input>
</xhtml:td>
</xhtml:tr>
</xforms:group>
</xforms:repeat>
</xhtml:table>
</xhtml:div>
</xhtml:fieldset>
<xhtml:fieldset>
<xhtml:legend>Full update on case</xhtml:legend>
<fr:button id="increment-case-value">
<xforms:label>Increment case value</xforms:label>
<xforms:setvalue ev:event="DOMActivate" ref="case-value" value=". + 1"/>
</fr:button>
<xhtml:div>
<xforms:switch>
<xforms:case id="case-1" xxforms:update="full">
<xforms:output value="case-value" id="case-value"/>
</xforms:case>
</xforms:switch>
</xhtml:div>
</xhtml:fieldset>
<xhtml:fieldset>
<xhtml:legend>Full update on repeat</xhtml:legend>
<fr:button id="toggle-one">
<xforms:label>Show one</xforms:label>
<xforms:setvalue ev:event="DOMActivate" ref="show-one" value="if (. = 'true') then 'false' else 'true'"/>
</fr:button>
<xhtml:div>
<xforms:repeat nodeset="instance('numbers')/number[if (instance('ui')/show-one = 'false') then @value != 1 else true()]" xxforms:update="full" id="repeat-update-full">
<xforms:output value="." id="repeat-value"/>
</xforms:repeat>
</xhtml:div>
</xhtml:fieldset>
<xhtml:fieldset>
<xhtml:legend>Restoring the focus</xhtml:legend>
<xforms:group xxforms:update="full">
<xforms:output value="focus-value"/>
<xforms:input id="focus-restore" ref="focus-restore"/>
<xforms:input id="focus-non-relevant-no-error" ref="focus-non-relevant-no-error">
<xforms:setvalue ev:event="DOMFocusIn" ref=".">Non-relevant</xforms:setvalue>
</xforms:input>
<xforms:input id="focus-readonly-no-error" ref="focus-readonly-no-error">
<xforms:setvalue ev:event="DOMFocusIn" ref=".">Read-only</xforms:setvalue>
</xforms:input>
</xforms:group>
</xhtml:fieldset>
<xhtml:fieldset>
<xhtml:legend>Resetting server values</xhtml:legend>
<fr:button id="server-value-true">
<xforms:label>Set to true</xforms:label>
<xforms:setvalue ev:event="DOMActivate" ref="server-value">true</xforms:setvalue>
</fr:button>
<fr:button id="server-value-false">
<xforms:label>Set to false</xforms:label>
<xforms:setvalue ev:event="DOMActivate" ref="server-value">false</xforms:setvalue>
</fr:button>
<xforms:group id="server-value-group" xxforms:update="full">
<xforms:input ref="server-value" id="server-value-input"/>
</xforms:group>
<xforms:output ref="server-value" id="server-value-output"/>
</xhtml:fieldset>
<xhtml:fieldset>
<xhtml:legend>Dialog initialization</xhtml:legend>
<fr:button id="open-dialog">
<xforms:label>Add and open dialog</xforms:label>
<xforms:action ev:event="DOMActivate">
<xforms:insert nodeset="*" origin="xxforms:element('dialog')"/>
<xxforms:show dialog="dialog"/>
</xforms:action>
</fr:button>
<xhtml:div>
<xforms:group id="dialog-container" xxforms:update="full">
<!--xxforms:update="full"-->
<xforms:repeat nodeset="dialog">
<xxforms:dialog id="dialog">Dialog content</xxforms:dialog>
</xforms:repeat>
</xforms:group>
</xhtml:div>
</xhtml:fieldset>
</xhtml:body>
</xhtml:html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment