mirror of
https://github.com/openstf/stf
synced 2025-10-06 03:50:04 +02:00
191 lines
4.7 KiB
JavaScript
191 lines
4.7 KiB
JavaScript
module.exports = function ControlPanesController(
|
|
$scope
|
|
, $http
|
|
, gettext
|
|
, $routeParams
|
|
, $location
|
|
, DeviceService
|
|
, GroupService
|
|
, ControlService
|
|
, StorageService
|
|
, FatalMessageService
|
|
) {
|
|
var sharedTabs = [
|
|
{
|
|
title: gettext('Screenshots'),
|
|
icon: 'fa-camera',
|
|
templateUrl: 'control-panes/screenshots/screenshots.jade',
|
|
filters: ['native', 'web']
|
|
},
|
|
// {
|
|
// title: gettext('Inspect'),
|
|
// icon: 'fa-pencil',
|
|
// templateUrl: 'control-panes/inspect/inspect.jade',
|
|
// filters: ['web']
|
|
// },
|
|
// {
|
|
// title: gettext('Resources'),
|
|
// icon: 'fa-globe',
|
|
// templateUrl: 'control-panes/resources/resources.jade',
|
|
// filters: ['web']
|
|
// },
|
|
{
|
|
title: gettext('CPU'),
|
|
icon: 'fa-bar-chart-o',
|
|
templateUrl: 'control-panes/cpu/cpu.jade',
|
|
filters: ['native', 'web']
|
|
},
|
|
{
|
|
title: gettext('Advanced'),
|
|
icon: 'fa-bolt',
|
|
templateUrl: 'control-panes/advanced/advanced.jade',
|
|
filters: ['native', 'web']
|
|
}
|
|
]
|
|
|
|
$scope.topTabs = [
|
|
{
|
|
title: gettext('Dashboard'),
|
|
icon: 'fa-dashboard fa-fw',
|
|
templateUrl: 'control-panes/dashboard/dashboard.jade',
|
|
filters: ['native', 'web']
|
|
}
|
|
].concat(angular.copy(sharedTabs), [
|
|
{
|
|
title: gettext('Info'),
|
|
icon: 'fa-info',
|
|
templateUrl: 'control-panes/info/info.jade',
|
|
filters: ['native', 'web']
|
|
}
|
|
])
|
|
|
|
|
|
$scope.belowTabs = [
|
|
// {
|
|
// title: gettext('Activity'),
|
|
// icon: 'fa-clock-o',
|
|
// templateUrl: 'control-panes/activity/activity.jade',
|
|
// filters: ['native', 'web']
|
|
// },
|
|
{
|
|
title: gettext('Logs'),
|
|
icon: 'fa-list-alt',
|
|
templateUrl: 'control-panes/logs/logs.jade',
|
|
filters: ['native', 'web']
|
|
}
|
|
].concat(angular.copy(sharedTabs))
|
|
|
|
$scope.device = null
|
|
$scope.control = null
|
|
|
|
// @TODO Find a way to reuse this in the upload controller (or the other
|
|
// way around)
|
|
$scope.installFileForced = function ($files) {
|
|
$scope.$apply(function () {
|
|
$scope.upload = {
|
|
progress: 0
|
|
, lastData: 'uploading'
|
|
}
|
|
})
|
|
|
|
return StorageService.storeFile('apk', $files, {
|
|
filter: function(file) {
|
|
return /\.apk$/i.test(file.name)
|
|
}
|
|
})
|
|
.progressed(function(e) {
|
|
if (e.lengthComputable) {
|
|
$scope.$apply(function () {
|
|
$scope.upload = {
|
|
progress: e.loaded / e.total * 100
|
|
, lastData: 'uploading'
|
|
}
|
|
})
|
|
}
|
|
})
|
|
.then(function(res) {
|
|
$scope.$apply(function () {
|
|
$scope.upload = {
|
|
progress: 100
|
|
, lastData: 'processing'
|
|
}
|
|
})
|
|
|
|
var href = res.data.resources.file0.href
|
|
return $http.get(href + '/manifest')
|
|
.then(function(res) {
|
|
$scope.upload = {
|
|
progress: 100
|
|
, lastData: 'success'
|
|
, settled: true
|
|
}
|
|
|
|
if (res.data.success) {
|
|
return $scope.installForced({
|
|
href: href
|
|
, launch: true
|
|
, manifest: res.data.manifest
|
|
})
|
|
}
|
|
})
|
|
})
|
|
.catch(function(err) {
|
|
$scope.$apply(function () {
|
|
if (err.code === 'no_input_files') {
|
|
$scope.upload = null
|
|
}
|
|
else {
|
|
console.log('Upload error', err)
|
|
$scope.upload = {
|
|
progress: 100
|
|
, lastData: 'fail'
|
|
, settled: true
|
|
, error: err.message
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
$scope.installForced = function (options) {
|
|
return $scope.control.install(options)
|
|
.progressed(function (installResult) {
|
|
$scope.$apply(function () {
|
|
installResult.manifest = options.manifest
|
|
$scope.installation = installResult
|
|
})
|
|
})
|
|
.then(function (installResult) {
|
|
$scope.$apply(function () {
|
|
installResult.manifest = options.manifest
|
|
$scope.treeData = installResult.manifest
|
|
$scope.installation = installResult
|
|
})
|
|
})
|
|
}
|
|
|
|
DeviceService.get($routeParams.serial, $scope)
|
|
.then(function (device) {
|
|
return GroupService.invite(device)
|
|
})
|
|
.then(function (device) {
|
|
$scope.device = device
|
|
$scope.control = ControlService.create(device, device.channel)
|
|
|
|
return device
|
|
})
|
|
.catch(function () {
|
|
$location.path('/')
|
|
})
|
|
|
|
|
|
$scope.$watch('device.state', function (newValue, oldValue) {
|
|
if (newValue !== oldValue) {
|
|
if (oldValue === 'using') {
|
|
FatalMessageService.open(angular.copy($scope.device))
|
|
} else {
|
|
|
|
}
|
|
}
|
|
}, true)
|
|
}
|