Private GIT
Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
SickRage-1
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
vlbox
SickRage-1
Commits
d1056059
Commit
d1056059
authored
Sep 13, 2015
by
Alexis Tyler
Committed by
Dustyn Gibson
Sep 13, 2015
Browse files
Options
Downloads
Patches
Plain Diff
Changed home from fuzzydate to timeago
parent
373aba46
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
gui/slick/js/lib/jquery.timeago.js
+223
-0
223 additions, 0 deletions
gui/slick/js/lib/jquery.timeago.js
gui/slick/js/new/home.js
+29
-8
29 additions, 8 deletions
gui/slick/js/new/home.js
gui/slick/views/home.mako
+9
-4
9 additions, 4 deletions
gui/slick/views/home.mako
with
261 additions
and
12 deletions
gui/slick/js/lib/jquery.timeago.js
0 → 100644
+
223
−
0
View file @
d1056059
/**
* Timeago is a jQuery plugin that makes it easy to support automatically
* updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
*
* @name timeago
* @version 1.4.2
* @requires jQuery v1.2.3+
* @author Ryan McGeary
* @license MIT License - http://www.opensource.org/licenses/mit-license.php
*
* For usage and examples, visit:
* http://timeago.yarp.com/
*
* Copyright (c) 2008-2015, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
*/
(
function
(
factory
)
{
if
(
typeof
define
===
'
function
'
&&
define
.
amd
)
{
// AMD. Register as an anonymous module.
define
([
'
jquery
'
],
factory
);
}
if
(
typeof
module
===
'
object
'
&&
typeof
module
.
exports
===
'
object
'
)
{
factory
(
require
(
'
jquery
'
));
}
else
{
// Browser globals
factory
(
jQuery
);
}
}(
function
(
$
)
{
$
.
timeago
=
function
(
timestamp
)
{
if
(
timestamp
instanceof
Date
)
{
return
inWords
(
timestamp
);
}
else
if
(
typeof
timestamp
===
"
string
"
)
{
return
inWords
(
$
.
timeago
.
parse
(
timestamp
));
}
else
if
(
typeof
timestamp
===
"
number
"
)
{
return
inWords
(
new
Date
(
timestamp
));
}
else
{
return
inWords
(
$
.
timeago
.
datetime
(
timestamp
));
}
};
var
$t
=
$
.
timeago
;
$
.
extend
(
$
.
timeago
,
{
settings
:
{
refreshMillis
:
60000
,
allowPast
:
true
,
allowFuture
:
false
,
localeTitle
:
false
,
cutoff
:
0
,
strings
:
{
prefixAgo
:
null
,
prefixFromNow
:
null
,
suffixAgo
:
"
ago
"
,
suffixFromNow
:
"
from now
"
,
inPast
:
'
any moment now
'
,
seconds
:
"
less than a minute
"
,
minute
:
"
about a minute
"
,
minutes
:
"
%d minutes
"
,
hour
:
"
about an hour
"
,
hours
:
"
about %d hours
"
,
day
:
"
a day
"
,
days
:
"
%d days
"
,
month
:
"
about a month
"
,
months
:
"
%d months
"
,
year
:
"
about a year
"
,
years
:
"
%d years
"
,
wordSeparator
:
"
"
,
numbers
:
[]
}
},
inWords
:
function
(
distanceMillis
)
{
if
(
!
this
.
settings
.
allowPast
&&
!
this
.
settings
.
allowFuture
)
{
throw
'
timeago allowPast and allowFuture settings can not both be set to false.
'
;
}
var
$l
=
this
.
settings
.
strings
;
var
prefix
=
$l
.
prefixAgo
;
var
suffix
=
$l
.
suffixAgo
;
if
(
this
.
settings
.
allowFuture
)
{
if
(
distanceMillis
<
0
)
{
prefix
=
$l
.
prefixFromNow
;
suffix
=
$l
.
suffixFromNow
;
}
}
if
(
!
this
.
settings
.
allowPast
&&
distanceMillis
>=
0
)
{
return
this
.
settings
.
strings
.
inPast
;
}
var
seconds
=
Math
.
abs
(
distanceMillis
)
/
1000
;
var
minutes
=
seconds
/
60
;
var
hours
=
minutes
/
60
;
var
days
=
hours
/
24
;
var
years
=
days
/
365
;
function
substitute
(
stringOrFunction
,
number
)
{
var
string
=
$
.
isFunction
(
stringOrFunction
)
?
stringOrFunction
(
number
,
distanceMillis
)
:
stringOrFunction
;
var
value
=
(
$l
.
numbers
&&
$l
.
numbers
[
number
])
||
number
;
return
string
.
replace
(
/%d/i
,
value
);
}
var
words
=
seconds
<
45
&&
substitute
(
$l
.
seconds
,
Math
.
round
(
seconds
))
||
seconds
<
90
&&
substitute
(
$l
.
minute
,
1
)
||
minutes
<
45
&&
substitute
(
$l
.
minutes
,
Math
.
round
(
minutes
))
||
minutes
<
90
&&
substitute
(
$l
.
hour
,
1
)
||
hours
<
24
&&
substitute
(
$l
.
hours
,
Math
.
round
(
hours
))
||
hours
<
42
&&
substitute
(
$l
.
day
,
1
)
||
days
<
30
&&
substitute
(
$l
.
days
,
Math
.
round
(
days
))
||
days
<
45
&&
substitute
(
$l
.
month
,
1
)
||
days
<
365
&&
substitute
(
$l
.
months
,
Math
.
round
(
days
/
30
))
||
years
<
1.5
&&
substitute
(
$l
.
year
,
1
)
||
substitute
(
$l
.
years
,
Math
.
round
(
years
));
var
separator
=
$l
.
wordSeparator
||
""
;
if
(
$l
.
wordSeparator
===
undefined
)
{
separator
=
"
"
;
}
return
$
.
trim
([
prefix
,
words
,
suffix
].
join
(
separator
));
},
parse
:
function
(
iso8601
)
{
var
s
=
$
.
trim
(
iso8601
);
s
=
s
.
replace
(
/
\.\d
+/
,
""
);
// remove milliseconds
s
=
s
.
replace
(
/-/
,
"
/
"
).
replace
(
/-/
,
"
/
"
);
s
=
s
.
replace
(
/T/
,
"
"
).
replace
(
/Z/
,
"
UTC
"
);
s
=
s
.
replace
(
/
([\+\-]\d\d)\:?(\d\d)
/
,
"
$1$2
"
);
// -04:00 -> -0400
s
=
s
.
replace
(
/
([\+\-]\d\d)
$/
,
"
$100
"
);
// +09 -> +0900
return
new
Date
(
s
);
},
datetime
:
function
(
elem
)
{
var
iso8601
=
$t
.
isTime
(
elem
)
?
$
(
elem
).
attr
(
"
datetime
"
)
:
$
(
elem
).
attr
(
"
title
"
);
return
$t
.
parse
(
iso8601
);
},
isTime
:
function
(
elem
)
{
// jQuery's `is()` doesn't play well with HTML5 in IE
return
$
(
elem
).
get
(
0
).
tagName
.
toLowerCase
()
===
"
time
"
;
// $(elem).is("time");
}
});
// functions that can be called via $(el).timeago('action')
// init is default when no action is given
// functions are called with context of a single element
var
functions
=
{
init
:
function
(){
var
refresh_el
=
$
.
proxy
(
refresh
,
this
);
refresh_el
();
var
$s
=
$t
.
settings
;
if
(
$s
.
refreshMillis
>
0
)
{
this
.
_timeagoInterval
=
setInterval
(
refresh_el
,
$s
.
refreshMillis
);
}
},
update
:
function
(
time
){
var
parsedTime
=
$t
.
parse
(
time
);
$
(
this
).
data
(
'
timeago
'
,
{
datetime
:
parsedTime
});
if
(
$t
.
settings
.
localeTitle
)
$
(
this
).
attr
(
"
title
"
,
parsedTime
.
toLocaleString
());
refresh
.
apply
(
this
);
},
updateFromDOM
:
function
(){
$
(
this
).
data
(
'
timeago
'
,
{
datetime
:
$t
.
parse
(
$t
.
isTime
(
this
)
?
$
(
this
).
attr
(
"
datetime
"
)
:
$
(
this
).
attr
(
"
title
"
)
)
});
refresh
.
apply
(
this
);
},
dispose
:
function
()
{
if
(
this
.
_timeagoInterval
)
{
window
.
clearInterval
(
this
.
_timeagoInterval
);
this
.
_timeagoInterval
=
null
;
}
}
};
$
.
fn
.
timeago
=
function
(
action
,
options
)
{
var
fn
=
action
?
functions
[
action
]
:
functions
.
init
;
if
(
!
fn
){
throw
new
Error
(
"
Unknown function name '
"
+
action
+
"
' for timeago
"
);
}
// each over objects here and call the requested function
this
.
each
(
function
(){
fn
.
call
(
this
,
options
);
});
return
this
;
};
function
refresh
()
{
//check if it's still visible
if
(
!
$
.
contains
(
document
.
documentElement
,
this
)){
//stop if it has been removed
$
(
this
).
timeago
(
"
dispose
"
);
return
this
;
}
var
data
=
prepareData
(
this
);
var
$s
=
$t
.
settings
;
if
(
!
isNaN
(
data
.
datetime
))
{
if
(
$s
.
cutoff
==
0
||
Math
.
abs
(
distance
(
data
.
datetime
))
<
$s
.
cutoff
)
{
$
(
this
).
text
(
inWords
(
data
.
datetime
));
}
}
return
this
;
}
function
prepareData
(
element
)
{
element
=
$
(
element
);
if
(
!
element
.
data
(
"
timeago
"
))
{
element
.
data
(
"
timeago
"
,
{
datetime
:
$t
.
datetime
(
element
)
});
var
text
=
$
.
trim
(
element
.
text
());
if
(
$t
.
settings
.
localeTitle
)
{
element
.
attr
(
"
title
"
,
element
.
data
(
'
timeago
'
).
datetime
.
toLocaleString
());
}
else
if
(
text
.
length
>
0
&&
!
(
$t
.
isTime
(
element
)
&&
element
.
attr
(
"
title
"
)))
{
element
.
attr
(
"
title
"
,
text
);
}
}
return
element
.
data
(
"
timeago
"
);
}
function
inWords
(
date
)
{
return
$t
.
inWords
(
distance
(
date
));
}
function
distance
(
date
)
{
return
(
new
Date
().
getTime
()
-
date
.
getTime
());
}
// fix for IE6 suckage
document
.
createElement
(
"
abbr
"
);
document
.
createElement
(
"
time
"
);
}));
This diff is collapsed.
Click to expand it.
gui/slick/js/new/home.js
+
29
−
8
View file @
d1056059
...
...
@@ -290,14 +290,35 @@ $(document).ready(function(){
$
.
tablesorter
.
filter
.
bindSearch
(
"
#showListTableAnime
"
,
$
(
'
.search
'
)
);
if
(
$
(
'
meta[data-var="sickbeard.FUZZY_DATING"]
'
).
data
(
'
content
'
)
==
'
True
'
)
fuzzyMoment
({
dtInline
:
(
$
(
'
meta[data-var="layout"]
'
).
data
(
'
content
'
)
==
'
poster
'
?
'
false
'
:
'
true
'
),
containerClass
:
'
.
'
+
$
(
'
meta[data-var="fuzzydate"]
'
).
data
(
'
content
'
),
dateHasTime
:
false
,
dateFormat
:
$
(
'
meta[data-var="sickbeard.DATE_PRESET"]
'
).
data
(
'
content
'
),
timeFormat
:
$
(
'
meta[data-var="sickbeard.TIME_PRESET"]
'
).
data
(
'
content
'
),
trimZero
:
$
(
'
meta[data-var="sickbeard.TRIM_ZERO"]
'
).
data
(
'
content
'
)
});
$
.
timeago
.
settings
.
allowFuture
=
true
;
$
.
timeago
.
settings
.
strings
=
{
prefixAgo
:
null
,
prefixFromNow
:
'
In
'
,
suffixAgo
:
"
ago
"
,
suffixFromNow
:
""
,
seconds
:
"
less than a minute
"
,
minute
:
"
about a minute
"
,
minutes
:
"
%d minutes
"
,
hour
:
"
about an hour
"
,
hours
:
"
about %d hours
"
,
day
:
"
a day
"
,
days
:
"
%d days
"
,
month
:
"
about a month
"
,
months
:
"
%d months
"
,
year
:
"
about a year
"
,
years
:
"
%d years
"
,
wordSeparator
:
"
"
,
numbers
:
[]
};
$
(
"
[datetime]
"
).
timeago
();
// fuzzyMoment({
// dtInline: ($('meta[data-var="layout"]').data('content') == 'poster' ? 'false' : 'true'),
// containerClass: '.' + $('meta[data-var="fuzzydate"]').data('content'),
// dateHasTime: false,
// dateFormat: $('meta[data-var="sickbeard.DATE_PRESET"]').data('content'),
// timeFormat: $('meta[data-var="sickbeard.TIME_PRESET"]').data('content'),
// trimZero: $('meta[data-var="sickbeard.TRIM_ZERO"]').data('content')
// });
var
$container
=
[
$
(
'
#container
'
),
$
(
'
#container-anime
'
)];
...
...
This diff is collapsed.
Click to expand it.
gui/slick/views/home.mako
+
9
−
4
View file @
d1056059
...
...
@@ -53,6 +53,7 @@
<meta data-var="max_download_count" data-content="${max_download_count}">
<meta data-var="layout" data-content="${layout}">
<meta data-var="fuzzydate" data-content="${fuzzydate}">
<script type="text/javascript" src="${sbRoot}/js/lib/jquery.timeago.js"></script>
<script type="text/javascript" src="${sbRoot}/js/new/home.js"></script>
</%block>
<%block name="content">
...
...
@@ -369,7 +370,9 @@
<% temp_sbfdate_next = sbdatetime.sbdatetime.sbfdate(ldatetime) %>
<% temp_timegm_next = calendar.timegm(ldatetime.timetuple()) %>
<td align="center" class="nowrap">
<div class="${fuzzydate}">${temp_sbfdate_next}</div>
<div class="${fuzzydate}">
<time datetime="${ldatetime.isoformat('T')}" class="date">${temp_sbfdate_next}</time>
</div>
<span class="sort_data">${temp_timegm_next}</span>
</td>
% except ValueError:
...
...
@@ -385,8 +388,10 @@
<% temp_sbfdate_prev = sbdatetime.sbdatetime.sbfdate(pdatetime) %>
<% temp_timegm_prev = calendar.timegm(pdatetime.timetuple()) %>
<td align="center" class="nowrap">
<div class="${fuzzydate}">${temp_sbfdate_prev}</div>
<span class="sort_data">${temp_timegm_prev}</span>
<div class="${fuzzydate}">
<time datetime="${pdatetime.isoformat('T')}" class="date">${temp_sbfdate_prev}</time>
</div>
<span class="sort_data">${temp_sbfdate_prev}</span>
</td>
% except ValueError:
<td align="center" class="nowrap"></td>
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
sign in
to comment