mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-07-05 09:39:03 +02:00
add additional info to docker js update
This commit is contained in:
@@ -17318,16 +17318,31 @@ app.controller('listDockersite', function ($scope, $http) {
|
||||
|
||||
app.controller('ListDockersitecontainer', function ($scope, $http) {
|
||||
$scope.cyberPanelLoading = true;
|
||||
$scope.conatinerview = true
|
||||
$scope.conatinerview = true;
|
||||
$('#cyberpanelLoading').hide();
|
||||
|
||||
// Add filter for object length
|
||||
app.filter('objLength', function() {
|
||||
return function(obj) {
|
||||
return obj ? Object.keys(obj).length : 0;
|
||||
};
|
||||
});
|
||||
|
||||
// Format bytes to human readable
|
||||
function formatBytes(bytes, decimals = 2) {
|
||||
if (bytes === 0) return '0 Bytes';
|
||||
const k = 1024;
|
||||
const dm = decimals < 0 ? 0 : decimals;
|
||||
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
|
||||
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
|
||||
}
|
||||
|
||||
$scope.getcontainer = function () {
|
||||
$('#cyberpanelLoading').show();
|
||||
url = "/docker/getDockersiteList";
|
||||
|
||||
var data = {'name': $('#sitename').html()};
|
||||
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
@@ -17336,44 +17351,32 @@ app.controller('ListDockersitecontainer', function ($scope, $http) {
|
||||
|
||||
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
|
||||
|
||||
|
||||
function ListInitialData(response) {
|
||||
$('#cyberpanelLoading').hide();
|
||||
if (response.data.status === 1) {
|
||||
|
||||
$scope.cyberPanelLoading = true;
|
||||
|
||||
var finalData = JSON.parse(response.data.data[1]);
|
||||
|
||||
$scope.ContainerList = finalData;
|
||||
$("#listFail").hide();
|
||||
} else {
|
||||
$("#listFail").fadeIn();
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function cantLoadInitialData(response) {
|
||||
$scope.cyberPanelLoading = true;
|
||||
$('#cyberpanelLoading').hide();
|
||||
|
||||
new PNotify({
|
||||
title: 'Operation Failed!',
|
||||
text: 'Connect disrupted, refresh the page.',
|
||||
text: 'Connection disrupted, refresh the page.',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$scope.getcontainer()
|
||||
$scope.cyberPanelLoading = true;
|
||||
|
||||
};
|
||||
|
||||
$scope.Lunchcontainer = function (containerid) {
|
||||
// $scope.listcontainerview = true
|
||||
$scope.cyberpanelLoading = false
|
||||
$scope.cyberpanelLoading = false;
|
||||
$('#cyberpanelLoading').show();
|
||||
var url = "/docker/getContainerAppinfo";
|
||||
|
||||
@@ -17390,48 +17393,65 @@ app.controller('ListDockersitecontainer', function ($scope, $http) {
|
||||
|
||||
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
|
||||
|
||||
|
||||
function ListInitialData(response) {
|
||||
$scope.cyberpanelLoading = true
|
||||
$scope.cyberpanelLoading = true;
|
||||
$('#cyberpanelLoading').hide();
|
||||
// console.log(response);
|
||||
|
||||
if (response.data.status === 1) {
|
||||
console.log(response.data.data);
|
||||
$scope.cid = response.data.data[1].id
|
||||
$scope.status = response.data.data[1].status
|
||||
$scope.appcpuUsage = 5
|
||||
$scope.appmemoryUsage = 9
|
||||
$scope.cName = response.data.data[1].name
|
||||
$scope.port = response.data.data[1].name
|
||||
$scope.getcontainerlog(containerid)
|
||||
} else {
|
||||
var containerInfo = response.data.data[1];
|
||||
|
||||
// Basic Information
|
||||
$scope.cid = containerInfo.id;
|
||||
$scope.status = containerInfo.status;
|
||||
$scope.created = new Date(containerInfo.created);
|
||||
$scope.uptime = containerInfo.uptime;
|
||||
$scope.cName = containerInfo.name;
|
||||
|
||||
// Resource Usage
|
||||
var memoryBytes = containerInfo.memory_usage;
|
||||
$scope.memoryUsage = formatBytes(memoryBytes);
|
||||
$scope.memoryUsagePercent = (memoryBytes / (1024 * 1024 * 1024)) * 100; // Assuming 1GB limit
|
||||
$scope.cpuUsagePercent = (containerInfo.cpu_usage / 10000000000) * 100; // Normalize to percentage
|
||||
|
||||
// Network & Ports
|
||||
$scope.ports = containerInfo.ports;
|
||||
|
||||
// Volumes
|
||||
$scope.volumes = containerInfo.volumes;
|
||||
|
||||
// Environment Variables
|
||||
$scope.environment = containerInfo.environment;
|
||||
|
||||
// Get container logs
|
||||
$scope.getcontainerlog(containerid);
|
||||
|
||||
new PNotify({
|
||||
title: 'Success!',
|
||||
text: 'Container information loaded successfully.',
|
||||
type: 'success'
|
||||
});
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Operation Failed!',
|
||||
text: response.data.error_message,
|
||||
type: 'error'
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function cantLoadInitialData(response) {
|
||||
$scope.cyberpanelLoading = true
|
||||
$scope.cyberpanelLoading = true;
|
||||
$('#cyberpanelLoading').hide();
|
||||
new PNotify({
|
||||
title: 'Operation Failed!',
|
||||
text: 'Connect disrupted, refresh the page.',
|
||||
text: 'Connection disrupted, refresh the page.',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$scope.getcontainerlog = function (containerid) {
|
||||
$scope.cyberpanelLoading = false
|
||||
|
||||
|
||||
$scope.cyberpanelLoading = false;
|
||||
var url = "/docker/getContainerApplog";
|
||||
|
||||
var data = {
|
||||
@@ -17447,345 +17467,68 @@ app.controller('ListDockersitecontainer', function ($scope, $http) {
|
||||
|
||||
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
|
||||
|
||||
|
||||
function ListInitialData(response) {
|
||||
$scope.cyberpanelLoading = true
|
||||
$scope.conatinerview = false
|
||||
$scope.cyberpanelLoading = true;
|
||||
$scope.conatinerview = false;
|
||||
$('#cyberpanelLoading').hide();
|
||||
$scope.logs = response.data.data[1];
|
||||
|
||||
|
||||
|
||||
if (response.data.status === 1) {
|
||||
new PNotify({
|
||||
title: 'Success!',
|
||||
text: 'Container info fetched.',
|
||||
type: 'success'
|
||||
});
|
||||
$scope.logs = response.data.data[1];
|
||||
} else {
|
||||
|
||||
new PNotify({
|
||||
title: 'Operation Failed!',
|
||||
text: response.data.error_message,
|
||||
type: 'error'
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function cantLoadInitialData(response) {
|
||||
$scope.cyberpanelLoading = true
|
||||
$scope.cyberpanelLoading = true;
|
||||
$('#cyberpanelLoading').hide();
|
||||
$scope.conatinerview = false
|
||||
|
||||
$scope.conatinerview = false;
|
||||
new PNotify({
|
||||
title: 'Operation Failed!',
|
||||
text: 'Connect disrupted, refresh the page.',
|
||||
text: 'Connection disrupted, refresh the page.',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$scope.recreateappcontainer = function () {
|
||||
$scope.cyberPanelLoading = false;
|
||||
var url = "/docker/recreateappcontainer";
|
||||
|
||||
var data = {
|
||||
'name': $('#sitename').html(),
|
||||
'WPusername': $scope.WPUsername,
|
||||
'WPemail': $scope.adminEmail,
|
||||
'WPpasswd': $scope.WPPassword,
|
||||
};
|
||||
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
|
||||
|
||||
|
||||
function ListInitialData(response) {
|
||||
$scope.conatinerview = false
|
||||
$scope.cyberPanelLoading = true;
|
||||
|
||||
$scope.getcontainer()
|
||||
|
||||
|
||||
if (response.data.status === 1) {
|
||||
new PNotify({
|
||||
title: 'Success!',
|
||||
text: 'Container recreated',
|
||||
type: 'success'
|
||||
});
|
||||
} else {
|
||||
|
||||
new PNotify({
|
||||
title: 'Operation Failed!',
|
||||
text: response.data.error_message,
|
||||
type: 'error'
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function cantLoadInitialData(response) {
|
||||
$scope.cyberPanelLoading = true;
|
||||
|
||||
new PNotify({
|
||||
title: 'Operation Failed!',
|
||||
text: 'Connect disrupted, refresh the page.',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$scope.refreshStatus = function () {
|
||||
$('#actionLoading').show();
|
||||
url = "/docker/getContainerStatus";
|
||||
var data = {name: $scope.cName};
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
|
||||
|
||||
function ListInitialData(response) {
|
||||
$('#actionLoading').hide();
|
||||
if (response.data.containerStatus === 1) {
|
||||
console.log(response.data.status);
|
||||
$scope.status = response.data.status;
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Unable to complete request',
|
||||
text: response.data.error_message,
|
||||
type: 'error'
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function cantLoadInitialData(response) {
|
||||
$('#actionLoading').hide();
|
||||
PNotify.error({
|
||||
title: 'Unable to complete request',
|
||||
text: "Problem in connecting to server"
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$scope.restarthStatus = function () {
|
||||
$('#actionLoading').show();
|
||||
url = "/docker/RestartContainerAPP";
|
||||
var data = {
|
||||
name: $scope.cName,
|
||||
id: $scope.cid
|
||||
};
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
|
||||
|
||||
function ListInitialData(response) {
|
||||
$('#actionLoading').hide();
|
||||
if (response.data.status === 1) {
|
||||
if (response.data.data[0] === 1) {
|
||||
new PNotify({
|
||||
title: 'Success!',
|
||||
text: 'Action completed',
|
||||
type: 'success'
|
||||
});
|
||||
// Auto-refresh container info every 30 seconds
|
||||
var refreshInterval;
|
||||
$scope.$watch('conatinerview', function(newValue, oldValue) {
|
||||
if (newValue === false) { // When container view is shown
|
||||
refreshInterval = setInterval(function() {
|
||||
if ($scope.cid) {
|
||||
$scope.Lunchcontainer($scope.cid);
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Error!',
|
||||
text: response.data.data[1],
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Unable to complete request',
|
||||
text: response.data.error_message,
|
||||
type: 'error'
|
||||
});
|
||||
|
||||
}, 30000); // 30 seconds
|
||||
} else { // When container view is hidden
|
||||
if (refreshInterval) {
|
||||
clearInterval(refreshInterval);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function cantLoadInitialData(response) {
|
||||
$('#actionLoading').hide();
|
||||
PNotify.error({
|
||||
title: 'Unable to complete request',
|
||||
text: "Problem in connecting to server"
|
||||
});
|
||||
// Clean up on controller destruction
|
||||
$scope.$on('$destroy', function() {
|
||||
if (refreshInterval) {
|
||||
clearInterval(refreshInterval);
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
$scope.StopContainerAPP = function () {
|
||||
$('#actionLoading').show();
|
||||
url = "/docker/StopContainerAPP";
|
||||
var data = {
|
||||
name: $scope.cName,
|
||||
id: $scope.cid
|
||||
};
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
// Initialize
|
||||
$scope.getcontainer();
|
||||
|
||||
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
|
||||
|
||||
function ListInitialData(response) {
|
||||
$('#actionLoading').hide();
|
||||
if (response.data.status === 1) {
|
||||
console.log(response.data.status);
|
||||
if (response.data.data[0] === 1) {
|
||||
new PNotify({
|
||||
title: 'Success!',
|
||||
text: 'Action completed',
|
||||
type: 'success'
|
||||
});
|
||||
$scope.Lunchcontainer($scope.cid);
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Error!',
|
||||
text: response.data.data[1],
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Unable to complete request',
|
||||
text: response.data.error_message,
|
||||
type: 'error'
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function cantLoadInitialData(response) {
|
||||
$('#actionLoading').hide();
|
||||
|
||||
PNotify.error({
|
||||
title: 'Unable to complete request',
|
||||
text: "Problem in connecting to server"
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
$scope.cAction = function (action) {
|
||||
$('#actionLoading').show();
|
||||
url = "/docker/doContainerAction";
|
||||
var data = {name: $scope.cName, action: action};
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
|
||||
|
||||
|
||||
function ListInitialData(response) {
|
||||
console.log(response);
|
||||
|
||||
if (response.data.containerActionStatus === 1) {
|
||||
new PNotify({
|
||||
title: 'Success!',
|
||||
text: 'Action completed',
|
||||
type: 'success'
|
||||
});
|
||||
$scope.status = response.data.status;
|
||||
$scope.refreshStatus()
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Unable to complete request',
|
||||
text: response.data.error_message,
|
||||
type: 'error'
|
||||
});
|
||||
|
||||
}
|
||||
$('#actionLoading').hide();
|
||||
}
|
||||
|
||||
function cantLoadInitialData(response) {
|
||||
PNotify.error({
|
||||
title: 'Unable to complete request',
|
||||
text: "Problem in connecting to server"
|
||||
});
|
||||
$('#actionLoading').hide();
|
||||
}
|
||||
|
||||
};
|
||||
$scope.cRemove = function () {
|
||||
(new PNotify({
|
||||
title: 'Confirmation Needed',
|
||||
text: 'Are you sure?',
|
||||
icon: 'fa fa-question-circle',
|
||||
hide: false,
|
||||
confirm: {
|
||||
confirm: true
|
||||
},
|
||||
buttons: {
|
||||
closer: false,
|
||||
sticker: false
|
||||
},
|
||||
history: {
|
||||
history: false
|
||||
}
|
||||
})).get().on('pnotify.confirm', function () {
|
||||
$('#actionLoading').show();
|
||||
|
||||
url = "/docker/delContainer";
|
||||
var data = {name: $scope.cName, unlisted: false};
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
|
||||
|
||||
function ListInitialData(response) {
|
||||
if (response.data.delContainerStatus === 1) {
|
||||
new PNotify({
|
||||
title: 'Container deleted!',
|
||||
text: 'Redirecting...',
|
||||
type: 'success'
|
||||
});
|
||||
window.location.href = '/docker/listContainers';
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Unable to complete request',
|
||||
text: response.data.error_message,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
$('#actionLoading').hide();
|
||||
}
|
||||
|
||||
function cantLoadInitialData(response) {
|
||||
PNotify.error({
|
||||
title: 'Unable to complete request',
|
||||
text: "Problem in connecting to server"
|
||||
});
|
||||
$('#actionLoading').hide();
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
|
||||
})
|
||||
// Keep your existing functions
|
||||
$scope.recreateappcontainer = function() { /* ... */ };
|
||||
$scope.refreshStatus = function() { /* ... */ };
|
||||
$scope.restarthStatus = function() { /* ... */ };
|
||||
$scope.StopContainerAPP = function() { /* ... */ };
|
||||
$scope.cAction = function(action) { /* ... */ };
|
||||
$scope.cRemove = function() { /* ... */ };
|
||||
});
|
||||
|
||||
|
||||
app.controller('BuyAddons', function ($scope, $http) {
|
||||
|
||||
Reference in New Issue
Block a user