<!--
Copyright (C) 2019 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<dom-module id="gr-task-plugin">
  <template>
      <style>
        ul { padding-left: 0.5em; }
        h3 { padding-left: 0.1em; }
        .cursor { cursor: pointer; }
        #tasks_header {
          align-items: center;
          background-color: #fafafa;
          border-top: 1px solid #ddd;
          display: flex;
          padding: 6px 1rem;
        }
      </style>

      <div id="tasks" hidden$="[[!_tasks.length]]">
        <div id="tasks_header" style="display: flex;">
          <iron-icon
              icon="gr-icons:expand-less"
              hidden$="[[!_expand_all]]"
              on-tap="_switch_expand"
              class="cursor"> </iron-icon>
          <iron-icon
              icon="gr-icons:expand-more"
              hidden$="[[_expand_all]]"
              on-tap="_switch_expand"
              class="cursor"> </iron-icon>
          <div style="display: flex; align-items: center; column-gap: 1em;">
          <h3 on-tap="_switch_expand" class="cursor"> Tasks </h3>
          <template is="dom-if" if="[[_expand_all]]">
            <gr-button
                on-tap="_show_all_tap"
                disabled="[[_is_show_all(_show_all)]]"> Show All ([[_all_count]]) </gr-button>
            <gr-button
                on-tap="_needs_and_blocked_tap"
                disabled="[[!_is_show_all(_show_all)]]">
              Needs + Blocked ([[_ready_count]], [[_fail_count]]) </gr-button>
          </template>
        </div>
        </div>
        <div hidden$="[[!_expand_all]]">
          <ul style="list-style-type:none;">
            <gr-task-plugin-tasks
                tasks="[[_tasks]]"
                show_all$="[[_show_all]]"> </gr-task-plugin-tasks>
          </ul>
        </div>
      </div>
  </template>
  <script src="gr-task-plugin.js"></script>
</dom-module>

<dom-module id="gr-task-plugin-tasks">
  <template>
    <template is="dom-repeat" as="task" items="[[tasks]]">
      <template is="dom-if" if="[[_can_show(show_all, task)]]">
        <li>
          <style>
            /* Matching colors with core code. */
            .green {
              color: #9fcc6b;
            }
            .red {
              color: #FFA62F;
            }
          </style>
          <template is="dom-if" if="[[task.icon.id]]">
            <gr-tooltip-content
                has-tooltip
                title="In Progress">
                <iron-icon
                  icon="gr-icons:hourglass"
                  class="green"
                  hidden$="[[!task.in_progress]]">
                </iron-icon>
            </gr-tooltip-content>
            <gr-tooltip-content
                has-tooltip
                title$="[[task.icon.tooltip]]">
                <iron-icon
                  icon="[[task.icon.id]]"
                  class$="[[task.icon.color]]">
                </iron-icon>
            </gr-tooltip-content>
          </template>
          [[task.message]]
        </li>
      </template>
      <gr-task-plugin-tasks
          tasks="[[task.sub_tasks]]"
          show_all$="[[show_all]]"> </gr-task-plugin-tasks>
    </template>
  </template>
  <script>
      Polymer({
        is: 'gr-task-plugin-tasks',
        properties: {
          tasks: {
            type: Array,
            notify: true,
            value() { return []; },
          },

          show_all: {
            type: String,
            notify: true,
          },
        },

        _can_show(show, task) {
          return show === 'true' || task.showOnFilter;
        },
      });
  </script>
</dom-module>
