73 lines
2 KiB
TypeScript
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);
|
|
}
|
|
}
|