示例#1
0
文件: time.js 项目: ewgenius/pivot
function formatTimeBasedOnGranularity(range, granularity, timezone, locale) {
    const wallTimeStart = chronoshift_1.WallTime.UTCToWallTime(range.start, timezone.toString());
    const year = wallTimeStart.getFullYear();
    const month = wallTimeStart.getMonth();
    const day = wallTimeStart.getDate();
    const hour = wallTimeStart.getHours();
    const minute = wallTimeStart.getMinutes();
    const second = wallTimeStart.getSeconds();
    const monthString = locale.shortMonths[month];
    const hourToTwelve = hour % 12 === 0 ? 12 : hour % 12;
    const amPm = (hour / 12) >= 1 ? 'pm' : 'am';
    var granularityString = granularity.toJS();
    var unit = granularityString.substring(granularityString.length - 1);
    switch (unit) {
        case 'S':
            return `${monthString} ${day}, ${pad(hour)}:${pad(minute)}:${pad(second)}`;
        case 'M':
            var prefix = granularityString.substring(0, 2);
            return prefix === "PT" ? `${monthString} ${day}, ${hourToTwelve}:${pad(minute)}${amPm}` : `${monthString}, ${year}`;
        case 'H':
            return `${monthString} ${day}, ${year}, ${hourToTwelve}${amPm}`;
        case 'D':
            return `${monthString} ${day}, ${year}`;
        case 'W':
            return `${formatTimeRange(range, timezone, DisplayYear.ALWAYS)}`;
        default:
            return cleanISOString(wallTimeHelper(wallTimeStart).toISOString());
    }
}
示例#2
0
文件: time.js 项目: ewgenius/pivot
function getWallTimeString(date, timezone, includeTime, delimiter) {
    const wallTimeISOString = cleanISOString(wallTimeHelper(chronoshift_1.WallTime.UTCToWallTime(date, timezone.toString())).toISOString());
    if (includeTime) {
        return wallTimeISOString.replace('T', delimiter || ', ');
    }
    return wallTimeISOString.replace(/:\d\d/, '').split('T')[0];
}
示例#3
0
文件: time.js 项目: ewgenius/pivot
function formatTimeRange(timeRange, timezone, displayYear) {
    var { start, end } = timeRange;
    var startWallTime = chronoshift_1.WallTime.UTCToWallTime(start, timezone.toString());
    var endWallTime = chronoshift_1.WallTime.UTCToWallTime(end, timezone.toString());
    var endWallTimeInclusive = getEndWallTimeInclusive(end, timezone);
    var showingYear = true;
    var formatted;
    if (startWallTime.getFullYear() !== endWallTimeInclusive.getFullYear()) {
        formatted = [FORMAT_WITH_YEAR(startWallTime), FORMAT_WITH_YEAR(endWallTimeInclusive)].join(' - ');
    }
    else {
        showingYear = displayYear === DisplayYear.ALWAYS || (displayYear === DisplayYear.IF_DIFF && !isCurrentYear(endWallTimeInclusive.getFullYear(), timezone));
        var fmt = showingYear ? FORMAT_WITH_YEAR : FORMAT_WITHOUT_YEAR;
        if (startWallTime.getMonth() !== endWallTimeInclusive.getMonth() || startWallTime.getDate() !== endWallTimeInclusive.getDate()) {
            formatted = [FORMAT_WITHOUT_YEAR(startWallTime), fmt(endWallTimeInclusive)].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;
}
示例#4
0
文件: time.js 项目: ewgenius/pivot
// calendar utils
function monthToWeeks(firstDayOfMonth, timezone, locale) {
    const weeks = [];
    const firstDayNextMonth = chronoshift_1.month.shift(firstDayOfMonth, timezone, 1);
    let week = [];
    let currentPointer = chronoshift_1.day.floor(firstDayOfMonth, timezone);
    while (currentPointer < firstDayNextMonth) {
        var wallTime = chronoshift_1.WallTime.UTCToWallTime(currentPointer, timezone.toString());
        if ((wallTime.getDay() === locale.weekStart || 0) && week.length > 0) {
            weeks.push(week);
            week = [];
        }
        week.push(currentPointer);
        currentPointer = chronoshift_1.day.shift(currentPointer, timezone, 1);
    }
    // push last week
    if (week.length > 0)
        weeks.push(week);
    return weeks;
}
示例#5
0
文件: app.js 项目: gerencio/pivot
var express = require('express');
var path = require('path');
var logger = require('morgan');
var bodyParser = require('body-parser');
var compress = require('compression');
var chronoshift_1 = require('chronoshift');
// Init chronoshift
if (!chronoshift_1.WallTime.rules) {
    var tzData = require("chronoshift/lib/walltime/walltime-data.js");
    chronoshift_1.WallTime.init(tzData.rules, tzData.zones);
}
var config_1 = require('./config');
var plywoodRoutes = require('./routes/plywood/plywood');
var plyqlRoutes = require('./routes/plyql/plyql');
var pivotRoutes = require('./routes/pivot/pivot');
var healthRoutes = require('./routes/health/health');
var views_1 = require('./views');
var serverRoot = '/pivot';
if (config_1.SERVER_ROOT) {
    var serverRoot = config_1.SERVER_ROOT;
    if (serverRoot[0] !== '/')
        serverRoot = '/' + serverRoot;
}
var app = express();
app.disable('x-powered-by');
app.use(compress());
app.use(logger('dev'));
app.use('/', express.static(path.join(__dirname, '../../build/public')));
app.use(serverRoot, express.static(path.join(__dirname, '../../build/public')));
app.use('/', express.static(path.join(__dirname, '../../assets')));
app.use(serverRoot, express.static(path.join(__dirname, '../../assets')));
示例#6
0
var { expect } = require("chai");

var { WallTime } = require('chronoshift');
if (!WallTime.rules) {
  var tzData = require("chronoshift/lib/walltime/walltime-data.js");
  WallTime.init(tzData.rules, tzData.zones);
}

var { testImmutableClass } = require("immutable-class/build/tester");

var plywood = require('../../build/plywood');
var { Action, $, ply, r, MatchAction } = plywood;

describe("Actions", () => {
  it("is immutable class", () => {
    testImmutableClass(Action, [
      {
        action: 'filter',
        expression: {
          op: 'chain',
          expression: { op: 'ref', name: 'myVar' },
          action: { action: 'is', expression: { op: 'literal', value: 5 } }
        }
      },
      {
        action: 'split',
        name: 'Page',
        expression: { op: 'ref', name: 'page' },
        dataName: 'myData'
      },
      {
示例#7
0
文件: time.js 项目: ewgenius/pivot
function getEndWallTimeInclusive(exclusiveEnd, timezone) {
    return chronoshift_1.WallTime.UTCToWallTime(exclusiveToInclusiveEnd(exclusiveEnd), timezone.toString());
}
示例#8
0
文件: time.js 项目: ewgenius/pivot
function isCurrentYear(year, timezone) {
    var nowWallTime = chronoshift_1.WallTime.UTCToWallTime(new Date(), timezone.toString());
    return nowWallTime.getFullYear() === year;
}
示例#9
0
文件: time.js 项目: ewgenius/pivot
function getWallTimeMonthWithYear(date, timezone) {
    return FORMAT_FULL_MONTH_WITH_YEAR(chronoshift_1.WallTime.UTCToWallTime(date, timezone.toString()));
}
示例#10
0
文件: time.js 项目: ewgenius/pivot
function getWallTimeDay(date, timezone) {
    return chronoshift_1.WallTime.UTCToWallTime(date, timezone.toString()).getDate();
}