()
| 964 | let _rusenseLoading = null; // in-flight import() promise |
| 965 | let _rusenseCurrent = 'dashboard'; |
| 966 | |
| 967 | function _setRusenseActive(name) { |
| 968 | RUSENSE_SUBTABS.forEach(k => |
| 969 | _setSubtabActive(document.getElementById('rusense-subtab-' + k), k === name)); |
| 970 | } |
| 971 | |
| 972 | function loadRusenseLoader() { |
| 973 | if (_rusenseLoader) return Promise.resolve(_rusenseLoader); |
| 974 | if (!_rusenseLoading) { |
| 975 | _rusenseLoading = import('/web/rusense/app/loader.js?v=20260705-calpresets') |
| 976 | .then(m => { _rusenseLoader = m; return m; }) |
| 977 | .catch(err => { _rusenseLoading = null; throw err; }); |
| 978 | } |
| 979 | return _rusenseLoading; |
| 980 | } |
| 981 | |
| 982 | // Let the Observatory iframe ask the dashboard to expand it to the full |
| 983 | // viewport (it cannot escape its own container from inside the iframe). |
| 984 | let _observatoryFsInit = false; |
| 985 | function initObservatoryFullscreenBridge() { |
| 986 | if (_observatoryFsInit) return; |
| 987 | _observatoryFsInit = true; |
| 988 | window.addEventListener('message', (e) => { |
| 989 | if (!e.data || e.data.type !== 'observatory-fullscreen') return; |
| 990 | const obs = document.getElementById('observatory-frame'); |
| 991 | if (!obs) return; |
no test coverage detected