#5418 fix-5395

Merged
chenshihai merged 3 commits from fix-5395 into V20240423 3 weeks ago
  1. +23
    -4
      web_src/js/components/Model.vue
  2. +10
    -1
      web_src/js/components/dataset/referenceDataset.vue
  3. +4
    -2
      web_src/js/features/i18nVue.js
  4. +16
    -11
      web_src/vuepages/components/CommonTipsDialog.vue
  5. +1
    -0
      web_src/vuepages/langs/config/en-US.js
  6. +1
    -0
      web_src/vuepages/langs/config/zh-CN.js
  7. +1
    -1
      web_src/vuepages/pages/cloudbrain/list/index.vue
  8. +1
    -1
      web_src/vuepages/pages/dataset/codedialog/index.vue
  9. +3
    -1
      web_src/vuepages/pages/modelmanage/components/ModelHeader.vue
  10. +21
    -4
      web_src/vuepages/pages/modelmanage/files/index.vue

+ 23
- 4
web_src/js/components/Model.vue View File

@@ -143,9 +143,8 @@
<a class="op-btn" style="color: #fa8c16;" v-show="repoIsPrivate == false && scope.row.isPrivate==false && scope.row.isCanOper" @click="
modifyModelStatus(scope.row.id, scope.row.cName, scope.row.rowKey,true)
">{{ i18n.modelaccess_setprivate }}</a>
<a class="op-btn"
:href="loadhref + scope.row.id"
@click="downloadAllModel(scope.row.size,scope.row.id)"
:class="{ disabled: !scope.row.isCanDownload }"
>{{ i18n.model_download }}</a>
<a class="op-btn"
@@ -173,15 +172,20 @@
</el-pagination>
</div>
</div>
<CommonTipsDialog ref="childModelTips" type="modelFile"
:promotePath="codeUsePromotePath" :title="i18n.codeDownDlgTitle"
:closeText="i18n.close">
</CommonTipsDialog>
</div>
</template>

<script>
import { modifyModelStatus } from '~/apis/modules/modelmanage';
import CommonTipsDialog from '~/components/CommonTipsDialog.vue';
const { _AppSubUrl, _StaticUrlPrefix, csrf } = window.config;
const REPOISPRIVATE = window.REPO_IS_PRIVATE;
export default {
components: {},
components: {CommonTipsDialog},
data() {
return {
curHref: window.location.href,
@@ -201,7 +205,8 @@ export default {
data: "",
timer: null,
timerFlag: false,
repoIsPrivate: REPOISPRIVATE,
repoIsPrivate: REPOISPRIVATE,
codeUsePromotePath: `tips/modelDown/sdkcode${ document.documentElement.attributes["lang"].nodeValue == "zh-CN" ? '' : '_en'}.md`,
};
},
methods: {
@@ -541,6 +546,20 @@ export default {
console.log(e);
}
},
downloadAllModel(size,id) {
if (size / (1024 * 1024) <= 500) {
let downloadElement = document.createElement('a')
let href = `${this.loadhref}${id}`
downloadElement.href = href
document.body.appendChild(downloadElement)
downloadElement.click() //点击下载
document.body.removeChild(downloadElement) //下载完成移除元素
} else {
this.$nextTick(() => {
this.$refs.childModelTips.handlerOpen()
})
}
}
},
computed: {
loadhref() {


+ 10
- 1
web_src/js/components/dataset/referenceDataset.vue View File

@@ -219,11 +219,14 @@
</template>

<el-dialog
:title="i18n.linked_datasets"
:visible.sync="dialogVisible"
:width="dialogWidth"
@closed="refreshData"
>
<template #title>
<span>{{ i18n.linked_datasets }}</span>
<span class="refer-data-tips"><span>*</span>{{ i18n.linked_datasets_tips }}</span>
</template>
<div class="ui icon input dataset-search-vue">
<i
class="search icon"
@@ -744,4 +747,10 @@ export default {
.disabled1 {
opacity: 0.45 !important;
}
.refer-data-tips {
margin-left: 2rem;
display: inline-block;
color: rgb(242, 113, 28);
font-size: 12px;
}
</style>

+ 4
- 2
web_src/js/features/i18nVue.js View File

@@ -40,6 +40,7 @@ export const i18nVue = {
speech_synthesis: "语音合成",
current_dataset: "当前数据集",
linked_datasets: "关联数据集",
linked_datasets_tips: "只能关联非本项目的公开的数据集",
unfavorite: "取消收藏",
favorite: "收藏",
disassociate: "取消关联",
@@ -149,7 +150,7 @@ export const i18nVue = {
warmPrompt: '温馨提示',
submittedSuccessfully: '提交成功!',
submittedFailed: '提交失败!',
codeDownDlgTitle: '如何在OpenI协作平台下载模型',
cloudeBrainMirror: {
cloud_brain_mirror: '云脑镜像',
public_mirror: '公开镜像',
@@ -284,6 +285,7 @@ export const i18nVue = {
speech_synthesis: "speech synthesis",
current_dataset: "Current Dataset",
linked_datasets: "Linked Datasets",
linked_datasets_tips: "Only can associate with publicly available datasets that are not part of this repo",
unfavorite: "UnLike",
favorite: "Like",
disassociate: "Unlink",
@@ -396,7 +398,7 @@ export const i18nVue = {
warmPrompt: 'Tips',
submittedSuccessfully: 'Submitted Successfully!',
submittedFailed: 'Submitted Failed!',
codeDownDlgTitle: 'How to download models on the OpenI',
cloudeBrainMirror: {
cloud_brain_mirror: 'Cloud Brain Mirror',
public_mirror: 'Public Mirror',


+ 16
- 11
web_src/vuepages/components/CommonTipsDialog.vue View File

@@ -5,16 +5,17 @@
<slot></slot>
</div>
<BaseDialog :visible="visible" :title="title" :show-close="showClose" @closed="closeDialog"
:appendToBody="appendToBody">
:appendToBody="appendToBody" >
<el-skeleton style=" padding:0 20px;" :rows="10" :loading="loading" animated/>
<div class="markdown" v-html="content"></div>
<div slot="footer" class="dialog-footer">
<el-button class="close-btn" size="default" type="success" @click="closeDialog">{{
$t('cloudbrainObj.dialogTips.tips8') }}</el-button>
<el-button class="close-btn" size="default" type="success" @click="closeDialog">
{{ closeText }}
</el-button>
</div>
</BaseDialog>
</div>
</template>

<script>
import BaseDialog from '~/components/BaseDialog.vue';
import { getPromoteData, getMarkdownHtml, getSDKCode } from '~/apis/modules/common';
@@ -29,7 +30,8 @@ export default {
promotePath: { type: String, default: '' },
appendToBody: { type: Boolean, default: false },
type: { type: String, default: '' },
data: { type: Object, default: () => ({}) }
data: { type: Object, default: () => ({}) },
closeText: { type: String, default: '' },
},
data() {
return {
@@ -55,23 +57,27 @@ export default {
codeEl.innerHTML = hljs.highlight('python', code).value;
const copyBtn = document.createElement('div');
copyBtn.classList = ['copy-btn'];
copyBtn.innerHTML = `<a href="javascript:;" class="ui poping inline up clipboard" id="clipboard-${this.sparkMD5Hash(txt)}"
data-position="top center" data-variation="inverted tiny" data-success="${this.$t('copySuccess')}"
data-content="${this.$t('copy')}" data-original="${this.$t('copy')}"
data-clipboard-text=""><i style="font-size:14px;" class="copy outline icon"></i></a>`;
copyBtn.querySelector('a').setAttribute('data-clipboard-text', txt);
if (this.type !== 'modelFile') {
copyBtn.innerHTML = `<a href="javascript:;" class="ui poping inline up clipboard" id="clipboard-${this.sparkMD5Hash(txt)}"
data-position="top center" data-variation="inverted tiny" data-success="${this.$t('copySuccess')}"
data-content="${this.$t('copy')}" data-original="${this.$t('copy')}"
data-clipboard-text=""><i style="font-size:14px;" class="copy outline icon"></i></a>`;
copyBtn.querySelector('a').setAttribute('data-clipboard-text', txt);
}
codeBlockI.outerHTML = `<div class="code-content">${codeBlockI.outerHTML}${copyBtn.outerHTML}</div>`;
}
return html.innerHTML;
},
getMarkdown(str) {
getMarkdownHtml(str).then(res => {
this.loading = false;
const html = res.data;
this.content = this.hljsAndInsertCopyButton(html);
this.$nextTick(() => {
initClipboard('.base-dlg .clipboard');
});
}).catch(err => {
this.loading = false;
console.log(err);
});
},
@@ -79,7 +85,6 @@ export default {
if (!this.promotePath) return;
this.loading = true;
getPromoteData(this.promotePath).then(res => {
this.loading = false;
let contentStr = res.data;
if (contentStr) {
if (this.type == 'model' && this.data.name) {


+ 1
- 0
web_src/vuepages/langs/config/en-US.js View File

@@ -460,6 +460,7 @@ const en = {
model_sdk_use_way: 'Model SDK use way',
codeUseDlgTriggerTxt: 'How to use models in OpenI',
codeUseDlgTitle: 'How to use models on the OpenI',
codeDownDlgTitle: 'How to download models on the OpenI',
model_not_equal_file: "Cannot select models with the same name.",
},
datasetObj: {


+ 1
- 0
web_src/vuepages/langs/config/zh-CN.js View File

@@ -476,6 +476,7 @@ const zh = {
model_sdk_use_way: '模型SDK使用方式',
codeUseDlgTriggerTxt: '在OpenI如何使用模型',
codeUseDlgTitle: '如何在OpenI协作平台使用模型',
codeDownDlgTitle: '如何在OpenI协作平台下载模型',
model_not_equal_file: "不能选择相同名称的模型",
},
datasetObj: {


+ 1
- 1
web_src/vuepages/pages/cloudbrain/list/index.vue View File

@@ -11,7 +11,7 @@
<div class="right-c">
<div class="use-code-c" v-if="tableData.length > 0">
<CommonTipsDialog type="cloudbrain" :promotePath="codeUsePromotePath"
:title="$t('cloudbrainObj.codeUseDlgTitle')">
:title="$t('cloudbrainObj.codeUseDlgTitle')" :closeText="$t('cloudbrainObj.dialogTips.tips8')">
<a class="use-dlg-btn">{{ $t('cloudbrainObj.codeUseDlgTriggerTxt') }}</a>
</CommonTipsDialog>
</div>


+ 1
- 1
web_src/vuepages/pages/dataset/codedialog/index.vue View File

@@ -1,6 +1,6 @@
<template>
<CommonTipsDialog type="dataset" :promotePath="promotePath" :appendToBody="true"
:title="$t('datasetObj.codeUseDlgTitle')">
:title="$t('datasetObj.codeUseDlgTitle')" :closeText="$t('cloudbrainObj.dialogTips.tips8')">
<a class="use-dlg-btn">{{ $t('datasetObj.codeUseDlgTriggerTxt') }}</a>
</CommonTipsDialog>
</template>


+ 3
- 1
web_src/vuepages/pages/modelmanage/components/ModelHeader.vue View File

@@ -14,7 +14,9 @@
<img src="/img/jian.svg" v-if="model.recommend == 1">
</div>
<div class="title-r">
<CommonTipsDialog type="model" :promotePath="promotePath" :title="$t('modelObj.codeUseDlgTitle')" :data="model">
<CommonTipsDialog type="model" :promotePath="promotePath"
:title="$t('modelObj.codeUseDlgTitle')" :data="model"
:closeText="$t('cloudbrainObj.dialogTips.tips8')">
<a class="use-dlg-btn">{{ $t('modelObj.codeUseDlgTriggerTxt') }}</a>
</CommonTipsDialog>
<div style="background: transparent;" v-if="!isCanDebug && !model.isPrivate">


+ 21
- 4
web_src/vuepages/pages/modelmanage/files/index.vue View File

@@ -32,8 +32,7 @@
</div>
</div>
<div class="right-btn-c">
<a class="download-btn" v-if="modelData.isCanDownload" download
:href="`${repoUrl}/modelmanage/downloadall?id=${modelData.id}`">
<a v-if="modelData.isCanDownload" @click="downloadAllModel(modelData.size,modelData.id)" class="download-btn">
{{ $t('modelManage.modelDownloadAll') }}
</a>
<el-button v-if="modelType == 1 && canOperate" type="primary" icon="el-icon-upload" @click="goUploadPage">
@@ -85,17 +84,19 @@
</div>
</div>
</div>
<CommonTipsDialog ref="childModelTips" type="modelFile" :promotePath="codeUsePromotePath" :title="$t('modelObj.codeDownDlgTitle')" :closeText="$t('cloudbrainObj.dialogTips.tips8')"></CommonTipsDialog>
</div>
</template>

<script>
import ModelHeader from '../components/ModelHeader.vue';
import NotFound from '~/components/NotFound.vue';
import CommonTipsDialog from '~/components/CommonTipsDialog.vue';
import { getModelInfoByName, getModelFiles, deleteModelFile } from '~/apis/modules/modelmanage';
import { getUrlSearchParams, getListValueWithKey, transFileSize, renderSpecStr } from '~/utils';
import { MODEL_ENGINES } from '~/const';
import { formatDate } from 'element-ui/lib/utils/date-util';
import { lang } from '~/langs';
export default {
data() {
return {
@@ -129,9 +130,11 @@ export default {
modelList: [],
filesList: [],
filePath: [],

codeUsePromotePath: `tips/modelDown/sdkcode${lang == 'zh-CN' ? '' : '_en'}.md`,
};
},
components: { ModelHeader, NotFound },
components: { ModelHeader, NotFound,CommonTipsDialog },
methods: {
getDirFiles(dir, usePath, tempFilePath) {
dir = dir.length ? dir.slice(1) : '';
@@ -289,6 +292,20 @@ export default {
console.log(err);
});
},
downloadAllModel(size,id) {
if (size / (1024 * 1024) <= 500) {
let downloadElement = document.createElement('a')
let href = `${this.repoUrl}/modelmanage/downloadall?id=${id}`
downloadElement.href = href
document.body.appendChild(downloadElement)
downloadElement.click() //点击下载
document.body.removeChild(downloadElement) //下载完成移除元素
} else {
this.$nextTick(() => {
this.$refs.childModelTips.handlerOpen()
})
}
}
},
beforeMount() {
const urlParams = getUrlSearchParams();


Loading…
Cancel
Save