Séance 5 - 8

Projet final (noté)

Réaliser une application manipulant une API et affichant les données dans lesquels il est possible de naviguer.

API OpenWeather

Une fois votre compte créé (il faut parfois attendre 2heures pour que la clé d'API fonctionne), vous pouvez choisir entre deux accès.

Les données actuelles

https://api.openweathermap.org/data/2.5/weather?q=troyes&appid={cleapi}&units=metric

La valeur cleApi est à remplacer par votre clé.

"troyes" peut être remplacée par n'importe quelle ville du monde (dans sa langue d'origine ou anglaise)

Les prévisions

https://api.openweathermap.org/data/2.5/forecast?q=troyes&appid=f09048b15950f446f8a54ea748fb65e3&units=metric

Le fonctionnement est identique à l'appel précédent (weather est remplacé par forecast)

{"coord":
{
    "lon":4.0833,
    "lat":48.3333
},
"weather":
[{
    "id":800,
    "main":"Clear",
    "description":"clear sky",
    "icon":"01d"
}],
"base":"stations",
"main":
{
    "temp":8.03,
    "feels_like":8.03,
    "temp_min":8.03,
    "temp_max":9.43,
    "pressure":1012,
    "humidity":93
},
"visibility":10000,
"wind":
{
    "speed":0.51,
    "deg":150
},
"clouds":
{
    "all":0
},
"dt":1653975602,
"sys":
{
    "type":1,
    "id":6555,
    "country":"FR",
    "sunrise":1653968878,
    "sunset":1654025702},
    "timezone":7200,
    "id":2971548,
    "name":"Arrondissement de Troyes",
    "cod":200
}

Base

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Météo</title>
    <link rel="stylesheets" href="css/bootstrap.min.css">
</head>
<body>
    <h1>Application météo</h1>
<p>Température : <span id="temperature"></span>°C</p>

<script src="js/bootstrap.min.js"></script>
<script src="js/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function(){

    $.ajax({
        url: "https://api.openweathermap.org/data/2.5/weather?q=troyes&units=metric&appid=votrecle",
        method: "GET",
        success: function(data) {
            console.log(data)
            $("#temperature").text(data.main.temp)
        }
    })
})
</script>
</body>
</html>

Changement de ville

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Météo</title>
    <link rel="stylesheets" href="css/bootstrap.min.css">
</head>
<body>
<select id="villes">
    <option>Choisir</option>
    <option value="berlin">Berlin</option>
    <option value="london">Londres</option>
    <option value="troyes">Troyes</option>
    <option value="amsterdam">Amsterdam</option>
</select>


    <h1>Application météo <span id="ville"></span></h1>
<p>Température : <span id="temperature"></span>°C</p>

<script src="js/bootstrap.min.js"></script>
<script src="js/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function(){

    $("#villes").change(function(){
        var ville = $(this).val() //valeur de la ville selectionnée
        $('#ville').text(ville)
        console.log(ville)
        $.ajax({
        url: "https://api.openweathermap.org/data/2.5/weather?q="+ville+"&units=metric&appid=cleApi",
        method: "GET",
        success: function(data) {
            console.log(data)
            $("#temperature").text(data.main.temp)
        }
    })
    })
})
</script>
</body>
</html>

Modifier une image

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <select id="villes">
        <option value="ville1">Ville 1</option>
        <option value="ville2">Ville 2</option>
        <option value="ville3">Ville 3</option>
    </select>


    <!--<img src="image1.jfif" id="img1" class="imageVille">
    <img src="image2.jfif" id="img2" class="imageVille">
    <img src="image3.jfif" id="img3" class="imageVille">-->
    
    <img src="" id="image" >

    <script src="jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function(){
            $('#villes').change(function(){
               // $('.imageVille').hide()

                if ($(this).val() == "ville1") {
                    $('#image').attr('src', 'image1.jfif')
                }
                if ($(this).val() == "ville2") {
                    $('#image').attr('src', 'image2.jfif')
                }
                if ($(this).val() == "ville3") {
                    $('#image').attr('src', 'image3.jfif')
                }


                //masque totes les images
            /*    if ($(this).val() == "ville1") {
                    $('#img1').show()
                }
                if ($(this).val() == "ville2") {
                    $('#img2').show()
                }
                if ($(this).val() == "ville3") {
                    $('#img3').show()
                }*/

            })
        })
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <select id="villes">
        <option value="ville1">Ville 1</option>
        <option value="ville2">Ville 2</option>
        <option value="ville3">Ville 3</option>
    </select>


    <a href="#" class="dropdown" data-id="lien1">lien 1</a>
    <a href="#" class="dropdown"  data-id="lien2">lien 2</a>
    <a href="#" class="dropdown"  data-id="lien3">lien 3</a>



    <!--<img src="image1.jfif" id="img1" class="imageVille">
    <img src="image2.jfif" id="img2" class="imageVille">
    <img src="image3.jfif" id="img3" class="imageVille">-->
    
    <img src="" id="image" >

    <script src="jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function(){

            $('.dropdown').click(function(){
                console.log($(this).data('id'))
            })



            $('#villes').change(function(){
               // $('.imageVille').hide()

                if ($(this).val() == "ville1") {
                    $('#image').attr('src', 'image1.jfif')
                }
                if ($(this).val() == "ville2") {
                    $('#image').attr('src', 'image2.jfif')
                }
                if ($(this).val() == "ville3") {
                    $('#image').attr('src', 'image3.jfif')
                }


                /////
                /// Prévision (avec l'api sur forecast)
                // data.list[0].main.temp => température prévue pour le créneau 0
                // data.list[1].main.temp => témpérature pour le créneau 1

                //masque totes les images
            /*    if ($(this).val() == "ville1") {
                    $('#img1').show()
                }
                if ($(this).val() == "ville2") {
                    $('#img2').show()
                }
                if ($(this).val() == "ville3") {
                    $('#img3').show()
                }*/

            })
        })
    </script>
</body>
</html>

Consignes

  • Au moins 2 pages.

    • Une pour les informations météos actuelles,

    • Une pour les prévisions

  • Possibilité de choisir parmi une liste de ville

  • Affichage soignée (couleur, mise en page, interactions éventuelles, lisibilité)

Critères de notation

  • Qualité visuelle des pages

  • Fonctionnement des pages (possibilité de changer de ville)

  • Lisibilité des informations, mise en page

  • Variété et complexité des informations

Last updated