1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 'use strict'; 6 7 /** 8 * @fileoverview A scrollbar-like control with constant text hi/lo values. 9 */ 10 base.require('ui'); 11 base.require('base.properties'); 12 base.require('ui.value_bar'); 13 14 base.exportTo('ui', function() { 15 16 /** 17 * @constructor 18 */ 19 var TextEndValueBar = ui.define('text-end-value-bar'); 20 21 TextEndValueBar.prototype = { 22 __proto__: ui.ValueBar.prototype, 23 24 decorate: function() { 25 this.lowestValueProperties_ = {textContent: ''}; 26 this.highestValueProperties_ = {textContent: ''}; 27 ui.ValueBar.prototype.decorate.call(this); 28 this.classList.add('text-end-value-bar'); 29 }, 30 31 get lowestValueProperties() { 32 return this.lowestValueProperties_; 33 }, 34 35 set lowestValueProperties(newValue) { 36 console.assert(typeof newValue === 'object' && 37 (newValue.style || newValue.textContent)); 38 this.lowestValueProperties_ = newValue; 39 base.dispatchPropertyChange(this, 'lowestValue', 40 this.lowestValue, this.lowestValue); 41 }, 42 43 get highestValueProperties() { 44 return this.highestValueProperties_; 45 }, 46 47 set highestValueProperties(newValue) { 48 console.assert(typeof newValue === 'object' && 49 (newValue.style || newValue.textContent)); 50 this.highestValueProperties_ = newValue; 51 base.dispatchPropertyChange(this, 'highestValue', 52 this.highestValue, this.highestValue); 53 }, 54 55 copyOwnProperties_: function(dst, src) { 56 if (!src) 57 return; 58 Object.keys(src).forEach(function(key) { 59 dst[key] = src[key]; 60 }); 61 }, 62 63 updateLowestValueElement: function(element) { 64 this.copyOwnProperties_(element.style, 65 this.lowestValueProperties_.style); 66 element.textContent = this.lowestValueProperties_.textContent || ''; 67 }, 68 69 updateHighestValueElement: function(element) { 70 this.copyOwnProperties_(element.style, 71 this.highestValueProperties_.style); 72 element.textContent = this.highestValueProperties_.textContent || ''; 73 }, 74 75 }; 76 77 return { 78 TextEndValueBar: TextEndValueBar 79 }; 80 }); 81