blob: 21fb5904b3bc8a134bb8878b386ed77b3edef8b8 [file] [log] [blame]
var uuid = require('node-uuid')
var Promise = require('bluebird')
module.exports = function PortForwardingCtrl(
$scope
, SettingsService
) {
function defaults(id) {
return {
id: id
, targetHost: 'localhost'
, targetPort: 8080
, devicePort: 8080
, enabled: false
}
}
$scope.reversePortForwards = [defaults('_default')]
SettingsService.bind($scope, {
target: 'reversePortForwards'
, source: 'reversePortForwards'
})
$scope.$watch('device.reverseForwards', function(newValue) {
var map = Object.create(null)
if (newValue) {
newValue.forEach(function(forward) {
map[forward.id] = forward
})
}
$scope.reversePortForwards.forEach(function(forward) {
var deviceForward = map[forward.id]
forward.enabled = !!(deviceForward && deviceForward.id === forward.id &&
deviceForward.devicePort === forward.devicePort)
})
})
$scope.applyForward = function(forward) {
return forward.enabled ?
$scope.control.createForward(forward) :
$scope.control.removeForward(forward)
}
$scope.enableForward = function(forward) {
if (forward.enabled) {
return Promise.resolve()
}
return $scope.control.createForward(forward)
}
$scope.disableForward = function(forward) {
if (!forward.enabled) {
return Promise.resolve()
}
return $scope.control.removeForward(forward)
}
$scope.addRow = function() {
$scope.reversePortForwards.push(defaults(uuid.v4()))
}
$scope.removeRow = function(forward) {
$scope.disableForward(forward)
$scope.reversePortForwards.splice(
$scope.reversePortForwards.indexOf(forward), 1)
}
}