mirror of https://github.com/doccano/doccano.git
1 changed files with 0 additions and 244 deletions
Unified View
Diff Options
@ -1,244 +0,0 @@ |
|||||
<template> |
|
||||
<v-card> |
|
||||
<v-card-title>{{ $t('overview.createProjectTitle') }}</v-card-title> |
|
||||
<v-card-text> |
|
||||
<v-form v-model="valid"> |
|
||||
<v-item-group |
|
||||
v-model="selected" |
|
||||
mandatory |
|
||||
@change="updateValue('projectType', projectTypes[selected])" |
|
||||
> |
|
||||
<v-row no-gutters> |
|
||||
<v-col v-for="(item, i) in projectTypes" :key="i"> |
|
||||
<v-item v-slot="{ active, toggle }"> |
|
||||
<v-card class="mb-6 me-6" max-width="350" outlined> |
|
||||
<v-img |
|
||||
:src="require(`~/assets/images/tasks/${images[i]}`)" |
|
||||
height="200" |
|
||||
contain |
|
||||
@click="toggle" |
|
||||
/> |
|
||||
<v-card-title> |
|
||||
<v-icon v-if="active"> |
|
||||
{{ mdiCheckBold }} |
|
||||
</v-icon> |
|
||||
{{ translateTypeName(item, $t('overview.projectTypes')) }} |
|
||||
</v-card-title> |
|
||||
</v-card> |
|
||||
</v-item> |
|
||||
</v-col> |
|
||||
</v-row> |
|
||||
</v-item-group> |
|
||||
|
|
||||
<v-text-field |
|
||||
:value="name" |
|
||||
:rules="projectNameRules($t('rules.projectNameRules'))" |
|
||||
:label="$t('overview.projectName')" |
|
||||
outlined |
|
||||
required |
|
||||
autofocus |
|
||||
@input="updateValue('name', $event)" |
|
||||
/> |
|
||||
<v-text-field |
|
||||
:value="description" |
|
||||
:rules="descriptionRules($t('rules.descriptionRules'))" |
|
||||
:label="$t('generic.description')" |
|
||||
outlined |
|
||||
required |
|
||||
@input="updateValue('description', $event)" |
|
||||
/> |
|
||||
<v-combobox |
|
||||
:value="tags" |
|
||||
:items="tags" |
|
||||
label="Tags" |
|
||||
multiple |
|
||||
chips |
|
||||
outlined |
|
||||
dense |
|
||||
deletable-chips |
|
||||
hide-selected |
|
||||
@input="updateValue('tags', $event)" |
|
||||
/> |
|
||||
<v-checkbox |
|
||||
v-if="hasSingleLabelOption" |
|
||||
:value="singleClassClassification" |
|
||||
:label="$t('overview.allowSingleLabel')" |
|
||||
@change="updateValue('singleClassClassification', $event === true)" |
|
||||
/> |
|
||||
<v-checkbox |
|
||||
v-if="isSequenceLabelingProject" |
|
||||
:value="allowOverlapping" |
|
||||
label="Allow overlapping entity" |
|
||||
@change="updateValue('allowOverlapping', $event === true)" |
|
||||
/> |
|
||||
<v-img |
|
||||
v-if="isSequenceLabelingProject" |
|
||||
:src="require('~/assets/project/creation.gif')" |
|
||||
height="200" |
|
||||
position="left" |
|
||||
contain |
|
||||
/> |
|
||||
<v-checkbox |
|
||||
v-if="isSequenceLabelingProject" |
|
||||
:value="useRelation" |
|
||||
label="Use relation labeling" |
|
||||
@change="updateValue('useRelation', $event === true)" |
|
||||
/> |
|
||||
<v-checkbox |
|
||||
v-if="isSequenceLabelingProject" |
|
||||
:value="graphemeMode" |
|
||||
@change="updateValue('graphemeMode', $event === true)" |
|
||||
> |
|
||||
<template #label> |
|
||||
<div> |
|
||||
Count |
|
||||
<v-tooltip bottom> |
|
||||
<template #activator="{ on }"> |
|
||||
<a target="_blank" href="https://unicode.org/reports/tr29/" @click.stop v-on="on"> |
|
||||
grapheme clusters |
|
||||
</a> |
|
||||
</template> |
|
||||
Like emoji(🌷, 💩, and 👍), CRLF(\r\n), and so on. |
|
||||
</v-tooltip> |
|
||||
as one character |
|
||||
</div> |
|
||||
</template> |
|
||||
</v-checkbox> |
|
||||
<v-checkbox |
|
||||
:value="enableRandomOrder" |
|
||||
:label="$t('overview.randomizeDocOrder')" |
|
||||
@change="updateValue('enableRandomOrder', $event === true)" |
|
||||
/> |
|
||||
<v-checkbox |
|
||||
:value="enableShareAnnotation" |
|
||||
:label="$t('overview.shareAnnotations')" |
|
||||
@change="updateValue('enableShareAnnotation', $event === true)" |
|
||||
/> |
|
||||
</v-form> |
|
||||
</v-card-text> |
|
||||
<v-card-actions class="ps-4"> |
|
||||
<v-btn |
|
||||
:disabled="!valid" |
|
||||
color="primary" |
|
||||
style="text-transform: none" |
|
||||
outlined |
|
||||
@click="$emit('save')" |
|
||||
> |
|
||||
{{ $t('generic.create') }} |
|
||||
</v-btn> |
|
||||
</v-card-actions> |
|
||||
</v-card> |
|
||||
</template> |
|
||||
|
|
||||
<script lang="ts"> |
|
||||
import Vue from 'vue' |
|
||||
import { mdiCheckBold } from '@mdi/js' |
|
||||
import { projectNameRules, descriptionRules, projectTypeRules } from '@/rules/index' |
|
||||
|
|
||||
export default Vue.extend({ |
|
||||
props: { |
|
||||
name: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
required: true |
|
||||
}, |
|
||||
description: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
required: true |
|
||||
}, |
|
||||
projectType: { |
|
||||
type: String, |
|
||||
default: '', |
|
||||
required: true |
|
||||
}, |
|
||||
enableRandomOrder: { |
|
||||
type: Boolean, |
|
||||
default: false, |
|
||||
required: true |
|
||||
}, |
|
||||
enableShareAnnotation: { |
|
||||
type: Boolean, |
|
||||
default: false, |
|
||||
required: true |
|
||||
}, |
|
||||
singleClassClassification: { |
|
||||
type: Boolean, |
|
||||
default: false, |
|
||||
required: true |
|
||||
}, |
|
||||
allowOverlapping: { |
|
||||
type: Boolean, |
|
||||
default: false |
|
||||
}, |
|
||||
graphemeMode: { |
|
||||
type: Boolean, |
|
||||
default: false |
|
||||
}, |
|
||||
useRelation: { |
|
||||
type: Boolean, |
|
||||
default: false |
|
||||
}, |
|
||||
tags: { |
|
||||
type: Array, |
|
||||
default: () => [] |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { |
|
||||
valid: false, |
|
||||
projectNameRules, |
|
||||
projectTypeRules, |
|
||||
descriptionRules, |
|
||||
mdiCheckBold, |
|
||||
selected: 0 |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
computed: { |
|
||||
projectTypes() { |
|
||||
return [ |
|
||||
'DocumentClassification', |
|
||||
'SequenceLabeling', |
|
||||
'Seq2seq', |
|
||||
'IntentDetectionAndSlotFilling', |
|
||||
'ImageClassification', |
|
||||
'ImageCaptioning', |
|
||||
'BoundingBox', |
|
||||
'Segmentation', |
|
||||
'Speech2text' |
|
||||
] |
|
||||
}, |
|
||||
images() { |
|
||||
return [ |
|
||||
'text_classification.png', |
|
||||
'sequence_labeling.png', |
|
||||
'seq2seq.png', |
|
||||
'intent_detection.png', |
|
||||
'image_classification.png', |
|
||||
'image_captioning.jpg', |
|
||||
'object_detection.jpg', |
|
||||
'segmentation.jpg', |
|
||||
'speech_to_text.png' |
|
||||
] |
|
||||
}, |
|
||||
hasSingleLabelOption() { |
|
||||
return ['DocumentClassification', 'ImageClassification'].includes(this.projectType) |
|
||||
}, |
|
||||
isSequenceLabelingProject() { |
|
||||
return this.projectType === 'SequenceLabeling' |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
updateValue(key: string, value: string) { |
|
||||
this.$emit(`update:${key}`, value) |
|
||||
}, |
|
||||
translateTypeName(type: string, types: string[]): string { |
|
||||
const index = this.projectTypes.indexOf(type) |
|
||||
return types[index] |
|
||||
} |
|
||||
} |
|
||||
}) |
|
||||
</script> |
|
Write
Preview
Loading…
Cancel
Save