diff --git a/app/Search/QueryController.php b/app/Search/QueryController.php new file mode 100644 index 000000000..895d63f13 --- /dev/null +++ b/app/Search/QueryController.php @@ -0,0 +1,53 @@ +get('ask', ''); + + // TODO - Placeholder + $entities = $this->searchRunner->searchEntities(SearchOptions::fromString("cat"), 'all', 1, 20)['results']; + + // TODO - Set page title + + return view('search.query', [ + 'query' => $query, + 'entities' => $entities, + ]); + } + + /** + * Perform a vector/LLM-based query search. + */ + public function run(Request $request, VectorSearchRunner $runner) + { + // TODO - Validate if query system is active + $query = $request->get('query', ''); + + if ($query) { + $results = $runner->run($query); + } else { + $results = null; + } + + return view('search.query', [ + 'results' => $results, + ]); + } +} diff --git a/app/Search/SearchController.php b/app/Search/SearchController.php index b5b2b76b6..6ae54b393 100644 --- a/app/Search/SearchController.php +++ b/app/Search/SearchController.php @@ -129,7 +129,7 @@ class SearchController extends Controller } /** - * Search siblings items in the system. + * Search sibling items in the system. */ public function searchSiblings(Request $request, SiblingFetcher $siblingFetcher) { @@ -140,23 +140,4 @@ class SearchController extends Controller return view('entities.list-basic', ['entities' => $entities, 'style' => 'compact']); } - - /** - * Perform a vector/LLM-based query search. - */ - public function searchQuery(Request $request, VectorSearchRunner $runner) - { - // TODO - Validate if query system is active - $query = $request->get('query', ''); - - if ($query) { - $results = $runner->run($query); - } else { - $results = null; - } - - return view('search.query', [ - 'results' => $results, - ]); - } } diff --git a/resources/js/components/index.ts b/resources/js/components/index.ts index 63e1ad0db..dcb28abd7 100644 --- a/resources/js/components/index.ts +++ b/resources/js/components/index.ts @@ -44,6 +44,7 @@ export {PagePicker} from './page-picker'; export {PermissionsTable} from './permissions-table'; export {Pointer} from './pointer'; export {Popup} from './popup'; +export {QueryManager} from './query-manager'; export {SettingAppColorScheme} from './setting-app-color-scheme'; export {SettingColorPicker} from './setting-color-picker'; export {SettingHomepageControl} from './setting-homepage-control'; diff --git a/resources/js/components/query-manager.ts b/resources/js/components/query-manager.ts new file mode 100644 index 000000000..9252c543d --- /dev/null +++ b/resources/js/components/query-manager.ts @@ -0,0 +1,25 @@ +import {Component} from "./component"; + +export class QueryManager extends Component { + protected input!: HTMLTextAreaElement; + protected generatedLoading!: HTMLElement; + protected generatedDisplay!: HTMLElement; + protected contentLoading!: HTMLElement; + protected contentDisplay!: HTMLElement; + protected form!: HTMLFormElement; + + setup() { + this.input = this.$refs.input as HTMLTextAreaElement; + this.form = this.$refs.form as HTMLFormElement; + this.generatedLoading = this.$refs.generatedLoading; + this.generatedDisplay = this.$refs.generatedDisplay; + this.contentLoading = this.$refs.contentLoading; + this.contentDisplay = this.$refs.contentDisplay; + + // TODO - Start lookup if query set + + // TODO - Update URL on query change + + // TODO - Handle query form submission + } +} \ No newline at end of file diff --git a/resources/sass/_forms.scss b/resources/sass/_forms.scss index 12fb3385f..61f46201c 100644 --- a/resources/sass/_forms.scss +++ b/resources/sass/_forms.scss @@ -597,3 +597,21 @@ input.shortcut-input { max-width: 120px; height: auto; } + +.query-form { + display: flex; + flex-direction: row; + gap: vars.$m; + textarea { + font-size: 1.4rem; + height: 100px; + box-shadow: vars.$bs-card; + border-radius: 8px; + color: #444; + } + button { + align-self: start; + margin: 0; + font-size: 1.6rem; + } +} \ No newline at end of file diff --git a/resources/views/search/query.blade.php b/resources/views/search/query.blade.php index e8b4c8477..48cb1eeaf 100644 --- a/resources/views/search/query.blade.php +++ b/resources/views/search/query.blade.php @@ -1,29 +1,62 @@ @extends('layouts.simple') @section('body') -
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad adipisci aliquid architecto cupiditate dolor doloribus eligendi et expedita facilis fugiat fugit illo, ipsa laboriosam maiores, molestias mollitia non obcaecati porro quasi quis quos reprehenderit rerum sunt tenetur ullam unde voluptate voluptates! Distinctio et eum id molestiae nisi quisquam sed ut.
+{{ $results['llm_result'] }}
-{{ $results['llm_result'] }}
--}} + +{{--