From 60083ae4d50f365c656a09f83f9eae8c2ef7f891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=8B=E6=B1=9F=E5=A4=A9=E6=9E=A2?= Date: Wed, 30 Jun 2021 14:56:02 +0800 Subject: [PATCH] update web app --- webapp/.env.development | 16 +- webapp/.env.mock | 14 +- webapp/.env.production | 17 +- webapp/.env.test | 11 +- webapp/.eslintignore | 4 +- webapp/.eslintrc.js | 66 +- .../mock/api/{ => v1}/data/datasets/count.js | 4 +- webapp/mock/api/v1/train/trainJobDelete.js | 8 + webapp/mock/mock-map.js | 3 +- webapp/package.json | 14 +- webapp/src/App.vue | 28 +- webapp/src/api/algorithm/algorithm.js | 47 +- webapp/src/api/algorithm/algorithmUsage.js | 35 +- webapp/src/api/atlas/index.js | 39 +- webapp/src/api/auth.js | 47 +- webapp/src/api/cloudServing/batch.js | 47 +- webapp/src/api/cloudServing/index.js | 53 +- webapp/src/api/development/notebook.js | 53 +- webapp/src/api/model/model.js | 91 +- webapp/src/api/model/modelVersion.js | 54 +- webapp/src/api/modelOptimize/optimize.js | 57 +- webapp/src/api/modelOptimize/record.js | 39 +- webapp/src/api/preparation/annotation.js | 41 +- webapp/src/api/preparation/datafile.js | 65 +- webapp/src/api/preparation/datalabel.js | 47 +- webapp/src/api/preparation/dataset.js | 118 +- webapp/src/api/preparation/labelGroup.js | 61 +- webapp/src/api/preparation/medical.js | 64 +- webapp/src/api/preparation/textData.js | 32 +- webapp/src/api/system/authCode.js | 58 + webapp/src/api/system/dict.js | 37 +- webapp/src/api/system/dictDetail.js | 37 +- webapp/src/api/system/menu.js | 59 + webapp/src/api/system/node.js | 49 +- webapp/src/api/system/permission.js | 57 + webapp/src/api/system/pod.js | 57 +- webapp/src/api/system/recycle.js | 51 + webapp/src/api/system/resources.js | 50 + webapp/src/api/system/role.js | 50 +- webapp/src/api/system/user.js | 46 +- webapp/src/api/system/userGroup.js | 109 + webapp/src/api/trainingImage/index.js | 43 +- webapp/src/api/trainingJob/job.js | 65 +- webapp/src/api/trainingJob/params.js | 37 +- webapp/src/api/user.js | 43 +- webapp/src/api/visual/index.js | 29 +- webapp/src/assets/images/dataset/annotate.png | Bin 0 -> 52691 bytes .../assets/images/dataset/audioClassify.png | Bin 0 -> 33003 bytes webapp/src/assets/images/dataset/body.png | Bin 0 -> 11110 bytes webapp/src/assets/images/dataset/classify.png | Bin 0 -> 49530 bytes webapp/src/assets/images/dataset/custom.png | Bin 0 -> 6721 bytes webapp/src/assets/images/dataset/ner.png | Bin 0 -> 28702 bytes webapp/src/assets/images/dataset/nodule.png | Bin 0 -> 38409 bytes .../assets/images/dataset/segmentation.png | Bin 0 -> 47658 bytes .../images/dataset/speechRecognition.png | Bin 0 -> 2595 bytes .../src/assets/images/dataset/tabular-2.png | Bin 0 -> 24457 bytes .../assets/images/dataset/textclassify.png | Bin 0 -> 31074 bytes .../images/dataset/textsegmentation.png | Bin 0 -> 86499 bytes webapp/src/assets/images/dataset/track.png | Bin 0 -> 44883 bytes webapp/src/assets/styles/atomic.scss | 64 + webapp/src/assets/styles/common.scss | 61 +- webapp/src/assets/styles/element-ui.scss | 9 + webapp/src/assets/styles/index.scss | 11 + webapp/src/assets/styles/mixin.scss | 20 + webapp/src/assets/styles/variables.scss | 7 +- webapp/src/boot/errorHandle.js | 51 +- webapp/src/boot/index.js | 28 +- webapp/src/components/BaseForm/index.vue | 165 + webapp/src/components/BaseModal/index.js | 75 +- webapp/src/components/BaseTable/index.vue | 276 ++ webapp/src/components/Card/info.vue | 28 +- webapp/src/components/Crud/UD.operation.vue | 24 +- webapp/src/components/Dict/Dict.js | 50 +- webapp/src/components/Dict/index.js | 28 +- webapp/src/components/Drag/drag.vue | 51 +- webapp/src/components/Drag/index.js | 28 +- .../src/components/DropdownHeader/index.vue | 69 +- webapp/src/components/Exception/index.vue | 28 +- webapp/src/components/Hamburger/index.vue | 27 +- webapp/src/components/IconFont/icon.js | 50 +- webapp/src/components/IconFont/iconfont.js | 45 +- webapp/src/components/IconFont/index.js | 30 +- webapp/src/components/IconFont/utils.js | 29 +- webapp/src/components/ImageGallery/index.vue | 132 +- webapp/src/components/InfoAlert/index.vue | 44 + webapp/src/components/InfoRadio/index.js | 19 + .../src/components/InfoRadio/info-radio.vue | 111 + webapp/src/components/InfoSelect/index.js | 28 +- .../src/components/InfoSelect/info-select.vue | 73 +- webapp/src/components/InfoTable/column.js | 30 +- webapp/src/components/InfoTable/index.js | 28 +- .../src/components/InfoTable/info-table.vue | 73 +- .../src/components/InlineTableEdit/index.vue | 46 +- webapp/src/components/LogContainer/index.vue | 75 +- .../LogContainer/podLogContainer.vue | 217 +- webapp/src/components/LoginPublic/index.vue | 57 +- webapp/src/components/MsgPopover/index.vue | 50 + webapp/src/components/PodMonitor/index.vue | 498 +++ webapp/src/components/PodMonitor/util.js | 147 + webapp/src/components/Prism/index.vue | 44 +- webapp/src/components/ProTable/header.vue | 127 + webapp/src/components/ProTable/index.vue | 420 +++ webapp/src/components/SearchBox/index.vue | 245 ++ webapp/src/components/SortingMenu/index.vue | 54 +- .../components/Training/algorithmDetail.vue | 69 +- .../Training/dataSourceSelector.vue | 77 +- webapp/src/components/Training/jobForm.vue | 596 +-- webapp/src/components/Training/paramPair.vue | 47 +- .../src/components/Training/runParamForm.vue | 92 +- .../components/Training/saveModelDialog.vue | 208 +- .../src/components/UploadForm/FileFilter.js | 28 +- webapp/src/components/UploadForm/form.js | 111 +- webapp/src/components/UploadForm/index.vue | 100 +- webapp/src/components/UploadForm/inline.vue | 65 +- webapp/src/components/UploadForm/style.scss | 1 + webapp/src/components/UploadForm/util.js | 128 +- .../src/components/UploadProgress/index.vue | 44 +- webapp/src/components/WaveSurfer/index.vue | 222 ++ webapp/src/components/ZoomContainer/index.vue | 92 +- webapp/src/components/editor/index.vue | 98 + webapp/src/components/svg/brush/Brush.js | 109 +- .../src/components/svg/brush/BrushCorner.js | 87 +- .../src/components/svg/brush/BrushHandle.js | 68 +- .../components/svg/brush/BrushSelection.js | 32 +- webapp/src/components/svg/brush/index.js | 28 +- webapp/src/components/svg/group/index.js | 54 +- webapp/src/components/svg/index.js | 28 +- webapp/src/components/textEditor.vue | 67 +- webapp/src/config/index.js | 53 +- webapp/src/directives/index.js | 28 +- webapp/src/directives/modules/clickOnce.js | 44 +- .../directives/modules/elSelectLoadMore.js | 28 +- webapp/src/directives/modules/mouseWheel.js | 37 +- webapp/src/hooks/brush/BasicBrush.js | 32 +- webapp/src/hooks/brush/index.js | 28 +- webapp/src/hooks/brush/useBrush.js | 36 +- webapp/src/hooks/dict/index.js | 80 + webapp/src/hooks/draw/index.js | 17 + webapp/src/hooks/draw/useDraw.js | 63 + webapp/src/hooks/image/index.js | 28 +- webapp/src/hooks/index.js | 34 +- webapp/src/hooks/localStorage/index.js | 38 + webapp/src/hooks/mapGetters/index.js | 30 + webapp/src/hooks/pagination/index.js | 71 + webapp/src/hooks/sort/index.js | 36 + webapp/src/hooks/tooltip/BasicTooltip.js | 34 +- webapp/src/hooks/tooltip/TooltipContainer.js | 30 +- webapp/src/hooks/tooltip/index.js | 28 +- webapp/src/hooks/tooltip/tableTooltip.js | 77 +- webapp/src/hooks/tooltip/useTooltip.js | 40 +- webapp/src/hooks/utils.js | 28 +- webapp/src/hooks/zoom/index.js | 28 +- webapp/src/hooks/zoom/useZoom.js | 52 +- webapp/src/layout/BaseLayout.vue | 147 +- webapp/src/layout/DatasetLayout.vue | 28 +- webapp/src/layout/DetailLayout.vue | 101 +- webapp/src/layout/FullpageLayout.vue | 28 +- webapp/src/layout/SubpageLayout.vue | 28 +- .../src/layout/components/AppMain/index.vue | 21 +- .../src/layout/components/Feedback/index.vue | 46 +- .../src/layout/components/Guideline/index.vue | 40 +- .../src/layout/components/Navbar/BackIcon.vue | 28 +- webapp/src/layout/components/Navbar/index.vue | 41 +- webapp/src/layout/components/Sidebar/Item.vue | 25 +- webapp/src/layout/components/Sidebar/Link.vue | 21 +- webapp/src/layout/components/Sidebar/Logo.vue | 25 +- .../layout/components/Sidebar/SidebarItem.vue | 37 +- .../src/layout/components/Sidebar/index.vue | 35 +- webapp/src/layout/components/index.js | 30 +- webapp/src/layout/index.vue | 28 +- webapp/src/layout/mixin/ResizeHandler.js | 28 +- webapp/src/lib/api-map/index.js | 47 + webapp/src/lib/api-map/util.js | 27 + webapp/src/main.js | 36 +- webapp/src/mixins/baseMixin.js | 28 +- webapp/src/mixins/datePickerMixin.js | 28 +- webapp/src/mixins/openNotebookMixin.js | 68 +- webapp/src/router/index.js | 94 +- webapp/src/router/modules/atlas.js | 68 - webapp/src/router/modules/cloudserving.js | 92 - webapp/src/router/modules/dashboard.js | 37 - webapp/src/router/modules/data.js | 265 -- webapp/src/router/modules/development.js | 56 - webapp/src/router/modules/index.js | 27 - webapp/src/router/modules/model.js | 80 - webapp/src/router/modules/system.js | 80 - webapp/src/router/modules/training.js | 80 - webapp/src/router/routes.js | 34 +- webapp/src/settings.js | 35 +- webapp/src/store/getters.js | 51 +- webapp/src/store/index.js | 28 +- webapp/src/store/modules/Visual/custom.js | 63 +- webapp/src/store/modules/Visual/embedding.js | 149 +- webapp/src/store/modules/Visual/exception.js | 94 +- webapp/src/store/modules/Visual/graph.js | 38 +- webapp/src/store/modules/Visual/hyperparm.js | 44 +- webapp/src/store/modules/Visual/layout.js | 186 +- webapp/src/store/modules/Visual/media.js | 28 +- webapp/src/store/modules/Visual/scalar.js | 52 +- webapp/src/store/modules/Visual/statistic.js | 114 +- webapp/src/store/modules/app.js | 30 +- webapp/src/store/modules/cloudServing.js | 28 +- webapp/src/store/modules/dataset.js | 28 +- webapp/src/store/modules/modelOptimize.js | 28 +- webapp/src/store/modules/settings.js | 38 +- webapp/src/store/modules/user.js | 127 +- webapp/src/utils/VisualUtils/api.js | 28 +- webapp/src/utils/VisualUtils/constants.js | 58 +- webapp/src/utils/VisualUtils/download.js | 34 +- webapp/src/utils/VisualUtils/request.js | 39 +- webapp/src/utils/auth.js | 33 +- webapp/src/utils/base.js | 119 +- webapp/src/utils/constant.js | 104 +- webapp/src/utils/download.js | 53 +- webapp/src/utils/event.js | 77 +- webapp/src/utils/index.js | 29 +- webapp/src/utils/minIO.js | 73 +- webapp/src/utils/operation.js | 21 + webapp/src/utils/request.js | 64 +- webapp/src/utils/rsaEncrypt.js | 28 +- webapp/src/utils/utils.js | 252 +- webapp/src/utils/validate.js | 122 +- webapp/src/utils/zip.js | 44 +- .../algorithm/components/algorithmForm.vue | 520 +++ webapp/src/views/algorithm/index.vue | 606 +--- webapp/src/views/algorithm/utils.js | 143 + .../views/atlas/components/measureForm.vue | 251 ++ webapp/src/views/atlas/graphList.vue | 73 +- webapp/src/views/atlas/graphVisual.vue | 136 +- webapp/src/views/atlas/measure.vue | 315 +- webapp/src/views/atlas/util.js | 41 +- webapp/src/views/cloudServing/batch.vue | 225 +- webapp/src/views/cloudServing/batchDetail.vue | 217 +- .../components/forms/batchServingForm.vue | 582 +-- .../components/forms/batchUploadDialog.vue | 74 +- .../components/forms/servingForm.vue | 149 +- .../components/forms/servingModelConfig.vue | 561 ++- .../components/keyValueTable/index.vue | 46 +- .../components/modelDetail/index.vue | 60 +- .../components/servingCallGuide/index.vue | 67 +- .../servingCallGuide/servingApiInfo.vue | 33 +- .../servingDeploymentRecord/index.vue | 88 +- .../components/servingLog/index.vue | 119 +- .../components/servingMonitor/index.vue | 74 +- .../servingMonitor/servingMonitorCard.vue | 103 +- .../servingMonitorUsageUnit.vue | 30 +- .../components/servingPredict/index.vue | 85 +- webapp/src/views/cloudServing/detail.vue | 155 +- webapp/src/views/cloudServing/formPage.vue | 115 +- webapp/src/views/cloudServing/index.vue | 217 +- webapp/src/views/cloudServing/util.js | 103 +- .../views/dashboard/components/CardPanel.vue | 32 +- .../views/dashboard/components/Welcome.vue | 59 +- webapp/src/views/dashboard/dashboard.vue | 54 +- webapp/src/views/dataset/annotate/index.vue | 440 ++- .../annotate/settingContainer/annotations.vue | 127 +- .../annotate/settingContainer/editLabel.vue | 52 +- .../annotate/settingContainer/enhance.vue | 127 +- .../annotate/settingContainer/enhanceTip.vue | 31 +- .../annotate/settingContainer/footer.vue | 31 +- .../annotate/settingContainer/index.vue | 204 +- .../annotate/settingContainer/label.vue | 36 +- .../settingContainer/labelList/edit.vue | 68 +- .../settingContainer/labelList/index.vue | 89 +- .../annotate/settingContainer/labelTip.vue | 37 +- .../annotate/settingContainer/selectLabel.vue | 70 +- .../dataset/annotate/thumbContainer/index.vue | 252 +- .../dataset/annotate/thumbContainer/list.vue | 69 +- .../annotate/thumbContainer/listItem.js | 28 +- .../workSpaceContainer/annotationId.js | 53 +- .../annotate/workSpaceContainer/bbox.js | 41 +- .../workSpaceContainer/bboxWrapper.js | 366 +- .../annotate/workSpaceContainer/brushTip.js | 62 +- .../workSpaceContainer/dropdownLabel/index.js | 49 +- .../annotate/workSpaceContainer/index.vue | 686 ++-- .../annotate/workSpaceContainer/score.js | 48 +- .../workSpaceContainer/segmentation/index.vue | 489 +++ .../segmentation/polygon.js | 321 ++ .../segmentation/polyline.js | 66 + .../segmentation/selection.js | 166 + .../segmentation/vertice.js | 150 + .../annotate/workSpaceContainer/tag.js | 69 +- .../annotate/workSpaceContainer/toolbar.vue | 48 +- .../views/dataset/audio/annotation/index.vue | 524 +++ .../views/dataset/audio/list/AudioCards.vue | 245 ++ webapp/src/views/dataset/audio/list/index.vue | 583 +++ .../dataset/audio/workspace/audioClassify.vue | 227 ++ .../views/dataset/audio/workspace/index.vue | 46 + .../audio/workspace/speechRecognition.vue | 226 ++ webapp/src/views/dataset/classify.vue | 477 ++- .../labelEditor/index.vue} | 85 +- .../dataset/components/picInfoModal/index.vue | 53 +- .../dataset/components/searchLabel/index.vue | 39 +- .../views/dataset/components/tenant/index.vue | 49 +- .../components/textInfoModal/index.vue | 155 +- .../views/dataset/custom/GridTable/index.vue | 127 + webapp/src/views/dataset/custom/index.vue | 590 +++ webapp/src/views/dataset/entrance.vue | 116 +- webapp/src/views/dataset/fork.vue | 34 +- webapp/src/views/dataset/list/action.js | 371 +- .../src/views/dataset/list/create-dataset.vue | 886 ++--- .../src/views/dataset/list/data-enhance.vue | 68 +- .../src/views/dataset/list/edit-dataset.vue | 247 +- .../src/views/dataset/list/import-dataset.vue | 416 ++- webapp/src/views/dataset/list/index.vue | 449 ++- webapp/src/views/dataset/list/publish.vue | 41 +- webapp/src/views/dataset/list/status.js | 61 +- .../views/dataset/list/upload-datafile.vue | 276 +- webapp/src/views/dataset/medical/action.js | 55 +- webapp/src/views/dataset/medical/constant.js | 50 +- .../views/dataset/medical/create-dataset.vue | 136 +- .../views/dataset/medical/edit-dataset.vue | 62 +- .../src/views/dataset/medical/lib/actions.js | 42 +- webapp/src/views/dataset/medical/lib/gui.js | 28 +- webapp/src/views/dataset/medical/lib/index.js | 158 +- webapp/src/views/dataset/medical/list.vue | 221 +- webapp/src/views/dataset/medical/status.js | 61 +- .../views/dataset/medical/viewer/action.vue | 169 +- .../views/dataset/medical/viewer/controls.vue | 51 +- .../views/dataset/medical/viewer/helpInfo.vue | 114 +- .../views/dataset/medical/viewer/index.vue | 239 +- .../dataset/medical/viewer/infoLayer.vue | 127 +- .../dataset/medical/viewer/lesionInfo.vue | 93 +- .../views/dataset/medical/viewer/toolbar.vue | 50 +- .../dataset/medical/viewer/toolbarButton.vue | 69 +- .../dataset/medical/viewer/toolbarItem.js | 52 +- .../dataset/medical/viewer/toolbarMore.vue | 56 +- .../views/dataset/nlp/annotation/index.vue | 357 +- .../dataset/nlp/annotation/sidebar/index.vue | 71 +- .../nlp/annotation/sidebar/labelList.vue | 190 +- .../nlp/annotation/workspace/index.vue | 174 +- .../dataset/nlp/annotation/workspace/ner.vue | 365 ++ .../nlp/annotation/workspace/textClassify.vue | 222 ++ .../annotation/workspace/textSegmentation.vue | 304 ++ .../nlp/{textClassify => list}/action.js | 36 +- webapp/src/views/dataset/nlp/list/index.vue | 719 ++++ .../views/dataset/nlp/textClassify/index.vue | 597 --- .../dataset/nlp/textClassify/textStatus.js | 71 - webapp/src/views/dataset/nlp/util.js | 44 + webapp/src/views/dataset/style/common.scss | 61 + webapp/src/views/dataset/style/list.scss | 13 + .../src/views/dataset/tableImport/index.vue | 357 ++ .../views/dataset/tableImport/previewer.vue | 209 ++ .../src/views/dataset/tableImport/result.vue | 78 + .../views/dataset/tableImport/uploader.vue | 112 + webapp/src/views/dataset/util.js | 390 -- webapp/src/views/dataset/util/index.js | 583 +++ webapp/src/views/dataset/util/tableReader.js | 51 + webapp/src/views/dataset/version/actions.vue | 161 +- webapp/src/views/dataset/version/convert.vue | 97 + webapp/src/views/dataset/version/index.vue | 197 +- .../development/components/CreateDialog.vue | 295 +- .../development/components/NotebookDetail.vue | 70 +- webapp/src/views/development/notebook.vue | 247 +- webapp/src/views/home/imagePublic.vue | 36 +- webapp/src/views/home/index.vue | 77 +- webapp/src/views/labelGroup/dynamicField.vue | 156 +- webapp/src/views/labelGroup/index.vue | 172 +- .../src/views/labelGroup/labelGroupAction.js | 56 +- .../src/views/labelGroup/labelGroupForm.vue | 424 ++- webapp/src/views/labelGroup/util.js | 25 - webapp/src/views/login.vue | 67 +- .../views/model/components/addModelDialog.vue | 420 +-- .../model/components/createModelForm.vue | 253 ++ .../views/model/components/modelUploader.vue | 156 + .../views/model/components/packageForm.vue | 221 ++ webapp/src/views/model/index.vue | 344 +- webapp/src/views/model/util.js | 50 + webapp/src/views/model/version.vue | 362 +- .../modelOptimize/components/builtInForm.vue | 66 +- .../components/customizeForm.vue | 142 +- .../modelOptimize/components/optimizeForm.vue | 84 +- .../components/optimizeResult.vue | 56 +- .../components/quickUploadPopover.vue | 93 +- .../modelOptimize/components/recordDetail.vue | 40 +- webapp/src/views/modelOptimize/index.vue | 200 +- webapp/src/views/modelOptimize/record.vue | 238 +- webapp/src/views/modelOptimize/util.js | 36 +- webapp/src/views/register.vue | 216 +- webapp/src/views/resetpassword.vue | 148 +- .../authCode/components/authCodeForm.vue | 174 + .../authCode/components/permissionForm.vue | 193 + webapp/src/views/system/authCode/index.vue | 456 +++ webapp/src/views/system/authCode/utils.js | 154 + webapp/src/views/system/dict/dictDetail.vue | 65 +- webapp/src/views/system/dict/index.vue | 65 +- webapp/src/views/system/menu/index.vue | 376 ++ webapp/src/views/system/node/index.vue | 263 +- webapp/src/views/system/recycle/index.vue | 248 ++ webapp/src/views/system/recycle/utils.js | 34 + webapp/src/views/system/resources/index.vue | 241 ++ webapp/src/views/system/resources/utils.js | 155 + webapp/src/views/system/role/index.vue | 288 +- webapp/src/views/system/user/index.vue | 130 +- webapp/src/views/system/userGroup/index.vue | 539 +++ webapp/src/views/system/userGroup/utils.js | 198 + webapp/src/views/trainingImage/index.vue | 266 +- webapp/src/views/trainingJob/add.vue | 44 +- .../trainingJob/components/jobDetail.vue | 209 +- .../trainingJob/components/jobDrawer.vue | 337 +- .../trainingJob/components/logDialog.vue | 246 ++ .../components/pathSelectDialog.vue | 109 +- webapp/src/views/trainingJob/detail.vue | 304 +- webapp/src/views/trainingJob/index.vue | 59 +- webapp/src/views/trainingJob/jobList.vue | 118 +- webapp/src/views/trainingJob/jobParam.vue | 62 +- .../views/trainingJob/trainingVisualList.vue | 79 + webapp/src/views/trainingJob/utils.js | 191 +- webapp/src/views/user/center.vue | 105 +- .../src/views/user/components/updateEmail.vue | 150 +- .../src/views/user/components/updatePass.vue | 99 +- webapp/src/views/visual/Layout.vue | 3232 ++++++++++------- .../views/visual/Visual/customs/Category.vue | 113 +- .../views/visual/Visual/customs/Customs.vue | 133 +- .../visual/Visual/customs/CustomsPanel.vue | 182 +- .../src/views/visual/Visual/customs/index.js | 28 +- .../Visual/embeddings/EmbeddingDraw.vue | 284 +- .../visual/Visual/embeddings/Embeddings.vue | 75 +- .../Visual/embeddings/EmbeddingsPanel.vue | 565 +-- .../views/visual/Visual/embeddings/index.js | 28 +- .../visual/Visual/exception/Exception.vue | 64 +- .../Visual/exception/ExceptionPanel.vue | 106 +- .../Visual/exception/excepContainer.vue | 728 ++-- .../views/visual/Visual/exception/index.js | 28 +- .../views/visual/Visual/features/Features.vue | 40 +- .../visual/Visual/features/FeaturesPanel.vue | 34 +- .../src/views/visual/Visual/features/index.js | 28 +- .../src/views/visual/Visual/graphs/Graphs.vue | 2121 +++++++---- .../visual/Visual/graphs/GraphsPanel.vue | 659 ++-- .../src/views/visual/Visual/graphs/index.js | 28 +- .../visual/Visual/hyperparms/HyperPara.vue | 432 ++- .../visual/Visual/hyperparms/Hyperparms.vue | 34 +- .../Visual/hyperparms/HyperparmsPanel.vue | 111 +- .../views/visual/Visual/hyperparms/index.js | 28 +- .../src/views/visual/Visual/medias/Medias.vue | 119 +- .../visual/Visual/medias/MediasPanel.vue | 121 +- .../visual/Visual/medias/audio/Audios.vue | 322 +- .../audio/audioContainer/AudioContainer.vue | 300 +- .../audio/audioContainer/CustomAudio.vue | 166 +- .../medias/audio/audioContainer/index.js | 28 +- .../views/visual/Visual/medias/audio/index.js | 28 +- .../visual/Visual/medias/image/Images.vue | 317 +- .../image/imagecontainer/ImageContainer.vue | 297 +- .../medias/image/imagecontainer/index.js | 28 +- .../views/visual/Visual/medias/image/index.js | 28 +- .../src/views/visual/Visual/medias/index.js | 28 +- .../views/visual/Visual/medias/text/Texts.vue | 310 +- .../views/visual/Visual/medias/text/index.js | 28 +- .../text/textContainer/TextContainer.vue | 329 +- .../Visual/medias/text/textContainer/index.js | 28 +- webapp/src/views/visual/Visual/rocs/ROCs.vue | 46 +- .../views/visual/Visual/rocs/ROCsPanel.vue | 40 +- webapp/src/views/visual/Visual/rocs/index.js | 28 +- .../views/visual/Visual/scalars/Scalars.vue | 92 +- .../visual/Visual/scalars/ScalarsPanel.vue | 71 +- .../src/views/visual/Visual/scalars/index.js | 28 +- .../scalarcontainer/ScalarContainer.vue | 174 +- .../scalars/scalarcontainer/ScalarCustom.vue | 158 +- .../Visual/scalars/scalarcontainer/index.js | 28 +- .../scalarchart/Scalarchart.vue | 1202 +++--- .../scalarcontainer/scalarchart/index.js | 28 +- .../Visual/scalars/subscalar/SubScalars.vue | 86 +- .../visual/Visual/scalars/subscalar/index.js | 28 +- .../visual/Visual/statistics/Statistics.vue | 43 +- .../Visual/statistics/StatisticsPanel.vue | 39 +- .../statistics/drawStatistic/HisOrtho.vue | 117 +- .../statistics/drawStatistic/HisOverlook.vue | 80 +- .../statistics/drawStatistic/HisThreeD.vue | 147 +- .../Visual/statistics/drawStatistic/index.js | 28 +- .../drawStatistic/statisticContainer.vue | 108 +- .../views/visual/Visual/statistics/index.js | 28 +- .../statistics/substatistic/SubStatistics.vue | 92 +- .../Visual/statistics/substatistic/index.js | 28 +- webapp/vue.config.js | 3 +- webapp/yarn.lock | 2272 +++++++----- 475 files changed, 41766 insertions(+), 22282 deletions(-) rename webapp/mock/api/{ => v1}/data/datasets/count.js (56%) create mode 100644 webapp/mock/api/v1/train/trainJobDelete.js create mode 100644 webapp/src/api/system/authCode.js create mode 100644 webapp/src/api/system/menu.js create mode 100644 webapp/src/api/system/permission.js create mode 100644 webapp/src/api/system/recycle.js create mode 100644 webapp/src/api/system/resources.js create mode 100644 webapp/src/api/system/userGroup.js create mode 100644 webapp/src/assets/images/dataset/annotate.png create mode 100644 webapp/src/assets/images/dataset/audioClassify.png create mode 100644 webapp/src/assets/images/dataset/body.png create mode 100644 webapp/src/assets/images/dataset/classify.png create mode 100644 webapp/src/assets/images/dataset/custom.png create mode 100644 webapp/src/assets/images/dataset/ner.png create mode 100644 webapp/src/assets/images/dataset/nodule.png create mode 100644 webapp/src/assets/images/dataset/segmentation.png create mode 100644 webapp/src/assets/images/dataset/speechRecognition.png create mode 100644 webapp/src/assets/images/dataset/tabular-2.png create mode 100644 webapp/src/assets/images/dataset/textclassify.png create mode 100644 webapp/src/assets/images/dataset/textsegmentation.png create mode 100644 webapp/src/assets/images/dataset/track.png create mode 100644 webapp/src/components/BaseForm/index.vue create mode 100644 webapp/src/components/BaseTable/index.vue create mode 100644 webapp/src/components/InfoAlert/index.vue create mode 100644 webapp/src/components/InfoRadio/index.js create mode 100644 webapp/src/components/InfoRadio/info-radio.vue create mode 100644 webapp/src/components/MsgPopover/index.vue create mode 100644 webapp/src/components/PodMonitor/index.vue create mode 100644 webapp/src/components/PodMonitor/util.js create mode 100644 webapp/src/components/ProTable/header.vue create mode 100644 webapp/src/components/ProTable/index.vue create mode 100644 webapp/src/components/SearchBox/index.vue create mode 100644 webapp/src/components/WaveSurfer/index.vue create mode 100644 webapp/src/components/editor/index.vue create mode 100644 webapp/src/hooks/dict/index.js create mode 100644 webapp/src/hooks/draw/index.js create mode 100644 webapp/src/hooks/draw/useDraw.js create mode 100644 webapp/src/hooks/localStorage/index.js create mode 100644 webapp/src/hooks/mapGetters/index.js create mode 100644 webapp/src/hooks/pagination/index.js create mode 100644 webapp/src/hooks/sort/index.js create mode 100644 webapp/src/lib/api-map/index.js create mode 100644 webapp/src/lib/api-map/util.js delete mode 100644 webapp/src/router/modules/atlas.js delete mode 100644 webapp/src/router/modules/cloudserving.js delete mode 100644 webapp/src/router/modules/dashboard.js delete mode 100644 webapp/src/router/modules/data.js delete mode 100644 webapp/src/router/modules/development.js delete mode 100644 webapp/src/router/modules/index.js delete mode 100644 webapp/src/router/modules/model.js delete mode 100644 webapp/src/router/modules/system.js delete mode 100644 webapp/src/router/modules/training.js create mode 100644 webapp/src/utils/operation.js create mode 100644 webapp/src/views/algorithm/components/algorithmForm.vue create mode 100644 webapp/src/views/algorithm/utils.js create mode 100644 webapp/src/views/atlas/components/measureForm.vue create mode 100644 webapp/src/views/dataset/annotate/workSpaceContainer/segmentation/index.vue create mode 100644 webapp/src/views/dataset/annotate/workSpaceContainer/segmentation/polygon.js create mode 100644 webapp/src/views/dataset/annotate/workSpaceContainer/segmentation/polyline.js create mode 100644 webapp/src/views/dataset/annotate/workSpaceContainer/segmentation/selection.js create mode 100644 webapp/src/views/dataset/annotate/workSpaceContainer/segmentation/vertice.js create mode 100644 webapp/src/views/dataset/audio/annotation/index.vue create mode 100644 webapp/src/views/dataset/audio/list/AudioCards.vue create mode 100644 webapp/src/views/dataset/audio/list/index.vue create mode 100644 webapp/src/views/dataset/audio/workspace/audioClassify.vue create mode 100644 webapp/src/views/dataset/audio/workspace/index.vue create mode 100644 webapp/src/views/dataset/audio/workspace/speechRecognition.vue rename webapp/src/views/dataset/{nlp/annotation/sidebar/add.vue => components/labelEditor/index.vue} (51%) create mode 100644 webapp/src/views/dataset/custom/GridTable/index.vue create mode 100644 webapp/src/views/dataset/custom/index.vue create mode 100644 webapp/src/views/dataset/nlp/annotation/workspace/ner.vue create mode 100644 webapp/src/views/dataset/nlp/annotation/workspace/textClassify.vue create mode 100644 webapp/src/views/dataset/nlp/annotation/workspace/textSegmentation.vue rename webapp/src/views/dataset/nlp/{textClassify => list}/action.js (62%) create mode 100644 webapp/src/views/dataset/nlp/list/index.vue delete mode 100644 webapp/src/views/dataset/nlp/textClassify/index.vue delete mode 100644 webapp/src/views/dataset/nlp/textClassify/textStatus.js create mode 100644 webapp/src/views/dataset/nlp/util.js create mode 100644 webapp/src/views/dataset/style/common.scss create mode 100644 webapp/src/views/dataset/tableImport/index.vue create mode 100644 webapp/src/views/dataset/tableImport/previewer.vue create mode 100644 webapp/src/views/dataset/tableImport/result.vue create mode 100644 webapp/src/views/dataset/tableImport/uploader.vue delete mode 100644 webapp/src/views/dataset/util.js create mode 100644 webapp/src/views/dataset/util/index.js create mode 100644 webapp/src/views/dataset/util/tableReader.js create mode 100644 webapp/src/views/dataset/version/convert.vue delete mode 100644 webapp/src/views/labelGroup/util.js create mode 100644 webapp/src/views/model/components/createModelForm.vue create mode 100644 webapp/src/views/model/components/modelUploader.vue create mode 100644 webapp/src/views/model/components/packageForm.vue create mode 100644 webapp/src/views/model/util.js create mode 100644 webapp/src/views/system/authCode/components/authCodeForm.vue create mode 100644 webapp/src/views/system/authCode/components/permissionForm.vue create mode 100644 webapp/src/views/system/authCode/index.vue create mode 100644 webapp/src/views/system/authCode/utils.js create mode 100644 webapp/src/views/system/menu/index.vue create mode 100644 webapp/src/views/system/recycle/index.vue create mode 100644 webapp/src/views/system/recycle/utils.js create mode 100644 webapp/src/views/system/resources/index.vue create mode 100644 webapp/src/views/system/resources/utils.js create mode 100644 webapp/src/views/system/userGroup/index.vue create mode 100644 webapp/src/views/system/userGroup/utils.js create mode 100644 webapp/src/views/trainingJob/components/logDialog.vue create mode 100644 webapp/src/views/trainingJob/trainingVisualList.vue diff --git a/webapp/.env.development b/webapp/.env.development index bcbbe28..91ec4c6 100644 --- a/webapp/.env.development +++ b/webapp/.env.development @@ -3,8 +3,14 @@ ENV = 'development' # 默认BASE URL VUE_APP_BASE_API = '' -# minio -VUE_APP_MINIO_API = 'http://{HOST}/minio' +# 数据管理 +VUE_APP_DATA_API = '' + +# 训练可视化 +VUE_APP_VISUAL_API = '' + +# 用户 minio 访问地址 +VUE_APP_MINIO_API = '' # atlas 服务,需要单独部署 VUE_APP_ATLAS_HOST = '' @@ -14,6 +20,7 @@ VUE_APP_ATLAS_HOST = '' VUE_APP_DCM_API = 'http://{HOST}/dcm4chee/dcm4chee-arc/aets/DCM4CHEE_ADMIN' # minIO 服务 IP +# 部署文档参考:http://docs.dubhe.ai/docs/setup/deploy-minio VUE_APP_MINIO_ENDPOINT = '' # minIO 服务 端口 @@ -23,4 +30,7 @@ VUE_APP_MINIO_PORT = '9000' VUE_APP_MINIO_USESSL = 'false' # bucketName -VUE_APP_MINIO_BUCKETNAME = 'dubhe-dev' +VUE_APP_MINIO_BUCKETNAME = 'dubhe-cloud-dev' + +# 文档链接 +VUE_APP_DOCS_URL = http://docs.dubhe.ai/docs/ \ No newline at end of file diff --git a/webapp/.env.mock b/webapp/.env.mock index dadee4d..147443d 100644 --- a/webapp/.env.mock +++ b/webapp/.env.mock @@ -5,9 +5,16 @@ VUE_APP_MOCK=true # 默认BASE URL,需要自行配置 VUE_APP_BASE_API = '/mock' +VUE_APP_DATA_API = '/mock' + +# 训练可视化 +VUE_APP_VISUAL_API = '' # 用户 minio 访问地址 -VUE_APP_MINIO_API = 'http://{HOST}/minio' +VUE_APP_MINIO_API = '' + +# atlas +VUE_APP_ATLAS_HOST = '' # minIO 服务 IP VUE_APP_MINIO_ENDPOINT = '' @@ -19,4 +26,7 @@ VUE_APP_MINIO_PORT = '9000' VUE_APP_MINIO_USESSL = 'false' # bucketName -VUE_APP_MINIO_BUCKETNAME = 'dubhe-dev' +VUE_APP_MINIO_BUCKETNAME = 'dubhe-cloud-dev' + +# 文档链接 +VUE_APP_DOCS_URL = http://docs.dubhe.ai/docs/ diff --git a/webapp/.env.production b/webapp/.env.production index 8df70ee..a23c957 100644 --- a/webapp/.env.production +++ b/webapp/.env.production @@ -1,13 +1,19 @@ ENV = 'production' # 默认BASE URL, 后端服务地址 -VUE_APP_BASE_API = 'http://127.0.0.1:8000' +VUE_APP_BASE_API = '' + +# 数据管理 +VUE_APP_DATA_API = '' + +# 训练可视化 +VUE_APP_VISUAL_API = '' # 用户 minio 访问地址 -VUE_APP_MINIO_API = 'http://{HOST}/minio' +VUE_APP_MINIO_API = '' # atlas 服务,需要单独部署 -VUE_APP_ATLAS_HOST = 'http://127.0.0.1:8000' +VUE_APP_ATLAS_HOST = '' # 医疗影像 DCM4CHEE 服务访问地址 # 部署文档参考:http://docs.dubhe.ai/docs/setup/deploy-algorithm @@ -15,7 +21,7 @@ VUE_APP_DCM_API = 'http://{HOST}/dcm4chee/dcm4chee-arc/aets/DCM4CHEE_ADMIN' # minIO 服务 IP # 部署文档参考:http://docs.dubhe.ai/docs/setup/deploy-minio -VUE_APP_MINIO_ENDPOINT = '{IP}' +VUE_APP_MINIO_ENDPOINT = '' # minIO 服务 端口 VUE_APP_MINIO_PORT = '9000' @@ -25,3 +31,6 @@ VUE_APP_MINIO_USESSL = 'false' # bucketName VUE_APP_MINIO_BUCKETNAME = 'dubhe-prod' + +# 文档链接 +VUE_APP_DOCS_URL = http://docs.dubhe.ai/docs/ diff --git a/webapp/.env.test b/webapp/.env.test index f4d80b0..668ac96 100644 --- a/webapp/.env.test +++ b/webapp/.env.test @@ -3,6 +3,12 @@ ENV = 'test' # 默认BASE URL VUE_APP_BASE_API = '' +# 数据管理 +VUE_APP_DATA_API = '' + +# 训练可视化 +VUE_APP_VISUAL_API = '' + # 用户 minio 访问地址 VUE_APP_MINIO_API = '' @@ -14,6 +20,7 @@ VUE_APP_ATLAS_HOST = '' VUE_APP_DCM_API = 'http://{HOST}/dcm4chee/dcm4chee-arc/aets/DCM4CHEE_ADMIN' # minIO 服务 IP +# 部署文档参考:http://docs.dubhe.ai/docs/setup/deploy-minio VUE_APP_MINIO_ENDPOINT = '' # minIO 服务 端口 @@ -23,5 +30,7 @@ VUE_APP_MINIO_PORT = '9000' VUE_APP_MINIO_USESSL = 'false' # BucketName -VUE_APP_MINIO_BUCKETNAME = 'dubhe-test' +VUE_APP_MINIO_BUCKETNAME = 'dubhe-cloud-test' +# 文档链接 +VUE_APP_DOCS_URL = http://docs.dubhe.ai/docs/ diff --git a/webapp/.eslintignore b/webapp/.eslintignore index 5f8e217..8b78211 100644 --- a/webapp/.eslintignore +++ b/webapp/.eslintignore @@ -3,4 +3,6 @@ src/assets public dist src/components/Crud -mock \ No newline at end of file +mock +src/views/visual +src/store/modules/Visual \ No newline at end of file diff --git a/webapp/.eslintrc.js b/webapp/.eslintrc.js index cc4ae86..5045eef 100644 --- a/webapp/.eslintrc.js +++ b/webapp/.eslintrc.js @@ -19,53 +19,29 @@ module.exports = { } }, rules: { - "comma-dangle": [2, "always-multiline"], - "no-var": "error", - "no-console": [2, { allow: ["warn", "error"] }], - "no-restricted-syntax": "off", + 'prettier/prettier': [ + 'error', + { + printWidth: 100, + semi: true, + singleQuote: true, + trailingComma: 'es5', + endOfLine: 'auto', + arrowParens: 'always', + }, + ], + 'vue/require-default-prop': 'off', + 'vue/attribute-hyphenation': 'off', + 'no-console': ['error', { allow: ['warn', 'error', 'info'] }], + 'no-param-reassign': 'off', + 'import/extensions': 'off', + 'import/prefer-default-export': 'off', + "no-shadow": "off", "no-underscore-dangle": "off", + "no-unused-expressions": "off", + "no-restricted-syntax": "off", "guard-for-in": "off", - "object-shorthand": 2, - "consistent-return": "off", + "camelcase": "off", "no-multi-assign": "off", - "no-shadow": "off", - "no-restricted-globals": "off", - "no-restricted-properties": "off", - "no-prototype-builtins": "off", - "no-unused-vars": [ - 2, - { ignoreRestSiblings: true, argsIgnorePattern: "^h$" } - ], - "import/prefer-default-export": "off", - 'import/extensions': ['error', 'always', { - 'js': 'never', - 'vue': 'never' - }], - "no-unused-expressions": "off", - "no-undef": 2, - camelcase: "off", - "no-extra-boolean-cast": "off", - "no-param-reassign":"off", - semi: ["error", "always"], - "vue/require-prop-types": "off", - "vue/require-default-prop": "off", - "vue/no-reserved-keys": "off", - "vue/attribute-hyphenation": "off", - "vue/comment-directive": "off", - "vue/prop-name-casing": "off", - "vue/max-attributes-per-line": [2, { - singleline: 20, - multiline: { - max: 1, - allowFirstLine: false - }} - ], - "vue/html-indent": ["error", 2, { - "attribute": 1, - "baseIndent": 1, - "closeBracket": 0, - "alignAttributesVertically": true, - "ignores": [] - }] } }; diff --git a/webapp/mock/api/data/datasets/count.js b/webapp/mock/api/v1/data/datasets/count.js similarity index 56% rename from webapp/mock/api/data/datasets/count.js rename to webapp/mock/api/v1/data/datasets/count.js index 8483a4d..b3a3d55 100644 --- a/webapp/mock/api/data/datasets/count.js +++ b/webapp/mock/api/v1/data/datasets/count.js @@ -2,7 +2,7 @@ module.exports = { code: 200, msg: null, data: { - "finished": 10, - "unfinished": 0 + "publicCount": 10, + "privateCount": 0 } } \ No newline at end of file diff --git a/webapp/mock/api/v1/train/trainJobDelete.js b/webapp/mock/api/v1/train/trainJobDelete.js new file mode 100644 index 0000000..d0d833d --- /dev/null +++ b/webapp/mock/api/v1/train/trainJobDelete.js @@ -0,0 +1,8 @@ +module.exports = { + code: 200, + msg: null, + data: { + "trainId": 607, + "id": 1204 + }, +} diff --git a/webapp/mock/mock-map.js b/webapp/mock/mock-map.js index 383afe6..4fbd11e 100644 --- a/webapp/mock/mock-map.js +++ b/webapp/mock/mock-map.js @@ -1,4 +1,5 @@ // 定义 RESTful 接口和实际代码的映射 module.exports = { - 'GET::/api/data/datasets/(\\d+)/count': 'api/data/datasets/count', + 'GET::/api/v1/data/datasets/(\\d+)/count': 'api/v1/data/datasets/count', + 'DELETE::/api/v1/train/trainJob': 'api/v1/train/trainJobDelete', }; diff --git a/webapp/package.json b/webapp/package.json index 5ff6c1e..6ef83f6 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -13,6 +13,8 @@ "scripts": { "mock": "vue-cli-service serve --mode mock --open", "dev": "vue-cli-service serve --open", + "serve": "vue-cli-service serve --host 0.0.0.0", + "serve:test": "vue-cli-service serve --mode test --open", "build:prod": "vue-cli-service build", "build:test": "vue-cli-service build --mode test", "build:dev": "vue-cli-service build --mode development", @@ -40,9 +42,10 @@ "dependencies": { "@riophae/vue-treeselect": "0.1.0", "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", - "@vue/composition-api": "^0.5.0", + "@vue/composition-api": "^1.0.0-rc.1", "@wulucxy/dwv": "0.28.1-beta.9", "add-dom-event-listener": "^1.1.0", + "assert": "^2.0.0", "axios": "0.18.1", "chroma-js": "^2.1.0", "classnames": "^2.2.6", @@ -59,11 +62,11 @@ "element-ui": "2.13.2", "file-saver": "^2.0.2", "filereader-stream": "^2.0.0", + "immutability-helper": "^3.1.1", "jquery": "^3.5.1", "jquery-contextmenu": "^2.9.1", "js-beautify": "^1.13.0", "js-cookie": "2.2.0", - "jschardet": "^2.2.1", "jsencrypt": "^3.0.0-rc.1", "json2csv": "^5.0.1", "lodash": "^4.17.15", @@ -72,8 +75,10 @@ "normalize.css": "7.0.0", "nprogress": "0.2.0", "p-map": "^4.0.0", + "papaparse": "^5.3.0", "path-to-regexp": "^6.2.0", "portal-vue": "^2.1.7", + "prism-themes": "^1.5.0", "prismjs": "^1.20.0", "promise.allsettled": "^1.0.2", "qs": "^6.9.1", @@ -88,7 +93,10 @@ "vue-prism-component": "^1.2.0", "vue-prism-editor": "^1.2.2", "vue-router": "^3.0.2", - "vuex": "3.1.0" + "vuex": "3.1.0", + "wavesurfer.js": "^4.6.0", + "web-highlighter": "^0.7.1", + "xlsx": "^0.16.9" }, "devDependencies": { "@babel/core": "7.0.0", diff --git a/webapp/src/App.vue b/webapp/src/App.vue index b67cdaa..1d5fd8c 100644 --- a/webapp/src/App.vue +++ b/webapp/src/App.vue @@ -1,18 +1,18 @@ /** Copyright 2020 Tianshu AI Platform. All Rights Reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -* ============================================================= -*/ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================= + */