Files
thetool/public/js/pages/FiberPlanCable/Form.js
Daniel Spitzer 1554d6cf72 Faserplanung Vorbereitung für Kabelverschaltung
* Menüpunkt Kabelverschaltung hinzugefügt
 * Initialfiles für Kabelverschaltung
2024-06-30 12:01:56 +02:00

960 lines
50 KiB
JavaScript

const poprackmodulesoption = {};
function checkendpoints() {
let endpointcounter = $('.fiberplanpipe-label').length;
let endpointtext;
$('.fiberplanpipe-label').each(function (index) {
$(this).find('.move-endpoint-up').remove();
$(this).find('.move-endpoint-down').remove();
$(this).find('.remove-endpoint').remove();
if (index == 0 && endpointcounter - 1 == 0) {
// endpointtext = "Startpunkt";
} else if (index == 0) {
$(this).closest('.fiberplanpipe-label').find('.label-text').after('<i data-index=' + index + ' title="nach unten verschieben" class="fa-sharp fa-solid fa-down move-endpoint-down"></i>');
} else if (endpointcounter == 2) {
endpointtext = 'Standort ' + index;
$(this).closest('.fiberplanpipe-label').find('.label-text').after('<i title="nach oben verschieben" class="fa-sharp fa-solid fa-up move-endpoint-up"></i>');
$(this).find('.endpointsymbol').html('<i data-index=' + index + ' class="fa-regular fa-circle-minus remove-endpoint"></i>');
} else if (endpointcounter - 1 == index) {
endpointtext = 'Standort ' + index;
$(this).closest('.fiberplanpipe-label').find('.label-text').after('<i data-index=' + index + ' style="margin-right:22px;" title="nach oben verschieben" class="fa-sharp fa-solid fa-up move-endpoint-up"></i>');
$(this).find('.endpointsymbol').html('<i data-index=' + index + ' class="fa-regular fa-circle-minus remove-endpoint"></i>');
} else if (index > 0) {
endpointtext = 'Standort ' + index;
$(this).closest('.fiberplanpipe-label').find('.label-text').after('<i data-index=' + index + ' title="nach unten verschieben" class="fa-sharp fa-solid fa-down move-endpoint-down"></i><i data-index=' + index + ' title="nach oben verschieben" class="fa-sharp fa-solid fa-up move-endpoint-up"></i>');
$(this).find('.endpointsymbol').html('<i data-index=' + index + ' class="fa-regular fa-circle-minus remove-endpoint"></i>');
}
// $(this).find('.label-text').text(endpointtext + ' *');
});
}
function checkracks() {
$.each($('.fiberplanpipe-pop-racks'), function (index, value) {
var option = "<option></option>";
var thisis = $(this);
$.getJSON(poprackmoduleallUrl + "&pop_id=" + $(this).data('popid'), {})
.done(function (data) {
if (data.success) {
var plug;
$.each(data.data, function (k, val) {
option = option + '<optgroup label="Rack: ' + k + '">';
$.each(val, function (key, value) {
if (value.plug == "1") {
plug = " (LC/APC)";
} else if (value.plug == "2") {
plug = " (SC/APC)";
} else if (value.plug == "3") {
plug = " (E2000/APC)";
}
option = option + '<option data-ports="' + value.ports + '" value="' + value.id + '">HE(' + value.start_he + ') ' + value.name + ' (1-' + value.ports + ')' + plug + '</option>';
})
option = option + "</optgroup>";
});
}
thisis.closest('.fiberplancableendpoint-div').find('.poprackmodule_id').html(option);
$.each(thisis.closest('.fiberplancableendpoint-div').find('.poprackmodule_id'), function (index, value) {
if ($(this).data('poprackmodule_id') != "undefined") {
$(this).val($(this).data('poprackmodule_id'));
$(this).trigger("change", "1");
}
});
}
)
.done(function (data) {
});
});
}
function checksleeves() {
$.each($('.fiberplanpipe-dispatcher-sleeves'), function (index, value) {
var option = "<option></option>";
var thisis = $(this);
$.getJSON(dispatchersleeveUrl + "&dispatcher_id=" + $(this).data('id'), {})
.done(function (data) {
if (data.success) {
$.each(data.data, function (k, val) {
option = option + '<option value="' + val.id + '">' + val.name + '</option>';
});
thisis.closest('.fiberplancableendpoint-div').find('.sleeveid').html(option);
$.each(thisis.closest('.fiberplancableendpoint-div').find('.fiberplandispatcher_id'), function (index, value) {
if ($(this).data('id') != "undefined") {
$(this).val($(this).data('id'));
$(this).trigger("change", "1");
}
});
}
});
});
}
function checkusedfibers(trigger) {
var destination = trigger.closest('.fiberplanpipe-body-div').find('.module-row');
var fibercounter = 0;
var sumstart;
var sumend;
destination.each(function (index) {
sumstart = fibercounter + 1;
if (parseInt($(this).find('.ports-end').val()) && parseInt($(this).find('.ports-start').val())) {
fibercounter = fibercounter + parseInt($(this).find('.ports-end').val()) - parseInt($(this).find('.ports-start').val()) + 1;
sumend = fibercounter;
$(this).find('.fibersum').text('(' + sumstart + '-' + sumend + ')');
}
});
trigger.closest('.destinationpoint').find('.fiber-used').text(fibercounter);
}
function checkusedpipes() {
var counter = 0;
$.each($('.fiberplanpipesub'), function (index, value) {
$('.fiberplanpipe-subpipe').eq(counter).html($(this).next('span').find('.select2-selection__rendered').html());
counter++;
});
}
function formatState(state) {
if (!state.id || !state.title) {
return state.text;
}
const titleArray = state.title.split(";");
var title = titleArray[0];
var titlestripe = titleArray[1];
var border = 'border:none;'
if (title == "#ffffff" || title == "#ffff01" || title == "#01ffff") {
border = 'border:1px solid #9d9d9d;';
}
var height = '10px';
var striped = '';
if (titlestripe == 1) {
striped = 'style="background-color: #000;height: 100%;width: 45%;text-align: center;margin-left: auto;margin-right: auto;"';
}
if (state.text.indexOf("14x10") != -1) {
height = "12px";
}
var returnstate = $(
'<div style="display: inline-block;width: 50px;background-color: ' + title + '; border-radius: 14px; height: ' + height + ';' + border + '"><div ' + striped + '></div></div><div style="margin-left:5px;display: inline-block;">' + state.text + '</div>'
);
return returnstate;
};
function generateDestinationmid(destinations, destinationtype, destinationdiv, param = 0, append = 0) {
var destination_typename = "Schächte/Verteiler";
var randid;
$('#' + destinationdiv).append(` <div class="destination-dropdown row">
<i class="fa-solid fa-square-caret-up "></i><h4>` + destinationtype + ` (` + destination_typename + `) </h4>
</div>`);
console.log(destinations);
$.each(destinations, function (index, destination) {
var destination_typename = destination.typename;
var destination_type = destination.type;
if (destination.typename === undefined) {
destination_type = "4";
}
if (append === 0) {
var addsleevebutton = "";
if (destination_type == "4") {
addsleevebutton = '<i data-popid="' + destination.id + '" class="fa-regular fa-circle-plus add-sleeve"></i>';
}
}
if (destination_type == "4") {
randid = Math.floor(Math.random() * 10000);
$('#' + destinationdiv).append(`
<div class="form-group row">
<label class="col-lg-3 col-form-label" for="comment">Name` + addsleevebutton + `</label>
<div class="col-lg-6 col-form-label"><span id="` + destinationdiv + `-id" data-id="` + destination.id + `">` + destination.name + `<input type="hidden" name="` + destinationdiv + `_id" value="` + destination.id + `"> </span></div>
</div>
<div id="` + randid + `_sleeves_div"> </div>
`);
console.log(randid);
var sleeveoptions = '<option value="">&nbsp;</option>';
$.each(destination.sleeves, function (k, val) {
console.log(val);
sleeveoptions = sleeveoptions + '<option value="' + k + '">' + val + '</option>';
});
$('#' + randid + '_sleeves_div').append(`<div class="form-group row">
<label class="col-lg-3 col-form-label" for="lenght">Muffe </label>
<div class="col-lg-5">
<select name="` + destinationdiv + `_sleeve_id[]" required="required" class="select2 form-control sleeveid">` + sleeveoptions + `</select>
</div>
<div class="col-lg-3">
<div class="form-row">
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">von</div>
</div>
<input name="` + destinationdiv + `_sleeve_start[]" value="1" type="number" class="form-control ports-start">
</div>
</div>
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">bis</div>
</div>
<input name="` + destinationdiv + `_sleeve_end[]" value="48" type="number" class="form-control ports-end">
</div>
</div></div>
</div> </div>
`);
}
});
};
function generateDestination(destination, destinationtype, destinationdiv, param = 0, append = 0) {
var destination_typename = destination.typename;
var destination_type = destination.type;
if (destination.typename === undefined) {
destination_typename = "Schächte";
destination_type = "4";
}
if (append === 0) {
var addsleevebutton = "";
if (destination_type == "4") {
addsleevebutton = '<i data-popid="' + destination.id + '" class="fa-regular fa-circle-plus add-sleeve"></i>';
}
$('#' + destinationdiv).append(`
<div class="destination-dropdown row">
<i class="fa-solid fa-square-caret-up "></i><h4>` + destinationtype + ` (` + destination_typename + `) </h4>
</div>
<div class="form-group row">
<label class="col-lg-3 col-form-label" for="comment">Name` + addsleevebutton + `</label>
<div class="col-lg-6 col-form-label"><span id="` + destinationdiv + `-id" data-id="` + destination.id + `">` + destination.name + `<input type="hidden" name="` + destinationdiv + `_id" value="` + destination.id + `"> </span></div>
</div>
`);
}
if (destination_type == "4") {
$.getJSON(dispatchersleeveUrl + "&dispatcher_id=" + destination.id, {})
.done(function (data) {
if (data.success) {
var sleeveoptions = '<option value="">&nbsp;</option>';
$.each(data.data, function (k, val) {
sleeveoptions = sleeveoptions + '<option value="' + val.id + '">' + val.name + '</option>';
});
console.log(destinationdiv);
$('#' + destinationdiv).append(`<div class="form-group row">
<label class="col-lg-3 col-form-label" for="lenght">Muffe </label>
<div class="col-lg-5">
<select name="` + destinationdiv + `_sleeve_id[]" required="required" class="select2 form-control sleeveid">` + sleeveoptions + `</select>
</div>
<div class="col-lg-3">
<div class="form-row">
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">von</div>
</div>
<input name="` + destinationdiv + `_sleeve_start[]" value="1" type="number" class="form-control ports-start">
</div>
</div>
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">bis</div>
</div>
<input name="` + destinationdiv + `_sleeve_end[]" value="48" type="number" class="form-control ports-end">
</div>
</div></div>
</div> </div>
`);
}
})
}
if (destination_type == "2") {
destinationname = destination.name;
var popid = destination.id;
$.getJSON(poprackUrl + "&pop_id=" + destination.id, {})
.done(function (data) {
if (data.success) {
var fibers = $('#fibers').find(':selected').data('fibers');
if (fibers === undefined) {
fibers = 0;
}
var rackoptions = '<option value="">&nbsp;</option>';
$.each(data.data, function (k, val) {
rackoptions = rackoptions + '<option value="' + val.id + '">' + val.name + '</option>';
});
if (append === 0) {
$('#' + destinationdiv).append(`<div class="form-group row">
<label class="col-lg-3 col-form-label" for="lenght">Fasern </i></label>
<div class="col-lg-6 col-form-label"><span class="fiber-used">0 </span><span > von </span><span class="fiber-counter">` + fibers + `</span> Fasern aufgelegt</div>
</div>`);
if (param == 0) {
$('#' + destinationdiv).append(`<div class="form-group row">
<label class="col-lg-3 col-form-label" for="lenght">Schrank <i data-popid="` + popid + `" class="fa-regular fa-circle-plus add-rack"></i></label>
<div class="col-lg-5">
<select name="` + destinationdiv + `_poprack_id" required="required" class="select2 form-control poprack_id">` + rackoptions + `</select>
</div>
</div>`);
} else if (param == 1) {
if (destinationdiv == 'destinationendpoint') {
var dest = destinationendpoint;
}
if (destinationdiv == 'destinationstartpoint') {
var dest = destinationstartpoint;
}
$('#' + destinationdiv).append(dest);
checkusedfibers($('#' + destinationdiv));
}
} else if (append === 1) {
console.log('cool');
$('#' + destinationdiv).append(`<div class="form-group row" style="border-top: 1px dotted #9b9b9b;padding-top: 15px;">
<label class="col-lg-3 col-form-label" for="lenght">Schrank <i data-popid="` + popid + `" class="fa-regular fa-circle-minus remove-rack"></i></label>
<div class="col-lg-5">
<select name="` + destinationdiv + `_poprack_id" required="required" class="select2 form-control poprack_id">` + rackoptions + `</select>
</div>
</div>`);
}
} else {
$('#' + destinationdiv).append(`
<div class="form-group row">
<label class="col-lg-3 col-form-label" for="lenght">Schrank </label>
<div class="col-lg-6">
<div class="col-form-label">Keine Schränke vorhanden.</div>
</div>
</div>`);
}
}
)
.done(function (data) {
$('#' + destinationdiv).append(`<div class="destinationmodules"></div>`);
});
}
}
function addModule(thistrigger, poprackid, append = 0, param = 0, selected = null, startport = null, endport = null, popid = null) {
if (popid) {
$.getJSON(poprackUrl + "&pop_id=" + popid, {})
.done(function (data) {
if (data.success) {
var rackoptions = '<option value="">&nbsp;</option>';
$.each(data.data, function (k, val) {
rackoptions = rackoptions + '<option value="' + val.id + '">' + val.name + '</option>';
});
console.log('cool1');
$('#destinationstartpoint').append(`<div class="form-group row" style="border-top: 1px dotted #9b9b9b;padding-top: 15px;">
<label class="col-lg-3 col-form-label" for="lenght">Schrank <i data-popid="` + popid + `" class="fa-regular fa-circle-minus remove-rack"></i></label>
<div class="col-lg-5">
<select name="` + poprackid + `_poprack_id" required="required" class="select2 form-control poprack_id">` + rackoptions + `</select>
</div>
</div>`);
$('#destinationstartpoint').append(`<div class="destinationmodules"></div>`);
thistrigger = thistrigger.nextAll().eq(1);
}
});
}
$.getJSON(poprackmoduleUrl + "&poprack_id=" + poprackid, {})
.done(function (data) {
if (data.success) {
var options = "";
var rackoptions = '<option value="">&nbsp;</option>';
var systemoption;
var plug;
var portsstart = 1;
var portsend;
var counter = 1;
$.each(data.data, function (k, val) {
if (counter == 1) {
portsend = val.ports;
}
if (val.plug == "1") {
systemoption = " (LC/APC " + val.ports + "p)";
} else if (val.plug == "2") {
systemoption = " (SC/APC " + val.ports + "p)";
} else if (val.plug == "3") {
systemoption = " (E2000/APC " + val.ports + "p)";
} else {
systemoption = "";
}
if (selected && selected == val.id) {
options = options + '<option selected="selected" data-ports="' + val.ports + '" value="' + val.id + '">' + '(HE:' + val.start_he + ") " + val.name + systemoption + '</option>';
} else {
options = options + '<option data-ports="' + val.ports + '" value="' + val.id + '">' + '(HE:' + val.start_he + ") " + val.name + systemoption + '</option>';
}
counter++;
});
if (startport) {
portsstart = startport;
}
if (endport) {
portsend = endport;
}
var destinationpoint = thistrigger.closest('.destinationpoint').attr('id');
var html;
if (append === 0) {
html = `<div class="form-group module-row row">
<label class="col-lg-3 col-form-label" for="lenght"><span class="fibersum"></span><i class="fa-regular fa-circle-plus add-module" data-poprackid="` + poprackid + `"></i></label>`;
} else if (append === 1) {
html = `<div class="form-group module-row row">
<label class="col-lg-3 col-form-label" for="lenght"><span class="fibersum"></span><i class="fa-regular fa-circle-minus remove-module"></i><i class="fa-solid fa-arrow-up up-module"></i></label>`;
}
html = html + `
<div class="col-lg-5">
<select name="` + destinationpoint + `_poprackmodule_id[]" required="required" class="select2 form-control poprackmodule_id">` + options + `</select>
</div>
<div class="col-lg-3">
<div class="form-row">
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">von</div>
</div>
<input name="` + destinationpoint + `_poprackmodule_start[]" value="` + portsstart + `" type="number" class="form-control ports-start">
</div>
</div>
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">bis</div>
</div>
<input name="` + destinationpoint + `_poprackmodule_end[]" value="` + portsend + `" type="number" class="form-control ports-end">
<input style="display:none" name="` + destinationpoint + `_poprackmodule_rackid[]" value="` + poprackid + `" type="number" class="form-control ports-rackid">
</div>
</div></div>
</div>
</div>`;
if (append === 0) {
thistrigger.closest('.form-group').next().html(html);
} else if (append === 1) {
thistrigger.append(html);
}
} else {
thistrigger.closest('.form-group').next().html(`
<div class="form-group row">
<label class="col-lg-3 col-form-label" for="lenght"></label>
<div class="col-lg-6 text-center">
Keine Einschübe in diesem Schrank vorhanden
</div>
</div>`);
}
checkusedfibers(thistrigger);
})
}
$(document).ready(function () {
$(".select2").select2({placeholder: ""});
$(".select2select").select2({placeholder: ""});
$("#fiberplanpipesub").select2({
placeholder: "",
templateResult: formatState,
templateSelection: formatState
});
// disable mousewheel on a input number field when in focus
$('form').on('focus', 'input[type=number]', function (e) {
$(this).on('wheel.disableScroll', function (e) {
e.preventDefault()
})
});
$('form').on('blur', 'input[type=number]', function (e) {
$(this).off('wheel.disableScroll')
});
$("body").on("change", ".pipe-network", function (event, param = 0) {
var thisis = $(this);
var options = '<option value="">&nbsp;</option>';
$.getJSON(fiberPlanPipeUrl + "&network_id=" + $.trim($(this).val()), {})
.done(function (data) {
if (data.success) {
$.each(data.data, function (k, val) {
options = options + '<option value="' + val.id + '">' + val.description + '</option>';
});
$(thisis).closest(".form-group").find('.pipe-div').html('<select name="fiberplanpipe[]" required="required" class="select2select form-control fiberPlanPipe_id">' + options + '</select><input type="hidden" name="fiberplanpipe_id[]" class="fiberplanpipe_id" value="x">');
if (param == 1 && pipes.length == $('.fiberPlanPipe_id').length) {
var counter = 0;
pipes.forEach(function (value, index) {
$('.fiberPlanPipe_id').eq(counter).val(value);
$('.fiberplanpipe_id').eq(counter).val(pipesid[counter]);
$('.fiberPlanPipe_id').eq(counter).trigger("change", "1");
checkendpoints();
counter++;
});
}
$(".select2select").select2({placeholder: ""});
}
});
});
$("body").on("change", "#network_id", function (event, param = 0) {
var options = '<option value="">&nbsp;</option>';
$('#destination-div').empty();
$('#destination-div').append('<div id="destinationstartpoint"></div><div id="destinationmidpoint"></div><div id="destinationendpoint"></div>');
$.getJSON(fiberPlanPipeUrl + "&network_id=" + $.trim($(this).val()), {})
.done(function (data) {
if (data.success) {
$.each(data.data, function (k, val) {
options = options + '<option value="' + val.id + '">' + val.description + '</option>';
});
$('#subpipe-div').empty();
$('#pipe-div').empty();
$('#pipe-div').append('<select id="fiberPlanPipe_id" name="fiberplanpipe[]" required="required" class="select2 form-control">' + options + '</select>');
if (param == 1) {
// $("#fiberPlanPipe_id option[value=<?php echo $fiberplancables->fiberPlanPipe_id; ?>]").attr('selected', 'selected');
if ($('#fiberPlanPipe_id').val()) {
$("#fiberPlanPipe_id").trigger("change", "1")
}
}
$(".select2").select2({placeholder: ""});
$("#fiberplanpipesub").select2({
placeholder: "",
templateResult: formatState,
templateSelection: formatState
});
} else {
$('#subpipe-div').empty();
$('#pipe-div').html('<p class="text-center font-weight-500">Keine Rohre in diesem Netzgebiet vorhanden.</p>');
}
});
});
$("body").on("change", ".fiberPlanPipe_id", function (event, param = 0) {
// console.log(param);
var options = '<option value="">&nbsp;</option>';
var thisis = $(this);
$('#destination-div').empty();
$('#destination-div').append('<div id="destinationstartpoint" class="destinationpoint"></div><div id="destinationmidpoint" class="destinationpoint"></div><div id="destinationendpoint" class="destinationpoint"></div>');
$.getJSON(fiberPlanPipeSubUrl + "&fiberplanpipe_id=" + $.trim($(thisis).val()), {})
.done(function (data) {
if (data.success) {
$.each(data.data, function (k, val) {
var idcounter = 0;
var color;
// generateDestination(val.startpointname, "Startpunkt", "destinationstartpoint", param);
// generateDestinationmid(val.midpointname, "Zwischenpunkte", "destinationmidpoint", param);
//generateDestination(val.endpointname, "Endpunkt", "destinationendpoint", param);
if (val.fiberPlanPipeTemplate_id != null) {
var obj = jQuery.parseJSON(val.colors);
if (val.pipe7x4 != "0" && val.pipe7x4 != null) {
var counter = val.pipe7x4;
}
$.each(obj, function (key, col) {
if (counter == 0) {
return true;
}
color = col.color + ';0';
idcounter++;
options = options + '<option title="' + color + '" value="' + idcounter + '"> 7x4 (' + col.colordescription + ')</option>';
counter--;
});
if (counter != 0) {
$.each(obj, function (key, col) {
if (counter == 0) {
return true;
}
color = col.color + ';1';
idcounter++;
options = options + '<option title="' + color + '" value="' + idcounter + '"> 7x4 (' + col.colordescstriped + ')</option>';
counter--;
});
}
if (val.pipe14x10 != "0" && val.pipe14x10 != null) {
var counter = val.pipe14x10;
}
$.each(obj, function (key, col) {
if (counter == 0) {
return true;
}
color = col.color + ';0';
idcounter++;
options = options + '<option title="' + color + '" value="' + idcounter + '"> 14x10 (' + col.colordescription + ')</option>';
counter--;
});
if (counter != 0) {
$.each(obj, function (key, col) {
if (counter == 0) {
return true;
}
color = col.color + ';1';
idcounter++;
options = options + '<option title="' + color + '" value="' + idcounter + '"> 14x10 (' + col.colordescstriped + ')</option>';
counter--;
});
}
} else {
options = options + '<option title="" value="' + val.type_description + '"> ' + data.variables.type_description[val.type_description] + '</option>';
}
}
)
;
$(thisis).closest(".form-group").next().find('.subpipe-div').html('<select name="fiberplanpipesub[]" required="required" class=" form-control fiberplanpipesub">' + options + '</select>');
$(".fiberplanpipesub").select2({
placeholder: "",
templateResult: formatState,
templateSelection: formatState
});
if (param == 1 && subpipes.length == $('.fiberplanpipesub').length) {
var counter = 0;
subpipes.forEach(function (value, index) {
$('.fiberplanpipesub').eq(counter).val(value);
$('.fiberplanpipesub').eq(counter).trigger("change", "1");
counter++;
});
checkusedpipes();
checkracks();
// $("#fiberplanpipesub option[value=<?php echo $fiberplancables->fiberPlanPipe_sub; ?>]").attr('selected', 'selected');
}
}
}
)
;
});
$('#rackModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
var recipient = button.data('mdtype');
var destinationname = button.data('name');
var modal = $(this);
if (recipient == "rack") {
modal.find('.modal-title').text('Neuer Schrank (' + destinationname + ')');
}
})
if ($('#network_id').val()) {
$("#network_id").trigger("change", "1")
}
$("body").on("change", ".poprack_id", function (event, param = 0) {
var thistrigger = $(this);
var poprackid = $(this).val();
// console.log(param);
if (param == 0) {
addModule(thistrigger, poprackid);
}
});
$("body").on("click", ".add-module", function () {
var thistrigger = $(this);
thistrigger.closest('h5').next('div').append(`<div class="form-group module-row row">
<label class="col-lg-2 col-form-label" for="lenght"><i class="fa-regular fa-circle-minus remove-module"></i><i title="nach unten verschieben" class="fa-sharp fa-solid fa-down down-module"></i><i class="fa-sharp fa-solid fa-up up-module"></i></label>
<div class="col-lg-4">
<select data-poprackmodule_id="" name="poprackmodule_id[]" required="required" class="select2select form-control poprackmodule_id"></select>
</div>
<div class="col-lg-4">
<div class="form-row">
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">von</div>
</div>
<input name="poprackmodule_start[]" value="" type="number" class="form-control ports-start">
</div>
</div>
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">bis</div>
</div>
<input name="poprackmodule_end[]" value="" type="number" class="form-control ports-end">
<input style="display:none" name="poprackmodule_rackid[]" value="" type="number" class="form-control ports-rackid">
</div>
</div></div>
</div>
<div class="col-2"><label class="fibersum col-form-label"></label></div>
</div>`);
checkracks();
$(".select2select").select2({placeholder: ""});
if (thistrigger.closest('h5').next('div').length < 6) {
}
});
$("body").on("click", ".add-rack", function () {
var thistrigger = $(this);
var poprackid = $(this).data('poprackid');
// console.log(thistrigger);
var destinationpoint = $(this).closest('.destinationpoint').attr('id');
$.getJSON(fiberPlanPipeSubUrl + "&fiberplanpipe_id=" + $.trim($("#fiberPlanPipe_id").val()), {})
.done(function (data) {
if (data.success) {
$.each(data.data, function (k, val) {
var idcounter = 0;
var color;
if (destinationpoint == "destinationstartpoint") {
generateDestination(val.startpointname, "Startpunkt", "destinationstartpoint", 0, 1);
} else if (destinationpoint == "destinationendpoint") {
generateDestination(val.endpointname, "Endpunkt", "destinationendpoint", 0, 1);
}
})
}
});
});
$("body").on("click", ".add-sleeve", function () {
var thistrigger = $(this);
thistrigger.closest('h5').next('div').append(`<div class="form-group row">
<label class="col-lg-2 col-form-label" for="lenght"><span class="ml-2">Muffe</span></label>
<div class="col-lg-4">
<select name="sleeve_id[]" data-id="" required="required" class="select2select form-control fiberplandispatcher_id sleeveid"></select>
</div>
<div class="col-lg-4">
<div class="form-row">
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">von</div>
</div>
<input name="sleeve_start[]" value="" type="number" class="form-control ports-start">
</div>
</div>
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">bis</div>
</div>
<input name="sleeve_end[]" value="" type="number" class="form-control ports-end">
</div>
</div></div>
</div>
<div class="col-2"><span class="fibersum"></span></div>
</div>`);
checksleeves();
// checkusedfibers();
$(".select2select").select2({placeholder: ""});
if (thistrigger.closest('h5').next('div').length < 6) {
}
});
$("body").on("click", ".remove-module", function () {
var trigger = $(this).closest('.destinationmodules');
$(this).closest('div').remove();
checkusedfibers(trigger);
});
$("body").on("click", ".remove-rack", function () {
var trigger = $(this);
$(this).closest('.form-group').next().remove();
checkusedfibers(trigger);
$(this).closest('.form-group').remove();
});
$("body").on("change", "#responsible", function () {
if ($(this).val() == 1) {
$('#responsible-div').show();
$('#responsible-row').show();
$("#address_id").prop("disabled", false);
$(".select2select").select2({placeholder: ""});
} else {
$('#responsible-div').hide();
$('#responsible-row').hide();
$("#address_id").prop("disabled", true);
$(".select2select").select2({placeholder: ""});
}
});
$("body").on("change", ".poprackmodule_id", function (event, param = 0) {
// console.log('param'+param);
var portsend = $(this).closest('.module-row').find('.ports-end').val();
// console.log(portsend);
//Immer Ändern
if (param == 0) {
if ($(this).find(':selected').data('ports') != $(this).closest('.module-row').find('.ports-end').val()) {
$(this).closest('.module-row').find('.ports-end').val($(this).find(':selected').data('ports'));
$(this).closest('.module-row').find('.ports-start').val('1');
}
}
checkusedfibers($(this).closest('.module-row'));
});
$("body").on("change blur", ".ports-end", function () {
var maxports = $(this).closest('.module-row').find('.poprackmodule_id').find(':selected').data('ports');
var endports = $(this).val();
var startports = $(this).closest('.module-row').find('.ports-start').val();
if (!parseInt(endports) || endports > maxports) {
$(this).val(maxports);
} else if (parseInt(endports) < parseInt(startports)) {
$(this).val(startports);
}
checkusedfibers($(this).closest('.module-row'));
});
$("body").on("change", "#fibers", function () {
$('.fiber-counter').text($('#fibers').find(':selected').data('fibers'));
})
$("body").on("change blur", ".ports-start", function () {
var startports = $(this).val();
var endports = $(this).closest('.module-row').find('.ports-end').val();
if (!parseInt(startports) || startports < 1) {
$(this).val('1');
} else if (parseInt(startports) > parseInt(endports)) {
$(this).val(endports);
}
checkusedfibers($(this).closest('.module-row'));
});
$("body").on("click", ".destination-dropdown", function () {
if ($(this).find('i').hasClass('fa-square-caret-down')) {
$(this).find('i').removeClass('fa-square-caret-down');
$(this).find('i').addClass('fa-square-caret-up');
$(this).closest('.destinationpoint').find('.form-group').show();
} else {
$(this).find('i').addClass('fa-square-caret-down');
$(this).find('i').removeClass('fa-square-caret-up');
$(this).closest('.destinationpoint').find('.form-group').hide();
}
});
$.each($('.pipe-network'), function (index, value) {
var thisis = $(this);
$(this).trigger('change', '1')
})
$('body').on('click', '.add-pipe', function () {
$('#fiberplancablepipes-div').append(`<div class="fiberplancablepipe-div">
<div class=" form-group row">
<label class="col-lg-3 col-form-label fiberplanpipe-label" for="fiberPlanPipe_id"><span class=" label-text">Rohr *</span> <span class="endpointsymbol"></span></label>
<div class="col-lg-4">
<select required="required" name="fiberplanpipenetwork[]" class="select2select form-control pipe-network">
<option value=""></option>
</select>
</div>
<div class="col-lg-4 pipe-div"><select name="fiberplanpipe[]" required="required" class="select2select form-control fiberPlanPipe_id"></select><input type="hidden" name="fiberplanpipe_id[]" class="fiberplanpipe_id" value="x"></div>
</div>
<div class="form-group row">
<label class="col-lg-3 col-form-label" for="fiberPlanPipe_sub">Subrohr
*</label>
<div class="col-lg-4 subpipe-div">
</div>
</div>
</div>`);
$('#fiberplancableendpoints').append(`<div class="fiberplanpipe-main-div"></div>`);
var fiberplancablepipelength = $('.fiberplancablepipe-div').length;
$('.fiberplancablepipe-div').eq(fiberplancablepipelength - 1).find('.pipe-network').html($('.fiberplancablepipe-div').eq(fiberplancablepipelength - 2).find('.pipe-network').html());
$('.fiberplancablepipe-div').eq(fiberplancablepipelength - 1).find('.pipe-network').trigger('change');
$('.select2select').select2({placeholder: ""});
checkendpoints();
});
$("body").on("click", ".remove-endpoint", function () {
let endpointcounter;
$(this).closest('.fiberplancablepipe-div').remove();
$('.fiberplanpipe-main-div').eq($(this).data('index')).remove();
checkendpoints();
});
$("body").on("click", ".move-endpoint-up", function () {
$(this).closest('.fiberplancablepipe-div').insertBefore($(this).closest('.fiberplancablepipe-div').prev());
$('.fiberplanpipe-main-div').eq($(this).data('index')).insertBefore($('.fiberplanpipe-main-div').eq($(this).data('index')).prev());
checkendpoints();
});
$("body").on("click", ".move-endpoint-down", function () {
$(this).closest('.fiberplancablepipe-div').insertAfter($(this).closest('.fiberplancablepipe-div').next());
$('.fiberplanpipe-main-div').eq($(this).data('index')).insertAfter($('.fiberplanpipe-main-div').eq($(this).data('index')).next());
checkendpoints();
});
$("body").on("click", ".change-fiberplanpipe-body", function () {
if ($(this).hasClass('fa-square-chevron-down')) {
$(this).removeClass('fa-square-chevron-down');
$(this).addClass('fa-square-chevron-up');
$(this).closest('.fiberplanpipe-main-div').find('.fiberplanpipe-body-div').hide();
} else if ($(this).hasClass('fa-square-chevron-up')) {
$(this).removeClass('fa-square-chevron-up');
$(this).addClass('fa-square-chevron-down');
$(this).closest('.fiberplanpipe-main-div').find('.fiberplanpipe-body-div').show();
}
});
$("body").on("click", ".up-module", function () {
$(this).closest('.module-row').insertBefore($(this).closest('.module-row').prev());
checkusedfibers($(this).closest('.module-row'));
});
$("body").on("change", ".fiberplanpipesub", function () {
checkusedpipes();
});
$("body").on("click", ".change-fiberplanpipe-main", function () {
if ($(this).hasClass('fa-square-chevron-down')) {
$(this).removeClass('fa-square-chevron-down');
$(this).addClass('fa-square-chevron-up');
$.each($('.change-fiberplanpipe-body'), function (index, value) {
$(this).removeClass('fa-square-chevron-down');
$(this).addClass('fa-square-chevron-up');
});
$('.fiberplanpipe-body-div').hide();
} else if ($(this).hasClass('fa-square-chevron-up')) {
$.each($('.change-fiberplanpipe-body'), function (index, value) {
$(this).removeClass('fa-square-chevron-up');
$(this).addClass('fa-square-chevron-down');
});
$(this).removeClass('fa-square-chevron-up');
$(this).addClass('fa-square-chevron-down');
$('.fiberplanpipe-body-div').show();
}
});
checksleeves();
});