namespace_module.controller("LinkNamespaceController", ['$scope', '$location', '$window', 'toastr', 'AppService', 'AppUtil', 'NamespaceService', function ($scope, $location, $window, toastr, AppService, AppUtil, NamespaceService) { var params = AppUtil.parseParams($location.$$url); $scope.appId = params.appid; $scope.type = params.type; $scope.step = 1; ////// load env ////// AppService.load_nav_tree($scope.appId).then(function (result) { $scope.namespaceIdentifers = []; var envClusterInfo = AppUtil.collectData(result); envClusterInfo.forEach(function (node) { var env = node.env; node.clusters.forEach(function (cluster) { cluster.env = env; cluster.checked = false; $scope.namespaceIdentifers.push(cluster); }) }); }, function (result) { toastr.error(AppUtil.errorMsg(result), "加载环境出错"); }); NamespaceService.find_public_namespaces().then(function (result) { var publicNamespaces = []; result.forEach(function (item) { var namespace = {}; namespace.id = item.name; namespace.text = item.name; publicNamespaces.push(namespace); }); $('#namespaces').select2({ width: '250px', data: publicNamespaces }); }, function (result) { toastr.error(AppUtil.errorMsg(result), "load public namespace error"); }); $scope.appNamespace = { appId:$scope.appId, name:'', comment:'' }; $scope.createNamespace = function () { if ($scope.type == 'link'){ var selectedClusters = collectSelectedClusters(); if (selectedClusters.length == 0){ toastr.warning("请选择集群"); return; } var selectedClustersSize = selectedClusters.length; if ($scope.namespaceType == 1){ $scope.namespaceName = $('#namespaces').select2('data')[0].id; } var hasCreatedClusterCnt = 0; selectedClusters.forEach(function (cluster) { NamespaceService.createNamespace($scope.appId, cluster.env, cluster.clusterName, $scope.namespaceName).then(function (result) { toastr.success( cluster.env + "_" + result.clusterName + "_" + result.namespaceName + "创建成功"); hasCreatedClusterCnt ++; if (hasCreatedClusterCnt == selectedClustersSize){ $scope.step = 2; } }, function (result) { toastr.error(AppUtil.errorMsg(result), cluster.env + "_" + cluster.clusterName + "_" + $scope.namespaceName + "创建失败"); }); }); }else { NamespaceService.createAppNamespace($scope.appId, $scope.appNamespace).then(function (result) { $scope.step = 2; }, function (result) { toastr.error(AppUtil.errorMsg(result), "创建失败"); }); } }; var envAllSelected = false; $scope.toggleEnvsCheckedStatus = function () { envAllSelected = !envAllSelected; $scope.namespaceIdentifers.forEach(function (namespaceIdentifer) { namespaceIdentifer.checked = envAllSelected; }) }; function collectSelectedClusters() { var selectedClusters = []; $scope.namespaceIdentifers.forEach(function (namespaceIdentifer) { if (namespaceIdentifer.checked){ namespaceIdentifer.clusterName = namespaceIdentifer.name; selectedClusters.push(namespaceIdentifer); } }); return selectedClusters; } $scope.namespaceType = 1; $scope.selectNamespaceType = function (type) { $scope.namespaceType = type; }; $scope.switchSelect = function (o) { o.checked = !o.checked; }; $scope.back = function () { $window.location.href = '/config.html?#appid=' + $scope.appId; }; }]);