repository/firmware/device-tab/firmware-device-tab.component.ts
<div class="row">
  <div class="col-lg-12 col-lg-max">
    <div class="card split-view--7-5 m-b-0">
      <div class="d-flex d-col flex-grow split-view__list">
        <div class="card-header separator">
          <div
            class="card-title"
            translate
          >
            Current firmware
          </div>
        </div>
        <div class="inner-scroll">
          <div class="card-block p-t-0 p-b-0">
            <!-- EMPTY STATE -->
            @if (isEmpty(deviceFirmwareFragment$ | async)) {
              <div class="c8y-empty-state text-center">
                <div
                  class="h1 c8y-icon-duocolor"
                  c8yIcon="c8y-firmware"
                ></div>
                <p>
                  <strong translate>No firmware installed.</strong>
                  <br />
                  <small translate>Click below to install firmware into this device.</small>
                </p>
              </div>
            } @else {
              <!-- FIRMWARE -->
              <c8y-list-group class="no-border-last">
                <c8y-li>
                  <c8y-li-icon>
                    <i c8yIcon="c8y-firmware"></i>
                  </c8y-li-icon>

                  @if (deviceFirmwareFragment$ | async; as deviceFirmwareFragment) {
                    <c8y-li-body>
                      <!-- Firmware title -->
                      <p class="text-medium">
                        {{ deviceFirmwareFragment.name }}
                      </p>
                      <!-- Firmware description -->
                      @if (repositoryEntry$ | async; as repositoryEntry) {
                        <div>
                          <span
                            class="text-label-small m-r-4"
                            translate
                          >
                            Description
                          </span>
                          <span>
                            {{ repositoryEntry.description }}
                          </span>
                        </div>
                      }

                      <!-- BASE/PATCH VERSION -->
                      <div class="d-flex a-i-baseline">
                        <p
                          class="text-label-small m-r-4"
                          translate
                        >
                          Version
                        </p>
                        @if (deviceFirmwareFragment.version) {
                          <p>
                            {{ deviceFirmwareFragment.version }}
                          </p>
                        } @else {
                          <p>
                            <em class="text-muted">({{ 'not specified`version`' | translate }})</em>
                          </p>
                        }
                      </div>

                      <!-- ADD PATCH -->
                      @if (
                        (supportsFirmwareOperations$ | async) && (this.patches$ | async)?.length > 0
                      ) {
                        <button
                          class="btn btn-xs btn-primary"
                          title="{{ 'Patches available' | translate }}"
                          (click)="addPatch()"
                          [disabled]="changesInProgress$ | async"
                          c8yProductExperience
                          [actionName]="PRODUCT_EXPERIENCE.FIRMWARE.EVENTS.DEVICE_TAB"
                          [actionData]="{
                            component: PRODUCT_EXPERIENCE.FIRMWARE.COMPONENTS.FIRMWARE_DEVICE_TAB,
                            action:
                              PRODUCT_EXPERIENCE.FIRMWARE.ACTIONS.OPEN_INSTALL_FIRMWARE_PATCH_DIALOG
                          }"
                        >
                          {{ 'Patches available' | translate }}
                        </button>
                      }
                    </c8y-li-body>
                  }
                </c8y-li>
              </c8y-list-group>
            }
          </div>
        </div>
        @if (supportsFirmwareOperations$ | async) {
          <div class="card-footer separator-top">
            <!-- INSTALL FIRMWARE -->
            @if (isEmpty(deviceFirmwareFragment$ | async)) {
              <button
                class="btn btn-primary"
                title="{{ 'Install firmware' | translate }}"
                (click)="installFirmware()"
                c8yProductExperience
                [actionName]="PRODUCT_EXPERIENCE.FIRMWARE.EVENTS.DEVICE_TAB"
                [actionData]="{
                  component: PRODUCT_EXPERIENCE.FIRMWARE.COMPONENTS.FIRMWARE_DEVICE_TAB,
                  action: PRODUCT_EXPERIENCE.FIRMWARE.ACTIONS.OPEN_INSTALL_FIRMWARE_DIALOG
                }"
              >
                {{ 'Install firmware' | translate }}
              </button>
            }

            <!-- REPLACE FIRMWARE -->
            @if (!isEmpty(deviceFirmwareFragment$ | async)) {
              <button
                class="btn btn-primary"
                title="{{ 'Replace firmware' | translate }}"
                (click)="installFirmware()"
                [disabled]="changesInProgress$ | async"
                c8yProductExperience
                [actionName]="PRODUCT_EXPERIENCE.FIRMWARE.EVENTS.DEVICE_TAB"
                [actionData]="{
                  component: PRODUCT_EXPERIENCE.FIRMWARE.COMPONENTS.FIRMWARE_DEVICE_TAB,
                  action: PRODUCT_EXPERIENCE.FIRMWARE.ACTIONS.OPEN_REPLACE_FIRMWARE_DIALOG
                }"
              >
                {{ 'Replace firmware' | translate }}
              </button>
            }
          </div>
        }
      </div>
      <div class="inner-scroll d-flex d-col bg-level-1 split-view__detail">
        <div class="card-header separator large-padding sticky-top">
          <div
            class="card-title"
            translate
          >
            Firmware changes
          </div>
        </div>
        <div class="flex-grow">
          @if (changesOperation$ | async) {
            <fieldset
              class="card-block large-padding bg-level-2 p-0"
              id="operation-block"
            >
              <c8y-operation-details
                [operation]="changesOperation$ | async"
              ></c8y-operation-details>
            </fieldset>
          }
        </div>
      </div>
    </div>
  </div>
</div>

results matching ""

    No results matching ""