Skip to content
3 changes: 2 additions & 1 deletion src/renderer/widgets/web-query/settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export interface SettingsEngine {

const engineDdgo: SettingsEngine = {id: 'ddgo', name: 'DuckDuckGo', url: 'https://duckduckgo.com/?q=QUERY', descr: 'Search'};
const engines: SettingsEngine[] = [
{id: 'webpages', name: 'Webpages in Worktable', url: '', descr: 'Search in webpages'},
{id: 'bing', name: 'Bing', url: 'https://www.bing.com/search?q=QUERY', descr: 'Search'},
{id: 'bing-imgs', name: 'Bing (Images)', url: 'https://www.bing.com/images/search?q=QUERY', descr: 'Search for images'},
{id: 'bing-maps', name: 'Bing (Maps)', url: 'https://www.bing.com/maps/search?q=QUERY', descr: 'Search for maps'},
Expand Down Expand Up @@ -111,7 +112,7 @@ function SettingsEditorComp({settings, settingsApi}: SettingsEditorReactComponen
<SettingBlock
titleForId='web-query-engine'
title='Query Engine'
moreInfo='Pick one of the common engines to perform your queries with, or select Custom Engine to define your own engine.'
moreInfo='Pick one of the common engines to perform your queries with, select Custom Engine to define your own engine using URL Template, or select Webpages in Worktable to use Webpages in the same Worktable which have QUERY placeholder inside their URLs.'
>
<select id="web-query-engine" value={settings.engine} onChange={e => {
updEngine(e.target.value)
Expand Down
15 changes: 13 additions & 2 deletions src/renderer/widgets/web-query/widget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,19 @@ function WidgetComp({settings, widgetApi}: WidgetReactComponentProps<Settings>)

return (e: FormEvent<HTMLFormElement>) => {
e.preventDefault();
setTypedQuery('');
shell.openExternalUrl(finalUrl);
if (settings.engine === 'webpages') {
document.querySelectorAll<HTMLIFrameElement>('[data-testid="widget-layout"]:not([inert]) webview').forEach((webview) => {
if (!webview.dataset.originalSrc && webview.src.includes(queryPlaceholder)) {
webview.dataset.originalSrc = webview.src;
}
if (webview.dataset.originalSrc) {
webview.src = webview.dataset.originalSrc.replaceAll(queryPlaceholder, queryForUrl);
}
});
} else {
setTypedQuery('');
shell.openExternalUrl(finalUrl);
}
}
}
}, [notConfigNotes.length, queryTpl, shell, typedQuery, urlTpl])
Expand Down