mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-24 20:14:35 -04:00
Feature/history page (#28)
* add alert message and use only entry for card and table Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * Refresh table view when translation was changed Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * Add sort by date and pinning Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * save history to localstorage Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * improve card and table history Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * extract functions Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * Sort in history component Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * Fix i18n key Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * Move scss imports Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * fix scss import Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * modify state with setState Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * fix import Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de> * add sortAndFilterEntries function Signed-off-by: Tilman Vatteroth <tilman.vatteroth@tu-dortmund.de>
This commit is contained in:
parent
5eb8ab7517
commit
83ab0bbe7e
39 changed files with 226 additions and 163 deletions
57
src/utils/historyUtils.ts
Normal file
57
src/utils/historyUtils.ts
Normal file
|
@ -0,0 +1,57 @@
|
|||
import {HistoryEntry} from "../components/landing/pages/history/history";
|
||||
import moment from "moment";
|
||||
|
||||
export function sortAndFilterEntries(entries: HistoryEntry[]): HistoryEntry[] {
|
||||
return sortEntries(entries);
|
||||
}
|
||||
|
||||
function sortEntries(entries: HistoryEntry[]): HistoryEntry[] {
|
||||
return entries.sort((a, b) => {
|
||||
if (a.pinned && !b.pinned) {
|
||||
return -1;
|
||||
}
|
||||
if (!a.pinned && b.pinned) {
|
||||
return 1;
|
||||
}
|
||||
if (a.lastVisited < b.lastVisited) {
|
||||
return -1;
|
||||
}
|
||||
if (a.lastVisited > b.lastVisited) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
})
|
||||
}
|
||||
|
||||
export function formatHistoryDate(date: Date) {
|
||||
return moment(date).format("llll")
|
||||
}
|
||||
|
||||
export interface OldHistoryEntry {
|
||||
id: string;
|
||||
text: string;
|
||||
time: number;
|
||||
tags: string[];
|
||||
pinned: boolean;
|
||||
}
|
||||
|
||||
export function loadHistoryFromLocalStore(): HistoryEntry[] {
|
||||
const historyJsonString = window.localStorage.getItem("history");
|
||||
if (historyJsonString === null) {
|
||||
// if localStorage["history"] is empty we check the old localStorage["notehistory"]
|
||||
// and convert it to the new format
|
||||
const oldHistoryJsonString = window.localStorage.getItem("notehistory")
|
||||
const oldHistory = oldHistoryJsonString ? JSON.parse(JSON.parse(oldHistoryJsonString)) : [];
|
||||
return oldHistory.map((entry: OldHistoryEntry) => {
|
||||
return {
|
||||
id: entry.id,
|
||||
title: entry.text,
|
||||
lastVisited: moment(entry.time).toDate(),
|
||||
tags: entry.tags,
|
||||
pinned: entry.pinned,
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return JSON.parse(historyJsonString)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue