filters.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*jshint globalstrict:true */
  2. /*global angular:true */
  3. 'use strict';
  4. angular.module('kibana.filters', [])
  5. .filter('stringSort', function() {
  6. return function(input) {
  7. return input.sort();
  8. };
  9. }).filter('pinnedQuery', function(querySrv) {
  10. return function( items, pinned) {
  11. var ret = _.filter(querySrv.ids,function(id){
  12. var v = querySrv.list[id];
  13. if(!_.isUndefined(v.pin) && v.pin === true && pinned === true) {
  14. return true;
  15. }
  16. if((_.isUndefined(v.pin) || v.pin === false) && pinned === false) {
  17. return true;
  18. }
  19. });
  20. return ret;
  21. };
  22. }).filter('slice', function() {
  23. return function(arr, start, end) {
  24. if(!_.isUndefined(arr)) {
  25. return arr.slice(start, end);
  26. }
  27. };
  28. }).filter('stringify', function() {
  29. return function(arr, start, end) {
  30. if(!_.isUndefined(arr)) {
  31. return arr.toString();
  32. }
  33. };
  34. }).filter('noXml', function() {
  35. return function(text) {
  36. if(!_.isString(text)) {
  37. return text;
  38. }
  39. return text.
  40. replace(/&/g, '&').
  41. replace(/</g, '&lt;').
  42. replace(/>/g, '&gt;').
  43. replace(/'/g, '&#39;').
  44. replace(/"/g, '&quot;');
  45. };
  46. }).filter('urlLink', function() {
  47. var //URLs starting with http://, https://, or ftp://
  48. r1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim,
  49. //URLs starting with "www." (without // before it, or it'd re-link the ones done above).
  50. r2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim,
  51. //Change email addresses to mailto:: links.
  52. r3 = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;
  53. return function(text, target, otherProp) {
  54. if(!_.isString(text)) {
  55. return text;
  56. }
  57. _.each(text.match(r1), function(url) {
  58. text = text.replace(r1, "<a href=\"$1\" target=\"_blank\">$1</a>");
  59. });
  60. _.each(text.match(r2), function(url) {
  61. text = text.replace(r2, "$1<a href=\"http://$2\" target=\"_blank\">$2</a>");
  62. });
  63. _.each(text.match(r3), function(url) {
  64. text = text.replace(r3, "<a href=\"mailto:$1\">$1</a>");
  65. });
  66. return text;
  67. };
  68. }).filter('gistid', function() {
  69. var gist_pattern = /(\d{5,})|([a-z0-9]{10,})|(gist.github.com(\/*.*)\/[a-z0-9]{5,}\/*$)/;
  70. return function(input, scope) {
  71. //return input+"boners"
  72. if(!(_.isUndefined(input))) {
  73. var output = input.match(gist_pattern);
  74. if(!_.isNull(output) && !_.isUndefined(output)) {
  75. return output[0].replace(/.*\//, '');
  76. }
  77. }
  78. };
  79. });