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


<!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="s" uri="http://www.springframework.org/tags" %>
<%@ page session="true" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<html lang="ru">
<jsp:include page="head.jsp"/>
<body>

<script type="text/javascript" src="<c:url value='/js/${version}/queryAction.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/${version}/queryTable.js'/>"></script>

<script type="text/javascript">
$(function () {

    // ---- Инициализация таблицы ----
    var reportTable = new QueryTable("tbl_strategies_end_period", {
        initComplete: function (queryAction) {
            reportTable.addActionButton(
                "btnExport",
                "Выгрузить отчёт",
                function () {
                    var dateFrom = $('#filter\\.date_from').val();
                    var dateTo   = $('#filter\\.date_to').val();
                    var schema   = $('#filter\\.schema_index').val();
                    var strategy = $('#filter\\.strategy').val();

                    var param = "date_from=" + dateFrom
                              + "&date_to=" + dateTo
                              + "&schema_index=" + (schema || '')
                              + "&strategy=" + (strategy || '');

                    window.open(
                        "queryModel/file?queryModelCode=STRATEGIES_EXPORT&queryModelCharset=UTF-8&viewCode="
                        + $.urlParam("viewCode") + "&" + param,
                        '_blank'
                    );
                },
                "btn-success",
                false
            );
        },
        onRowSelect: function (data, index) {},
        onRowDeselect: function (data, index) {},
        drawCallback: function (settings) {}

    }, function () {
        var data = {};

        if ($('#filter\\.date_from').val())
            data.date_from = $('#filter\\.date_from').val();

        if ($('#filter\\.date_to').val())
            data.date_to = $('#filter\\.date_to').val();

        if ($('#filter\\.schema_index').select2('val'))
            data.schema_index = $('#filter\\.schema_index').val();

        if ($('#filter\\.strategy').select2('val'))
            data.strategy = $('#filter\\.strategy').val();

        // Таблица рендерится только после нажатия "Сформировать"
        data.isShow = ($('#isShow').val() == 1);

        return data;
    }, {
        selectFirstRow: false
    });

    // ---- Select2 для выпадающих списков ----
    $('#filter\\.schema_index').select2({
        allowClear: true,
        ajax: {
            url: "queryModel?queryModelCode=SCHEMA_INDEX_LIST",
            dataType: 'json',
            type: "POST",
            data: function (term, page) { return { term: term }; },
            results: function (data, page) { return { results: data.list }; }
        },
        formatResult:    function (d) { return '<div>' + d.name + '</div>'; },
        formatSelection: function (d) { return d.name; },
        escapeMarkup:    function (m) { return m; }
    });

    $('#filter\\.strategy').select2({
        allowClear: true,
        ajax: {
            url: "queryModel?queryModelCode=STRATEGY_LIST",
            dataType: 'json',
            type: "POST",
            data: function (term, page) { return { term: term }; },
            results: function (data, page) { return { results: data.list }; }
        },
        formatResult:    function (d) { return '<div>' + d.name + '</div>'; },
        formatSelection: function (d) { return d.name; },
        escapeMarkup:    function (m) { return m; }
    });

    // ---- Кнопка "Сформировать" ----
    $('#btn\\.generate').click(function () {
        var dateFrom = $('#filter\\.date_from').val();
        var dateTo   = $('#filter\\.date_to').val();

        if (!dateFrom || !dateTo) {
            alert('Заполните поля "Период с" и "Период по"');
            return;
        }
        $('#isShow').val(1);
        reportTable.reload();
    });

    // ---- Кнопка "Найти" ----
    $('#btn\\.search').click(function () {
        reportTable.reload();
    });

    // ---- Кнопка "Сбросить" ----
    $('#btn\\.reset').click(function () {
        $('#filterForm')[0].reset();
        $('#filter\\.schema_index').select2('val', null);
        $('#filter\\.strategy').select2('val', null);
        $('#isShow').val(0);
        reportTable.reload();
    });

});
</script>

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

<div class="container" id="mainContainer">
    <div class="page-header">
        <h1>Отчёт по стратегиям на конец периода</h1>
    </div>
    <div class="container-fluid">
        <div class="row row-main">
            <jsp:include page="sidebar.jsp"/>
            <div class="col-sm-10">
                <tags:breadcrumbs path="https://portal.futurenpf.ru/knowledgebase/category/XXXXX/"/>

                <form id="filterForm" class="form-horizontal">

                    <!-- Строка 1: период + кнопка Сформировать -->
                    <div class="col-sm-3">
                        <label for="filter.date_from">Период с</label>
                        <input type="text" id="filter.date_from" name="filter.date_from"
                               class="form-control date-picker-on" placeholder="дд.мм.гггг" maxlength="10">
                    </div>
                    <div class="col-sm-3">
                        <label for="filter.date_to">Период по</label>
                        <input type="text" id="filter.date_to" name="filter.date_to"
                               class="form-control date-picker-on" placeholder="дд.мм.гггг" maxlength="10">
                    </div>
                    <div class="col-sm-3" style="margin-top: 25px;">
                        <button id="btn.generate" type="button" class="btn btn-primary">
                            Сформировать
                        </button>
                    </div>

                    <div class="clearfix" style="margin-bottom: 12px;"></div>

                    <!-- Строка 2: выпадающие списки + Найти/Сбросить -->
                    <div class="col-sm-3">
                        <label for="filter.schema_index">Индекс схемы</label>
                        <input type="hidden" id="filter.schema_index" name="filter.schema_index"
                               class="form-control" style="width:100%">
                    </div>
                    <div class="col-sm-3">
                        <label for="filter.strategy">Стратегия</label>
                        <input type="hidden" id="filter.strategy" name="filter.strategy"
                               class="form-control" style="width:100%">
                    </div>
                    <div class="col-sm-3" style="margin-top: 25px;">
                        <button id="btn.search" type="button" class="btn btn-success">
                            <span class="glyphicon glyphicon-search"></span> Найти
                        </button>
                        <button id="btn.reset" type="button" class="btn btn-warning" style="margin-left: 6px;">
                            <span class="glyphicon glyphicon-trash"></span> Сбросить
                        </button>
                    </div>

                    <div class="clearfix"></div>

                </form>

                <input type="hidden" id="isShow" value="0">

                <div class="row" style="margin-top: 15px;">
                    <div class="col-sm-12">
                        <jsp:include page="queryTable.jsp">
                            <jsp:param name="queryTableCode" value="tbl_strategies_end_period"/>
                            <jsp:param name="queryTableStyle" value="width: 100%; white-space: nowrap;"/>
                        </jsp:include>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

<jsp:include page="footer.jsp"/>
</body>
</html>