Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/autossl/views/PendingQueueController.js

/* global define: false */

define(
    [
        "angular",
        "cjt/util/locale",
        "lodash",
        "uiBootstrap",
        "cjt/directives/toggleSortDirective",
        "cjt/directives/searchDirective",
        "cjt/directives/pageSizeDirective",
        "cjt/directives/toggleSwitchDirective",
        "cjt/directives/actionButtonDirective",
        "cjt/filters/startFromFilter",
        "cjt/decorators/paginationDecorator",
        "ngSanitize"
    ],
    function(angular, LOCALE, _) {

        // Retrieve the current application
        var app = angular.module("App");

        // Setup the controller
        var controller = app.controller(
            "PendingQueueController", [
                "$scope", "$filter", "manageService", "pending_queue_items",
                function($scope, $filter, manageService, pending_queue_items) {
                    $scope.pending_queue_items = pending_queue_items;
                    $scope.items = $scope.pending_queue_items;
                    $scope.filteredList = [];
                    $scope.showPager = true;
                    $scope.all_rows_selected = false;
                    $scope.loading_queue = false;

                    $scope.meta = {

                        // sort settings
                        sortReverse: false,
                        sortBy: "request_time",
                        sortDirection: "dsc",

                        // pager settings
                        maxPages: 0,
                        totalItems: $scope.items.length,
                        currentPage: 1,
                        pageSize: 20,
                        pageSizes: [20, 50, 100, 500],
                        start: 0,
                        limit: 20,

                        filterValue: "",
                    };

                    $scope.showing_text = function() {
                        var first_item = ($scope.meta.currentPage - 1) * $scope.meta.pageSize;
                        first_item += 1;
                        var last_item = $scope.meta.currentPage * $scope.meta.pageSize;
                        last_item = Math.min(last_item, $scope.items.length);
                        return LOCALE.maketext("[output,strong,Showing] [numf,_1] - [numf,_2] of [quant,_3,item,items]", first_item, last_item, $scope.items.length);
                    };

                    $scope.get_request_time = function(item) {
                        var d = new Date(item.request_time);

                        // datetime() always kicks out UTC.
                        // We could use local_datetime(), but
                        // that would break compatibility with
                        // Perl’s Locale, which doesn’t have
                        // local_datetime(). So, instead we
                        // “trick” datetime() by feeding it
                        // an offset epoch seconds count.
                        var compensated_time = d.getTime();
                        compensated_time -= 60 * 1000 * d.getTimezoneOffset();
                        compensated_time /= 1000;
                        return LOCALE.maketext("[datetime,_1,datetime_format_medium]", compensated_time);
                    };

                    $scope.get_autossl_pending_queue = function() {
                        return manageService.get_autossl_pending_queue().then(function(pending_queue_items) {
                            $scope.pending_queue_items = pending_queue_items;
                            $scope.items = $scope.pending_queue_items;
                            $scope.fetch();
                        });
                    };

                    $scope.fetch = function() {
                        var filteredList = [];

                        // filter list based on search text
                        if ($scope.meta.filterValue !== "") {
                            filteredList = $filter("filter")($scope.items, $scope.meta.filterValue, false);
                        } else {
                            filteredList = $scope.items;
                        }

                        // sort the filtered list
                        if ($scope.meta.sortDirection !== "" && $scope.meta.sortBy !== "") {
                            filteredList = $filter("orderBy")(filteredList, $scope.meta.sortBy, $scope.meta.sortDirection === "asc" ? false : true);
                        }

                        // update the total items after search
                        $scope.meta.totalItems = filteredList.length;

                        // filter list based on page size and pagination
                        if ($scope.meta.totalItems > _.min($scope.meta.pageSizes)) {
                            var start = ($scope.meta.currentPage - 1) * $scope.meta.pageSize;
                            var limit = $scope.meta.pageSize;

                            filteredList = $filter("limitTo")($filter("startFrom")(filteredList, start), limit);
                            $scope.showPager = true;

                            // table statistics
                            $scope.meta.start = start + 1;
                            $scope.meta.limit = start + filteredList.length;

                        } else {

                            // hide pager and pagination
                            $scope.showPager = false;

                            if (filteredList.length === 0) {
                                $scope.meta.start = 0;
                            } else {

                                // table statistics
                                $scope.meta.start = 1;
                            }

                            $scope.meta.limit = filteredList.length;
                        }

                        var countNonSelected = $filter("filter")(filteredList, function(item) {
                            if (item.rowSelected) {
                                return false;
                            }
                            return true;
                        }).length;

                        $scope.filteredList = filteredList;

                        // Clear the 'Select All' checkbox if at least one row is not selected.
                        $scope.all_rows_selected = (filteredList.length > 0) && (countNonSelected === 0);

                        return filteredList;
                    };


                    $scope.fetch();

                }
            ]
        );

        return controller;
    }
);
Back to Directory File Manager