.row.stf-info.selectable(ng-controller='InfoCtrl',
  angular-packery='{draggable: true, draggableHandle: ".heading i"}')

  .col-md-4-x.packery-item
    .widget-container.fluid-height
      .heading
        stacked-icon(icon='fa-location-arrow', color='color-pink')
        span(translate) Physical Device
        .pull-right
          button(ng-click='control.identify()').btn.btn-xs.btn-primary-outline
            i.fa.fa-info
            span(translate) Find Device

      .widget-content.padded-small
        table.table.table-condensed.table-hover.table-infocard
          tbody
            tr
              td(translate) Place
              td {{device.provider.name}}
            tr(ng-show='device.name && device.image')
              td
              td
                button(ng-click='openDevicePhoto(device)').btn.btn-xs.btn-primary-outline
                  i.fa.fa-picture-o
                  span(translate) Device Photo

  .col-md-4-x.packery-item
    .widget-container.fluid-height
      .heading
        stacked-icon(icon='fa-bolt', color='color-yellow')
        span(translate) Battery
      .widget-content.padded-small
        table.table.table-condensed.table-hover.table-infocard
          tbody
            tr
              td(translate) Health
              td {{device.battery.health | batteryHealth | translate}}
            tr
              td(translate) Power Source
              td {{device.battery.source | batterySource | translate}}
            tr
              td(translate) Status
              td {{device.battery.status | batteryStatus | translate}}
            tr
              td(translate) Level
              td
                uib-progressbar(value='device.battery.level', animate='false', max='device.battery.scale', type='success')
                  span {{ device.battery.level / device.battery.scale * 100 }}%
            tr
              td(translate) Temperature
              td {{device.battery.temp}} °C
            tr
              td(translate) Voltage
              td {{device.battery.voltage}} v

  .col-md-4-x.packery-item
    .widget-container.fluid-height
      .heading
        stacked-icon(icon='fa-tablet', color='color-blue')
        span(translate) Display
      .widget-content.padded-small
        table.table.table-condensed.table-hover.table-infocard
          tbody
            tr
              td(translate) Size
              td {{device.display.inches ? device.display.inches + '″' : '-'}}
            tr
              td(translate) Density
              td {{device.display.density | displayDensity}}
            tr
              td(translate) FPS
              td {{device.display.fps}}
            tr
              td(translate) Width
              td {{device.display.width}} px
            tr
              td(translate) Height
              td {{device.display.height}} px
            tr
              td(translate) ID
              td {{device.display.id}}
            tr
              td(translate) Orientation
              td {{device.display.rotation}}°
            tr
              td(translate) Encrypted
              td {{device.display.secure | humanizedBool}}
            tr
              td(translate) X DPI
              td {{device.display.xdpi}}
            tr
              td(translate) Y DPI
              td {{device.display.ydpi}}

  .col-md-4-x.packery-item
    .widget-container.fluid-height
      .heading
        stacked-icon(icon='fa-signal', color='color-brown')
        span(translate) Network
      .widget-content.padded-small
        table.table.table-condensed.table-hover.table-infocard
          tbody
            tr
              td(translate) Connected
              td {{device.network.connected | humanizedBool}}
            tr
              td(translate) Airplane Mode
              td {{device.airplaneMode | humanizedBool}}
            tr
              td(translate) Using Fallback
              td {{device.network.failover | humanizedBool}}
            tr
              td(translate) Roaming
              td {{device.network.roaming | humanizedBool}}
            tr
              td(translate) Type
              td {{device.network.type | networkType | translate}}
            tr
              td(translate) Sub Type
              td {{device.network.subtype | networkSubType | translate}}

  .col-md-4-x.packery-item
    .widget-container.fluid-height
      .heading
        stacked-icon(icon='fa-credit-card', color='color-lila')
        span(translate) SIM
      .widget-content.padded-small
        table.table.table-condensed.table-hover.table-infocard
          tbody
            tr
              td(translate) Carrier
              td {{device.operator}}
            tr
              td(translate) Network
              td {{device.phone.network}}
            tr
              td(translate) Number
              td {{device.phone.phoneNumber}}
            tr
              td(translate) IMEI
              td {{device.phone.imei}}
            tr
              td(translate) ICCID
              td
                small {{device.phone.iccid}}


  .col-md-4-x.packery-item
    .widget-container.fluid-height
      .heading
        stacked-icon(icon='fa-phone', color='color-green')
        span(translate) Hardware
      .widget-content.padded-small
        table.table.table-condensed.table-hover.table-infocard
          tbody
            tr
              td(translate) Manufacturer
              td {{device.manufacturer}}
            tr
              td(translate) Product
              td {{device.name ? device.name : '-'}}
            tr
              td(translate) Model
              td {{device.model}}
            tr
              td(translate) Serial
              td {{device.serial}}
            tr
              td(translate) Released
              td {{device.releasedAt ? (device.releasedAt | date:longDate) : '-'}}

  .col-md-4-x.packery-item
    .widget-container.fluid-height
      .heading
        stacked-icon(icon='fa-mobile', color='color-skyblue')
        span(translate) Platform
      .widget-content.padded-small
        table.table.table-condensed.table-hover.table-infocard
          tbody
            tr
              td(translate) OS
              td {{device.platform}}
            tr
              td(translate) Version
              td {{device.version}}
            tr
              td(translate) SDK
              td {{device.sdk}}
            tr
              td(translate) ABI
              td {{device.abi}}

  .col-md-4-x.packery-item
    .widget-container.fluid-height
      .heading
        stacked-icon(icon='fa-slack', color='color-black')
        span(translate) CPU
      .widget-content.padded-small
        table.table.table-condensed.table-hover.table-infocard
          tbody
            tr
              td(translate) Name
              td {{device.cpu.name ? device.cpu.name : '-'}}
            tr
              td(translate) Cores
              td {{device.cpu.cores ? device.cpu.cores : '-'}}
            tr
              td(translate) Frequency
              td {{device.cpu.freq ? device.cpu.freq + ' GHz' : '-'}}

  .col-md-4-x.packery-item
    .widget-container.fluid-height
      .heading
        stacked-icon(icon='fa-database', color='color-orange')
        span(translate) Memory
      .widget-content.padded-small
        table.table.table-condensed.table-hover.table-infocard
          tbody
            tr
              td(translate) RAM
              td {{device.memory.ram ? device.memory.ram + ' MB' : '-'}}
            tr
              td(translate) ROM
              td {{device.memory.rom ? device.memory.rom + ' MB' : '-'}}
            tr
              td(translate) SD Card Mounted
              td {{ sdCardMounted | humanizedBool }}
