114 lines
6.4 KiB
HTML
114 lines
6.4 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block content %}
|
|
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
|
|
<h1 class="h2">{{ _('System Settings') }}</h1>
|
|
</div>
|
|
|
|
<div class="card shadow-sm">
|
|
<div class="card-body">
|
|
<h5>{{ _('CuraEngine Configurations') }}</h5>
|
|
<hr>
|
|
<form id="settingsForm" onsubmit="submitSettings(event)">
|
|
<div class="mb-3">
|
|
<label for="offset_x" class="form-label">{{ _('Plater Origin Offset X (mm)') }}</label>
|
|
<input type="number" class="form-control" name="offset_x" id="offset_x" value="{{ configs.get('offset_x', '0') }}">
|
|
<div class="form-text">{{ _('Adjust the X-axis compilation offset for combined files on the build plate.') }}</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="offset_y" class="form-label">{{ _('Plater Origin Offset Y (mm)') }}</label>
|
|
<input type="number" class="form-control" name="offset_y" id="offset_y" value="{{ configs.get('offset_y', '0') }}">
|
|
<div class="form-text">{{ _('Adjust the Y-axis compilation offset for combined files on the build plate.') }}</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="proxy_skip_size_mb" class="form-label">{{ _('Proxy Skip Size (MB)') }}</label>
|
|
<input type="number" class="form-control" name="proxy_skip_size_mb" id="proxy_skip_size_mb" value="{{ configs.get('proxy_skip_size_mb', '5.0') }}" step="0.1" min="0">
|
|
<div class="form-text">{{ _('Files smaller than this will not generate a simplified proxy.') }}</div>
|
|
</div>
|
|
|
|
<h5 class="mt-4">{{ _('Default Plater Settings') }}</h5>
|
|
<hr>
|
|
|
|
<div class="mb-3">
|
|
<label for="default_infill" class="form-label">{{ _('Default Infill Density (%)') }}</label>
|
|
<input type="number" class="form-control" name="default_infill" id="default_infill" value="{{ configs.get('default_infill', '20') }}" min="0" max="100">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="default_support" class="form-label">{{ _('Default Support') }}</label>
|
|
<select class="form-select" name="default_support" id="default_support">
|
|
<option value="false" {% if configs.get('default_support', 'false') == 'false' %}selected{% endif %}>{{ _('None') }}</option>
|
|
<option value="buildplate" {% if configs.get('default_support', 'false') == 'buildplate' %}selected{% endif %}>{{ _('Touching Buildplate') }}</option>
|
|
<option value="true" {% if configs.get('default_support', 'false') == 'true' %}selected{% endif %}>{{ _('Everywhere') }}</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="default_support_pattern" class="form-label">{{ _('Default Support Type') }}</label>
|
|
<select class="form-select" name="default_support_pattern" id="default_support_pattern">
|
|
<option value="tree" {% if configs.get('default_support_pattern', 'tree') == 'tree' %}selected{% endif %}>{{ _('Tree') }}</option>
|
|
<option value="lines" {% if configs.get('default_support_pattern', 'tree') == 'lines' %}selected{% endif %}>{{ _('Lines') }}</option>
|
|
<option value="grid" {% if configs.get('default_support_pattern', 'tree') == 'grid' %}selected{% endif %}>{{ _('Grid') }}</option>
|
|
<option value="triangles" {% if configs.get('default_support_pattern', 'tree') == 'triangles' %}selected{% endif %}>{{ _('Triangles') }}</option>
|
|
<option value="concentric" {% if configs.get('default_support_pattern', 'tree') == 'concentric' %}selected{% endif %}>{{ _('Concentric') }}</option>
|
|
<option value="zigzag" {% if configs.get('default_support_pattern', 'tree') == 'zigzag' %}selected{% endif %}>{{ _('Zig Zag') }}</option>
|
|
<option value="cross" {% if configs.get('default_support_pattern', 'tree') == 'cross' %}selected{% endif %}>{{ _('Cross') }}</option>
|
|
<option value="gyroid" {% if configs.get('default_support_pattern', 'tree') == 'gyroid' %}selected{% endif %}>{{ _('Gyroid') }}</option>
|
|
<option value="honeycomb" {% if configs.get('default_support_pattern', 'tree') == 'honeycomb' %}selected{% endif %}>{{ _('Honeycomb') }}</option>
|
|
<option value="octagon" {% if configs.get('default_support_pattern', 'tree') == 'octagon' %}selected{% endif %}>{{ _('Octagon') }}</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="mb-4">
|
|
<label for="default_quality" class="form-label">{{ _('Default Quality Profile') }}</label>
|
|
<select class="form-select" name="default_quality" id="default_quality">
|
|
{% for key, name in presets %}
|
|
<option value="{{ key }}" {% if configs.get('default_quality', 'base_global_standard.inst.cfg') == key %}selected{% endif %}>{{ _(name) }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-primary" id="btn-save-settings">{{ _('Save Settings') }}</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function submitSettings(event) {
|
|
event.preventDefault();
|
|
const form = document.getElementById('settingsForm');
|
|
const formData = new FormData(form);
|
|
const btn = document.getElementById('btn-save-settings');
|
|
const originalText = btn.innerHTML;
|
|
|
|
btn.disabled = true;
|
|
btn.innerHTML = '<span class="spinner-border spinner-border-sm me-2" role="status" aria-hidden="true"></span>Saving...';
|
|
|
|
fetch("{{ url_for('admin.settings') }}", {
|
|
method: "POST",
|
|
body: formData,
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest'
|
|
}
|
|
})
|
|
.then(response => {
|
|
if (response.ok) {
|
|
window.showToast("{{ _('Settings updated successfully') }}", "success");
|
|
} else {
|
|
window.showToast("{{ _('Error updating settings') }}", "danger");
|
|
}
|
|
})
|
|
.catch(error => {
|
|
console.error('Error:', error);
|
|
window.showToast("{{ _('Network error') }}", "danger");
|
|
})
|
|
.finally(() => {
|
|
btn.disabled = false;
|
|
btn.innerHTML = originalText;
|
|
});
|
|
}
|
|
</script>
|
|
{% endblock %}
|