diff --git a/templates/datasets/create.tmpl b/templates/datasets/create.tmpl
index 8af7cddc2..cfb1ad33e 100644
--- a/templates/datasets/create.tmpl
+++ b/templates/datasets/create.tmpl
@@ -110,7 +110,8 @@
diff --git a/web_src/js/index.js b/web_src/js/index.js
index f7b4ef24d..249cdaad1 100644
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -2305,6 +2305,66 @@ $(document).ready(async () => {
});
}
+ // dataset Dropzone
+ const $dataset = $('#dataset');
+ if ($dataset.length > 0) {
+ const filenameDict = {};
+ let previewTemplate = '';
+ previewTemplate += '
\n ';
+ previewTemplate += '
\n ';
+ previewTemplate += '
';
+ previewTemplate += ' ';
+ previewTemplate += '
\n ';
+ previewTemplate += '
\n ';
+ previewTemplate += '
![]()
\n ';
+ previewTemplate += '
\n ';
+ previewTemplate += '
';
+ previewTemplate += '
\n ';
+ previewTemplate += '
\n ';
+ previewTemplate += '
';
+ previewTemplate += ' 上传成功';
+ previewTemplate += '
\n ';
+ previewTemplate += '
';
+ previewTemplate += ' 上传失败';
+ previewTemplate += '
\n ';
+ previewTemplate += '
';
+ previewTemplate += ' ';
+ previewTemplate += '
\n';
+ previewTemplate += '
';
+
+ await createDropzone('#dataset', {
+ url: $dataset.data('upload-url'),
+ headers: {'X-Csrf-Token': csrf},
+ maxFiles: $dataset.data('max-file'),
+ maxFilesize: $dataset.data('max-size'),
+ acceptedFiles: ($dataset.data('accepts') === '*/*') ? null : $dataset.data('accepts'),
+ addRemoveLinks: true,
+ dictDefaultMessage: $dataset.data('default-message'),
+ dictInvalidFileType: $dataset.data('invalid-input-type'),
+ dictFileTooBig: $dataset.data('file-too-big'),
+ dictRemoveFile: $dataset.data('remove-file'),
+ previewTemplate,
+ init() {
+ this.on('success', (file, data) => {
+ filenameDict[file.name] = data.uuid;
+ const input = $(`
`).val(data.uuid);
+ $('.files').append(input);
+ });
+ this.on('removedfile', (file) => {
+ if (file.name in filenameDict) {
+ $(`#${filenameDict[file.name]}`).remove();
+ }
+ if ($dataset.data('remove-url') && $dataset.data('csrf')) {
+ $.post($dataset.data('remove-url'), {
+ file: filenameDict[file.name],
+ _csrf: $dataset.data('csrf')
+ });
+ }
+ });
+ },
+ });
+ }
+
// Helpers.
$('.delete-button').on('click', showDeletePopup);
$('.add-all-button').on('click', showAddAllPopup);
diff --git a/web_src/less/_dataset.less b/web_src/less/_dataset.less
index 99d89b6b0..c3072696e 100644
--- a/web_src/less/_dataset.less
+++ b/web_src/less/_dataset.less
@@ -2,5 +2,54 @@
padding-top: 15px;
.dataset-files {
margin: 0 30px !important;
+ #dataset {
+ .dz-preview {
+ border-bottom: 1px solid rgb(218, 220, 224);
+ min-height: 0;
+ }
+ .dz-preview.dz-file-preview.dz-processing {
+ display: flex;
+ align-items: center;
+ .dz-details {
+ display: flex;
+ padding: 0 0 10px 0;
+ min-width: 60%;
+ max-width: 60%;
+ position: relative;
+ }
+ .dz-success-mark {
+ z-index: 0;
+ position: relative;
+ top: 0;
+ left: auto;
+ color: green;
+ margin: 0 16px;
+ }
+ .dz-error-mark {
+ z-index: 0;
+ position: relative;
+ top: 0;
+ left: auto;
+ color: red;
+ margin: 0 16px;
+ }
+ .bar {
+ background: #21ba45;
+ }
+ .dz-progress {
+ left: 4px;
+ background: grey;
+ width: 70%;
+ top: 20px;
+ margin: 0;
+ }
+ .dz-file {
+ margin-bottom: auto;
+ }
+ }
+ .dz-preview .dz-error-message {
+ top: 30px;
+ }
+ }
}
}
\ No newline at end of file