all files / client/utils/date/ date.js

36.59% Statements 15/41
7.41% Branches 2/27
25% Functions 1/4
36.59% Lines 15/41
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58                                                                                     
"use strict";
var d3 = require('d3');
var chronoshift_1 = require('chronoshift');
var formatWithYear = d3.time.format('%b %-d, %Y');
var formatWithoutYear = d3.time.format('%b %-d');
var formatTimeOfDayWithoutMinutes = d3.time.format('%-I%p');
var formatTimeOfDayWithMinutes = d3.time.format('%-I:%M%p');
function formatTimeOfDay(d) {
    return d.getMinutes() ? formatTimeOfDayWithMinutes(d) : formatTimeOfDayWithoutMinutes(d);
}
function isCurrentYear(year, timezone) {
    var nowWallTime = chronoshift_1.WallTime.UTCToWallTime(new Date(), timezone.toString());
    return nowWallTime.getFullYear() === year;
}
(function (DisplayYear) {
    DisplayYear[DisplayYear["ALWAYS"] = 0] = "ALWAYS";
    DisplayYear[DisplayYear["NEVER"] = 1] = "NEVER";
    DisplayYear[DisplayYear["IF_DIFF"] = 2] = "IF_DIFF";
})(exports.DisplayYear || (exports.DisplayYear = {}));
var DisplayYear = exports.DisplayYear;
function formatTimeRange(timeRange, timezone, displayYear) {
    var start = timeRange.start, end = timeRange.end;
    var startWallTime = chronoshift_1.WallTime.UTCToWallTime(start, timezone.toString());
    var endWallTime = chronoshift_1.WallTime.UTCToWallTime(end, timezone.toString());
    var endShiftWallTime = chronoshift_1.WallTime.UTCToWallTime(new Date(end.valueOf() - 1), timezone.toString());
    var showingYear = true;
    var formatted;
    if (startWallTime.getFullYear() !== endShiftWallTime.getFullYear()) {
        formatted = [formatWithYear(startWallTime), formatWithYear(endShiftWallTime)].join(' - ');
    }
    else {
        showingYear = displayYear === DisplayYear.ALWAYS || (displayYear === DisplayYear.IF_DIFF && !isCurrentYear(endShiftWallTime.getFullYear(), timezone));
        var fmt = showingYear ? formatWithYear : formatWithoutYear;
        if (startWallTime.getMonth() !== endShiftWallTime.getMonth() || startWallTime.getDate() !== endShiftWallTime.getDate()) {
            formatted = [formatWithoutYear(startWallTime), fmt(endShiftWallTime)].join(' - ');
        }
        else {
            formatted = fmt(startWallTime);
        }
    }
    if (startWallTime.getHours() || startWallTime.getMinutes() || endWallTime.getHours() || endWallTime.getMinutes()) {
        formatted += (showingYear ? ' ' : ', ');
        var startTimeStr = formatTimeOfDay(startWallTime).toLowerCase();
        var endTimeStr = formatTimeOfDay(endWallTime).toLowerCase();
        if (startTimeStr === endTimeStr) {
            formatted += startTimeStr;
        }
        else {
            if (startTimeStr.substr(-2) === endTimeStr.substr(-2)) {
                startTimeStr = startTimeStr.substr(0, startTimeStr.length - 2);
            }
            formatted += [startTimeStr, endTimeStr].join('-');
        }
    }
    return formatted;
}
exports.formatTimeRange = formatTimeRange;