1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-04 10:19:30 +02:00
OpenSTF/res/app/device-list/device-list-controller.js
2020-01-24 10:47:35 +01:00

240 lines
3.8 KiB
JavaScript

/**
* Copyright © 2019 contains code contributed by Orange SA, authors: Denis Barbaron - Licensed under the Apache license 2.0
**/
var QueryParser = require('./util/query-parser')
module.exports = function DeviceListCtrl(
$scope
, DeviceService
, DeviceColumnService
, GroupService
, ControlService
, SettingsService
, $location
) {
$scope.tracker = DeviceService.trackAll($scope)
$scope.control = ControlService.create($scope.tracker.devices, '*ALL')
$scope.columnDefinitions = DeviceColumnService
var defaultColumns = [
{
name: 'state'
, selected: true
}
, {
name: 'model'
, selected: true
}
, {
name: 'name'
, selected: true
}
, {
name: 'serial'
, selected: false
}
, {
name: 'operator'
, selected: true
}
, {
name: 'releasedAt'
, selected: true
}
, {
name: 'version'
, selected: true
}
, {
name: 'network'
, selected: false
}
, {
name: 'display'
, selected: false
}
, {
name: 'manufacturer'
, selected: false
}
, {
name: 'marketName'
, selected: false
}
, {
name: 'sdk'
, selected: false
}
, {
name: 'abi'
, selected: false
}
, {
name: 'cpuPlatform'
, selected: false
}
, {
name: 'openGLESVersion'
, selected: false
}
, {
name: 'browser'
, selected: false
}
, {
name: 'phone'
, selected: false
}
, {
name: 'imei'
, selected: false
}
, {
name: 'imsi'
, selected: false
}
, {
name: 'iccid'
, selected: false
}
, {
name: 'batteryHealth'
, selected: false
}
, {
name: 'batterySource'
, selected: false
}
, {
name: 'batteryStatus'
, selected: false
}
, {
name: 'batteryLevel'
, selected: false
}
, {
name: 'batteryTemp'
, selected: false
}
, {
name: 'provider'
, selected: true
}
, {
name: 'notes'
, selected: true
}
, {
name: 'owner'
, selected: true
}
, {
name: 'group'
, selected: false
}
, {
name: 'groupSchedule'
, selected: false
}
, {
name: 'groupStartTime'
, selected: false
}
, {
name: 'groupEndTime'
, selected: false
}
, {
name: 'groupRepetitions'
, selected: false
}
, {
name: 'groupOwner'
, selected: false
}
, {
name: 'groupOrigin'
, selected: false
}
]
$scope.columns = defaultColumns
SettingsService.bind($scope, {
target: 'columns'
, source: 'deviceListColumns'
})
var defaultSort = {
fixed: [
{
name: 'state'
, order: 'asc'
}
]
, user: [
{
name: 'name'
, order: 'asc'
}
]
}
$scope.sort = defaultSort
SettingsService.bind($scope, {
target: 'sort'
, source: 'deviceListSort'
})
$scope.filter = []
$scope.activeTabs = {
icons: true
, details: false
}
SettingsService.bind($scope, {
target: 'activeTabs'
, source: 'deviceListActiveTabs'
})
$scope.toggle = function(device) {
if (device.using) {
$scope.kick(device)
} else {
$location.path('/control/' + device.serial)
}
}
$scope.invite = function(device) {
return GroupService.invite(device).then(function() {
$scope.$digest()
})
}
$scope.applyFilter = function(query) {
$scope.filter = QueryParser.parse(query)
}
$scope.search = {
deviceFilter: '',
focusElement: false
}
$scope.focusSearch = function() {
if (!$scope.basicMode) {
$scope.search.focusElement = true
}
}
$scope.reset = function() {
$scope.search.deviceFilter = ''
$scope.filter = []
$scope.sort = defaultSort
$scope.columns = defaultColumns
}
}