Moved related stats in a standalone component
diff --git a/mCordPortal/src/app/components/related-stats/related-stats.js b/mCordPortal/src/app/components/related-stats/related-stats.js
new file mode 100644
index 0000000..d40f6cf
--- /dev/null
+++ b/mCordPortal/src/app/components/related-stats/related-stats.js
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed 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.
+ */
+
+angular.module('mCord')
+ .directive('relatedStats', function () {
+ return {
+ restrict: 'E',
+ templateUrl: 'app/components/related-stats/related-stats.tpl.html',
+ scope: {
+ model: '=',
+ type: '@'
+ },
+ bindToController: true,
+ controllerAs: 'vm',
+ controller: function($scope, $filter, _){
+ $scope.$watch(() => this.model, enode => {
+ if(enode){
+ loadStats();
+ }
+ });
+
+ const loadStats = () => {
+ this.model.getStats()
+ .then((stats) => {
+ this.selectedStats = 'download_data';
+ this.stats = formatStats(stats);
+ });
+ };
+
+ const formatStats = stats => {
+ let series = _.reduce(stats, (list, s) => {
+ return list.concat([s.Profile]);
+ }, []);
+ let labels = _.reduce(stats[0].StatsArray, (list, s) => {
+ return list.concat([$filter('date')(new Date(s.Time * 1000), 'shortTime')]);
+ }, []);
+ const download_data = _.reduce(stats, (list, stat) => {
+ let bitrate = _.reduce(stat.StatsArray, (data, s) => {
+ return data.concat([s.DlBitrate]);
+ }, []);
+ list.push(bitrate);
+ return list;
+ }, []);
+ const upload_data = _.reduce(stats, (list, stat) => {
+ let bitrate = _.reduce(stat.StatsArray, (data, s) => {
+ return data.concat([s.UlBitrate]);
+ }, []);
+ list.push(bitrate);
+ return list;
+ }, []);
+ return {
+ labels: labels,
+ series: series,
+ data: download_data,
+ upload_data: upload_data,
+ download_data: download_data
+ };
+ };
+
+ this.setChart = type => {
+ if(!this.stats){
+ return;
+ }
+ this.selectedStats = type;
+ this.stats.data = this.stats[type];
+ }
+ }
+ };
+ });