mirror of
https://github.com/openstf/stf
synced 2025-10-04 02:09:32 +02:00
98 lines
3 KiB
JavaScript
98 lines
3 KiB
JavaScript
module.exports = function EnhanceDeviceServiceFactory($filter, AppState) {
|
|
var service = {}
|
|
|
|
function setState(data) {
|
|
// For convenience, formulate an aggregate state property that covers
|
|
// every possible state.
|
|
data.state = 'absent'
|
|
if (data.present) {
|
|
data.state = 'present'
|
|
switch (data.status) {
|
|
case 1:
|
|
data.state = 'offline'
|
|
break
|
|
case 2:
|
|
data.state = 'unauthorized'
|
|
break
|
|
case 3:
|
|
data.state = 'preparing'
|
|
if (data.ready) {
|
|
data.state = 'ready'
|
|
if (data.using) {
|
|
if (data.usage === 'automation') {
|
|
data.state = 'automation'
|
|
}
|
|
else {
|
|
data.state = 'using'
|
|
}
|
|
}
|
|
else {
|
|
if (data.owner) {
|
|
data.state = 'busy'
|
|
}
|
|
else {
|
|
data.state = 'available'
|
|
}
|
|
}
|
|
}
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
function enhanceDevice(device) {
|
|
device.enhancedName = device.name || device.model || device.serial || 'Unknown'
|
|
device.enhancedModel = device.model || 'Unknown'
|
|
device.enhancedImage120 = '/static/app/devices/icon/x120/' + (device.image || '_default.jpg')
|
|
device.enhancedImage24 = '/static/app/devices/icon/x24/' + (device.image || '_default.jpg')
|
|
device.enhancedStateAction = $filter('statusNameAction')(device.state)
|
|
device.enhancedStatePassive = $filter('statusNamePassive')(device.state)
|
|
}
|
|
|
|
function enhanceDeviceDetails(device) {
|
|
if (device.battery) {
|
|
device.enhancedBatteryPercentage = (device.battery.level / device.battery.scale * 100) + '%'
|
|
device.enhancedBatteryHealth = $filter('batteryHealth')(device.battery.health)
|
|
device.enhancedBatterySource = $filter('batterySource')(device.battery.source)
|
|
device.enhancedBatteryStatus = $filter('batteryStatus')(device.battery.status)
|
|
device.enhancedBatteryTemp = device.battery.temp + '°C'
|
|
}
|
|
|
|
if (device.owner) {
|
|
device.enhancedUserProfileUrl = enhanceUserProfileUrl(device.owner.email)
|
|
device.enhancedUserName = device.owner.name || 'No name'
|
|
}
|
|
}
|
|
|
|
function enhanceUserProfileUrl(email) {
|
|
var url
|
|
var userProfileUrl = (function() {
|
|
if (AppState && AppState.config && AppState.config.userProfileUrl) {
|
|
return AppState.config.userProfileUrl
|
|
}
|
|
return null
|
|
})()
|
|
|
|
if (userProfileUrl) {
|
|
// Using RFC 6570 URI Template specification
|
|
if (userProfileUrl && email) {
|
|
url = userProfileUrl.indexOf('{user}') !== -1 ?
|
|
userProfileUrl.replace('{user}', email) :
|
|
userProfileUrl + email
|
|
}
|
|
} else if (email.indexOf('@') !== -1) {
|
|
url = 'mailto:' + email
|
|
} else {
|
|
url = '/!#/user/' + email
|
|
}
|
|
return url
|
|
}
|
|
|
|
service.enhance = function(device) {
|
|
setState(device)
|
|
enhanceDevice(device)
|
|
enhanceDeviceDetails(device)
|
|
}
|
|
|
|
return service
|
|
}
|