修复日志排序问题
This commit is contained in:
parent
b1420dcfeb
commit
eec890650d
2
.hvigor/cache/file-cache.json
vendored
2
.hvigor/cache/file-cache.json
vendored
File diff suppressed because one or more lines are too long
2
.hvigor/cache/task-cache.json
vendored
2
.hvigor/cache/task-cache.json
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -3,10 +3,7 @@
|
||||
"MODULES": [
|
||||
{
|
||||
"MODULE_NAME": "1043bfc77febe75fafec0c4309faccf1",
|
||||
"API_TYPE": "stageMode",
|
||||
"INCREMENTAL_TASKS": {
|
||||
"COMPILE_ARKTS": true
|
||||
}
|
||||
"API_TYPE": "stageMode"
|
||||
}
|
||||
],
|
||||
"BUILD_MODE": "debug"
|
||||
@ -18,22 +15,19 @@
|
||||
"IS_HVIGORFILE_TYPE_CHECK": false,
|
||||
"TASK_TIME": {
|
||||
"1043bfc77febe75fafec0c4309faccf1": {
|
||||
"ConfigureCmake": 138750,
|
||||
"PreCheckSyscap": 130000,
|
||||
"ProcessIntegratedHsp": 627666,
|
||||
"BuildNativeWithCmake": 132500,
|
||||
"SyscapTransform": 748042,
|
||||
"BuildNativeWithNinja": 628625,
|
||||
"BuildJS": 3736250,
|
||||
"CompileArkTS": 1222589291,
|
||||
"GeneratePkgModuleJson": 1167625,
|
||||
"PackageHap": 402789000,
|
||||
"SignHap": 555625,
|
||||
"CollectDebugSymbol": 1284834,
|
||||
"assembleHap": 83208
|
||||
"ConfigureCmake": 894750,
|
||||
"PreCheckSyscap": 574583,
|
||||
"ProcessIntegratedHsp": 2383958,
|
||||
"BuildNativeWithCmake": 390834,
|
||||
"SyscapTransform": 29037500,
|
||||
"BuildNativeWithNinja": 1575042,
|
||||
"BuildJS": 2164500,
|
||||
"SignHap": 1717417,
|
||||
"CollectDebugSymbol": 3798875,
|
||||
"assembleHap": 280125
|
||||
}
|
||||
},
|
||||
"TOTAL_TIME": 1815609000,
|
||||
"BUILD_ID": "202504081715029750"
|
||||
"BUILD_ID": "202504092220173180",
|
||||
"TOTAL_TIME": 2372532417
|
||||
}
|
||||
}
|
@ -128,7 +128,7 @@ chineseTexts.notificationSettings = '通知设置';
|
||||
chineseTexts.about = '关于';
|
||||
chineseTexts.versionInfo = '版本信息';
|
||||
// 版本日志相关
|
||||
chineseTexts.versionLog = '更新日志';
|
||||
chineseTexts.versionLog = '日志记录';
|
||||
chineseTexts.versionHistory = '版本历史';
|
||||
chineseTexts.latestVersion = '最新版本';
|
||||
chineseTexts.noVersionInfo = '没有版本信息';
|
||||
|
@ -53,7 +53,7 @@ export class VersionLogItem {
|
||||
version: string = ''; // 版本号
|
||||
date: string = ''; // 发布日期
|
||||
changes: string[] = []; // 更新内容列表
|
||||
|
||||
|
||||
constructor(version: string = '', date: string = '', changes: string[] = []) {
|
||||
this.version = version;
|
||||
this.date = date;
|
||||
@ -78,11 +78,11 @@ export class LogManager {
|
||||
private versionLogs: VersionLogItem[] = [];
|
||||
// 当前语言
|
||||
private currentLanguage: string = '中文';
|
||||
|
||||
|
||||
private constructor() {
|
||||
this.initVersionLogs();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取LogManager实例
|
||||
*/
|
||||
@ -92,7 +92,7 @@ export class LogManager {
|
||||
}
|
||||
return LogManager.instance;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置当前语言
|
||||
* @param language 语言设置
|
||||
@ -101,7 +101,7 @@ export class LogManager {
|
||||
this.currentLanguage = language;
|
||||
logInfo(`日志管理器语言已设置为: ${language}`);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 记录信息日志
|
||||
* @param category 日志类别
|
||||
@ -112,7 +112,7 @@ export class LogManager {
|
||||
const logMessage = `[${category}][${type}] ${message}`;
|
||||
hilog.info(LOG_DOMAIN, LOG_TAG, logMessage);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 记录调试日志,带有更多上下文
|
||||
* @param category 日志类别
|
||||
@ -125,7 +125,7 @@ export class LogManager {
|
||||
const logMessage = `[${category}][${type}] ${key}: ${oldValue} -> ${newValue}`;
|
||||
hilog.debug(LOG_DOMAIN, LOG_TAG, logMessage);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 记录警告日志
|
||||
* @param category 日志类别
|
||||
@ -135,7 +135,7 @@ export class LogManager {
|
||||
const logMessage = `[${category}][WARN] ${message}`;
|
||||
hilog.warn(LOG_DOMAIN, LOG_TAG, logMessage);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 记录错误日志
|
||||
* @param category 日志类别
|
||||
@ -146,7 +146,7 @@ export class LogManager {
|
||||
const logMessage = `[${category}][ERROR] ${errorMessage}`;
|
||||
hilog.error(LOG_DOMAIN, LOG_TAG, logMessage);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 初始化版本日志数据
|
||||
*/
|
||||
@ -159,17 +159,17 @@ export class LogManager {
|
||||
new VersionLogItem("1.2.0","2025-4-2",["添加课堂功能","修改上课页面逻辑"]),
|
||||
new VersionLogItem("1.2.0 beta1.0","2025-4-3",["测试消息发送","修复已知问题"]),
|
||||
new VersionLogItem("1.2.0 beta1.1","2025-4-4",["更新说明文档","添加日志输出"]),
|
||||
new VersionLogItem("1.2.0 beta1.2","2025-4-8修改首页",["修改首页","添加网页"]),
|
||||
new VersionLogItem("1.2.0 beta1.2","2025-4-8",["修改首页","添加网页"]),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取所有版本日志
|
||||
*/
|
||||
public getVersionLogs(): VersionLogItem[] {
|
||||
return this.versionLogs;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取最新版本号
|
||||
*/
|
||||
@ -177,21 +177,14 @@ export class LogManager {
|
||||
if (this.versionLogs && this.versionLogs.length > 0) {
|
||||
// 先复制一份数组进行排序,确保不影响原数组
|
||||
const sortedLogs = [...this.versionLogs].sort((a, b) => {
|
||||
const vA = a.version.split('.').map(Number);
|
||||
const vB = b.version.split('.').map(Number);
|
||||
for (let i = 0; i < Math.max(vA.length, vB.length); i++) {
|
||||
const numA = i < vA.length ? vA[i] : 0;
|
||||
const numB = i < vB.length ? vB[i] : 0;
|
||||
if (numB - numA !== 0) return numB - numA;
|
||||
}
|
||||
return 0;
|
||||
return this.compareVersions(a.version, b.version);
|
||||
});
|
||||
// 返回排序后的第一个元素(最高版本)
|
||||
return sortedLogs[0].version;
|
||||
}
|
||||
return "1.0.0"; // 默认版本号
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 添加新版本日志
|
||||
* @param versionLog 版本日志项
|
||||
@ -209,19 +202,52 @@ export class LogManager {
|
||||
logInfo(`新版本日志已添加: ${versionLog.version}`);
|
||||
}
|
||||
|
||||
// 按版本号排序(假设版本号格式为x.y.z)
|
||||
// 按版本号排序(支持beta版本)
|
||||
this.versionLogs.sort((a, b) => {
|
||||
const vA = a.version.split('.').map(Number);
|
||||
const vB = b.version.split('.').map(Number);
|
||||
for (let i = 0; i < Math.max(vA.length, vB.length); i++) {
|
||||
const numA = i < vA.length ? vA[i] : 0;
|
||||
const numB = i < vB.length ? vB[i] : 0;
|
||||
if (numB - numA !== 0) return numB - numA;
|
||||
}
|
||||
return 0;
|
||||
return this.compareVersions(a.version, b.version);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个版本号
|
||||
* @param versionA 版本号A
|
||||
* @param versionB 版本号B
|
||||
* @returns 返回比较结果,负数表示A < B,正数表示A > B,0表示A == B
|
||||
*/
|
||||
public compareVersions(versionA: string, versionB: string): number {
|
||||
// 检查是否包含beta
|
||||
const isBetaA = versionA.toLowerCase().includes('beta');
|
||||
const isBetaB = versionB.toLowerCase().includes('beta');
|
||||
|
||||
// 如果一个是beta,一个是正式版本,beta版本排在后面
|
||||
if (isBetaA && !isBetaB) {
|
||||
return -1;
|
||||
} else if (!isBetaA && isBetaB) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 分割版本号,只保留数字部分
|
||||
const partsA = versionA.split(/[. ]/).map(part => {
|
||||
const num = parseInt(part);
|
||||
return isNaN(num) ? 0 : num;
|
||||
});
|
||||
const partsB = versionB.split(/[. ]/).map(part => {
|
||||
const num = parseInt(part);
|
||||
return isNaN(num) ? 0 : num;
|
||||
});
|
||||
|
||||
// 比较每个部分
|
||||
for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
|
||||
const numA = partsA[i] || 0;
|
||||
const numB = partsB[i] || 0;
|
||||
if (numA !== numB) {
|
||||
return numB - numA;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// 导出单例实例
|
||||
export default LogManager.getInstance();
|
||||
export default LogManager.getInstance();
|
@ -600,7 +600,7 @@ struct SystemSettings {
|
||||
|
||||
// 添加日志记录设置项
|
||||
SettingItem({
|
||||
title: this.texts.versionLog || '更新日志',
|
||||
title: this.texts.versionLog || '日志记录',
|
||||
value: '点一点',
|
||||
refreshTrigger: this.refreshTrigger,
|
||||
themeColor: this.themeColor,
|
||||
@ -813,16 +813,9 @@ struct SystemSettings {
|
||||
return;
|
||||
}
|
||||
|
||||
// 确保版本日志按版本号降序排列
|
||||
// 使用LogManager的版本比较逻辑进行排序
|
||||
const sortedLogs = [...versionLogs].sort((a, b) => {
|
||||
const vA = a.version.split('.').map(Number);
|
||||
const vB = b.version.split('.').map(Number);
|
||||
for (let i = 0; i < Math.max(vA.length, vB.length); i++) {
|
||||
const numA = i < vA.length ? vA[i] : 0;
|
||||
const numB = i < vB.length ? vB[i] : 0;
|
||||
if (numB - numA !== 0) return numB - numA;
|
||||
}
|
||||
return 0;
|
||||
return logManager.compareVersions(a.version, b.version);
|
||||
});
|
||||
|
||||
// 构建版本日志内容
|
||||
@ -837,7 +830,7 @@ struct SystemSettings {
|
||||
|
||||
// 显示对话框
|
||||
AlertDialog.show({
|
||||
title: '更新日志',
|
||||
title: '日志记录',
|
||||
message: message,
|
||||
confirm: {
|
||||
value: this.currentLanguage === Language.CHINESE ? '确定' : 'OK',
|
||||
|
Loading…
x
Reference in New Issue
Block a user