OBIEE Dashboard Navigation — Current vs. Proposed
Mockup based on the current WSU Classic dashboard. The proposed version keeps the same page structure and content, but makes pages that contain subpages discoverable before selection and only displays the second navigation row when it is actually needed.
Current OBIEE navigation
In the current style, there is no visible indication that “Active Students” contains subpages until the parent is selected. The second row also resembles ordinary page text, and everything sits at the same small size, so the two levels read as one flat strip.
Proposed navigation — parent with subpages selected
Proposed navigation — page with no subpages selected
When a top-level page without subpages is selected, the second navigation row disappears entirely. “Active Students ▾” remains bold with its chevron, so users can still see that additional navigation is available there.
Implementation Notes for Oracle Analytics Administrator
The intent is to create a new optional Classic dashboard style, rather than modify WSUCustom. Dashboard authors could then opt into the enhanced navigation through Dashboard Properties.
Confirm before building
Two of these are gating: the design only works as a pure-CSS style if OBIEE exposes the right hooks. Please verify items 1 and 2 in browser developer tools before any build work.
- Gate — “has subpages” hook (
.HAS-SUBPAGES). The chevron-before-selection cue is the centerpiece of the proposal, and it assumes OBIEE stamps a class or attribute on a top-level page that owns subpages even when that page is not selected. Please confirm whether such a hook exists. If it does, the chevron is pure CSS and we ship as designed. If it does not, the cue cannot be done in CSS alone and would require either per-dashboard manual tagging or a small JavaScript injection to add the class — a heavier maintenance path we should discuss before committing. - Gate — subpage row wrapper (
.SUBPAGE-NAV-WRAPPER). Confirm the wrapper element OBIEE renders around the second-level row (the one holding Active Student Details and Current Student CITI Status) and substitute its real selector. - Confirm these are true subpages, not tab wrapping. Classic dashboards also wrap page tabs onto a second row automatically when there are too many to fit on one line. Because “Active Students” appears to act as a parent, this looks like genuine sub-navigation — but please verify the second row is real subpage structure and not overflow, since the CSS targets one and not the other.
- Chevron semantics (minor, by design). A downward chevron (▾) usually implies a dropdown that expands on click. Here, clicking the parent navigates and reveals a horizontal second row. This is an accepted tradeoff — the chevron still reads as “more here” — noted so it is a deliberate choice, not an oversight.
- Content fix, outside this style. The live subpage label reads “Current Student CITI Staus” and should be “Status.” That is a fix in the dashboard page itself, not in this CSS, but worth correcting alongside the navigation work.
Administrative path
Oracle Analytics custom resources →
res → create s_WSUNavigation → master → custom.css
Style inheritance
Oracle Analytics custom resources →
res/filemap.xml → add s_WSUNavigation to the existing style hierarchy, inheriting from the current WSU style.
Author selection
Dashboard → Edit Dashboard → Tools → Dashboard Properties → Style → WSUNavigation
The new style should inherit the existing WSU styling and contain only the navigation overrides below. The exact existing WSU hierarchy in filemap.xml should be preserved.
Example filemap.xml addition
<FileMap>
<Styles>
<Hierarchy>s_Redwood/s_WSUCustom/s_WSUNavigation</Hierarchy>
</Styles>
</FileMap>
The hierarchy above is illustrative; use the existing WSU base hierarchy and append s_WSUNavigation.
s_WSUNavigation/master/custom.css
/* ==========================================================
WSU CLASSIC DASHBOARD NAVIGATION
Optional style: s_WSUNavigation
Brand crimson: #981E32 (WSU Pantone 202)
========================================================== */
/* ---------- TOP-LEVEL DASHBOARD PAGES ---------- */
table[id^="dashboard_page_"][id$="_tab"] td,
table[id^="dashboard_page_"][id$="_tab"] div,
table[id^="dashboard_page_"][id$="_tab"] span {
font-size:12px !important; /* raised from 11px for legibility */
}
/* Normal top-level page */
.secondaryTabEnabled {
font-weight:400 !important;
color:#1a1a1a !important; /* darker than before for contrast */
}
/* Selected top-level page */
.secondaryTabSelected,
.masterTabBarTabSecondarySelected,
.tabContainerSelected {
font-weight:700 !important;
color:#981E32 !important;
}
.secondaryTabSelected td,
.secondaryTabSelected div,
.secondaryTabSelected span,
.masterTabBarTabSecondarySelected td,
.masterTabBarTabSecondarySelected div,
.masterTabBarTabSecondarySelected span {
font-weight:700 !important;
color:#981E32 !important;
}
/* Strong selected-page indicator */
table[id^="dashboard_page_"][id$="_tab"].secondaryTabSelected,
table[id^="dashboard_page_"][id$="_tab"].masterTabBarTabSecondarySelected {
border-bottom:3px solid #981E32 !important;
}
/* Additional spacing between top-level pages */
table[id^="dashboard_page_"][id$="_tab"] td {
padding-left:7px !important;
padding-right:7px !important;
}
/* ---------- PAGES THAT CONTAIN SUBPAGES ---------- */
/*
Replace .HAS-SUBPAGES with the actual class/attribute Oracle
exposes for a top-level page that owns subpages, if available.
See "Confirm before building," item 1: if no such hook exists,
this rule cannot fire on unselected parents and the chevron
needs a JS or manual-tagging fallback instead.
*/
.HAS-SUBPAGES {
font-weight:700 !important;
}
.HAS-SUBPAGES td:last-child div::after,
.HAS-SUBPAGES td:last-child span::after {
content:"\25BE";
display:inline-block !important;
color:#981E32 !important;
font-size:12px !important;
line-height:1 !important;
margin-left:6px !important;
padding:1px 4px !important;
background:#F4E3E6 !important; /* light crimson tint */
border:1px solid #E3C3CA !important;
border-radius:3px !important;
}
/* ---------- SECOND-LEVEL / SUBPAGE NAVIGATION ---------- */
/*
Replace .SUBPAGE-NAV-WRAPPER with the wrapper element Oracle
renders around the subpage navigation row.
*/
.SUBPAGE-NAV-WRAPPER {
background:#F3F4F5 !important;
border-top:1px solid #D6D9DC !important;
border-bottom:1px solid #C8CDD1 !important;
padding:5px 8px !important;
min-height:34px !important;
}
/* Normal subpage */
.SUBPAGE-NAV-WRAPPER .secondaryTabEnabled {
padding:6px 11px !important;
font-size:12px !important;
font-weight:400 !important;
}
/* Selected subpage */
.SUBPAGE-NAV-WRAPPER .secondaryTabSelected,
.SUBPAGE-NAV-WRAPPER .masterTabBarTabSecondarySelected {
background:#FFFFFF !important;
border:1px solid #C6CBD0 !important;
border-radius:3px !important;
color:#981E32 !important;
font-weight:700 !important;
padding:6px 11px !important;
}
/* ---------- DESIRED BEHAVIOR ---------- */
/*
Do not create or reserve a second navigation row when the
selected top-level page has no subpages.
Oracle should continue to render the subpage row only when
subpages exist for the selected parent.
Pages that contain subpages remain visually identifiable by:
1. Bold text
2. Downward chevron (down triangle)
Active state is communicated separately with WSU crimson.
*/
DOM selectors to confirm
Two selectors must be confirmed in browser developer tools before deployment (see the gating items above):
- The wrapper around the rendered second-level navigation row containing links such as Active Student Details and Current Student CITI Status. Replace
.SUBPAGE-NAV-WRAPPERwith that selector. - Whether Oracle places a class or attribute on a top-level page that contains subpages even when that parent is not selected. If so, replace
.HAS-SUBPAGESwith that selector and the chevron can be implemented entirely in CSS. If not, the chevron requires a JavaScript or manual-tagging fallback.