Cognos Analytics

Cognos Analytics

Connect, learn, and share with thousands of IBM Cognos Analytics users! 

 View Only
  • 1.  Default prior month is not selecting in prompt screen using java script

    Posted Thu January 13, 2022 01:27 AM
      |   view attached
    Hi Guys,
    I was facing an issue with javascript in the prompt screen,
    Req: In the prompt screen, the month has to be selected as a prior month (previous month) based on today date or month 
    i.e this month is January so prompt default should select December.

    I was using this javascript in the prompt screen using HTML Source

    <script>
    var RNA={};
    RNA.setDefault=function(promptName){
    var oCR = cognos.Report.getReport("_THIS_");
    var pr = oCR.prompt.getControlByName(promptName);

    var monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" ];
    var today=new Date();
    var currentMonthNumber=today.getMonth();
    var currentMonthName=monthNames[today.getMonth()];
    var vals={'use': currentMonthNumber, 'display': currentMonthName };
    pr.setValues([vals]);
    }
    RNA.setDefault("CurrentPeriodMonth");
    </script>


    "CurrentPeriodMonth" is a value prompt miscellaneous name.

    before moving to the new year this script was working fine, script code is able to select the prior month but now it's not working.
    Is this code is correct or any alternation is needed,
    please, someone, help me with this code change. its prod issue needed to resolve ASAP.



    Thanks in advance.

    ------------------------------
    P S
    ------------------------------

    #CognosAnalyticswithWatson


  • 2.  RE: Default prior month is not selecting in prompt screen using java script

    Posted Thu January 13, 2022 06:35 AM
    The code you provided will set the prompt use:0 display:January.

    You can have it set the previous month like this:

    <script>
    var RNA={};
    RNA.setDefault=function(promptName){
    var oCR = cognos.Report.getReport("_THIS_");
    var pr = oCR.prompt.getControlByName(promptName);

    var monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" ];
    var today=new Date();
    var currentMonthNumber=today.getMonth();
    var currentMonthName=monthNames[today.getMonth()];

    var prevMonth = new Date(new Date().setMonth(new Date().getMonth()-1));
    var prevMonthNumber=prevMonth.getMonth();
    var prevMonthName=monthNames[prevMonthNumber];
    var vals={'use': prevMonthNumber, 'display': prevMonthName };

    pr.setValues([vals]);

    }
    RNA.setDefault("CurrentPeriodMonth");
    </script>

    Can you paste in the results of the query feeding the Month prompt? The previous script should be selecting January, so there might be something wrong there.

    ------------------------------
    Paul Mendelson
    ------------------------------



  • 3.  RE: Default prior month is not selecting in prompt screen using java script

    Posted Thu January 13, 2022 06:56 AM
    Hey Paul,
    Thanks for the solution,
    I think the monthly index starts from 0 to 11(0 is January, 11 is December)
    I pasted your code in HTML, now it's selecting the month as November
    but the actual req is to select december as the default month,


    removed -1, but it's not working can you please look into it.

    ------------------------------
    P S
    ------------------------------



  • 4.  RE: Default prior month is not selecting in prompt screen using java script

    Posted Thu January 13, 2022 07:32 AM
    Hey Paul,

    this code worked for me 
    <script>
    var RNA={};
    RNA.setDefault=function(promptName){
    var oCR = cognos.Report.getReport("_THIS_");
    var pr = oCR.prompt.getControlByName(promptName);

    var monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" ];
    var today=new Date();
    var currentMonthNumber=today.getMonth();
    var currentMonthName=monthNames[today.getMonth()];

    var prevMonth = new Date(new Date().setMonth(new Date().getMonth()-1));
    var prevMonthNumber=prevMonth.getMonth()+1;
    var prevMonthName=monthNames[prevMonthNumber];
    var vals={'use': prevMonthNumber, 'display': prevMonthName };

    pr.setValues([vals]);
    }
    RNA.setDefault("CurrentPeriodMonth");
    </script>

    "var prevMonthNumber=prevMonth.getMonth()+1; "
    adding +1 for preMonthNumber selecting the prompt default to december.

    I think this code is correct and does not make any problem for future months 
    please give your comments on this.

    Thanks

    ------------------------------
    P S
    ------------------------------



  • 5.  RE: Default prior month is not selecting in prompt screen using java script

    Posted Thu January 13, 2022 07:35 AM
    I would change it to 

    var prevMonth = new Date(new Date().setMonth(new Date().getMonth()-1));
    var prevMonthNumber=prevMonth.getMonth();
    var prevMonthName=monthNames[prevMonthNumber];
    var vals={'use': prevMonthNumber+1, 'display': prevMonthName };

    In JS arrays are 0 index. So January is 0, Feb is 1 and so on. Putting the +1 in prevMonthNumber will mess up the call to the monthNames array.

    ------------------------------
    Paul Mendelson
    ------------------------------



  • 6.  RE: Default prior month is not selecting in prompt screen using java script

    Posted Thu January 13, 2022 08:25 AM
    Thanks, Paul Mendelson

    ------------------------------
    P S
    ------------------------------



  • 7.  RE: Default prior month is not selecting in prompt screen using java script

    Posted Fri January 14, 2022 05:53 AM
    Hi,

    If you want to have previous month, you need to update the year in your script, too.

    Current date is 2022/01, previous month should be 2021/12.

    I guess it would be useful to add :
    var prevYear = prevMonth.getYear()+1900;

    Best regards,

    ------------------------------
    Patrick Neveu
    Positive Thinking Company
    ------------------------------



  • 8.  RE: Default prior month is not selecting in prompt screen using java script

    Posted Fri January 14, 2022 11:31 AM
    Hi Patrick,

    Thank you very much for the year thing,
    for the report I have 2 reqs:

    1. Is to select prior(11/2021) on the prior month(12/2021) based on the current month(01/2022)
    2. Is to select prior month(12/2021) based on current month(01/2022)
    Actually, I need to consider the year also as per the above code

    Req1: To select Month
    JS Script prior on prior month 
    Eg:11(November) current month :01(january)

    <script>
    var RNA={};
    RNA.setDefault=function(promptName){
    var oCR = cognos.Report.getReport("_THIS_");
    var pr = oCR.prompt.getControlByName(promptName);

    var monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" ];
    var today=new Date();
    var currentMonthNumber=today.getMonth();
    var currentMonthName=monthNames[today.getMonth()];

    var prevMonth = new Date(new Date().setMonth(new Date().getMonth()-1));
    var prevMonthNumber=prevMonth.getMonth();
    var prevMonthName=monthNames[prevMonthNumber];
    var vals={'use': prevMonthNumber, 'display': prevMonthName };

    pr.setValues([vals]);
    }
    RNA.setDefault("CPeriod1Month");
    </script>

    To Select Year 2021 based on month script as follows:

    <script>
    var RNA={};
    RNA.setDefault=function(promptName){
    var oCR = cognos.Report.getReport("_THIS_");
    var pr = oCR.prompt.getControlByName(promptName);

    var today=new Date();
    var currentYear=today.getFullYear();
    var prevMonth = new Date(new Date().setMonth(new Date().getMonth()-1));
    var prevYear = prevMonth.getYear()+1900;

    var vals={'use': prevYear };
    pr.setValues([vals]);
    }
    RNA.setDefault("CPeriod1Year");
    </script>

    this is working fine and able to select month as 11(november) and year as 2021.

    but for Req 2 I' am unable to select year 
    Script as follows 
    Prior month:12(December)
    <script>
    var RNA={};
    RNA.setDefault=function(promptName){
    var oCR = cognos.Report.getReport("_THIS_");
    var pr = oCR.prompt.getControlByName(promptName);

    var monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" ];
    var today=new Date();
    var currentMonthNumber=today.getMonth();
    var currentMonthName=monthNames[today.getMonth()];

    var prevMonth = new Date(new Date().setMonth(new Date().getMonth()-1));
    var prevMonthNumber=prevMonth.getMonth();
    var prevMonthName=monthNames[prevMonthNumber];
    var vals={'use': prevMonthNumber+1, 'display': prevMonthName };


    pr.setValues([vals]);
    }
    RNA.setDefault("CurrentPeriodMonth");
    </script>
    This script also able to select prior month 

    but actual issue with year 
    <script>
    var RNA={};
    RNA.setDefault=function(promptName){
    var oCR = cognos.Report.getReport("_THIS_");
    var pr = oCR.prompt.getControlByName(promptName);

    var today=new Date();
    var currentYear=today.getFullYear();
    var prevMonth = new Date(new Date().setMonth(new Date().getMonth()-1));
    var prevMonthNumber=prevMonth.getMonth()+1;
    var prevYear = prevMonthNumber.getYear()+1900;

    var vals={'use': prevYear };
    pr.setValues([vals]);
    }
    RNA.setDefault("CurrentPeriodYear");
    </script>

    Not selecting the year based on month, needed your comments.

    Thanks!!

    ------------------------------
    P S
    ------------------------------