add-links/frontend/App.vue

56 lines
1.2 KiB
Vue
Raw Normal View History

2023-10-04 12:56:21 +01:00
<template>
Hello world: {{ title }}
<div v-for="hit in this.hits" class="mt-3">
<div><strong>{{ hit.title }}</strong> ({{ hit.wordcount }} words)</div>
<div v-html="hit.snippet"></div>
<table v-html="hit.diff"></table>
<div>replacement: {{ hit.replacement }}</div>
</div>
</template>
<script>
import axios from "redaxios";
export default {
props: {
title: String,
api_base_url: String,
},
data() {
return {
hits: [],
};
},
computed: {
},
watch: {
},
methods: {
api_call(endpoint, options) {
var url = `${this.api_base_url}/${endpoint}`;
return axios.get(url, options).catch(this.show_api_error_modal);
},
add_hit(hit) {
var params = { link_from: hit.title, link_to: this.title };
this.api_call("valid_hit", { params: params}).then((response) => {
if (response.data.valid) {
hit.diff = response.data.diff
hit.replacement = response.data.replacement
this.hits.push(hit);
}
});
}
},
mounted() {
var params = { title: this.title }
this.api_call("hits", { params: params}).then((response) => {
response.data.hits.forEach((hit) => { this.add_hit(hit) });
});
}
};
</script>
<style>
</style>