<page-header title="'Settings'" breadcrumbs="['Settings']"> </page-header>

<div class="row">
  <div class="col-sm-12">
    <rd-widget>
      <rd-widget-header icon="settings" feather-icon="true" title-text="Application settings"></rd-widget-header>
      <rd-widget-body>
        <form class="form-horizontal">
          <!-- snapshot-interval -->
          <div class="form-group">
            <label for="snapshot_interval" class="col-sm-2 control-label text-left">Snapshot interval</label>
            <div class="col-sm-8">
              <input type="text" class="form-control" ng-model="settings.SnapshotInterval" id="snapshot_interval" placeholder="e.g. 15m" />
            </div>
          </div>
          <!-- !snapshot-interval -->
          <!-- logo -->
          <div class="form-group">
            <por-switch-field
              label="'Use custom logo'"
              checked="formValues.customLogo"
              name="'toggle_logo'"
              disabled="state.isDemo"
              on-change="(onToggleCustomLogo)"
              field-class="'col-sm-12'"
              label-class="'col-sm-2'"
            ></por-switch-field>
            <div class="col-sm-12" ng-if="state.isDemo" style="margin-top: 10px">
              <span class="small text-muted">You cannot use this feature in the demo version of Portainer.</span>
            </div>
          </div>

          <div ng-if="formValues.customLogo">
            <div class="form-group">
              <span class="col-sm-12 text-muted small"> You can specify the URL to your logo here. For an optimal display, logo dimensions should be 155px by 55px. </span>
            </div>
            <div class="form-group">
              <label for="logo_url" class="col-sm-2 control-label text-left"> URL </label>
              <div class="col-sm-8">
                <input type="text" class="form-control" ng-model="settings.LogoURL" id="logo_url" placeholder="https://mycompany.com/logo.png" />
              </div>
            </div>
          </div>
          <!-- !logo -->

          <div class="form-group">
            <por-switch-field
              label="'Allow the collection of anonymous statistics'"
              checked="formValues.enableTelemetry"
              name="'toggle_enableTelemetry'"
              on-change="(onToggleEnableTelemetry)"
              disabled="state.isDemo"
              field-class="'col-sm-12'"
              label-class="'col-sm-2'"
            ></por-switch-field>
            <div class="col-sm-12" ng-if="state.isDemo" style="margin-top: 10px">
              <span class="small text-muted">You cannot use this feature in the demo version of Portainer.</span>
            </div>
            <div class="col-sm-12 text-muted small" style="margin-top: 10px">
              You can find more information about this in our
              <a href="https://www.portainer.io/documentation/in-app-analytics-and-privacy-policy/" target="_blank">privacy policy</a>.
            </div>
          </div>
          <!-- templates -->
          <div class="col-sm-12 form-section-title"> App Templates </div>
          <div>
            <div class="form-group">
              <span class="col-sm-12 text-muted small">
                You can specify the URL to your own template definitions file here. See
                <a href="https://docs.portainer.io/advanced/app-templates/build" target="_blank">Portainer documentation</a> for more details.
              </span>
            </div>
            <div class="form-group">
              <label for="templates_url" class="col-sm-2 control-label text-left"> URL </label>
              <div class="col-sm-8">
                <input
                  type="text"
                  class="form-control"
                  ng-model="settings.TemplatesURL"
                  id="templates_url"
                  placeholder="https://myserver.mydomain/templates.json"
                  required
                  data-cy="settings-templateUrl"
                />
              </div>
            </div>
          </div>
          <!-- !templates -->
          <!-- helm charts -->
          <div class="col-sm-12 form-section-title"> Helm Repository </div>
          <div>
            <div class="form-group">
              <span class="col-sm-12 text-muted small">
                You can specify the URL to your own helm repository here. See the
                <a href="https://helm.sh/docs/topics/chart_repository/" target="_blank">official documentation</a> for more details.
              </span>
            </div>
            <div class="form-group">
              <label for="helmrepository_url" class="col-sm-2 control-label text-left"> URL </label>
              <div class="col-sm-8">
                <input type="text" class="form-control" ng-model="settings.HelmRepositoryURL" id="helmrepository_url" placeholder="https://charts.bitnami.com/bitnami" />
              </div>
            </div>
          </div>
          <!-- !helm charts -->
          <!-- host-filesystem -->
          <!-- kube -->
          <div class="col-sm-12 form-section-title"> Kubernetes </div>
          <div class="form-group">
            <label for="kubeconfig_expiry" class="col-sm-2 control-label text-left"> Kubeconfig expiry </label>
            <div class="col-sm-8">
              <select
                id="kubeconfig_expiry"
                class="form-control"
                ng-model="settings.KubeconfigExpiry"
                ng-options="opt.value as opt.key for opt in state.availableKubeconfigExpiryOptions"
              ></select>
            </div>
          </div>
          <!-- ! kube  -->
          <!-- actions -->
          <div class="form-group">
            <div class="col-sm-12">
              <button
                type="button"
                class="btn btn-primary btn-sm"
                ng-click="saveApplicationSettings()"
                ng-disabled="state.actionInProgress || !settings.TemplatesURL"
                button-spinner="state.actionInProgress"
                data-cy="settings-saveSettingsButton"
              >
                <span ng-hide="state.actionInProgress">Save settings</span>
                <span ng-show="state.actionInProgress">Saving...</span>
              </button>
            </div>
          </div>
          <!-- !actions -->
        </form>
      </rd-widget-body>
    </rd-widget>
  </div>
</div>

<ssl-certificate-settings ng-show="state.showHTTPS"></ssl-certificate-settings>

<div class="row">
  <div class="col-sm-12">
    <rd-widget>
      <rd-widget-header icon="box" feather-icon="true" title-text="Hidden containers"></rd-widget-header>
      <rd-widget-body>
        <form class="form-horizontal" ng-submit="addFilteredContainerLabel()" name="addTagForm">
          <div class="form-group">
            <span class="col-sm-12 text-muted small"> You can hide containers with specific labels from Portainer UI. You need to specify the label name and value. </span>
          </div>
          <div class="form-group">
            <label for="header_name" class="col-sm-1 control-label text-left">Name</label>
            <div class="col-sm-11 col-md-4">
              <input type="text" required class="form-control" id="header_name" name="label_name" ng-model="formValues.labelName" placeholder="e.g. com.example.foo" />
            </div>
            <label for="header_value" class="col-sm-1 control-label text-left">Value</label>
            <div class="col-sm-11 col-md-4">
              <input type="text" class="form-control" id="header_value" ng-model="formValues.labelValue" placeholder="e.g. bar" />
            </div>
            <div class="col-sm-12 col-md-2">
              <button type="submit" class="btn btn-primary btn-sm" ng-disabled="!formValues.labelName"><i class="fa fa-plus space-right" aria-hidden="true"></i>Add filter</button>
            </div>
          </div>
          <div class="form-group">
            <div class="col-sm-12 table-responsive">
              <table class="table table-hover">
                <thead>
                  <tr>
                    <th>Name</th>
                    <th>Value</th>
                    <th></th>
                  </tr>
                </thead>
                <tbody>
                  <tr ng-repeat="label in settings.BlackListedLabels">
                    <td>{{ label.name }}</td>
                    <td>{{ label.value }}</td>
                    <td>
                      <button type="button" class="btn btn-danger btn-xs" ng-click="removeFilteredContainerLabel($index)">
                        <i class="fa fa-trash-alt space-right" aria-hidden="true"></i>Remove</button
                      >
                    </td>
                  </tr>
                  <tr ng-if="settings.BlackListedLabels.length === 0">
                    <td colspan="3" class="text-center text-muted">No filter available.</td>
                  </tr>
                  <tr ng-if="!settings.BlackListedLabels">
                    <td colspan="3" class="text-center text-muted">Loading...</td>
                  </tr>
                </tbody>
              </table>
            </div>
          </div>
          <!-- !filtered-labels -->
        </form>
      </rd-widget-body>
    </rd-widget>
  </div>
</div>

<div class="row">
  <div class="col-sm-12">
    <rd-widget>
      <rd-widget-header icon="download" feather-icon="true" title-text="Backup Portainer"></rd-widget-header>
      <rd-widget-body>
        <form class="form-horizontal" ng-submit="backupPortainer()" name="backupPortainerForm">
          <div class="col-sm-12 form-section-title"> Backup configuration </div>

          <box-selector options="backupOptions" value="formValues.backupFormType" on-change="(onBackupOptionsChange)" radio-name="'backupOptions'"></box-selector>

          <div ng-if="formValues.backupFormType === BACKUP_FORM_TYPES.S3">
            <!-- Schedule automatic backups -->
            <div class="form-group mt-3">
              <por-switch-field
                label="'Schedule automatic backups'"
                name="'s3-backup-setting'"
                feature-id="s3BackupFeatureId"
                checked="formValues.scheduleAutomaticBackups"
                field-class="'col-sm-12'"
                label-class="'col-sm-2'"
                on-change="(onToggleAutoBackups)"
              ></por-switch-field>
            </div>
            <!-- !Schedule automatic backups -->
            <!-- Cron rule  -->
            <div class="form-group" ng-if="formValues.scheduleAutomaticBackups">
              <label for="cron_rule" class="col-sm-2 col-lg-2 control-label text-left">Cron rule</label>
              <div class="col-sm-10 col-lg-10">
                <input
                  type="text"
                  class="form-control"
                  placeholder="0 2 * * *"
                  id="cron_rule"
                  name="cron_rule"
                  ng-model="formValues.cronRule"
                  limited-feature-dir="{{::s3BackupFeatureId}}"
                  limited-feature-disabled
                  limited-feature-class="limited-be"
                  required
                  cronRule
                />
              </div>
            </div>
            <!-- !Cron rule  -->
            <!-- Access key id  -->
            <div class="form-group">
              <label for="access_key_id" class="col-sm-2 col-lg-2 control-label text-left">Access Key ID</label>
              <div class="col-sm-9 col-lg-10">
                <input
                  type="text"
                  class="form-control"
                  id="access_key_id"
                  name="access_key_id"
                  ng-model="formValues.accessKeyId"
                  ng-required="formValues.scheduleAutomaticBackups"
                  limited-feature-dir="{{::s3BackupFeatureId}}"
                  limited-feature-disabled
                  limited-feature-class="limited-be"
                />
              </div>
            </div>
            <!-- !Access key id  -->
            <!-- Secret access key -->
            <div class="form-group">
              <label for="secret_access_key" class="col-sm-3 col-lg-2 control-label text-left">Secret Access Key</label>
              <div class="col-sm-9 col-lg-10">
                <input
                  type="password"
                  class="form-control"
                  id="secret_access_key"
                  name="secret_access_key"
                  ng-model="formValues.secretAccessKey"
                  ng-required="formValues.scheduleAutomaticBackups"
                  limited-feature-dir="{{::s3BackupFeatureId}}"
                  limited-feature-disabled
                  limited-feature-class="limited-be"
                />
              </div>
            </div>
            <!-- !Secret access key -->
            <!-- Region -->
            <div class="form-group">
              <label for="region" class="col-sm-3 col-lg-2 control-label text-left">Region</label>
              <div class="col-sm-9 col-lg-10">
                <input
                  type="text"
                  class="form-control"
                  placeholder="us-west-1"
                  id="region"
                  name="region"
                  ng-model="formValues.region"
                  ng-required="formValues.scheduleAutomaticBackups"
                  limited-feature-dir="{{::s3BackupFeatureId}}"
                  limited-feature-disabled
                  limited-feature-class="limited-be"
                />
              </div>
            </div>
            <!-- !Region -->
            <!-- Bucket name -->
            <div class="form-group">
              <label for="bucket_name" class="col-sm-3 col-lg-2 control-label text-left">Bucket name</label>
              <div class="col-sm-9 col-lg-10">
                <input
                  type="text"
                  class="form-control"
                  id="bucket_name"
                  name="bucket_name"
                  ng-model="formValues.bucketName"
                  ng-required="formValues.scheduleAutomaticBackups"
                  limited-feature-dir="{{::s3BackupFeatureId}}"
                  limited-feature-disabled
                  limited-feature-class="limited-be"
                />
              </div>
            </div>
            <!-- !Bucket name -->
            <div class="col-sm-12 form-section-title"> Security settings </div>
            <!-- Password protect S3 -->
            <div class="form-group">
              <label for="password_protect" class="col-sm-2 control-label text-left">Password protect</label>
              <div class="col-sm-8">
                <label class="switch">
                  <input
                    type="checkbox"
                    id="password_protect_s3"
                    name="password_protect_s3"
                    ng-model="formValues.passwordProtectS3"
                    data-cy="settings-passwordProtectToggleS3"
                    disabled
                  /><span class="slider round"></span>
                </label>
              </div>
            </div>
            <!-- !Password protect S3 -->
            <!-- Password S3 -->
            <div class="form-group" ng-if="formValues.passwordProtectS3">
              <label for="password" class="col-sm-2 control-label text-left">Password</label>
              <div class="col-sm-3">
                <input type="password" class="form-control" ng-model="formValues.passwordS3" id="password_S3" name="password_S3" required data-cy="settings-backups3pw" />
              </div>
            </div>
            <div class="form-group col-md-12" ng-show="backupPortainerForm.password_S3.$invalid">
              <div class="small text-warning">
                <div ng-messages="backupPortainerForm.password_S3.$error">
                  <p ng-message="required"> <pr-icon icon="'alert-triangle'" feather="true"></pr-icon> This field is required.</p>
                </div>
              </div>
            </div>
            <!-- !Password S3 -->
            <div class="form-group">
              <div class="col-sm-12">
                <button
                  type="button"
                  class="btn btn-primary btn-sm"
                  ng-disabled="backupPortainerForm.$invalid"
                  ng-click="exportBackup()"
                  limited-feature-dir="{{::s3BackupFeatureId}}"
                  limited-feature-disabled
                  limited-feature-class="limited-be"
                >
                  <span> <i class="fa fa-upload" aria-hidden="true"></i> Export backup</span>
                </button>
              </div>
            </div>
            <div class="form-group">
              <hr />
              <div class="col-sm-12">
                <button
                  type="submit"
                  class="btn btn-primary btn-sm"
                  ng-disabled="backupPortainerForm.$invalid ||state.backupInProgress"
                  ng-click="saveS3BackupSettings()"
                  limited-feature-dir="{{::s3BackupFeatureId}}"
                  limited-feature-disabled
                  limited-feature-class="limited-be"
                >
                  <span>Save backup settings</span>
                </button>
              </div>
            </div>
          </div>
          <div ng-if="formValues.backupFormType === BACKUP_FORM_TYPES.FILE">
            <div class="col-sm-12 form-section-title"> Security settings </div>
            <!-- Password protect -->
            <div class="form-group">
              <label for="password_protect" class="col-sm-2 control-label text-left">Password protect</label>
              <div class="col-sm-2">
                <label class="switch" data-cy="settings-passwordProtectLocal">
                  <input type="checkbox" id="password_protect" name="password_protect" ng-model="formValues.passwordProtect" /><span class="slider round"></span>
                </label>
              </div>
            </div>
            <!-- !Password protect -->

            <!-- Password -->
            <div class="form-group" ng-if="formValues.passwordProtect">
              <label for="password" class="col-sm-2 control-label text-left">Password</label>
              <div class="col-sm-3">
                <input type="password" class="form-control" ng-model="formValues.password" id="password" name="password" required data-cy="settings-backupLocalPassword" />
              </div>
            </div>
            <div class="form-group col-md-12" ng-show="backupPortainerForm.password.$invalid">
              <div class="small text-warning">
                <div ng-messages="backupPortainerForm.password.$error">
                  <p ng-message="required"> <pr-icon icon="'alert-triangle'" feather="true"></pr-icon> This field is required.</p>
                </div>
              </div>
            </div>
            <!-- !Password -->

            <!-- actions -->
            <div class="form-group">
              <div class="col-sm-12">
                <button
                  type="button"
                  class="btn btn-primary btn-sm"
                  ng-click="downloadBackup()"
                  ng-disabled="backupPortainerForm.$invalid || state.backupInProgress || state.featureLimited"
                  button-spinner="state.backupInProgress"
                  data-cy="settings-downloadLocalBackup"
                >
                  <span ng-hide="state.backupInProgress">Download backup</span>
                  <span ng-show="state.backupInProgress">Downloading backup</span>
                </button>
              </div>
            </div>
          </div>
          <!-- !actions -->
        </form>
      </rd-widget-body>
    </rd-widget>
  </div>
</div>
