blob: cd093d401ba141a8c8b994eb417f47ba0bb81c43 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var module = app;
module.controller('consumerController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
$scope.paginationConf = {
currentPage: 1,
totalItems: 0,
itemsPerPage: 10,
pagesLength: 15,
perPageOptions: [10],
rememberPerPage: 'perPageItems',
onChange: function () {
$scope.showConsumerGroupList(this.currentPage,this.totalItems);
}
};
$scope.sortKey = null;
$scope.sortOrder=1;
$scope.intervalProcessSwitch = false;
$scope.intervalProcess = null;
$scope.allConsumerGrouopList = [];
$scope.consumerGroupShowList = [];
$scope.sortByKey = function (key) {
$scope.paginationConf.currentPage=1;
$scope.sortOrder = -$scope.sortOrder;
$scope.sortKey = key;
$scope.doSort();
};
$scope.doSort = function (){// todo how to change this fe's code ? (it's dirty)
if($scope.sortKey == 'diffTotal'){
$scope.allConsumerGrouopList.sort(function(a,b) {return (a.diffTotal > b.diffTotal) ? $scope.sortOrder : ((b.diffTotal > a.diffTotal) ? -$scope.sortOrder : 0);} );
}
if($scope.sortKey == 'group'){
$scope.allConsumerGrouopList.sort(function(a,b) {return (a.group > b.group) ? $scope.sortOrder : ((b.group > a.group) ? -$scope.sortOrder : 0);} );
}
if($scope.sortKey == 'count'){
$scope.allConsumerGrouopList.sort(function(a,b) {return (a.count > b.count) ? $scope.sortOrder : ((b.count > a.count) ? -$scope.sortOrder : 0);} );
}
if($scope.sortKey == 'consumeTps'){
$scope.allConsumerGrouopList.sort(function(a,b) {return (a.consumeTps > b.consumeTps) ? $scope.sortOrder : ((b.consumeTps > a.consumeTps) ? -$scope.sortOrder : 0);} );
}
$scope.filterList($scope.paginationConf.currentPage)
};
$scope.refreshConsumerData = function () {
$http({
method: "GET",
url: "consumer/groupList.query"
}).success(function (resp) {
if(resp.status ==0){
$scope.allConsumerGrouopList = resp.data;
console.log($scope.allConsumerGrouopList);
console.log(JSON.stringify(resp));
$scope.showConsumerGroupList($scope.paginationConf.currentPage,$scope.allConsumerGrouopList.length);
}else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
};
$scope.monitor = function(consumerGroupName){
$http({
method: "GET",
url: "monitor/consumerMonitorConfigByGroupName.query",
params:{consumeGroupName:consumerGroupName}
}).success(function (resp) {
// if(resp.status ==0){
ngDialog.open({
template: 'consumerMonitorDialog',
controller: 'consumerMonitorDialogController',
data:{consumerGroupName:consumerGroupName,data:resp.data}
});
// }else {
// Notification.error({message: resp.errMsg, delay: 2000});
// }
});
};
$scope.$watch('intervalProcessSwitch', function () {
if ($scope.intervalProcess != null) {
clearInterval($scope.intervalProcess);
$scope.intervalProcess = null;
}
if ($scope.intervalProcessSwitch) {
$scope.intervalProcess = setInterval($scope.refreshConsumerData, 10000);
}
});
$scope.refreshConsumerData();
$scope.filterStr="";
$scope.$watch('filterStr', function() {
$scope.paginationConf.currentPage=1;
$scope.filterList(1)
});
$scope.filterList = function (currentPage) {
var lowExceptStr = $scope.filterStr.toLowerCase();
var canShowList = [];
$scope.allConsumerGrouopList.forEach(function(element) {
console.log(element)
if (element.group.toLowerCase().indexOf(lowExceptStr) != -1){
canShowList.push(element);
}
});
$scope.paginationConf.totalItems =canShowList.length;
var perPage = $scope.paginationConf.itemsPerPage;
var from = (currentPage - 1) * perPage;
var to = (from + perPage)>canShowList.length?canShowList.length:from + perPage;
$scope.consumerGroupShowList = canShowList.slice(from, to);
};
$scope.showConsumerGroupList = function (currentPage,totalItem) {
var perPage = $scope.paginationConf.itemsPerPage;
var from = (currentPage - 1) * perPage;
var to = (from + perPage)>totalItem?totalItem:from + perPage;
$scope.consumerGroupShowList = $scope.allConsumerGrouopList.slice(from, to);
$scope.paginationConf.totalItems = totalItem ;
console.log($scope.consumerGroupShowList)
console.log($scope.paginationConf.totalItems)
$scope.doSort()
};
$scope.openAddDialog = function () {
$scope.openCreateOrUpdateDialog(null);
};
$scope.openCreateOrUpdateDialog = function(request){
var bIsUpdate = true;
if(request == null){
request = [{
brokerNameList: [],
subscriptionGroupConfig: {
groupName: "",
consumeEnable: true,
consumeFromMinEnable: true,
consumeBroadcastEnable: true,
retryQueueNums: 1,
retryMaxTimes: 16,
brokerId: 0,
whichBrokerWhenConsumeSlowly: 1
}
}];
bIsUpdate = false;
}
console.log(request);
$http({
method: "GET",
url: "cluster/list.query"
}).success(function (resp) {
if(resp.status ==0){
console.log(resp);
ngDialog.open({
template: 'consumerModifyDialog',
controller: 'consumerModifyDialogController',
data:{
consumerRequestList:request,
allClusterNameList:Object.keys(resp.data.clusterInfo.clusterAddrTable),
allBrokerNameList:Object.keys(resp.data.brokerServer),
bIsUpdate:bIsUpdate
}
});
}else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
};
$scope.detail = function(consumerGroupName){
$http({
method: "GET",
url: "consumer/queryTopicByConsumer.query",
params:{consumerGroup:consumerGroupName}
}).success(function (resp) {
if(resp.status ==0){
console.log(resp);
ngDialog.open({
template: 'consumerTopicViewDialog',
controller: 'consumerTopicViewDialogController',
data:{consumerGroupName:consumerGroupName,data:resp.data}
});
}else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
};
$scope.client = function(consumerGroupName){
$http({
method: "GET",
url: "consumer/consumerConnection.query",
params:{consumerGroup:consumerGroupName}
}).success(function (resp) {
if(resp.status ==0){
console.log(resp);
ngDialog.open({
template: 'clientInfoDialog',
// controller: 'addTopicDialogController',
data:{data:resp.data,consumerGroupName:consumerGroupName}
});
}else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
};
$scope.updateConfigDialog = function(consumerGroupName){
$http({
method: "GET",
url: "consumer/examineSubscriptionGroupConfig.query",
params:{consumerGroup:consumerGroupName}
}).success(function (resp) {
if(resp.status ==0){
console.log(resp);
$scope.openCreateOrUpdateDialog(resp.data);
}else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
};
$scope.delete = function(consumerGroupName){
$http({
method: "GET",
url: "consumer/fetchBrokerNameList.query",
params:{
consumerGroup:consumerGroupName
}
}).success(function (resp) {
if(resp.status ==0){
console.log(resp);
ngDialog.open({
template: 'deleteConsumerDialog',
controller: 'deleteConsumerDialogController',
data:{
// allClusterList:Object.keys(resp.data.clusterInfo.clusterAddrTable),
allBrokerNameList:resp.data,
consumerGroupName:consumerGroupName
}
});
}else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
}
}])
module.controller('consumerMonitorDialogController', function ($scope, ngDialog, $http,Notification) {
$scope.createOrUpdateConsumerMonitor = function () {
$http({
method: "POST",
url: "monitor/createOrUpdateConsumerMonitor.do",
params:{consumeGroupName:$scope.ngDialogData.consumerGroupName,
minCount:$scope.ngDialogData.data.minCount,
maxDiffTotal:$scope.ngDialogData.data.maxDiffTotal}
}).success(function (resp) {
if(resp.status ==0){
Notification.info({message: "delete success!", delay: 2000});
}else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
}
}
);
module.controller('deleteConsumerDialogController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
$scope.selectedClusterList = [];
$scope.selectedBrokerNameList = [];
$scope.delete = function () {
console.log($scope.selectedClusterList);
console.log($scope.selectedBrokerNameList);
console.log($scope.ngDialogData.consumerGroupName);
$http({
method: "POST",
url: "consumer/deleteSubGroup.do",
data:{groupName:$scope.ngDialogData.consumerGroupName,
brokerNameList:$scope.selectedBrokerNameList}
}).success(function (resp) {
if(resp.status ==0){
Notification.info({message: "delete success!", delay: 2000});
}else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
}
}]
);
module.controller('consumerModifyDialogController', ['$scope', 'ngDialog', '$http','Notification',function ($scope, ngDialog, $http,Notification) {
$scope.postConsumerRequest = function (consumerRequest) {
var request = JSON.parse(JSON.stringify(consumerRequest));
console.log(request);
$http({
method: "POST",
url: "consumer/createOrUpdate.do",
data:request
}).success(function (resp) {
if(resp.status ==0){
Notification.info({message: "update success!", delay: 2000});
}else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
}
}]
);
module.controller('consumerTopicViewDialogController', ['$scope', 'ngDialog', '$http', 'Notification', function ($scope, ngDialog, $http, Notification) {
$scope.consumerRunningInfo = function (consumerGroup, clientId, jstack) {
$http({
method: "GET",
url: "consumer/consumerRunningInfo.query",
params: {
consumerGroup: consumerGroup,
clientId: clientId,
jstack: jstack
}
}).success(function (resp) {
if (resp.status == 0) {
ngDialog.open({
template: 'consumerClientDialog',
data:{consumerClientInfo:resp.data,
clientId:clientId}
});
} else {
Notification.error({message: resp.errMsg, delay: 2000});
}
});
};
}]
);