app.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. app=angular.module('app', ["ngTagsInput","ngRoute"]);
  2. app.config(function($routeProvider, $locationProvider) {
  3. // $locationProvider.html5Mode(true);
  4. // $compileProvider.debugInfoEnabled(false);
  5. $routeProvider
  6. .when("/", {
  7. templateUrl: 'main.html',
  8. controller: 'main'
  9. })
  10. .when("/sources", {
  11. templateUrl: 'sources.html',
  12. controller: 'sources'
  13. })
  14. .otherwise({
  15. redirectTo: "/"
  16. })
  17. });
  18. app.controller('sources', function($scope,$http,$location) {
  19. $scope.sources=[];
  20. $scope.parsed_articles=[];
  21. $scope.sourceCategory=1;
  22. $scope.dev=$location.search().dev;
  23. var categories = ["PR","News"];
  24. $http.get("/pymnts/sources").then(
  25. function(data){
  26. $scope.sources=data.data.sources.map(
  27. function(e){
  28. e.category=categories[e.category];
  29. return e;
  30. });
  31. },
  32. function(data){
  33. }
  34. );
  35. $scope.parseSource = function(source,name,sel,rss,category, add) {
  36. url="/pymnts/source/test/";
  37. if(add==1)
  38. url="/pymnts/source/add/";
  39. $http.post(url, { "source": source, "selector":sel, "rss":rss, "name":name, "category": category }).then(
  40. function(data) {
  41. if(!add)
  42. $scope.parsed_articles=data.data.links;
  43. },
  44. function(data){
  45. }
  46. );
  47. };
  48. });
  49. app.controller('main', function($scope,$http,$sce) {
  50. $scope.category="-1";
  51. $scope.news=[];
  52. $scope.newsArticle="";
  53. $scope.selectedArticle = {};
  54. $scope.curPage=1;
  55. $scope.totPages=1;
  56. $scope.pages=[]
  57. var lastPage=0;
  58. var itemsPerPage=15;
  59. $scope.keywords=[];
  60. $scope.selected_kw=[];
  61. $scope.filtered = function(q) {
  62. q=q.toLowerCase();
  63. return $scope.keywords.filter(function(e) { return e.toLowerCase().indexOf(q) > -1});
  64. };
  65. $scope.addKeyword = function(k) {
  66. c=$scope.selected_kw.filter(function(el) { return el.text==k; }).length;
  67. if (c>0)
  68. return;
  69. $scope.selected_kw.push({text:k});
  70. $scope.filter();
  71. };
  72. $scope.getKeywords = function() {
  73. $http.get("/pymnts/keywords").then(
  74. function(data) {
  75. //$scope.keywords=data.data.keywords.map(function(e) { return {text:e} });
  76. $scope.keywords=data.data.keywords;
  77. },
  78. function(data){
  79. }
  80. );
  81. };
  82. $scope.getKeywords();
  83. $scope.getArticle = function(el) {
  84. $scope.selectedArticle = el;
  85. $http.get("/pymnts/article/"+el._id).then(
  86. function(data) {
  87. $scope.newsArticle=$sce.trustAsHtml(data.data.articles.html);
  88. },
  89. function(data){
  90. }
  91. );
  92. };
  93. $scope.reset = function() {
  94. $scope.mindate=undefined;
  95. $scope.maxdate=undefined;
  96. $scope.site=undefined;
  97. $scope.selected_kw=[];
  98. $scope.minweight="1";
  99. $scope.title=undefined;
  100. $scope.category="-1";
  101. $scope.filter();
  102. };
  103. $scope.filter = function(page) {
  104. var kw = $scope.selected_kw.map(function(e){return e.text});
  105. $http.post("/pymnts/articles/",{"mindate":$scope.mindate,
  106. "maxdate":$scope.maxdate,
  107. "site":$scope.site,
  108. "keyword":kw,
  109. "minweight":$scope.minweight,
  110. "title":$scope.title,
  111. "category":$scope.category,
  112. "page":page}).then(
  113. function(data) {
  114. if(page==undefined)
  115. $scope.curPage=1;
  116. $scope.news=data.data.articles.map(
  117. function(el) {
  118. el.kw=el.kw.filter(function(item, pos) {
  119. return el.kw.indexOf(item) == pos;
  120. });
  121. return el;
  122. });
  123. //$scope.news=data.data.articles;
  124. $scope.totPages=Math.ceil(data.data.count/itemsPerPage);
  125. var arr = []
  126. var maxPage=Math.min($scope.curPage+2,$scope.totPages);
  127. var minPage=Math.max($scope.curPage-2,1);
  128. for(var i=minPage; i<=maxPage;i++)
  129. arr.push(i);
  130. $scope.pages=arr;
  131. },
  132. function(data) {
  133. }
  134. );
  135. };
  136. $scope.filter();
  137. $scope.changePage = function(newPage) {
  138. if (newPage > $scope.totPages)
  139. newPage=$scope.totPages;
  140. if (newPage < 1)
  141. newPage=1;
  142. if (newPage==lastPage)
  143. return;
  144. lastPage=newPage;
  145. $scope.curPage=newPage; //clamp
  146. $scope.filter(newPage);
  147. };
  148. $scope.pages = function() {
  149. var arr = [];
  150. for(var i=$scope.curPage -2; i<=$scope.curPage+2;i++)
  151. if (i>=1 && i<=$scope.totPages)
  152. arr.push(i);
  153. return arr;
  154. };
  155. $scope.isCurrent = function(page){
  156. return page === $scope.curPage;
  157. }
  158. $scope.delete_article = function(id) {
  159. $http.get("/pymnts/article/delete/"+id).then(
  160. function(data) {
  161. $scope.news=$scope.news.filter(function(el) { return !(el._id == id) } );
  162. },
  163. function(data){
  164. }
  165. );
  166. };
  167. });