Files
stf-DeviceFarmer/res/app/device-list/device-list.jade
2014-04-15 15:43:39 +09:00

149 lines
9.4 KiB
Plaintext

div.stf-device-list
.row
.col-md-12
.widget-container.fluid-height
.widget-content.padded
tabset
tab(active='activeTabs.devices')
tab-heading
i.fa.fa-th-large
span(translate) Devices
nothing-to-show(message='{{"No devices connected"|translate}}', icon='fa-sitemap', ng-show='!tracker.devices.length')
ul.devices-icon-view
li(ng-repeat='device in tracker.devices | filter:{usable:true} | orderBy:"name" track by device.serial',
ng-click='toggle(device)',
).cursor-select.pointer.thumbnail
.device-photo-small
img(ng-src='{{device.image ? "/static/devices/" + device.image : "/static/bower_components/stf-graphics/devices/small/default.jpg" }}')
.device-name(title='{{device.serial}} - {{device.model}}') {{ device.name || device.model }}
//raphael-status-icon.device-status-button(status='{{ deviceStatus(device) }}', title="{{ deviceStatusText(device) }}", tooltip='{{ deviceStatusText(device)|translate }}')
button(ng-class='{"btn-primary": device.state == "using", "btn-primary-outline": device.state == "available"}').btn.btn-xs.device-status {{statusName(device)}}
.clear-fix
.clear-fix
.line
ul.devices-icon-view
li(ng-repeat='device in tracker.devices | filter:{usable:false} | orderBy:"name" track by device.serial',
ng-disabled='true',
).cursor-select.pointer.thumbnail.device-is-busy
.device-photo-small
img(ng-src='{{device.image ? "/static/devices/" + device.image : "/static/bower_components/stf-graphics/devices/small/default.jpg" }}')
.device-name(title='{{device.serial}} - {{device.model}}') {{ device.name || device.model }}
//raphael-status-icon.device-status-button(status='{{ deviceStatus(device) }}', title="{{ deviceStatusText(device) }}", tooltip='{{ deviceStatusText(device)|translate }}')
button.btn.btn-default.btn-xs.device-status {{statusName(device)}}
.clear-fix
tab(active='activeTabs.details')
tab-heading
i.fa.fa-list(translate)
span(translate) Details
nothing-to-show(message='{{"No devices connected"|translate}}', icon='fa-sitemap', ng-show='!tracker.devices.length')
.filtering-buttons
clear-button(ng-click="tableParams.sorting({}); tableParams.filter({})")
filter-button(ng-model='filterEnabled')
table.table.table-hover.dataTable(ng-table='tableParams',
show-filter='filterEnabled', ng-show='tracker.devices.length')
//.cursor.selectable
//thead
tr
th
div {{"Use"|translate}}
th
div {{"Status"|translate}}
th
div {{"Model"|translate}}
th
div {{"Product"|translate}}
th
div {{"Carrier"|translate}}
th
div {{"Phone number"}}
th
div {{"Release Date"|translate}}
th
div {{"OS"|translate}}
th
div {{"Screen"|translate}}
th
div {{"Location"|translate}}
th
div {{"User"|translate}}
//tbody
tr(ng-repeat='device in $data', ng-class='{ "device-not-usable": !device.usable }')
td(data-title="'Status'",
sortable='"state"',
filter="{ 'usable': 'select' }",
filter-data="statusFilter($column)")
button(ng-class='{"btn-primary": device.state == "using", \
"btn-primary-outline": device.state == "available"}',
ng-click='device.usable && toggle(device)').btn.btn-xs.device-status {{statusName(device)}}
td(data-title="'Model'", sortable='"model"', filter='{"model": "text"}')
span {{device.model}}
td(data-title="'Product'", sortable='"name"', filter='{"name": "text"}')
span {{device.name}}
td(data-title="'Carrier'", sortable='"operator"', filter='{"operator": "text"}')
span {{device.operator}}
td(data-title="'Phone number'", sortable='"phone.phoneNumber"', filter='{"phone.phoneNumber": "text"}')
span {{device.phone.phoneNumber}}
td(data-title="'Release'", sortable='"releasedAt"', filter='{"releasedAt": "text"}')
span {{device.releasedAt | date:'yyyy/MM/dd'}}
td(data-title="'OS'", sortable='"version"', filter='{"version": "text"}')
span {{device.version}}
td(data-title="'Screen'", sortable='"display.width"', filter='{"display.width": "text"}')
span {{device.display.width}}x{{device.display.height}}
td(data-title="'Location'", sortable='"provider.name"', filter='{"provider.name": "text"}')
span {{device.provider.name}}
td(data-title="'User'", sortable='"owner.name"', filter='{"owner.name": "text"}')
a(ng-if='device.owner', ng-href='{{userContactUrl(device.owner.email)}}', role='button', target='_href') {{device.owner.name || "No name"}}
a(ng-if='!device.owner') -
//p
strong Sorting
pre {{tableParams.sorting() | json}}
pre {{tableParams.filter() | json}}
//tr(ng-repeat='device in $data')
td(width='5%', data-title='"Use"', sortable='control')
button(ng-model='device.control', ng-click='toggle(device)', btn-checkbox,
ng-class='{"btn-primary-outline": !device.control, "btn-danger-outline": device.control}',
ng-disabled='!isControllable(device)').btn.btn-xs
span(ng-if='device.control') {{"Stop Using"|translate}}
span(ng-if='!device.control') {{"Start Using"|translate}}
//input(type='checkbox', ng-click='toggle(device)', ng-checked='device.control', ng-disabled='!isControllable(device)')
td(width='2%', data-title='"Status"', sortable='"status"')
span(ng-class='deviceStatusClass(device)') {{ deviceStatusText(device)|translate }}
td(width='18%', data-title='"Model"', sortable='capabilities.info.name.id', filter="{ 'capabilities.info.name.id': 'text' }")
div.unselectable.cursor(title='{{device.capabilities.info.name.id}}', ui-event="{ 'dblclick' : 'clickModelName(device)' }") {{ device.capabilities.info.name.id || device.capabilities.model }}
//a(ng-href='/#/devices/{{device.capabilities.id}}', title='{{device.capabilities.id}}') {{ device.capabilities.info.name.id || device.capabilities.model }}
td(width='12%', data-title='"Product"', sortable='capabilities.model') {{ device.capabilities.model }}
td(width='8%', data-title='"Carrier"', sortable='capabilities.info.carrier.name') {{ device.capabilities.info.carrier.name }}
td(width='8%', data-title='"Phone number"', sortable='capabilities.info.carrier.name') {{ device.capabilities.info.carrier.name }}
td(width='9%', data-title='"Release"', sortable='capabilities.info.date') {{ device.capabilities.info.date | date:'yyyy/MM/dd' }}
td(width='4%', data-title='"OS"', sortable='capabilities.version') {{ device.capabilities.version }}
td(width='6%', data-title='"Screen"', sortable='capabilities.info.display.w') {{ device.capabilities.info.display.w }}x{{ device.capabilities.info.display.h }}
td(width='6%', data-title='"Location"')
a(ng-href='{{deviceLocation(device).link}}', target='_blank') {{ deviceLocation(device).name }}
td(width='5%', data-title='"Control"', sortable='')
span(ng-controller='ToolBarCtrl')
button(ng-click='openControl(device.capabilities.id)', ng-disabled='!device.control').btn.btn-primary.btn-sm
i.fa.fa-external-link-square
td(width='10%', data-title='"User"', ng-show='showDeviceUsers')
a(ng-href='{{deviceUser(device).link}}', target='_blank') {{ deviceUser(device).name }}
//ul
li(ng-repeat='device in tracker.devices track by device.serial')
pre {{device|json}}
//ul.device-list
li(ng-repeat='device in tracker.devices track by device.serial')
span {{ device.serial }} {{ device.name || device.model }} {{ device.present ? 'present' : 'absent' }} {{ device.usable ? 'usable' : 'unusable' }} {{ device.isOwnedByUser ? 'owned by me' : '' }} {{ device.owner.email }}
a(href='#!/devices/{{ device.serial }}') Linky
button(ng-click="invite(device)") invite
button(ng-click="kick(device)") kick
img(ng-src='/static/devices/{{ device.image }}', ng-if='device.image')