Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/convert_addon_to_account/views/main.js

/*
# views/main.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 define: false */

define(
    [
        "angular",
        "cjt/util/locale",
        "lodash",
        "uiBootstrap",
        "cjt/decorators/growlDecorator",
        "cjt/directives/searchDirective",
        "app/services/ConvertAddonData"
    ],
    function(angular, LOCALE, _) {

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

        var controller = app.controller(
            "mainController",
            ["$anchorScroll", "$location", "growl", "ConvertAddonData",
                function($anchorScroll, $location, growl, ConvertAddonData) {

                    var main = this;

                    main.allDomains = [];
                    main.loadingDomains = false;

                    main.meta = {
                        sortDirection: "asc",
                        sortBy: "domain",
                        sortType: "",
                        sortReverse: false,
                        maxPages: 0,
                        totalItems: main.allDomains.length || 0,
                        pageNumber: 1,
                        pageNumberStart: 0,
                        pageNumberEnd: 0,
                        pageSize: 20,
                        pageSizes: [20, 50, 100],
                        pagedList: [],
                        filteredList: main.allDomains,
                        filter: ""
                    };

                    main.resetPagination = function() {
                        main.meta.pageNumber = 1;
                        main.fetchPage();
                    };

                    main.includeItem = function(domainInfo) {
                        if (domainInfo.addon_domain.indexOf(main.meta.filter) !== -1 ||
                        domainInfo.owner.indexOf(main.meta.filter) !== -1) {
                            return true;
                        }
                        return false;
                    };

                    main.filterList = function() {
                        main.meta.filteredList = main.allDomains.filter(main.includeItem);
                        main.resetPagination();
                    };

                    main.clearFilter = function() {
                        if (main.hasFilter()) {
                            main.meta.filter = "";
                            main.meta.filteredList = main.allDomains.slice();
                            main.resetPagination();
                        }
                    };

                    main.hasFilter = function() {
                        return main.meta.filter.length > 0;
                    };

                    main.fetchPage = function(scrollToTop) {
                        var pageSize = main.meta.pageSize;
                        var beginIndex = ((main.meta.pageNumber - 1) * pageSize) + 1;
                        var endIndex = beginIndex + pageSize - 1;
                        if (endIndex > main.meta.filteredList.length) {
                            endIndex = main.meta.filteredList.length;
                        }

                        main.meta.totalItems = main.meta.filteredList.length;
                        main.meta.pagedList = main.meta.filteredList.slice(beginIndex - 1, endIndex);
                        main.meta.pageNumberStart = main.meta.filteredList.length === 0 ? 0 : beginIndex;
                        main.meta.pageNumberEnd = endIndex;

                        if (scrollToTop) {
                            $anchorScroll("pageContainer");
                        }
                    };

                    main.paginationMessage = function() {
                        return LOCALE.maketext("Displaying [numf,_1] to [numf,_2] out of [quant,_3,item,items]", main.meta.pageNumberStart, main.meta.pageNumberEnd, main.meta.totalItems);
                    };

                    main.convertDomain = function(domainInfo) {
                        $location.path("/convert/" + encodeURIComponent(domainInfo.addon_domain) + "/migrations");
                    };

                    main.compareDomains = function(domainA, domainB) {
                        if (main.meta.sortBy === "domain") {
                            return domainA.addon_domain.localeCompare(domainB.addon_domain);
                        } else { // sort by owner
                            var ownerComparison = domainA.owner.localeCompare(domainB.owner);
                            if (ownerComparison === 0) {

                            // if the owners are the same, sort by domain
                                return domainA.addon_domain.localeCompare(domainB.addon_domain);
                            }
                            return ownerComparison;
                        }
                    };

                    main.sortList = function() {
                        main.allDomains.sort(main.compareDomains);

                        if (main.meta.sortDirection !== "asc") {
                            main.allDomains = main.allDomains.reverse();
                        }
                    };

                    main.hasAddonDomains = function() {
                        return main.meta.pagedList.length > 0;
                    };

                    main.resetDisplay = function() {
                        main.sortList();
                        main.filterList();
                    };

                    main.loadList = function() {
                        main.loadingDomains = true;
                        return ConvertAddonData.loadList()
                            .then(
                                function(result) {
                                    main.allDomains = result;
                                }, function(error) {
                                    growl.error(error);
                                }
                            )
                            .finally( function() {
                                main.loadingDomains = false;
                                main.resetDisplay();
                            });
                    };

                    main.forceLoadList = function() {
                        main.allDomains = [];
                        main.meta.pagedList = [];
                        main.loadList();
                    };

                    main.viewHistory = function() {
                        $location.path("/history/");
                    };

                    main.init = function() {
                        if (app.firstLoad.addonList) {
                            app.firstLoad.addonList = false;
                            main.allDomains = ConvertAddonData.domains;
                            main.resetDisplay();
                        } else {
                            main.loadList();
                        }
                    };

                    main.init();
                }
            ]);

        return controller;
    }
);
Back to Directory File Manager