better-word-count/src/status/StatusBar.ts
2022-11-15 19:21:08 +02:00

73 lines
2 KiB
TypeScript

import { Counter } from "src/settings/Settings";
import type BetterWordCount from "../main";
import {
getWordCount,
getCharacterCount,
getSentenceCount,
} from "src/utils/StatUtils";
export default class StatusBar {
private statusBarEl: HTMLElement;
private plugin: BetterWordCount;
constructor(statusBarEl: HTMLElement, plugin: BetterWordCount) {
this.statusBarEl = statusBarEl;
this.plugin = plugin;
this.statusBarEl.classList.add("mod-clickable");
this.statusBarEl.setAttribute("aria-label", "Open Stats View");
this.statusBarEl.setAttribute("aria-label-position", "top");
this.statusBarEl.addEventListener("click", (ev: MouseEvent) =>
this.onClick(ev)
);
}
onClick(ev: MouseEvent) {
ev;
}
displayText(text: string) {
this.statusBarEl.setText(text);
}
updateStatusBar(text: string) {
const sb = this.plugin.settings.statusBar;
let display = "";
for (let i = 0; i < sb.length; i++) {
const sbItem = sb[i];
display = display + sbItem.prefix;
switch (sbItem.count) {
case Counter.fileWords:
display = display + getWordCount(text);
break;
case Counter.fileChars:
display = display + getCharacterCount(text);
break;
case Counter.fileSentences:
display = display + getSentenceCount(text);
break;
case Counter.totalWords:
display = display + this.plugin.statsManager.getTotalWords();
break;
case Counter.totalChars:
display = display + this.plugin.statsManager.getTotalCharacters();
break;
case Counter.totalSentences:
display = display + this.plugin.statsManager.getTotalSentences();
break;
case Counter.totalNotes:
display = display + this.plugin.statsManager.getTotalFiles();
break;
default:
break;
}
display = display + sbItem.suffix;
}
this.displayText(display);
}
}