diff --git a/app/frontend/components/AppToolbar.vue b/app/frontend/components/AppToolbar.vue index 6232dea..8fb473d 100644 --- a/app/frontend/components/AppToolbar.vue +++ b/app/frontend/components/AppToolbar.vue @@ -447,7 +447,7 @@ async function onSample() { :key="p.clientId" class="avatar peer" :style="{ background: p.color }" - >{{ p.name.replace(/^Anonym \(/, '').slice(0, 1).toUpperCase() }} + >{{ p.name.slice(0, 1).toUpperCase() }} +{{ library.peers.value.length - 5 }} diff --git a/app/frontend/components/SheetCanvas.vue b/app/frontend/components/SheetCanvas.vue index 0fd3da6..6e1596f 100644 --- a/app/frontend/components/SheetCanvas.vue +++ b/app/frontend/components/SheetCanvas.vue @@ -90,7 +90,8 @@ function onDrop(e: DragEvent) { function selectObj(id: string) { store.selectObject(id); - store.bringToFront(id); + // z-order is document content: read-only viewers just select + if (!store.ui.readOnly) store.bringToFront(id); } diff --git a/app/frontend/store/library.ts b/app/frontend/store/library.ts index 067616a..d3dfdcf 100644 --- a/app/frontend/store/library.ts +++ b/app/frontend/store/library.ts @@ -39,7 +39,9 @@ const CHANNEL = 'numolus:library'; const DEFAULT_TITLE = 'Unbenannt'; const APP_TITLE = 'numolus'; const ANON_COLORS = ['#e67e22', '#2980b9', '#27ae60', '#8e44ad', '#c0392b', '#16a085']; -const ANON_NAMES = ['Fuchs', 'Dachs', 'Luchs', 'Otter', 'Eule', 'Biber', 'Reh', 'Igel']; +/** Anonymous people are shown as two random words, e.g. "Kiesel Komet". */ +const ANON_WORDS_A = ['Kiesel', 'Wolke', 'Anker', 'Nebel', 'Kompass', 'Laterne', 'Moos', 'Feder', 'Bernstein', 'Brise', 'Quelle', 'Funke']; +const ANON_WORDS_B = ['Komet', 'Fuchs', 'Welle', 'Ahorn', 'Leuchtturm', 'Otter', 'Gipfel', 'Mond', 'Dachs', 'Birke', 'Falke', 'Stern']; export type DocSource = 'local' | 'server'; export interface DocRef { @@ -84,7 +86,7 @@ function writeLinks(links: LinkDoc[]) { function presenceIdentity(user: { name: string; color: string } | null) { if (user) return { name: user.name, color: user.color }; const pick = (a: T[]) => a[Math.floor(Math.random() * a.length)]; - return { name: `Anonym (${pick(ANON_NAMES)})`, color: pick(ANON_COLORS) }; + return { name: `${pick(ANON_WORDS_A)} ${pick(ANON_WORDS_B)}`, color: pick(ANON_COLORS) }; } function createLibrary() {