Skip to content

Commit

Permalink
add in timeZone trtait and make use of dateFormat
Browse files Browse the repository at this point in the history
  • Loading branch information
sixlighthouses committed Jul 12, 2023
1 parent 24f4b24 commit 045f9d1
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 16 deletions.
4 changes: 3 additions & 1 deletion lib/ModelMixins/DiscretelyTimeVaryingMixin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,9 @@ function DiscretelyTimeVaryingMixin<

namespace DiscretelyTimeVaryingMixin {
export interface Instance
extends InstanceType<ReturnType<typeof DiscretelyTimeVaryingMixin>> {}
extends InstanceType<ReturnType<typeof DiscretelyTimeVaryingMixin>> {
[x: string]: any;
}

export function isMixedInto(model: any): model is Instance {
return model && model.hasDiscreteTimes;
Expand Down
4 changes: 2 additions & 2 deletions lib/ReactViews/BottomDock/Timeline/Timeline.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import JulianDate from "terriajs-cesium/Source/Core/JulianDate";
import CommonStrata from "../../../Models/Definition/CommonStrata";
import withControlledVisibility from "../../HOCs/withControlledVisibility";
import CesiumTimeline from "./CesiumTimeline";
import { formatDateTime } from "./DateFormats";
// import { formatDateTime } from "./DateFormats";
import DateTimePicker from "./DateTimePicker";
import Styles from "./timeline.scss";
import TimelineControls from "./TimelineControls";
Expand Down Expand Up @@ -76,7 +76,7 @@ class Timeline extends React.Component {
this.props.terria.timelineStack.top.dateFormat
);
} else {
console.log(this.props.locale);
console.log(catalogItem.timeZone);
// currentTime = formatDateTime(jsDate, this.props.locale);
currentTime = dateFormat(jsDate, "isoDate");
}
Expand Down
23 changes: 19 additions & 4 deletions lib/ReactViews/Workbench/Controls/DateTimeSelectorSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,13 @@ class DateTimeSelectorSection extends React.Component<IProps, IState> {
event.stopPropagation();
}

getOffsetMinutes(timeZone: string) {
const [hoursString, minutesString] = timeZone.split(":");
const hours = parseInt(hoursString);
const minutes = parseInt(minutesString);
return hours * 60 + minutes;
}

render() {
const { t } = this.props;
let discreteTime;
Expand All @@ -145,14 +152,22 @@ class DateTimeSelectorSection extends React.Component<IProps, IState> {
}

if (isDefined(item.currentDiscreteJulianDate)) {
const time = JulianDate.toDate(item.currentDiscreteJulianDate);
let time = JulianDate.toDate(item.currentDiscreteJulianDate);
if (isDefined(item.timeZone)) {
const offset = this.getOffsetMinutes(item.timeZone);
const offsetTime = new JulianDate();
const adjTime = JulianDate.addMinutes(
item.currentDiscreteJulianDate,
offset,
offsetTime
);
time = JulianDate.toDate(adjTime);
}

if (isDefined(item.dateFormat)) {
format = item.dateFormat;
discreteTime = dateFormat(time, item.dateFormat);
} else {
// discreteTime = formatDateTime(time);
// we have no idea what the format is, so just use isoDate, introducing time is
// adding complexity
discreteTime = dateFormat(time, "isoDate");
}
}
Expand Down
17 changes: 9 additions & 8 deletions lib/Traits/TraitsClasses/DateTimeTraits.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,21 @@ import primitiveTrait from "../Decorators/primitiveTrait";

export class DateTimeTraits extends ModelTraits {
@primitiveTrait({
type: "boolean",
name: "Is UTC Timezone",
type: "string",
name: "Timezone",
description:
"If the DateTime attribute values do not have timezone information" +
" (e.g. 2018-01-01T00:00:00), this flag indicates whether the values should be interpreted as UTC time."
" (e.g. 2018-01-01T00:00:00), specify the ISO timezone with offset from UTC (e.g. +10:00)"
})
isUTC?: boolean;
timeZone?: string;

@primitiveTrait({
type: "string",
name: "Timezone",
name: "Date format",
description:
"If the DateTime attribute values do not have timezone information" +
" (e.g. 2018-01-01T00:00:00), specify the ISO timezone with offset from UTC (e.g. +10:00)"
"See available formats here https://github.com/felixge/node-dateformat"
})
timeZone?: string;
dateFormat?: string;
}

export default DateTimeTraits;
2 changes: 1 addition & 1 deletion lib/Traits/TraitsClasses/WebMapServiceCatalogItemTraits.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import mixTraits from "../mixTraits";
import ModelTraits from "../ModelTraits";
import { traitClass } from "../Trait";
import CatalogMemberTraits from "./CatalogMemberTraits";
import { DateTimeTraits } from "./DateTimeTraits";
import DateTimeTraits from "./DateTimeTraits";
import DiffableTraits from "./DiffableTraits";
import ExportWebCoverageServiceTraits from "./ExportWebCoverageServiceTraits";
import GetCapabilitiesTraits from "./GetCapabilitiesTraits";
Expand Down

0 comments on commit 045f9d1

Please sign in to comment.