Compare commits

..

No commits in common. "bef750563166e65bf055ebc06721150443e00db7" and "36bd27c9198d8b2f2436ab73c82cd4559bf2afa9" have entirely different histories.

10 changed files with 42 additions and 67 deletions

View File

@ -1,15 +0,0 @@
env:
browser: true
es2021: true
extends:
- 'plugin:vue/essential'
- standard
parserOptions:
ecmaVersion: 12
parser: '@typescript-eslint/parser'
sourceType: module
plugins:
- vue
- '@typescript-eslint'
rules:
indent: ["error", 4]

View File

@ -4,25 +4,15 @@
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vue-tsc --noEmit && vite build", "build": "vue-tsc --noEmit && vite build",
"serve": "vite preview", "serve": "vite preview"
"lint": "eslint \"src/**\"",
"format": "eslint --fix \"src/**\""
}, },
"dependencies": { "dependencies": {
"vue": "^3.0.5", "vue": "^3.0.5",
"vue-router": "^4.0.6" "vue-router": "^4.0.6"
}, },
"devDependencies": { "devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.22.0",
"@typescript-eslint/parser": "^4.22.0",
"@vitejs/plugin-vue": "^1.2.1", "@vitejs/plugin-vue": "^1.2.1",
"@vue/compiler-sfc": "^3.0.5", "@vue/compiler-sfc": "^3.0.5",
"eslint": "^7.25.0",
"eslint-config-standard": "^16.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.3.1",
"eslint-plugin-vue": "^7.9.0",
"typescript": "^4.1.3", "typescript": "^4.1.3",
"vite": "^2.2.1", "vite": "^2.2.1",
"vue-tsc": "^0.0.25" "vue-tsc": "^0.0.25"

View File

@ -1,5 +1,5 @@
<template> <template>
<Nav /> <Nav />
<router-view /> <router-view />
</template> </template>
@ -10,8 +10,8 @@ import Nav from './components/Nav.vue'
export default defineComponent({ export default defineComponent({
name: 'App', name: 'App',
components: { components: {
Nav Nav,
} },
}) })
</script> </script>

View File

@ -3,11 +3,11 @@ export interface Street {
city: string city: string
} }
export async function search (search_term: string): Promise<Street[]> { export async function search(search_term: string): Promise<Street[]> {
const base_url = import.meta.env.VITE_ENDPOINT as string var base_url = import.meta.env.VITE_ENDPOINT as string
const r = await fetch(`${base_url}/ivago/search?` + new URLSearchParams({ var r = await fetch(`${base_url}/ivago/search?` + new URLSearchParams({
q: search_term q: search_term,
})) }))
if (!r.ok) { if (!r.ok) {

View File

@ -15,18 +15,18 @@ import { Street, Ivago } from '../api/ivago'
export default defineComponent({ export default defineComponent({
name: 'HelloWorld', name: 'HelloWorld',
data () { data() {
return { return {
street: '', street: "",
results: [] as Street[] results: [] as Street[],
} }
}, },
methods: { methods: {
onSubmit () { onSubmit() {
new Ivago(import.meta.env.VITE_ENDPOINT as string).search(this.$data.street) new Ivago(import.meta.env.VITE_ENDPOINT as string).search(this.$data.street)
.then(res => { .then(res => {
this.$data.results = res this.$data.results = res;
}) });
} }
} }
}) })

View File

@ -8,6 +8,6 @@
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
export default defineComponent({ export default defineComponent({
name: 'Home' name: 'Home',
}) })
</script> </script>

View File

@ -3,7 +3,7 @@
<input v-model="query" v-on:keyup.enter="search" type="text" placeholder="Street..." /> <input v-model="query" v-on:keyup.enter="search" type="text" placeholder="Street..." />
<div id="scroll-list"> <div id="scroll-list">
<ul v-if="msg === ''"> <ul v-if="msg === ''">
<li v-for="item in items">{{ item.name }} ({{ item.city }})</li> <li v-for="item in items">{{ item.name }}</li>
</ul> </ul>
<p v-else>{{ msg }}</p> <p v-else>{{ msg }}</p>
</div> </div>
@ -11,31 +11,31 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
import { Street, search as ivago_search } from '../api/ivago' import { Street, search } from '../api/ivago'
export default defineComponent({ export default defineComponent({
name: 'Ivago', name: 'Ivago',
data () { data() {
return { return {
items: [] as Street[], items: [] as Street[],
msg: '', msg: "",
query: '' query: "",
} }
}, },
methods: { methods: {
search () { search() {
this.items = [] this.items = []
this.msg = 'Loading...' this.msg = "Loading..."
if (this.query === '') { if (this.query === "") {
this.msg = '' this.msg = ""
return return
} }
ivago_search(this.query) search(this.query)
.then((res: Street[]) => { .then((res: Street[]) => {
this.items = res this.items = res
this.msg = '' this.msg = ""
}) })
} }
} }

View File

@ -11,7 +11,7 @@
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
export default defineComponent({ export default defineComponent({
name: 'Nav' name: 'Nav',
}) })
</script> </script>

View File

@ -1,6 +1,6 @@
import { createApp } from 'vue' import { createApp } from 'vue';
import App from './App.vue' import App from './App.vue';
import router from './router' import router from './router';
const app = createApp(App) const app = createApp(App)
app.use(router) app.use(router)

View File

@ -1,21 +1,21 @@
import { createWebHistory, createRouter } from 'vue-router' import { createWebHistory, createRouter } from "vue-router";
import Home from './components/Home.vue' import Home from './components/Home.vue';
import Ivago from './components/Ivago.vue' import Ivago from './components/Ivago.vue';
const routes = [ const routes = [
{ {
path: '/', path: "/",
component: Home component: Home,
}, },
{ {
path: '/ivago', path: "/ivago",
component: Ivago component: Ivago,
} },
] ];
const router = createRouter({ const router = createRouter({
history: createWebHistory(), history: createWebHistory(),
routes routes,
}) });
export default router export default router;