Загрузка данных


<!DOCTYPE html>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<html lang="ru">

<jsp:include page="head.jsp"/>

<body>
	<%--Максимальное колличество решений для печати, когда решения кажное на своей станице--%>
	<c:set var="maxDecisions" value="1000"/>
<script type="text/javascript">
	
	const urlParams = new URLSearchParams(window.location.search);
	
	$(function () {
		
		var paramDecisionsTable = {};
		
		//Таблица реестра
		var registerTable = new QueryTable("${tableRegister}", {

			initComplete: function (queryAction) {
				registerTable.insertActionButton("createRegisterButton", "Создать", createRegister, "btn-success", false, 0);	
				registerTable.insertActionButton("printRegisterButton", "Печать реестра", printRegister,  "btn-info", true, 2);
				decisionsTable.reload();
			},
			onRowSelect: function (data, index) {
				decisionsTable.reload();
			},
			onRowDeselect: function (data, index) {
				decisionsTable.reload();
			},
			drawCallback: function (settings) {
				decisionsTable.reload();
     }
		}, function () {
			var dataSort = {};
			$("#filterForm").serializeArray().map(function (x) {
				dataSort[x.name] = x.value;
			});
			
			dataSort.register_id = $("#register_id").val();
			
			paramDecisionsTable = dataSort;
			
			dataSort.filterShowList = Object.values(dataSort).some(value => value !== null && value !== undefined && value !== "") 
			// ввели параметр в расширенном фильтре
				|| registerTable.filter().parts.some(function(value) {
				return ['VALUE', 'PREDICATE'].includes(value.type) || value.id.includes('NULL')}); 	
			
			dataSort.paymentType = "${paymentType}";
			 
			return dataSort;
		},
			{ selectFirstRow: true,
				showFilter: true,
				showExportToExcelButton: true,
				paginate: true,
				order: [[ 0, 'desc' ]],
		});	
		
		function printRegister() {
			
			if ('${paymentType}' == 'Перевод СПН из РОПС'){
				var registerData = registerTable.data();
				var registerId = registerData ? registerData.id : null;
				var report = new QueryReport("${reportCode}", null, {
					id: registerId
				});
				report.run();
			}else if ( ['Ежегодная передача в РОПС','Ежемесячная передача в РОПС'].includes('${paymentType}') ) {
				openReportParamModal()
			}else{
				showErrorMessage('Не удалось определить шаблон для печати');
			}
	
		}
		
		function openReportParamModal(){			
			var registerData = registerTable.data();
			if (registerData && registerData.decisionCount && registerData.decisionCount>"${maxDecisions}"){
				$('#reportType_decisionInNewPage').attr('disabled',true);
				$('#reportType_decisionInOnePage').prop("checked", true);
			}else{
				$('#reportType_decisionInNewPage').attr('disabled',false);
			}
			
			$("#reportParamModal").modal('show');
		}
		
		$('#printReport').bind("click", function () {
			
			var reportType = document.querySelector('input[name="reportType"]:checked').value;

			var registerData = registerTable.data();

			getReport(reportType, (registerData ? registerData.id : null), null);
			
			$("#reportParamModal").modal('hide');
		});
		
		//reportType - тип формирования отчета
		//decisionInOneTable - распечатать все решения в одной таблице
		//decisionInNewPage - распечатать каждое решение на новой странице
		//registerId - id реестра
		//decisionId - id решения
		function getReport(reportType, registerId, decisionId){			
			var report = new QueryReport("${reportCode}", null, {
								reportType: reportType,
								registerId: registerId,
								decisionId: decisionId
            });
			report.run();
		}
		
		function createRegister(){
			openNewWindow("view?viewCode=${createRegisterCode}"); 	
		}
				
		//Таблица решений
		var decisionsTable = new QueryTable("${tableDecision}", {
			
			initComplete: function (queryAction) {
				if ( ['Ежегодная передача в РОПС','Ежемесячная передача в РОПС'].includes('${paymentType}') ){
					decisionsTable.insertActionButton("printDecisionButton", "Печать решения", printDecision,  "btn-info", true, 1);
				}
			}

		}, function () {
			var registerData = registerTable.data();
			paramDecisionsTable.register_id = (registerData ? registerData.id : $("#register_id").val());
			return paramDecisionsTable;
		},
			{ selectFirstRow: false,
				showFilter: true,
				showExportToExcelButton: true,
				paginate: true,
				order: [[ 0, 'asc' ]],
		});	
				
		function printDecision(){
			var registerData = registerTable.data();
			var decisionData = decisionsTable.data();
			
			getReport('decisionInOneTable', (registerData ? registerData.id : null), (decisionData ? decisionData.id : null));
		}
		
		// Найти
		$("#filter_search").click(function () {
			registerTable.reload();
		});

		// Сбросить
		$('#filter_clean').click(async function () {
			$('#filterForm').trigger('reset');
					
			$('#filterForm :input.select2-offscreen').each(function() {
				$(this).trigger('change');
			});
			if( urlParams.get('register_id') !== '') {
				$("#register_id").val(null);
				urlParams.set('requestId', '');
				history.replaceState(null,null,'view?viewCode=${view.code}')
			}
			registerTable.reload();
		});
		
		if( urlParams.get('register_id') !== '') {
			$("#register_id").val(urlParams.get('register_id'));

			$("#filter_search").click();
		}

	});

</script>
	
	<!-- reportParam-->

	<div id="reportParamModal" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static" aria-labelledby="reportParamModal" aria-hidden="true">
		<div class="modal-dialog modal-lg">
			<div class="modal-content">
				<div class="modal-header">
					<h4>Варианты печати</h4>
					<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span>
						<span class="sr-only"><s:message code="dialog.close"/></span></button>
				</div>
				<div class="modal-body">
					<form id="reportParam" class="form-vertical" role="form">

						<div class="row">
							<div class="col-sm-10">
								<div class="form-group">
									<input type="radio" id = "reportType_decisionInOnePage" name="reportType" value="decisionInOneTable" checked = "true">
									<label for="reportType_decisionInOnePage">распечатать все решения в одной таблице</label>
								</div>
							</div>
						</div>	

						<div class="row">
							<div class="col-sm-10">
								<div class="form-group">
									<input type="radio"  id = "reportType_decisionInNewPage" name="reportType" value="decisionInNewPage">
									<label for="reportType_decisionInNewPage">распечатать каждое решение на новой странице (до ${maxDecisions} решений в реестре)</label>
								</div>
							</div>
						</div>
					</form>
				</div>
				<div class="modal-footer">
					<button type="button" id="printReport" class="btn btn-primary" style="">Сформировать</button>
					<button class="btn btn-default" type="button" data-dismiss="modal">
						<s:message code="button.cancel"/></button>
				</div>
			</div>
		</div>
	</div>

	<!--END reportParam-->

	<jsp:include page="header.jsp"/>
	<jsp:include page="navbar.jsp"/>

	<div class="container" id="mainContainer">
		<div class="page-header">
			<h1>${view.name}</h1>
		</div>
		<div class="container-fluid">
			<div class="row row-main">
				<jsp:include page="sidebar.jsp"/> 
				<div class="col-sm-10">
					<tags:breadcrumbs path="${breadcrumbsPath}"/>
					
					<h4 class="col-sm-12">${view.name}</h4>
					<div>
						<input id="register_id" name="register_id" style="display: none"/>
						
						<c:if test="${not empty viewСodeFilter}">

							<div style="background-color: #d4edda; margin: -21px -15px 0px; padding: 20px 20px 10px;" >
								
								<div class="row">
										<form id="filterForm" class="form-horizontal" role="form" >
											<jsp:include page="${viewСodeFilter}.jsp"/>
										</form>	
								</div>
								
								<div class="row">
									<div class="form-group col-sm-12 btn-group">
										<button id="filter_search" name="filter_search" type="button" class="btn btn-success" data-loading-text="Отбор...">
											<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
											Найти
										</button>
										<button id="filter_clean" name="filter_clean" type="button" class="btn btn-warning" data-loading-text="Очистка...">
											<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
											Сбросить
										</button>
									</div>
								</div>

							</div>

						</c:if>
						
						<div class="row">
							<div class="col-sm-12">
								<jsp:include page="queryTable.jsp">				
									<jsp:param name="queryTableCode" value="${tableRegister}"/>
									<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
								</jsp:include>
							</div>
						</div>
						
						<div class="row">
							<div class="col-sm-12">
								<jsp:include page="queryTable.jsp">				
									<jsp:param name="queryTableCode" value="${tableDecision}"/>
									<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
								</jsp:include>
							</div>
						</div>
						
					</div>
				</div>
			</div>
		</div>
		
	</div>
	<jsp:include page="footer.jsp"/>
	</body>
</html>