feat: MachineBridge 추가 및 fetch API를 HostObject 호출로 전환

- WebView2 HostObject 기반 MachineBridge 브릿지 클래스 추가
  - MachineBridge.cs (메인), Login, Dashboard, Todo, Common, Jobreport, Kuntae, Project 모듈
- WebSocketServer.cs 추가 (실시간 통신용)
- fDashboardNew 다이얼로그 추가
- Jobreport/index.html, Project/index.html의 fetch API를 machine HostObject 호출로 전환
- DashBoardController.cs의 gcode null 처리 추가
- 사용하지 않는 파일 삭제 (navigation.html, common-nav.js, navigation.js, _add_to_project.py, _project_updater.js)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
backuppc
2025-11-25 16:06:35 +09:00
parent f0d46b7cb1
commit 44af041d1a
24 changed files with 2622 additions and 1454 deletions

View File

@@ -206,15 +206,56 @@ namespace Project
Func_Login();
// WebView2 로그인이 아닌 경우에만 여기서 후처리 실행
// WebView2 로그인의 경우 OnLoginCompleted()에서 호출됨
if (!(webok && Pub.InitWebView == 1))
{
OnLoginCompleted();
}
}
/// <summary>
/// 로그인 완료 후 실행되는 처리
/// WebView2 로그인의 경우 MachineBridge에서 호출됨
/// </summary>
public void OnLoginCompleted()
{
menuStrip1.Enabled = true;
toolStrip1.Enabled = true;
this.mn_purchase.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_purchase);
this.mn_project.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_project);
this.mn_dailyhistory.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_history);
this.mn_jago.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_jago);
//this.mn_eq.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_equipment);
this.mn_kuntae.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_workday);
this.mn_docu.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_docu);
//this.mn_logdata.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_logdata);
//220421
FCOMMON.info.Disable_8hourover = Pub.setting.Disable8HourOver;
if (FCOMMON.info.Login.level >= 10) btDev.Visible = true;
sbLogin.Text = string.Format("[{0}] ({1}-{2} T:{3}) - ({5}){4}",
FCOMMON.info.Login.title,
FCOMMON.info.Login.no,
FCOMMON.info.Login.nameK,
FCOMMON.info.Login.tel,
FCOMMON.info.Login.dept,
FCOMMON.info.Login.gcode);
FCOMMON.Pub.log.Add("Program Start");
sbLoginUseTime.Text = "접속시간:" + FCOMMON.info.Login.loginusetime.ToString("N1") + "ms";
// Start chat service after login
StartChatService();
///즐겨찾기 목록 갱신
// 즐겨찾기 목록 갱신
Update_FavoriteSite();
UpdateControls();
//사용기록추적
// 사용기록추적
var remark = $"{FCOMMON.info.Login.gcode}|{FCOMMON.info.Login.dept}";
Pub.CheckNRegister5(Application.ProductName, "chi", Application.ProductVersion, FCOMMON.info.Login.no, remark);
}
@@ -247,9 +288,10 @@ namespace Project
this.sbWeb.Text = $"Host:{(webok ? "O" : "X")},WebView:{Pub.InitWebView},Server:{Pub.WebServiceURL}";
if (webok && Pub.InitWebView == 1)
{
using (var f = new Dialog.fLogin_WB())
if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK)
Application.ExitThread();
//using (var f = new Dialog.fLogin_WB())
// if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK)
// Application.ExitThread();
Menu_Dashboard();
}
else
{
@@ -259,32 +301,7 @@ namespace Project
}
this.mn_purchase.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_purchase);
this.mn_project.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_project);
this.mn_dailyhistory.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_history);
this.mn_jago.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_jago);
//this.mn_eq.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_equipment);
this.mn_kuntae.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_workday);
this.mn_docu.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_docu);
//this.mn_logdata.Visible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_logdata);
//220421
FCOMMON.info.Disable_8hourover = Pub.setting.Disable8HourOver;
if (FCOMMON.info.Login.level >= 10) btDev.Visible = true;
sbLogin.Text = string.Format("[{0}] ({1}-{2} T:{3}) - ({5}){4}",
FCOMMON.info.Login.title,
FCOMMON.info.Login.no,
FCOMMON.info.Login.nameK,
FCOMMON.info.Login.tel,
FCOMMON.info.Login.dept,
FCOMMON.info.Login.gcode);
FCOMMON.Pub.log.Add("Program Start");
sbLoginUseTime.Text = "접속시간:" + FCOMMON.info.Login.loginusetime.ToString("N1") + "ms";
Func_RunStartForm();
}
void Func_RunStartForm()
{
@@ -296,7 +313,6 @@ namespace Project
var menu_kuntaeVisible = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_workday);
var menu_logdata = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.menu_logdata);
this.Menu_Dashboard();
}
void Menu_WorkTable()
{
@@ -1501,14 +1517,14 @@ namespace Project
}
Dialog.fDashboard fdashboard = null;
Dialog.fDashboardNew fdashboard = null;
void Menu_Dashboard()
{
string formkey = "DASHBOARD";
if (!ShowForm(formkey))
{
if (fdashboard == null || fdashboard.IsDisposed)
fdashboard = new Dialog.fDashboard();
fdashboard = new Dialog.fDashboardNew();
AddForm(formkey, fdashboard);
}
}