mirror of https://github.com/doccano/doccano.git
pythonannotation-tooldatasetsactive-learningtext-annotationdatasetnatural-language-processingdata-labelingmachine-learning
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.5 KiB
90 lines
2.5 KiB
<template>
|
|
<v-card>
|
|
<v-card-text v-if="!!project">
|
|
<v-form ref="form" v-model="valid" :disabled="!isEditing">
|
|
<v-row>
|
|
<v-col cols="12" sm="12" md="6" lg="6" xl="6">
|
|
<project-name-field v-model="project.name" />
|
|
<project-description-field v-model="project.description" />
|
|
<tag-list v-model="tags" />
|
|
<random-order-field v-model="project.enableRandomOrder" />
|
|
<sharing-mode-field v-model="project.enableSharingMode" />
|
|
<v-checkbox
|
|
v-if="project.canDefineLabel"
|
|
v-model="project.allowMemberToCreateLabelType"
|
|
label="Allow project members to create label types"
|
|
/>
|
|
</v-col>
|
|
</v-row>
|
|
</v-form>
|
|
</v-card-text>
|
|
<v-card-actions class="ps-4 pt-0">
|
|
<v-btn v-if="!isEditing" color="primary" class="text-capitalize" @click="isEditing = true">
|
|
Edit
|
|
</v-btn>
|
|
<v-btn
|
|
v-show="isEditing"
|
|
color="primary"
|
|
:disabled="!valid || isUpdating"
|
|
class="mr-4 text-capitalize"
|
|
@click="save"
|
|
>
|
|
{{ $t('generic.save') }}
|
|
</v-btn>
|
|
<v-btn v-show="isEditing" :disabled="isUpdating" class="text-capitalize" @click="cancel">
|
|
{{ $t('generic.cancel') }}
|
|
</v-btn>
|
|
</v-card-actions>
|
|
</v-card>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import Vue from 'vue'
|
|
import ProjectDescriptionField from './ProjectDescriptionField.vue'
|
|
import ProjectNameField from './ProjectNameField.vue'
|
|
import RandomOrderField from './RandomOrderField.vue'
|
|
import SharingModeField from './SharingModeField.vue'
|
|
import TagList from './TagList.vue'
|
|
import { Project } from '~/domain/models/project/project'
|
|
|
|
export default Vue.extend({
|
|
components: {
|
|
ProjectNameField,
|
|
ProjectDescriptionField,
|
|
RandomOrderField,
|
|
SharingModeField,
|
|
TagList
|
|
},
|
|
|
|
data() {
|
|
return {
|
|
project: {} as Project,
|
|
tags: [] as string[],
|
|
valid: false,
|
|
isEditing: false,
|
|
isUpdating: false
|
|
}
|
|
},
|
|
|
|
async fetch() {
|
|
const projectId = this.$route.params.id
|
|
this.project = await this.$services.project.findById(projectId)
|
|
this.tags = this.project.tags.map((item) => item.text)
|
|
this.isEditing = false
|
|
},
|
|
|
|
methods: {
|
|
cancel() {
|
|
this.$fetch()
|
|
},
|
|
|
|
async save() {
|
|
this.isUpdating = true
|
|
await this.$services.project.update(this.project.id, this.project)
|
|
await this.$services.tag.bulkUpdate(this.project.id, this.tags)
|
|
this.$fetch()
|
|
this.isUpdating = false
|
|
}
|
|
}
|
|
})
|
|
</script>
|