blob: 64246663638808591c2c26efd1da9edc7a75a7c6 [file] [log] [blame]
var _ = require('lodash')
module.exports = function DeviceControlCtrl($scope, DeviceService, GroupService,
$location, $timeout, $window, $rootScope) {
$scope.showScreen = true
$scope.groupTracker = DeviceService.trackGroup($scope)
$scope.groupDevices = $scope.groupTracker.devices
$scope.kickDevice = function(device) {
if (!device || !$scope.device) {
alert('No device found')
return
}
try {
// If we're trying to kick current device
if (device.serial === $scope.device.serial) {
// If there is more than one device left
if ($scope.groupDevices.length > 1) {
// Control first free device first
var firstFreeDevice = _.find($scope.groupDevices, function(dev) {
return dev.serial !== $scope.device.serial
})
$scope.controlDevice(firstFreeDevice)
// Then kick the old device
GroupService.kick(device).then(function() {
$scope.$digest()
})
} else {
// Kick the device
GroupService.kick(device).then(function() {
$scope.$digest()
})
$location.path('/devices/')
}
} else {
GroupService.kick(device).then(function() {
$scope.$digest()
})
}
} catch (e) {
alert(e.message)
}
}
$scope.controlDevice = function(device) {
$location.path('/control/' + device.serial)
}
function isPortrait(val) {
var value = val
if (typeof value === 'undefined' && $scope.device) {
value = $scope.device.display.rotation
}
return (value === 0 || value === 180)
}
function isLandscape(val) {
var value = val
if (typeof value === 'undefined' && $scope.device) {
value = $scope.device.display.rotation
}
return (value === 90 || value === 270)
}
$scope.tryToRotate = function(rotation) {
if (rotation === 'portrait') {
$scope.control.rotate(0)
$timeout(function() {
if (isLandscape()) {
$scope.currentRotation = 'landscape'
}
}, 400)
} else if (rotation === 'landscape') {
$scope.control.rotate(90)
$timeout(function() {
if (isPortrait()) {
$scope.currentRotation = 'portrait'
}
}, 400)
}
}
$scope.currentRotation = 'portrait'
$scope.$watch('device.display.rotation', function(newValue) {
if (isPortrait(newValue)) {
$scope.currentRotation = 'portrait'
} else if (isLandscape(newValue)) {
$scope.currentRotation = 'landscape'
}
})
// TODO: Refactor this inside control and server-side
$scope.rotateLeft = function() {
var angle = 0
if ($scope.device && $scope.device.display) {
angle = $scope.device.display.rotation
}
if (angle === 0) {
angle = 270
} else {
angle -= 90
}
$scope.control.rotate(angle)
if ($rootScope.standalone) {
$window.resizeTo($window.outerHeight, $window.outerWidth)
}
}
$scope.rotateRight = function() {
var angle = 0
if ($scope.device && $scope.device.display) {
angle = $scope.device.display.rotation
}
if (angle === 270) {
angle = 0
} else {
angle += 90
}
$scope.control.rotate(angle)
if ($rootScope.standalone) {
$window.resizeTo($window.outerHeight, $window.outerWidth)
}
}
}