diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue
index a0104e17..83601fce 100644
--- a/frontend/src/views/HomeView.vue
+++ b/frontend/src/views/HomeView.vue
@@ -10,6 +10,7 @@ import { useRouter } from 'vue-router'
import HeaderDefault from '@/components/HeaderDefault.vue'
import SearchBar from '@/components/SearchBar.vue'
+import { search } from '@/api/utils'
const router = useRouter()
@@ -29,35 +30,12 @@ const useExample = (example: string) => {
searchTerm.value = example
}
-interface RouteLocationFragment {
- name: string
- params?: any
-}
-
-type RouteLoctionBuilder = () => RouteLocationFragment
-
-// We iterate the regexps in the `Map` and will use the route from the
-// first match.
-const SEARCH_REGEXPS: [RegExp, RouteLoctionBuilder][] = [
- [
- /^.*$/,
- (): RouteLocationFragment => ({
- name: 'gene',
- params: {
- searchTerm: searchTerm.value
- }
- })
- ]
-]
-
const performSearch = async () => {
- for (const [regexp, getRoute] of SEARCH_REGEXPS) {
- if (regexp.test(searchTerm.value)) {
- const routeLocation = getRoute()
- console.log(`term ${searchTerm.value} matched ${regexp}, route is`, routeLocation)
- router.push(routeLocation)
- return
- }
+ const routeLocation: any = search(searchTerm.value, genomeRelease.value)
+ if (routeLocation) {
+ router.push(routeLocation)
+ } else {
+ console.error(`no route found for ${searchTerm.value}`)
}
}
diff --git a/frontend/src/views/__tests__/HomeView.spec.ts b/frontend/src/views/__tests__/HomeView.spec.ts
index 9299829f..ababcc97 100644
--- a/frontend/src/views/__tests__/HomeView.spec.ts
+++ b/frontend/src/views/__tests__/HomeView.spec.ts
@@ -132,6 +132,9 @@ describe('HomeView with mocked router', async () => {
await nextTick()
expect(router.push).toHaveBeenCalledOnce()
- expect(router.push).toHaveBeenCalledWith({ name: 'gene', params: { searchTerm: 'HGNC:1100' } })
+ expect(router.push).toHaveBeenCalledWith({
+ name: 'gene',
+ params: { searchTerm: 'HGNC:1100', genomeRelease: 'grch37' }
+ })
})
})