]> _ Git - odl.git/commitdiff
wip #4804 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 19 Jan 2022 15:49:30 +0000 (16:49 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 19 Jan 2022 15:49:35 +0000 (16:49 +0100)
app/Jobs/SearchIndex.php
resources/js/search.js

index 54dff2b58d05e2f725e9e9ee943faf344ac9bd83..af51fbdf917c96cd8cbe403d08ad2fd0d786f505 100644 (file)
@@ -12,9 +12,11 @@ use Cubist\Minisearch\Index;
 
 class SearchIndex extends Index
 {
+    protected $varname = 'minisearchodl';
+
     public function __construct()
     {
-        $this->output = storage_path('search.js');
+        $this->output = public_path('js/search.index.js');
     }
 
     public function handle()
@@ -72,11 +74,11 @@ class SearchIndex extends Index
 //        }
 
         /** @var Asset[] $pdfs */
-        $pdfs=Asset::getPDFInResources();
+        $pdfs = Asset::getPDFInResources();
         foreach ($pdfs as $pdf) {
             $document = new PDF($pdf->getFirstMediaInField('file_upload')->getPath());
             $document->setId($pdf->id);
-            $document->setUrl('asset_'.$document->getId());
+            $document->setUrl('asset_' . $document->getId());
             $document->setTitle($pdf->title);
             $document->setKeywords($pdf->keywords);
             $document->setThumb($pdf->getThumbURL());
index 1d4a06f464c684c914b9caf039c3a5c57077cf34..fb6effdd4978a819c13f694027b5e2eb419ba651 100644 (file)
@@ -8,7 +8,7 @@ export default (searchData = []) => ({
 
     miniSearch: {}, // Holds the MiniSearch instance
     setup: { // MiniSearch options: https://lucaong.github.io/minisearch/#search-options
-        fields: ['title', 'text'], // fields to index for full-text search
+        fields: ['title', 'text','keywords'], // fields to index for full-text search
         storeFields: ['id', 'title', 'text', 'type', 'url', 'thumb'], // fields to return with search results
         searchOptions: {
             prefix: true, // Allow partial matches
@@ -16,9 +16,11 @@ export default (searchData = []) => ({
     },
     query: '', // The search query
 
-    init() {
+    async init() {
+
         this.miniSearch = new MiniSearch(this.setup);
-        this.miniSearch.addAllAsync(searchData); // Load asynchronously for better performance
+        await loadScript('search.index.js');
+        this.miniSearch.addAllAsync(minisearchodl);
     },
 
     get results() {
@@ -41,3 +43,14 @@ export default (searchData = []) => ({
     },
 
 });
+
+const loadScript = src => {
+    return new Promise((resolve, reject) => {
+        const script = document.createElement('script')
+        script.type = 'text/javascript'
+        script.onload = resolve
+        script.onerror = reject
+        script.src = src
+        document.head.append(script)
+    })
+}