Untitled

 avatar
unknown
plain_text
2 years ago
12 kB
6
Indexable
var Coral = window.Coral || {},
    Granite = window.Granite || {};

var rowsShown = 10;
let contentType = "";

function appendPaginationCountSelect() {
    $(".result-subheading").append(`
                <div>
                    <coral-select name="./pagination-count" placeholder="Pagination count">
                        <coral-select-item id="10" value=10>10</coral-select-item>
                        <coral-select-item id="15" value=15>15</coral-select-item>
                        <coral-select-item id="20" value=20> 20</coral-select-item>
                        <coral-select-item id="25" value=25> 25</coral-select-item>
                        <coral-select-item id="30" value=30>30</coral-select-item>
                </coral-select>
                </div>
            `);
    $(`#${rowsShown}`).attr("selected", true);
}

function tablePagination(size) {
    $('#content-table').after('<div class="pagination"><div id="nav"></div></div>');
    var rowsTotal = $('#table-body tr').length;
    var numPages = (rowsTotal) / rowsShown;
    for (let i = 0; i < numPages; i++) {
        var pageNum = i + 1;
        $('#nav').append('<a href="#" class="page" rel="' + i + '">' + pageNum + '</a> ');
    }
    if (Number(size) > rowsShown) {
        $('.content-wrapper').prepend('<h2 class="result-subheading"><b>Showing ' + rowsShown + ' of ' + size + ' results</b></h2>');
    } else {
        $('.content-wrapper').prepend('<h2 class="result-subheading"><b>Showing ' + size + ' results</b></h2>');
    }

    appendPaginationCountSelect();
    $('#table-body tr').hide();
    $('#table-body tr').slice(0, rowsShown).show();
    $('#nav a:first').addClass('active');
    $('#nav a').bind('click', function () {
        $('#nav a').removeClass('active');
        $(this).addClass('active');
        var currPage = $(this).attr('rel');
        var startItem = Number(currPage) * Number(rowsShown);
        var endItem = Number(startItem) + Number(rowsShown);
        var left = size - startItem;
        $('.result-subheading').remove();
        if (left < rowsShown && currPage != 0) {
            $('.content-wrapper').prepend('<h2 class="result-subheading"><b>Showing ' + left + ' of ' + size + ' results</b></h2>');
            appendPaginationCountSelect();
        } else if (currPage == 0 || (left > Number(rowsShown) && Number(currPage) != 0)) {
            $('.content-wrapper').prepend('<h2 class="result-subheading"><b>Showing ' + rowsShown + ' of ' + size + ' results</b></h2>');
            appendPaginationCountSelect()
        }
        $('#table-body tr').hide();
        $('#table-body tr').slice(startItem, endItem).show();
    });
}

window.htmlDecode = (input) => {
    const doc = new DOMParser().parseFromString(input, 'text/html');
    return doc;
};

function showTableResults(results) {
    if (results.length > 0) {
        $("#content-table").css("display", "block");
        $("#table-body").empty();
        $(".pagination").remove();
        for (let searchItem of results) {
            let str = window.htmlDecode(`
            <table>
                <tbody>
                    <tr is="coral-table-row" class="search-row">
                        <td is="coral-table-cell">${searchItem?.masterFragment}</td>
                        <td is="coral-table-cell"><a href=${searchItem?.externalizedLink} target="_blank">${searchItem.fragmentName}</a></td>
                        <td is="coral-table-cell">${!isValidName(searchItem.initiatorName) ? searchItem.initiatorEmail : searchItem.initiatorName}</td>
                        <td is="coral-table-cell">${searchItem.reviewTime}</td>
                        <td is="coral-table-cell">${!isValidName(searchItem.reviewrName) ? searchItem.reviewerEmail : searchItem.reviewrName}</td>
                        <td is="coral-table-cell">${searchItem.status}</td>
                        <td is="coral-table-cell">${searchItem.comments}</td>
                    </tr>
                </tbody>
            </table>
            `)
            str = str.getElementsByTagName('tbody')[0].innerHTML;
            $(`#table-body`).append(str)
        }
        if (results.length > 10) {
            tablePagination(results.length);
        } else {
            let str = window.htmlDecode(`<h2 class="result-subheading"><b>Showing ${results.length} results</b></h2>`);
            str = str.body.innerHTML;
            $('.content-wrapper').prepend(str);
        }
    } else {
        $("#content-table").css("display", "none");
        $(".pagination").remove();
        $(".result-subheading").remove();
        $("#table-body").empty();
        $('.content-wrapper').prepend('<h2 class="result-subheading"><b>No Results Found</b></h2>');
    }
}

function isValidName(name) {
    return name && name.replace(/ /g, "") !== "";
}

(function (window, document, $, Coral) {
    "use strict";

    var fromDate = null;
    var toDate = null;
    let searchResults = [];
    let duplicateSearchResults = [];
    $(document).on("foundation-contentloaded", function () {
        var SITE_PATH = "/conf/email-fragments/settings/tools/approvalAuditTool-initiator.html",
            ui = $(window).adaptTo("foundation-ui");


        $("button[name='./exportDetails']").css("display", "none");
        if (window.location.href.indexOf(SITE_PATH) < 0) {
            return;
        }

        /**
         * Event will get triggered when we click on Approved btn
         */
        $(document).off("click", "button[name='./approvedDetails']").on("click", "button[name='./approvedDetails']", showApprovedDetails);

        function hideCoralProgress() {
            $("coral-progress").css('display', 'none');
        }

        function showCoralPregress() {
            $("coral-progress").css('display', 'block');
        }

        function showApprovedDetails() {
            $('.result-subheading').remove();
            $('.pagination').hide();
            $('.pagination').remove();
            $("#table-accordian").empty();

            if ($(`coral-datepicker[name='./fromDate']`).val()) {
                fromDate = new Date($(`coral-datepicker[name='./fromDate']`).val())
            }
            if ($(`coral-datepicker[name='./toDate']`).val()) {
                toDate = new Date($(`coral-datepicker[name='./toDate']`).val())
            }
            if (fromDate && toDate && fromDate <= toDate) {
                $(`#error_alert`).css("display", "none");
                let fromDateStr = `${fromDate.getFullYear()}-${fromDate.getMonth() + 1}-${fromDate.getDate()}`;
                let toDateStr = `${toDate.getFullYear()}-${toDate.getMonth() + 1}-${toDate.getDate() + 1}`
                if ($("coral-select[name='./Content Type']").val() === 'content-fragment') {
                    contentType = "cf";
                } else {
                    contentType = "xf";
                }
                jQuery.ajax({
                    type: "GET",
                    async: true,
                    dataType: 'json',
                    url: `/bin/ogcApprovalAudit?contentType=${contentType}&startDate=${fromDateStr}&endDate=${toDateStr}`,
                    beforeSend: showCoralPregress,
                    success: onShowDetailsAPISuccess,
                    complete: hideCoralProgress
                });
            } else {
                if (isValidDate(fromDate) && !isValidDate(toDate)) {
                    $(`#error_message`).text("Please select valid To Date to proceed");
                } else if (!isValidDate(fromDate) && isValidDate(toDate)) {
                    $(`#error_message`).text("Please select valid From Date to proceed");
                } else if (!isValidDate(fromDate) && !isValidDate(toDate)) {
                    $(`#error_message`).text("Please select valid From Date and To date to proceed");
                } else {
                    $(`#error_message`).text("Please select From Date less than To Date");
                }
                $(`#error_alert`).css("display", "block");
            }
        }

        function onShowDetailsAPISuccess(response) {
            if (response && response.results && response.results.length > 0) {

                $("button[name='./exportDetails']").css("display", "inherit");

                searchResults = response.results;
                duplicateSearchResults = searchResults;
                showTableResults(searchResults);
            } else {
                $("#content-table").css("display", "none");
                $("button[name='./exportDetails']").css("display", "none");
                $(".content-wrapper").prepend(`<h2 class="result-subheading"><b>No Results Found</b></h2>`);
            }
        }

        function isValidDate(selectedDate) {
            return !(selectedDate === null || isNaN(selectedDate.getTime()));
        }


        /**
         * Event will get triggered when we click on export btn
         */
        $(document).off("click", "button[name='./exportDetails']").on("click", "button[name='./exportDetails']", exportDetails);

        function exportDetails() {
            let fromDateStr = `${fromDate.getFullYear()}-${fromDate.getMonth() + 1}-${fromDate.getDate()}`;
            let toDateStr = `${toDate.getFullYear()}-${toDate.getMonth() + 1}-${toDate.getDate() + 1}`;
            let toDateActual = `${toDate.getFullYear()}-${toDate.getMonth() + 1}-${toDate.getDate()}`;
            jQuery.ajax({
                type: "GET",
                async: true,
                dataType: 'json',
                url: `/bin/ogcApprovalAuditDoc?contentType=${contentType}&startDate=${fromDateStr}&endDate=${toDateStr}&toDate=${toDateActual}`,
                beforeSend: showCoralPregress,
                success: downloadDocs,
                complete: hideCoralProgress
            });
        }

        function downloadDocs(response) {
            var link = document.createElement('a');
            link.href = response.pdfPath;
            link.download = 'OGCAudit.docx';
            link.dispatchEvent(new MouseEvent('click'));
        }


        $(document).off("input", "coral-search[name='./table-search']").on("input", "coral-search[name='./table-search']", function (event) {
            $('.result-subheading').remove();
            $("#table-accordian").empty();
            $(".pagination").remove();
            let newResults = [];
            if (event.target.value !== '') {
                for (let elem of duplicateSearchResults) {
                    if (elem && (elem.fragmentName.toLowerCase().includes(event.target.value.toLowerCase())
                        || elem?.masterFragment?.toLowerCase().includes(event.target.value.toLowerCase())
                        || elem.initiatorName.toLowerCase().includes(event.target.value.toLowerCase())
                        || elem.reviewrName.toLowerCase().includes(event.target.value.toLowerCase())
                        || elem.comments.toLowerCase().includes(event.target.value.toLowerCase())
                        || elem.status.toLowerCase().includes(event.target.value.toLowerCase()))
                    ) {
                        newResults.push(elem);
                    }
                }
                searchResults = [...newResults];
            } else {
                searchResults = [...duplicateSearchResults];
            }
            showTableResults(searchResults);
        });

        $(document).off("click", "coral-search[name='./table-search'] > .coral-DecoratedTextfield-button").on('click', "coral-search[name='./table-search'] > .coral-DecoratedTextfield-button", function () {
            $('.result-subheading').remove();
            $("#table-accordian").empty();
            $("#pagination").remove();
            searchResults = duplicateSearchResults;
            showTableResults(searchResults);
        });

        $(document).off("click", ".coral-close-button").on('click', ".coral-close-button", function () {
            $("coral-alert").css("display", "none");
        });

        $(document).off("change", "coral-select[name='./pagination-count']").on("change", "coral-select[name='./pagination-count']", function (event) {
            rowsShown = event.target.value;
            $('.result-subheading').remove();
            $('.pagination').hide();
            $('.pagination').remove();
            $("#table-accordian").empty();
            showTableResults(searchResults);
        });
    });

})(window, document, $, Coral);
Editor is loading...