// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* Javascript for DevicesPage and DevicesView, served from
* chrome://bluetooth-internals/.
*/
import './device_table.js';
import {DeviceCollection} from './device_collection.js';
import {Page} from './page.js';
/**
* Enum of scan status for the devices page.
* @enum {number}
*/
export const ScanStatus = {
OFF: 0,
STARTING: 1,
ON: 2,
STOPPING: 3,
};
/**
* Page that contains a header and a DevicesView.
*/
export class DevicesPage extends Page {
constructor() {
super('devices', 'Devices', 'devices');
this.deviceTable = document.createElement('device-table');
this.pageDiv.appendChild(this.deviceTable);
this.scanBtn_ = this.pageDiv.querySelector('#scan-btn');
this.scanBtn_.addEventListener('click', event => {
this.pageDiv.dispatchEvent(new CustomEvent('scanpressed'));
});
}
/**
* Sets the device collection for the page's device table.
* @param {!DeviceCollection} devices
*/
setDevices(devices) {
this.deviceTable.setDevices(devices);
}
/**
* Updates the inspect status of the given |deviceInfo| in the device table.
* @param {!DeviceInfo} deviceInfo
* @param {boolean} isInspecting
*/
setInspecting(deviceInfo, isInspecting) {
this.deviceTable.setInspecting(deviceInfo, isInspecting);
}
/**
* If Bluetooth is currently powered off do not show start discovery button.
* @param {boolean} powered
*/
updatedScanButtonVisibility(powered) {
this.scanBtn_.hidden = !powered;
}
setScanStatus(status) {
switch (status) {
case ScanStatus.OFF:
this.scanBtn_.disabled = false;
this.scanBtn_.textContent = 'Start Scan';
break;
case ScanStatus.STARTING:
this.scanBtn_.disabled = true;
this.scanBtn_.textContent = 'Starting...';
break;
case ScanStatus.ON:
this.scanBtn_.disabled = false;
this.scanBtn_.textContent = 'Stop Scan';
break;
case ScanStatus.STOPPING:
this.scanBtn_.disabled = true;
this.scanBtn_.textContent = 'Stopping...';
break;
}
}
}