<?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 type="decimal" nodeset="instance('xformId_mainInstance')/spravs/sprav/field[type_id='3']/value"/> <xf:bind type="boolean" nodeset="instance('xformId_mainInstance')/spravs/sprav/field[type_id='1']/value"/> <xf:bind readonly="true()" nodeset="instance('xformId_mainInstance')/spravs/sprav/field[(editable='false') or (type_id='6') or (type_id='7')]"/> <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: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'))"/> <!--<xf:output value="serialize(instance('xformId_reflist'))"/>--> <div style="width: 645px; float: left; clear: both;"> <div class="dirusing sprav" style="width: 400px; float: left; clear: both;"> <xf:output class="dirusing baseInput" value="instance('xformId_mainInstance')/spravs/sprav/@name"> <xf:label>Справочник:</xf:label> </xf:output> <!-- for testing upload --> <!-- <xf:upload id="xformId_upload2" singleFile="true" submit="true" submitLabel="Загрузить файл"></xf:upload> --> </div> <div class="group dirusingScrollPanel1" style="width: 645px; height: 380px; float: left; clear: both; padding: 2px; margin: 10px 0 0 0;"> <div style="float: left; clear: both; margin-top: 5px;"> <div class="cellHeader" style="height: 10px; width: 198px; float: left; clear: both; padding-right: 2px;">Поле</div> <div class="cellHeader" style="height: 10px; width: 400px; float: left">Значение</div> </div> <div style="float: left; clear: both;"> <xf:repeat id="xformId_spravcheckRow" nodeset="instance('xformId_mainInstance')/spravs/sprav/field"> <table class="dirusing main2" cellspacing="1" cellpadding="0"> <tr> <td style="width: 202px; font-weight: bold;"> <xf:output class="dirusing baseTableInput2" value="./title"/> </td> <td style="width: 402px; padding-left: 2px;"> <xf:group ref=".[editable='false']"> <xf:input class="dirusing baseTableInput" ref="./value"/> </xf:group> <xf:group ref=".[editable='true']"> <!--Boolean, Decimal, Long, Lat--> <xf:group ref=".[type_id='1' or type_id='3' or type_id='11' or type_id='12']"> <xf:input class="dirusing baseTableInput" ref="./value"/> </xf:group> <!--String with len < 255 --> <xf:group ref=".[type_id='9' and number(./max_length)<=255]"> <xf:input class="dirusing baseTableInput" ref="./value"/> </xf:group> <!-- String with len > 255 --> <xf:group ref=".[type_id='9' and number(./max_length)>255]"> <xf:textarea class="dirusing baseTableInput" rows="6" ref="./value"/> </xf:group> <!-- Datetime --> <xf:group ref=".[type_id='2']"> <div class="newbutton"> <div class="blue"> <xf:input class="dirusing baseTableInput date" ref="./value"/> </div> </div> </xf:group> <!-- Integer --> <xf:group ref=".[type_id='5']"> <xf:input class="dirusing baseTableInput" ref="./value" inputmode="digits"/> </xf:group> <!-- Ref List --> <!-- multiselector--> <xf:group ref=".[type_id='6' and ref_table_hierarch='false']"> <div style="width: 370px; float: left; margin-right: 2px;"> <xf:repeat id="xformId_refrow" nodeset="./ref_values/item"> <div style="width: 338px; float: left; margin-right: 2px;"> <xf:input class="dirusing baseTableInput" ref="./value"/> </div> <div class="dirusing newbutton" style="width: 30px; padding: 0; float: left;"> <xf:trigger class="dirusing blue aid-button" id="xformId_delete11"> <xf:label>-</xf:label> <xf:action ev:event="DOMActivate"> <xf:action if="(count(.././item) > 0)"> <xf:delete nodeset=".././item[index('xformId_refrow')]"/> </xf:action> </xf:action> </xf:trigger> </div> </xf:repeat> </div> <div class="dirusing newbutton" style="width: 30px; padding: 0; float: left;"> <div class="blue" style="padding: 0; margin: 0;"> <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> </div> </xf:group> <!-- tree selector multi--> <xf:group ref=".[type_id='6' and ref_table_hierarch='true']"> <div style="width: 370px; float: left; margin-right: 2px;"> <xf:repeat id="xformId_refrow_tree" nodeset="./ref_values/item"> <div style="width: 338px; float: left; margin-right: 2px;"> <xf:input class="dirusing baseTableInput" ref="./value"/> </div> <div class="dirusing newbutton" style="width: 30px; padding: 0; float: left;"> <xf:trigger class="dirusing blue aid-button" 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="dirusing newbutton" style="width: 30px; padding: 0; float: left;"> <div class="blue" style="padding: 0; margin: 0;"> <xf:trigger> <xf:label>+</xf:label> <xf:action ev:event="DOMActivate"> <xf:load resource="javascript:gwtCreatePlugin({ id:'xformId', plugin:'extJsTree', postProcessProc:'handleExtJsTree.py', getDataProcName:'dirusing.selector.treeSelectorData.celesta', generalFilters:['XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))])'], params:{ treePanel: { title: 'Выбор нескольких значений из дерева', }, core: { checkParent:true, filter:{ startsWith:true, delay:900 } }, dataModel: { fields: [ {name: 'refvalue', type: 'string'} ] }, view: { columns: [ { header: 'Название', dataIndex: 'refvalue'} ] } }, options: { 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> </div> </div> </xf:group> <!-- Ref Value --> <!-- selector --> <xf:group ref=".[type_id='7' and ref_table_hierarch='false']"> <div style="width: 338px; float: left; margin-right: 2px;"> <xf:input class="dirusing baseTableInput" ref="./value"/> </div> <div class="dirusing newbutton" style="width: 30px; padding: 0 2px 0 0; float: left;"> <div class="blue" style="padding: 0; margin: 0;"> <xf:selector buttonLabel="..." procListAndCount="'dirusing.selector.selector.celesta'" generalFilters="['XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))])']" currentValue="'XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))]/value)'" 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> </div> </div> <div class="dirusing newbutton" style="width: 30px; padding: 0; float: left;"> <xf:trigger class="dirusing blue aid-button" id="xformId_delete10"> <xf:label>X</xf:label> <xf:action ev:event="DOMActivate"> <xf:setvalue ref="./value" value=""/> <xf:setvalue ref="./id" value=""/> </xf:action> </xf:trigger> </div> </xf:group> <!--tree selector single--> <xf:group ref=".[type_id='7' and ref_table_hierarch='true']"> <div style="width: 338px; float: left; margin-right: 2px;"> <xf:input class="dirusing baseTableInput" ref="./value"/> </div> <div class="dirusing newbutton" style="width: 30px; padding: 0; float: left;"> <div class="blue" style="padding: 0; margin: 0;"> <xf:trigger> <xf:label>...</xf:label> <xf:action ev:event="DOMActivate"> <xf:load resource="javascript:gwtCreatePlugin({ id:'xformId', plugin:'extJsTree', postProcessProc:'handleExtJsTree.py', getDataProcName:'dirusing.selector.treeSelectorData.celesta', generalFilters:['XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[index(quot(xformId_spravcheckRow))])'], params:{ treePanel: { title: 'выбор одного значения в дереве', }, core: { checkParent:true, filter:{ startsWith:true, delay:900 } }, dataModel: { fields: [ {name: 'refvalue', type: 'string'} ] }, view: { columns: [ { header: 'Название', dataIndex: 'refvalue'} ] } }, options: { 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> </div> </div> <div class="dirusing newbutton" style="width: 30px; padding: 0; float: left;"> <xf:trigger class="dirusing blue aid-button" id="xformId_delete10_tree"> <xf:label>X</xf:label> <xf:action ev:event="DOMActivate"> <xf:setvalue ref="./value" value=""/> <xf:setvalue ref="./id" value=""/> </xf:action> </xf:trigger> </div> </xf:group> <!-- Select List --> <xf:group ref=".[type_id='8']"> <xf:select1 class="dirusing baseTableInput" ref="./value"> <xf:itemset nodeset=".././select_list/item"> <xf:label ref="."/> <xf:value ref="."/> </xf:itemset> </xf:select1> </xf:group> </xf:group> </td> </tr> </table> </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" singleFile="true" filenamesMapping="XPath(instance(quot(xformId_mainInstance))/spravs/sprav/field[type_id=4]/value)" submit="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:action> </xf:trigger> </td> </tr> </table> </xf:group> </div> </div> </div> <div style="width: 645px; height: 10px; vertical-align: middle; float: left; clear: both; margin: 0; font-size: small; padding-left: 10px;"> * - обязательно для заполнения </div> <div style="width: 645px; float: left; clear: both; margin: 5px 0 0 0;"> <!--xf:output value="serialize(instance('mainInstance'))"/--> <div style="float: right"> <table cellpadding="0px" cellspacing="2px" width="308px"> <tr> <td width="154px"> <div class="dirusing newbutton" style="width: 100%;"> <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: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: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> </td> <td width="154px"> <div class="dirusing newbutton" style="width: 100%;"> <xf:trigger class="blue"> <xf:label>Отмена</xf:label> <xf:action ev:event="DOMActivate"> <xf:load resource="javascript:gwtXFormUpdate('xformId','1', null)"/> </xf:action> </xf:trigger> </div> </td> </tr> </table> </div> </div> </body> </html>