Main Panel
The Main Panel is the primary window of the HiNC application, providing navigation and access to all major features.
Key Models
- Project Service: injects ProxyProjectService, the IProjectService implementation that reaches the session's project across the connection
- User Service:
UserService
Layout Structure
- Top
Navigation MenuBrand logo, and the HiAPI version as an outlined badge beside it. The badge carries the HiNc assembly version reported by the anonymous authentication-status probe the router runs before the first route resolves, so it needs neither a loaded project nor a signed-in session; it is omitted only while that probe has reported no version.
Project Menu DropdownProject Path Text Field— readonly; reads “No Project Loaded” until a project is loadedNew MenuItemLoad MenuItemReLoad MenuItemSave MenuItemSave As MenuItemClose Project MenuItem(below a separator)
ReLoad, Save, Save As and Close Project are disabled until a project is loaded, and New, Load and Save As open the shared file-picker dialog with a
.hincprojfilter. The picker is allowed the Admin and Project roots and is denied the Resource root, which holds read-only templates the project endpoints cannot save through; it asks for the Admin root by name, so that is where it opens, and it seeds its path box with the directory holding the loaded project, or with the admin root itself when there is none. The Project root is one of the two only while a project is loaded: the roots endpoint lists a root only when its directory resolves, and the project directory resolves to nothing until a project is open, so with no project the picker offers Admin alone.Page Menu Dropdown— the three workflow pages in setup order (fill the tool house, set up the equipment, run), then the utilities.- Tool House MenuItem Open Tool House Page
- General Setup MenuItem The equipment Control Tree — Machine Tool, Spindle Capability, Background, Coolant, Fixture, Workpiece, Controller, in that order — plus the shared equipment canvas. Two further controller branches, CSV Controller and CL Controller, are hidden by default and are switched on from the Preference dropdown.
- Execution MenuItem Open Execution Page
- File Explorer MenuItem (below a separator). See Util Pages.
- Mechanism Builder MenuItem Open Mechanism Builder Page
The dropdown is not every route the application has. The Machine Tool page stays reachable by URL for its chain-only canvas preview, the Log Viewer is reached by the
Show Logbutton, and the Fixture, Workpiece, Spindle Capability, Mission, Background / Coolant and legacy Controller paths resolve as redirects into the two tree pages.
Show LogButton — a button, not a menu item. It sits on the menu bar's right side and routes to the Log Viewer page. The Log Viewer presents the server's application log for the current day, with a manual refresh, a selectable auto-refresh interval, copy to the clipboard, and download of the day's log file for offline analysis.- Central
Page Panel— one router outlet wrapped in a keep-alive cache keyed on a project epoch: an integer the layout owns, raised by two watchers and read by nothing else. The first watches the project store's path, which New, Load and Save As each assign from the response they get back, which Close Project clears, and which a store-level watcher on the shared execution-status hub adopts from every broadcast — so a project change made in another tab, from another browser, or outside the browser altogether bumps the epoch here as well, and so does the boot status fetch, once, on a service that already has a project open. The second watches a counter the store raises in exactly one place, ReLoad, which is what makes a re-read of the same path remount at all: the backend raises its project-changed event with the path it already had, so the broadcast cannot be told apart from a no-op. Assigning the path it already holds moves neither watcher, so Save on the current path does not remount and neither does a Save As written back onto the path already open. A bump discards every cached page and rebuilds it, so each page initializes on its own mount hook rather than watching for project changes itself. - Bottom footer — the routine-progress bar: the latest foreground message with a recent-messages history menu on the left, the live session status in the middle, and in-flight background job progress on the right. See Message Section on Main Panel.
The menu bar carries no run tool bars at all: the transport controls ride the Execution Page‘s primary panel header and the view controls ride its canvas panel header. What the menu bar keeps instead is the page's set of column quick-toggles, the connection badge, the active page's title, the Show Log button and — when authentication is on — the logout button. The toggles follow whichever tree page is current: four on the Execution page (control dock, canvas, strip charts, step info) and three on General Setup (control dock, content, canvas); the Tool House page lays itself out with plain splitters and gets none. The connection badge is Execution-only — the other pages’ canvases carry their own in-panel badges.
Project Menu Behavior
The Project Path Text Field displays the current project path when a project is loaded. It is implemented as a pure text field (not a button) that allows users to select and copy the path.
The Project Menu manages MachiningProject with the following operations:
| Operation | Description | Example |
|---|---|---|
| New | Creates a new project | See DemoBuildGeomOnlyMachiningProject |
| Load | Opens an existing project | See DemoUseMachiningProject |
| ReLoad | Re-reads the current project from disk, same path | — |
| Save | Saves the current project | See DemoBuildGeomOnlyMachiningProject |
| Save As | Saves the project to a new location | See DemoBuildGeomOnlyMachiningProject |
| Close | Closes the current project and clears the shell | — |
Every Project action reports through two channels: a background progress line on the footer while it runs, then a toast when it lands — positive on success, a “busy” warning when a concurrent action has already claimed the service (HTTP 409), negative otherwise. What a project change drives in the shell is the layout's keep-alive epoch, not a canvas view: every cached page is discarded and rebuilt.
Note
Project actions report through the toast helper and the routine-progress footer store, and none of them routes a message through MessageUtil. Project I/O is asynchronous, so the shell stays responsive during file I/O.
Platform-Specific Differences
Web Application
- The Execution Page is the landing route —
/redirects to/execution - The page URL and panel state are synchronized (bi-directional navigation)
- There is no Environment dropdown. Machine Tool, Fixture, Workpiece, Controller, Background / Coolant and Spindle Capability are branches of the General Setup page's Control Tree, and Tool House and Execution are pages of their own; the remaining paths resolve as redirects into those pages. The menu bar is therefore
Project ▾ | Page ▾ | Preference ▾.
Source Code Path
See HiNC App Anatomy for git repository links.
Web Application
HiNC-2025-webservice (Quasar CLI SPA):
Environments/PreferenceController.cs— the endpoints behind the Preference dropdown.Environments/ProjectController.cs— the project endpoints: status, new, load, save, reload, saveas and close, plus the log endpoints.Environments/UserService.cs— the shell's user model.wwwroot-src/src/components/AppMenuBar.vue— the whole navigation menu.wwwroot-src/src/components/AppFooter.vue— the routine-progress footer the layout docks.wwwroot-src/src/layouts/MainLayout.vue— the shell that hosts the menu bar, the keep-alive page panel and the footer.wwwroot-src/src/router/routes.ts— the routes the Page dropdown targets and the redirect-only legacy paths.wwwroot-src/src/i18n/en/menu.ts— the menu bar's English labels.wwwroot-src/src/stores/project.ts— the six Project actions and the busy error a 409 becomes.wwwroot-src/src/stores/routineProgress.ts— the foreground-message and background-progress store the Project handlers share with the footer.wwwroot-src/src/composables/useToast.ts— the toasts every Project action ends in.wwwroot-src/src/composables/useViewPrefs.ts— the device-local per-page column visibility and the CSV / CL controller switches.wwwroot-src/src/composables/useConnectionsHealth.ts— the aggregate state behind the Execution connection badge.wwwroot-src/src/components/widgets/FileExplorerDialog.vue— the shared picker New, Load and Save As open.wwwroot-src/src/components/widgets/ColumnToggleIcon.vue— the glyph each column quick-toggle draws.wwwroot-src/src/pages/LogViewerPage.vue— the Log Viewer theShow Logbutton opens.
See Also
- Execution Page — the landing page the shell routes to
- Preference Menu Dropdown — the third menu on the bar
- Bottom Message Bar — the notification bar the shell docks along the bottom
- General Setup Page — the equipment page the Page menu reaches
- Tree Ids and Routes — the route table this bar navigates, and how a
?tree=id lands on the page that owns it - Session State — the keep-alive this shell wraps the router view in, and what a project change destroys
- Login and Authentication — the gate in front of this shell, and the sign-out entry on this bar
- Log Viewer Page — the screen the Show Log button opens