You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
portainer/js/controllers.js

279 lines
8.1 KiB

function MastheadController($scope) {
$scope.template = 'partials/masthead.html';
$scope.hclass = 'active';
$scope.cclass = '';
$scope.iclass = '';
$scope.sclass = '';
$scope.linkChange = function(link) {
$scope.hclass = '';
12 years ago
$scope.cclass = '';
$scope.iclass = '';
$scope.sclass = '';
//This is shitty, I need help with this crap.
switch(link) {
case 'home':
$scope.hclass = 'active';
break;
case 'containers':
$scope.cclass = 'active';
break;
case 'images':
$scope.iclass = 'active';
break;
case 'settings':
$scope.sclass = 'active';
break;
default:
console.log('Not supported:' + link);
}
};
}
function DashboardController($scope, Container) {
}
function SettingsController($scope, Auth, System, Docker, Settings) {
$scope.auth = {};
$scope.info = {};
$scope.docker = {};
12 years ago
$scope.endpoint = Settings.endpoint;
$scope.apiVersion = Settings.version;
$('#response').hide();
$scope.alertClass = 'block';
$scope.updateAuthInfo = function() {
if ($scope.auth.password != $scope.auth.cpassword) {
setSuccessfulResponse($scope, 'Your passwords do not match.', '#response');
return;
}
Auth.update(
{username: $scope.auth.username, email: $scope.auth.email, password: $scope.auth.password}, function(d) {
console.log(d);
setSuccessfulResponse($scope, 'Auto information updated.', '#response');
}, function(e) {
console.log(e);
setFailedResponse($scope, e.data, '#response');
});
};
Auth.get({}, function(d) {
$scope.auth = d;
});
Docker.get({}, function(d) {
$scope.docker = d;
});
System.get({}, function(d) {
$scope.info = d;
});
}
// Controls the page that displays a single container and actions on that container.
function ContainerController($scope, $routeParams, $location, Container) {
$('#response').hide();
$scope.alertClass = 'block';
$scope.start = function(){
Container.start({id: $routeParams.id}, function(d) {
console.log(d);
setSuccessfulResponse($scope, 'Container started.', '#response');
}, function(e) {
console.log(e);
setFailedResponse($scope, e.data, '#response');
});
12 years ago
};
$scope.stop = function() {
Container.stop({id: $routeParams.id}, function(d) {
console.log(d);
setSuccessfulResponse($scope, 'Container stopped.', '#response');
}, function(e) {
console.log(e);
setFailedResponse($scope, e.data, '#response');
12 years ago
});
};
$scope.kill = function() {
Container.kill({id: $routeParams.id}, function(d) {
console.log(d);
setSuccessfulResponse($scope, 'Container killed.', '#response');
}, function(e) {
console.log(e);
setFailedResponse($scope, e.data, '#response');
});
};
$scope.remove = function() {
if (confirm("Are you sure you want to remove the container?")) {
Container.remove({id: $routeParams.id}, function(d) {
console.log(d);
setSuccessfulResponse($scope, 'Container removed.', '#response');
}, function(e){
console.log(e);
setFailedResponse($scope, e.data, '#response');
12 years ago
});
}
};
$scope.changes = [];
$scope.getChanges = function() {
Container.changes({id: $routeParams.id}, function(d) {
$scope.changes = d;
12 years ago
});
};
Container.get({id: $routeParams.id}, function(d) {
$scope.container = d;
}, function(e) {
console.log(e);
$location.path('/containers/');
});
$scope.getChanges();
}
// Controller for the list of containers
function ContainersController($scope, Container, Settings) {
$scope.displayAll = Settings.displayAll;
$scope.predicate = '-Created';
var update = function(data) {
Container.query(data, function(d) {
$scope.containers = d;
});
};
$scope.toggleGetAll = function() {
Settings.displayAll = $scope.displayAll;
var u = update;
var data = {all: 0};
if ($scope.displayAll) {
data.all = 1;
}
u(data);
};
update({all: $scope.displayAll ? 1 : 0});
}
// Controller for the list of images
function ImagesController($scope, Image) {
$scope.predicate = '-Created';
Image.query({}, function(d) {
$scope.images = d;
});
}
// Controller for a single image and actions on that image
function ImageController($scope, $routeParams, $location, Image) {
$scope.history = [];
$scope.tag = {repo: '', force: false};
$('#response').hide();
$scope.alertClass = 'block';
$scope.remove = function() {
if (confirm("Are you sure you want to delete this image?")) {
Image.remove({id: $routeParams.id}, function(d) {
console.log(d);
setSuccessfulResponse($scope, 'Image removed.', '#response');
}, function(e) {
console.log(e);
setFailedResponse($scope, e.data, '#response');
});
}
};
$scope.getHistory = function() {
Image.history({id: $routeParams.id}, function(d) {
$scope.history = d;
});
};
$scope.updateTag = function() {
var tag = $scope.tag;
Image.tag({id: $routeParams.id, repo: tag.repo, force: tag.force ? 1 : 0}, function(d) {
console.log(d);
setSuccessfulResponse($scope, 'Tag added.', '#response');
}, function(e) {
console.log(e);
setFailedResponse($scope, e.data, '#response');
});
};
Image.get({id: $routeParams.id}, function(d) {
$scope.image = d;
}, function(e) {
console.log(e);
$location.path('/images/');
});
$scope.getHistory();
}
function StartContainerController($scope, $routeParams, $location, Container) {
$scope.template = 'partials/startcontainer.html';
$scope.memory = 0;
$scope.memorySwap = 0;
$scope.env = '';
$scope.dns = '';
$scope.volumesFrom = '';
$scope.commands = '';
$scope.launchContainer = function() {
var cmds = null;
if ($scope.commands !== '') {
cmds = $scope.commands.split('\n');
}
var id = $routeParams.id;
var ctor = Container;
var loc = $location;
var s = $scope;
Container.create({
Image: id,
Memory: $scope.memory,
MemorySwap: $scope.memorySwap,
Cmd: cmds,
VolumesFrom: $scope.volumesFrom
}, function(d) {
console.log(d);
if (d.Id) {
ctor.start({id: d.Id}, function(cd) {
console.log(cd);
loc.path('/containers/' + d.Id + '/');
}, function(e) {
console.log(e);
s.resonse = e.data;
});
}
}, function(e) {
console.log(e);
$scope.response = e.data;
});
};
}
function setSuccessfulResponse($scope, msg, msgId) {
$scope.alertClass = 'success';
$scope.response = msg;
$(msgId).show();
setTimeout(function() { $(msgId).hide();}, 5000);
}
function setFailedResponse($scope, msg, msgId) {
$scope.alertClass = 'error';
$scope.response = msg;
$(msgId).show();
}