mirror of https://github.com/doccano/doccano.git
Hironsan
2 years ago
1 changed files with 0 additions and 244 deletions
Split 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