2011-06-09 22:08:59 -04:00
NEWSBLUR . utils = {
2013-03-02 12:48:31 -08:00
service _name : function ( service ) {
switch ( service ) {
case 'twitter' :
return 'Twitter' ;
case 'facebook' :
return 'Facebook' ;
case 'appdotnet' :
return 'App.net' ;
}
} ,
2011-06-16 23:45:41 -04:00
compute _story _score : function ( story ) {
var score = 0 ;
2012-05-24 17:32:01 -07:00
var intelligence = story . get ( 'intelligence' ) ;
var score _max = Math . max ( intelligence [ 'title' ] ,
intelligence [ 'author' ] ,
intelligence [ 'tags' ] ) ;
var score _min = Math . min ( intelligence [ 'title' ] ,
intelligence [ 'author' ] ,
intelligence [ 'tags' ] ) ;
2011-06-16 23:45:41 -04:00
if ( score _max > 0 ) score = score _max ;
else if ( score _min < 0 ) score = score _min ;
2011-06-09 22:08:59 -04:00
2012-05-24 17:32:01 -07:00
if ( score == 0 ) score = intelligence [ 'feed' ] ;
2011-06-09 22:08:59 -04:00
2011-06-16 23:45:41 -04:00
return score ;
} ,
2012-05-24 17:32:01 -07:00
2012-06-25 11:55:38 -07:00
generate _shadow : _ . memoize ( function ( feed ) {
if ( ! feed ) return '' ;
var color = feed . get ( 'favicon_color' ) ;
if ( ! color ) {
return '0 1px 0 #222' ;
}
var r = parseInt ( color . substr ( 0 , 2 ) , 16 ) ;
var g = parseInt ( color . substr ( 2 , 2 ) , 16 ) ;
var b = parseInt ( color . substr ( 4 , 2 ) , 16 ) ;
if ( feed . is _light ( ) ) {
return [
'0 1px 0 ' ,
'rgb(' ,
[ r + 35 , g + 35 , b + 35 ] . join ( ',' ) ,
')'
] . join ( '' ) ;
} else {
return [
'0 1px 0 ' ,
'rgb(' ,
[
parseInt ( r * ( 6 / 8 ) , 10 ) ,
parseInt ( g * ( 6 / 8 ) , 10 ) ,
parseInt ( b * ( 6 / 8 ) , 10 )
] . join ( ',' ) ,
')'
] . join ( '' ) ;
}
} , function ( feed ) {
return "" + feed . id ;
} ) ,
2012-05-24 17:32:01 -07:00
generate _gradient : _ . memoize ( function ( feed , type ) {
2011-06-16 23:45:41 -04:00
if ( ! feed ) return '' ;
2012-05-21 14:36:54 -07:00
var color = feed . get ( 'favicon_color' ) ;
2011-06-16 23:45:41 -04:00
if ( ! color ) return '' ;
var r = parseInt ( color . substr ( 0 , 2 ) , 16 ) ;
var g = parseInt ( color . substr ( 2 , 2 ) , 16 ) ;
var b = parseInt ( color . substr ( 4 , 2 ) , 16 ) ;
2012-05-21 14:58:25 -07:00
2012-06-25 11:55:38 -07:00
if ( type == 'border' ) {
2011-06-16 23:45:41 -04:00
return [
2012-05-17 14:42:34 -07:00
( type == 'border' ? '1px solid ' : '' ) + 'rgb(' ,
2011-06-16 23:45:41 -04:00
[
parseInt ( r * ( 6 / 8 ) , 10 ) ,
parseInt ( g * ( 6 / 8 ) , 10 ) ,
parseInt ( b * ( 6 / 8 ) , 10 )
] . join ( ',' ) ,
')'
] . join ( '' ) ;
} else if ( type == 'webkit' ) {
return [
'-webkit-gradient(' ,
'linear,' ,
'left bottom,' ,
'left top,' ,
'color-stop(0, rgba(' ,
[
r ,
g ,
b ,
255
] . join ( ',' ) ,
')),' ,
'color-stop(1, rgba(' ,
[
r + 35 ,
g + 35 ,
b + 35 ,
255
] . join ( ',' ) ,
')))'
] . join ( '' ) ;
} else if ( type == 'moz' ) {
return [
'-moz-linear-gradient(' ,
'center bottom,' ,
'rgb(' ,
[
r ,
g ,
b
] . join ( ',' ) ,
') 0%,' ,
'rgb(' ,
[
r + 35 ,
g + 35 ,
b + 35
] . join ( ',' ) ,
') 100%)'
] . join ( '' ) ;
}
2012-05-24 17:32:01 -07:00
} , function ( feed , type ) {
return "" + feed . id + '-' + type ;
} ) ,
2011-06-16 23:45:41 -04:00
2012-02-16 18:36:52 -08:00
is _feed _social : function ( feed _id ) {
return _ . string . include ( feed _id , 'social:' ) ;
} ,
2013-03-19 11:11:17 -07:00
monthNames : [ 'January' , 'February' , 'March' , 'April' , 'May' , 'June' , 'July' , 'August' , 'September' , 'October' , 'November' , 'December' ] ,
shortMonthNames : [ 'Jan' , 'Feb' , 'Mar' , 'Apr' , 'May' , 'Jun' , 'Jul' , 'Aug' , 'Sep' , 'Oct' , 'Nov' , 'Dec' ] ,
dayNames : [ 'Sunday' , 'Monday' , 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' ] ,
2013-03-04 11:12:10 -08:00
format _date : function ( date ) {
var dayOfWeek = date . getDay ( ) ;
var month = date . getMonth ( ) ;
var year = date . getUTCFullYear ( ) ;
var day = date . getDate ( ) ;
2013-03-19 11:11:17 -07:00
return this . dayNames [ dayOfWeek ] + ", " + this . monthNames [ month ] + " " + day + ", " + year ;
2013-03-04 11:12:10 -08:00
} ,
2013-08-23 13:43:15 -07:00
make _folders : function ( selected _folder _title , options ) {
options = options || { } ;
var folders = NEWSBLUR . assets . get _folders ( ) ;
var $options = $ . make ( 'select' , { className : 'NB-folders' , name : options . name } ) ;
2011-09-04 15:42:13 -07:00
var $option = $ . make ( 'option' , { value : '' } , "Top Level" ) ;
$options . append ( $option ) ;
2012-05-24 11:54:10 -07:00
$options = this . make _folder _options ( $options , folders , ' ' , selected _folder _title ) ;
2011-09-04 15:42:13 -07:00
return $options ;
} ,
2012-05-24 11:54:10 -07:00
make _folder _options : function ( $options , items , depth , selected _folder _title ) {
2012-05-21 20:08:27 -07:00
var self = this ;
items . each ( function ( item ) {
if ( item . is _folder ( ) ) {
var $option = $ . make ( 'option' , {
value : item . get ( 'folder_title' )
} , depth + ' ' + item . get ( 'folder_title' ) ) ;
$options . append ( $option ) ;
2012-05-24 11:54:10 -07:00
if ( item . get ( 'folder_title' ) == selected _folder _title ) {
$option . attr ( 'selected' , true ) ;
}
$options = self . make _folder _options ( $options , item . folders , depth + ' ' , selected _folder _title ) ;
2011-09-04 15:42:13 -07:00
}
2012-05-21 20:08:27 -07:00
} ) ;
2011-09-04 15:42:13 -07:00
return $options ;
2012-05-09 12:09:23 -07:00
} ,
is _url _iframe _buster : function ( url ) {
2012-09-05 11:32:12 -07:00
// Also change in utils/page_importer.py.
2012-05-14 15:01:30 -07:00
var BROKEN _URLS = [
2012-05-09 12:09:23 -07:00
'nytimes.com' ,
2013-03-02 11:18:12 -08:00
'github.com' ,
2013-01-02 18:37:15 -08:00
'washingtonpost.com' ,
2012-05-09 12:09:23 -07:00
'stackoverflow.com' ,
2012-05-14 15:01:30 -07:00
'stackexchange.com' ,
2012-08-14 11:10:47 -07:00
'twitter.com' ,
2012-08-14 11:41:10 -07:00
'rankexploits'
2012-05-09 12:09:23 -07:00
] ;
return _ . any ( BROKEN _URLS , function ( broken _url ) {
2012-05-09 12:11:04 -07:00
return _ . string . contains ( url , broken _url ) ;
2012-05-09 12:09:23 -07:00
} ) ;
2013-02-11 16:07:08 -08:00
} ,
calculate _update _interval : function ( update _interval _minutes ) {
if ( ! update _interval _minutes ) return ' ' ;
var interval _start = update _interval _minutes ;
var interval _end = update _interval _minutes * 1.25 ;
var interval = '' ;
if ( interval _start < 60 ) {
interval = interval _start + ' to ' + interval _end + ' minutes' ;
} else {
var interval _start _hours = parseInt ( interval _start / 60 , 10 ) ;
var interval _end _hours = parseInt ( interval _end / 60 , 10 ) ;
var dec _start = interval _start % 60 ;
var dec _end = interval _end % 60 ;
interval = interval _start _hours + ( dec _start >= 30 ? '.5' : '' ) + ' to ' + interval _end _hours + ( dec _end >= 30 || interval _start _hours == interval _end _hours ? '.5' : '' ) + ' hours' ;
}
return interval ;
2011-06-16 23:45:41 -04:00
}
2013-02-11 16:07:08 -08:00
2011-06-09 22:08:59 -04:00
} ;