Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/listsubdomains/index.cmb.js

/*
# whostmgr/docroot/templates/index.js             Copyright(c) 2020 cPanel, L.L.C.
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
*/

/* global require, define, PAGE */

// Then load the application dependencies
// Reference libraries for POTENTIAL loading.
define('app/index',[
    "angular",
    "lodash",
    "cjt/core",
    "cjt/modules",
    "cjt/directives/toggleSortDirective",
    "cjt/directives/searchDirective",
    "cjt/directives/pageSizeDirective",
    "cjt/filters/startFromFilter",
    "cjt/decorators/paginationDecorator"
], function(angular, _) {

    "use strict";

    var appName = "whm.listSubdomains";

    return function() {

        angular.module(appName, ["cjt2.config.whm.configProvider", "cjt2.whm"]);

        require(["cjt/bootstrap"], function(BOOTSTRAP) {

            // Creates an new angular module instance for your application.
            var app = angular.module(appName);
            app.value("PAGE", PAGE);

            app.controller("tableCtrl", ["$scope", "$filter", function($scope, $filter) {

                $scope.subdomains = [];

                PAGE.domains.forEach(function(domaindata) {
                    domaindata.subdomains.forEach(function(subdomain) {
                        subdomain.user = domaindata.user;
                        subdomain.domain = domaindata.domain;
                        subdomain.parked = domaindata.parked;
                        subdomain.user = domaindata.user;
                        $scope.subdomains.push(subdomain);
                    });
                });

                var filters = {
                    filter: $filter("filter"),
                    orderBy: $filter("orderBy"),
                    startFrom: $filter("startFrom"),
                    limitTo: $filter("limitTo")
                };

                $scope.meta = {

                    // sort settings
                    sortReverse: false,
                    sortBy: "domain",
                    sortDirection: "asc",

                    // search settings
                    filterValue: PAGE.searchDomain ? PAGE.searchDomain : "",

                    // pager settings
                    maxPages: 5,
                    totalItems: $scope.subdomains.length,
                    currentPage: 1,
                    pageSize: 10,
                    pageSizes: [10, 20, 50, 100],
                    start: 0,
                    limit: 10
                };

                $scope.sortList = function(meta) {
                    $scope.fetch();
                };

                $scope.selectPage = function(currentPage) {
                    $scope.fetch();
                };

                $scope.selectPageSize = function(pageSize) {
                    $scope.fetch();
                };

                $scope.searchList = function(searchString) {
                    $scope.fetch();
                };

                $scope.fetch = function() {

                    var filteredList = $scope.subdomains;

                    if ($scope.meta.filterValue !== "") {
                        filteredList = filters.filter($scope.subdomains, $scope.meta.filterValue, false);
                    } else {
                        filteredList = $scope.subdomains;
                    }

                    if ($scope.meta.sortDirection !== "" && $scope.meta.sortBy !== "") {
                        filteredList = filters.orderBy(filteredList, $scope.meta.sortBy, $scope.meta.sortDirection !== "asc");
                    }

                    $scope.meta.totalItems = filteredList.length;

                    if ($scope.meta.totalItems > _.min($scope.meta.pageSizes)) {
                        var start = ($scope.meta.currentPage - 1) * $scope.meta.pageSize;
                        var limit = $scope.meta.pageSize;

                        filteredList = filters.limitTo(filters.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;
                    }

                    $scope.filteredList = filteredList;
                };

                $scope.fetch();
            }]);

            // Attach the angular app to the DOM.
            BOOTSTRAP(document, appName);
        });

    };

});

Back to Directory File Manager