Переделал модель Parameter и связь с ObjItem
This commit is contained in:
@@ -116,72 +116,70 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ВЧ загрузки -->
|
||||
<!-- ВЧ загрузка -->
|
||||
<div class="form-section">
|
||||
<div class="form-section-header">
|
||||
<h4>ВЧ загрузка</h4>
|
||||
</div>
|
||||
|
||||
{% for param in object.parameters_obj.all %}
|
||||
<div class="dynamic-form" data-parameter-index="{{ forloop.counter0 }}">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Спутник:</label>
|
||||
<div class="readonly-field">{{ param.id_satellite.name|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Частота (МГц):</label>
|
||||
<div class="readonly-field">{{ param.frequency|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Полоса (МГц):</label>
|
||||
<div class="readonly-field">{{ param.freq_range|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Поляризация:</label>
|
||||
<div class="readonly-field">{{ param.polarization.name|default:"-" }}</div>
|
||||
</div>
|
||||
{% if object.parameter_obj %}
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Спутник:</label>
|
||||
<div class="readonly-field">{{ object.parameter_obj.id_satellite.name|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Символьная скорость:</label>
|
||||
<div class="readonly-field">{{ param.bod_velocity|default:"-" }}</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Частота (МГц):</label>
|
||||
<div class="readonly-field">{{ object.parameter_obj.frequency|default:"-" }}</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Модуляция:</label>
|
||||
<div class="readonly-field">{{ param.modulation.name|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Полоса (МГц):</label>
|
||||
<div class="readonly-field">{{ object.parameter_obj.freq_range|default:"-" }}</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">ОСШ:</label>
|
||||
<div class="readonly-field">{{ param.snr|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Стандарт:</label>
|
||||
<div class="readonly-field">{{ param.standard.name|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Поляризация:</label>
|
||||
<div class="readonly-field">{{ object.parameter_obj.polarization.name|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% empty %}
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Символьная скорость:</label>
|
||||
<div class="readonly-field">{{ object.parameter_obj.bod_velocity|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Модуляция:</label>
|
||||
<div class="readonly-field">{{ object.parameter_obj.modulation.name|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">ОСШ:</label>
|
||||
<div class="readonly-field">{{ object.parameter_obj.snr|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Стандарт:</label>
|
||||
<div class="readonly-field">{{ object.parameter_obj.standard.name|default:"-" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="mb-3">
|
||||
<p>Нет данных о ВЧ загрузке</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<!-- Блок с картой -->
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<h2>{% if object %}Редактировать объект: {{ object.name }}{% else %}Создать объект{% endif %}</h2>
|
||||
<div>
|
||||
{% if user.customuser.role == 'admin' or user.customuser.role == 'moderator' %}
|
||||
<button type="submit" class="btn btn-primary btn-action">Сохранить</button>
|
||||
<button type="submit" form="objitem-form" class="btn btn-primary btn-action">Сохранить</button>
|
||||
{% if object %}
|
||||
<a href="{% url 'mainapp:objitem_delete' object.id %}{% if request.GET.urlencode %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger btn-action">Удалить</a>
|
||||
{% endif %}
|
||||
@@ -73,7 +73,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form method="post">
|
||||
<form method="post" id="objitem-form">
|
||||
{% csrf_token %}
|
||||
|
||||
<!-- Основная информация -->
|
||||
@@ -124,53 +124,41 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ВЧ загрузки -->
|
||||
<!-- ВЧ загрузка -->
|
||||
<div class="form-section">
|
||||
<div class="form-section-header d-flex justify-content-between align-items-center">
|
||||
<div class="form-section-header">
|
||||
<h4>ВЧ загрузка</h4>
|
||||
{% if not parameter_forms.forms.0.instance.pk %}
|
||||
<button type="button" class="btn btn-sm btn-outline-primary" id="add-parameter">Добавить ВЧ загрузку</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div id="parameters-container">
|
||||
{% for param_form in parameter_forms %}
|
||||
{% comment %} <div class="dynamic-form" data-parameter-index="{{ forloop.counter0 }}"> {% endcomment %}
|
||||
<div class="dynamic-form-header">
|
||||
{% if parameter_forms.forms|length > 1 %}
|
||||
<button type="button" class="btn btn-sm btn-outline-danger remove-parameter">Удалить</button>
|
||||
{% endif %}
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=parameter_form.id_satellite %}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=param_form.id_satellite %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=param_form.frequency %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=param_form.freq_range %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=param_form.polarization %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=parameter_form.frequency %}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=param_form.bod_velocity %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=param_form.modulation %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=param_form.snr %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=param_form.standard %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=parameter_form.freq_range %}
|
||||
</div>
|
||||
{% comment %} </div> {% endcomment %}
|
||||
{% endfor %}
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=parameter_form.polarization %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=parameter_form.bod_velocity %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=parameter_form.modulation %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=parameter_form.snr %}
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
{% include 'mainapp/components/_form_field.html' with field=parameter_form.standard %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -348,42 +336,6 @@
|
||||
|
||||
|
||||
<script>
|
||||
// Динамическое добавление ВЧ загрузок
|
||||
let parameterIndex = {{ parameter_forms|length }};
|
||||
|
||||
document.getElementById('add-parameter')?.addEventListener('click', function() {
|
||||
const container = document.getElementById('parameters-container');
|
||||
const template = document.querySelector('.dynamic-form');
|
||||
|
||||
if (template) {
|
||||
const clone = template.cloneNode(true);
|
||||
clone.querySelectorAll('[id]').forEach(el => {
|
||||
el.id = el.id.replace(/-\d+-/g, `-${parameterIndex}-`);
|
||||
});
|
||||
clone.querySelectorAll('[name]').forEach(el => {
|
||||
el.name = el.name.replace(/-\d+-/g, `-${parameterIndex}-`);
|
||||
});
|
||||
clone.querySelectorAll('[for]').forEach(el => {
|
||||
el.htmlFor = el.htmlFor.replace(/-\d+-/g, `-${parameterIndex}-`);
|
||||
});
|
||||
clone.querySelector('.dynamic-form-header h5').textContent = `ВЧ загрузка #${parameterIndex + 1}`;
|
||||
clone.dataset.parameterIndex = parameterIndex;
|
||||
container.appendChild(clone);
|
||||
parameterIndex++;
|
||||
}
|
||||
});
|
||||
|
||||
// Удаление ВЧ загрузок
|
||||
document.addEventListener('click', function(e) {
|
||||
if (e.target.classList.contains('remove-parameter')) {
|
||||
if (document.querySelectorAll('.dynamic-form').length > 1) {
|
||||
e.target.closest('.dynamic-form').remove();
|
||||
} else {
|
||||
alert('Должна быть хотя бы одна ВЧ загрузка');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Инициализация карты
|
||||
const map = L.map('map').setView([55.75, 37.62], 5);
|
||||
|
||||
Reference in New Issue
Block a user