mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 17:51:24 +01:00
feat(obsidian): add manual browse option for coordinate matches
Problem: When a single note was found by coordinates, it would automatically load that note without giving the user any choice. This removed the ability to manually browse/search for a different note. Solution: Add showSingleMatchDialog() that appears when one note is found by coordinates, giving the user 3 options: 1. "Use This Note" - Use the matched note (default/fast path) 2. "Browse/Search" - Manually browse/search for a different note 3. "Cancel" - Close without doing anything This gives users control over note selection in all scenarios: - Linked note found (via FMG ID) → Can choose different note - Single match by coordinates → Can choose different note - Multiple matches → Selection dialog (already had manual option) - No matches → Browse/search/create dialog Now users always have the option to manually browse, regardless of what the automatic search finds.
This commit is contained in:
parent
d58dc10b55
commit
d45ca10748
1 changed files with 43 additions and 2 deletions
|
|
@ -44,15 +44,16 @@ async function findOrCreateNote(elementId, elementType, coordinates) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (matches.length === 1) {
|
if (matches.length === 1) {
|
||||||
// Single match - load it
|
// Single match - show dialog with option to use it or choose different one
|
||||||
const match = matches[0];
|
const match = matches[0];
|
||||||
const content = await ObsidianBridge.getNote(match.path);
|
const content = await ObsidianBridge.getNote(match.path);
|
||||||
return {
|
const noteData = {
|
||||||
path: match.path,
|
path: match.path,
|
||||||
name: match.name,
|
name: match.name,
|
||||||
content,
|
content,
|
||||||
frontmatter: match.frontmatter
|
frontmatter: match.frontmatter
|
||||||
};
|
};
|
||||||
|
return await showSingleMatchDialog(noteData, elementId, elementType, coordinates);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Multiple matches - show selection dialog
|
// Multiple matches - show selection dialog
|
||||||
|
|
@ -99,6 +100,46 @@ async function showLinkedNoteDialog(note, elementId, elementType, coordinates) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function showSingleMatchDialog(note, elementId, elementType, coordinates) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
alertMessage.innerHTML = `
|
||||||
|
<div style="padding: 1em;">
|
||||||
|
<p style="margin-bottom: 1em;"><strong>✓ Found note by coordinates:</strong></p>
|
||||||
|
<div style="padding: 12px; background: #f0fff0; border: 1px solid #00aa00; border-radius: 4px; margin-bottom: 1.5em;">
|
||||||
|
<div style="font-weight: bold; margin-bottom: 4px;">${note.name}</div>
|
||||||
|
<div style="font-size: 0.9em; color: #666;">Path: ${note.path}</div>
|
||||||
|
</div>
|
||||||
|
<p style="font-size: 0.9em; color: #666;">Found a note near this location. You can use it or browse for a different one.</p>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
$("#alert").dialog({
|
||||||
|
title: "Note Found Nearby",
|
||||||
|
width: "500px",
|
||||||
|
buttons: {
|
||||||
|
"Use This Note": function () {
|
||||||
|
$(this).dialog("close");
|
||||||
|
resolve(note);
|
||||||
|
},
|
||||||
|
"Browse/Search": async function () {
|
||||||
|
$(this).dialog("close");
|
||||||
|
try {
|
||||||
|
const differentNote = await promptCreateNewNote(elementId, elementType, coordinates);
|
||||||
|
resolve(differentNote);
|
||||||
|
} catch (error) {
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Cancel: function () {
|
||||||
|
$(this).dialog("close");
|
||||||
|
reject(new Error("Cancelled"));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
position: {my: "center", at: "center", of: "svg"}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function showLoadingDialog() {
|
function showLoadingDialog() {
|
||||||
alertMessage.innerHTML = `
|
alertMessage.innerHTML = `
|
||||||
<div style="text-align: center; padding: 2em;">
|
<div style="text-align: center; padding: 2em;">
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue