113 lines
4.4 KiB
JavaScript
113 lines
4.4 KiB
JavaScript
$(document).ready(function() {
|
|
// Live calculation function
|
|
function calculate() {
|
|
const kaufpreis = parseFloat($('#kaufpreis').val()) || 0;
|
|
const wohnflaeche = parseFloat($('#wohnflaeche').val()) || 0;
|
|
const nutzflaeche = parseFloat($('#nutzflaeche').val()) || 0;
|
|
const baujahr = parseInt($('#baujahr').val()) || 0;
|
|
const abschreibungszeit = parseFloat($('#abschreibungszeit').val()) || 50;
|
|
const bundeslandSteuer = parseFloat($('#bundesland_id option:selected').data('steuer')) || 0;
|
|
|
|
// Gesamtfläche
|
|
const gesamtflaeche = wohnflaeche + nutzflaeche;
|
|
$('#result-gesamtflaeche').text(gesamtflaeche.toLocaleString('de-DE') + ' m²');
|
|
|
|
// Preis pro m²
|
|
const preisProQm = wohnflaeche > 0 ? kaufpreis / wohnflaeche : 0;
|
|
$('#result-preis-pro-qm').text(preisProQm.toLocaleString('de-DE', {minimumFractionDigits: 2, maximumFractionDigits: 2}) + ' €');
|
|
|
|
// Grunderwerbsteuer
|
|
const grunderwerbsteuer = kaufpreis * (bundeslandSteuer / 100);
|
|
$('#result-grunderwerbsteuer').text(grunderwerbsteuer.toLocaleString('de-DE', {minimumFractionDigits: 2, maximumFractionDigits: 2}) + ' €');
|
|
|
|
// Gesamtkosten
|
|
const gesamtkosten = kaufpreis + grunderwerbsteuer;
|
|
$('#result-gesamtkosten').text(gesamtkosten.toLocaleString('de-DE', {minimumFractionDigits: 2, maximumFractionDigits: 2}) + ' €');
|
|
|
|
// Jährliche Abschreibung
|
|
const abschreibung = abschreibungszeit > 0 ? kaufpreis / abschreibungszeit : 0;
|
|
$('#result-abschreibung').text(abschreibung.toLocaleString('de-DE', {minimumFractionDigits: 2, maximumFractionDigits: 2}) + ' €');
|
|
|
|
// Alter der Immobilie
|
|
const currentYear = new Date().getFullYear();
|
|
const alter = baujahr > 0 ? currentYear - baujahr : 0;
|
|
$('#result-alter').text(alter + ' Jahre');
|
|
}
|
|
|
|
// Trigger calculation on any input change
|
|
$('#immo-calculator-form input, #immo-calculator-form select').on('input change', function() {
|
|
calculate();
|
|
});
|
|
|
|
// Generate shareable link
|
|
$('#share-link-btn').click(function() {
|
|
const formData = $('#immo-calculator-form').serializeArray();
|
|
const params = new URLSearchParams();
|
|
|
|
formData.forEach(item => {
|
|
if (item.value) {
|
|
params.append(item.name, item.value);
|
|
}
|
|
});
|
|
|
|
const shareUrl = window.location.origin + window.location.pathname + '?' + params.toString();
|
|
$('#share-url').val(shareUrl);
|
|
$('#share-link-container').slideDown();
|
|
});
|
|
|
|
// Copy link to clipboard
|
|
$('#copy-link-btn').click(function() {
|
|
const shareUrl = $('#share-url');
|
|
shareUrl.select();
|
|
document.execCommand('copy');
|
|
alert('Link wurde in die Zwischenablage kopiert!');
|
|
});
|
|
|
|
// Reset form
|
|
$('#reset-btn').click(function() {
|
|
$('#immo-calculator-form')[0].reset();
|
|
$('#share-link-container').slideUp();
|
|
calculate();
|
|
});
|
|
|
|
// Save immobilie (for logged in users)
|
|
$('#save-immobilie-btn').click(function() {
|
|
const formData = $('#immo-calculator-form').serializeArray();
|
|
const data = {};
|
|
|
|
formData.forEach(item => {
|
|
if (item.name === 'garage') {
|
|
data[item.name] = $('#garage').is(':checked');
|
|
} else {
|
|
data[item.name] = item.value;
|
|
}
|
|
});
|
|
|
|
$.ajax({
|
|
url: '/immobilie/save',
|
|
method: 'POST',
|
|
contentType: 'application/json',
|
|
data: JSON.stringify(data),
|
|
success: function(response) {
|
|
if (response.success) {
|
|
alert(response.message + '\n\nSie können Ihre gespeicherten Immobilien unter "Meine Immobilien" einsehen.');
|
|
} else {
|
|
alert('Fehler: ' + response.message);
|
|
}
|
|
},
|
|
error: function(xhr) {
|
|
if (xhr.status === 401) {
|
|
alert('Sie müssen angemeldet sein, um Immobilien zu speichern.');
|
|
window.location.href = '/login';
|
|
} else {
|
|
const response = xhr.responseJSON;
|
|
alert('Fehler: ' + (response ? response.message : 'Unbekannter Fehler'));
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
// Initial calculation on page load
|
|
calculate();
|
|
});
|