修改测试BUG
This commit is contained in:
@@ -1,4 +1,12 @@
|
||||
const AXIS_DECIMALS = 2
|
||||
/** 与 formatAxisLabel 小数位一致,刻度步长不得小于此值,避免标签重复 */
|
||||
const MIN_TICK_STEP = 10 ** -AXIS_DECIMALS
|
||||
|
||||
export interface YAxisRange {
|
||||
min: number
|
||||
max: number
|
||||
interval: number
|
||||
}
|
||||
|
||||
export function roundAxisValue(val: number, decimals = AXIS_DECIMALS): number {
|
||||
if (!Number.isFinite(val)) return 0
|
||||
@@ -12,12 +20,61 @@ export function formatAxisLabel(value: number): string {
|
||||
return String(Number(roundAxisValue(value).toFixed(AXIS_DECIMALS)))
|
||||
}
|
||||
|
||||
/** 根据数据范围计算与显示精度对齐的刻度步长 */
|
||||
function calcNiceTickInterval(range: number, maxTicks = 6): number {
|
||||
if (!Number.isFinite(range) || range <= 0) return MIN_TICK_STEP
|
||||
|
||||
const raw = range / maxTicks
|
||||
const magnitude = 10 ** Math.floor(Math.log10(raw))
|
||||
const normalized = raw / magnitude
|
||||
|
||||
let niceFactor: number
|
||||
if (normalized <= 1) niceFactor = 1
|
||||
else if (normalized <= 2) niceFactor = 2
|
||||
else if (normalized <= 5) niceFactor = 5
|
||||
else niceFactor = 10
|
||||
|
||||
let interval = niceFactor * magnitude
|
||||
|
||||
if (interval < MIN_TICK_STEP) {
|
||||
interval = MIN_TICK_STEP
|
||||
} else {
|
||||
interval = Math.ceil(interval / MIN_TICK_STEP) * MIN_TICK_STEP
|
||||
}
|
||||
|
||||
return roundAxisValue(interval)
|
||||
}
|
||||
|
||||
/** 将 min/max 对齐到刻度步长边界 */
|
||||
function alignAxisToInterval(min: number, max: number, interval: number): { min: number; max: number } {
|
||||
const alignedMin = Math.floor(min / interval) * interval
|
||||
let alignedMax = Math.ceil(max / interval) * interval
|
||||
|
||||
if (alignedMax <= alignedMin) {
|
||||
alignedMax = alignedMin + interval
|
||||
}
|
||||
|
||||
return {
|
||||
min: roundAxisValue(alignedMin),
|
||||
max: roundAxisValue(alignedMax)
|
||||
}
|
||||
}
|
||||
|
||||
function buildYAxisRange(axisMin: number, axisMax: number): YAxisRange {
|
||||
const interval = calcNiceTickInterval(axisMax - axisMin)
|
||||
const aligned = alignAxisToInterval(axisMin, axisMax, interval)
|
||||
return {
|
||||
...aligned,
|
||||
interval
|
||||
}
|
||||
}
|
||||
|
||||
/** 瞬间波形 Y 轴范围 */
|
||||
export function calcShuYAxisRange(dataMin: number, dataMax: number): { min: number; max: number } {
|
||||
export function calcShuYAxisRange(dataMin: number, dataMax: number): YAxisRange {
|
||||
const min = Number(dataMin)
|
||||
const max = Number(dataMax)
|
||||
if (!Number.isFinite(min) || !Number.isFinite(max)) {
|
||||
return { min: 0, max: 1 }
|
||||
return buildYAxisRange(0, 1)
|
||||
}
|
||||
|
||||
let axisMax = max * 1.1
|
||||
@@ -29,18 +86,15 @@ export function calcShuYAxisRange(dataMin: number, dataMax: number): { min: numb
|
||||
axisMin = min - pad
|
||||
}
|
||||
|
||||
return {
|
||||
min: roundAxisValue(axisMin),
|
||||
max: roundAxisValue(axisMax)
|
||||
}
|
||||
return buildYAxisRange(axisMin, axisMax)
|
||||
}
|
||||
|
||||
/** RMS 波形 Y 轴范围 */
|
||||
export function calcRmsYAxisRange(dataMin: number, dataMax: number): { min: number; max: number } {
|
||||
export function calcRmsYAxisRange(dataMin: number, dataMax: number): YAxisRange {
|
||||
const min = Number(dataMin)
|
||||
const max = Number(dataMax)
|
||||
if (!Number.isFinite(min) || !Number.isFinite(max)) {
|
||||
return { min: 0, max: 1 }
|
||||
return buildYAxisRange(0, 1)
|
||||
}
|
||||
|
||||
let axisMax = max * 1.06 * 1.1
|
||||
@@ -52,8 +106,5 @@ export function calcRmsYAxisRange(dataMin: number, dataMax: number): { min: numb
|
||||
axisMin = min - pad
|
||||
}
|
||||
|
||||
return {
|
||||
min: roundAxisValue(axisMin),
|
||||
max: roundAxisValue(axisMax)
|
||||
}
|
||||
return buildYAxisRange(axisMin, axisMax)
|
||||
}
|
||||
|
||||
@@ -77,10 +77,10 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
|
||||
config.url == '/cs-harmonic-boot/limitRateDetailD/limitProbabilityData' ||
|
||||
config.url == '/system-boot/dictTree/queryByCode' ||
|
||||
config.url == '/system-boot/dictTree/queryByid' ||
|
||||
config.url == '/system-boot/dictTree/query'||
|
||||
config.url == '/cs-harmonic-boot/csevent/f47Curve'||
|
||||
config.url == '/cs-harmonic-boot/sysExcel/querySysExcel'||
|
||||
config.url == '/cs-device-boot/csLedger/lineTree'||
|
||||
config.url == '/system-boot/dictTree/query' ||
|
||||
config.url == '/cs-harmonic-boot/csevent/f47Curve' ||
|
||||
config.url == '/cs-harmonic-boot/sysExcel/querySysExcel' ||
|
||||
config.url == '/cs-device-boot/csLedger/lineTree' ||
|
||||
config.url == '/cs-harmonic-boot/pqSensitiveUser/getUserDevTree'
|
||||
)
|
||||
)
|
||||
@@ -103,7 +103,10 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
|
||||
config.headers.Authorization = 'Basic bmpjbnRlc3Q6bmpjbnBxcw=='
|
||||
}
|
||||
}
|
||||
if (config.url == '/user-boot/user/generateSm2Key' || config.url == '/pqs-auth/oauth/token') {
|
||||
if (
|
||||
config.url == '/user-boot/user/generateSm2Key' ||
|
||||
config.url == '/pqs-auth/oauth/token'
|
||||
) {
|
||||
config.headers.Authorization = 'Basic bmpjbnRlc3Q6bmpjbnBxcw=='
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user