blob: 9ab5ae761e909a53ba658b51926fc0b0e438a42a [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.
*/
app.service('tools', ['$http', function ($http) {
var ctx = "";
var dashboardRefreshTime = 5000; // todo improve. when data size is large,request is too slow
var generateBrokerMap = function (brokerServer, clusterAddrTable, brokerAddrTable) {
var map = {};
$.each(brokerServer, function (brokerName, brokerStatusList) { // broker
$.each(clusterAddrTable, function (clusterName, brokerNameList) { //clusterAddrTable
if (angular.isUndefined(map[clusterName])) {
map[clusterName] = [];
}
$.each(brokerNameList, function (listIndex, clusterBrokerName) {
if (clusterBrokerName == brokerName) {
$.each(brokerStatusList, function (index, brokerStatus) {
brokerStatus.split = brokerName;
brokerStatus.index = index;
brokerStatus.address = brokerAddrTable[clusterBrokerName].brokerAddrs[index];
brokerStatus.brokerName = brokerAddrTable[clusterBrokerName].brokerName;
map[clusterName].push(brokerStatus);
})
}
})
})
});
return map;
};
var fastSort = function (arrayToSort, propertyToSortWith, sortDirection) {
// temporary holder of position and sort-value
var map = arrayToSort.map(function (e, i) {
if (typeof e[propertyToSortWith] === 'string') {
return { index: i, value: e[propertyToSortWith].toLowerCase() };
}
else {
return { index: i, value: e[propertyToSortWith] };
}
})
// sorting the map containing the reduced values
map.sort(function (a, b) {
if (sortDirection === "ascending") {
return +(a.value > b.value) || +(a.value === b.value) - 1;
}
else {
return +(a.value < b.value) || +(a.value === b.value) - 1;
}
});
// container for the resulting order
var result = map.map(function (e) {
return arrayToSort[e.index];
});
return result;
};
return {
generateBrokerMap:generateBrokerMap,
fastSort:fastSort,
ctx:ctx,
dashboardRefreshTime:dashboardRefreshTime
}
}])