2022-01-11 17:17:57 +00:00
{% extends ../base.html %}
{% block meta %}
{% end %}
{% block title %}Crafty Controller - {{ translate('serverDetails', 'serverDetails', data['lang']) }}{% end %}
{% block content %}
< div class = "content-wrapper" >
<!-- Page Title Header Starts -->
< div class = "row page-title-header" >
< div class = "col-12" >
< div class = "page-header" >
< h4 class = "page-title" >
{{ translate('serverDetails', 'serverDetails', data['lang']) }} - {{ data['server_stats']['server_id']['server_name'] }}
< br / >
< small > UUID: {{ data['server_stats']['server_id']['server_uuid'] }}< / small >
< / h4 >
< / div >
< / div >
< / div >
<!-- Page Title Header Ends -->
{% include "parts/details_stats.html %}
< div class = "row" >
< div class = "col-sm-12 grid-margin" >
< div class = "card" >
< div class = "card-body pt-0" >
{% include "parts/server_controls_list.html %}
< div class = "row" >
< div class = "col-md-12 col-sm-12" >
2022-01-11 22:24:05 +00:00
{% if data['new_schedule'] == True %}
< form class = "forms-sample" method = "post" action = "/panel/new_schedule?id={{ data['server_stats']['server_id']['server_id'] }}" >
{% else %}
< form class = "forms-sample" method = "post" action = "/panel/edit_schedule?id={{ data['server_stats']['server_id']['server_id'] }}&sch_id={{ data['schedule']['schedule_id'] }}" >
{% end %}
2022-01-11 17:17:57 +00:00
{% raw xsrf_form_html() %}
< input type = "hidden" name = "id" value = "{{ data['server_stats']['server_id']['server_id'] }}" >
< input type = "hidden" name = "subpage" value = "config" >
< div class = "form-group" >
2022-02-24 03:58:48 +00:00
< label for = "difficulty" > Basic / Cron Select / Chain-Reaction< small class = "text-muted ml-1" > < / small > < / label > < br >
2022-01-11 22:24:05 +00:00
< select id = "difficulty" name = "difficulty" onchange = "basicAdvanced(this);" class = "form-control form-control-lg select-css" value = "{{ data['schedule']['difficulty'] }}" >
< option id = "basic" value = "basic" > Basic< / option >
< option id = "advanced" value = "advanced" > Advanced< / option >
2022-02-24 03:58:48 +00:00
< option id = "reaction" value = "reaction" > Chain-Reaction< / option >
2022-01-11 17:17:57 +00:00
< / select >
< / div >
< div class = "form-group" >
< label for = "server_name" > Action< small class = "text-muted ml-1" > < / small > < / label > < br >
2022-01-11 22:24:05 +00:00
< select id = "action" name = "action" onchange = "yesnoCheck(this);" class = "form-control form-control-lg select-css" value = "{{ data['schedule']['action'] }}" >
< option id = "start" value = "start" > Start Server< / option >
< option id = "restart" value = "restart" > Restart Server< / option >
2022-01-12 05:03:24 +00:00
< option id = "stop" value = "stop" > Shutdown Server< / option >
2022-01-11 22:24:05 +00:00
< option id = "backup" value = "backup" > Backup Server< / option >
2022-02-24 03:58:48 +00:00
< option id = "command" value = "command" > Custom Command< / option >
2022-01-11 17:17:57 +00:00
< / select >
< / div >
< div id = "ifBasic" >
< div class = "form-group" >
< label for = "server_path" > Interval < small class = "text-muted ml-1" > - How often you want this task to execute< / small > < / label >
2022-01-11 22:24:05 +00:00
< input type = "number" class = "form-control" name = "interval" id = "interval" value = "{{ data['schedule']['interval'] }}" placeholder = "Interval" required >
2022-01-11 17:17:57 +00:00
< br >
< br >
2022-01-11 22:24:05 +00:00
< select id = "interval_type" onchange = "ifDays(this);" name = "interval_type" class = "form-control form-control-lg select-css" value = "{{ data['schedule']['interval_type'] }}" >
< option id = "days" value = "days" > Days< / option >
< option id = "hours" value = "hours" > Hours< / option >
< option id = "minutes" value = "minutes" > Minutes< / option >
2022-01-11 17:17:57 +00:00
< / select >
< / div >
< div id = "ifDays" style = "display: block;" >
< div class = "form-group" >
< label for = "time" > Time < small class = "text-muted ml-1" > - What time do you want your task to execute?< / small > < / label >
2022-01-11 22:24:05 +00:00
< input type = "time" class = "form-control" name = "time" id = "time" value = "{{ data['schedule']['time'] }}" placeholder = "Time" required >
2022-01-11 17:17:57 +00:00
< / div >
< / div >
< / div >
< div id = "ifYes" style = "display: none;" >
< div class = "form-group" >
< label for = "command" > Command < small class = "text-muted ml-1" > - What command do you want us to execute? Do not include the '/'< / small > < / label >
2022-01-11 22:24:05 +00:00
< input type = "input" class = "form-control" name = "command" id = "command_input" value = "{{ data['schedule']['command'] }}" placeholder = "Command" required >
2022-01-11 17:17:57 +00:00
< / div >
< / div >
< div id = "ifAdvanced" style = "display: none;" >
< div class = "form-group" >
< label for = "cron" > Cron < small class = "text-muted ml-1" > - Input your cron string< / small > < / label >
2022-01-11 22:24:05 +00:00
< input type = "input" class = "form-control" name = "cron" id = "cron" value = "{{ data['schedule']['cron_string'] }}" placeholder = "* * * * *" >
2022-01-11 17:17:57 +00:00
< / div >
< / div >
2022-02-24 03:58:48 +00:00
< div id = "ifReaction" style = "display: none;" >
< div class = "form-group" >
< label for = "delay" > Delay Offset < small class = "text-muted ml-1" > - How long should we wait to fire this after firing the first task? (Seconds)< / small > < / label >
< input type = "number" class = "form-control" name = "delay" id = "delay" value = "0" >
< br >
< br >
< label for = "parent" > Parent Task < small class = "text-muted ml-1" > - Which task should trigger this one?< / small > < / label >
< select id = "parent" name = "parent" class = "form-control form-control-lg select-css" value = "{{ data['schedule']['action'] }}" >
{% for schedule in data['schedules'] %}
{% if schedule.schedule_id != data['schedule']['schedule_id'] %}
{% if schedule.interval != '' %}
< option id = "{{schedule.schedule_id}}" value = "{{schedule.schedule_id}}" > ID: {{schedule.schedule_id}} | {{schedule.command}} | {{schedule.interval}} {{ schedule.interval_type}}< / option >
{% else %}
< option id = "{{schedule.schedule_id}}" value = "{{schedule.schedule_id}}" > ID: {{schedule.schedule_id}} {{schedule.command}} {{schedule.cron_string}}< / option >
{% end %}
{% end %}
{% end %}
< / select >
< / div >
< / div >
2022-01-11 17:17:57 +00:00
< div class = "form-check-flat" >
< label for = "enabled" class = "form-check-label ml-4 mb-4" >
< input type = "checkbox" class = "form-check-input" id = "enabled" name = "enabled" checked = "" value = "1" > Enabled
< / label >
< / div >
< div class = "form-check-flat" >
< label for = "one_time" class = "form-check-label ml-4 mb-4" >
< input type = "checkbox" class = "form-check-input" id = "one_time" name = "one_time" value = "1" > Delete After Execution
< / label >
< / div >
< button type = "submit" class = "btn btn-success mr-2" > < i class = "fas fa-save" > < / i > {{ translate('serverConfig', 'save', data['lang']) }}< / button >
2022-01-11 22:24:05 +00:00
< button type = "reset" onclick = "location.href=`/panel/server_detail?id={{ data['server_stats']['server_id']['server_id'] }}&subpage=tasks`" class = "btn btn-light" > < i class = "fas fa-times" > < / i > {{ translate('serverConfig', 'cancel', data['lang']) }}< / button >
2022-01-11 17:17:57 +00:00
< / form >
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >
<!-- content - wrapper ends -->
{% end %}
{% block js %}
< script >
//used to get cookies from browser - this is part of tornados xsrf protection - it's for extra security
function getCookie(name) {
var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
return r ? r[1] : undefined;
}
$( document ).ready(function() {
console.log( "ready!" );
});
2022-01-11 22:24:05 +00:00
function yesnoCheck() {
2022-01-11 23:37:31 +00:00
if (document.getElementById('action').value == "command") {
2022-01-11 17:17:57 +00:00
document.getElementById("ifYes").style.display = "block";
2022-01-11 23:40:02 +00:00
document.getElementById("command_input").required = true;
2022-01-11 17:17:57 +00:00
} else {
document.getElementById("ifYes").style.display = "none";
2022-01-11 23:40:02 +00:00
document.getElementById("command_input").required = false;
2022-01-11 17:17:57 +00:00
}
}
2022-01-11 22:24:05 +00:00
function basicAdvanced() {
if (document.getElementById('difficulty').value == "advanced") {
2022-01-11 17:17:57 +00:00
document.getElementById("ifAdvanced").style.display = "block";
2022-02-24 03:58:48 +00:00
document.getElementById("ifReaction").style.display = "none";
2022-01-11 17:17:57 +00:00
document.getElementById("ifBasic").style.display = "none";
2022-02-24 03:58:48 +00:00
document.getElementById("delay").required = false;
document.getElementById("parent").required = false;
2022-01-11 17:17:57 +00:00
document.getElementById("interval").required = false;
document.getElementById("time").required = false;
2022-02-24 03:58:48 +00:00
} else if(document.getElementById('difficulty').value == "reaction"){
document.getElementById("ifReaction").style.display = "block";
document.getElementById("ifBasic").style.display = "none";
document.getElementById("ifAdvanced").style.display = "none";
document.getElementById("delay").required = true;
document.getElementById("parent").required = true;
document.getElementById("interval").required = false;
document.getElementById("time").required = false;
}
else {
2022-01-11 17:17:57 +00:00
document.getElementById("ifAdvanced").style.display = "none";
2022-02-24 03:58:48 +00:00
document.getElementById("ifReaction").style.display = "none";
2022-01-11 17:17:57 +00:00
document.getElementById("ifBasic").style.display = "block";
2022-02-24 03:58:48 +00:00
document.getElementById("delay").required = false;
document.getElementById("parent").required = false;
2022-01-11 17:17:57 +00:00
document.getElementById("interval").required = true;
document.getElementById("time").required = true;
}
}
2022-01-11 22:24:05 +00:00
function ifDays() {
if (document.getElementById('interval_type').value == "days") {
2022-01-11 17:17:57 +00:00
document.getElementById("ifDays").style.display = "block";
document.getElementById("time").required = true;
} else {
document.getElementById("ifDays").style.display = "none";
document.getElementById("time").required = false;
}
}
function del_task(sch_id, id){
var token = getCookie("_xsrf")
$.ajax({
type: "DELETE",
headers: {'X-XSRFToken': token},
url: '/ajax/del_task?server_id='+id+'& schedule_id='+sch_id,
data: {
schedule_id: sch_id,
id: id
},
success: function(data) {
location.reload();
},
});
}
2022-01-11 22:24:05 +00:00
function startup(){
try{
document.getElementById("{{ data['schedule']['interval_type'] }}").setAttribute('selected', true);
}catch{
console.log("no element named {{ data['schedule']['interval_type'] }}")
}
try{
document.getElementById("{{ data['schedule']['difficulty'] }}").setAttribute('selected', true);
}catch{
console.log("no element named {{ data['schedule']['difficulty'] }}")
}
try{
document.getElementById("{{ data['schedule']['action'] }}").setAttribute('selected', true);
}catch{
console.log("no element named {{ data['schedule']['action'] }}")
}
2022-01-19 18:07:26 +00:00
ifDays();
2022-01-11 22:24:05 +00:00
yesnoCheck();
basicAdvanced();
if("{{ data['schedule']['enabled'] }}" == 'True'){
document.getElementById('enabled').checked = true;
}else{
2022-01-12 00:12:54 +00:00
document.getElementById('enabled').checked = false;
2022-01-11 22:24:05 +00:00
}
if("{{ data['schedule']['one_time'] }}" == 'True'){
document.getElementById('one_time').checked = true;
}else{
document.getElementById('one_time').checked = false;
}
}
2022-01-11 17:17:57 +00:00
2022-01-11 22:24:05 +00:00
window.onload(startup())
2022-01-11 17:17:57 +00:00
< / script >
{% end %}