From 527e455e4b996b679088cf5136502f1ebfeddc61 Mon Sep 17 00:00:00 2001 From: jinchao <383321154@qq.com> Date: Mon, 9 Jun 2025 11:16:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E5=92=8C=E6=9C=8D=E5=8A=A1=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E4=BF=AE=E6=94=B9=E6=9C=88=E4=BB=BD=E5=92=8C?= =?UTF-8?q?=E5=B9=B4=E4=BB=BD=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Release/database/XNSim.db | Bin 1224704 -> 1224704 bytes XNInterfaceGenServer/XNInterfaceGenServer.cpp | 96 ++++++++++++------ XNInterfaceGenServer/XNInterfaceGenServer.h | 23 ++++- XNSimHtml/components/model-development.js | 54 +++++++++- XNSimHtml/components/service-development.js | 54 +++++++++- 5 files changed, 183 insertions(+), 44 deletions(-) diff --git a/Release/database/XNSim.db b/Release/database/XNSim.db index 131dcc0beba16d27c99c1be8b10b3432c5a7767b..17552c350f548d8ad12def17d3ba28a9ff606a83 100644 GIT binary patch delta 526 zcmZp8;MMTJYl1Xm=0q81#>|ZgOZ=HN`NAf%2l%t_CGdr9R#f=IE5gYv&S;=#q-UuK zV_9f4XT`N=#W4ag6A&{4F$)m00x=s9vjZ^)5OZ$NisPC!QG$!(7X!ZlUm@>Yo_9Ri z+y}Xxx#Bo`Ieu+c6u8Gx-zcETA+9JJ+9)dyw#LZ7$W+(BOxM8D(9p`z)XLEO*@}fv z=XF2b)9|!^;?qez&*t<#?OF)oCY7c?*}v}Tl3pmes|}ChCp&syH17qfd^Tn0vpF44 zcJBq6R{wP879i{Std^J4*S%acBQYg6Gq2H41LUUS#%i#eEKuBJU}$A(`h4^5=ey@W zpFQze-}09Wx4xXa=y~6Ur*l?3>zoX7*@lfko1V|!@~m$uM9q_3ZH9UftAR`;-Dyzm z@Avc|Oz2$*G4pBf=BNGZK?W}GhM4oXp^3`~WDv;DyV{<%Zhkp^t&2-AME2SAZ6J?K pX?(VJH^e(Y^h$Nl00Vs0Sj0b*Vt<^y7WAQspj_e*fmRse?B4Q>Dc delta 137 zcmZp8;MMTJYl1Xm`a~IL#`KK|OZ=JD`LZUn2l#JRR1o27&WdZ#iem&~CLm@8Viq7~ z1!6WJW(Q&pAm-ej6~{Geq6i0990R`qUm@>Yo_9Ri+y}Xxx#Bh}3b=8#$Nd6fZXo6X UVqPHT17dz47T6y5OK{Ov0Fc!&h5!Hn diff --git a/XNInterfaceGenServer/XNInterfaceGenServer.cpp b/XNInterfaceGenServer/XNInterfaceGenServer.cpp index 2bbd097..9e136c7 100644 --- a/XNInterfaceGenServer/XNInterfaceGenServer.cpp +++ b/XNInterfaceGenServer/XNInterfaceGenServer.cpp @@ -5,62 +5,96 @@ #include "DDSInterfaceGen.h" #include "CMakeListsGen.h" -int XNInterfaceGen(const char *tableName, const int tableNameSize, const char *configName, - const int configNameSize, const char *errorMsg, const int errorMsgSize) +// 全局变量定义 +std::string g_tableName; +std::string g_configName; +char *g_errorMsg; +int g_errorMsgSize; +AllInterfaceData g_interfaceData; + +bool XNInterfaceGen_Step1_InitParams(const char *tableName, const int tableNameSize, + const char *configName, const int configNameSize, + const char *errorMsg, const int errorMsgSize) +{ + g_tableName = std::string(tableName, tableNameSize); + g_configName = std::string(configName, configNameSize); + g_errorMsg = const_cast(errorMsg); + g_errorMsgSize = errorMsgSize; + return true; +} + +bool XNInterfaceGen_Step2_GetInterfaceData() { std::string errorMsgStr; - // 1. 从数据库获取接口数据 - AllInterfaceData interfaceData = GetInterfaceData::getInterfaceData(tableName, errorMsgStr); + g_interfaceData = GetInterfaceData::getInterfaceData(g_tableName, errorMsgStr); if (!errorMsgStr.empty()) { - memcpy((void *)errorMsg, errorMsgStr.c_str(), errorMsgSize); - return -1; + memcpy(g_errorMsg, errorMsgStr.c_str(), g_errorMsgSize); + return false; } + return true; +} - // 2. 创建构型目录 - bool ret = GenIDL::createConfigDirectory(configName); +bool XNInterfaceGen_Step3_CreateConfigDir() +{ + bool ret = GenIDL::createConfigDirectory(g_configName); if (!ret) { - memcpy((void *)errorMsg, "Create config directory failed", errorMsgSize); - return -1; + memcpy(g_errorMsg, "Create config directory failed", g_errorMsgSize); + return false; } + return true; +} - // 3. 生成IDL文件 - ret = GenIDL::generateIDL(interfaceData); +bool XNInterfaceGen_Step4_GenerateIDL() +{ + bool ret = GenIDL::generateIDL(g_interfaceData); if (!ret) { - memcpy((void *)errorMsg, "Generate IDL failed", errorMsgSize); - return -1; + memcpy(g_errorMsg, "Generate IDL failed", g_errorMsgSize); + return false; } + return true; +} - // 4. 生成FastDDS代码 - ret = FastDDSGen::generateFastDDSCode(GenIDL::getIDLFilePath()); +bool XNInterfaceGen_Step5_GenerateFastDDS() +{ + bool ret = FastDDSGen::generateFastDDSCode(GenIDL::getIDLFilePath()); if (!ret) { - memcpy((void *)errorMsg, "Generate FastDDS code failed", errorMsgSize); - return -1; + memcpy(g_errorMsg, "Generate FastDDS code failed", g_errorMsgSize); + return false; } + return true; +} - // 5. 生成DDS接口 +bool XNInterfaceGen_Step6_GenerateDDSInterface() +{ DDSInterfaceGen ddsInterfaceGen(GenIDL::getIDLFilePath()); - ret = ddsInterfaceGen.generateDDSInterface(interfaceData); + bool ret = ddsInterfaceGen.generateDDSInterface(g_interfaceData); if (!ret) { - memcpy((void *)errorMsg, "Generate DDS interface failed", errorMsgSize); - return -1; + memcpy(g_errorMsg, "Generate DDS interface failed", g_errorMsgSize); + return false; } + return true; +} - // 6. 生成CMakeLists.txt文件 - ret = CMakeListsGen::generateCMakeLists(interfaceData, GenIDL::getIDLFilePath(), configName); +bool XNInterfaceGen_Step7_GenerateCMakeLists() +{ + bool ret = + CMakeListsGen::generateCMakeLists(g_interfaceData, GenIDL::getIDLFilePath(), g_configName); if (!ret) { - memcpy((void *)errorMsg, "Generate CMakeLists.txt failed", errorMsgSize); - return -1; + memcpy(g_errorMsg, "Generate CMakeLists.txt failed", g_errorMsgSize); + return false; } + return true; +} - // 7. 执行CMake编译和安装 +bool XNInterfaceGen_Step8_BuildAndInstall() +{ std::string idlDirPath = fs::path(GenIDL::getIDLFilePath()).parent_path().string(); std::string buildCmd = "cd " + idlDirPath + " && mkdir -p build && cd build && cmake .. && make && make install"; int buildRet = system(buildCmd.c_str()); if (buildRet != 0) { - memcpy((void *)errorMsg, "CMake build or install failed", errorMsgSize); - return -1; + memcpy(g_errorMsg, "CMake build or install failed", g_errorMsgSize); + return false; } - - return 0; + return true; } \ No newline at end of file diff --git a/XNInterfaceGenServer/XNInterfaceGenServer.h b/XNInterfaceGenServer/XNInterfaceGenServer.h index 4686472..df375b5 100644 --- a/XNInterfaceGenServer/XNInterfaceGenServer.h +++ b/XNInterfaceGenServer/XNInterfaceGenServer.h @@ -2,9 +2,26 @@ #define XN_INTERFACE_GEN_SERVER_H #include "XNInterfaceGenServer_global.h" +#include "PublicDefine.h" -extern "C" XNIGS_EXPORT int XNInterfaceGen(const char *tableName, const int tableNameSize, - const char *configName, const int configNameSize, - const char *errorMsg, const int errorMsgSize); +// 全局变量声明 +extern std::string g_tableName; +extern std::string g_configName; +extern char *g_errorMsg; +extern int g_errorMsgSize; +extern AllInterfaceData g_interfaceData; + +// 步骤函数声明 +extern "C" XNIGS_EXPORT bool +XNInterfaceGen_Step1_InitParams(const char *tableName, const int tableNameSize, + const char *configName, const int configNameSize, + const char *errorMsg, const int errorMsgSize); +extern "C" XNIGS_EXPORT bool XNInterfaceGen_Step2_GetInterfaceData(); +extern "C" XNIGS_EXPORT bool XNInterfaceGen_Step3_CreateConfigDir(); +extern "C" XNIGS_EXPORT bool XNInterfaceGen_Step4_GenerateIDL(); +extern "C" XNIGS_EXPORT bool XNInterfaceGen_Step5_GenerateFastDDS(); +extern "C" XNIGS_EXPORT bool XNInterfaceGen_Step6_GenerateDDSInterface(); +extern "C" XNIGS_EXPORT bool XNInterfaceGen_Step7_GenerateCMakeLists(); +extern "C" XNIGS_EXPORT bool XNInterfaceGen_Step8_BuildAndInstall(); #endif // XN_INTERFACE_GEN_SERVER_H diff --git a/XNSimHtml/components/model-development.js b/XNSimHtml/components/model-development.js index cb35238..9260149 100644 --- a/XNSimHtml/components/model-development.js +++ b/XNSimHtml/components/model-development.js @@ -1394,12 +1394,56 @@ class ModelDevelopment extends HTMLElement { const selectedYear = parseInt(calendarYear.value); const selectedMonth = parseInt(calendarMonth.value); - // 关闭当前对话框 - closeModal(); - - // 更新日期参数并重新显示对话框 + // 更新当前日期 currentDate = new Date(selectedYear, selectedMonth, 1); - this.showDateTimeDialog(inputElement); + + // 重新生成日历内容 + const daysInMonth = new Date(selectedYear, selectedMonth + 1, 0).getDate(); + const firstDay = new Date(selectedYear, selectedMonth, 1).getDay(); + + let calendarRows = ''; + let dayCount = 1; + + // 添加表头 + calendarRows += ''; + ['日', '一', '二', '三', '四', '五', '六'].forEach(dayName => { + calendarRows += `${dayName}`; + }); + calendarRows += ''; + + // 计算行数 + const totalCells = firstDay + daysInMonth; + const rowCount = Math.ceil(totalCells / 7); + + // 添加日期行 + for (let i = 0; i < rowCount; i++) { + calendarRows += ''; + for (let j = 0; j < 7; j++) { + if ((i === 0 && j < firstDay) || dayCount > daysInMonth) { + calendarRows += ''; + } else { + const isToday = dayCount === currentDate.getDate(); + calendarRows += `${dayCount}`; + dayCount++; + } + } + calendarRows += ''; + } + + // 更新日历表格内容 + const calendarTable = modal.querySelector('.calendar-table'); + calendarTable.innerHTML = calendarRows; + + // 重新绑定日期选择事件 + const calendarDays = modal.querySelectorAll('.calendar-day'); + calendarDays.forEach(cell => { + cell.addEventListener('click', (e) => { + // 移除所有选中状态 + calendarDays.forEach(day => day.classList.remove('selected')); + // 添加新选中状态 + e.target.classList.add('selected'); + }); + }); }; calendarMonth.addEventListener('change', updateCalendar); diff --git a/XNSimHtml/components/service-development.js b/XNSimHtml/components/service-development.js index b66a7cf..75d0e38 100644 --- a/XNSimHtml/components/service-development.js +++ b/XNSimHtml/components/service-development.js @@ -1466,12 +1466,56 @@ class ServiceDevelopment extends HTMLElement { const selectedYear = parseInt(calendarYear.value); const selectedMonth = parseInt(calendarMonth.value); - // 关闭当前对话框 - closeModal(); - - // 更新日期参数并重新显示对话框 + // 更新当前日期 currentDate = new Date(selectedYear, selectedMonth, 1); - this.showDateTimeDialog(inputElement); + + // 重新生成日历内容 + const daysInMonth = new Date(selectedYear, selectedMonth + 1, 0).getDate(); + const firstDay = new Date(selectedYear, selectedMonth, 1).getDay(); + + let calendarRows = ''; + let dayCount = 1; + + // 添加表头 + calendarRows += ''; + ['日', '一', '二', '三', '四', '五', '六'].forEach(dayName => { + calendarRows += `${dayName}`; + }); + calendarRows += ''; + + // 计算行数 + const totalCells = firstDay + daysInMonth; + const rowCount = Math.ceil(totalCells / 7); + + // 添加日期行 + for (let i = 0; i < rowCount; i++) { + calendarRows += ''; + for (let j = 0; j < 7; j++) { + if ((i === 0 && j < firstDay) || dayCount > daysInMonth) { + calendarRows += ''; + } else { + const isToday = dayCount === currentDate.getDate(); + calendarRows += `${dayCount}`; + dayCount++; + } + } + calendarRows += ''; + } + + // 更新日历表格内容 + const calendarTable = modal.querySelector('.calendar-table'); + calendarTable.innerHTML = calendarRows; + + // 重新绑定日期选择事件 + const calendarDays = modal.querySelectorAll('.calendar-day'); + calendarDays.forEach(cell => { + cell.addEventListener('click', (e) => { + // 移除所有选中状态 + calendarDays.forEach(day => day.classList.remove('selected')); + // 添加新选中状态 + e.target.classList.add('selected'); + }); + }); }; calendarMonth.addEventListener('change', updateCalendar);