mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 19:04:02 +00:00
feat(ui): render the Cockpit briefing card from a store
The Cockpit controller no longer writes the briefing card's pages, cycle toggle, regional news and local conditions: it keeps them as plain state, starting from cockpitBriefPages.js, and publishes a copy to a new gev-cockpit store. A new CockpitBriefing component, lifted verbatim from the Cockpit view, renders it. News rows are keyed by story, so a focused link never turns into another story on refresh. The controls keep the controller's listeners; the route card and the signal list keep their owners' bindings for now. The boot-time kicker translation is gone, as the card translates its own text.
This commit is contained in:
1 parent
d134aefd77
commit
82bbf16a8f
13 files changed
+614
-290
No files matched your search
@@ -0,0 +1,19 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import { markRaw, shallowRef } from 'vue';
|
||||
|
||||
/**
|
||||
* Cockpit content as its views render it. The Cockpit controller presents
|
||||
* the briefing card's pages, cycle toggle, regional news and local
|
||||
* conditions and publishes them here; it keeps the controls' listeners.
|
||||
*/
|
||||
export const useCockpitStore = defineStore('gev-cockpit', () => {
|
||||
/** The presented briefing; null until the controller first presents it. */
|
||||
const brief = shallowRef(null);
|
||||
|
||||
/** @param {?object} next A fresh presentation of the briefing card. */
|
||||
function publishBrief(next) {
|
||||
brief.value = next && markRaw(next);
|
||||
}
|
||||
|
||||
return { brief, publishBrief };
|
||||
});
|
||||
Reference in new issue
Block a user