[#58] Added ESLint & ran formatter

pull/59/head
Jef Roosens 2021-05-01 19:09:58 +02:00
parent f27775910f
commit e67616baa1
Signed by: Jef Roosens
GPG Key ID: B580B976584B5F30
10 changed files with 67 additions and 42 deletions

15
web/.eslintrc.yml 100644
View File

@ -0,0 +1,15 @@
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,15 +4,25 @@
"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[]> {
var base_url = import.meta.env.VITE_ENDPOINT as string const base_url = import.meta.env.VITE_ENDPOINT as string
var r = await fetch(`${base_url}/ivago/search?` + new URLSearchParams({ const 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 }}</li> <li v-for="item in items">{{ item.name }} ({{ item.city }})</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 } from '../api/ivago' import { Street, search as ivago_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
} }
search(this.query) ivago_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