aggregation-platform/plugins/developer/ts/workspaces.ts

414 lines
14 KiB
TypeScript
Raw Normal View History

2016-06-28 10:22:53 +08:00
/// <reference path="../../includes.ts"/>
/// <reference path="../../kubernetes/ts/kubernetesHelpers.ts"/>
2016-09-08 22:56:43 +08:00
/// <reference path="../../kubernetes/ts/kubernetesModel.ts"/>
2016-09-09 15:14:22 +08:00
/// <reference path="../../configs/ts/configsDataService.ts"/>
2016-06-28 10:22:53 +08:00
/// <reference path="developerEnrichers.ts"/>
/// <reference path="developerHelpers.ts"/>
2016-09-03 15:03:40 +08:00
/// <reference path="dataManagerHelper.ts"/>
/// <reference path="dataManagerModel.ts"/>
2016-09-10 21:06:48 +08:00
/// <reference path="../../configs/ts/configsHelper.ts"/>
/// <reference path="../../configs/ts/customAlert.ts"/>
2016-06-28 10:22:53 +08:00
module Developer {
export var WorkspacesController = controller("WorkspacesController", ["$scope", "KubernetesModel", "DataModel", "ConfigsModel", "KubernetesState", "$templateCache", "$location", "$routeParams", "$http", "$timeout", "KubernetesApiURL", "$element", "ngDialog",
($scope, KubernetesModel: Kubernetes.KubernetesModelService, DataModel:Developer.DataModelService, ConfigsModel:Configs.ConfigsModelService, KubernetesState, $templateCache:ng.ITemplateCacheService, $location:ng.ILocationService, $routeParams, $http, $timeout, KubernetesApiURL, $element, ngDialog) => {
2016-09-11 17:37:24 +08:00
$scope.model=DataModel;
2016-12-09 17:23:40 +08:00
$scope.replicasModel = KubernetesModel;
2016-09-03 15:03:40 +08:00
$scope.options = DataModel.paramOptions;
$scope.pageSizeChoses = DataModel.paramOptions.pagerSizeOption;
2016-12-09 17:23:40 +08:00
var result = getDataType($location);
2016-09-03 15:03:40 +08:00
2016-09-06 22:34:48 +08:00
$scope.treeOptions = {
2016-09-09 16:06:02 +08:00
nodeChildren: "childNodes",
2016-09-06 22:34:48 +08:00
dirSelectable: true,
injectClasses: {
ul: "a1",
li: "a2",
liSelected: "a7",
iExpanded: "a3",
iCollapsed: "a4",
iLeaf: "a5",
label: "a6",
labelSelected: "a8"
}
}
2016-09-13 08:27:36 +08:00
2016-09-03 15:03:40 +08:00
//配置数据表格需要显示的内容及显示格式
$scope.tableConfig = {
data: 'model.data',
showSelectionCheckbox: true,
2016-09-06 19:03:43 +08:00
enableRowClickSelection: false,
multiSelect: true,
2016-09-03 15:03:40 +08:00
selectedItems: [],
filterOptions: {
filterText: $location.search()["q"] || ''
},
columnDefs: [
{
field: "_key",
2016-09-30 11:20:11 +08:00
displayName: '编码'
2016-09-03 15:03:40 +08:00
},
{
field: "name",
displayName: '市-区/县',
2016-10-12 15:20:00 +08:00
customSortField: (field) => {
return field.regionalismCode;
}
2016-09-03 15:03:40 +08:00
},
{
field: "systemName",
displayName: '系统名称',
customSortField: (field) => {
2016-10-12 15:20:00 +08:00
return field.systemCode;
}
2016-09-03 15:03:40 +08:00
},
2016-11-18 10:38:59 +08:00
{
field: "dataBaseType",
displayName: '数据库类型',
},
2016-09-06 19:03:43 +08:00
{
field: "labels",
displayName: '数据标签',
cellTemplate: $templateCache.get("dataLabelsTemplate.html")
2016-09-14 16:31:58 +08:00
},
{
field: "year",
displayName: '年度',
},
2016-09-03 15:03:40 +08:00
{
field: "collectingTime",
displayName: '采集时间'
},
{
2016-09-18 18:51:04 +08:00
field: "extractStatus",
displayName: '汇总状态',
cellTemplate: $templateCache.get("dataExtractTemplate.html")
2016-11-18 10:38:59 +08:00
}
2016-09-30 11:20:11 +08:00
],
sortInfo: {
sortBy: "_key",
ascending: true
}
2016-09-03 15:03:40 +08:00
};
2016-12-09 17:23:40 +08:00
init($scope, $location, $routeParams);
$scope.model.paramOptions.dataType = result["dataType"];
$scope.model.paramOptions.volumeType = result["volumeType"];
2016-09-20 19:00:09 +08:00
$scope.$on("dataLabelFilterUpdate", ($event, text, key) => {
$scope.keyQuery += " " + text;
})
2016-12-09 17:23:40 +08:00
$scope.selectBatchItem = (item)=> {
2016-09-03 15:03:40 +08:00
$scope.navbarItems.forEach((nav) =>{
nav.class="";
});
item.class="active";
2016-11-25 10:21:14 +08:00
$scope.model.updateParamOption("currentPageNum", 1);
2016-09-20 19:00:09 +08:00
$scope.model.updateParamOption("keyQuery", $scope.keyQuery);
$scope.model.updateParamOption("dataBatch", item.alias);
2016-09-03 15:03:40 +08:00
}
$scope.isEmptyOrFirst = () => {
var idx = $scope.model.getParamOption("currentPageNum");
2016-12-16 17:22:59 +08:00
var length =$scope.model.paramOptions.totlePage;
2016-09-03 15:03:40 +08:00
return length <= 0 || idx <= 1;
}
$scope.isEmptyOrLast = () =>{
var idx = $scope.model.getParamOption("currentPageNum");
2016-12-16 17:22:59 +08:00
var length =$scope.model.paramOptions.totlePage;
2016-09-03 15:03:40 +08:00
return length < 1 || idx >= length;
}
$scope.first = () => {
var idx = $scope.model.getParamOption("currentPageNum");
2016-10-14 11:22:49 +08:00
if(idx >1){
2016-11-03 10:48:03 +08:00
Kubernetes.eliminateChechBoxClick();
2016-09-03 15:03:40 +08:00
$scope.model.updateParamOption("currentPageNum", 1);
2016-10-14 11:22:49 +08:00
}
2016-09-03 15:03:40 +08:00
}
$scope.last = () =>{
var idx = $scope.model.getParamOption("currentPageNum");
2016-12-16 17:22:59 +08:00
var length =$scope.model.paramOptions.totlePage;
2016-11-03 10:48:03 +08:00
if(idx < length){
Kubernetes.eliminateChechBoxClick();
$scope.model.updateParamOption("currentPageNum", length);
}
2016-09-03 15:03:40 +08:00
}
$scope.previous = () => {
var idx = $scope.model.getParamOption("currentPageNum");
2016-12-16 17:22:59 +08:00
var length =$scope.model.paramOptions.totlePage;
2016-11-03 10:48:03 +08:00
if(idx > 1){
Kubernetes.eliminateChechBoxClick();
2016-09-03 15:03:40 +08:00
$scope.model.updateParamOption("currentPageNum", idx-1);
2016-11-03 10:48:03 +08:00
}
2016-09-03 15:03:40 +08:00
}
$scope.next = () =>{
2016-12-16 17:22:59 +08:00
var length =$scope.model.paramOptions.totlePage;
2016-09-03 15:03:40 +08:00
var idx = $scope.model.getParamOption("currentPageNum");
2016-10-14 11:22:49 +08:00
if(idx < length){
2016-11-03 10:48:03 +08:00
Kubernetes.eliminateChechBoxClick();
2016-09-03 15:03:40 +08:00
$scope.model.updateParamOption("currentPageNum", idx+1);
2016-10-14 11:22:49 +08:00
}
2016-09-03 15:03:40 +08:00
}
2016-12-09 17:23:40 +08:00
$scope.$watch('model.paramOptions', (newValue, oldValue) => {
if(newValue){
2016-09-03 15:03:40 +08:00
if(newValue.currentTableSize !== oldValue.currentTableSize)
$scope.options.priorTableSize = oldValue.currentTableSize;
else
2016-09-20 19:00:09 +08:00
$scope.options.priorTableSize = newValue.currentTableSize;
2016-09-03 15:03:40 +08:00
DataModel.updateModel();
2016-06-28 10:22:53 +08:00
}
2016-09-03 15:03:40 +08:00
}, true);
2016-09-20 19:00:09 +08:00
$scope.search = () => {
2016-11-21 16:35:42 +08:00
//$scope.model.initParamOptions();
$scope.model.paramOptions.currentPageNum = 1;
2016-09-20 19:00:09 +08:00
$scope.model.updateParamOption("keyQuery", $scope.keyQuery);
}
2016-09-14 16:31:58 +08:00
$scope.deletePrompt = (selected) => {
if (angular.isString(selected)) {
selected = [{
id: selected
}];
}
/*
2016-10-14 11:22:49 +08:00
使
*/
2016-12-15 08:45:49 +08:00
var message = Kubernetes.checkForMigration($scope.replicasModel.replicationControllers, $scope.model.transferTasks , $scope.tableConfig.selectedItems, "manager");
2016-10-14 11:22:49 +08:00
if(message != ""){
Configs.customAlert("提示", "操作失败:" + message + ",不能删除!", '',null, 0, "error");
return;
}
2016-09-14 16:31:58 +08:00
UI.multiItemConfirmActionDialog(<UI.MultiItemConfirmActionOptions>{
collection: selected,
2016-11-18 10:38:59 +08:00
index: 'alias',
2016-09-14 16:31:58 +08:00
onClose: (result:boolean) => {
var idColl = [];
if (result) {
angular.forEach(selected, (select) => {
2016-09-20 19:00:09 +08:00
idColl.push(select.id);
2016-09-14 16:31:58 +08:00
});
$http({
method: "POST",
url: "/java/console/api/delete/data",
params: {"data": idColl}
}).success(function(data, status, headers, config) {
//成功之后做一些事情
DataModel.updateModel();
}).error(function(data, status, headers, config) {
});
}
},
title: '是否需要删除采集数据?',
action: '以下采集数据文件将会被删除:',
okText: '删除',
okClass: 'btn-danger sj_btn_cir',
custom: "该删除操作将会彻底删除数据文件,是否删除,请确认!",
customClass: "alert alert-warning sj_alert-warning",
cancelText: "取消",
cancelClass: 'sj_btn_grey'
}).open();
2016-09-03 15:03:40 +08:00
}
2016-09-06 19:03:43 +08:00
$scope.migrationClick = {
items:null,
2016-09-12 16:30:17 +08:00
selectedItem: {"name": "当前没有可以迁移的集群"},
2016-09-06 19:03:43 +08:00
dialog: new UI.Dialog(),
2016-09-10 21:06:48 +08:00
onOk: () => {
var migrationClick = $scope.migrationClick;
/*
,$http:发生http异步请求url;
2016-10-14 16:51:07 +08:00
*/
2016-12-15 17:04:42 +08:00
2016-10-14 16:51:07 +08:00
if(Kubernetes.alreadyExitInFolder($scope.tableConfig.selectedItems, $scope.selectNode)){
migrationClick.close();
Configs.customAlert("提示", "操作失败:" + "数据已在当前目录!", '',null, 0, "error");
return;
};
Configs.oracleInfoOperate($http, "/java/console/api/volume", Configs.OperateType.MOVE,
{
"name": migrationClick.selectedItem.name,
"selectItems": $scope.tableConfig.selectedItems,
"selectNode": $scope.selectNode
}, (result, status) => {
if(status===200){
2016-09-28 17:04:00 +08:00
//$scope.model.updateOracleParam();
}else
throw "资源请求失败";
});
/*
*/
$timeout(() =>{
2016-09-28 17:04:00 +08:00
$location.path("/workspaces/Overview/task");
},250);
migrationClick.close();
2016-09-06 19:03:43 +08:00
},
open: (selected) =>{
2016-10-14 11:22:49 +08:00
var migrationClick = $scope.migrationClick;
2016-12-15 17:04:42 +08:00
ConfigsModel.updateVolumeData();
if(ConfigsModel.cluster!=null)
$scope.volumes = ConfigsModel.cluster;
/*
2016-10-14 11:22:49 +08:00
使
2016-12-15 17:04:42 +08:00
*/
2016-12-15 08:45:49 +08:00
var message = Kubernetes.checkForMigration($scope.replicasModel.replicationControllers, $scope.model.transferTasks , $scope.tableConfig.selectedItems, "manager");
2016-10-14 11:22:49 +08:00
if(message == ""){
if($scope.volumes && $scope.volumes instanceof Array && $scope.volumes.length >0)
migrationClick.selectedItem = $scope.volumes[0];
2016-10-14 11:22:49 +08:00
migrationClick.dialog.open();
}else{
2016-10-14 11:22:49 +08:00
Configs.customAlert("提示", "操作失败:" + message + ", 不能迁移!", '',null, 0, "error");
}
2016-09-06 19:03:43 +08:00
},
close: () => {
2016-09-12 16:30:17 +08:00
$scope.migrationClick.selectedItem = {"name": "当前没有可以迁移的集群"};
2016-09-06 19:03:43 +08:00
$scope.migrationClick.dialog.close();
}
};
2016-11-18 10:38:59 +08:00
$scope.createOracleService = (items) =>{
var exitedItems = Kubernetes.checkForCreateOracle($scope.model.transferTasks, items);
for (var i = 0; i < items.length; ++i) {
// code...
if(items[i].dataBaseType != 'ORACLE'){
Configs.customAlert("提示", "操作失败: 非ORACLE数据不需要挂载启动", '', null, 0, "error");
return;
}
}
2016-09-28 17:04:00 +08:00
if(exitedItems.length == 0){
2016-11-18 10:38:59 +08:00
angular.forEach(items,(item)=>{
console.log(item);
2016-09-30 11:20:11 +08:00
var isExited = Kubernetes.checkForExit($scope.replicasModel.replicationControllers, item);
if(!isExited){
Kubernetes.createRC({
name: item._key,
labels: {
system: item.systemCode.toString(),
version: item.dataVersion.toString(),
region: item.regionalismCode.toString()
},
annotations: {
cityName: item.cityName,
districtName: item.districtName,
systemName: item.systemName,
id: item.id+"",
2016-11-17 08:51:19 +08:00
year: item.year,
2016-11-18 10:38:59 +08:00
checkoutFlag: item.checkoutFlag
2016-09-30 11:20:11 +08:00
},
path: item.dataPath+"app/",
isTarget: "false",
isExtract: item.extractStatus
}, (rc) =>{
Kubernetes.connectOracle($http, $timeout, "/java/console/api/connectOracle", "create", rc, 0);
});
}
2016-09-28 17:04:00 +08:00
});
$timeout(() => {
$location.path('/kubernetes/namespace/default/replicationControllers');
}, 200);
}else{
var name = "";
angular.forEach(exitedItems, (item) => {
name += item.name + "-" + item.systemName + ",";
2016-10-14 11:22:49 +08:00
});
Configs.customAlert("提示", "操作失败: 正在迁移的数据不能被启动!", '', null, 0, "error");
2016-09-28 17:04:00 +08:00
}
2016-09-03 15:03:40 +08:00
}
2016-12-09 17:23:40 +08:00
function init($scope,$location,$routeParams){
2016-09-20 19:00:09 +08:00
$scope.keyQuery = "";
2016-11-21 10:39:20 +08:00
$scope.model.initParamOptions();
2016-09-20 19:00:09 +08:00
$scope.model.updateParamOption("keyQuery", $scope.keyQuery);
2016-09-10 21:06:48 +08:00
if(ConfigsModel.cluster!=null)
2016-09-13 08:27:36 +08:00
$scope.volumes = ConfigsModel.cluster;
2016-09-09 16:06:02 +08:00
//创建二级菜单
2016-09-03 15:03:40 +08:00
$scope.subTabConfig = Developer.createCurrentSubNavBar($scope, $location, $routeParams);
$scope.navbarItems =[{
herf: "",
label: "全部",
title: "查看全部数据",
class: "active",
alias: null
},
{
herf: "",
label: "批次A",
title: "查看批次A的数据",
class: "",
alias: "A"
},
{
herf: "",
label: "批次B",
title: "查看批次B的数据",
class: "",
alias: "B"
2016-12-09 17:23:40 +08:00
}];
if(!($location.path().indexOf("hot") > -1)){
$scope.tableConfig.columnDefs.splice(7,0,{
field: "existHotData",
displayName: '是否已在热区',
cellTemplate: $templateCache.get("isExistHot.html")
});
}
2016-09-03 15:03:40 +08:00
}
function getDataType($location){
var path = $location.path();
2016-09-22 19:44:12 +08:00
var dataType;
var volumeType;
2016-12-09 17:23:40 +08:00
var subPath = path.split("/");
if(path.indexOf("hot") > -1)
$scope.isShow = true;
else
$scope.isShow = false;
2016-09-03 15:03:40 +08:00
switch (subPath[subPath.length -1]) {
case "financial":
2016-09-22 19:44:12 +08:00
dataType = "财政";
2016-09-03 15:03:40 +08:00
break;
case "social-security":
2016-09-22 19:44:12 +08:00
dataType = "社保";
2016-09-03 15:03:40 +08:00
break;
default:
2016-09-22 19:44:12 +08:00
dataType = null;
2016-09-03 15:03:40 +08:00
break;
2016-09-22 19:44:12 +08:00
};
switch (subPath[3]) {
case "hot":
volumeType = 0
break;
default:
volumeType = 1
2016-12-13 15:00:19 +08:00
}
2016-09-22 19:44:12 +08:00
return {
"dataType": dataType,
"volumeType": volumeType
}
2016-09-03 15:03:40 +08:00
}
2016-06-28 10:22:53 +08:00
}]);
}