added netzgebiet copy button

This commit is contained in:
Luca Haid
2026-01-07 18:08:05 +01:00
parent 9b5144b147
commit e0458ef264
2 changed files with 56 additions and 0 deletions

View File

@@ -23,6 +23,7 @@ class ADBNetzgebietController extends mfBaseController {
Helper::renderVue3($this, $this->mod, "Netzgebietverwaltung", [
"GET_URL" => $this::getUrl("ADBNetzgebiet/getNetzgebiete"),
"SAVE_URL" => $this::getUrl("ADBNetzgebiet/save"),
"COPY_URL" => $this::getUrl("ADBNetzgebiet/copy"),
"HISTORY_URL" => $this::getUrl("ADBNetzgebiet/getHistory"),
"NETWORK_URL" => $this::getUrl("Network/Index"),
"NETWORK_CREATE_URL" => $this::getUrl("Network/add"),
@@ -130,6 +131,41 @@ class ADBNetzgebietController extends mfBaseController {
self::returnJson(['success' => true, 'data' => $history]);
}
protected function copyAction(): void {
$data = $this->postData;
if (empty($data['id'])) {
self::sendError("ID of the Netzgebiet to be copied is missing.");
return;
}
$original = ADBNetzgebiet::get($data['id']);
if (!$original) {
self::sendError("Netzgebiet not found.");
return;
}
$copy = new ADBNetzgebiet();
$copy->name = null;
$copy->extref = null;
$copy->rimo_id = $original->rimo_id;
$copy->source = $original->source;
$copy->source_id = null;
$copy->borderpoly = $original->borderpoly;
$copy->freigabe = $original->freigabe;
$copy->options = $original->options;
if (!$copy->save()) {
self::sendError("Failed to copy Netzgebiet.");
return;
}
self::returnJson([
'success' => true,
'message' => 'Netzgebiet copied.',
'id' => $copy->getId()
]);
}
// TODO: Implement RIMO API check
protected function checkRimoSourceIdAction(): void {
self::returnJson(['success' => false, 'message' => "RIMO API check not available."]);

View File

@@ -135,6 +135,7 @@ const ADBNetzgebiet = {
</td>
<td class="col-actions">
<button class="icon-btn" @click.prevent="openEditModal(item)" title="Bearbeiten"><i class="fa-duotone fa-pen"></i></button>
<button class="icon-btn" @click.prevent="copyNetzgebiet(item)" title="Kopieren"><i class="fa-duotone fa-copy"></i></button>
<button class="icon-btn" @click.prevent="openHistoryModal(item)" title="Verlauf"><i class="fa-duotone fa-clock-rotate-left"></i></button>
</td>
</tr>
@@ -471,6 +472,25 @@ const ADBNetzgebiet = {
window.notify?.('success', `Felder von "${n.name}" kopiert.`);
this.copyFromId = '';
},
async copyNetzgebiet(item) {
if (!confirm(`Wollen Sie das Netzgebiet "${item.netzgebiet.name}" kopieren?`)) return;
this.isSaving = true;
try {
const response = await axios.post(window.TT_CONFIG.COPY_URL, { id: item.netzgebiet.id });
if (response.data.success) {
window.notify?.('success', response.data.message);
await this.fetchNetzgebiete();
} else {
window.notify?.('error', response.data.message || 'Fehler beim Kopieren.');
}
} catch (error) {
console.error('Fehler:', error);
window.notify?.('error', 'Netzwerkfehler beim Kopieren.');
} finally {
this.isSaving = false;
}
},
async saveNetzgebiet() {
if (!this.editItem?.name) return;
this.isSaving = true;