I have some code to choose and put an emoji at first place of the filename.
a) Unfortunately, the selection is displayed in continuous text and not as a list with the entries one below the other. “\n” is unfortunately ignored.
b) Unfortunately, after renaming, I am also unable to place the cursor on the very left for the file name in the file name field.
Any hints or code corrections?
<%*
const kategorien = [
"🖍- Schnelle Notiz / Floating Note",
"🧠- Archivieren / Dauerhaft Merken",
"🔲- ToDos anstehend",
"✅- ToDos erledigt",
"🔢- Liste",
"🗓- Mustervorlage",
"🔥- Brainstorming / Ideen",
"🧑- Person",
"☝️- Thema",
"📕️- Buch- / Medium-Exzerpt",
"📘- Buch- / Blauer-Band-Exzerpt",
"🌱- Idee / Spross",
"🌻- Entwurf/ Kraut",
"🌺- Konzept / Malve",
"🌳- Text / Baum",
"💾- Backup / Sicherungskopie"
];
// Erstellen Sie eine Liste der Kategorien mit Nummerierung
const kategorienListe = kategorien.map((kategorie, index) => `${index + 1}. ${kategorie}`).join('\n');
// Zeigen Sie die Eingabeaufforderung mit der nummerierten Liste an
const auswahl = await tp.system.prompt(`Wählen Sie eine Kategorie (geben Sie die Zahl ein):\n\n${kategorienListe}`);
if (!auswahl) {
// Abbrechen, wenn keine Auswahl getroffen wurde
new Notice("Keine Auswahl getroffen. Vorgang abgebrochen.");
return;
}
// Extrahieren Sie die ausgewählte Kategorie basierend auf der Eingabe
const kategorieIndex = parseInt(auswahl) - 1;
if (isNaN(kategorieIndex) || kategorieIndex < 0 || kategorieIndex >= kategorien.length) {
// Ungültige Auswahl, Abbrechen
new Notice("Ungültige Auswahl. Bitte versuchen Sie es erneut.");
return;
}
const kategorie = kategorien[kategorieIndex];
// Extrahieren Sie das erste Zeichen (Emoji) und fügen Sie einen Bindestrich hinzu
const emoji = kategorie.trim().split('-')[0].trim();
// Überprüfen Sie, ob die aktuelle Datei vorhanden ist
const datei = app.workspace.getActiveFile();
if (!datei) {
new Notice("Keine aktive Datei gefunden. Vorgang abgebrochen.");
return;
}
// Benennen Sie die aktuelle Datei um, indem Sie das Emoji und einen Bindestrich vor den alten Dateinamen setzen
const neuerDateiname = `${emoji}- ${datei.basename}`;
const neuerDateipfad = datei.path.replace(/[^/]+$/, `${neuerDateiname}.md`);
await app.fileManager.renameFile(datei, neuerDateipfad);
// Warten Sie kurz, damit die Datei geöffnet werden kann
await new Promise(resolve => setTimeout(resolve, 100));
// Simulieren Sie das Fokussieren auf das Dateinamen-Eingabefeld und setzen Sie den Cursor an den Anfang
const titelEingabefeld = document.querySelector('.view-header-title input');
if (titelEingabefeld) {
titelEingabefeld.focus();
titelEingabefeld.setSelectionRange(0, 0);
}
// Ausgabe des neuen Dateinamens
new Notice(`Dateiname geändert zu: ${neuerDateiname}`);
%>
Wouldn’t it be better to use tp.system.suggester() instead of tp.system.prompt() to select your category? This would allow for simpler code in your template.
In addition, the forward slash is not legal to use in file names.
Good hints. Thank you. The best was to replace tp.system.prompt() with tp.system.suggester().
The code doesn’t use the forward slash for renaming. It’s only to part two explications of the emojis.
The code only uses the first characters from the emoji to the hyphen to place them at the beginning of the file name.
I am now quite happy with the following code. Although I would like it, when the cursor would be placed finally on the very left in the file name field (in order to manually correct the file name where this code could not do it).
<%*
const kategorien = [
"🖍no- Schnelle Notiz / Floating Note",
"🧠ar- Archivieren / Dauerhaft Merken",
"🐙hi- Hilfe / Cheat",
"🐝to- ToDos offen",
"✅te- ToDos erledigt",
"🔢li- Liste",
"🗓mu- Mustervorlage",
"🧑pe- Person",
"☝️th- Thema",
"📕️bm- Buch- / Medium-Exzerpt",
"📘bb- Buch- / Blauer-Band-Exzerpt",
"🔥br- Brainstorming",
"🎈id- Idee(n)",
"🌱ab- abstract / Keim",
"🌻en- Entwurf/ Kraut",
"🌺ko- Konzept / Malve",
"🌳te- Text / Baum",
"📒pd- PDF",
"💾ba- Backup / Sicherungskopie"
];
// Erstellen Sie eine Liste der Kategorien mit Nummerierung
const kategorienListe = kategorien.map((kategorie, index) => `${index + 1}. ${kategorie.split('-')[0].trim()} ${kategorie.split('-')[1].trim()}`);
const kategorienNamen = kategorien.map(kategorie => kategorie.split('-')[0].trim() + " " + kategorie.split('-')[1].trim());
// Zeigen Sie die Eingabeaufforderung mit der nummerierten Liste an
const auswahl = await tp.system.suggester(kategorienListe, kategorienListe);
if (!auswahl) {
// Abbrechen, wenn keine Auswahl getroffen wurde
new Notice("Keine Auswahl getroffen. Vorgang abgebrochen.");
return;
}
// Überprüfen Sie, ob die Auswahl eine Nummer ist
let kategorieIndex;
if (!isNaN(parseInt(auswahl[0]))) {
// Wenn die Auswahl eine Nummer ist, extrahieren Sie die Nummer und suchen Sie die entsprechende Kategorie
kategorieIndex = parseInt(auswahl.split('.')[0]) - 1;
} else {
// Ansonsten, finden Sie die ausgewählte Kategorie basierend auf dem Namen
kategorieIndex = kategorienListe.indexOf(auswahl);
}
if (isNaN(kategorieIndex) || kategorieIndex < 0 || kategorieIndex >= kategorien.length) {
// Ungültige Auswahl, Abbrechen
new Notice("Ungültige Auswahl. Bitte versuchen Sie es erneut.");
return;
}
const kategorie = kategorien[kategorieIndex];
// Extrahieren Sie die ersten vier Zeichen (Emoji + 2 Zeichen + Bindestrich) aus der ausgewählten Kategorie
const prefix = kategorie.trim().slice(0, 5);
// Überprüfen Sie, ob die aktuelle Datei vorhanden ist
const datei = app.workspace.getActiveFile();
if (!datei) {
new Notice("Keine aktive Datei gefunden. Vorgang abgebrochen.");
return;
}
// Benennen Sie die aktuelle Datei um, indem Sie das Prefix vor den alten Dateinamen setzen
const neuerDateiname = `${prefix}${datei.basename}`;
const neuerDateipfad = datei.path.replace(/[^/]+$/, `${neuerDateiname}.md`);
await app.fileManager.renameFile(datei, neuerDateipfad);
// Warten Sie kurz, damit die Datei geöffnet werden kann
await new Promise(resolve => setTimeout(resolve, 100));
// Simulieren Sie das Fokussieren auf das Dateinamen-Eingabefeld und setzen Sie den Cursor an den Anfang
const titelEingabefeld = document.querySelector('.view-header-title input');
if (titelEingabefeld) {
titelEingabefeld.focus();
titelEingabefeld.setSelectionRange(0, 0);
}
// Ausgabe des neuen Dateinamens
new Notice(`Dateiname geändert zu: ${neuerDateiname}`);
%>