_blogs
// blogs / 20260820.md
// blogs / 20260820.md
Dev Log: August 20 Wrap-up
Overview
Today was a bit of a mixed bag, mostly focused on tightening up our data onboarding logic and fixing some annoying UI navigation behavior. I spent a good chunk of time in the decorators, making sure our data syncs correctly when settings change and that we aren't forcing manual steps on users when they aren't actually necessary.
What I Worked On
Automating Data Onboarding States
I noticed our checklist for master data uploads was being a bit too rigid. We have certain data types that are either standard or directly editable, meaning they don't actually require a physical file upload to be considered 'ready.' Previously, these were just sitting in a 'Pending' state, which was confusing for the users.
I added a check to automatically mark these as 'Executed' the moment they're created. It's a small change, but it removes a lot of manual friction. While I was in there, I also fixed a sync issue. If a master data definition changed its 'SMB' status, the checklist wasn't always reflecting that change correctly, especially if a flag was being turned off. I updated the logic to ensure we clear out stale data when that happens.
/*
* If the data type doesn't require a manual upload,
* we can just skip the pending state entirely.
*/
if (isAutoExecutedType(item.getType())) {
item.setStatus(STATUS_EXECUTED);
} else {
item.setStatus(STATUS_PENDING);
}
Fixing the "Navigating Away" UI Bug
This one has been on my nerves for a bit. We use a generic UI engine to render forms and lists, and sometimes we pop these up in a modal dialog. The problem was that after a successful save, the engine would trigger a router.navigate(). Since it was hitting the main app router, it would actually navigate the background page behind the modal, which is definitely not what you want when you're just trying to fill out a quick form.
I introduced a suppressListNavigation flag. Now, when the engine is used inside a popup, it stays put and just emits an event telling the parent, "Hey, I'm done, do what you want with me." The parent component can then close the dialog gracefully without the entire app jumping to a different URL. It feels much more polished now.
Scoping Queries and New Roles
I also had to pass facility_id through our API decorator. We have a generic mechanism for scoping data, but it wasn't being forwarded correctly in this specific proxy call. By grabbing it from the arguments and passing it along, the downstream services can now correctly filter data based on the user's current facility.
Finally, I added a new operation_center user type to our role configurations. It’s just a JSON update, but it’s the groundwork for some new access control stuff we're rolling out soon.
Wrapping Up
Most of today was about handling edge cases—whether it's how a status is set or how a UI component reacts to being inside a modal. It's the kind of work that doesn't look like much on a demo, but it makes the system feel way less brittle. Tomorrow, I'll probably dive deeper into the permissions for that new 'Operation Center' role.