<!DOCTYPE html>
<!--
Copyright 2016 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="/components/core-icon/core-icon.html">

<polymer-element name="alert-icon">
  <template>
    <style>

      .highlighted {
        box-shadow: 0px 0px 5px #ffba02;
        border: 2px solid #ffba02;
        border-radius: 14px;
      }

    </style>

    <core-icon id="icon"></core-icon>

  </template>
  <script>
    'use strict';
    Polymer('alert-icon', {

      initialize: function(alertAnnotation, alertKey) {
        var bugId = alertAnnotation['bug_id'];
        var improvement = alertAnnotation['improvement'];
        var recovered = alertAnnotation['recovered'];
        var key = alertAnnotation['key'];

        this.$.icon.icon = 'report';
        var color = 'black';
        if (!bugId && !improvement) {
          color = 'red';
        } else if (!bugId && improvement) {
          color = 'green';
          this.$.icon.icon = 'info';
        }

        this.$.icon.style.color = color;

        if (bugId && bugId < 0 || recovered) {
          // Triaged as invalid, ignored, or recovered; lower opacity.
          this.$.icon.style.opacity = 0.25;
        }

        // alertKey is an optional attribute to specify that this chart
        // is associated with an alert. If this alert is the one alert that
        // this chart is meant to draw attention to, we want to distinguish
        // this alert from any others on the chart.
        if (alertKey == key) {
           this.$.icon.classList.add('highlighted');
        }
      },

      setPosition: function(top, left) {
        this.$.icon.style.top = top + 'px';
        this.$.icon.style.left = left + 'px';
      }
    });
  </script>
</polymer-element>
