xref: /aosp_15_r20/tools/netsim/ui/ts/navigation-bar.ts (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Workerimport {css, html, LitElement} from 'lit';
2*cf78ab8cSAndroid Build Coastguard Workerimport {customElement} from 'lit/decorators.js';
3*cf78ab8cSAndroid Build Coastguard Worker
4*cf78ab8cSAndroid Build Coastguard Worker@customElement('ns-navigation-bar')
5*cf78ab8cSAndroid Build Coastguard Workerexport class NavigationBar extends LitElement {
6*cf78ab8cSAndroid Build Coastguard Worker  static styles = css`
7*cf78ab8cSAndroid Build Coastguard Worker    :host {
8*cf78ab8cSAndroid Build Coastguard Worker      --border-color: rgb(255, 255, 255, 0.1);
9*cf78ab8cSAndroid Build Coastguard Worker      --background-color: #747474;
10*cf78ab8cSAndroid Build Coastguard Worker    }
11*cf78ab8cSAndroid Build Coastguard Worker
12*cf78ab8cSAndroid Build Coastguard Worker    .logo {
13*cf78ab8cSAndroid Build Coastguard Worker      background-image: url(./assets/netsim-logo.svg);
14*cf78ab8cSAndroid Build Coastguard Worker      background-repeat: no-repeat;
15*cf78ab8cSAndroid Build Coastguard Worker      margin-left: 25%;
16*cf78ab8cSAndroid Build Coastguard Worker      width: 50px;
17*cf78ab8cSAndroid Build Coastguard Worker      height: 50px;
18*cf78ab8cSAndroid Build Coastguard Worker    }
19*cf78ab8cSAndroid Build Coastguard Worker
20*cf78ab8cSAndroid Build Coastguard Worker    nav {
21*cf78ab8cSAndroid Build Coastguard Worker      display: flex;
22*cf78ab8cSAndroid Build Coastguard Worker      width: 100%;
23*cf78ab8cSAndroid Build Coastguard Worker      border-bottom: 1px solid var(--border-color);
24*cf78ab8cSAndroid Build Coastguard Worker      background-color: var(--background-color);
25*cf78ab8cSAndroid Build Coastguard Worker      margin-bottom: 10px;
26*cf78ab8cSAndroid Build Coastguard Worker    }
27*cf78ab8cSAndroid Build Coastguard Worker
28*cf78ab8cSAndroid Build Coastguard Worker    nav > .nav-section {
29*cf78ab8cSAndroid Build Coastguard Worker      padding: 3rem 2rem;
30*cf78ab8cSAndroid Build Coastguard Worker      display: flex;
31*cf78ab8cSAndroid Build Coastguard Worker      gap: 1rem;
32*cf78ab8cSAndroid Build Coastguard Worker      border-left: 1px solid var(--border-color);
33*cf78ab8cSAndroid Build Coastguard Worker      align-items: center;
34*cf78ab8cSAndroid Build Coastguard Worker      justify-content: center;
35*cf78ab8cSAndroid Build Coastguard Worker    }
36*cf78ab8cSAndroid Build Coastguard Worker
37*cf78ab8cSAndroid Build Coastguard Worker    #nav-logo-section {
38*cf78ab8cSAndroid Build Coastguard Worker      justify-content: flex-start;
39*cf78ab8cSAndroid Build Coastguard Worker      flex-basis: calc(100% / 4);
40*cf78ab8cSAndroid Build Coastguard Worker    }
41*cf78ab8cSAndroid Build Coastguard Worker
42*cf78ab8cSAndroid Build Coastguard Worker    #nav-link-section {
43*cf78ab8cSAndroid Build Coastguard Worker      flex-basis: calc(100% / 2);
44*cf78ab8cSAndroid Build Coastguard Worker      gap: 6rem;
45*cf78ab8cSAndroid Build Coastguard Worker    }
46*cf78ab8cSAndroid Build Coastguard Worker
47*cf78ab8cSAndroid Build Coastguard Worker    #nav-contact-section {
48*cf78ab8cSAndroid Build Coastguard Worker      flex-grow: 1;
49*cf78ab8cSAndroid Build Coastguard Worker    }
50*cf78ab8cSAndroid Build Coastguard Worker
51*cf78ab8cSAndroid Build Coastguard Worker    a {
52*cf78ab8cSAndroid Build Coastguard Worker      text-decoration: none;
53*cf78ab8cSAndroid Build Coastguard Worker    }
54*cf78ab8cSAndroid Build Coastguard Worker
55*cf78ab8cSAndroid Build Coastguard Worker    a:hover {
56*cf78ab8cSAndroid Build Coastguard Worker      cursor: pointer;
57*cf78ab8cSAndroid Build Coastguard Worker    }
58*cf78ab8cSAndroid Build Coastguard Worker
59*cf78ab8cSAndroid Build Coastguard Worker    h1,
60*cf78ab8cSAndroid Build Coastguard Worker    h2,
61*cf78ab8cSAndroid Build Coastguard Worker    h3,
62*cf78ab8cSAndroid Build Coastguard Worker    a,
63*cf78ab8cSAndroid Build Coastguard Worker    p,
64*cf78ab8cSAndroid Build Coastguard Worker    span {
65*cf78ab8cSAndroid Build Coastguard Worker      font-family: 'Lato';
66*cf78ab8cSAndroid Build Coastguard Worker      font-weight: bold;
67*cf78ab8cSAndroid Build Coastguard Worker      color: white;
68*cf78ab8cSAndroid Build Coastguard Worker      font-size: 25px;
69*cf78ab8cSAndroid Build Coastguard Worker    }
70*cf78ab8cSAndroid Build Coastguard Worker  `;
71*cf78ab8cSAndroid Build Coastguard Worker
72*cf78ab8cSAndroid Build Coastguard Worker  connectedCallback() {
73*cf78ab8cSAndroid Build Coastguard Worker    super.connectedCallback();  // eslint-disable-line
74*cf78ab8cSAndroid Build Coastguard Worker  }
75*cf78ab8cSAndroid Build Coastguard Worker
76*cf78ab8cSAndroid Build Coastguard Worker  disconnectedCallback() {
77*cf78ab8cSAndroid Build Coastguard Worker    super.disconnectedCallback();  // eslint-disable-line
78*cf78ab8cSAndroid Build Coastguard Worker  }
79*cf78ab8cSAndroid Build Coastguard Worker
80*cf78ab8cSAndroid Build Coastguard Worker  private handleClick(ev: Event) {
81*cf78ab8cSAndroid Build Coastguard Worker    let mode = 'main';
82*cf78ab8cSAndroid Build Coastguard Worker    if ((ev.target as HTMLElement).id === 'nav-trace-section') {
83*cf78ab8cSAndroid Build Coastguard Worker      mode = 'trace';
84*cf78ab8cSAndroid Build Coastguard Worker    } else if ((ev.target as HTMLElement).id === 'nav-os-library-section') {
85*cf78ab8cSAndroid Build Coastguard Worker      mode = 'oslib';
86*cf78ab8cSAndroid Build Coastguard Worker    }
87*cf78ab8cSAndroid Build Coastguard Worker    window.dispatchEvent(new CustomEvent('changeModeEvent', {detail: {mode}}));
88*cf78ab8cSAndroid Build Coastguard Worker  }
89*cf78ab8cSAndroid Build Coastguard Worker
90*cf78ab8cSAndroid Build Coastguard Worker  private alertMissingLink() {
91*cf78ab8cSAndroid Build Coastguard Worker    window.alert('This link is currently under construction');
92*cf78ab8cSAndroid Build Coastguard Worker  }
93*cf78ab8cSAndroid Build Coastguard Worker
94*cf78ab8cSAndroid Build Coastguard Worker  render() {
95*cf78ab8cSAndroid Build Coastguard Worker    return html`
96*cf78ab8cSAndroid Build Coastguard Worker      <nav>
97*cf78ab8cSAndroid Build Coastguard Worker        <div id="nav-logo-section" class="nav-section">
98*cf78ab8cSAndroid Build Coastguard Worker          <a>
99*cf78ab8cSAndroid Build Coastguard Worker            <div id="nav-logo-pic" class="logo" @click=${
100*cf78ab8cSAndroid Build Coastguard Worker        this.handleClick} role="tab" tabindex="0" aria-label="Netsim Logo, change view mode to scene view"></div>
101*cf78ab8cSAndroid Build Coastguard Worker          </a>
102*cf78ab8cSAndroid Build Coastguard Worker          <p>netsim</p>
103*cf78ab8cSAndroid Build Coastguard Worker        </div>
104*cf78ab8cSAndroid Build Coastguard Worker        <div id="nav-link-section" class="nav-section">
105*cf78ab8cSAndroid Build Coastguard Worker          <a href="javascript:void(0)" @click=${
106*cf78ab8cSAndroid Build Coastguard Worker        this.alertMissingLink} rel="noopener noreferrer"
107*cf78ab8cSAndroid Build Coastguard Worker            >ABOUT</a
108*cf78ab8cSAndroid Build Coastguard Worker          >
109*cf78ab8cSAndroid Build Coastguard Worker          <a href="javascript:void(0)" id="nav-trace-section" @click=${
110*cf78ab8cSAndroid Build Coastguard Worker        this.handleClick} role="tab" aria-label="Packet Trace, change view mode to packet trace view"
111*cf78ab8cSAndroid Build Coastguard Worker            >PACKET TRACE</a
112*cf78ab8cSAndroid Build Coastguard Worker          >
113*cf78ab8cSAndroid Build Coastguard Worker          <a href="javascript:void(0)" id="nav-os-library-section" @click=${
114*cf78ab8cSAndroid Build Coastguard Worker        this.handleClick} role = "tab" aria-label="Open Source Libraries, change view mode to open source libraries view"
115*cf78ab8cSAndroid Build Coastguard Worker            >OPEN SOURCE LIBRARIES</a
116*cf78ab8cSAndroid Build Coastguard Worker          >
117*cf78ab8cSAndroid Build Coastguard Worker        </div>
118*cf78ab8cSAndroid Build Coastguard Worker        <div id="nav-contact-section" class="nav-section">
119*cf78ab8cSAndroid Build Coastguard Worker          <a
120*cf78ab8cSAndroid Build Coastguard Worker            href="javascript:void(0)"
121*cf78ab8cSAndroid Build Coastguard Worker            @click=${this.alertMissingLink}
122*cf78ab8cSAndroid Build Coastguard Worker            rel="noopener noreferrer"
123*cf78ab8cSAndroid Build Coastguard Worker            >DOCUMENTATION</a
124*cf78ab8cSAndroid Build Coastguard Worker          >
125*cf78ab8cSAndroid Build Coastguard Worker        </div>
126*cf78ab8cSAndroid Build Coastguard Worker      </nav>
127*cf78ab8cSAndroid Build Coastguard Worker    `;
128*cf78ab8cSAndroid Build Coastguard Worker  }
129*cf78ab8cSAndroid Build Coastguard Worker}
130