| // Copyright 2020 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| import './stats-panel.mjs'; |
| import './map-panel/map-details.mjs'; |
| import './map-panel/map-transitions.mjs'; |
| |
| import {FocusEvent} from './events.mjs'; |
| import {DOM, V8CustomElement} from './helper.mjs'; |
| import {MapLogEntry} from './log/map.mjs'; |
| |
| DOM.defineCustomElement('map-panel', |
| (templateText) => |
| class MapPanel extends V8CustomElement { |
| _map; |
| constructor() { |
| super(templateText); |
| this.searchBarBtn.addEventListener('click', e => this.handleSearchBar(e)); |
| this.addEventListener(FocusEvent.name, e => this.handleUpdateMapDetails(e)); |
| } |
| |
| handleUpdateMapDetails(e) { |
| if (e.entry instanceof MapLogEntry) { |
| this.mapDetailsPanel.map = e.entry; |
| } |
| } |
| |
| get mapTransitionsPanel() { |
| return this.$('#map-transitions'); |
| } |
| |
| get mapDetailsPanel() { |
| return this.$('#map-details'); |
| } |
| |
| get searchBarBtn() { |
| return this.$('#searchBarBtn'); |
| } |
| |
| get searchBar() { |
| return this.$('#searchBar'); |
| } |
| |
| set timeline(timeline) { |
| this._timeline = timeline; |
| } |
| |
| set map(value) { |
| this._map = value; |
| this.mapTransitionsPanel.map = this._map; |
| } |
| |
| handleSearchBar(e) { |
| let searchBar = this.$('#searchBarInput'); |
| let searchBarInput = searchBar.value; |
| // access the map from model cache |
| let selectedMap = MapLogEntry.get(parseInt(searchBarInput)); |
| if (selectedMap) { |
| searchBar.className = 'success'; |
| } else { |
| searchBar.className = 'failure'; |
| } |
| this.dispatchEvent(new FocusEvent(selectedMap)); |
| } |
| |
| set selectedMapLogEntries(list) { |
| this.mapTransitionsPanel.selectedMapLogEntries = list; |
| } |
| get selectedMapLogEntries() { |
| return this.mapTransitionsPanel.selectedMapLogEntries; |
| } |
| }); |