Files
CyberPanel/websiteFunctions/templates/websiteFunctions/DockerSiteHome.html
2023-12-29 00:18:53 +05:00

588 lines
31 KiB
HTML

{% extends "baseTemplate/index.html" %}
{% load i18n %}
{% block title %}{% trans "Docker Sites - CyberPanel" %}{% endblock %}
{% block content %}
{% load static %}
{% get_current_language as LANGUAGE_CODE %}
<!-- Current language: {{ LANGUAGE_CODE }} -->
<script>
$(document).ready(function () {
$('[data-toggle="tooltip"]').tooltip();
});
</script>
<div class="container" ng-controller="ListDockersitecontainer">
<div id="page-title">
<h2 id="domainNamePage">{% trans "Containers" %} <img id="cyberpanelLoading" ng-hide="cyberpanelLoading"
src="{% static 'images/loading.gif' %}">
<a class="pull-right btn btn-primary" href="{% url "CreateDockersite" %}">Create</a>
</h2>
<p>{% trans "Manage containers on server" %}</p>
</div>
<div class="panel" ng-hide="listcontainerview">
<div class="panel-body">
<h3 class="content-box-header">
{% trans "Containers" %} {{ dockerSite.SiteName }}<img id="imageLoading"
src="/static/images/loading.gif"
style="display: none;">
</h3>
<span style="display: none" id="sitename">{{ dockerSite.SiteName }}</span>
<div class="example-box-wrapper ">
<table cellpadding="0" cellspacing="0" border="0" class="table table-striped" id="datatable-example"
style="padding:0px;">
<thead>
<tr>
<th>Name</th>
<th>Launch</th>
{# <th>Owner</th>#}
{# <th>Image</th>#}
{# <th>Tag</th>#}
{# <th>Actions</th>#}
</tr>
</thead>
<tbody>
<tr ng-repeat="web in ContainerList track by $index">
<td ng-bind="web.name"></td>
<td ng-click="Lunchcontainer(web.id)"><img width="30px" height="30" class=""
src="{% static 'baseTemplate/assets/image-resources/webPanel.png' %}">
</td>
{# <td ng-bind="web.admin"></td>#}
{# <td ng-bind="web.image"></td>#}
{# <td ng-bind="web.tag"></td>#}
{# <td>#}
{# <button class="btn btn-primary" ng-click="delContainer(web.name)"><i#}
{# class="fa fa-trash btn-icon"></i></button>#}
{# <button class="btn btn-primary" ng-click="showLog(web.name)"><i#}
{# class="fa fa-file btn-icon"></i></button>#}
{# </td>#}
</tr>
</tbody>
</table>
<div id="listFail" class="alert alert-danger">
<p>{% trans "Error message:" %} {$ errorMessage $}</p>
</div>
<div class="row text-center">
<div class="col-sm-4 col-sm-offset-8">
<nav aria-label="Page navigation">
<ul class="pagination">
{% for items in pagination %}
<li ng-click="getFurtherContainersFromDB({{ forloop.counter }})" id="webPages">
<a href="">{{ forloop.counter }}</a></li>
{% endfor %}
</ul>
</nav>
</div>
</div>
{% if showUnlistedContainer %}
<h3 class="title-hero">
{% trans "Unlisted Containers" %} <i class="fa fa-question-circle"
title="{% trans "Containers listed below were either not created through panel or were not saved to database properly" %}"></i>
</h3>
<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered"
id="datatable-example">
<thead>
<tr>
<th>Name</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for container in unlistedContainers %}
<tr>
<td>{{ container.name }}</td>
<td>{{ container.status }}</td>
<td>
<button class="btn btn-primary"
ng-click="delContainer('{{ container.name }}', true)"><i
class="fa fa-trash"></i></button>
<button class="btn btn-primary" ng-click="showLog('{{ container.name }}')"><i
class="fa fa-file"></i></button>
<button class="btn btn-primary"
ng-click="assignContainer('{{ container.name }}')"><i
class="fa fa-user"></i></button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
<div id="logs" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Container logs</h4>
</div>
<div class="modal-body">
<textarea name="logs" class="form-control" id="" cols="30"
rows="10">{$ logs $}</textarea>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" ng-click="showLog('', true)">Refresh
</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div id="assign" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Assign Container to user</h4>
</div>
<div class="modal-body">
<form action="/" class="form-horizontal">
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Owner" %}</label>
<div class="col-sm-6">
<select ng-model="dockerOwner" class="form-control">
{% for user in adminNames %}
<option>{{ user }}</option>
{% endfor %}
</select>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" ng-click="submitAssignContainer()">
Submit
</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div ng-hide="conatinerview">
<div>
<div id="page-title">
<h2 id="domainNamePage">{% trans "Currently managing: " %} {$ cName $}
<button class="btn btn-warning pull-right" data-toggle="modal"
data-target="#Recreatedockerapp"><i
class="fa fa-refresh btn-icon"></i> Recreate
</button>
</h2>
<p>
{% trans "Container ID" %}: {$ cid $}
</p>
</div>
<div class="example-box-wrapper">
<div class="panel panel-body">
<h3 class="content-box-header">
{% trans "Container Information" %}
<img id="infoLoading" src="/static/images/loading.gif" style="display: none;">
</h3>
<div class="content-box-wrapper">
<div class="row">
<div class="col-md-6">
<div class="panel">
<div class="panel-body">
<div class="example-box-wrapper">
<h3 class="title-hero">
{% trans "Memory Usage" %}
</h3>
<div class="progressbar" data-value="{$ appmemoryUsage $}">
<div class="progressbar-value bg-primary">
<div class="progress-overlay"></div>
<div class="progress-label" title="{$ appmemoryUsage $}%">
</div>
</div>
</div>
<h3 class="title-hero">
{% trans "CPU Usage" %}
</h3>
<div class="progressbar" data-value="{$ appcpuUsage $}">
<div class="progressbar-value bg-primary">
<div class="progress-overlay"></div>
<div class="progress-label" title="{$ appcpuUsage $}"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel">
<div class="panel-body">
<div class="example-box-wrapper">
<h3 class="title-hero" >Main Actions
<img id="actionLoading" src="/static/images/loading.gif"
style="display: none;width: 20px;">
</h3>
<b>Status:</b> <span ng-bind="status"></span>
<span ng-click='refreshStatus()' style="cursor:pointer;"
class="pull-right"
title="Refresh status"><i
class="fa fa-refresh btn-icon"></i></span>
<hr>
<button ng-disabled="status=='running'" class="btn btn-primary"
ng-click="cAction('start')"><i
class="fa fa-play btn-icon"></i> Start
</button>
<button ng-disabled="status!='running'" class="btn btn-primary"
ng-click="restarthStatus()"><i
class="fa fa-refresh btn-icon"></i>
Restart
</button>
<button ng-disabled="status!='running'" class="btn btn-primary"
ng-click="StopContainerAPP()"><i
class="fa fa-stop btn-icon"></i> Stop
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="Recreatedockerapp" class="modal fade" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close"
data-dismiss="modal">&times;
</button>
<h4 class="modal-title">{% trans "Recreate Container" %} <img
ng-hide="cyberPanelLoading"
src="{% static 'images/loading.gif' %}">
</h4>
</div>
<div class="modal-body">
<form name="websiteCreationForm" action="/"
id="createPackages"
class="form-horizontal bordered-row panel-body">
<div ng-hide="installationDetailsForm"
class="form-group">
<label class="col-sm-3 control-label">{% trans "Username" %}</label>
<div class="col-sm-6">
<input name="Username" type="text"
class="form-control"
ng-model="WPUsername"
required>
</div>
</div>
<div ng-hide="installationDetailsForm"
class="form-group">
<label class="col-sm-3 control-label">{% trans "Email" %}</label>
<div class="col-sm-6">
<input type="email" name="email"
class="form-control"
ng-model="adminEmail" required>
</div>
</div>
<div ng-hide="installationDetailsForm"
class="form-group">
<label class="col-sm-3 control-label">{% trans "Password" %}</label>
<div class="col-sm-6">
<input name="password" type="password"
class="form-control"
ng-model="WPPassword"
required>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
ng-click="recreateappcontainer()"> Recreate
</button>
<button class="btn btn-default"
data-dismiss="modal"> Close
</button>
</div>
</div>
</div>
</div>
<div class="example-box-wrapper">
<div class="content-box panel-body">
<h3 class="content-box-header" ng-init="loadLogs('{{ name }}')">
{% trans "Logs" %}
<span style="cursor:pointer;" class="pull-right" ng-click="loadLogs('{{ name }}')"><i
class="fa fa-refresh btn-icon"></i></span>
</h3>
<div class="content-box-wrapper">
<div class="row">
<textarea name="logs" class="form-control" id="" cols="30"
rows="10">{$ logs $}</textarea><br>
</div>
</div>
</div>
</div>
<div id="settings" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Container Settings
<img id="containerSettingLoading" src="/static/images/loading.gif"
style="display: none;">
</h4>
</div>
<div class="modal-body">
<form name="containerSettingsForm" action="/" class="form-horizontal">
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Memory limit" %}</label>
<div class="col-sm-6" ng-init="memory={{ memoryLimit }}">
<input name="memory" type="number" class="form-control"
ng-model="memory" required>
</div>
<div class="current-pack ng-binding">MB</div>
</div>
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">Start on reboot</label>
<div class="col-sm-9">
<div class="checkbox" ng-init="startOnReboot={{ startOnReboot }}">
<label>
<input ng-model="startOnReboot" type="checkbox" value=""
class="ng-pristine ng-untouched ng-valid ng-empty">
</label>
</div>
</div>
</div>
<hr>
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Confirmation" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="envConfirmation" type="checkbox">
Editing ENV or Volume will recreate container.
</label>
</div>
</div>
</div>
<hr>
<span ng-init="envList = {}"></span>
{% for env, value in envList.items %}
<span ng-init="envList[{{ forloop.counter0 }}] = {'name':'{{ env }}' , 'value':'{{ value }}'} "></span>
{% endfor %}
<div ng-repeat="env in envList track by $index">
<div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">
<div ng-show="$first">
{% trans "ENV" %}
</div>
</label>
<div class="col-sm-2">
<input name="$index" ng-disabled="!envConfirmation" type="text"
class="form-control" ng-model="envList[$index].name"
required>
</div>
<div class="col-sm-4">
<input name="$index" ng-disabled="!envConfirmation" type="text"
class="form-control" ng-model="envList[$index].value"
required>
</div>
</div>
</div>
<div class="col-md-offset-3">
<button type="button" ng-disabled="!envConfirmation" class="btn btn-info"
ng-click="addEnvField()">Add more
</button>
</div>
<br>
<span ng-init="volList = {}"></span>
<span ng-init="volListNumber=1"></span>
{% for key, value in volList.items %}
<span ng-init="volList[{{ forloop.counter0 }}] = {'dest':'{{ value.bind }}' , 'src':'{{ key }}'}"></span>
<span ng-init="volListNumber={{ forloop.counter0 }} + 1"></span>
{% endfor %}
<hr>
<div ng-hide="installationDetailsForm" class="form-group text-center">
<label class="control-label">
{% trans "Map Volumes" %}
</label>
</div>
<div ng-repeat="volume in volList track by $index">
<div ng-hide="installationDetailsForm" class="form-group">
<div class="col-sm-5">
<input type="text" ng-disabled="!envConfirmation"
class="form-control"
ng-model="volList[$index].dest" placeholder="Destination"
required>
</div>
<div class="col-sm-5">
<input type="text" ng-disabled="!envConfirmation"
class="form-control"
ng-model="volList[$index].src" placeholder="Source" required>
</div>
<div ng-show="$last">
<div class="col-sm-1">
<button class="btn btn-primary" ng-disabled="!envConfirmation"
type="button"
ng-click="removeVolField()"><i
style="position: inherit; top: 0px; left: 0px"
class="fa fa-times"></i></button>
</div>
</div>
</div>
</div>
<div ng-hide="installationDetailsForm" class="text-center">
<button type="button" ng-disabled="!envConfirmation" class="btn btn-info"
ng-click="addVolField()">{% trans "Add field" %}</button>
</div>
<br>
</form>
</div>
<div class="modal-footer">
<button type="button" ng-disabled="savingSettings" class="btn btn-primary"
ng-click="saveSettings()">Save
</button>
<button type="button" ng-disabled="savingSettings" class="btn btn-default"
data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>
<div id="processes" class="modal fade" role="dialog">
<div class="modal-dialog" style="width: 96%;">
<!-- Modal content-->
<div class="modal-content panel-body">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title content-box=header">Container Processes</h4>
</div>
<div class="modal-body">
<table cellpadding="0" cellspacing="0" border="0" class="table table-striped"
id="datatable-example">
<thead>
<tr>
<th ng-repeat="item in topHead track by $index">{$ item $}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="process in topProcesses track by $index">
<th ng-repeat="item in process track by $index">{$ item $}</th>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" ng-disabled="savingSettings" class="btn btn-primary"
ng-click="showTop()">
Refresh
</button>
<button type="button" ng-disabled="savingSettings" class="btn btn-default"
data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}