<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xsd="http://www.w3.org/2001/XMLschema" xmlns:fs="http://www.curs.ru/ns/FormServer" xmlns:xf="http://www.w3.org/2002/xforms"> <head> <xf:model id="xformId_mainModel"> <xf:instance id="xformId_mainInstance"> <schema xmlns=""> <edit>true</edit> <showselect>true</showselect> <error_message/> <row>2</row> <spravs> <sprav id="2" name="Тест 2"> <field> <uid>2</uid> <order>0</order> <required>false</required> <editable>true</editable> <max_length>30</max_length> <dbFieldName>name</dbFieldName> <type_id>9</type_id> <title>Значение</title> <ref_table_prefix/> <ref_field_prefix/> <ref_table_hierarch>false</ref_table_hierarch> <id/> <value/> </field> </sprav> </spravs> </schema> </xf:instance> <!-- Из таблицы dirusing.fieldsTypes 1 Boolean 2 Datetime 3 Decimal 4 Image 5 Integer 6 Reference List 7 Reference Value 8 Select List 9 String 10 UUID 11 Latitude 12 Longtitude --> <xf:instance id="xformId_reflist"> <schema xmlns=""> <item> <id/> <value/> </item> </schema> </xf:instance> <xf:instance id="xformId_quot"> <schema xmlns="">"</schema> </xf:instance> <!-- <xf:instance id="xformId_spravcheck"> <schema xmlns=""> <check>false</check> </schema> </xf:instance> --> <xf:bind> <xf:bind type="date" nodeset="instance('xformId_mainInstance')/spravs/sprav/field[type_id='2']/value"></xf:bind> <xf:bind type="decimal" nodeset="instance('xformId_mainInstance')/spravs/sprav/field[type_id='3']/value"></xf:bind> <xf:bind type="boolean" nodeset="instance('xformId_mainInstance')/spravs/sprav/field[type_id='1']/value"></xf:bind> <xf:bind readonly="true()" nodeset="instance('xformId_mainInstance')/spravs/sprav/field[(editable='false') or (type_id='6') or (type_id='7')]"></xf:bind> <xf:bind calculate="if((count(instance('xformId_mainInstance')/spravs/sprav/field[(required='true') and (value='') and (type_id!='6')])!=0) and (count(instance('xformId_mainInstance')/spravs/sprav/field[(required='true') and (type_id='6') and (count(ref_values/item[value!=''])!=0)])=0), 'Не все обязательные поля заполнены!','')" nodeset="instance('xformId_mainInstance')/error_message"></xf:bind> </xf:bind> <!-- <xf:submission id="xformId_check_spravdata" method="post" instance="xformId_spravcheck" replace="instance" ref="instance('xformId_mainInstance')" action="secured/sqlTransform?proc=ssp.data_check"> <xf:action ev:event="xforms-submit-done"> <xf:load resource="javascript:xforms.ready = false;xforms.refresh();xforms.ready = true;"></xf:load> </xf:action> <xf:action ev:event="xforms-submit-error"> <xf:message>Ошибка при получении данных</xf:message> </xf:action> </xf:submission> --> </xf:model> </head> <body> <!-- <xf:output value="serialize(instance('xformId_mainInstance'))"/> --> <div style="width: 630px; float: left; clear: both;"> <div class="header"> <xf:output value="instance('xformId_mainInstance')/spravs/sprav/@name"> </xf:output> </div> <hr class="hr" style="width: 604px"/> <div class="filedsScrollBox"> <!-- <table cellspacing="0" cellpadding="0">--> <xf:repeat id="xformId_spravcheckRow" nodeset="instance('xformId_mainInstance')/spravs/sprav/field"> <div class="break label200"> <xf:label ref="./title"></xf:label> </div> <!-- Boolean --> <xf:group ref=".[type_id='1']"> <xf:input class="boolInput400" ref="./value"></xf:input> </xf:group> <!-- Decimal, Long, Lat--> <xf:group ref=".[type_id='3' or type_id='11' or type_id='12']"> <xf:input class="baseInput400" ref="./value"></xf:input> </xf:group> <!--String with len < 255 --> <xf:group ref=".[type_id='9' and (number(./max_length)<=255 and number(./max_length)!=0)]"> <xf:input class="baseInput400" ref="./value"></xf:input> </xf:group> <!-- String with len > 255 --> <xf:group ref=".[type_id='9' and (number(./max_length)>255 or number(./max_length)=0)]"> <div class="baseInput400 textareaHeight60"> <xf:textarea ref="./value"></xf:textarea> </div> </xf:group> <!-- Datetime --> <xf:group ref=".[type_id='2']"> <xf:input class="dateInput" ref="./value"></xf:input> </xf:group> <!-- Integer --> <xf:group ref=".[type_id='5']"> <xf:input class="baseInput400" ref="./value" inputmode="digits"></xf:input> </xf:group> <!-- Ref List --> <!-- multiselector --> <xf:group ref=".[type_id='6' and ref_table_hierarch='false']"> <div style="width: 370px; float: left;"> <xf:repeat id="xformId_refrow" nodeset="./ref_values/item"> <div class="selectorShort400" style="width: 370px !important;"> <xf:input ref="./value"></xf:input> <xf:trigger> <xf:label>-</xf:label> <xf:action ev:event="DOMActivate"> <xf:action if="(count(.././item) > 0)"> <xf:delete nodeset=".././item[index('xformId_refrow')]"></xf:delete> </xf:action> </xf:action> </xf:trigger> </div> </xf:repeat> </div> <div class="button30"> <xf:multiselector buttonLabel="+" procListAndCount="'dirusing.selector.multiSelector.celesta'" generalFilters="['XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))])']" currentValue="''" windowCaption="'Выбор значения'" needClear="true" needInitSelection="true" xpathRoot="'XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))]/ref_values)'" xpathMapping="{'XPath(instance(quot(xformId_reflist))/item)':{'id': './id','name':'./value'}}"> </xf:multiselector> </div> </xf:group> <!-- tree selector multi--> <xf:group ref=".[type_id='6' and ref_table_hierarch='true']"> <div style="width: 370px; float: left;"> <xf:repeat id="xformId_refrow_tree" nodeset="./ref_values/item"> <div class="selectorShort400" style="width: 370px !important;"> <xf:input ref="./value" /> <xf:trigger id="xformId_delete11_tree"> <xf:label>-</xf:label> <xf:action ev:event="DOMActivate"> <xf:action if="(count(.././item) > 0)"> <xf:delete nodeset=".././item[index('xformId_refrow_tree')]"/> </xf:action> </xf:action> </xf:trigger> </div> </xf:repeat> </div> <div class="button30"> <xf:trigger> <xf:label>+</xf:label> <xf:action ev:event="DOMActivate"> <xf:load resource="javascript:gwtCreatePlugin({ id:'xformId', plugin:'extJsTree', getDataProcName:'dirusing.selector.treeSelectorData.celesta', postProcessProc:'handleExtJsTree.py', generalFilters:['XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))])'], params: { treePanel: {title: 'Выбор нескольких значений из дерева'}, core: { checkParent: false, filter: {startsWith:true, delay:900} }, dataModel: { fields: [{name: 'attr1', type: 'string'}] }, view: { columns: [{ header: 'Название', dataIndex: 'attr1'}] } }, options: { needInitSelection: false, dataWidth: '500px', dataHeight: '450px', windowCaption: 'Дерево', onSelectionComplete: function(ok, plugin) { if (ok) { plugin.utils.multiXpathMapping({ xpathRoot: 'XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))]/ref_values)', xpathMapping: {'XPath(instance(quot(xformId_reflist))/item)':{'id': 'id','name':'value'}} },true ); } } } });" /> </xf:action> </xf:trigger> </div> </xf:group> <!-- Ref Value --> <xf:group ref=".[type_id='7' and ref_table_hierarch='false']"> <div class="selectorLong400"> <xf:input ref="./value"></xf:input> <xf:selector buttonLabel="..." procListAndCount="'dirusing.selector.selector.celesta'" generalFilters="['XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))])']" currentValue="''" windowCaption="'Выбор значения'" xpathMapping="{'XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))]/value)' : 'name', 'XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))]/ref_values)' : 'id'}"> </xf:selector> <xf:trigger> <xf:label>X</xf:label> <xf:action ev:event="DOMActivate"> <xf:setvalue ref="./value" value=""></xf:setvalue> <xf:setvalue ref="./ref_values" value=""></xf:setvalue> </xf:action> </xf:trigger> </div> </xf:group> <!--tree selector single--> <xf:group ref=".[type_id='7' and ref_table_hierarch='true']"> <div class="selectorLong400"> <xf:input ref="./value" /> <xf:trigger> <xf:label>...</xf:label> <xf:action ev:event="DOMActivate"> <xf:load resource="javascript:gwtCreatePlugin({ id:'xformId', plugin:'extJsTree', getDataProcName:'dirusing.selector.treeSelectorData.celesta', postProcessProc:'handleExtJsTree.py', generalFilters:['XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))])'], params: { treePanel: {title: 'Выбор одного значения в дереве', listeners:{ checkchange: { fn: function(node, checked, eOpts) { var plugin = Ext.ExtJsTree; this.getRootNode().cascadeBy(function(n){ if (node!=n) { n.set('checked', false); plugin.removeItem(n.get('id')); } }); } } }}, core: { checkParent: false, filter: { startsWith: false, delay:900 } }, dataModel: { fields: [{name: 'attr1', type: 'string'}] }, view: { columns: [{ header: 'Название', dataIndex: 'attr1'}] } }, options: { needInitSelection: false, dataWidth: '500px', dataHeight: '450px', windowCaption: 'Дерево', onSelectionComplete: function(ok, plugin) { if (ok) { plugin.utils.singleXpathMapping({ 'XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))]/value)' : 'name', 'XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))]/ref_values)' : 'id' }); } } } });" /> </xf:action> </xf:trigger> <xf:trigger id="xformId_delete10_tree"> <xf:label>X</xf:label> <xf:action ev:event="DOMActivate"> <xf:setvalue ref="./value" value=""/> <xf:setvalue ref="./ref_values" value=""/> </xf:action> </xf:trigger> </div> </xf:group> <!-- Select List --> <xf:group ref=".[type_id='8']"> <xf:select1 class="dateInput" ref="./value"> <xf:itemset nodeset=".././select_list/item"> <xf:label ref="."></xf:label> <xf:value ref="."></xf:value> </xf:itemset> </xf:select1> </xf:group> </xf:repeat> <!-- Image --> <xf:group ref="instance('xformId_mainInstance')/spravs/sprav/field[ type_id ='4']"> <table> <tr> <td style="width: 188px; font-weight: bold;"> Файл </td> <td> <xf:upload id="xformId_upload2" submit="true" singleFile="true" submitLabel="Загрузить файл" /> </td> <td style="padding: 10px 0px 0px 10px;"> <xf:trigger class="button" id="xformId_download2" > <xf:label>Скачать</xf:label> <xf:action ev:event="DOMActivate"> <xf:load resource="javascript:gwtXFormDownload('xformId','download2', Writer.toString(getSubformInstanceDocument('xformId_mainModel', 'xformId_mainInstance')))"></xf:load> </xf:action> </xf:trigger> </td> </tr> </table> </xf:group> </div> <hr class="break hr" style="width: 604px"/> </div> <div style="width: 604px; height: 10px; vertical-align: middle; float: left; clear: both; margin: 0; font-size: small; padding-left: 10px;"> * - обязательно для заполнения </div> <div style="width: 604px; float: left; clear: both;"> <div class="button100"> <xf:trigger class="blue"> <xf:label>Отмена</xf:label> <xf:action ev:event="DOMActivate"> <xf:load resource="javascript:gwtXFormUpdate('xformId','1', null)"></xf:load> </xf:action> </xf:trigger> </div> <div class="button100"> <xf:trigger class="blue"> <xf:label>ОК</xf:label> <xf:action ev:event="DOMActivate"> <!--xf:load resource="javascript: xforms.ready = false; xforms.defaultModel.revalidate(); xforms.refresh(); xforms.ready = true;"/!--> <xf:action if="instance('xformId_mainInstance')/error_message!=''"> <xf:message ref="instance('xformId_mainInstance')/error_message"></xf:message> </xf:action> <xf:action if="instance('xformId_mainInstance')/error_message=''"> <xf:action if="is-valid(instance('xformId_mainInstance'))='true'"> <!--<xf:send submission="xformId_check_spravdata"></xf:send>--> <!--<xf:action if="instance('xformId_spravcheck')/check='true'">--> <xf:load resource="javascript:gwtXFormSave('xformId','1', Writer.toString(getSubformInstanceDocument('xformId_mainModel', 'xformId_mainInstance')))"></xf:load> <!--</xf:action>--> <!-- <xf:action if="instance('xformId_spravcheck')/check!='true'"> <xf:message ref="instance('xformId_spravcheck')/check"></xf:message> </xf:action> --> </xf:action> <xf:action if="is-valid(instance('xformId_mainInstance'))='false'"> <xf:message>Данные не сохранены! Форма содержит ошибки.</xf:message> </xf:action> </xf:action> </xf:action> </xf:trigger> </div> </div> </body> </html>