blob: f3808be412443b9e15d769078831c7c3ee98cb69 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
Polymer((function() {
/** @const */ var ICON_COLORS = [
'#F0B9CB', '#F0ACC3', '#F098B6', '#F084A9', '#F06D99', '#F05287', '#F0467F',
'#F03473', '#F01E65', '#F00051'
];
return {
is: 'pairing-device-list',
properties: {
devices: Array,
selected: {type: String, notify: true},
connecting: {type: Boolean, reflectToAttribute: true}
},
getStyleForDeviceIcon_: function(deviceName) {
return 'color: ' + this.colorByName_(deviceName);
},
/* Returns pseudo-random color depending of hash of the |name|. */
colorByName_: function(name) {
var hash = 0;
for (var i = 0; i < name.length; ++i)
hash = (name.charCodeAt(i) + 31 * hash) | 0;
return ICON_COLORS[hash % ICON_COLORS.length];
}
};
})());
Polymer({
is: 'controller-pairing-page',
behaviors: [Polymer.NeonAnimatableBehavior],
properties: {
animationConfig: {
value: function() {
return {
'entry': [{name: 'fade-in-animation', node: this}],
'exit': [{name: 'fade-out-animation', node: this}]
};
}
}
}
});
Polymer((function() {
'use strict';
// Keep these constants synced with corresponding constants defined in
// controller_pairing_screen_actor.{h,cc}.
/** @const */ var CONTEXT_KEY_CONTROLS_DISABLED = 'controlsDisabled';
/** @const */ var CONTEXT_KEY_SELECTED_DEVICE = 'selectedDevice';
/** @const */ var CONTEXT_KEY_ACCOUNT_ID = 'accountId';
/** @const */ var ACTION_ENROLL = 'enroll';
/** @const */ var PAGE_AUTHENTICATION = 'authentication';
return {
is: 'controller-pairing-screen',
behaviors: [login.OobeScreenBehavior],
properties:
{selectedDevice: {type: String, observer: 'selectedDeviceChanged_'}},
observers: ['deviceListChanged_(C.devices)'],
ready: function() {
/**
* Workaround for
* https://github.com/PolymerElements/neon-animation/issues/32
* TODO(dzhioev): Remove when fixed in Polymer.
*/
var pages = this.$.pages;
delete pages._squelchNextFinishEvent;
Object.defineProperty(pages, '_squelchNextFinishEvent', {
get: function() {
return false;
}
});
},
/** @override */
initialize: function() {
['code', 'controlsDisabled', 'devices', 'enrollmentDomain', 'page']
.forEach(this.registerBoundContextField, this);
this.context.set(CONTEXT_KEY_CONTROLS_DISABLED, true);
this.commitContextChanges();
},
i18n: function(args) {
return loadTimeData.getStringF.apply(loadTimeData, args);
},
deviceListChanged_: function() {
this.selectedDevice = this.context.get(CONTEXT_KEY_SELECTED_DEVICE, null);
},
selectedDeviceChanged_: function(selectedDevice) {
this.context.set(
CONTEXT_KEY_SELECTED_DEVICE, selectedDevice ? selectedDevice : '');
this.commitContextChanges();
},
helpButtonClicked_: function() {
console.error('Help is not implemented yet.');
},
getHostEnrollmentStepTitle_: function(domain) {
return this.i18n(
['loginControllerPairingScreenEnrollmentInProgress', domain]);
},
getSuccessMessage_: function(selectedDevice) {
return this.i18n(
['loginControllerPairingScreenSuccessText', selectedDevice]);
}
};
})());