mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 08:48:13 +00:00
236 lines
8.2 KiB
HTML
236 lines
8.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Zordon Dashboard</title>
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
|
<script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/gridjs/dist/gridjs.umd.js"></script>
|
|
<link href="https://unpkg.com/gridjs/dist/theme/mermaid.min.css" rel="stylesheet" />
|
|
<script src="https://kit.fontawesome.com/698705d14d.js" crossorigin="anonymous"></script>
|
|
<script type="text/javascript" src="/static/js/modals.js"></script>
|
|
</head>
|
|
<body onload="rendererChanged(document.getElementById('renderer'))">
|
|
|
|
<nav class="navbar is-dark" role="navigation" aria-label="main navigation">
|
|
<div class="navbar-brand">
|
|
<a class="navbar-item" href="/">
|
|
<img src="/static/images/logo.png">
|
|
</a>
|
|
</div>
|
|
|
|
<div id="navbarBasicExample" class="navbar-menu">
|
|
<div class="navbar-start">
|
|
<a class="navbar-item" href="/">
|
|
Home
|
|
</a>
|
|
</div>
|
|
|
|
<div class="navbar-end">
|
|
<div class="navbar-item">
|
|
<button class="button is-primary js-modal-trigger" data-target="add-job-modal">
|
|
<span class="icon">
|
|
<i class="fa-solid fa-upload"></i>
|
|
</span>
|
|
<span>Submit Job</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
{% block body %}
|
|
{% endblock %}
|
|
|
|
<div id="add-job-modal" class="modal">
|
|
<!-- Start Add Form -->
|
|
<form id="submit_job" action="/api/add_job?redirect=True" method="POST" enctype="multipart/form-data">
|
|
<div class="modal-background"></div>
|
|
<div class="modal-card">
|
|
<header class="modal-card-head">
|
|
<p class="modal-card-title">Submit New Job</p>
|
|
<button class="delete" aria-label="close" type="button"></button>
|
|
</header>
|
|
<section class="modal-card-body">
|
|
<!-- File Uploader -->
|
|
|
|
<label class="label">Upload File</label>
|
|
<div id="file-uploader" class="file has-name is-fullwidth">
|
|
<label class="file-label">
|
|
<input class="file-input is-small" type="file" name="file">
|
|
<span class="file-cta">
|
|
<span class="file-icon">
|
|
<i class="fas fa-upload"></i>
|
|
</span>
|
|
<span class="file-label">
|
|
Choose a file…
|
|
</span>
|
|
</span>
|
|
<span class="file-name">
|
|
No File Uploaded
|
|
</span>
|
|
</label>
|
|
</div>
|
|
<br>
|
|
<script>
|
|
const fileInput = document.querySelector('#file-uploader input[type=file]');
|
|
fileInput.onchange = () => {
|
|
if (fileInput.files.length > 0) {
|
|
const fileName = document.querySelector('#file-uploader .file-name');
|
|
fileName.textContent = fileInput.files[0].name;
|
|
}
|
|
}
|
|
|
|
const presets = {
|
|
{% for preset in preset_list: %}
|
|
{{preset}}: {
|
|
name: '{{preset_list[preset]['name']}}',
|
|
renderer: '{{preset_list[preset]['renderer']}}',
|
|
args: '{{preset_list[preset]['args']}}',
|
|
},
|
|
{% endfor %}
|
|
};
|
|
|
|
function rendererChanged(ddl1) {
|
|
|
|
var renderers = {
|
|
{% for renderer in renderer_info: %}
|
|
{% if renderer_info[renderer]['supported_export_formats']: %}
|
|
{{renderer}}: [
|
|
{% for format in renderer_info[renderer]['supported_export_formats']: %}
|
|
'{{format}}',
|
|
{% endfor %}
|
|
],
|
|
{% endif %}
|
|
{% endfor %}
|
|
};
|
|
|
|
var selectedRenderer = ddl1.value;
|
|
|
|
var ddl3 = document.getElementById('preset_list');
|
|
ddl3.options.length = 0;
|
|
createOption(ddl3, '-Presets-', '');
|
|
for (var preset_name in presets) {
|
|
if (presets[preset_name]['renderer'] == selectedRenderer) {
|
|
createOption(ddl3, presets[preset_name]['name'], preset_name);
|
|
};
|
|
};
|
|
document.getElementById('raw_args').value = "";
|
|
|
|
var ddl2 = document.getElementById('export_format');
|
|
ddl2.options.length = 0;
|
|
var options = renderers[selectedRenderer];
|
|
for (i = 0; i < options.length; i++) {
|
|
createOption(ddl2, options[i], options[i]);
|
|
};
|
|
}
|
|
|
|
function createOption(ddl, text, value) {
|
|
var opt = document.createElement('option');
|
|
opt.value = value;
|
|
opt.text = text;
|
|
ddl.options.add(opt);
|
|
}
|
|
|
|
function addPresetTextToInput(presetfield, textfield) {
|
|
var p = presets[presetfield.value];
|
|
textfield.value = p['args'];
|
|
}
|
|
|
|
</script>
|
|
|
|
<!-- Renderer & Priority -->
|
|
<div class="field is-grouped">
|
|
<p class="control">
|
|
<label class="label">Renderer</label>
|
|
<span class="select">
|
|
<select id="renderer" name="renderer" onchange="rendererChanged(this)">
|
|
{% for renderer in renderer_info: %}
|
|
<option name="renderer" value="{{renderer}}">{{renderer}}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</span>
|
|
</p>
|
|
<p class="control">
|
|
<label class="label">Client</label>
|
|
<span class="select">
|
|
<select name="client">
|
|
<option name="client" value="">First Available</option>
|
|
{% for client in render_clients: %}
|
|
<option name="client" value="{{client}}">{{client}}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</span>
|
|
</p>
|
|
<p class="control">
|
|
<label class="label">Priority</label>
|
|
<span class="select">
|
|
<select name="priority">
|
|
<option name="priority" value="1">1</option>
|
|
<option name="priority" value="2" selected="selected">2</option>
|
|
<option name="priority" value="3">3</option>
|
|
</select>
|
|
</span>
|
|
</p>
|
|
</div>
|
|
|
|
<!-- Output Path -->
|
|
<label class="label">Output</label>
|
|
<div class="field has-addons">
|
|
<div class="control is-expanded">
|
|
<input class="input is-small" type="text" placeholder="Output Name" name="output_path" value="output.mp4">
|
|
</div>
|
|
<p class="control">
|
|
<span class="select is-small">
|
|
<select id="export_format" name="export_format">
|
|
<option value="ar">option</option>
|
|
</select>
|
|
</span>
|
|
</p>
|
|
</div>
|
|
|
|
<!-- Resolution -->
|
|
<!-- <label class="label">Resolution</label>-->
|
|
<!-- <div class="field is-grouped">-->
|
|
<!-- <p class="control">-->
|
|
<!-- <input class="input" type="text" placeholder="auto" maxlength="5" size="8" name="AnyRenderer-arg_x_resolution">-->
|
|
<!-- </p>-->
|
|
<!-- <label class="label"> x </label>-->
|
|
<!-- <p class="control">-->
|
|
<!-- <input class="input" type="text" placeholder="auto" maxlength="5" size="8" name="AnyRenderer-arg_y_resolution">-->
|
|
<!-- </p>-->
|
|
<!-- <label class="label"> @ </label>-->
|
|
<!-- <p class="control">-->
|
|
<!-- <input class="input" type="text" placeholder="auto" maxlength="3" size="5" name="AnyRenderer-arg_frame_rate">-->
|
|
<!-- </p>-->
|
|
<!-- <label class="label"> fps </label>-->
|
|
<!-- </div>-->
|
|
|
|
<label class="label">Command Line Arguments</label>
|
|
<div class="field has-addons">
|
|
<p class="control">
|
|
<span class="select is-small">
|
|
<select id="preset_list" onchange="addPresetTextToInput(this, document.getElementById('raw_args'))">
|
|
<option value="preset-placeholder">presets</option>
|
|
</select>
|
|
</span>
|
|
</p>
|
|
<p class="control is-expanded">
|
|
<input class="input is-small" type="text" placeholder="Args" id="raw_args" name="raw_args">
|
|
</p>
|
|
</div>
|
|
|
|
<!-- End Add Form -->
|
|
</section>
|
|
<footer class="modal-card-foot">
|
|
<input class="button is-link" type="submit"/>
|
|
<button class="button" type="button">Cancel</button>
|
|
</footer>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
</body>
|
|
</html> |