<?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)&lt;=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)&gt;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) &gt; 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) &gt; 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>