mirror of https://github.com/doccano/doccano.git
5 changed files with 143 additions and 267 deletions
Split View
Diff Options
-
164frontend/components/containers/annotation/CommentButton.vue
-
132frontend/components/containers/comments/Comment.vue
-
103frontend/components/containers/comments/CommentButton.vue
-
1frontend/components/containers/comments/CommentList.vue
-
10frontend/layouts/annotation.vue
@ -1,164 +0,0 @@ |
|||
<template> |
|||
<div style="display:inline;"> |
|||
<v-tooltip bottom> |
|||
<template v-slot:activator="{ on }"> |
|||
<v-btn |
|||
class="text-capitalize ps-1 pe-1" |
|||
min-width="36" |
|||
icon |
|||
v-on="on" |
|||
@click="dialog=true" |
|||
> |
|||
<v-icon> |
|||
mdi-chat |
|||
</v-icon> |
|||
</v-btn> |
|||
</template> |
|||
<span>{{ $t('annotation.commentTooltip') }}</span> |
|||
</v-tooltip> |
|||
<v-dialog |
|||
v-model="dialog" |
|||
width="800" |
|||
> |
|||
<base-card |
|||
:title="$t('annotation.commentPopupTitle')" |
|||
:cancel-text="$t('generic.close')" |
|||
@cancel="dialog=false" |
|||
> |
|||
<template #content> |
|||
<v-text-field |
|||
v-model="comment" |
|||
outlined |
|||
> |
|||
<template |
|||
v-slot:append |
|||
> |
|||
<v-btn |
|||
tile |
|||
large |
|||
icon |
|||
height="auto" |
|||
width="auto" |
|||
color="primary" |
|||
class="ma-0" |
|||
@click="addItem" |
|||
> |
|||
<v-icon>mdi-plus</v-icon> |
|||
</v-btn> |
|||
</template> |
|||
</v-text-field> |
|||
<v-data-table |
|||
:headers="headers" |
|||
:items="currentDoc.comments" |
|||
:items-per-page="10" |
|||
class="elevation-1" |
|||
> |
|||
<template v-slot:item.action="{ item }"> |
|||
<v-icon |
|||
small |
|||
@click="deleteItem(item.id)" |
|||
> |
|||
mdi-delete |
|||
</v-icon> |
|||
</template> |
|||
<template v-slot:item.text="props"> |
|||
<v-edit-dialog |
|||
large |
|||
persistent |
|||
@save="editItem" |
|||
@open="openEdit(props.item)" |
|||
> |
|||
<div>{{ props.item.text }}</div> |
|||
<template v-slot:input> |
|||
<div class="mt-4 title"> |
|||
Update Comment |
|||
</div> |
|||
<v-text-field |
|||
v-model="editedComment.text" |
|||
label="Edit" |
|||
single-line |
|||
counter |
|||
autofocus |
|||
/> |
|||
</template> |
|||
</v-edit-dialog> |
|||
</template> |
|||
</v-data-table> |
|||
</template> |
|||
</base-card> |
|||
</v-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapGetters, mapActions } from 'vuex' |
|||
import BaseCard from '@/components/molecules/BaseCard' |
|||
|
|||
export default { |
|||
components: { |
|||
BaseCard |
|||
}, |
|||
|
|||
data() { |
|||
return { |
|||
dialog: false, |
|||
comment: '', |
|||
editedComment: { |
|||
text: '', |
|||
id: null |
|||
} |
|||
} |
|||
}, |
|||
|
|||
computed: { |
|||
...mapGetters('documents', ['currentDoc']), |
|||
headers() { |
|||
return [ |
|||
{ |
|||
text: 'Comments', |
|||
align: 'start', |
|||
sortable: false, |
|||
value: 'text' |
|||
}, |
|||
{ text: 'Action', value: 'action', sortable: false } |
|||
] |
|||
} |
|||
}, |
|||
|
|||
methods: { |
|||
...mapActions('documents', ['addComment', 'deleteComment', 'updateComment']), |
|||
addItem() { |
|||
if (this.comment === '') { |
|||
return |
|||
} |
|||
const payload = { |
|||
text: this.comment, |
|||
projectId: this.$route.params.id |
|||
} |
|||
this.addComment(payload) |
|||
this.comment = '' |
|||
}, |
|||
deleteItem(id) { |
|||
const payload = { |
|||
commentId: id, |
|||
projectId: this.$route.params.id |
|||
} |
|||
this.deleteComment(payload) |
|||
}, |
|||
editItem() { |
|||
if (this.editedComment.text === '') { |
|||
this.deleteItem(this.editedComment.id) |
|||
} else { |
|||
this.updateComment({ |
|||
projectId: this.$route.params.id, |
|||
commentId: this.editedComment.id, |
|||
text: this.editedComment.text |
|||
}) |
|||
} |
|||
}, |
|||
openEdit(item) { |
|||
Object.assign(this.editedComment, item) |
|||
} |
|||
} |
|||
} |
|||
</script> |
Write
Preview
Loading…
Cancel
Save