chore: cleaned up html descriptions in settings
This commit is contained in:
151
src/settings.ts
151
src/settings.ts
@@ -117,31 +117,27 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
|
|
||||||
//#region Indexing
|
//#region Indexing
|
||||||
|
|
||||||
const indexingDesc = new DocumentFragment()
|
|
||||||
indexingDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `⚠️ <span style="color: var(--text-accent)">Changing indexing settings will clear the cache, and requires a restart of Obsidian.</span><br/><br/>`
|
|
||||||
if (textExtractor) {
|
|
||||||
span.innerHTML += `
|
|
||||||
👍 You have installed <a href="https://github.com/scambier/obsidian-text-extractor">Text Extractor</a>, Omnisearch can use it to index PDFs and images contents.
|
|
||||||
<br />Text extraction only works on desktop, but the cache can be synchronized with your mobile device.`
|
|
||||||
} else {
|
|
||||||
span.innerHTML += `⚠️ Omnisearch requires <a href="https://github.com/scambier/obsidian-text-extractor">Text Extractor</a> to index PDFs and images.`
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Indexing')
|
.setName('Indexing')
|
||||||
.setHeading()
|
.setHeading()
|
||||||
.setDesc(indexingDesc)
|
.setDesc(
|
||||||
|
htmlDescription(`⚠️ <span style="color: var(--text-accent)">Changing indexing settings will clear the cache, and requires a restart of Obsidian.</span><br/><br/>
|
||||||
|
${
|
||||||
|
textExtractor
|
||||||
|
? `👍 You have installed <a href="https://github.com/scambier/obsidian-text-extractor">Text Extractor</a>, Omnisearch can use it to index PDFs and images contents.
|
||||||
|
<br />Text extraction only works on desktop, but the cache can be synchronized with your mobile device.`
|
||||||
|
: `⚠️ Omnisearch requires <a href="https://github.com/scambier/obsidian-text-extractor">Text Extractor</a> to index PDFs and images.`
|
||||||
|
}`)
|
||||||
|
)
|
||||||
|
|
||||||
// PDF Indexing
|
// PDF Indexing
|
||||||
const indexPDFsDesc = new DocumentFragment()
|
|
||||||
indexPDFsDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `Omnisearch will use Text Extractor to index the content of your PDFs.`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName(`PDFs content indexing ${textExtractor ? '' : '⚠️ Disabled'}`)
|
.setName(`PDFs content indexing ${textExtractor ? '' : '⚠️ Disabled'}`)
|
||||||
.setDesc(indexPDFsDesc)
|
.setDesc(
|
||||||
|
htmlDescription(
|
||||||
|
`Omnisearch will use Text Extractor to index the content of your PDFs.`
|
||||||
|
)
|
||||||
|
)
|
||||||
.addToggle(toggle =>
|
.addToggle(toggle =>
|
||||||
toggle.setValue(settings.PDFIndexing).onChange(async v => {
|
toggle.setValue(settings.PDFIndexing).onChange(async v => {
|
||||||
await database.clearCache()
|
await database.clearCache()
|
||||||
@@ -152,13 +148,13 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
.setDisabled(!textExtractor)
|
.setDisabled(!textExtractor)
|
||||||
|
|
||||||
// Images Indexing
|
// Images Indexing
|
||||||
const indexImagesDesc = new DocumentFragment()
|
|
||||||
indexImagesDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `Omnisearch will use Text Extractor to OCR your images and index their content.`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName(`Images OCR indexing ${textExtractor ? '' : '⚠️ Disabled'}`)
|
.setName(`Images OCR indexing ${textExtractor ? '' : '⚠️ Disabled'}`)
|
||||||
.setDesc(indexImagesDesc)
|
.setDesc(
|
||||||
|
htmlDescription(
|
||||||
|
`Omnisearch will use Text Extractor to OCR your images and index their content.`
|
||||||
|
)
|
||||||
|
)
|
||||||
.addToggle(toggle =>
|
.addToggle(toggle =>
|
||||||
toggle.setValue(settings.imagesIndexing).onChange(async v => {
|
toggle.setValue(settings.imagesIndexing).onChange(async v => {
|
||||||
await database.clearCache()
|
await database.clearCache()
|
||||||
@@ -188,16 +184,14 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
.setDisabled(!textExtractor)
|
.setDisabled(!textExtractor)
|
||||||
|
|
||||||
// Index filenames of unsupported files
|
// Index filenames of unsupported files
|
||||||
const indexUnsupportedDesc = new DocumentFragment()
|
|
||||||
indexUnsupportedDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `
|
|
||||||
Omnisearch can index file<strong>names</strong> of "unsupported" files, such as e.g. <pre style="display:inline">.mp4</pre>
|
|
||||||
or non-extracted PDFs & images.<br/>
|
|
||||||
"Obsidian setting" will respect the value of "Files & Links > Detect all file extensions".`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Index paths of unsupported files')
|
.setName('Index paths of unsupported files')
|
||||||
.setDesc(indexUnsupportedDesc)
|
.setDesc(
|
||||||
|
htmlDescription(`
|
||||||
|
Omnisearch can index file<strong>names</strong> of "unsupported" files, such as e.g. <pre style="display:inline">.mp4</pre>
|
||||||
|
or non-extracted PDFs & images.<br/>
|
||||||
|
"Obsidian setting" will respect the value of "Files & Links > Detect all file extensions".`)
|
||||||
|
)
|
||||||
.addDropdown(dropdown => {
|
.addDropdown(dropdown => {
|
||||||
dropdown
|
dropdown
|
||||||
.addOptions({ yes: 'Yes', no: 'No', default: 'Obsidian setting' })
|
.addOptions({ yes: 'Yes', no: 'No', default: 'Obsidian setting' })
|
||||||
@@ -210,16 +204,14 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Additional text files to index
|
// Additional text files to index
|
||||||
const indexedFileTypesDesc = new DocumentFragment()
|
|
||||||
indexedFileTypesDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `In addition to standard <code>md</code> files, Omnisearch can also index other <strong style="color: var(--text-accent)">PLAINTEXT</strong> files.<br/>
|
|
||||||
Add extensions separated by a space, without the dot. Example: "<code>txt org csv</code>".<br />
|
|
||||||
⚠️ <span style="color: var(--text-accent)">Using extensions of non-plaintext files (like .pptx) WILL cause crashes,
|
|
||||||
because Omnisearch will try to index their content.</span>`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Additional TEXT files to index')
|
.setName('Additional TEXT files to index')
|
||||||
.setDesc(indexedFileTypesDesc)
|
.setDesc(
|
||||||
|
htmlDescription(`In addition to standard <code>md</code> files, Omnisearch can also index other <strong style="color: var(--text-accent)">PLAINTEXT</strong> files.<br/>
|
||||||
|
Add extensions separated by a space, without the dot. Example: "<code>txt org csv</code>".<br />
|
||||||
|
⚠️ <span style="color: var(--text-accent)">Using extensions of non-plaintext files (like .pptx) WILL cause crashes,
|
||||||
|
because Omnisearch will try to index their content.</span>`)
|
||||||
|
)
|
||||||
.addText(component => {
|
.addText(component => {
|
||||||
component
|
component
|
||||||
.setValue(settings.indexedFileTypes.join(' '))
|
.setValue(settings.indexedFileTypes.join(' '))
|
||||||
@@ -294,16 +286,13 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Split CamelCaseWords
|
// Split CamelCaseWords
|
||||||
const camelCaseDesc = new DocumentFragment()
|
|
||||||
camelCaseDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `Enable this if you want to be able to search for CamelCaseWords as separate words.<br/>
|
|
||||||
⚠️ <span style="color: var(--text-accent)">Changing this setting will clear the cache.</span><br>
|
|
||||||
${needsARestart}
|
|
||||||
`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Split CamelCaseWords')
|
.setName('Split CamelCaseWords')
|
||||||
.setDesc(camelCaseDesc)
|
.setDesc(
|
||||||
|
htmlDescription(`Enable this if you want to be able to search for CamelCaseWords as separate words.<br/>
|
||||||
|
⚠️ <span style="color: var(--text-accent)">Changing this setting will clear the cache.</span><br>
|
||||||
|
${needsARestart}`)
|
||||||
|
)
|
||||||
.addToggle(toggle =>
|
.addToggle(toggle =>
|
||||||
toggle.setValue(settings.splitCamelCase).onChange(async v => {
|
toggle.setValue(settings.splitCamelCase).onChange(async v => {
|
||||||
await database.clearCache()
|
await database.clearCache()
|
||||||
@@ -444,14 +433,12 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Show "Create note" button
|
// Show "Create note" button
|
||||||
const createBtnDesc = new DocumentFragment()
|
|
||||||
createBtnDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `Shows a button next to the search input, to create a note.
|
|
||||||
Acts the same as the <code>shift ↵</code> shortcut, can be useful for mobile device users.`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Show "Create note" button')
|
.setName('Show "Create note" button')
|
||||||
.setDesc(createBtnDesc)
|
.setDesc(
|
||||||
|
htmlDescription(`Shows a button next to the search input, to create a note.
|
||||||
|
Acts the same as the <code>shift ↵</code> shortcut, can be useful for mobile device users.`)
|
||||||
|
)
|
||||||
.addToggle(toggle =>
|
.addToggle(toggle =>
|
||||||
toggle.setValue(settings.showCreateButton).onChange(async v => {
|
toggle.setValue(settings.showCreateButton).onChange(async v => {
|
||||||
settings.showCreateButton = v
|
settings.showCreateButton = v
|
||||||
@@ -564,14 +551,14 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
//#region HTTP Server
|
//#region HTTP Server
|
||||||
|
|
||||||
if (!Platform.isMobile) {
|
if (!Platform.isMobile) {
|
||||||
const httpServerDesc = new DocumentFragment()
|
|
||||||
httpServerDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `Omnisearch can be used through a simple HTTP server (<a href="https://publish.obsidian.md/omnisearch/Public+API+%26+URL+Scheme#HTTP+Server">more information</a>).`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('API Access Through HTTP')
|
.setName('API Access Through HTTP')
|
||||||
.setHeading()
|
.setHeading()
|
||||||
.setDesc(httpServerDesc)
|
.setDesc(
|
||||||
|
htmlDescription(
|
||||||
|
`Omnisearch can be used through a simple HTTP server (<a href="https://publish.obsidian.md/omnisearch/Public+API+%26+URL+Scheme#HTTP+Server">more information</a>).`
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Enable the HTTP server')
|
.setName('Enable the HTTP server')
|
||||||
@@ -643,17 +630,14 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
new Setting(containerEl).setName('Danger Zone').setHeading()
|
new Setting(containerEl).setName('Danger Zone').setHeading()
|
||||||
|
|
||||||
// Ignore diacritics
|
// Ignore diacritics
|
||||||
const diacriticsDesc = new DocumentFragment()
|
|
||||||
diacriticsDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `Normalize diacritics in search terms. Words like "brûlée" or "žluťoučký" will be indexed as "brulee" and "zlutoucky".<br/>
|
|
||||||
⚠️ <span style="color: var(--text-accent)">You probably should <strong>NOT</strong> disable this.</span><br>
|
|
||||||
⚠️ <span style="color: var(--text-accent)">Changing this setting will clear the cache.</span><br>
|
|
||||||
${needsARestart}
|
|
||||||
`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Ignore diacritics')
|
.setName('Ignore diacritics')
|
||||||
.setDesc(diacriticsDesc)
|
.setDesc(
|
||||||
|
htmlDescription(`Normalize diacritics in search terms. Words like "brûlée" or "žluťoučký" will be indexed as "brulee" and "zlutoucky".<br/>
|
||||||
|
⚠️ <span style="color: var(--text-accent)">You probably should <strong>NOT</strong> disable this.</span><br>
|
||||||
|
⚠️ <span style="color: var(--text-accent)">Changing this setting will clear the cache.</span><br>
|
||||||
|
${needsARestart}`)
|
||||||
|
)
|
||||||
.addToggle(toggle =>
|
.addToggle(toggle =>
|
||||||
toggle.setValue(settings.ignoreDiacritics).onChange(async v => {
|
toggle.setValue(settings.ignoreDiacritics).onChange(async v => {
|
||||||
await database.clearCache()
|
await database.clearCache()
|
||||||
@@ -664,7 +648,6 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Ignore Arabic diacritics (beta)')
|
.setName('Ignore Arabic diacritics (beta)')
|
||||||
.setDesc(diacriticsDesc)
|
|
||||||
.addToggle(toggle =>
|
.addToggle(toggle =>
|
||||||
toggle.setValue(settings.ignoreArabicDiacritics).onChange(async v => {
|
toggle.setValue(settings.ignoreArabicDiacritics).onChange(async v => {
|
||||||
await database.clearCache()
|
await database.clearCache()
|
||||||
@@ -695,15 +678,13 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Force save cache
|
// Force save cache
|
||||||
const forceSaveCacheDesc = new DocumentFragment()
|
|
||||||
forceSaveCacheDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `Omnisearch has a security feature that automatically disables cache writing if it cannot fully perform the operation.<br>
|
|
||||||
Use this option to force the cache to be saved, even if it causes a crash.<br>
|
|
||||||
⚠️ <span style="color: var(--text-accent)">Enabling this setting could lead to crash loops</span>`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Force save the cache')
|
.setName('Force save the cache')
|
||||||
.setDesc(forceSaveCacheDesc)
|
.setDesc(
|
||||||
|
htmlDescription(`Omnisearch has a security feature that automatically disables cache writing if it cannot fully perform the operation.<br>
|
||||||
|
Use this option to force the cache to be saved, even if it causes a crash.<br>
|
||||||
|
⚠️ <span style="color: var(--text-accent)">Enabling this setting could lead to crash loops</span>`)
|
||||||
|
)
|
||||||
.addToggle(toggle =>
|
.addToggle(toggle =>
|
||||||
toggle.setValue(settings.DANGER_forceSaveCache).onChange(async v => {
|
toggle.setValue(settings.DANGER_forceSaveCache).onChange(async v => {
|
||||||
settings.DANGER_forceSaveCache = v
|
settings.DANGER_forceSaveCache = v
|
||||||
@@ -713,15 +694,13 @@ export class SettingsTab extends PluginSettingTab {
|
|||||||
|
|
||||||
// Clear cache data
|
// Clear cache data
|
||||||
if (isCacheEnabled()) {
|
if (isCacheEnabled()) {
|
||||||
const resetCacheDesc = new DocumentFragment()
|
|
||||||
resetCacheDesc.createSpan({}, span => {
|
|
||||||
span.innerHTML = `Erase all Omnisearch cache data.
|
|
||||||
Use this if Omnisearch results are inconsistent, missing, or appear outdated.<br>
|
|
||||||
${needsARestart}`
|
|
||||||
})
|
|
||||||
new Setting(containerEl)
|
new Setting(containerEl)
|
||||||
.setName('Clear cache data')
|
.setName('Clear cache data')
|
||||||
.setDesc(resetCacheDesc)
|
.setDesc(
|
||||||
|
htmlDescription(`Erase all Omnisearch cache data.
|
||||||
|
Use this if Omnisearch results are inconsistent, missing, or appear outdated.<br>
|
||||||
|
${needsARestart}`)
|
||||||
|
)
|
||||||
.addButton(btn => {
|
.addButton(btn => {
|
||||||
btn.setButtonText('Clear cache')
|
btn.setButtonText('Clear cache')
|
||||||
btn.onClick(async () => {
|
btn.onClick(async () => {
|
||||||
@@ -792,6 +771,14 @@ export function getDefaultSettings(app: App): OmnisearchSettings {
|
|||||||
|
|
||||||
let settings: OmnisearchSettings
|
let settings: OmnisearchSettings
|
||||||
|
|
||||||
|
function htmlDescription(innerHTML: string): DocumentFragment {
|
||||||
|
const desc = new DocumentFragment()
|
||||||
|
desc.createSpan({}, span => {
|
||||||
|
span.innerHTML = innerHTML
|
||||||
|
})
|
||||||
|
return desc
|
||||||
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * @deprecated
|
// * @deprecated
|
||||||
// */
|
// */
|
||||||
|
|||||||
Reference in New Issue
Block a user