blob: 37cceb6028eb56e6e2942df8d67b6c41d7b53140 [file] [log] [blame]
/*
* Copyright (c) 2013 DataTorrent, Inc. ALL Rights Reserved.
*
* 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.
*/
/*global settings, angular, jQuery, _*/
(function () {
'use strict';
angular.module('twitter')
.controller('TwitterUrlsController', ['$scope', 'rest', function ($scope, rest) {
rest.getApp(settings.twitterUrls.appName).then(function (app) {
$scope.app = app;
$scope.appURL = settings.appsURL + app.id;
});
$scope.topic = settings.twitterUrls.topic;
$scope.pageTitle = 'Twitter Top URLs';
$scope.entity = 'URLs';
$scope.gridTitle = 'Twitter Top URLs';
$scope.chartTitle = 'Top 10 URLs Chart';
$scope.colName = 'URL';
$scope.formatter = function(url) {
return '<a class="svg-link" xlink:href="' + url + '">' + url + '</a>';
};
}])
.controller('TwitterHashtagsController', ['$scope', 'rest', function ($scope, rest) {
rest.getApp(settings.twitterHashtags.appName).then(function (app) {
$scope.app = app;
$scope.appURL = settings.appsURL + app.id;
});
$scope.topic = settings.twitterHashtags.topic;
$scope.pageTitle = 'Twitter Top Hashtags';
$scope.entity = 'hashtags';
$scope.gridTitle = 'Twitter Top Hashtags';
$scope.chartTitle = 'Top 10 Hashtags Chart';
$scope.colName = 'Hashtag';
$scope.formatter = function(Hashtag) {
return '<a class="svg-link" xlink:href="https://twitter.com/search?q=%23' + encodeURIComponent(Hashtag) + '">' + Hashtag + '</a>';
};
}])
.controller('TwitterGridControlller', ['$scope', 'socket', function ($scope, socket) {
socket.subscribe($scope.topic, function(data) {
var list = [];
jQuery.each(data.data, function(key, value) {
list.push( { name: key, value: parseInt(value, 10) } );
});
list = _.sortBy(list, function(item) {
return -item.value;
});
$scope.topTen = list;
$scope.$apply();
}, $scope);
$scope.gridOptions = {
data: 'topTen',
enableColumnResize: true,
columnDefs: [
{ field: "name", displayName: $scope.colName, width: '75%', sortable: false },
{ field: "value", displayName: 'Count', width: '25%', sortable: false }
]
};
}])
.controller('TwitterBarChartController', ['$scope', 'socket', function($scope, socket) {
socket.subscribe($scope.topic, function(data) {
var list = [];
jQuery.each(data.data, function(key, value) {
list.push( { name: key, value: parseInt(value, 10) } );
});
list = _.sortBy(list, function(item) {
return -item.value;
});
//var max = _.max(list, function(item) {item.value});
var max = list[0].value;
_.each(list, function(item) {
if ($scope.formatter) {
item.name = $scope.formatter(item.name);
}
item.name += ' - ' + item.value;
item.score = item.value / max * 100;
});
$scope.twitterBarChartData = list;
$scope.$apply();
}, $scope);
$scope.twitterBarChartData = [];
}]);
})();