Commit c5554013 authored by chenshouchao's avatar chenshouchao

feat: 新增应用环境联调完成

parent 7168b118
...@@ -1190,6 +1190,12 @@ ...@@ -1190,6 +1190,12 @@
"regenerator-runtime": "^0.13.4" "regenerator-runtime": "^0.13.4"
} }
}, },
"@babel/standalone": {
"version": "7.19.5",
"resolved": "https://registry.npmmirror.com/@babel/standalone/-/standalone-7.19.5.tgz",
"integrity": "sha512-H2eXpo1ZfTZhBwsCbfSKHrjTb934laSas14hdjULLSKmLxU4B7kazQKm3mjpDuH/HyPmRq1cbrGL7223M7EDFw==",
"dev": true
},
"@babel/template": { "@babel/template": {
"version": "7.16.7", "version": "7.16.7",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
...@@ -1231,6 +1237,87 @@ ...@@ -1231,6 +1237,87 @@
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
}, },
"@codemirror/autocomplete": {
"version": "6.3.0",
"resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.3.0.tgz",
"integrity": "sha512-4jEvh3AjJZTDKazd10J6ZsCIqaYxDMCeua5ouQxY8hlFIml+nr7le0SgBhT3SIytFBmdzPK3AUhXGuW3T79nVg==",
"requires": {
"@codemirror/language": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"@lezer/common": "^1.0.0"
}
},
"@codemirror/commands": {
"version": "6.1.1",
"resolved": "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.1.1.tgz",
"integrity": "sha512-ibDohwkk7vyu3VsnZNlQhwk0OETBtlkYV+6AHfn5Zgq0sxa+yGVX+apwtC3M4wh6AH7yU5si/NysoECs5EGS3Q==",
"requires": {
"@codemirror/language": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"@lezer/common": "^1.0.0"
}
},
"@codemirror/language": {
"version": "6.2.1",
"resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.2.1.tgz",
"integrity": "sha512-MC3svxuvIj0MRpFlGHxLS6vPyIdbTr2KKPEW46kCoCXw2ktb4NTkpkPBI/lSP/FoNXLCBJ0mrnUi1OoZxtpW1Q==",
"requires": {
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"@lezer/common": "^1.0.0",
"@lezer/highlight": "^1.0.0",
"@lezer/lr": "^1.0.0",
"style-mod": "^4.0.0"
}
},
"@codemirror/lint": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.0.0.tgz",
"integrity": "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==",
"requires": {
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"crelt": "^1.0.5"
}
},
"@codemirror/search": {
"version": "6.2.1",
"resolved": "https://registry.npmmirror.com/@codemirror/search/-/search-6.2.1.tgz",
"integrity": "sha512-Q1JgUSBjQZRPIddlXzad/AVDigdhriLxQNFyP0gfrDTq6LDHNhr95U/tW3bpVssGenkaLzujtu/7XoK4kyvL3g==",
"requires": {
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"crelt": "^1.0.5"
}
},
"@codemirror/state": {
"version": "6.1.2",
"resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.1.2.tgz",
"integrity": "sha512-Mxff85Hp5va+zuj+H748KbubXjrinX/k28lj43H14T2D0+4kuvEFIEIO7hCEcvBT8ubZyIelt9yGOjj2MWOEQA=="
},
"@codemirror/theme-one-dark": {
"version": "6.1.0",
"resolved": "https://registry.npmmirror.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz",
"integrity": "sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==",
"requires": {
"@codemirror/language": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"@lezer/highlight": "^1.0.0"
}
},
"@codemirror/view": {
"version": "6.3.1",
"resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-6.3.1.tgz",
"integrity": "sha512-NKPBphoV9W2Q6tKXk+ge4q5EhMOOC0rpwdGS80/slNSfsVqkN4gwXIEqSprXJFlf9aUKZU7WhPvqRBMNH+hJkQ==",
"requires": {
"@codemirror/state": "^6.0.0",
"style-mod": "^4.0.0",
"w3c-keyname": "^2.2.4"
}
},
"@csstools/normalize.css": { "@csstools/normalize.css": {
"version": "12.0.0", "version": "12.0.0",
"resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz",
...@@ -2109,6 +2196,27 @@ ...@@ -2109,6 +2196,27 @@
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz",
"integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==" "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg=="
}, },
"@lezer/common": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/@lezer/common/-/common-1.0.1.tgz",
"integrity": "sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw=="
},
"@lezer/highlight": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.1.1.tgz",
"integrity": "sha512-duv9D23O9ghEDnnUDmxu+L8pJy4nYo4AbCOHIudUhscrLSazqeJeK1V50EU6ZufWF1zv0KJwu/frFRyZWXxHBQ==",
"requires": {
"@lezer/common": "^1.0.0"
}
},
"@lezer/lr": {
"version": "1.2.3",
"resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-1.2.3.tgz",
"integrity": "sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA==",
"requires": {
"@lezer/common": "^1.0.0"
}
},
"@mui/base": { "@mui/base": {
"version": "5.0.0-alpha.79", "version": "5.0.0-alpha.79",
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.79.tgz", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.79.tgz",
...@@ -3191,6 +3299,43 @@ ...@@ -3191,6 +3299,43 @@
"eslint-visitor-keys": "^3.0.0" "eslint-visitor-keys": "^3.0.0"
} }
}, },
"@uiw/codemirror-extensions-basic-setup": {
"version": "4.12.4",
"resolved": "https://registry.npmmirror.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.12.4.tgz",
"integrity": "sha512-owSCcRBtS2wYjxgBFkuIjfjWJHsR8AxgsQtqPpHB/6U0zCLuzKS/OM5ZRS2T3rdOizg0hCPztVvmshWeKjF+qw==",
"requires": {
"@codemirror/autocomplete": "^6.0.0",
"@codemirror/commands": "^6.0.0",
"@codemirror/language": "^6.0.0",
"@codemirror/lint": "^6.0.0",
"@codemirror/search": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0"
}
},
"@uiw/react-codemirror": {
"version": "4.12.4",
"resolved": "https://registry.npmmirror.com/@uiw/react-codemirror/-/react-codemirror-4.12.4.tgz",
"integrity": "sha512-92TAvN2z5snPjPtJDLmbqrqsXXYFYlBnWraXZuDc1XGaw80tB26ZkdEW79CD2QM4Y9LhFIt+sauwlmiAVDs/5A==",
"requires": {
"@babel/runtime": "^7.18.6",
"@codemirror/commands": "^6.1.0",
"@codemirror/state": "^6.1.1",
"@codemirror/theme-one-dark": "^6.0.0",
"@uiw/codemirror-extensions-basic-setup": "4.12.4",
"codemirror": "^6.0.0"
},
"dependencies": {
"@babel/runtime": {
"version": "7.19.4",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.19.4.tgz",
"integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
}
}
},
"@webassemblyjs/ast": { "@webassemblyjs/ast": {
"version": "1.11.1", "version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
...@@ -4212,6 +4357,20 @@ ...@@ -4212,6 +4357,20 @@
"q": "^1.1.2" "q": "^1.1.2"
} }
}, },
"codemirror": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz",
"integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
"requires": {
"@codemirror/autocomplete": "^6.0.0",
"@codemirror/commands": "^6.0.0",
"@codemirror/language": "^6.0.0",
"@codemirror/lint": "^6.0.0",
"@codemirror/search": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0"
}
},
"collect-v8-coverage": { "collect-v8-coverage": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
...@@ -4410,6 +4569,11 @@ ...@@ -4410,6 +4569,11 @@
"yaml": "^1.10.0" "yaml": "^1.10.0"
} }
}, },
"crelt": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/crelt/-/crelt-1.0.5.tgz",
"integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA=="
},
"cross-spawn": { "cross-spawn": {
"version": "7.0.3", "version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
...@@ -8367,9 +8531,9 @@ ...@@ -8367,9 +8531,9 @@
} }
}, },
"js-base64": { "js-base64": {
"version": "2.6.4", "version": "3.7.2",
"resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.2.tgz",
"integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ=="
}, },
"js-cookie": { "js-cookie": {
"version": "2.2.1", "version": "2.2.1",
...@@ -10223,6 +10387,16 @@ ...@@ -10223,6 +10387,16 @@
} }
} }
}, },
"raw-loader": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/raw-loader/-/raw-loader-4.0.2.tgz",
"integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
"dev": true,
"requires": {
"loader-utils": "^2.0.0",
"schema-utils": "^3.0.0"
}
},
"react": { "react": {
"version": "18.1.0", "version": "18.1.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz",
...@@ -11227,6 +11401,11 @@ ...@@ -11227,6 +11401,11 @@
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==" "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ=="
}, },
"style-mod": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/style-mod/-/style-mod-4.0.0.tgz",
"integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw=="
},
"stylehacks": { "stylehacks": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
...@@ -11655,6 +11834,11 @@ ...@@ -11655,6 +11834,11 @@
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-0.1.2.tgz", "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-0.1.2.tgz",
"integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg=="
},
"js-base64": {
"version": "2.6.4",
"resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
"integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
} }
} }
}, },
...@@ -11842,6 +12026,11 @@ ...@@ -11842,6 +12026,11 @@
"browser-process-hrtime": "^1.0.0" "browser-process-hrtime": "^1.0.0"
} }
}, },
"w3c-keyname": {
"version": "2.2.6",
"resolved": "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz",
"integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg=="
},
"w3c-xmlserializer": { "w3c-xmlserializer": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
"@types/node": "^16.11.33", "@types/node": "^16.11.33",
"@types/react": "^18.0.9", "@types/react": "^18.0.9",
"@types/react-dom": "^18.0.3", "@types/react-dom": "^18.0.3",
"@uiw/react-codemirror": "^4.12.4",
"ahooks": "^3.3.12", "ahooks": "^3.3.12",
"axios": "^0.27.2", "axios": "^0.27.2",
"babel-jest": "^27.4.2", "babel-jest": "^27.4.2",
...@@ -48,6 +49,7 @@ ...@@ -48,6 +49,7 @@
"jest": "^27.4.3", "jest": "^27.4.3",
"jest-resolve": "^27.4.2", "jest-resolve": "^27.4.2",
"jest-watch-typeahead": "^1.0.0", "jest-watch-typeahead": "^1.0.0",
"js-base64": "^3.7.2",
"kekule": "^0.9.7", "kekule": "^0.9.7",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mini-css-extract-plugin": "^2.4.5", "mini-css-extract-plugin": "^2.4.5",
...@@ -180,7 +182,9 @@ ...@@ -180,7 +182,9 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@babel/standalone": "^7.19.5",
"@types/crypto-js": "^4.1.1", "@types/crypto-js": "^4.1.1",
"@types/mockjs": "^1.0.6" "@types/mockjs": "^1.0.6",
"raw-loader": "^4.0.2"
} }
} }
...@@ -51,6 +51,7 @@ const RESTAPI = { ...@@ -51,6 +51,7 @@ const RESTAPI = {
API_GET_HARDWARE:`${BACKEND_API_URI_PREFIX}/cpp/cpce/hardware`, // 获取计算队列列表 API_GET_HARDWARE:`${BACKEND_API_URI_PREFIX}/cpp/cpce/hardware`, // 获取计算队列列表
API_GET_PUBLIC_ENV:`${BACKEND_API_URI_PREFIX}/cpp/common/public/env`, // 获取公共环境 API_GET_PUBLIC_ENV:`${BACKEND_API_URI_PREFIX}/cpp/common/public/env`, // 获取公共环境
API_GET_PUBLIC_PROJECT:`${BACKEND_API_URI_PREFIX}/cpp/common/public/project`, // 获取公共环境 API_GET_PUBLIC_PROJECT:`${BACKEND_API_URI_PREFIX}/cpp/common/public/project`, // 获取公共环境
API_ACTORENV_BUILDENV:`${BACKEND_API_URI_PREFIX}/cpp/actorenv/buildenv`, // 新增应用环境
}; };
export default RESTAPI; export default RESTAPI;
...@@ -105,7 +105,7 @@ class CloudEController { ...@@ -105,7 +105,7 @@ class CloudEController {
headers["Cache-Control"] = "no-cache"; headers["Cache-Control"] = "no-cache";
headers["delfilepath"] = Base64.stringify(Utf8.parse(urls)); headers["delfilepath"] = Base64.stringify(Utf8.parse(urls));
let url = ""; let url = "";
if (getLoaclStorageOfKey("userinfo")) { if (getLoaclStorageOfKey("userInfo")) {
url += urlToken(filetoken, projectId); url += urlToken(filetoken, projectId);
} }
return axios.get(APIOPTION() + "/delete/" + url, { return axios.get(APIOPTION() + "/delete/" + url, {
...@@ -129,7 +129,7 @@ class CloudEController { ...@@ -129,7 +129,7 @@ class CloudEController {
) { ) {
if (ApiUtils.getAuthorizationHeaders(headers)) { if (ApiUtils.getAuthorizationHeaders(headers)) {
headers["Cache-Control"] = "no-cache"; headers["Cache-Control"] = "no-cache";
if (getLoaclStorageOfKey("userinfo")) { if (getLoaclStorageOfKey("userInfo")) {
url += urlToken(filetoken, projectId); url += urlToken(filetoken, projectId);
} }
return axios.get( return axios.get(
...@@ -151,7 +151,7 @@ class CloudEController { ...@@ -151,7 +151,7 @@ class CloudEController {
if (ApiUtils.getAuthorizationHeaders(headers)) { if (ApiUtils.getAuthorizationHeaders(headers)) {
headers["Cache-Control"] = "no-cache"; headers["Cache-Control"] = "no-cache";
// headers['parentName'] = '' // headers['parentName'] = ''
if (getLoaclStorageOfKey("userinfo")) { if (getLoaclStorageOfKey("userInfo")) {
url += urlToken(filetoken, projectId); url += urlToken(filetoken, projectId);
} }
return axios.get( return axios.get(
...@@ -172,7 +172,7 @@ class CloudEController { ...@@ -172,7 +172,7 @@ class CloudEController {
) { ) {
if (ApiUtils.getAuthorizationHeaders(headers)) { if (ApiUtils.getAuthorizationHeaders(headers)) {
headers["Cache-Control"] = "no-cache"; headers["Cache-Control"] = "no-cache";
if (getLoaclStorageOfKey("userinfo")) { if (getLoaclStorageOfKey("userInfo")) {
url = urlToken(filetoken, projectId) + "&q=" + url; url = urlToken(filetoken, projectId) + "&q=" + url;
} }
return axios.get( return axios.get(
...@@ -188,7 +188,7 @@ class CloudEController { ...@@ -188,7 +188,7 @@ class CloudEController {
// static JobOutFileListMove(url: any, filetoken: string, projectId: string) { // static JobOutFileListMove(url: any, filetoken: string, projectId: string) {
// if (ApiUtils.getAuthorizationHeaders(headers)) { // if (ApiUtils.getAuthorizationHeaders(headers)) {
// headers["Cache-Control"] = "no-cache"; // headers["Cache-Control"] = "no-cache";
// if (getLoaclStorageOfKey("userinfo")) { // if (getLoaclStorageOfKey("userInfo")) {
// url += urlToken(filetoken, projectId); // url += urlToken(filetoken, projectId);
// } // }
// return axios.get(APIOPTION() + "/download" + url, { // return axios.get(APIOPTION() + "/download" + url, {
......
...@@ -30,14 +30,14 @@ const APIPORT = function () { ...@@ -30,14 +30,14 @@ const APIPORT = function () {
// 当前计算区 // 当前计算区
// let currentRegion = localStorage.getItem("current-region"); // let currentRegion = localStorage.getItem("current-region");
// let currentRegionJson = currentRegion && JSON.parse(currentRegion); // let currentRegionJson = currentRegion && JSON.parse(currentRegion);
// let user = getLoaclStorageOfKey("userinfo"); // let user = getLoaclStorageOfKey("userInfo");
// 文件路径 // 文件路径
// const FILEPATH = // const FILEPATH =
// currentRegionJson && // currentRegionJson &&
// currentRegionJson.location && // currentRegionJson.location &&
// currentRegionJson.location === "ON_PREMISE" && // currentRegionJson.location === "ON_PREMISE" &&
// localStorage.getItem("userinfo") // localStorage.getItem("userInfo")
// ? `/home/${user.name}` // ? `/home/${user.name}`
// : "/home/cloudam"; // : "/home/cloudam";
const FILEPATH_SHARE = "/share"; const FILEPATH_SHARE = "/share";
...@@ -62,7 +62,7 @@ const urlToken = (filetoken: string, projectId: string) => { ...@@ -62,7 +62,7 @@ const urlToken = (filetoken: string, projectId: string) => {
}; };
const getUuid = () => { const getUuid = () => {
const userInfo = getLoaclStorageOfKey("userinfo"); const userInfo = getLoaclStorageOfKey("userInfo");
// 是否共有文件系统 // 是否共有文件系统
if ( if (
localStorage.getItem("isShareFileSystem") && localStorage.getItem("isShareFileSystem") &&
...@@ -75,12 +75,12 @@ const getUuid = () => { ...@@ -75,12 +75,12 @@ const getUuid = () => {
}; };
const USERNAME = () => { const USERNAME = () => {
return getLoaclStorageOfKey("userinfo").name; return getLoaclStorageOfKey("userInfo").name;
}; };
// 加密传输 // 加密传输
const encryptTransfer = () => { const encryptTransfer = () => {
const userInfo = getLoaclStorageOfKey("userinfo"); const userInfo = getLoaclStorageOfKey("userInfo");
if (userInfo) { if (userInfo) {
let encryptTransfer = userInfo.encryptTransfer; let encryptTransfer = userInfo.encryptTransfer;
if (encryptTransfer) { if (encryptTransfer) {
......
...@@ -354,26 +354,8 @@ const getHardwreList = (params: {zoneId: string, computeType: string}) => { ...@@ -354,26 +354,8 @@ const getHardwreList = (params: {zoneId: string, computeType: string}) => {
params, params,
}); });
} }
// 获取公共项目
const getPublicProject = () => {
return request({
url: Api.API_GET_PUBLIC_PROJECT,
method: "get",
});
}
// 获取公共环境
const getPublicEnv = (params: {taskType: 'BATCH' | 'FLOW'}) => {
return request({
url: Api.API_GET_PUBLIC_ENV,
method: "get",
params,
});
};
export { export {
getPublicEnv,
getPublicProject,
current, current,
menu, menu,
getProjectList, getProjectList,
......
import request from "@/utils/axios/service";
import Api from "./api_manager";
type addActorenvBuildenvParams = {
title: string,
desc: string,
baseEnvId: string,
type: "BATCH" | "FLOW",
filePaths: Array<string>,
bashScript: string,
computeType: string,
publicProjectId: string,
}
// 获取公共项目
const getPublicProject = () => {
return request({
url: Api.API_GET_PUBLIC_PROJECT,
method: "get",
});
}
// 获取公共环境
const getPublicEnv = (params: {taskType: 'BATCH' | 'FLOW'}) => {
return request({
url: Api.API_GET_PUBLIC_ENV,
method: "get",
params,
});
};
// 新增应用环境
const addActorenvBuildenv = (params: addActorenvBuildenvParams) => {
return request({
url: Api.API_ACTORENV_BUILDENV,
method: "post",
data: {...params, name: '123'},
});
};
export {
getPublicEnv,
getPublicProject,
addActorenvBuildenv,
};
import CodeMirror from "@uiw/react-codemirror";
type ICodeType = {
value: string;
onChange: any;
height?: string;
theme?: "light" | "dark";
};
const Code = (props: ICodeType) => {
const { value, onChange, height, theme = "dark" } = props;
return (
<CodeMirror
height={height || "100%"}
value={value}
onChange={(e) => onChange(e)}
theme={theme}
/>
);
};
export default Code;
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
display: flex; display: flex;
border-radius: 4px; border-radius: 4px;
margin-bottom: 24px; margin-bottom: 24px;
flex: 1; height: 600px;
} }
.form { .form {
width: 368px; width: 368px;
......
...@@ -8,11 +8,15 @@ import { urlToken } from "@/api/fileserver/raysyncApi"; ...@@ -8,11 +8,15 @@ import { urlToken } from "@/api/fileserver/raysyncApi";
import * as tus from "tus-js-client"; import * as tus from "tus-js-client";
import { useDropzone } from "react-dropzone"; import { useDropzone } from "react-dropzone";
import SwitchBatchFolw from "@/views/ResourceCenter/components/SwitchBatchFolw"; import SwitchBatchFolw from "@/views/ResourceCenter/components/SwitchBatchFolw";
import { getLoaclStorageOfKey } from "@/api/fileserver/utils";
import Code from "@/components/CommonComponents/Code";
import * as Base64 from "js-base64";
import { getDataFileToken, hpczone } from "@/api/project_api";
import { import {
getPublicEnv, getPublicEnv,
getPublicProject, getPublicProject,
getDataFileToken, addActorenvBuildenv,
} from "@/api/project_api"; } from "@/api/resourceCenter";
import classNames from "classnames"; import classNames from "classnames";
import { getTokenInfo } from "@/utils/util"; import { getTokenInfo } from "@/utils/util";
...@@ -23,30 +27,41 @@ type IAddEnvironmentProps = { ...@@ -23,30 +27,41 @@ type IAddEnvironmentProps = {
const AddEnvironment = (props: IAddEnvironmentProps) => { const AddEnvironment = (props: IAddEnvironmentProps) => {
const { setAddopen } = props; const { setAddopen } = props;
let tokenInfo = getTokenInfo(); let tokenInfo = getTokenInfo();
const [publicPrijectId, setPublicPrijectId] = useState(""); const [hpczoneList, setHpczoneList] = useState<Array<any>>([]);
const [publicProjectId, setPublicProjectId] = useState("");
const [publicZoneId, setPublicZoneId] = useState(""); const [publicZoneId, setPublicZoneId] = useState("");
const [computeType, setComputeType] = useState("");
const [fileToken, setFileToken] = useState(""); const [fileToken, setFileToken] = useState("");
const [taskType, setTaskType] = useState<"BATCH" | "FLOW">("BATCH"); const [taskType, setTaskType] = useState<"BATCH" | "FLOW">("BATCH");
// const [];
const [name, setName] = useState(""); const [name, setName] = useState("");
const [desc, setDesc] = useState("");
const [baseEnvId, setBaseEnvId] = useState(""); const [baseEnvId, setBaseEnvId] = useState("");
const [filePaths, setFilePaths] = useState<Array<string>>([]);
// const [bashScript, setBashScript] = useState('');
const [envList, setEnvList] = useState<Array<any>>([]); const [envList, setEnvList] = useState<Array<any>>([]);
const [progress, setProgress] = useState("0%");
const [code, setCode] = useState("");
console.log(code);
const [nameHelper, setNameHelper] = useState({ const [nameHelper, setNameHelper] = useState({
error: false, error: false,
text: "30字符以内,仅限字母、数字、中文", text: "30字符以内,仅限字母、数字、中文",
}); });
const [desc, setDesc] = useState("");
const onDrop = useCallback( const onDrop = useCallback(
(acceptedFiles: any) => { (acceptedFiles: any) => {
console.log(acceptedFiles); let origin = "";
hpczoneList.forEach((item) => {
if (item.id === publicZoneId) {
origin = item?.storageConfig?.fileServerEndPoint;
}
});
const fileInfo = acceptedFiles[0]; const fileInfo = acceptedFiles[0];
const { fileName, path, size, file } = fileInfo; const { path } = fileInfo;
const userInfo = getLoaclStorageOfKey("userInfo");
const homeDirectoryMountPoint = userInfo?.homeDirectoryMountPoint;
const url = const url =
"https://fileserver.cloudam.cn" + origin + "/parallelupload/" + urlToken(fileToken, publicProjectId);
"/parallelupload/" +
urlToken(fileToken, publicPrijectId);
let headers = { let headers = {
username: publicPrijectId, username: publicProjectId,
token: tokenInfo?.access_token || "", token: tokenInfo?.access_token || "",
filetoken: fileToken, filetoken: fileToken,
share: false, share: false,
...@@ -57,76 +72,60 @@ const AddEnvironment = (props: IAddEnvironmentProps) => { ...@@ -57,76 +72,60 @@ const AddEnvironment = (props: IAddEnvironmentProps) => {
parallelUploads: 1, parallelUploads: 1,
chunkSize: 5 * 1024 * 1024, chunkSize: 5 * 1024 * 1024,
metadata: { metadata: {
filepath: "/", filepath: "/" + homeDirectoryMountPoint + "/" + path,
}, },
retryDelays: [0, 3000, 5000, 10000, 20000], retryDelays: [0, 3000, 5000, 10000, 20000],
headers: headers, headers: headers,
onbeforeunload: () => {
setProgress(`0%`);
},
onError: function (error: string) { onError: function (error: string) {
console.log("Failed because: " + error); console.log("Failed because: " + error);
}, },
onProgress: function (bytesUploaded: number, bytesTotal: number) { onProgress: function (bytesUploaded: number, bytesTotal: number) {
console.log(bytesUploaded); setProgress(`${bytesUploaded / bytesTotal}%`);
console.log(bytesTotal); console.log(`${bytesUploaded / bytesTotal}%`);
// var percentage = (bytesUploaded / bytesTotal) * 100;
// const json = {
// name: upload.file.name,
// bytesUploaded: bytesUploaded,
// bytesTotal: bytesTotal,
// percentage: percentage,
// startTime: timeId,
// isSuspend: false,
// endTime: new Date().getTime(),
// bytesUploaded2: bytesUploaded,
// id: timeId,
// statusMsg: "正在上传",
// upload,
// dir: "/ProjectData/",
// };
// uploadInfoStore?.setUploadInfo(item.id, {
// ...item,
// info: json,
// });
}, },
onSuccess: function () { onSuccess: function () {
console.log("3154"); setFilePaths([`/ProjectData/${homeDirectoryMountPoint}/${path}`]);
// const json = {
// id: timeId,
// percentage: 100,
// startTime: timeId,
// endTime: new Date().getTime() + 1000,
// statusMsg: "上传成功",
// upload,
// };
// uploadInfoStore?.setUploadInfoList(item.id, json);
// callBack && callBack(upload, filepath);
}, },
}); });
upload.start(); upload.start();
}, },
[fileToken, publicPrijectId, tokenInfo?.access_token] [
fileToken,
publicProjectId,
tokenInfo?.access_token,
hpczoneList,
publicZoneId,
]
); );
const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop }); const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
const { run: getPublicEnvFn } = useMyRequest(getPublicEnv, { const { run: getPublicEnvFn } = useMyRequest(getPublicEnv, {
onSuccess: (res: any) => { onSuccess: (res: any) => {
console.log(res); console.log(res);
let arr = res.map((item: any) => { let arr = res.data.map((item: any) => {
return { return {
label: item.title, label: item.title,
value: item.id, value: item.id,
computeType: item.computeType,
}; };
}); });
setEnvList(arr); setEnvList(arr);
if (arr.length >= 1) {
setBaseEnvId(arr[0].value);
setComputeType(arr[0].computeType);
}
}, },
}); });
const { run: getPublicProjectFn } = useMyRequest(getPublicProject, { const { run: getPublicProjectFn } = useMyRequest(getPublicProject, {
onSuccess: (res: any) => { onSuccess: (res: any) => {
console.log(res); console.log(res);
setPublicPrijectId(res[0].id); setPublicProjectId(res.data[0].id);
setPublicZoneId(res[0].zoneId); setPublicZoneId(res.data[0].zoneId);
getDataFileTokenFn({ id: res[0].id }); getDataFileTokenFn({ id: res.data[0].id });
}, },
}); });
...@@ -137,6 +136,12 @@ const AddEnvironment = (props: IAddEnvironmentProps) => { ...@@ -137,6 +136,12 @@ const AddEnvironment = (props: IAddEnvironmentProps) => {
}, },
}); });
const { run: addActorenvBuildenvFn } = useMyRequest(addActorenvBuildenv, {
onSuccess: (res: any) => {
console.log(res);
},
});
useEffect(() => { useEffect(() => {
getPublicProjectFn(); getPublicProjectFn();
}, [getPublicProjectFn]); }, [getPublicProjectFn]);
...@@ -145,12 +150,42 @@ const AddEnvironment = (props: IAddEnvironmentProps) => { ...@@ -145,12 +150,42 @@ const AddEnvironment = (props: IAddEnvironmentProps) => {
getPublicEnvFn({ taskType }); getPublicEnvFn({ taskType });
}, [getPublicEnvFn, taskType]); }, [getPublicEnvFn, taskType]);
const { run: hpczoneFn } = useMyRequest(hpczone, {
onSuccess: (res: any) => {
setHpczoneList(res.data);
},
});
useEffect(() => {
hpczoneFn();
}, [hpczoneFn]);
const handleNameChange = (e: any) => { const handleNameChange = (e: any) => {
console.log(e); setName(e.target.value);
}; };
const handleDescChange = (e: any) => { const handleDescChange = (e: any) => {
console.log(e); setDesc(e.target.value);
};
const handelBaseEnvIdChange = (e: any) => {
setBaseEnvId(e);
let index = envList.findIndex((item) => {
return item.value === e;
});
setComputeType(envList[index].computeType);
};
const handleSubmit = () => {
addActorenvBuildenvFn({
title: name,
desc,
baseEnvId,
type: taskType,
filePaths,
bashScript: Base64.encode(code),
publicProjectId,
computeType,
});
}; };
return ( return (
...@@ -218,6 +253,7 @@ const AddEnvironment = (props: IAddEnvironmentProps) => { ...@@ -218,6 +253,7 @@ const AddEnvironment = (props: IAddEnvironmentProps) => {
options={envList} options={envList}
fullWidth fullWidth
value={baseEnvId} value={baseEnvId}
onChange={(e) => handelBaseEnvIdChange(e)}
></MySelect> ></MySelect>
</div> </div>
<div className={style.label}> <div className={style.label}>
...@@ -237,11 +273,17 @@ const AddEnvironment = (props: IAddEnvironmentProps) => { ...@@ -237,11 +273,17 @@ const AddEnvironment = (props: IAddEnvironmentProps) => {
<div className={style.codeTitle}> <div className={style.codeTitle}>
{taskType === "BATCH" ? "Shell脚本" : "Python脚本"} {taskType === "BATCH" ? "Shell脚本" : "Python脚本"}
</div> </div>
<div className={style.code}></div> <div className={style.code}>
<Code
value={code}
onChange={(e: string) => setCode(e)}
height="535px"
/>
</div>
</div> </div>
</div> </div>
<div className={style.button}> <div className={style.button}>
<MyButton text="开始构建"></MyButton> <MyButton text="开始构建" onClick={() => handleSubmit()}></MyButton>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -7,7 +7,7 @@ import MyButton from "@/components/mui/MyButton"; ...@@ -7,7 +7,7 @@ import MyButton from "@/components/mui/MyButton";
import AddEnvironment from "./AddEnvironment"; import AddEnvironment from "./AddEnvironment";
const UserResourcesEnvironment = () => { const UserResourcesEnvironment = () => {
const [addOpen, setAddopen] = useState(true); const [addOpen, setAddopen] = useState(false);
return ( return (
<div className={style.environment}> <div className={style.environment}>
<div className={style.top}> <div className={style.top}>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment