105 lines
3.3 KiB
JavaScript
105 lines
3.3 KiB
JavaScript
/** 跨供应商规格展示适配;只统一显示标签与区域信息,不改写可提交的商品配置。 */
|
|
// 类型码优先识别区域/系统,其余按现有中文同义词归一,未知名称保留。
|
|
function e(e, t) {
|
|
let n = typeof e == `string` ? e.trim() : ``;
|
|
return t === `area` || Number(t) === 12
|
|
? `区域`
|
|
: t === `os` || Number(t) === 5
|
|
? `操作系统`
|
|
: /^(区域|地区|地域|数据中心|机房)$/.test(n)
|
|
? `区域`
|
|
: /^(线路|网络线路)$/.test(n)
|
|
? `线路`
|
|
: /^(带宽|网络带宽|带宽上限)$/.test(n)
|
|
? `带宽上限`
|
|
: /^(镜像|系统|系统镜像|镜像名称|操作系统)$/.test(n)
|
|
? `操作系统`
|
|
: /^(系统版本|镜像版本)$/.test(n)
|
|
? `镜像版本`
|
|
: n;
|
|
}
|
|
function t(e) {
|
|
let t = typeof e == `string` ? e.trim() : ``;
|
|
return /^(normal|classic|经典网络)$/i.test(t)
|
|
? `经典网络`
|
|
: /^(vpc(?:\s*网络)?|私有网络)$/i.test(t)
|
|
? `VPC 网络`
|
|
: t;
|
|
}
|
|
// 部分接口将配置包成 JSON 字符串;格式错误或数组不能当成配置对象使用。
|
|
function n(e) {
|
|
if (typeof e == `string`)
|
|
try {
|
|
return n(JSON.parse(e));
|
|
} catch {
|
|
return {};
|
|
}
|
|
return e && typeof e == `object` && !Array.isArray(e) ? e : {};
|
|
}
|
|
function r(e) {
|
|
return typeof e == `string` ? e.trim() : ``;
|
|
}
|
|
/** i 为模块名,a/o 为优先和后备配置;按模块字段差异提取 region/line/networkType。 */
|
|
function i(i, a, o) {
|
|
let s = n(a),
|
|
c = n(o),
|
|
l = n(s.data_center ?? c.data_center),
|
|
u =
|
|
s.config_options ??
|
|
s.configoptions ??
|
|
c.config_options ??
|
|
c.configoptions,
|
|
d = [];
|
|
if (Array.isArray(u)) d = u.map(n);
|
|
else if (typeof u == `string`)
|
|
try {
|
|
let e = JSON.parse(u);
|
|
Array.isArray(e) && (d = e.map(n));
|
|
} catch {}
|
|
let f = (t) => d.find((n) => e(n.option_name ?? n.name, n.option_type) === t),
|
|
p = (e) => {
|
|
let t = f(e);
|
|
return t
|
|
? r(t.sub_name ?? t.value ?? t.cascade_path) ||
|
|
(Array.isArray(t.subs)
|
|
? t.subs
|
|
.map((e) => r(n(e).option_name))
|
|
.filter(Boolean)
|
|
.join(` / `)
|
|
: ``)
|
|
: ``;
|
|
},
|
|
m = [r(l.city), r(l.area)].filter(Boolean),
|
|
h = m.length
|
|
? [...new Set(m)].join(` / `)
|
|
: r(l.name) || r(l.country) || r(s.data_center) || r(c.data_center);
|
|
return i === `kky_ecs`
|
|
? {
|
|
region: r(s.line_name) || r(c.line_name) || h,
|
|
line: r(s.network_name) || r(c.network_name),
|
|
networkType: `经典网络`,
|
|
}
|
|
: i === `jy_cloud` || i === `jy_dcim`
|
|
? {
|
|
region:
|
|
h ||
|
|
r(s.region_name) ||
|
|
r(s.area_name) ||
|
|
p(`区域`) ||
|
|
r(s.line_name) ||
|
|
r(c.line_name),
|
|
line: r(n(s.line).name) || r(s.line_name) || r(c.line_name),
|
|
networkType: t(s.network_type ?? c.network_type),
|
|
}
|
|
: {
|
|
region: h || p(`区域`),
|
|
line:
|
|
r(n(s.line).name) ||
|
|
r(s.line_name) ||
|
|
r(n(c.line).name) ||
|
|
p(`线路`),
|
|
networkType: t(s.network_type ?? c.network_type) || t(p(`网络类型`)),
|
|
};
|
|
}
|
|
export { i as n, t as r, e as t };
|