mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
consolidate datetime methods
This commit is contained in:
parent
7b625ade86
commit
9fd023f7de
14 changed files with 40 additions and 99 deletions
|
@ -1,4 +1,4 @@
|
||||||
define([], function () {
|
define(['datetime'], function (datetime) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Javascript Humane Dates
|
* Javascript Humane Dates
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
var dt = new Date;
|
var dt = new Date;
|
||||||
var date = parseISO8601Date(date_str, { toLocal: true });
|
var date = datetime.parseISO8601Date(date_str, true);
|
||||||
|
|
||||||
var seconds = ((dt - date) / 1000);
|
var seconds = ((dt - date) / 1000);
|
||||||
var token = ' ago';
|
var token = ' ago';
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['dialogHelper', 'jQuery', 'paper-checkbox', 'paper-input', 'paper-item-body', 'paper-icon-item', 'paper-textarea', 'paper-fab'], function (dialogHelper, $) {
|
define(['dialogHelper', 'datetime', 'jQuery', 'paper-checkbox', 'paper-input', 'paper-item-body', 'paper-icon-item', 'paper-textarea', 'paper-fab'], function (dialogHelper, $, datetime) {
|
||||||
|
|
||||||
var currentContext;
|
var currentContext;
|
||||||
var metadataEditorInfo;
|
var metadataEditorInfo;
|
||||||
|
@ -96,7 +96,7 @@
|
||||||
|
|
||||||
if (currentItem[property]) {
|
if (currentItem[property]) {
|
||||||
|
|
||||||
var date = parseISO8601Date(currentItem[property], { toLocal: true });
|
var date = datetime.parseISO8601Date(currentItem[property], true);
|
||||||
|
|
||||||
var parts = date.toISOString().split('T');
|
var parts = date.toISOString().split('T');
|
||||||
|
|
||||||
|
@ -278,7 +278,7 @@
|
||||||
ReplaceAllMetadata: true
|
ReplaceAllMetadata: true
|
||||||
});
|
});
|
||||||
|
|
||||||
require(['toast'], function(toast) {
|
require(['toast'], function (toast) {
|
||||||
toast(Globalize.translate('MessageRefreshQueued'));
|
toast(Globalize.translate('MessageRefreshQueued'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -873,7 +873,7 @@
|
||||||
|
|
||||||
if (item.DateCreated) {
|
if (item.DateCreated) {
|
||||||
try {
|
try {
|
||||||
date = parseISO8601Date(item.DateCreated, { toLocal: true });
|
date = datetime.parseISO8601Date(item.DateCreated, true);
|
||||||
|
|
||||||
$('#txtDateAdded', context).val(date.toISOString().slice(0, 10));
|
$('#txtDateAdded', context).val(date.toISOString().slice(0, 10));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -885,7 +885,7 @@
|
||||||
|
|
||||||
if (item.PremiereDate) {
|
if (item.PremiereDate) {
|
||||||
try {
|
try {
|
||||||
date = parseISO8601Date(item.PremiereDate, { toLocal: true });
|
date = datetime.parseISO8601Date(item.PremiereDate, true);
|
||||||
|
|
||||||
$('#txtPremiereDate', context).val(date.toISOString().slice(0, 10));
|
$('#txtPremiereDate', context).val(date.toISOString().slice(0, 10));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -897,7 +897,7 @@
|
||||||
|
|
||||||
if (item.EndDate) {
|
if (item.EndDate) {
|
||||||
try {
|
try {
|
||||||
date = parseISO8601Date(item.EndDate, { toLocal: true });
|
date = datetime.parseISO8601Date(item.EndDate, true);
|
||||||
|
|
||||||
$('#txtEndDate', context).val(date.toISOString().slice(0, 10));
|
$('#txtEndDate', context).val(date.toISOString().slice(0, 10));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['jQuery'], function ($) {
|
define(['jQuery', 'datetime'], function ($, datetime) {
|
||||||
|
|
||||||
var query = {
|
var query = {
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@
|
||||||
|
|
||||||
html += '<td>';
|
html += '<td>';
|
||||||
|
|
||||||
var date = parseISO8601Date(item.Date, { toLocal: true });
|
var date = datetime.parseISO8601Date(item.Date, true);
|
||||||
html += date.toLocaleDateString();
|
html += date.toLocaleDateString();
|
||||||
|
|
||||||
html += '</td>';
|
html += '</td>';
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['jQuery'], function ($) {
|
define(['datetime', 'jQuery'], function (datetime, $) {
|
||||||
|
|
||||||
function getNode(item, folderState, selected) {
|
function getNode(item, folderState, selected) {
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
if (item.Type == "Episode" && item.LocationType == "Virtual") {
|
if (item.Type == "Episode" && item.LocationType == "Virtual") {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (item.PremiereDate && (new Date().getTime() >= parseISO8601Date(item.PremiereDate, { toLocal: true }).getTime())) {
|
if (item.PremiereDate && (new Date().getTime() >= datetime.parseISO8601Date(item.PremiereDate, true).getTime())) {
|
||||||
htmlName += '<img src="css/images/editor/missing.png" title="' + Globalize.translate('MissingEpisode') + '" />';
|
htmlName += '<img src="css/images/editor/missing.png" title="' + Globalize.translate('MissingEpisode') + '" />';
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -446,7 +446,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
window.MetadataEditor = {
|
window.MetadataEditor = {
|
||||||
getItemPromise: function() {
|
getItemPromise: function () {
|
||||||
var currentItemId = getCurrentItemId();
|
var currentItemId = getCurrentItemId();
|
||||||
|
|
||||||
if (currentItemId) {
|
if (currentItemId) {
|
||||||
|
|
|
@ -40,62 +40,3 @@ function replaceQueryString(url, param, value) {
|
||||||
|
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseISO8601Date(s, options) {
|
|
||||||
|
|
||||||
options = options || {};
|
|
||||||
|
|
||||||
// parenthese matches:
|
|
||||||
// year month day hours minutes seconds
|
|
||||||
// dotmilliseconds
|
|
||||||
// tzstring plusminus hours minutes
|
|
||||||
var re = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|([+-])(\d{2}):(\d{2}))?/;
|
|
||||||
|
|
||||||
var d = s.match(re);
|
|
||||||
|
|
||||||
// "2010-12-07T11:00:00.000-09:00" parses to:
|
|
||||||
// ["2010-12-07T11:00:00.000-09:00", "2010", "12", "07", "11",
|
|
||||||
// "00", "00", ".000", "-09:00", "-", "09", "00"]
|
|
||||||
// "2010-12-07T11:00:00.000Z" parses to:
|
|
||||||
// ["2010-12-07T11:00:00.000Z", "2010", "12", "07", "11",
|
|
||||||
// "00", "00", ".000", "Z", undefined, undefined, undefined]
|
|
||||||
|
|
||||||
if (!d) {
|
|
||||||
|
|
||||||
throw "Couldn't parse ISO 8601 date string '" + s + "'";
|
|
||||||
}
|
|
||||||
|
|
||||||
// parse strings, leading zeros into proper ints
|
|
||||||
var a = [1, 2, 3, 4, 5, 6, 10, 11];
|
|
||||||
for (var i in a) {
|
|
||||||
d[a[i]] = parseInt(d[a[i]], 10);
|
|
||||||
}
|
|
||||||
d[7] = parseFloat(d[7]);
|
|
||||||
|
|
||||||
// Date.UTC(year, month[, date[, hrs[, min[, sec[, ms]]]]])
|
|
||||||
// note that month is 0-11, not 1-12
|
|
||||||
// see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/UTC
|
|
||||||
var ms = Date.UTC(d[1], d[2] - 1, d[3], d[4], d[5], d[6]);
|
|
||||||
|
|
||||||
// if there are milliseconds, add them
|
|
||||||
if (d[7] > 0) {
|
|
||||||
ms += Math.round(d[7] * 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if there's a timezone, calculate it
|
|
||||||
if (d[8] != "Z" && d[10]) {
|
|
||||||
var offset = d[10] * 60 * 60 * 1000;
|
|
||||||
if (d[11]) {
|
|
||||||
offset += d[11] * 60 * 1000;
|
|
||||||
}
|
|
||||||
if (d[9] == "-") {
|
|
||||||
ms -= offset;
|
|
||||||
} else {
|
|
||||||
ms += offset;
|
|
||||||
}
|
|
||||||
} else if (!options.toLocal) {
|
|
||||||
ms += new Date().getTimezoneOffset() * 60000;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Date(ms);
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['jQuery', 'scrollStyles'], function ($) {
|
define(['datetime', 'scrollStyles'], function (datetime) {
|
||||||
|
|
||||||
function loadUpcoming(page) {
|
function loadUpcoming(page) {
|
||||||
Dashboard.showLoadingMsg();
|
Dashboard.showLoadingMsg();
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
if (item.PremiereDate) {
|
if (item.PremiereDate) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
var premiereDate = parseISO8601Date(item.PremiereDate, { toLocal: true });
|
var premiereDate = datetime.parseISO8601Date(item.PremiereDate, true);
|
||||||
|
|
||||||
if (premiereDate.getDate() == new Date().getDate() - 1) {
|
if (premiereDate.getDate() == new Date().getDate() - 1) {
|
||||||
dateText = Globalize.translate('Yesterday');
|
dateText = Globalize.translate('Yesterday');
|
||||||
|
|
|
@ -93,7 +93,7 @@
|
||||||
|
|
||||||
var now = new Date();
|
var now = new Date();
|
||||||
|
|
||||||
if (now >= parseISO8601Date(item.StartDate, { toLocal: true }) && now < parseISO8601Date(item.EndDate, { toLocal: true })) {
|
if (now >= datetime.parseISO8601Date(item.StartDate, true) && now < datetime.parseISO8601Date(item.EndDate, true)) {
|
||||||
$('.btnPlay', page).removeClass('hide');
|
$('.btnPlay', page).removeClass('hide');
|
||||||
canPlay = true;
|
canPlay = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -176,7 +176,7 @@
|
||||||
if (item.Type == "Person" && item.PremiereDate) {
|
if (item.Type == "Person" && item.PremiereDate) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var birthday = parseISO8601Date(item.PremiereDate, { toLocal: true }).toDateString();
|
var birthday = datetime.parseISO8601Date(item.PremiereDate, true).toDateString();
|
||||||
|
|
||||||
$('#itemBirthday', page).show().html(Globalize.translate('BirthDateValue').replace('{0}', birthday));
|
$('#itemBirthday', page).show().html(Globalize.translate('BirthDateValue').replace('{0}', birthday));
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@
|
||||||
if (item.Type == "Person" && item.EndDate) {
|
if (item.Type == "Person" && item.EndDate) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var deathday = parseISO8601Date(item.EndDate, { toLocal: true }).toDateString();
|
var deathday = datetime.parseISO8601Date(item.EndDate, true).toDateString();
|
||||||
|
|
||||||
$('#itemDeathDate', page).show().html(Globalize.translate('DeathDateValue').replace('{0}', deathday));
|
$('#itemDeathDate', page).show().html(Globalize.translate('DeathDateValue').replace('{0}', deathday));
|
||||||
}
|
}
|
||||||
|
@ -222,7 +222,7 @@
|
||||||
|
|
||||||
if (item.LocationType == "Virtual" && item.Type == "Episode") {
|
if (item.LocationType == "Virtual" && item.Type == "Episode") {
|
||||||
try {
|
try {
|
||||||
if (item.PremiereDate && (new Date().getTime() >= parseISO8601Date(item.PremiereDate, { toLocal: true }).getTime())) {
|
if (item.PremiereDate && (new Date().getTime() >= datetime.parseISO8601Date(item.PremiereDate, true).getTime())) {
|
||||||
isMissingEpisode = true;
|
isMissingEpisode = true;
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -1221,7 +1221,7 @@
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
var date = parseISO8601Date(review.Date, { toLocal: true }).toLocaleDateString();
|
var date = datetime.parseISO8601Date(review.Date, true).toLocaleDateString();
|
||||||
|
|
||||||
html += '<span class="reviewDate">' + date + '</span>';
|
html += '<span class="reviewDate">' + date + '</span>';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1916,7 +1916,7 @@
|
||||||
if (item.StartDate) {
|
if (item.StartDate) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
dateText = LibraryBrowser.getFutureDateText(parseISO8601Date(item.StartDate, { toLocal: true }), true);
|
dateText = LibraryBrowser.getFutureDateText(datetime.parseISO8601Date(item.StartDate, true), true);
|
||||||
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
}
|
}
|
||||||
|
@ -2426,7 +2426,7 @@
|
||||||
|
|
||||||
if (options.showProgramAirInfo) {
|
if (options.showProgramAirInfo) {
|
||||||
|
|
||||||
var date = parseISO8601Date(item.StartDate, { toLocal: true });
|
var date = datetime.parseISO8601Date(item.StartDate, true);
|
||||||
|
|
||||||
var text = item.StartDate ?
|
var text = item.StartDate ?
|
||||||
date.toLocaleString() :
|
date.toLocaleString() :
|
||||||
|
@ -2614,7 +2614,7 @@
|
||||||
if (item.Type == 'Episode') {
|
if (item.Type == 'Episode') {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
var date = parseISO8601Date(item.PremiereDate, { toLocal: true });
|
var date = datetime.parseISO8601Date(item.PremiereDate, true);
|
||||||
|
|
||||||
if (item.PremiereDate && (new Date().getTime() < date.getTime())) {
|
if (item.PremiereDate && (new Date().getTime() < date.getTime())) {
|
||||||
return '<div class="posterRibbon unairedPosterRibbon">' + Globalize.translate('HeaderUnaired') + '</div>';
|
return '<div class="posterRibbon unairedPosterRibbon">' + Globalize.translate('HeaderUnaired') + '</div>';
|
||||||
|
@ -3442,7 +3442,7 @@
|
||||||
if (item.PremiereDate) {
|
if (item.PremiereDate) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
date = parseISO8601Date(item.PremiereDate, { toLocal: true });
|
date = datetime.parseISO8601Date(item.PremiereDate, true);
|
||||||
|
|
||||||
text = date.toLocaleDateString();
|
text = date.toLocaleDateString();
|
||||||
miscInfo.push(text);
|
miscInfo.push(text);
|
||||||
|
@ -3456,7 +3456,7 @@
|
||||||
if (item.StartDate) {
|
if (item.StartDate) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
date = parseISO8601Date(item.StartDate, { toLocal: true });
|
date = datetime.parseISO8601Date(item.StartDate, true);
|
||||||
|
|
||||||
text = date.toLocaleDateString();
|
text = date.toLocaleDateString();
|
||||||
miscInfo.push(text);
|
miscInfo.push(text);
|
||||||
|
@ -3485,10 +3485,10 @@
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
var endYear = parseISO8601Date(item.EndDate, { toLocal: true }).getFullYear();
|
var endYear = datetime.parseISO8601Date(item.EndDate, true).getFullYear();
|
||||||
|
|
||||||
if (endYear != item.ProductionYear) {
|
if (endYear != item.ProductionYear) {
|
||||||
text += "-" + parseISO8601Date(item.EndDate, { toLocal: true }).getFullYear();
|
text += "-" + datetime.parseISO8601Date(item.EndDate, true).getFullYear();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3510,7 +3510,7 @@
|
||||||
else if (item.PremiereDate) {
|
else if (item.PremiereDate) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
text = parseISO8601Date(item.PremiereDate, { toLocal: true }).getFullYear();
|
text = datetime.parseISO8601Date(item.PremiereDate, true).getFullYear();
|
||||||
miscInfo.push(text);
|
miscInfo.push(text);
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
|
@ -3678,7 +3678,7 @@
|
||||||
if (item.PremiereDate) {
|
if (item.PremiereDate) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
var date = parseISO8601Date(item.PremiereDate, { toLocal: true });
|
var date = datetime.parseISO8601Date(item.PremiereDate, true);
|
||||||
|
|
||||||
var translationKey = new Date().getTime() > date.getTime() ? "ValuePremiered" : "ValuePremieres";
|
var translationKey = new Date().getTime() > date.getTime() ? "ValuePremiered" : "ValuePremieres";
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['datetime'], function (datetime) {
|
define(['datetime', 'tvguide'], function (datetime) {
|
||||||
|
|
||||||
function renderPrograms(page, result) {
|
function renderPrograms(page, result) {
|
||||||
|
|
||||||
|
@ -12,10 +12,10 @@
|
||||||
|
|
||||||
var program = result.Items[i];
|
var program = result.Items[i];
|
||||||
|
|
||||||
var startDate = parseISO8601Date(program.StartDate, { toLocal: true });
|
var startDate = datetime.parseISO8601Date(program.StartDate, true);
|
||||||
var startDateText = LibraryBrowser.getFutureDateText(startDate);
|
var startDateText = LibraryBrowser.getFutureDateText(startDate);
|
||||||
|
|
||||||
var endDate = parseISO8601Date(program.EndDate, { toLocal: true });
|
var endDate = datetime.parseISO8601Date(program.EndDate, true);
|
||||||
|
|
||||||
if (startDateText != currentIndexValue) {
|
if (startDateText != currentIndexValue) {
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
var timer = timers[i];
|
var timer = timers[i];
|
||||||
|
|
||||||
var startDateText = LibraryBrowser.getFutureDateText(parseISO8601Date(timer.StartDate, { toLocal: true }));
|
var startDateText = LibraryBrowser.getFutureDateText(datetime.parseISO8601Date(timer.StartDate, true));
|
||||||
|
|
||||||
if (startDateText != index) {
|
if (startDateText != index) {
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@
|
||||||
if (airDate && item.IsRepeat) {
|
if (airDate && item.IsRepeat) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
airDate = parseISO8601Date(airDate, { toLocal: true }).toLocaleDateString();
|
airDate = datetime.parseISO8601Date(airDate, true).toLocaleDateString();
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
console.log("Error parsing date: " + airDate);
|
console.log("Error parsing date: " + airDate);
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
|
|
||||||
logHtml += "<div>" + log.Name + "</div>";
|
logHtml += "<div>" + log.Name + "</div>";
|
||||||
|
|
||||||
var date = parseISO8601Date(log.DateModified, { toLocal: true });
|
var date = datetime.parseISO8601Date(log.DateModified, true);
|
||||||
|
|
||||||
var text = date.toLocaleDateString();
|
var text = date.toLocaleDateString();
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
|
|
||||||
html += '<td style="vertical-align:middle;">';
|
html += '<td style="vertical-align:middle;">';
|
||||||
|
|
||||||
var date = parseISO8601Date(item.DateCreated, { toLocal: true });
|
var date = datetime.parseISO8601Date(item.DateCreated, true);
|
||||||
|
|
||||||
html += datetime.toLocaleDateString(date) + ' ' + datetime.getDisplayTime(date);
|
html += datetime.toLocaleDateString(date) + ' ' + datetime.getDisplayTime(date);
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
define(['jQuery', 'paper-progress', 'paper-fab', 'paper-item-body', 'paper-icon-item', 'paper-icon-button', 'paper-button'], function ($) {
|
define(['jQuery', 'datetime', 'paper-progress', 'paper-fab', 'paper-item-body', 'paper-icon-item', 'paper-icon-button', 'paper-button'], function ($, datetime) {
|
||||||
|
|
||||||
function renderJob(page, job, dialogOptions) {
|
function renderJob(page, job, dialogOptions) {
|
||||||
|
|
||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
html += '<div>';
|
html += '<div>';
|
||||||
html += Globalize.translate('ValueDateCreated', parseISO8601Date(job.DateCreated, { toLocal: true }).toLocaleString());
|
html += Globalize.translate('ValueDateCreated', datetime.parseISO8601Date(job.DateCreated, true).toLocaleString());
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<br/>';
|
html += '<br/>';
|
||||||
html += '<div class="formFields"></div>';
|
html += '<div class="formFields"></div>';
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['scrollStyles'], function () {
|
define(['datetime', 'scrollStyles'], function (datetime) {
|
||||||
|
|
||||||
function loadUpcoming(context, params) {
|
function loadUpcoming(context, params) {
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
if (item.PremiereDate) {
|
if (item.PremiereDate) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
var premiereDate = parseISO8601Date(item.PremiereDate, { toLocal: true });
|
var premiereDate = datetime.parseISO8601Date(item.PremiereDate, true);
|
||||||
|
|
||||||
if (premiereDate.getDate() == new Date().getDate() - 1) {
|
if (premiereDate.getDate() == new Date().getDate() - 1) {
|
||||||
dateText = Globalize.translate('Yesterday');
|
dateText = Globalize.translate('Yesterday');
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue