diff --git a/templates/repo/modelarts/trainjob/version_new.tmpl b/templates/repo/modelarts/trainjob/version_new.tmpl
index c95f5699a..ffc1045e8 100644
--- a/templates/repo/modelarts/trainjob/version_new.tmpl
+++ b/templates/repo/modelarts/trainjob/version_new.tmpl
@@ -55,7 +55,7 @@
{{template "repo/header" .}}
-
+
{{template "base/alert" .}}
-
+ {{template "custom/select_model" .}}
{{.i18n.Tr "repo.modelarts.train_job.AI_driver"}}
diff --git a/web_src/js/features/cloudbrainShow.js b/web_src/js/features/cloudbrainShow.js
index 73a8ed7b6..ac1263b9d 100644
--- a/web_src/js/features/cloudbrainShow.js
+++ b/web_src/js/features/cloudbrainShow.js
@@ -443,4 +443,134 @@ export default async function initCloudrainSow() {
html += "
";
$(`#dir_list${version_name}`).append(html);
}
+
+ let nameMap, nameList;
+ let RepoLink = $(".cloudbrain-type").data("repo-link");
+ let type = $(".cloudbrain-type").data("cloudbrain-type");
+ let flagModel = $(".cloudbrain-type").data("flag-model");
+ // 获取模型列表和模型名称对应的模型版本
+ $(document).ready(function () {
+ if (!flagModel) return;
+ else {
+ $.get(
+ `${RepoLink}/modelmanage/query_model_for_predict?type=${type}`,
+ (data) => {
+ nameMap = data.nameMap;
+ nameList = data.nameList;
+ let html = "";
+ nameList.forEach((element) => {
+ html += `
${element}
`;
+ });
+ if (nameList.length !== 0) {
+ $("#model_name").append(html);
+ }
+ let faildModelName = $('input[name="model_name"]').val();
+ let faildModelVersion = $('input[name="model_version"]').val();
+ let faildTrainUrl = $('input[name="pre_train_model_url"]').val();
+ let faildCkptName = $('input[name="ckpt_name"]').val();
+ // 新建错误的表单返回初始化
+ if (faildModelName) {
+ $("#select_model").dropdown("set text", faildModelName);
+ $("#select_model").dropdown("set value", faildModelName);
+ $("#select_model_version").dropdown("set text", faildModelVersion);
+ $("#select_model_version").dropdown("set value", faildTrainUrl);
+ $("#select_model_checkpoint").dropdown("set text", faildCkptName);
+ $("#select_model_checkpoint").dropdown("set value", faildCkptName);
+ }
+ }
+ );
+ }
+ $("#select_model").dropdown({
+ onChange: function (value, text, $selectedItem) {
+ $("#model_name_version").empty();
+ let html = "";
+ nameMap[value].forEach((element) => {
+ let { TrainTaskInfo } = element;
+ TrainTaskInfo = JSON.parse(TrainTaskInfo);
+ html += `
${element.Version}
`;
+ });
+ $("#model_name_version").append(html);
+ const initVersionText = $(
+ "#model_name_version div.item:first-child"
+ ).text();
+ const initVersionValue = $(
+ "#model_name_version div.item:first-child"
+ ).data("value");
+
+ $("#select_model_version").dropdown("set text", initVersionText);
+ $("#select_model_version").dropdown(
+ "set value",
+ initVersionValue,
+ initVersionText,
+ $("#model_name_version div.item:first-child")
+ );
+ },
+ });
+
+ $("#select_model_version").dropdown({
+ onChange: function (value, text, $selectedItem) {
+ const dataID =
+ $selectedItem && $selectedItem[0].getAttribute("data-id");
+ $("input#ai_model_version").val(text);
+ $("#select_model_checkpoint").addClass("loading");
+ $("#model_checkpoint").empty();
+ let html = "";
+ loadCheckpointList(dataID).then((res) => {
+ res.forEach((element) => {
+ const ckptSuffix = element.FileName.split(".");
+ const loadCheckpointFile = [
+ "ckpt",
+ "pb",
+ "h5",
+ "json",
+ "pkl",
+ "pth",
+ "t7",
+ "pdparams",
+ "onnx",
+ "pbtxt",
+ "keras",
+ "mlmodel",
+ "cfg",
+ "pt",
+ ];
+ if (
+ !element.IsDir &&
+ loadCheckpointFile.includes(ckptSuffix[ckptSuffix.length - 1])
+ ) {
+ html += `
${element.FileName}
`;
+ }
+ });
+ $("#model_checkpoint").append(html);
+ $("#select_model_checkpoint").removeClass("loading");
+ const initVersionText = $(
+ "#model_checkpoint div.item:first-child"
+ ).text();
+ const initVersionValue = $(
+ "#model_checkpoint div.item:first-child"
+ ).data("value");
+
+ $("#select_model_checkpoint").dropdown("set text", initVersionText);
+ $("#select_model_checkpoint").dropdown(
+ "set value",
+ initVersionValue,
+ initVersionText,
+ $("#model_name_version div.item:first-child")
+ );
+ });
+ },
+ });
+ });
+
+ function loadCheckpointList(value) {
+ return new Promise((resolve, reject) => {
+ $.get(
+ `${RepoLink}/modelmanage/query_modelfile_for_predict`,
+ { ID: value },
+ (data) => {
+ resolve(data);
+ }
+ );
+ });
+ }
}