Skip to content

Commit

Permalink
Rename standalone formatDateTime to formatSortableDateTime
Browse files Browse the repository at this point in the history
  • Loading branch information
acelaya committed Oct 3, 2024
1 parent 7b08130 commit 4542c6a
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 20 deletions.
16 changes: 10 additions & 6 deletions src/sidebar/services/annotations-exporter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { annotationDisplayName } from '../helpers/annotation-user';
import { stripInternalProperties } from '../helpers/strip-internal-properties';
import { VersionData } from '../helpers/version-data';
import { renderMathAndMarkdown } from '../render-markdown';
import { formatDateTime } from '../util/time';
import { formatSortableDateTime } from '../util/time';

export type JSONExportContent = {
export_date: string;
Expand Down Expand Up @@ -91,7 +91,7 @@ export class AnnotationsExporter {
const page = pageLabel(annotation);
const annotationQuote = quote(annotation);
const lines = [
`Created at: ${formatDateTime(new Date(annotation.created))}`,
`Created at: ${formatSortableDateTime(new Date(annotation.created))}`,
`Author: ${extractUsername(annotation)}`,
page ? `Page: ${page}` : undefined,
`Type: ${annotationRole(annotation)}`,
Expand All @@ -108,7 +108,7 @@ export class AnnotationsExporter {
});

return trimAndDedent`
${formatDateTime(now)}
${formatSortableDateTime(now)}
${title}
${uri}
Group: ${groupName}
Expand All @@ -135,7 +135,7 @@ export class AnnotationsExporter {
});
const annotationToRow = (annotation: APIAnnotationData) =>
[
formatDateTime(new Date(annotation.created)),
formatSortableDateTime(new Date(annotation.created)),
extractUsername(annotation),
pageLabel(annotation) ?? '',
uri,
Expand Down Expand Up @@ -192,7 +192,9 @@ export class AnnotationsExporter {
<section>
<h1>Summary</h1>
<p>
<time dateTime={now.toISOString()}>{formatDateTime(now)}</time>
<time dateTime={now.toISOString()}>
{formatSortableDateTime(now)}
</time>
</p>
<p>
<strong>{title}</strong>
Expand Down Expand Up @@ -253,7 +255,9 @@ export class AnnotationsExporter {
<td>Created at:</td>
<td>
<time dateTime={annotation.created}>
{formatDateTime(new Date(annotation.created))}
{formatSortableDateTime(
new Date(annotation.created),
)}
</time>
</td>
</tr>
Expand Down
4 changes: 2 additions & 2 deletions src/sidebar/services/test/annotations-exporter-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
newReply,
publicAnnotation,
} from '../../test/annotation-fixtures';
import { formatDateTime } from '../../util/time';
import { formatSortableDateTime } from '../../util/time';
import { AnnotationsExporter } from '../annotations-exporter';

describe('AnnotationsExporter', () => {
Expand All @@ -30,7 +30,7 @@ describe('AnnotationsExporter', () => {

beforeEach(() => {
now = new Date();
formattedNow = formatDateTime(now);
formattedNow = formatSortableDateTime(now);
baseAnnotation = {
...newAnnotation(),
...publicAnnotation(),
Expand Down
20 changes: 9 additions & 11 deletions src/sidebar/util/test/time-test.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import { formatDateTime } from '../time';
import { formatSortableDateTime } from '../time';

describe('sidebar/util/time', () => {
describe('formatDateTime', () => {
[
new Date(Date.UTC(2023, 11, 20, 3, 5, 38)),
new Date('2020-05-04T23:02:01+05:00'),
].forEach(date => {
it('returns right format for provided date', () => {
const expectedDateRegex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/;
assert.match(formatDateTime(date), expectedDateRegex);
});
describe('formatSortableDateTime', () => {
[
new Date(Date.UTC(2023, 11, 20, 3, 5, 38)),
new Date('2020-05-04T23:02:01+05:00'),
].forEach(date => {
it('returns right format for provided date', () => {
const expectedDateRegex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/;
assert.match(formatSortableDateTime(date), expectedDateRegex);
});
});
});
7 changes: 6 additions & 1 deletion src/sidebar/util/time.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
/**
* Formats a date as `YYYY-MM-DD hh:mm`, using 24h and system timezone.
*
* This format has the next characteristics:
* - Lexicographic and chronological order match.
* - It is detected as "date" when pasted in common spreadsheet editors, making
* it useful when exporting dates for CSV documents.
*/
export function formatDateTime(date: Date): string {
export function formatSortableDateTime(date: Date): string {
const year = date.getFullYear();
const month = `${date.getMonth() + 1}`.padStart(2, '0');
const day = `${date.getDate()}`.padStart(2, '0');
Expand Down

0 comments on commit 4542c6a

Please sign in to comment.