Cognos 11.0.11 - подсказка отображения / скрытия даты в Javascript - PullRequest
0 голосов
/ 07 июня 2018

Некоторое время назад я получил нижеприведенный javascript с веб-сайта, который показывает и скрывает запрос даты, основанный на выборе из значения переключателя.

<script type="text/javascript">
var inputs = document.getElementsByTagName("input");
var list_box = new Array();

/****Identify Radio Buttons and load them into an array****/
var radio_buttons = new Array();
j=0;

for(i=0;i<inputs.length;i++)
{
if(inputs[i].type=='radio')
  {
    radio_buttons[j] = inputs[i];
    j++;
  }   
}

/****Set the onclick event of each radio button option to trigger our custom function****/
radio_buttons[0].setAttribute("onclick",function(){ToggleDate();});
radio_buttons[1].setAttribute("onclick",function(){ToggleDate();});
radio_buttons[2].setAttribute("onclick",function(){ToggleDate();});


/****Create a handle for date prompt****/
var prompt = document.getElementById("date_prompts").childNodes[0];

function ToggleDate()
{
if(radio_buttons[0].checked)
  {
  /**** First options (in our case "Custom") is selected.**** 
   **** Date Prompt will be Shown or Enabled.            ****/

  document.getElementById("date_prompts").style.display = '';  //show
  // prompt.disabled = '';   //enable

  canSubmitPrompt();
  }
else
  {
  /**** Second options (in our case "Yesterday") is selected.****
   **** Date Prompt will be Hidden or Disabled.              ****/

  document.getElementById("date_prompts").style.display = 'none';   //hide
  //prompt.disabled = 'true';   //disable

  canSubmitPrompt();
  }
}
</script> 

Пока мы использовали Cognos 10.2.2этот код работал нормально (в сочетании с парой других html-элементов, охватывающих приглашение даты).Сейчас мы находимся в процессе обновления до Cognos 11.0.11, пока я тестировал отчеты в новой среде, я обнаружил, что этот код больше не работает, и приглашение даты отображается независимо от того, какие варианты выбраны с помощьюпереключатели.

Пожалуйста, кто-нибудь может дать мне несколько советов относительно того, что может происходить здесь или, что еще лучше, подскажите мне, как решить проблему.

При создании нового отчета в Cognos 11и при индивидуальном добавлении элементов появляется следующее сообщение об ошибке ...

Вывод отчета в формате HTML неправильно сформирован.Если в вашем отчете используются элементы «HTML Item», убедитесь, что они приводят к правильному HTML.

Причина: имя содержит недопустимый символ.

URL: Строка: 274 Символ: 24 Источник:для (я = 0; я

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Это можно сделать с помощью переменной рендеринга.

  1. Установите для свойства Выполнить с полной интерактивностью отчета значение Нет .
  2. Создайте страницу приглашения и добавьте подсказку значения и подсказку даты.
  3. Установите для свойства Выбрать UI значения подсказки значение Группа переключателей .
  4. Установите для свойства Автоматическая отправка приглашения на значение Да .
  5. Добавьте значения Показать запрос даты и Скрыть приглашение даты в Статический выбор свойства приглашения значения.
  6. Создайте строковую переменную (Queries | Condition explorer), которая использует параметр, связанный с приглашением значения.
  7. Задайте для свойства Render variable приглашения даты переменную, созданную на предыдущем шаге.Отмените выбор Скрыть запрос даты .

Чтобы функция автоматической отправки не запускала отчет, вам, вероятно, потребуется создать некоторые пользовательские функции вместо Готово *Кнопка 1042 *.См. Пример кода в спецификации отчета ниже.(Свойство Выполнить с полной интерактивностью , по-видимому, не сохраняется в спецификации отчета. Вам необходимо установить это вручную.)

Этот конкретный пример работает в 10.2.1 илив 11.0.7 в режиме совместимости (Запустить с полной интерактивностью = Нет).Я еще не работал, чтобы сделать это правильно в 11.0.4+ с использованием RequireJS.

<report xmlns="http://developer.cognos.com/schemas/report/14.1/" useStyleVersion="11.4" expressionLocale="en-us">
    <drillBehavior/>
    <layouts>
        <layout>
            <reportPages>
                <page name="Page1">
                    <style>
                        <defaultStyles>
                            <defaultStyle refStyle="pg"/>
                        </defaultStyles>
                    </style>
                    <pageBody>
                        <style>
                            <defaultStyles>
                                <defaultStyle refStyle="pb"/>
                            </defaultStyles>
                        </style>
                        <contents/>
                    </pageBody>
                </page>
            </reportPages>
            <promptPages>
                <page name="Prompt page1">
                    <pageHeader>
                        <contents>
                            <block>
                                <contents>
                                    <textItem>
                                        <dataSource>
                                            <staticValue>Prompt Page</staticValue>
                                        </dataSource>
                                        <style>
                                            <defaultStyles>
                                                <defaultStyle refStyle="tt"/>
                                            </defaultStyles>
                                        </style>
                                    </textItem>
                                </contents>
                                <style>
                                    <defaultStyles>
                                        <defaultStyle refStyle="ta"/>
                                    </defaultStyles>
                                </style>
                            </block>
                        </contents>
                        <style>
                            <defaultStyles>
                                <defaultStyle refStyle="hp"/>
                            </defaultStyles>
                        </style>
                    </pageHeader>
                    <pageBody>
                        <contents>
                            <table>
                                <style>
                                    <defaultStyles>
                                        <defaultStyle refStyle="tb"/>
                                    </defaultStyles>
                                    <CSS value="border-collapse:collapse;width:100%"/>
                                </style>
                                <tableRows>
                                    <tableRow>
                                        <tableCells>
                                            <tableCell>
                                                <contents>
                                                    <selectValue selectValueUI="radioGroup" autoSubmit="true" parameter="ShowHide">
                                                        <selectOptions>
                                                            <selectOption useValue="Show Date Prompt">
                                                                <displayValue>Show Date Prompt</displayValue>
                                                            </selectOption>
                                                            <selectOption useValue="Hide Date Prompt">
                                                                <displayValue>Hide Date Prompt</displayValue>
                                                            </selectOption>
                                                        </selectOptions>
                                                    </selectValue>
                                                    <selectValue parameter="Parameter2" cascadeOn="ShowHide" required="false">
                                                        <style>
                                                            <CSS value="visibility:hidden"/>
                                                        </style>
                                                    </selectValue>
                                                </contents>
                                                <style>
                                                    <CSS value="text-align:left;vertical-align:top"/>
                                                </style>
                                            </tableCell>
                                            <tableCell>
                                                <contents>
                                                    <selectDate parameter="Date">
                                                        <conditionalRender refVariable="String1">
                                                            <renderFor refVariableValue="Show Date Prompt"/>
                                                        </conditionalRender>
                                                    </selectDate>
                                                </contents>
                                                <style>
                                                    <CSS value="text-align:left;vertical-align:top"/>
                                                </style>
                                            </tableCell>
                                        </tableCells>
                                    </tableRow>
                                </tableRows>
                            </table>
                        </contents>
                        <style>
                            <defaultStyles>
                                <defaultStyle refStyle="py"/>
                            </defaultStyles>
                        </style>
                    </pageBody>
                    <pageFooter>
                        <contents>
                            <promptButton type="cancel">
                                <contents/>
                                <style>
                                    <defaultStyles>
                                        <defaultStyle refStyle="bp"/>
                                    </defaultStyles>
                                </style>
                            </promptButton>
                            <promptButton type="finish">
                                <contents/>
                                <style>
                                    <defaultStyles>
                                        <defaultStyle refStyle="bp"/>
                                    </defaultStyles>
                                </style>
                            </promptButton>
                        </contents>
                        <style>
                            <defaultStyles>
                                <defaultStyle refStyle="fp"/>
                            </defaultStyles>
                        </style>
                    </pageFooter>
                    <style>
                        <defaultStyles>
                            <defaultStyle refStyle="pp"/>
                        </defaultStyles>
                    </style>
                </page>
            </promptPages>
        </layout>
    </layouts>
    <XMLAttributes>
        <XMLAttribute output="no" name="RS_CreateExtendedDataItems" value="true"/>
        <XMLAttribute output="no" name="RS_modelModificationTime" value="2013-01-08T15:30:33.117Z"/>
        <XMLAttribute output="no" name="listSeparator" value=","/>
    </XMLAttributes>
    <modelPath>/content/folder[@name=&apos;Samples&apos;]/folder[@name=&apos;Models&apos;]/package[@name=&apos;GO Sales (query)&apos;]/model[@name=&apos;model&apos;]</modelPath>
    <reportVariables>
        <reportVariable type="string" name="String1">
            <reportExpression>ParamDisplayValue(&apos;ShowHide&apos;)</reportExpression>
            <variableValues>
                <variableValue value="Show Date Prompt"/>
                <variableValue value="Hide Date Prompt"/>
            </variableValues>
        </reportVariable>
    </reportVariables>
    <reportName>ShowHide</reportName>
</report>
0 голосов
/ 07 июня 2018

Cognos выпустила JavaScript API с Cognos 10.2, который значительно упрощает то, что вы здесь делаете.Кроме того, он гарантированно поддерживается между версиями.

Вот те же функции, написанные для Cognos JavaScript API:

Допущения:

  • Существует одна подсказка Cognos Select, сконфигурированная как группа переключателей, которая имеет свойство Name 'radio_buttons', предоставляющее выбор из трех отдельных значений (1, 2 и 3)
  • Существует подсказка даты, заключенная вspan с атрибутом id 'date_prompts', который должен отображаться при выборе первой радиокнопки, но не показываться, если выбраны два других

Код

var report = cognos.Report.getReport('_THIS_'); //Get report reference
var radioprompt = report.prompt.getControlByName('radio_buttons'); //Get prompt reference
var datespan = document.getElementById('date_prompts'); //Get span to hide/unhide

radioprompt.setValidator(validateRadio); //Assign a validation function

function validateRadio(values) {
     var result = true;
     if (values && values.length > 0) { //Make sure prompt has value
          if (values[0].use == '1') {  //Check if first radio button selected
               datespan.style.display = ''; //Show
          } else {
               datespan.style.display = 'none'; //Hide
          }
     }    
     return result; //Return result to Cognos. Always true in this case.
}

Более подробную информацию о API Cognos JavaScript можно найти здесь: Документация по API Cognos 11 JavaScript

...