| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2015 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. |
| --> |
| <link rel="import" href="/base/statistics.html"> |
| <script> |
| 'use strict'; |
| tr.exportTo('tr.ui.units', function() { |
| var ArrayOfNumbersSummaryModes = { |
| AVERAGE_MODE: 'average-mode', |
| TOTAL_MODE: 'total-mode' |
| }; |
| return { |
| ArrayOfNumbersSummaryModes: ArrayOfNumbersSummaryModes |
| }; |
| }); |
| </script> |
| <polymer-element name="tr-ui-u-array-of-numbers-span"> |
| <template> |
| </template> |
| <script> |
| 'use strict'; |
| |
| Polymer({ |
| created: function() { |
| this.numbers_ = undefined; |
| this.summaryMode_ = tr.ui.units.ArrayOfNumbersSummaryModes.AVERAGE_MODE; |
| }, |
| |
| get summaryMode() { |
| return this.summaryMode_; |
| }, |
| |
| set summaryMode(summaryMode) { |
| this.summaryMode_ = summaryMode; |
| this.updateContents_(); |
| }, |
| |
| get numbers() { |
| return this.numbers_; |
| }, |
| |
| set numbers(numbers) { |
| if (numbers === undefined) { |
| this.numbers_ = undefined; |
| this.updateContents_(); |
| return; |
| } |
| if (!(numbers instanceof Array)) |
| throw new Error('Must provide an array'); |
| this.numbers_ = numbers; |
| this.updateContents_(); |
| }, |
| |
| updateContents_: function() { |
| if (this.numbers_ === undefined) { |
| this.shadowRoot.textContent = '-'; |
| return; |
| } |
| |
| var ArrayOfNumbersSummaryModes = tr.ui.units.ArrayOfNumbersSummaryModes; |
| var value; |
| if (this.summaryMode_ === ArrayOfNumbersSummaryModes.AVERAGE_MODE) |
| value = tr.b.Statistics.mean(this.numbers_); |
| else |
| value = tr.b.Statistics.sum(this.numbers_); |
| |
| var valueRounded = Math.round(value * 1000.0) / 1000.0; |
| this.shadowRoot.textContent = valueRounded; |
| } |
| }); |
| </script> |
| </polymer-element> |