/**
 * @license
 * Copyright (C) 2020 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.
 */
import {html} from '@polymer/polymer/lib/utils/html-tag';

export const htmlTemplate = html`
  <style include="gr-font-styles">
    /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
  </style>
  <style include="shared-styles">
    :host {
      color: var(--primary-text-color);
    }
    h2 {
      font-family: var(--header-font-family);
      font-size: var(--font-size-h2);
      font-weight: var(--font-weight-h2);
      line-height: var(--line-height-h2);
    }
    .newEmailInput {
      width: 20em;
    }
    #email {
      margin-bottom: var(--spacing-l);
    }
    .main section.darkToggle {
      display: block;
    }
    .filters p,
    .darkToggle p {
      margin-bottom: var(--spacing-l);
    }
    .queryExample em {
      color: violet;
    }
    .toggle {
      align-items: center;
      display: flex;
      margin-bottom: var(--spacing-l);
      margin-right: var(--spacing-l);
    }
  </style>
  <style include="gr-form-styles">
    /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
  </style>
  <style include="gr-menu-page-styles">
    /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
  </style>
  <style include="gr-page-nav-styles">
    /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
  </style>
  <div class="loading" hidden$="[[!_loading]]">Loading...</div>
  <div hidden$="[[_loading]]" hidden="">
    <gr-page-nav class="navStyles">
      <ul>
        <li><a href="#Profile">Profile</a></li>
        <li><a href="#Preferences">Preferences</a></li>
        <li><a href="#DiffPreferences">Diff Preferences</a></li>
        <li><a href="#EditPreferences">Edit Preferences</a></li>
        <li><a href="#Menu">Menu</a></li>
        <li><a href="#ChangeTableColumns">Change Table Columns</a></li>
        <li><a href="#Notifications">Notifications</a></li>
        <li><a href="#EmailAddresses">Email Addresses</a></li>
        <template is="dom-if" if="[[_showHttpAuth(_serverConfig)]]">
          <li><a href="#HTTPCredentials">HTTP Credentials</a></li>
        </template>
        <li hidden$="[[!_serverConfig.sshd]]">
          <a href="#SSHKeys"> SSH Keys </a>
        </li>
        <li hidden$="[[!_serverConfig.receive.enable_signed_push]]">
          <a href="#GPGKeys"> GPG Keys </a>
        </li>
        <li><a href="#Groups">Groups</a></li>
        <li><a href="#Identities">Identities</a></li>
        <template
          is="dom-if"
          if="[[_serverConfig.auth.use_contributor_agreements]]"
        >
          <li>
            <a href="#Agreements">Agreements</a>
          </li>
        </template>
        <li><a href="#MailFilters">Mail Filters</a></li>
        <gr-endpoint-decorator name="settings-menu-item">
        </gr-endpoint-decorator>
      </ul>
    </gr-page-nav>
    <div class="main gr-form-styles">
      <h1 class="heading-1">User Settings</h1>
      <section class="darkToggle">
        <div class="toggle">
          <paper-toggle-button
            aria-labelledby="darkThemeToggleLabel"
            checked="[[_isDark]]"
            on-change="_handleToggleDark"
            on-click="_onTapDarkToggle"
          ></paper-toggle-button>
          <div id="darkThemeToggleLabel">Dark theme (alpha)</div>
        </div>
        <p>
          Gerrit's dark theme is in early alpha, and almost definitely will not
          play nicely with themes set by specific Gerrit hosts. Filing feedback
          via the link in the app footer is strongly encouraged!
        </p>
      </section>
      <h2 id="Profile" class$="[[_computeHeaderClass(_accountInfoChanged)]]">
        Profile
      </h2>
      <fieldset id="profile">
        <gr-account-info
          id="accountInfo"
          has-unsaved-changes="{{_accountInfoChanged}}"
        ></gr-account-info>
        <gr-button
          on-click="_handleSaveAccountInfo"
          disabled="[[!_accountInfoChanged]]"
          >Save changes</gr-button
        >
      </fieldset>
      <h2 id="Preferences" class$="[[_computeHeaderClass(_prefsChanged)]]">
        Preferences
      </h2>
      <fieldset id="preferences">
        <section>
          <label class="title" for="changesPerPageSelect"
            >Changes per page</label
          >
          <span class="value">
            <gr-select
              bind-value="[[_convertToString(_localPrefs.changes_per_page)]]"
              on-change="_handleChangesPerPage"
            >
              <select id="changesPerPageSelect">
                <option value="10">10 rows per page</option>
                <option value="25">25 rows per page</option>
                <option value="50">50 rows per page</option>
                <option value="100">100 rows per page</option>
              </select>
            </gr-select>
          </span>
        </section>
        <section>
          <label class="title" for="dateTimeFormatSelect"
            >Date/time format</label
          >
          <span class="value">
            <gr-select
              bind-value="[[_convertToString(_localPrefs.date_format)]]"
              on-change="_handleDateFormat"
            >
              <select id="dateTimeFormatSelect">
                <option value="STD">Jun 3 ; Jun 3, 2016</option>
                <option value="US">06/03 ; 06/03/16</option>
                <option value="ISO">06-03 ; 2016-06-03</option>
                <option value="EURO">3. Jun ; 03.06.2016</option>
                <option value="UK">03/06 ; 03/06/2016</option>
              </select>
            </gr-select>
            <gr-select
              bind-value="[[_convertToString(_localPrefs.time_format)]]"
              aria-label="Time Format"
              on-change="_handleTimeFormat"
            >
              <select id="timeFormatSelect">
                <option value="HHMM_12">4:10 PM</option>
                <option value="HHMM_24">16:10</option>
              </select>
            </gr-select>
          </span>
        </section>
        <section>
          <label class="title" for="emailNotificationsSelect"
            >Email notifications</label
          >
          <span class="value">
            <gr-select
              bind-value="[[_convertToString(_localPrefs.email_strategy)]]"
              on-change="_handleEmailStrategy"
            >
              <select id="emailNotificationsSelect">
                <option value="CC_ON_OWN_COMMENTS">Every comment</option>
                <option value="ENABLED">Only comments left by others</option>
                <option value="ATTENTION_SET_ONLY">
                  Only when I am in the attention set
                </option>
                <option value="DISABLED">None</option>
              </select>
            </gr-select>
          </span>
        </section>
        <section hidden$="[[!_convertToString(_localPrefs.email_format)]]">
          <label class="title" for="emailFormatSelect">Email format</label>
          <span class="value">
            <gr-select
              bind-value="[[_convertToString(_localPrefs.email_format)]]"
              on-change="_handleEmailFormat"
            >
              <select id="emailFormatSelect">
                <option value="HTML_PLAINTEXT">HTML and plaintext</option>
                <option value="PLAINTEXT">Plaintext only</option>
              </select>
            </gr-select>
          </span>
        </section>
        <section hidden$="[[!_localPrefs.default_base_for_merges]]">
          <span class="title">Default Base For Merges</span>
          <span class="value">
            <gr-select
              bind-value="[[_convertToString(_localPrefs.default_base_for_merges)]]"
              on-change="_handleDefaultBaseForMerges"
            >
              <select id="defaultBaseForMergesSelect">
                <option value="AUTO_MERGE">Auto Merge</option>
                <option value="FIRST_PARENT">First Parent</option>
              </select>
            </gr-select>
          </span>
        </section>
        <section>
          <label class="title" for="relativeDateInChangeTable"
            >Show Relative Dates In Changes Table</label
          >
          <span class="value">
            <input
              id="relativeDateInChangeTable"
              type="checkbox"
              checked$="[[_localPrefs.relative_date_in_change_table]]"
              on-change="_handleRelativeDateInChangeTable"
            />
          </span>
        </section>
        <section>
          <span class="title">Diff view</span>
          <span class="value">
            <gr-select
              bind-value="[[_convertToString(_localPrefs.diff_view)]]"
              on-change="_handleDiffView"
            >
              <select id="diffViewSelect">
                <option value="SIDE_BY_SIDE">Side by side</option>
                <option value="UNIFIED_DIFF">Unified diff</option>
              </select>
            </gr-select>
          </span>
        </section>
        <section>
          <label for="showSizeBarsInFileList" class="title"
            >Show size bars in file list</label
          >
          <span class="value">
            <input
              id="showSizeBarsInFileList"
              type="checkbox"
              checked$="[[_localPrefs.size_bar_in_change_table]]"
              on-change="_handleShowSizeBarsInFileListChanged"
            />
          </span>
        </section>
        <section>
          <label for="publishCommentsOnPush" class="title"
            >Publish comments on push</label
          >
          <span class="value">
            <input
              id="publishCommentsOnPush"
              type="checkbox"
              checked$="[[_localPrefs.publish_comments_on_push]]"
              on-change="_handlePublishCommentsOnPushChanged"
            />
          </span>
        </section>
        <section>
          <label for="workInProgressByDefault" class="title"
            >Set new changes to "work in progress" by default</label
          >
          <span class="value">
            <input
              id="workInProgressByDefault"
              type="checkbox"
              checked$="[[_localPrefs.work_in_progress_by_default]]"
              on-change="_handleWorkInProgressByDefault"
            />
          </span>
        </section>
        <section>
          <label for="disableKeyboardShortcuts" class="title"
            >Disable all keyboard shortcuts</label
          >
          <span class="value">
            <input
              id="disableKeyboardShortcuts"
              type="checkbox"
              checked$="[[_localPrefs.disable_keyboard_shortcuts]]"
              on-change="_handleDisableKeyboardShortcutsChanged"
            />
          </span>
        </section>
        <section>
          <label for="disableTokenHighlighting" class="title"
            >Disable token highlighting on hover</label
          >
          <span class="value">
            <input
              id="disableTokenHighlighting"
              type="checkbox"
              checked$="[[_localPrefs.disable_token_highlighting]]"
              on-change="_handleDisableTokenHighlightingChanged"
            />
          </span>
        </section>
        <section>
          <label for="insertSignedOff" class="title">
            Insert Signed-off-by Footer For Inline Edit Changes
          </label>
          <span class="value">
            <input
              id="insertSignedOff"
              type="checkbox"
              checked$="[[_localPrefs.signed_off_by]]"
              on-change="_handleInsertSignedOff"
            />
          </span>
        </section>
        <gr-button
          id="savePrefs"
          on-click="_handleSavePreferences"
          disabled="[[!_prefsChanged]]"
          >Save changes</gr-button
        >
      </fieldset>
      <h2
        id="DiffPreferences"
        class$="[[_computeHeaderClass(_diffPrefsChanged)]]"
      >
        Diff Preferences
      </h2>
      <fieldset id="diffPreferences">
        <gr-diff-preferences
          id="diffPrefs"
          has-unsaved-changes="{{_diffPrefsChanged}}"
        ></gr-diff-preferences>
        <gr-button
          id="saveDiffPrefs"
          on-click="_handleSaveDiffPreferences"
          disabled$="[[!_diffPrefsChanged]]"
          >Save changes</gr-button
        >
      </fieldset>
      <h2
        id="EditPreferences"
        class$="[[_computeHeaderClass(_editPrefsChanged)]]"
      >
        Edit Preferences
      </h2>
      <fieldset id="editPreferences">
        <gr-edit-preferences
          id="editPrefs"
          has-unsaved-changes="{{_editPrefsChanged}}"
        ></gr-edit-preferences>
        <gr-button
          id="saveEditPrefs"
          on-click="_handleSaveEditPreferences"
          disabled$="[[!_editPrefsChanged]]"
          >Save changes</gr-button
        >
      </fieldset>
      <h2 id="Menu" class$="[[_computeHeaderClass(_menuChanged)]]">Menu</h2>
      <fieldset id="menu">
        <gr-menu-editor menu-items="{{_localMenu}}"></gr-menu-editor>
        <gr-button
          id="saveMenu"
          on-click="_handleSaveMenu"
          disabled="[[!_menuChanged]]"
          >Save changes</gr-button
        >
        <gr-button id="resetButton" link="" on-click="_handleResetMenuButton"
          >Reset</gr-button
        >
      </fieldset>
      <h2
        id="ChangeTableColumns"
        class$="[[_computeHeaderClass(_changeTableChanged)]]"
      >
        Change Table Columns
      </h2>
      <fieldset id="changeTableColumns">
        <gr-change-table-editor
          show-number="{{_showNumber}}"
          server-config="[[_serverConfig]]"
          displayed-columns="{{_localChangeTableColumns}}"
        >
        </gr-change-table-editor>
        <gr-button
          id="saveChangeTable"
          on-click="_handleSaveChangeTable"
          disabled="[[!_changeTableChanged]]"
          >Save changes</gr-button
        >
      </fieldset>
      <h2
        id="Notifications"
        class$="[[_computeHeaderClass(_watchedProjectsChanged)]]"
      >
        Notifications
      </h2>
      <fieldset id="watchedProjects">
        <gr-watched-projects-editor
          has-unsaved-changes="{{_watchedProjectsChanged}}"
          id="watchedProjectsEditor"
        ></gr-watched-projects-editor>
        <gr-button
          on-click="_handleSaveWatchedProjects"
          disabled$="[[!_watchedProjectsChanged]]"
          id="_handleSaveWatchedProjects"
          >Save changes</gr-button
        >
      </fieldset>
      <h2 id="EmailAddresses" class$="[[_computeHeaderClass(_emailsChanged)]]">
        Email Addresses
      </h2>
      <fieldset id="email">
        <gr-email-editor
          id="emailEditor"
          has-unsaved-changes="{{_emailsChanged}}"
        ></gr-email-editor>
        <gr-button on-click="_handleSaveEmails" disabled$="[[!_emailsChanged]]"
          >Save changes</gr-button
        >
      </fieldset>
      <fieldset id="newEmail">
        <section>
          <span class="title">New email address</span>
          <span class="value">
            <iron-input
              class="newEmailInput"
              bind-value="{{_newEmail}}"
              type="text"
              on-keydown="_handleNewEmailKeydown"
              placeholder="email@example.com"
            >
              <input
                class="newEmailInput"
                type="text"
                disabled="[[_addingEmail]]"
                on-keydown="_handleNewEmailKeydown"
                placeholder="email@example.com"
              />
            </iron-input>
          </span>
        </section>
        <section
          id="verificationSentMessage"
          hidden$="[[!_lastSentVerificationEmail]]"
        >
          <p>
            A verification email was sent to
            <em>[[_lastSentVerificationEmail]]</em>. Please check your inbox.
          </p>
        </section>
        <gr-button
          disabled="[[!_computeAddEmailButtonEnabled(_newEmail, _addingEmail)]]"
          on-click="_handleAddEmailButton"
          >Send verification</gr-button
        >
      </fieldset>
      <template is="dom-if" if="[[_showHttpAuth(_serverConfig)]]">
        <div>
          <h2 id="HTTPCredentials">HTTP Credentials</h2>
          <fieldset>
            <gr-http-password id="httpPass"></gr-http-password>
          </fieldset>
        </div>
      </template>
      <div hidden$="[[!_serverConfig.sshd]]">
        <h2 id="SSHKeys" class$="[[_computeHeaderClass(_keysChanged)]]">
          SSH keys
        </h2>
        <gr-ssh-editor
          id="sshEditor"
          has-unsaved-changes="{{_keysChanged}}"
        ></gr-ssh-editor>
      </div>
      <div hidden$="[[!_serverConfig.receive.enable_signed_push]]">
        <h2 id="GPGKeys" class$="[[_computeHeaderClass(_gpgKeysChanged)]]">
          GPG keys
        </h2>
        <gr-gpg-editor
          id="gpgEditor"
          has-unsaved-changes="{{_gpgKeysChanged}}"
        ></gr-gpg-editor>
      </div>
      <h2 id="Groups">Groups</h2>
      <fieldset>
        <gr-group-list id="groupList"></gr-group-list>
      </fieldset>
      <h2 id="Identities">Identities</h2>
      <fieldset>
        <gr-identities
          id="identities"
          server-config="[[_serverConfig]]"
        ></gr-identities>
      </fieldset>
      <template
        is="dom-if"
        if="[[_serverConfig.auth.use_contributor_agreements]]"
      >
        <h2 id="Agreements">Agreements</h2>
        <fieldset>
          <gr-agreements-list id="agreementsList"></gr-agreements-list>
        </fieldset>
      </template>
      <h2 id="MailFilters">Mail Filters</h2>
      <fieldset class="filters">
        <p>
          Gerrit emails include metadata about the change to support writing
          mail filters.
        </p>
        <p>
          Here are some example Gmail queries that can be used for filters or
          for searching through archived messages. View the
          <a
            href$="[[_getFilterDocsLink(_docsBaseUrl)]]"
            target="_blank"
            rel="nofollow"
            >Gerrit documentation</a
          >
          for the complete set of footers.
        </p>
        <table>
          <tbody>
            <tr>
              <th>Name</th>
              <th>Query</th>
            </tr>
            <tr>
              <td>Changes requesting my review</td>
              <td>
                <code class="queryExample">
                  "Gerrit-Reviewer: <em>Your Name</em>
                  &lt;<em>your.email@example.com</em>&gt;"
                </code>
              </td>
            </tr>
            <tr>
              <td>Changes requesting my attention</td>
              <td>
                <code class="queryExample">
                  "Gerrit-Attention: <em>Your Name</em>
                  &lt;<em>your.email@example.com</em>&gt;"
                </code>
              </td>
            </tr>
            <tr>
              <td>Changes from a specific owner</td>
              <td>
                <code class="queryExample">
                  "Gerrit-Owner: <em>Owner name</em>
                  &lt;<em>owner.email@example.com</em>&gt;"
                </code>
              </td>
            </tr>
            <tr>
              <td>Changes targeting a specific branch</td>
              <td>
                <code class="queryExample">
                  "Gerrit-Branch: <em>branch-name</em>"
                </code>
              </td>
            </tr>
            <tr>
              <td>Changes in a specific project</td>
              <td>
                <code class="queryExample">
                  "Gerrit-Project: <em>project-name</em>"
                </code>
              </td>
            </tr>
            <tr>
              <td>Messages related to a specific Change ID</td>
              <td>
                <code class="queryExample">
                  "Gerrit-Change-Id: <em>Change ID</em>"
                </code>
              </td>
            </tr>
            <tr>
              <td>Messages related to a specific change number</td>
              <td>
                <code class="queryExample">
                  "Gerrit-Change-Number: <em>change number</em>"
                </code>
              </td>
            </tr>
          </tbody>
        </table>
      </fieldset>
      <gr-endpoint-decorator name="settings-screen"> </gr-endpoint-decorator>
    </div>
  </div>
`;
