Chocobozzz/PeerTube

View on GitHub
client/src/app/shared/shared-instance/instance-features-table.component.html

Summary

Maintainability
Test Coverage
<div *ngIf="serverConfig" class="feature-table">

  <table *ngIf="serverConfig">
    <caption i18n>Features found on this instance</caption>
    <tr>
      <th i18n class="label" scope="row">PeerTube version</th>

      <td class="value">{{ getServerVersionAndCommit() }}</td>
    </tr>

    <tr>
      <th class="label" scope="row">
        <div i18n>Default NSFW/sensitive videos policy</div>
        <span i18n class="fs-7 fw-normal fst-italic">can be redefined by the users</span>
      </th>

      <td class="value">{{ buildNSFWLabel() }}</td>
    </tr>

    <tr>
      <th i18n class="label" scope="row">User registration</th>

      <td class="value">{{ buildRegistrationLabel() }}</td>
    </tr>

    <tr>
      <th i18n class="label" colspan="2">Video uploads</th>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Transcoding in multiple resolutions</th>
      <td>
        <my-feature-boolean [value]="serverConfig.transcoding.enabledResolutions.length !== 0"></my-feature-boolean>
      </td>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Automatic transcription</th>
      <td>
        <my-feature-boolean [value]="serverConfig.videoTranscription.enabled"></my-feature-boolean>
      </td>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Video uploads</th>
      <td>
        <span i18n *ngIf="serverConfig.autoBlacklist.videos.ofUsers.enabled">Requires manual validation by moderators</span>
        <span i18n *ngIf="!serverConfig.autoBlacklist.videos.ofUsers.enabled">Automatically published</span>
      </td>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Video quota</th>

      <td class="value">
        <ng-container *ngIf="initialUserVideoQuota !== -1">
          {{ initialUserVideoQuota | bytes: 0 }} <ng-container *ngIf="dailyUserVideoQuota !== -1">({{ dailyUserVideoQuota | bytes: 0 }} per day)</ng-container>

          <my-help tooltipPlacement="auto" helpType="custom">
            <ng-template ptTemplate="customHtml">
              <div [innerHTML]="quotaHelpIndication"></div>
            </ng-template>
          </my-help>
        </ng-container>

        <ng-container i18n *ngIf="initialUserVideoQuota === -1">
          Unlimited <ng-container *ngIf="dailyUserVideoQuota !== -1">({{ dailyUserVideoQuota | bytes: 0 }} per day)</ng-container>
        </ng-container>
      </td>
    </tr>

    <tr>
      <th i18n class="label" colspan="2">Live streaming</th>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Live streaming enabled</th>
      <td>
        <my-feature-boolean [value]="serverConfig.live.enabled"></my-feature-boolean>
      </td>
    </tr>

    <tr *ngIf="serverConfig.live.enabled">
      <th i18n class="sub-label" scope="row">Transcode live video in multiple resolutions</th>
      <td>
        <my-feature-boolean [value]="serverConfig.live.transcoding.enabled && serverConfig.live.transcoding.enabledResolutions.length > 1"></my-feature-boolean>
      </td>
    </tr>

    <tr *ngIf="serverConfig.live.enabled">
      <th i18n class="sub-label" scope="row">Max parallel lives</th>
      <td i18n>
        {{ maxUserLives }} per user / {{ maxInstanceLives }} per instance
      </td>
    </tr>

    <tr>
      <th i18n class="label" colspan="2">Video Import</th>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">HTTP import (YouTube, Vimeo, direct URL...)</th>
      <td>
        <my-feature-boolean [value]="serverConfig.import.videos.http.enabled"></my-feature-boolean>
      </td>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Torrent import</th>
      <td>
        <my-feature-boolean [value]="serverConfig.import.videos.torrent.enabled"></my-feature-boolean>
      </td>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Channel synchronization with other platforms (YouTube, Vimeo, ...)</th>
      <td>
        <my-feature-boolean [value]="serverConfig.import.videoChannelSynchronization.enabled"></my-feature-boolean>
      </td>
    </tr>

    <tr>
      <th i18n class="label" colspan="2">User Import/Export</th>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Users can export their data</th>
      <td>
        <my-feature-boolean [value]="serverConfig.export.users.enabled"></my-feature-boolean>
      </td>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Users can import their data</th>
      <td>
        <my-feature-boolean [value]="serverConfig.import.users.enabled"></my-feature-boolean>
      </td>
    </tr>

    <tr>
      <th i18n class="label" colspan="2">Search</th>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Users can resolve distant content</th>
      <td>
        <my-feature-boolean [value]="serverConfig.search.remoteUri.users"></my-feature-boolean>
      </td>
    </tr>

    <tr>
      <th i18n class="label" colspan="2">Plugins & Themes</th>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Available themes</th>
      <td>
        <span class="theme" *ngFor="let theme of serverConfig.theme.registered">
          {{ theme.name }}
        </span>
      </td>
    </tr>

    <tr>
      <th i18n class="sub-label" scope="row">Plugins enabled</th>
      <td>
        <span class="plugin" *ngFor="let plugin of serverConfig.plugin.registered">
          {{ plugin.name }}
        </span>
      </td>
    </tr>
  </table>
</div>