Remplacement année par variable

Fermé
Luca - Modifié le 15 avril 2022 à 13:58
 Luca - 15 mars 2022 à 15:37
Bonjour,

Pour commencer je n'ai aucune formation en programmation.

Je dois reprendre des lignes de code que j'ai essayé d'adapter mais j'ai une erreur.

Ce qui marche :
function getChart(chartId) {
    var deferred = jQuery.Deferred();
    spjs.charts.getItemsREST({
        "listId": "{J'ai masqué l'id}",
        "listBaseUrl": "/monurl",
        "select": ["ID","Moiss","Annee","HabCum"],
        "expand": [],
        "filter": ""
    }).done(function (data) {
        var o = {};
        // Build object
        jQuery.each(data, function (i, item) {
            if (o[item.Moiss] === undefined) {
                o[item.Moiss] = { "month": item.Moiss, "2021": null, "2022": null };
            }
            o[item.Moiss][item.Annee] = item.HabCum;
        });
        // Split out in array
        var arr = [];
        jQuery.each(o, function (i, obj) {
            if (obj.hasOwnProperty("month")) {
                arr.push(obj);
            }
        });
        // Order by month
        arr.sort(function (a, b) {
            if (a.month < b.month) {
                return -1;
            }
            if (a.month < b.month) {
                return 1;
            }
            return 0
        });
        deferred.resolve(arr);
    }).fail(function (err) {
        // console.log(err);
    });
    return deferred.promise();
}


Mon idée est d'automatiser le 2021 et le 2022 pour ne pas avoir à le changer chaque année
Mon code (qui ne marche pas) :
function getChartCustomDatasource(chartId) {
    var AnActuel = new Date().getFullYear();
    var AnDern = AnActuel-1;
    var deferred = jQuery.Deferred();
    spjs.charts.getItemsREST({
        "listId": "{J'ai masqué l'id}",
        "listBaseUrl": "/monurl",
        "select": ["ID","Moiss","Annee","HabCum"],
        "expand": [],
        "filter": ""
    }).done(function (data) {
        var o = {};
        // Build object
        jQuery.each(data, function (i, item) {
            if (o[item.Moiss] === undefined) {
                o[item.Moiss] = { "month": item.Moiss, $("#AnDern").text(""): null, $("#AnActuel").text(""): null };
            }
            o[item.Moiss][item.Annee] = item.HabCum;
        });
        // Split out in array
        var arr = [];
        jQuery.each(o, function (i, obj) {
            if (obj.hasOwnProperty("month")) {
                arr.push(obj);
            }
        });
        // Order by month
        arr.sort(function (a, b) {
            if (a.month < b.month) {
                return -1;
            }
            if (a.month < b.month) {
                return 1;
            }
            return 0
        });
        deferred.resolve(arr);
    }).fail(function (err) {
        // console.log(err);
    });
    return deferred.promise();
}

J'ai fait pas mal d'essai pour remplacer l'écriture de $("#AnDern").text("") et ("#AnActuel").text("") qui pose problème mais je ne trouve pas la solution. Je pense qu'il faut ramener la valeur et non la variable mais je ne trouve pas comment.
Encore une fois je n'ai aucune formation donc j'apprends sur le tas. Merci pour votre aide (et vos explications).

4 réponses

choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
15 mars 2022 à 15:07
Bonjour ...
VBA ? Visual Basic, autre???
Ce serait bien de donner le langage en objet
0
Bonjour,
Javascript dont Jquery je pense.
0
Salut,
quelle erreur avez vous? L'indication d'une erreur est une information importante ...qui permet de la corriger.

Plus que cela votre programme ne semble pas adapté à ce que vous voulez faire.
Comme vous pouvez voir dans une des lignes de commentaires il est marqué:
// Order by month
Ce qui indique un classement par mois donc difficilement compatible sur plusieurs années.

"Pour commencer je n'ai aucune formation en programmation. "
Une seule solution alors vous former, AKA apprendre le langage.

Vous pouvez commencer par apprendre les bases du langage utilisé( ici JavaScript) et les formations en autodidacte gratuites sur le web ne manquent pas.
Ensuite vous pouvez reprendre chaque bloc de code pour le comprendre.
Le mieux serait de se passer de JQuery car c'est une application de JavaScript(une bibliothèque de fonctions et un contexte d’exécution particulier utilisant l'objet JQuery) et n'est
1) pas propice à l'apprentissage des bases essentielles
2) à tendance à disparaître car souvent son utilité est discutable et implique le chargement du fichier JQuery(donc ralentit l'ensemble du chargement du programme).

Autre chose : votre contexte.
Plus que d'écrire des lignes de de code un programme doit être fait pour un but précis, des fonctionnalités et aussi son contexte d'utilisation.
Cela vous ne le renseignez pas et c'est pourtant ce qui va déterminer le reste(comme l'écriture d'un code).
Le fait que vous utilisiez une application REST semble indiquer que ce n'est peut-être pas le contexte unique de page web ici(JavaScript étant principalement employé dans ce contexte par sa faculté à manipuler les éléments de la page et pouvoir ajouter de la programmation/interaction avec l'affichage et les données qui peuvent être nécessaires et fournie par et/ou à l'utilisateur) ou alors avec un FRAMEWORK bien précis et qui nécessitera d'apprendre à utiliser ce framework.
Un framework(cadre de travail) est un outil de développement ayant ses propres particularités(syntaxe et façon de développer dans le cadre définit).


Une fois que vous avez les bases vous avez plusieurs choix:
écrire vous même ce que vous voulez en partant de zéro(ce qui est parfois préférable) ou comprendre chaque partie du programme pour le modifier.
Pour ce dernier cas vous pouvez vous référer à la doc du langage et du framework utilisé(s'il y en a un).

Mais effectivement sans comprendre ce que vous faites et sans avoir de notions de programmation(et/ou du ou des langages utilisés) vous n'arriverez à rien.


Pour vous aider à aller plus loin une fois que vous aurez acquis des bases:

https://www.astera.com/fr/type/Blog/reste-api-d%C3%A9finition/

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Statements/return
0
Pour l'erreur, le graphique ne se charge pas avec mes ajouts au code, alors qu'il se charge si je met "2021" et "2022".
0
Bonjour,
Merci pour votre retour. La programmation n'est pas mon métier et j'essaye de m'adapter quand nécessaire.
Le 1er code marche très bien mais il m'oblige à le modifier toutes les années. Le but de ce code est de réunir des données pour un graphique qui va utiliser le google chart api (dans sharepoint).
Ce que je cherche à faire est d'automatiser les années avec des variables "année en cours" et "année-1".
0