Le Calculateur de Loyer ShQ est un outil conçu pour estimer le montant du loyer mensuel potentiel d'une propriété en tenant compte des facteurs déterminants du Service de Logement (ShQ) de la ville de Québec.
.calculator-container {
font-family: sans-serif;
border: 1px solid #ddd;
padding: 20px;
border-radius: 8px;
max-width: 600px;
margin: 20px auto;
background-color: #f9f9f9;
}
.calculator-inputs {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 15px;
margin-bottom: 20px;
}
.form-group {
display: flex;
flex-direction: column;
}
.form-group label {
margin-bottom: 5px;
font-weight: bold;
color: #333;
}
.form-group input {
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box; /* Ensure padding doesn't affect width */
}
button {
padding: 12px 20px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
margin-top: 10px;
transition: background-color 0.3s ease;
}
button:hover {
background-color: #45a049;
}
#result {
margin-top: 20px;
padding: 15px;
border: 1px solid #e0e0e0;
background-color: #fff;
border-radius: 4px;
font-size: 1.1em;
text-align: center;
color: #555;
}
function calculateShQLoyer() {
var surface = parseFloat(document.getElementById("surface").value);
var nombrePieces = parseFloat(document.getElementById("nombrePieces").value);
var nombreChambres = parseFloat(document.getElementById("nombreChambres").value);
var salleDeBain = parseFloat(document.getElementById("salleDeBain").value);
var stationnement = parseFloat(document.getElementById("stationnement").value);
var balconTerrasse = parseFloat(document.getElementById("balconTerrasse").value);
var ascenseur = parseFloat(document.getElementById("ascenseur").value);
var stationnementInterieur = parseFloat(document.getElementById("stationnementInterieur").value);
var resultatElement = document.getElementById("result");
if (isNaN(surface) || isNaN(nombrePieces) || isNaN(nombreChambres) || isNaN(salleDeBain) || isNaN(stationnement) || isNaN(balconTerrasse) || isNaN(ascenseur) || isNaN(stationnementInterieur)) {
resultatElement.innerHTML = "Veuillez entrer des valeurs numériques valides pour tous les champs.";
return;
}
if (surface <= 0 || nombrePieces <= 0 || nombreChambres < 0 || salleDeBain < 0 || stationnement < 0 || (balconTerrasse !== 0 && balconTerrasse !== 1) || (ascenseur !== 0 && ascenseur !== 1) || (stationnementInterieur !== 0 && stationnementInterieur !== 1)) {
resultatElement.innerHTML = "Veuillez entrer des valeurs raisonnables pour les champs.";
return;
}
// Coefficients de base (ajustables selon les directives du ShQ)
// Ces valeurs sont des exemples et devraient être basées sur les barèmes réels du ShQ.
var coeffSurface = 8.5; // Coût moyen par m²
var coeffPieces = 50; // Valeur ajoutée par pièce
var coeffChambres = 70; // Valeur ajoutée par chambre
var coeffSalleDeBain = 100; // Valeur ajoutée par salle de bain
var coeffStationnement = 40; // Valeur ajoutée par espace de stationnement
var coeffBalconTerrasse = 60; // Valeur ajoutée pour balcon/terrasse
var coeffAscenseur = 30; // Valeur ajoutée pour ascenseur
var coeffStationnementInterieur = 80; // Valeur ajoutée pour stationnement intérieur
var loyerEstime = (surface * coeffSurface) +
(nombrePieces * coeffPieces) +
(nombreChambres * coeffChambres) +
(salleDeBain * coeffSalleDeBain) +
(stationnement * coeffStationnement) +
(balconTerrasse * coeffBalconTerrasse) +
(ascenseur * coeffAscenseur) +
(stationnementInterieur * coeffStationnementInterieur);
// Ajout d'un facteur de correction pour refléter une estimation
// Le ShQ utilise des méthodes complexes, ceci est une simplification.
loyerEstime = loyerEstime * 1.05; // Exemple de légère majoration
resultatElement.innerHTML = "Loyer mensuel estimé : " + loyerEstime.toFixed(2) + " $";
}