blob: d37d894dd25848ab8ea6ebf3e03bd3ee2b72a52e [file] [log] [blame]
module.exports =
function StandaloneServiceFactory($window, $rootScope, SettingsService,
ScalingService, GroupService, $timeout) {
var service = {}
//SettingsService.sync($scope, 'ControlWindow', {
// controlWindowWidth: 600,
// controlWindowHeight: 900,
// controlWindowTop: 50,
// controlWindowLeft: 50
//})
var screenWidth = $window.screen.availWidth || $window.screen.width || 1024
var screenHeight = $window.screen.availHeight || $window.screen.height ||
768
var windowSizeRatio = 0.5
function fitDeviceInGuestScreen(device) {
//console.log('device.width', device.width)
//console.log('device', device)
var screen = {
scaler: ScalingService.coordinator(
device.display.width, device.display.height
),
rotation: device.display.rotation,
bounds: {
x: 0, y: 0, w: screenWidth, h: screenHeight
}
}
var projectedSize = screen.scaler.projectedSize(
screen.bounds.w * windowSizeRatio,
screen.bounds.h * windowSizeRatio,
screen.rotation
)
return projectedSize
}
service.open = function(device) {
var url = '#!/c/' + (device.serial ? device.serial : '') + '?standalone'
var projected = fitDeviceInGuestScreen(device)
var features = [
'width=' + projected.width,
'height=' + projected.height,
'top=' + (screenHeight / 4),
'left=' + (screenWidth / 5),
'toolbar=no',
'location=no',
'dialog=yes',
'personalbar=no',
'directories=no',
'status=no',
'menubar=no',
'scrollbars=no',
'copyhistory=no',
'resizable=yes'
].join(',')
var newWindow = $window.open(url, 'STF-' + device.serial, features)
function setWindowTitle(newWindow, device) {
var windowTitle = 'STF - ' + device.name
if (device.name !== device.model) {
windowTitle += ' (' + device.model + ')'
}
//windowTitle += ' (' + device.serial + ')'
if (newWindow.document) {
newWindow.document.title = windowTitle
}
$timeout(function() {
if (newWindow.document) {
newWindow.document.title = windowTitle
}
}, 400)
}
setWindowTitle(newWindow, device)
newWindow.onbeforeunload = function() {
// TODO: check for usage
GroupService.kick(device).then(function() {
$rootScope.$digest()
})
// TODO: save coordinates
// $scope.controlWindowWidth = windowOpen.innerWidth
// $scope.controlWindowHeight = windowOpen.innerHeight
// $scope.controlWindowTop = windowOpen.screenTop
// $scope.controlWindowLeft = windowOpen.screenLeft
}
// TODO: Resize on-demand
//newWindow.onresize = function (e) {
// var windowWidth = e.target.outerWidth
// var windowHeight = e.target.outerHeight
//
// var newWindowWidth = Math.floor(projected.width * windowHeight / projected.height)
// console.log('newWindowWidth', newWindowWidth)
// console.log('windowWidth', windowWidth)
//
// newWindow.resizeTo(newWindowWidth, windowHeight)
//}
}
return service
}