]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Small edit config refactor
authorChocobozzz <me@florianbigard.com>
Wed, 10 Feb 2021 10:27:36 +0000 (11:27 +0100)
committerChocobozzz <me@florianbigard.com>
Wed, 10 Feb 2021 10:36:40 +0000 (11:36 +0100)
client/src/app/+admin/config/edit-custom-config/edit-advanced-configuration.component.html
client/src/app/+admin/config/edit-custom-config/edit-advanced-configuration.component.ts
client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts
client/src/app/+admin/config/edit-custom-config/edit-instance-information.component.html
client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.html
client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts
client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.html
client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts

index db3036c4e0efff2faaee0cac25eeebcd7f3a6472..6018ff5e0b493170324e2afedf255bd36df65714 100644 (file)
       <ng-container formGroupName="cache">
         <div class="form-group" formGroupName="previews">
           <label i18n for="cachePreviewsSize">Number of previews to keep in cache</label>
+
           <div class="number-with-unit">
             <input
               type="number" min="0" id="cachePreviewsSize" class="form-control"
               formControlName="size" [ngClass]="{ 'input-error': formErrors['cache.previews.size'] }"
             >
-            <span i18n>{form.value['cache']['previews']['size'], plural, =1 {cached image} other {cached images}}</span>
+            <span i18n>{getCacheSize('previews'), plural, =1 {cached image} other {cached images}}</span>
           </div>
+
           <div *ngIf="formErrors.cache.previews.size" class="form-error">{{ formErrors.cache.previews.size }}</div>
         </div>
 
         <div class="form-group" formGroupName="captions">
           <label i18n for="cacheCaptionsSize">Number of video captions to keep in cache</label>
+
           <div class="number-with-unit">
             <input
               type="number" min="0" id="cacheCaptionsSize" class="form-control"
               formControlName="size" [ngClass]="{ 'input-error': formErrors['cache.captions.size'] }"
             >
-            <span i18n>{form.value['cache']['captions']['size'], plural, =1 {cached image} other {cached images}}</span>
+            <span i18n>{getCacheSize('captions'), plural, =1 {cached caption} other {cached captions}}</span>
           </div>
+
           <div *ngIf="formErrors.cache.captions.size" class="form-error">{{ formErrors.cache.captions.size }}</div>
         </div>
       </ng-container>
index a37b7b7d5b6b1b344e04d2f8d1aaa750979d4af9..934438a5048d7bc377ee8432d070ecca467c2d80 100644 (file)
@@ -11,4 +11,8 @@ import { FormGroup } from '@angular/forms'
 export class EditAdvancedConfigurationComponent {
   @Input() form: FormGroup
   @Input() formErrors: any
+
+  getCacheSize (type: 'captions' | 'previews') {
+    return this.form.value['cache'][type]['size']
+  }
 }
index ac1a11b4d923bc2cd783cfe588e143e48c02dc15..21a719d42ef8c869669f769935209abe7f6d2bfe 100644 (file)
@@ -25,6 +25,7 @@
 
       <div class="form-group" formGroupName="instance">
         <label i18n for="instanceDefaultClientRoute">Landing page</label>
+
         <div class="peertube-select-container">
           <select id="instanceDefaultClientRoute" formControlName="defaultClientRoute" class="form-control">
             <option i18n value="/videos/overview">Discover videos</option>
@@ -41,6 +42,7 @@
             <option i18n value="/videos/local">Local videos</option>
           </select>
         </div>
+
         <div *ngIf="formErrors.instance.defaultClientRoute" class="form-error">{{ formErrors.instance.defaultClientRoute }}</div>
       </div>
 
@@ -48,6 +50,7 @@
         <ng-container formGroupName="videos">
           <ng-container formGroupName="algorithms">
             <label i18n for="trendingVideosAlgorithmsDefault">Default trending page</label>
+
             <div class="peertube-select-container">
               <select id="trendingVideosAlgorithmsDefault" formControlName="default" class="form-control">
                 <option i18n value="best">Best videos</option>
@@ -56,6 +59,7 @@
                 <option i18n value="most-liked">Most liked videos</option>
               </select>
             </div>
+
             <div *ngIf="formErrors.trending.videos.algorithms.default" class="form-error">{{ formErrors.trending.videos.algorithms.default }}</div>
           </ng-container>
         </ng-container>
@@ -92,6 +96,7 @@
 
         <div class="form-group">
           <label i18n for="broadcastMessageLevel">Broadcast message level</label>
+
           <div class="peertube-select-container">
             <select id="broadcastMessageLevel" formControlName="level" class="form-control">
               <option value="info">info</option>
               <option value="error">error</option>
             </select>
           </div>
+
           <div *ngIf="formErrors.broadcastMessage.level" class="form-error">{{ formErrors.broadcastMessage.level }}</div>
         </div>
 
         <div class="form-group">
           <label i18n for="broadcastMessageMessage">Message</label><my-help helpType="markdownText"></my-help>
+
           <my-markdown-textarea
             name="broadcastMessageMessage" formControlName="message" textareaMaxWidth="500px"
             [classes]="{ 'input-error': formErrors['broadcastMessage.message'] }"
           ></my-markdown-textarea>
+
           <div *ngIf="formErrors.broadcastMessage.message" class="form-error">{{ formErrors.broadcastMessage.message }}</div>
         </div>
 
             </ng-container>
 
             <ng-container ngProjectAs="extra">
-              <my-peertube-checkbox [ngClass]="{ 'disabled-checkbox-extra': !isSignupEnabled() }"
+              <my-peertube-checkbox [ngClass]="getDisabledSignupClass()"
                 inputName="signupRequiresEmailVerification" formControlName="requiresEmailVerification"
                 i18n-labelText labelText="Signup requires email verification"
               ></my-peertube-checkbox>
 
-              <div [ngClass]="{ 'disabled-checkbox-extra': !isSignupEnabled() }" class="mt-3">
+              <div [ngClass]="getDisabledSignupClass()" class="mt-3">
                 <label i18n for="signupLimit">Signup limit</label>
+
                 <div class="number-with-unit">
                   <input
                     type="number" min="-1" id="signupLimit" class="form-control"
                   >
                   <span i18n>{form.value['signup']['limit'], plural, =1 {user} other {users}}</span>
                 </div>
+
                 <div *ngIf="formErrors.signup.limit" class="form-error">{{ formErrors.signup.limit }}</div>
-                <small *ngIf="form.value['signup']['limit'] === -1" class="text-muted">Signup won't be limited to a fixed number of users.</small>
+
+                <small i18n *ngIf="hasUnlimitedSignup()" class="text-muted">Signup won't be limited to a fixed number of users.</small>
               </div>
             </ng-container>
           </my-peertube-checkbox>
 
           <div class="form-group mt-4">
             <label i18n for="importConcurrency">Import jobs concurrency</label>
-            <span class="text-muted ml-1">
-              <span i18n>allows to import multiple videos in parallel. ⚠️ Requires a PeerTube restart.</span>
-            </span>
+            <span i18n class="text-muted ml-1">allows to import multiple videos in parallel. ⚠️ Requires a PeerTube restart.</span>
 
             <div class="number-with-unit">
               <input type="number" name="importConcurrency" formControlName="concurrency" />
               </ng-container>
 
               <ng-container ngProjectAs="extra">
-                <div [ngClass]="{ 'disabled-checkbox-extra': !isSearchIndexEnabled() }">
+                <div [ngClass]="getDisabledSearchIndexClass()">
                   <label i18n for="searchIndexUrl">Search index URL</label>
+
                   <input
                     type="text"  id="searchIndexUrl" class="form-control"
                     formControlName="url" [ngClass]="{ 'input-error': formErrors['search.searchIndex.url'] }"
                   >
+
                   <div *ngIf="formErrors.search.searchIndex.url" class="form-error">{{ formErrors.search.searchIndex.url }}</div>
                 </div>
 
                 <div class="mt-3">
-                  <my-peertube-checkbox [ngClass]="{ 'disabled-checkbox-extra': !isSearchIndexEnabled() }"
+                  <my-peertube-checkbox [ngClass]="getDisabledSearchIndexClass()"
                     inputName="searchIndexDisableLocalSearch" formControlName="disableLocalSearch"
                     i18n-labelText labelText="Disable local search in search bar"
                   ></my-peertube-checkbox>
                 </div>
 
                 <div class="mt-3">
-                  <my-peertube-checkbox [ngClass]="{ 'disabled-checkbox-extra': !isSearchIndexEnabled() }"
+                  <my-peertube-checkbox [ngClass]="getDisabledSearchIndexClass()"
                     inputName="searchIndexIsDefaultSearch" formControlName="isDefaultSearch"
                     i18n-labelText labelText="Search bar uses the global search index by default"
                   >
 
       <div class="form-group" formGroupName="admin">
         <label i18n for="adminEmail">Admin email</label>
+
         <input
           type="text" id="adminEmail" class="form-control"
           formControlName="email" [ngClass]="{ 'input-error': formErrors['admin.email'] }"
         >
+
         <div *ngIf="formErrors.admin.email" class="form-error">{{ formErrors.admin.email }}</div>
       </div>
 
               type="text" id="servicesTwitterUsername" class="form-control"
               formControlName="username" [ngClass]="{ 'input-error': formErrors['services.twitter.username'] }"
             >
+
             <div *ngIf="formErrors.services.twitter.username" class="form-error">{{ formErrors.services.twitter.username }}</div>
           </div>
 
index 9a19c2913dfd602dbfad4fe4dcfa6280f1fbced7..34d05f9f3446b60ac6e2d81f5aae55491361d575 100644 (file)
@@ -50,10 +50,22 @@ export class EditBasicConfigurationComponent implements OnInit {
     return this.form.value['signup']['enabled'] === true
   }
 
+  getDisabledSignupClass () {
+    return { 'disabled-checkbox-extra': !this.isSignupEnabled() }
+  }
+
+  hasUnlimitedSignup () {
+    return this.form.value['signup']['limit'] === -1
+  }
+
   isSearchIndexEnabled () {
     return this.form.value['search']['searchIndex']['enabled'] === true
   }
 
+  getDisabledSearchIndexClass () {
+    return { 'disabled-checkbox-extra': !this.isSearchIndexEnabled() }
+  }
+
   isAutoFollowIndexEnabled () {
     return this.form.value['followings']['instance']['autoFollowIndex']['enabled'] === true
   }
index 6f19ede0abce0f7729e11e45a8d467e4437d8dc8..35b42e742097557030ee0675a21e0b4d372c5569 100644 (file)
 
         <div class="form-group">
           <label i18n for="instanceName">Name</label>
+
           <input
             type="text" id="instanceName" class="form-control"
             formControlName="name" [ngClass]="{ 'input-error': formErrors.instance.name }"
           >
+
           <div *ngIf="formErrors.instance.name" class="form-error">{{ formErrors.instance.name }}</div>
         </div>
 
         <div class="form-group">
           <label i18n for="instanceShortDescription">Short description</label>
+
           <textarea
             id="instanceShortDescription" formControlName="shortDescription" class="form-control small"
             [ngClass]="{ 'input-error': formErrors['instance.shortDescription'] }"
           ></textarea>
+
           <div *ngIf="formErrors.instance.shortDescription" class="form-error">{{ formErrors.instance.shortDescription }}</div>
         </div>
 
         <div class="form-group">
           <label i18n for="instanceDescription">Description</label><my-help helpType="markdownText"></my-help>
+
           <my-markdown-textarea
             name="instanceDescription" formControlName="description" textareaMaxWidth="500px"
             [classes]="{ 'input-error': formErrors['instance.description'] }"
           ></my-markdown-textarea>
+
           <div *ngIf="formErrors.instance.description" class="form-error">{{ formErrors.instance.description }}</div>
         </div>
 
               <option i18n value="display">Display</option>
             </select>
           </div>
+
           <div *ngIf="formErrors.instance.defaultNSFWPolicy" class="form-error">{{ formErrors.instance.defaultNSFWPolicy }}</div>
         </div>
 
         <div class="form-group">
           <label i18n for="instanceTerms">Terms</label><my-help helpType="markdownText"></my-help>
+
           <my-markdown-textarea
             name="instanceTerms" formControlName="terms" textareaMaxWidth="500px"
             [ngClass]="{ 'input-error': formErrors['instance.terms'] }"
           ></my-markdown-textarea>
+
           <div *ngIf="formErrors.instance.terms" class="form-error">{{ formErrors.instance.terms }}</div>
         </div>
 
         <div class="form-group">
           <label i18n for="instanceCodeOfConduct">Code of conduct</label><my-help helpType="markdownText"></my-help>
+
           <my-markdown-textarea
             name="instanceCodeOfConduct" formControlName="codeOfConduct" textareaMaxWidth="500px"
             [ngClass]="{ 'input-error': formErrors['instance.codeOfConduct'] }"
           ></my-markdown-textarea>
+
           <div *ngIf="formErrors.instance.codeOfConduct" class="form-error">{{ formErrors.instance.codeOfConduct }}</div>
         </div>
 
             name="instanceModerationInformation" formControlName="moderationInformation" textareaMaxWidth="500px"
             [ngClass]="{ 'input-error': formErrors['instance.moderationInformation'] }"
           ></my-markdown-textarea>
+
           <div *ngIf="formErrors.instance.moderationInformation" class="form-error">{{ formErrors.instance.moderationInformation }}</div>
         </div>
 
             name="instanceCreationReason" formControlName="creationReason" textareaMaxWidth="500px"
             [ngClass]="{ 'input-error': formErrors['instance.creationReason'] }"
           ></my-markdown-textarea>
+
           <div *ngIf="formErrors.instance.creationReason" class="form-error">{{ formErrors.instance.creationReason }}</div>
         </div>
 
             name="instanceMaintenanceLifetime" formControlName="maintenanceLifetime" textareaMaxWidth="500px"
             [ngClass]="{ 'input-error': formErrors['instance.maintenanceLifetime'] }"
           ></my-markdown-textarea>
+
           <div *ngIf="formErrors.instance.maintenanceLifetime" class="form-error">{{ formErrors.instance.maintenanceLifetime }}</div>
         </div>
 
             name="instanceBusinessModel" formControlName="businessModel" textareaMaxWidth="500px"
             [ngClass]="{ 'input-error': formErrors['instance.businessModel'] }"
           ></my-markdown-textarea>
+
           <div *ngIf="formErrors.instance.businessModel" class="form-error">{{ formErrors.instance.businessModel }}</div>
         </div>
 
index 4b1a55245bc2af50eca437be64ec85dea204d0c9..65fc314122d6e8befa51549b81c018d03371e352 100644 (file)
@@ -25,7 +25,7 @@
 
             <ng-container ngProjectAs="extra">
 
-              <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
+              <div class="form-group" [ngClass]="getDisabledLiveClass()">
                 <my-peertube-checkbox
                   inputName="liveAllowReplay" formControlName="allowReplay"
                   i18n-labelText labelText="Allow your users to automatically publish a replay of their live"
                 </my-peertube-checkbox>
               </div>
 
-              <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
-                <label i18n for="liveMaxInstanceLives">Max simultaneous lives created on your instance <span class="text-muted">(-1 for "unlimited")</span></label>
+              <div class="form-group" [ngClass]="getDisabledLiveClass()">
+                <label i18n for="liveMaxInstanceLives">
+                  Max simultaneous lives created on your instance <span class="text-muted">(-1 for "unlimited")</span>
+                </label>
+
                 <div class="number-with-unit">
                   <input type="number" name="liveMaxInstanceLives" formControlName="maxInstanceLives" />
                   <span i18n>{form.value['live']['maxInstanceLives'], plural, =1 {live} other {lives}}</span>
                 </div>
               </div>
 
-              <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
-                <label i18n for="liveMaxUserLives">Max simultaneous lives created per user <span class="text-muted">(-1 for "unlimited")</span></label>
+              <div class="form-group" [ngClass]="getDisabledLiveClass()">
+                <label i18n for="liveMaxUserLives">
+                  Max simultaneous lives created per user <span class="text-muted">(-1 for "unlimited")</span>
+                </label>
+
                 <div class="number-with-unit">
                   <input type="number" name="liveMaxUserLives" formControlName="maxUserLives" />
                   <span i18n>{form.value['live']['maxUserLives'], plural, =1 {live} other {lives}}</span>
                 </div>
               </div>
 
-              <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
+              <div class="form-group" [ngClass]="getDisabledLiveClass()">
                 <label i18n for="liveMaxDuration">Max live duration</label>
 
                 <my-select-options
@@ -81,7 +87,7 @@
       <ng-container formGroupName="live">
         <ng-container formGroupName="transcoding">
 
-          <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
+          <div class="form-group" [ngClass]="getDisabledLiveClass()">
             <my-peertube-checkbox
               inputName="liveTranscodingEnabled" formControlName="enabled"
             >
             </my-peertube-checkbox>
           </div>
 
-          <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() || !isLiveTranscodingEnabled() }">
+          <div class="form-group" [ngClass]="getDisabledLiveTranscodingClass()">
             <label i18n for="liveTranscodingThreads">Live resolutions to generate</label>
 
             <div class="ml-2 mt-2 d-flex flex-column">
               <ng-container formGroupName="resolutions">
+
                 <div class="form-group" *ngFor="let resolution of liveResolutions">
                   <my-peertube-checkbox
                     [inputName]="getResolutionKey(resolution.id)" [formControlName]="resolution.id"
                     </ng-template>
                   </my-peertube-checkbox>
                 </div>
+
               </ng-container>
             </div>
           </div>
 
-          <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() || !isLiveTranscodingEnabled() }">
+          <div class="form-group" [ngClass]="getDisabledLiveTranscodingClass()">
             <label i18n for="liveTranscodingThreads">Live transcoding threads</label>
+
             <span class="text-muted ml-1">
-              <ng-container *ngIf="getTotalTranscodingThreads().atMost" i18n>will claim at most {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with VOD transcoding</ng-container>
-              <ng-container *ngIf="!getTotalTranscodingThreads().atMost" i18n>will claim at least {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with VOD transcoding</ng-container>
+              <ng-container *ngIf="getTotalTranscodingThreads().atMost" i18n>
+                will claim at most {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with VOD transcoding
+              </ng-container>
+
+              <ng-container *ngIf="!getTotalTranscodingThreads().atMost" i18n>
+                will claim at least {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with VOD transcoding
+              </ng-container>
             </span>
 
             <my-select-custom-value
             <div *ngIf="formErrors.live.transcoding.threads" class="form-error">{{ formErrors.live.transcoding.threads }}</div>
           </div>
 
-          <div class="form-group mt-4" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() || !isLiveTranscodingEnabled() }">
+          <div class="form-group mt-4" [ngClass]="getDisabledLiveTranscodingClass()">
             <label i18n for="liveTranscodingProfile">Live transcoding profile</label>
             <span class="text-muted ml-1" i18n>new live transcoding profiles can be added by PeerTube plugins</span>
 
               [items]="getAvailableTranscodingProfile()"
               [clearable]="false"
             >
-              <ng-template ng-option-tmp let-item="item" let-index="index">
-                {{ item }}
-                <ng-container *ngIf="item === 'default'">
-                  <br>
-                  <span class="text-muted" i18n>x264, targeting maximum device compatibility</span>
-                </ng-container>
-              </ng-template>
             </my-select-options>
+
             <div *ngIf="formErrors.live.transcoding.profile" class="form-error">{{ formErrors.live.transcoding.profile }}</div>
           </div>
 
index a82a40a84661ab588a090859cae0aef53e638f1e..3328d28a9502f51372eed3ae1aeeb93fb2d4ff36 100644 (file)
@@ -42,7 +42,13 @@ export class EditLiveConfigurationComponent implements OnInit {
   getAvailableTranscodingProfile () {
     const profiles = this.serverConfig.live.transcoding.availableProfiles
 
-    return profiles.map(p => ({ id: p, label: p }))
+    return profiles.map(p => {
+      const description = p === 'default'
+        ? $localize`x264, targeting maximum device compatibility`
+        : ''
+
+      return { id: p, label: p, description }
+    })
   }
 
   getResolutionKey (resolution: string) {
@@ -57,6 +63,14 @@ export class EditLiveConfigurationComponent implements OnInit {
     return this.editConfigurationService.isLiveEnabled(this.form)
   }
 
+  getDisabledLiveClass () {
+    return { 'disabled-checkbox-extra': !this.isLiveEnabled() }
+  }
+
+  getDisabledLiveTranscodingClass () {
+    return { 'disabled-checkbox-extra': !this.isLiveEnabled() || !this.isLiveTranscodingEnabled() }
+  }
+
   isLiveTranscodingEnabled () {
     return this.editConfigurationService.isLiveTranscodingEnabled(this.form)
   }
index a519098655c0df70a1df5db25277854c034c7dca..5669b81cef7ff2c8fe3085ecd1cc594905f653bf 100644 (file)
@@ -13,7 +13,9 @@
         </span>
 
         <div class="callout-container">
-          <a class="callout-link" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/#/admin-configuration?id=transcoding" i18n>Read guidelines</a>
+          <a class="callout-link" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/#/admin-configuration?id=transcoding" i18n>
+            Read guidelines
+          </a>
         </div>
       </div>
     </div>
@@ -43,7 +45,7 @@
               <div class="callout callout-light pt-2 pb-0">
                 <label i18n>Input formats</label>
 
-                <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+                <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
                   <my-peertube-checkbox
                     inputName="transcodingAllowAdditionalExtensions" formControlName="allowAdditionalExtensions"
                     i18n-labelText labelText="Allow additional extensions"
@@ -54,7 +56,7 @@
                   </my-peertube-checkbox>
                 </div>
 
-                <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+                <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
                   <my-peertube-checkbox
                     inputName="transcodingAllowAudioFiles" formControlName="allowAudioFiles"
                     i18n-labelText labelText="Allow audio files upload"
                 <label i18n>Output formats</label>
 
                 <ng-container formGroupName="webtorrent">
-                  <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+                  <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
                     <my-peertube-checkbox
                       inputName="transcodingWebTorrentEnabled" formControlName="enabled"
                       i18n-labelText labelText="WebTorrent enabled"
                     >
                       <ng-template ptTemplate="help">
-                        <ng-container i18n>
-                          <p>If you also enabled HLS support, it will multiply videos storage by 2</p>
-
-                          <br />
-
-                          <strong>If disabled, breaks federation with PeerTube instances < 2.1</strong>
+                        <ng-container>
+                          <p i18n>If you also enabled HLS support, it will multiply videos storage by 2</p>
                         </ng-container>
                       </ng-template>
                     </my-peertube-checkbox>
@@ -90,7 +88,7 @@
                 </ng-container>
 
                 <ng-container formGroupName="hls">
-                  <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+                  <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
                     <my-peertube-checkbox
                       inputName="transcodingHlsEnabled" formControlName="enabled"
                       i18n-labelText labelText="HLS with P2P support enabled"
                   </div>
                 </ng-container>
 
-                <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+                <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
                   <label i18n>Resolutions to generate per enabled format</label>
 
                   <div class="ml-2 mt-2 d-flex flex-column">
           </my-peertube-checkbox>
         </div>
 
-        <div class="form-group mt-4" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+        <div class="form-group mt-4" [ngClass]="getTranscodingDisabledClass()">
           <label i18n for="transcodingThreads">Transcoding threads</label>
           <span class="text-muted ml-1">
-            <ng-container *ngIf="getTotalTranscodingThreads().atMost" i18n>will claim at most {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding</ng-container>
-            <ng-container *ngIf="!getTotalTranscodingThreads().atMost" i18n>will claim at least {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding</ng-container>
+            <ng-container *ngIf="getTotalTranscodingThreads().atMost" i18n>
+              will claim at most {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding
+            </ng-container>
+
+            <ng-container *ngIf="!getTotalTranscodingThreads().atMost" i18n>
+              will claim at least {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding
+            </ng-container>
           </span>
 
           <my-select-custom-value
           <div *ngIf="formErrors.transcoding.threads" class="form-error">{{ formErrors.transcoding.threads }}</div>
         </div>
 
-        <div class="form-group mt-4" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+        <div class="form-group mt-4" [ngClass]="getTranscodingDisabledClass()">
           <label i18n for="transcodingConcurrency">Transcoding jobs concurrency</label>
-          <span class="text-muted ml-1">
-            <span i18n>allows to transcode multiple files in parallel. ⚠️ Requires a PeerTube restart.</span>
-          </span>
+          <span class="text-muted ml-1" i18n>allows to transcode multiple files in parallel. ⚠️ Requires a PeerTube restart</span>
 
           <div class="number-with-unit">
             <input type="number" name="transcodingConcurrency" formControlName="concurrency" />
           <div *ngIf="formErrors.transcoding.concurrency" class="form-error">{{ formErrors.transcoding.concurrency }}</div>
         </div>
 
-        <div class="form-group mt-4" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+        <div class="form-group mt-4" [ngClass]="getTranscodingDisabledClass()">
           <label i18n for="transcodingProfile">Transcoding profile</label>
           <span class="text-muted ml-1" i18n>new transcoding profiles can be added by PeerTube plugins</span>
 
             formControlName="profile"
             [items]="getAvailableTranscodingProfile()"
             [clearable]="false"
-          >
-            <ng-template ng-option-tmp let-item="item" let-index="index">
-              {{ item }}
-              <ng-container *ngIf="item === 'default'">
-                <br>
-                <span class="text-muted" i18n>x264, targeting maximum device compatibility</span>
-              </ng-container>
-            </ng-template>
-          </my-select-options>
+          ></my-select-options>
+
           <div *ngIf="formErrors.transcoding.profile" class="form-error">{{ formErrors.transcoding.profile }}</div>
         </div>
 
index d745912a0284d4f71902bb54fda54902fd293af3..b864f1bc43c63a55fa2767f82becea6c211e4e8f 100644 (file)
@@ -34,7 +34,13 @@ export class EditVODTranscodingComponent implements OnInit {
   getAvailableTranscodingProfile () {
     const profiles = this.serverConfig.transcoding.availableProfiles
 
-    return profiles.map(p => ({ id: p, label: p }))
+    return profiles.map(p => {
+      const description = p === 'default'
+        ? $localize`x264, targeting maximum device compatibility`
+        : ''
+
+      return { id: p, label: p, description }
+    })
   }
 
   getResolutionKey (resolution: string) {
@@ -45,6 +51,10 @@ export class EditVODTranscodingComponent implements OnInit {
     return this.editConfigurationService.isTranscodingEnabled(this.form)
   }
 
+  getTranscodingDisabledClass () {
+    return { 'disabled-checkbox-extra': !this.isTranscodingEnabled() }
+  }
+
   getTotalTranscodingThreads () {
     return this.editConfigurationService.getTotalTranscodingThreads(this.form)
   }