Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/convert_addon_to_account/views/db_options.js
/*
# views/db_options.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, CPANEL: false */
define(
[
"angular",
"lodash",
"cjt/util/locale",
"app/models/dynamic_table",
"cjt/decorators/growlDecorator",
"cjt/decorators/paginationDecorator",
"cjt/directives/toggleSortDirective",
"cjt/directives/searchDirective",
"cjt/directives/pageSizeDirective",
"cjt/filters/startFromFilter",
"app/services/ConvertAddonData",
"app/services/Databases",
"app/directives/db_name_validators"
],
function(angular, _, LOCALE, DynamicTable) {
var app = angular.module("App");
var controller = app.controller(
"databaseSelectionController",
["$q", "$location", "$routeParams", "growl", "ConvertAddonData", "Databases", "$anchorScroll",
function($q, $location, $routeParams, growl, ConvertAddonData, Databases, $anchorScroll) {
var db_selection_vm = this;
db_selection_vm.ui = {};
db_selection_vm.ui.is_loading = false;
db_selection_vm.ui.domain_exists = false;
db_selection_vm.this_domain = {};
db_selection_vm.is_prefixing_enabled = void 0;
db_selection_vm.move_type = "move";
// This function exists in the old cjt/sql.js file
db_selection_vm.database_name_max_length = CPANEL.sql.get_name_length_limit("mysql", "database");
var db_table = new DynamicTable();
db_table.setSort("db_name");
var user_table = new DynamicTable();
user_table.setSort("user_name");
function searchDbsFunction(item, searchText) {
return item.db_name.indexOf(searchText) !== -1;
}
db_table.setFilterFunction(searchDbsFunction);
function searchUsersFunction(item, searchText) {
return item.user_name.indexOf(searchText) !== -1;
}
user_table.setFilterFunction(searchUsersFunction);
db_selection_vm.dbs = {
"checkDropdownOpen": false,
"allRowsSelected": db_table.areAllDisplayedRowsSelected(),
"meta": db_table.getMetadata(),
"filteredList": db_table.getList(),
"totalSelected": db_table.getTotalRowsSelected(),
"paginationMessage": db_table.paginationMessage,
"fetch": function() {
db_selection_vm.dbs.filteredList = db_table.populate();
db_selection_vm.dbs.allRowsSelected = db_table.areAllDisplayedRowsSelected();
db_selection_vm.dbs.totalSelected = db_table.getTotalRowsSelected();
},
"sortList": function() {
db_selection_vm.dbs.fetch();
},
"selectPage": function() {
db_selection_vm.dbs.fetch();
},
"selectPageSize": function() {
db_selection_vm.dbs.fetch();
},
"searchList": function() {
db_selection_vm.dbs.fetch();
},
"selectAll": function(model) {
db_table.selectAllDisplayed(model);
db_selection_vm.dbs.fetch();
db_selection_vm.dbs.allRowsSelected = db_table.areAllDisplayedRowsSelected();
db_selection_vm.dbs.totalSelected = db_table.getTotalRowsSelected();
},
"selectDb": function(db) {
db_table.selectItem(db);
db_selection_vm.dbs.allRowsSelected = db_table.areAllDisplayedRowsSelected();
db_selection_vm.dbs.totalSelected = db_table.getTotalRowsSelected();
},
"clearAllSelections": function(event) {
event.preventDefault();
event.stopPropagation();
db_table.clearAllSelections();
db_selection_vm.dbs.checkDropdownOpen = false;
db_selection_vm.dbs.allRowsSelected = db_table.areAllDisplayedRowsSelected();
db_selection_vm.dbs.totalSelected = db_table.getTotalRowsSelected();
}
};
db_selection_vm.users = {
"checkDropdownOpen": false,
"allRowsSelected": user_table.areAllDisplayedRowsSelected(),
"meta": user_table.getMetadata(),
"filteredList": user_table.getList(),
"totalSelected": user_table.getTotalRowsSelected(),
"paginationMessage": user_table.paginationMessage,
"fetch": function() {
db_selection_vm.users.filteredList = user_table.populate();
db_selection_vm.users.allRowsSelected = user_table.areAllDisplayedRowsSelected();
db_selection_vm.users.totalSelected = user_table.getTotalRowsSelected();
},
"sortList": function() {
db_selection_vm.users.fetch();
},
"selectPage": function() {
db_selection_vm.users.fetch();
},
"selectPageSize": function() {
db_selection_vm.users.fetch();
},
"searchList": function() {
db_selection_vm.users.fetch();
},
"selectAll": function(model) {
user_table.selectAllDisplayed(model);
db_selection_vm.users.fetch();
db_selection_vm.users.allRowsSelected = user_table.areAllDisplayedRowsSelected();
db_selection_vm.users.totalSelected = user_table.getTotalRowsSelected();
},
"selectUser": function(db) {
user_table.selectItem(db);
db_selection_vm.users.allRowsSelected = user_table.areAllDisplayedRowsSelected();
db_selection_vm.users.totalSelected = user_table.getTotalRowsSelected();
},
"clearAllSelections": function(event) {
event.preventDefault();
event.stopPropagation();
user_table.clearAllSelections();
db_selection_vm.users.checkDropdownOpen = false;
db_selection_vm.users.allRowsSelected = user_table.areAllDisplayedRowsSelected();
db_selection_vm.users.totalSelected = user_table.getTotalRowsSelected();
}
};
function convertDBObjectToList(dbs) {
var existing_db;
var has_selections = db_selection_vm.this_domain.move_options["mysql_dbs"] &&
db_selection_vm.this_domain.move_options["mysql_dbs"].length > 0;
var prefix = Databases.createPrefix(db_selection_vm.this_domain.account_settings.username);
var data = [];
for (var db in dbs) {
if (dbs.hasOwnProperty(db)) {
// If the user had already selected this database to move,
// we should mark it as selected
if (has_selections &&
(existing_db = _.find(db_selection_vm.this_domain.move_options.mysql_dbs, { "name": db })) !== void 0) {
data.push({
"db_name": db,
"db_users": dbs[db],
"selected": true,
"db_new_name": existing_db.new_name,
"db_prefix": prefix
});
} else {
data.push({
"db_name": db,
"db_users": dbs[db],
"selected": false,
"db_new_name": "",
"db_prefix": prefix
});
}
existing_db = void 0;
}
}
db_table.loadData(data);
}
function convertUsersObjectToList(users) {
var existing_user;
var has_selections = db_selection_vm.this_domain.move_options["mysql_users"] &&
db_selection_vm.this_domain.move_options["mysql_users"].length > 0;
var data = [];
for (var user in users) {
if (users.hasOwnProperty(user)) {
// If the user had already selected this user to move,
// we should mark it as selected
if (has_selections &&
(existing_user = _.find(db_selection_vm.this_domain.move_options.mysql_users, { "name": user })) !== void 0) {
data.push({
"user_name": user,
"user_databases": users[user],
"selected": true
});
} else {
data.push({
"user_name": user,
"user_databases": users[user],
"selected": false
});
}
existing_user = void 0;
}
}
user_table.loadData(data);
}
db_selection_vm.disableSave = function(form) {
return (form.$dirty && form.$invalid);
};
db_selection_vm.saveOptions = function(form) {
if (!form.$valid) {
return;
}
db_selection_vm.this_domain.modified = true;
var selected_dbs = db_table.getSelectedList();
db_selection_vm.this_domain.move_options.db_move_type = db_selection_vm.move_type;
db_selection_vm.this_domain.move_options["mysql_dbs"] = selected_dbs.map(function(item) {
return {
"name": item.db_name,
"new_name": item.db_new_name
};
});
if (db_selection_vm.this_domain.move_options.db_move_type === "move") {
var selected_users = user_table.getSelectedList();
db_selection_vm.this_domain.move_options["mysql_users"] = selected_users.map(function(item) {
return {
"name": item.user_name,
};
});
} else {
db_selection_vm.this_domain.move_options["mysql_users"] = [];
}
return $location.path("/convert/" + db_selection_vm.domain_name + "/migrations");
};
db_selection_vm.goBack = function() {
return $location.path("/convert/" + db_selection_vm.domain_name + "/migrations");
};
db_selection_vm.init = function() {
db_selection_vm.ui.is_loading = true;
ConvertAddonData.getAddonDomain($routeParams.addondomain)
.then(function(data) {
if (Object.keys(data).length) {
db_selection_vm.domain_name = data.addon_domain;
db_selection_vm.this_domain = data;
if (data.move_options.db_move_type) {
db_selection_vm.move_type = data.move_options.db_move_type;
}
return Databases.getDatabases(db_selection_vm.this_domain.owner)
.then(function(data) {
convertDBObjectToList(data);
convertUsersObjectToList(Databases.getUsers());
db_selection_vm.is_prefixing_enabled = Databases.isPrefixingEnabled();
if (db_selection_vm.is_prefixing_enabled) {
db_selection_vm.database_name_max_length -= Databases.getPrefixLength();
}
db_selection_vm.dbs.fetch();
db_selection_vm.users.fetch();
db_selection_vm.ui.domain_exists = true;
})
.catch(function(meta) {
var len = meta.errors.length;
if (len > 1) {
growl.error(meta.reason);
}
for (var i = 0; i < len; i++) {
growl.error(meta.errors[i]);
}
});
} else {
db_selection_vm.domain_name = $routeParams.addondomain;
db_selection_vm.ui.domain_exists = false;
}
})
.finally(function() {
db_selection_vm.ui.is_loading = false;
$location.hash("pageContainer");
$anchorScroll();
});
};
db_selection_vm.init();
}
]);
return controller;
}
);
Back to Directory
File Manager