修复日志排序问题

This commit is contained in:
cc 2025-04-09 22:22:46 +08:00
parent b1420dcfeb
commit eec890650d
8 changed files with 22008 additions and 37852 deletions

File diff suppressed because one or more lines are too long

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

View File

@ -3,10 +3,7 @@
"MODULES": [ "MODULES": [
{ {
"MODULE_NAME": "1043bfc77febe75fafec0c4309faccf1", "MODULE_NAME": "1043bfc77febe75fafec0c4309faccf1",
"API_TYPE": "stageMode", "API_TYPE": "stageMode"
"INCREMENTAL_TASKS": {
"COMPILE_ARKTS": true
}
} }
], ],
"BUILD_MODE": "debug" "BUILD_MODE": "debug"
@ -18,22 +15,19 @@
"IS_HVIGORFILE_TYPE_CHECK": false, "IS_HVIGORFILE_TYPE_CHECK": false,
"TASK_TIME": { "TASK_TIME": {
"1043bfc77febe75fafec0c4309faccf1": { "1043bfc77febe75fafec0c4309faccf1": {
"ConfigureCmake": 138750, "ConfigureCmake": 894750,
"PreCheckSyscap": 130000, "PreCheckSyscap": 574583,
"ProcessIntegratedHsp": 627666, "ProcessIntegratedHsp": 2383958,
"BuildNativeWithCmake": 132500, "BuildNativeWithCmake": 390834,
"SyscapTransform": 748042, "SyscapTransform": 29037500,
"BuildNativeWithNinja": 628625, "BuildNativeWithNinja": 1575042,
"BuildJS": 3736250, "BuildJS": 2164500,
"CompileArkTS": 1222589291, "SignHap": 1717417,
"GeneratePkgModuleJson": 1167625, "CollectDebugSymbol": 3798875,
"PackageHap": 402789000, "assembleHap": 280125
"SignHap": 555625,
"CollectDebugSymbol": 1284834,
"assembleHap": 83208
} }
}, },
"TOTAL_TIME": 1815609000, "BUILD_ID": "202504092220173180",
"BUILD_ID": "202504081715029750" "TOTAL_TIME": 2372532417
} }
} }

View File

@ -128,7 +128,7 @@ chineseTexts.notificationSettings = '通知设置';
chineseTexts.about = '关于'; chineseTexts.about = '关于';
chineseTexts.versionInfo = '版本信息'; chineseTexts.versionInfo = '版本信息';
// 版本日志相关 // 版本日志相关
chineseTexts.versionLog = '更新日志'; chineseTexts.versionLog = '日志记录';
chineseTexts.versionHistory = '版本历史'; chineseTexts.versionHistory = '版本历史';
chineseTexts.latestVersion = '最新版本'; chineseTexts.latestVersion = '最新版本';
chineseTexts.noVersionInfo = '没有版本信息'; chineseTexts.noVersionInfo = '没有版本信息';

View File

@ -159,7 +159,7 @@ export class LogManager {
new VersionLogItem("1.2.0","2025-4-2",["添加课堂功能","修改上课页面逻辑"]), new VersionLogItem("1.2.0","2025-4-2",["添加课堂功能","修改上课页面逻辑"]),
new VersionLogItem("1.2.0 beta1.0","2025-4-3",["测试消息发送","修复已知问题"]), 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.1","2025-4-4",["更新说明文档","添加日志输出"]),
new VersionLogItem("1.2.0 beta1.2","2025-4-8修改首页",["修改首页","添加网页"]), new VersionLogItem("1.2.0 beta1.2","2025-4-8",["修改首页","添加网页"]),
]; ];
} }
@ -177,14 +177,7 @@ export class LogManager {
if (this.versionLogs && this.versionLogs.length > 0) { if (this.versionLogs && this.versionLogs.length > 0) {
// 先复制一份数组进行排序,确保不影响原数组 // 先复制一份数组进行排序,确保不影响原数组
const sortedLogs = [...this.versionLogs].sort((a, b) => { const sortedLogs = [...this.versionLogs].sort((a, b) => {
const vA = a.version.split('.').map(Number); return this.compareVersions(a.version, b.version);
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 sortedLogs[0].version; return sortedLogs[0].version;
@ -209,18 +202,51 @@ export class LogManager {
logInfo(`新版本日志已添加: ${versionLog.version}`); logInfo(`新版本日志已添加: ${versionLog.version}`);
} }
// 按版本号排序(假设版本号格式为x.y.z // 按版本号排序(支持beta版本
this.versionLogs.sort((a, b) => { this.versionLogs.sort((a, b) => {
const vA = a.version.split('.').map(Number); return this.compareVersions(a.version, b.version);
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;
}); });
} }
/**
* 比较两个版本号
* @param versionA 版本号A
* @param versionB 版本号B
* @returns 返回比较结果负数表示A < B正数表示A > B0表示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;
}
} }
// 导出单例实例 // 导出单例实例

View File

@ -600,7 +600,7 @@ struct SystemSettings {
// 添加日志记录设置项 // 添加日志记录设置项
SettingItem({ SettingItem({
title: this.texts.versionLog || '更新日志', title: this.texts.versionLog || '日志记录',
value: '点一点', value: '点一点',
refreshTrigger: this.refreshTrigger, refreshTrigger: this.refreshTrigger,
themeColor: this.themeColor, themeColor: this.themeColor,
@ -813,16 +813,9 @@ struct SystemSettings {
return; return;
} }
// 确保版本日志按版本号降序排列 // 使用LogManager的版本比较逻辑进行排序
const sortedLogs = [...versionLogs].sort((a, b) => { const sortedLogs = [...versionLogs].sort((a, b) => {
const vA = a.version.split('.').map(Number); return logManager.compareVersions(a.version, b.version);
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;
}); });
// 构建版本日志内容 // 构建版本日志内容
@ -837,7 +830,7 @@ struct SystemSettings {
// 显示对话框 // 显示对话框
AlertDialog.show({ AlertDialog.show({
title: '更新日志', title: '日志记录',
message: message, message: message,
confirm: { confirm: {
value: this.currentLanguage === Language.CHINESE ? '确定' : 'OK', value: this.currentLanguage === Language.CHINESE ? '确定' : 'OK',