| author | Alexandre Segura <mex.zktk@gmail.com> |
| Mon, 20 Feb 2017 18:33:36 +0100 | |
| changeset 325 | 8f158a4c7759 |
| parent 323 | 55c024fc7c60 |
| child 327 | 44a122f0f2de |
| permissions | -rw-r--r-- |
|
323
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
1 |
<template> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
2 |
<form v-bind:action="formAction" method="post"> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
3 |
<slot> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
4 |
<!-- CSRF token --> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
5 |
</slot> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
6 |
<input type="hidden" name="fragment" v-model="fragment"> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
7 |
<div v-if="!annotation" class="alert alert-warning"> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
8 |
Aucune annotation sélectionnée. |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
9 |
</div> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
10 |
<div v-if="annotation" class="form-group form-group-sm"> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
11 |
<label class="control-label">Titre</label> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
12 |
<input type="text" class="form-control" name="title" v-model="title"> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
13 |
</div> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
14 |
<div v-if="annotation" class="form-group form-group-sm"> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
15 |
<label class="control-label">Description</label> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
16 |
<textarea class="form-control" name="description" v-model="description"></textarea> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
17 |
</div> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
18 |
<div v-if="annotation" class="form-group form-group-sm"> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
19 |
<label class="control-label">Mots-clé</label> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
20 |
<tag-list ref="taglist" v-bind:tags="tags" @change="onTagsChange($event.tags)"></tag-list> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
21 |
<input type="hidden" name="tags" v-model="serializedTags"> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
22 |
</div> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
23 |
<button type="submit" v-if="annotation" v-bind:class="{ disabled: !hasChanged() }"
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
24 |
class="btn btn-block btn-sm btn-primary">Sauvegarder</button> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
25 |
</form> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
26 |
</template> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
27 |
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
28 |
<script> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
29 |
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
30 |
import TagList from '../tagform/TagList.vue' |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
31 |
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
32 |
export default {
|
|
325
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
33 |
props: ['action', 'annotation'], |
|
323
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
34 |
components: {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
35 |
'tag-list': TagList |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
36 |
}, |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
37 |
data() {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
38 |
return {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
39 |
'title': '', |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
40 |
'description': '', |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
41 |
'fragment': '', |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
42 |
'tags': [], |
|
325
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
43 |
} |
|
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
44 |
}, |
|
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
45 |
watch: {
|
|
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
46 |
annotation: function(annotation) {
|
|
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
47 |
if (annotation) {
|
|
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
48 |
Object.assign(this, annotation); |
|
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
49 |
} else {
|
|
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
50 |
this.reset(); |
|
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
51 |
} |
|
323
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
52 |
} |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
53 |
}, |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
54 |
computed: {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
55 |
formAction: function() {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
56 |
if (this.annotation) {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
57 |
return this.action.replace(':annotation_guid', this.annotation.annotation_guid);
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
58 |
} |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
59 |
}, |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
60 |
serializedTags: function() {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
61 |
var tags = this.tags.map(function(tag) {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
62 |
return {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
63 |
tag_input: (typeof tag.tag_link === "string" && tag.tag_link.length) ? tag.tag_link : tag.tag_label, |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
64 |
tag_label: tag.tag_label, |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
65 |
accuracy: tag.accuracy, |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
66 |
relevancy: tag.relevancy |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
67 |
} |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
68 |
}); |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
69 |
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
70 |
return JSON.stringify(tags); |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
71 |
} |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
72 |
}, |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
73 |
methods: {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
74 |
onTagsChange: function(tags) {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
75 |
this.tags = tags; |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
76 |
}, |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
77 |
reset: function() {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
78 |
Object.assign(this, {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
79 |
'title': '', |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
80 |
'description': '', |
|
325
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
81 |
'fragment': '', |
|
8f158a4c7759
Use props to update annotation in components.
Alexandre Segura <mex.zktk@gmail.com>
parents:
323
diff
changeset
|
82 |
'tags': [] |
|
323
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
83 |
}); |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
84 |
}, |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
85 |
hasChanged: function() {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
86 |
if (!this.annotation) { return false; }
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
87 |
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
88 |
return this.title !== this.annotation.title |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
89 |
|| this.description !== this.annotation.description |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
90 |
|| this.tags !== this.annotation.tags; |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
91 |
} |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
92 |
} |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
93 |
} |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
94 |
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
95 |
</script> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
96 |
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
97 |
<style scoped> |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
98 |
form {
|
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
99 |
margin-bottom: 20px; |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
100 |
} |
|
55c024fc7c60
Roughly implement annotation navigator.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
101 |
</style> |