<!--
@license
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-serviceuser-list">
  <template>
    <style include="shared-styles"></style>
    <style include="gr-table-styles"></style>
    <style>
      .topHeader {
        padding: 8px;
      }

      #topContainer {
        align-items: center;
        display: flex;
        height: 3rem;
        justify-content: space-between;
        margin: 0 1em;
      }
    </style>
    <div class="topHeader">
      <h2>Service Users</h2>
    </div>
    <div id="topContainer">
      <div></div>
      <div id="createNewContainer"
           class$="[[_computeCreateClass(createNew)]]">
        <gr-button primary
                   link
                   id="createNew"
                   on-tap="_createNewServiceUser">
          Create New
        </gr-button>
      </div>
    </div>
    <table id="list"
           class="genericList">
      <tr class="headerRow">
        <th class="name topHeader">Username</th>
        <th class="fullName topHeader">Full Name</th>
        <th class="email topHeader">Email</th>
        <th class="owner topHeader">Owner</th>
        <th class="createdBy topHeader">Created By</th>
        <th class="createdAt topHeader">Created At</th>
        <th class="accountState topHeader">Account State</th>
      </tr>
      <tr id="loading"
          class$="loadingMsg [[computeLoadingClass(_loading)]]">
        <td>Loading...</td>
      </tr>
      <tbody class$="[[computeLoadingClass(_loading)]]">
        <template is="dom-repeat"
                  items="[[_serviceUsers]]">
          <tr class="table">
            <td class="name">
              <a href$="[[_computeServiceUserUrl(item._account_id)]]">[[item.username]]</a>
            </td>
            <td class="fullName">[[item.name]]</td>
            <td class="email">[[item.email]]</td>
            <td class="owner">[[_getOwnerGroup(item)]]</td>
            <td class="createdBy">[[_getCreator(item)]]</td>
            <td class="createdAt">[[item.created_at]]</td>
            <td class="accountState">[[_active(item)]]</td>
          </tr>
        </template>
      </tbody>
    </table>
  </template>
  <script src="gr-serviceuser-list.js"></script>
</dom-module>
