/* * 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 } }])