diff options
Diffstat (limited to 'ogcp/templates/repo_inspector.html')
-rw-r--r-- | ogcp/templates/repo_inspector.html | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/ogcp/templates/repo_inspector.html b/ogcp/templates/repo_inspector.html new file mode 100644 index 0000000..ccedf5f --- /dev/null +++ b/ogcp/templates/repo_inspector.html @@ -0,0 +1,63 @@ +<form class="form mx-5" method="POST"> + {{ form.hidden_tag() }} + + {{ form.server() }} + {{ form.repo_id() }} + + <div class="form-group"> + {{ form.name.label }} + {{ form.name(class="form-control", required=True) }} + </div> + + <div class="form-group"> + {{ form.addr.label }} + <div id="ip-fields"> + {% for addr in form.addr %} + <div class="d-flex align-items-center mb-2"> + {{ addr(class="form-control me-2", placeholder=_("Enter IP Address"), required=True) }} + <button type="button" class="btn btn-danger" onclick="removeIPField(this)">{{_('Remove') }}</button> + </div> + {% endfor %} + </div> + <button type="button" class="btn btn-primary" onclick="addIPField()">{{_('Add address') }}</button> + + {{ form.submit(class="btn btn-success") }} + </div> +</form> + +<script> + function addIPField() { + const container = document.createElement('div'); + container.classList.add('d-flex', 'align-items-center', 'mb-2'); + + const newField = document.createElement('input'); + newField.setAttribute('type', 'text'); + newField.setAttribute('name', 'addr-' + document.querySelectorAll('input[name^="addr-"]').length); + newField.classList.add('form-control', 'me-2'); + newField.setAttribute('placeholder', '{{ _('Enter IP Address') }}'); + newField.required = true; + + const removeButton = document.createElement('button'); + removeButton.setAttribute('type', 'button'); + removeButton.classList.add('btn', 'btn-danger'); + removeButton.innerText = '{{ _('Remove') }}'; + removeButton.onclick = function() { + removeIPField(this); + }; + + container.appendChild(newField); + container.appendChild(removeButton); + document.getElementById('ip-fields').appendChild(container); + } + + function removeIPField(elem) { + const ipFieldsContainer = document.getElementById('ip-fields'); + const ipFieldDivs = ipFieldsContainer.querySelectorAll('.d-flex'); + + if (ipFieldDivs.length <= 1) { + return; + } + const parentDiv = elem.parentElement; + parentDiv.remove(); + } +</script>
\ No newline at end of file |