<?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)&lt;=255]">
											<xf:input class="dirusing baseTableInput" ref="./value"/>
										</xf:group>
										<!-- String with len > 255 -->
										<xf:group ref=".[type_id='9' and number(./max_length)&gt;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) &gt; 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) &gt; 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>