48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import moment from "moment";
|
|
|
|
export function formatDateString(str: string): string {
|
|
const date = moment(new Date(str));
|
|
switch (str.length) {
|
|
// year: 2023
|
|
case 4: return date.format("yyyy");
|
|
// year-month: 2023-06
|
|
case 7: return date.format("yyyy-MM");
|
|
// year-month-day: 2023-06-23
|
|
case 10: return date.format("yyyy-MM-DD");
|
|
// year-month-day hour:minute 2023-06-23T23:59
|
|
default: return date.format("HH:mm");
|
|
}
|
|
}
|
|
|
|
export interface QueryResult {
|
|
query: DataQuery;
|
|
result: {[key: string]: any};
|
|
}
|
|
|
|
export interface DataQuery {
|
|
cities: string[];
|
|
field: string;
|
|
granularity: string;
|
|
key: string;
|
|
}
|
|
|
|
export function isQueryResult(variable: any): variable is QueryResult {
|
|
return variable
|
|
&& variable.query
|
|
&& isDataQuery(variable.query)
|
|
&& variable.result
|
|
&& (
|
|
typeof variable.result === "object"
|
|
&& !Array.isArray(variable.result)
|
|
&& variable.result !== null
|
|
);
|
|
}
|
|
|
|
export function isDataQuery(variable: any): variable is DataQuery {
|
|
return variable &&
|
|
Array.isArray(variable.cities) &&
|
|
typeof variable.field === 'string' &&
|
|
typeof variable.granularity === 'string' &&
|
|
typeof variable.key === 'string';
|
|
}
|