123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411 |
- // Licensed Materials - Property of IBM
- //
- // IBM Cognos Products: pps
- //
- // (C) Copyright IBM Corp. 2005, 2017
- //
- // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- // This forms the javascript functions used for the Find pane of
- // PowerPlay Studio.
- // The functions handle any minor browser differences.
- var gFindResults;
- var selectedControlIdx = -1;
- var displayLimit = 5;
- var currentPosition = 0;
- var rowsDisplayed = 0;
- var blockInvalidate = false;
- var navprev = "";
- var navnext = "";
- function invalidateResults() {
- if (document.searchForm.searchTarget.value == "R" && !blockInvalidate)
- {
- submitSearch();
- poll();
- }
- }
- function init() {
- topparent.openActionPane();
- ContextMenu.initialize(true,false);
- topparent.getXtabFrame().fh.FIND.value = "1";
- topparent.ResultUnload();
- changeTarget(document.searchForm.searchTarget.value);
- }
- function displayActions() {
- var actions = document.getElementById("navigationDisplayBottom");
- var buttons = "";
- actions.style.visibility = "visible";
- if (gFindResults) {
- if (document.searchForm.searchTarget.value == "R") { //find in report
- buttons += '<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td><img src="../ppwb/Graphics/space.gif" height="7"/></td></tr><tr>';
- buttons += '<td width="33%" align="left"><A align="left" class="FindResultsLink" onmouseover="this.className=\'FindResultsLinkOver\';" onmouseout="this.className=\'FindResultsLink\';" name="goToLink" onclick="GoToCategory();">' + CEncodingUtil.HtmlEncode(strCmdGoTo) + '</A> <A id="filterLink" class="FindResultsLink" onmouseover="this.className=\'FindResultsLinkOver\';" onmouseout="this.className=\'FindResultsLink\';" name="filterLink" align="left" onclick="filterOnFindResult();">' + CEncodingUtil.HtmlEncode(strCmdFilter) + '</A></td>';
- buttons += '</tr></table>';
- } else { // find in cube
- buttons += '<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td><img src="../ppwb/Graphics/space.gif" height="7"/></td></tr><tr>';
- buttons += '<td width="33%" align="left"><A class="FindResultsLink" onmouseover="this.className=\'FindResultsLinkOver\';" onmouseout="this.className=\'FindResultsLink\';" name="filterLink" align="left" onclick="filterOnFindResult();">' + CEncodingUtil.HtmlEncode(strCmdFilter) + '</A> <A id="filterLink" class="FindResultsLink" onmouseover="this.className=\'FindResultsLinkOver\';" onmouseout="this.className=\'FindResultsLink\';" name="replaceRowLink" align="left" onclick="replaceRows();">' + CEncodingUtil.HtmlEncode(strCmdRows) + '</A> <A name="replaceColLink" class="FindResultsLink" onmouseover="this.className=\'FindResultsLinkOver\';" onmouseout="this.className=\'FindResultsLink\';" align="left" onclick="replaceColumns();">' + CEncodingUtil.HtmlEncode(strCmdColumns) + '</A></td>';
- buttons += '</tr></table>';
- }
- }
- actions.innerHTML = buttons;
- }
- function displayNavigationLinks(target) {
- navprev = '<td class="FindResultsLink" width="33%"> </td>';
- if (currentPosition > displayLimit) {
-
- var sPrev = CMsgUtil.SubstituteMessage(strCmdPrev, 5);
- sPrev = CEncodingUtil.HtmlEncode(sPrev);
- navprev = '<td width="33%"><a class="FindResultsLink" onmouseover="this.className=\'FindResultsLinkOver\';" onmouseout="this.className=\'FindResultsLink\';" href="javascript:void 0;" onClick="currentPosition -= rowsDisplayed+displayLimit; displayResults();">' + sPrev + '</a></td>';
- }
- navnext = '<td class="FindResultsLink" width="33%"> </td>';
- if (currentPosition < gFindResults.length) {
- var sNext = CMsgUtil.SubstituteMessage(strCmdNext, 5);
- sNext = CEncodingUtil.HtmlEncode(sNext);
- navnext = '<td width="33%" align="right"><a class="FindResultsLink" onmouseover="this.className=\'FindResultsLinkOver\';" onmouseout="this.className=\'FindResultsLink\';" href="javascript:void 0;" onClick="displayResults();">' + sNext + '</a></td>';
- }
- }
- function select(event, control) {
- var name = control.id;
- var idx = name.replace(/\D/g, "");
- unselect();
- if (selectedControlIdx == idx) {
- selectedControlIdx = -1;
- return;
- }
- control.className = "findRowSelected";
- selectedControlIdx = idx;
- var category = gFindResults[selectedControlIdx];
- var link = document.getElementById('filterLink');
- if(category._tempInfo != "")
- {
- link.className = 'FindResultsLinkDisabled';
- link.onclick = '';
- }
- else
- {
- link.className = 'FindResultsLink';
- link.onclick = filterOnFindResult;
- }
- var eventM = new eventManager(event);
- eventM.cancelBubble();
- return false;
- }
- function unselect() {
- if (selectedControlIdx == -1)
- return;
- var control = document.getElementById("FindResult" + selectedControlIdx);
-
- control.className = "findRow";
- }
- function submitSearch() {
- //hide results so actions don't get fired while we're processing a new result set
- var navBottom = document.getElementById("navigationDisplayBottom");
- if (navBottom && navBottom.style.visibility) navBottom.style.visibility = "hidden";
- var resultDisplay = document.getElementById("resultsDisplay");
- if (resultDisplay && resultDisplay.style.visibility) resultDisplay.style.visibility = "hidden";
- disableButton(document.getElementById("findButton"));
- topparent.ResultUnload();
- currentPosition = 0;
- rowsDisplayed = 0;
- var cmd = document.searchForm.searchTarget.value;
- var pattern = document.searchForm.searchPattern.value;
- var restrict = document.searchForm.searchRestriction.value;
- var hf = topparent.getXtabFrame().document.getElementById("fhidden");
- var target = hf.target;
- hf.CNCT.value = 12;
- var appendUrl = 'F' + cmd + ':"' + CEncodingUtil.EncodeStrOperand(pattern) + '"' + '\t' + restrict;
- if (cmd == "C") {
- appendUrl += '\t' + document.getElementById("searchDimension").value;
- } else {
- appendUrl += '\t' + document.getElementById("searchAxis").value;
- }
- hf.CO.value = appendUrl;
- hf.target = findResultFrame.name;
- hf.RA.value = "999";
- hf.submit();
- hf.target = target;
- }
- function poll() {
- if (topparent.isResultStillLoading())
- {
- setTimeout("poll()", 50);
- return;
- }
- gFindResults = findResultFrame.FindResults;
- displayFindResults();
- }
- function filterOnFindResult(){
- if (topparent.isXtabStillLoading())
- {
- setTimeout("filterOnFindResult()", 50);
- return;
- }
- if(gFindResults.length == 1 && selectedControlIdx == -1)
- selectedControlIdx = 0;
- if (isError(selectedControlIdx == -1, errNoSelection))
- return;
- var command = '';
- var category = gFindResults[selectedControlIdx];
- if (document.searchForm.searchTarget.value == "R")
- {
- if(category._tempInfo == "")
- command = 'DG' + ':' + category._axis + category._group + '\t' + category._id + "," + category._dim + ';' + category._code;
- }
- else
- {
- command = 'DC' + ':' + category._id + "," + category._dim + ';' + category._code;
- }
- if (command != '')
- {
- topparent.getXtabFrame().document.fhidden.target = "_self";
- topparent.getXtabFrame().doit(command);
- }
- }
- function GoToCategory(){
- if(gFindResults.length == 1 && selectedControlIdx == -1)
- selectedControlIdx = 0;
- if (isError(selectedControlIdx == -1, errNoSelection))
- return;
- var category = gFindResults[selectedControlIdx];
- var rowPage = 0;
- var colPage = 0;
- var isOnCurrentPage = true;
- var hasPagination = topparent.getXtabFrame().document.fhidden.J && topparent.getXtabFrame().document.fhidden.K;
- if (hasPagination) {
- rowPage = topparent.getXtabFrame().document.fhidden.J.value;
- colPage = topparent.getXtabFrame().document.fhidden.K.value;
- }
-
- if(category._axis == 'R')
- isOnCurrentPage = rowPage == category._pageNo;
- else
- isOnCurrentPage = colPage == category._pageNo;
-
- if (isError(isOnCurrentPage, currSelection))
- return;
- if(category._axis == 'R')
- command = 'PG' + ':' + category._pageNo + '\t' + colPage;
- else if(category._axis == 'C')
- command = 'PG' + ':' + rowPage + '\t' + category._pageNo;
- blockInvalidate = true;
- topparent.getXtabFrame().doit(command);
- blockInvalidate = false;
- }
- function replaceRows(){
- if(gFindResults.length == 1 && selectedControlIdx == -1)
- selectedControlIdx = 0;
- if (isError(selectedControlIdx == -1, errNoSelection))
- return;
- var Results = findResultFrame.FindResults;
- var category = Results[selectedControlIdx];
- var command = 'ER' + ':' + 'R-1' + '\t' + 'D' + category._dim + '\t' + category._id + "," + category._dim + ';' + category._code;
- topparent.getXtabFrame().doit(command);
- }
- function replaceColumns(){
- if(gFindResults.length == 1 && selectedControlIdx == -1)
- selectedControlIdx = 0;
- if (isError(selectedControlIdx == -1, errNoSelection))
- return;
- var Results = findResultFrame.FindResults;
- var category = Results[selectedControlIdx];
- var command = 'ER' + ':' + 'C-1' + '\t' + 'D' + category._dim + '\t' + category._id + "," + category._dim + ';' + category._code;
- topparent.getXtabFrame().doit(command);
- }
- function isError (condition, msg) {
- if (condition)
- writeErrorMessage(msg);
-
- return condition;
- }
- function changeTarget (value) {
- if (value == "R") { //find in report
- document.getElementById("limitLabel").innerHTML = CEncodingUtil.HtmlEncode(strReportAxis);
- document.getElementById("limitElement").innerHTML = document.getElementById("reportAxisHTML").innerHTML;
- } else {
- document.getElementById("limitLabel").innerHTML = CEncodingUtil.HtmlEncode(strDimensionList);
- document.getElementById("limitElement").innerHTML = document.getElementById("DimensionListHTML").innerHTML;
- }
- }
- function clearResults() {
- var results = document.getElementById("searchResults");
- var navUp = document.getElementById("navigationDisplayTop");
- var navDown = document.getElementById("navigationDisplayBottom");
- var sResult = "";
- var sNoResultMsg = strNoResults;
- navUp.innerHTML = "";
- navDown.innerHTML = "";
-
- sResult += '<table cellspacing="0" cellpadding="0" border="0"><tr><td class="FindText">';
- sResult += CEncodingUtil.HtmlEncode(sNoResultMsg) + '</td>';
- sResult += '</tr></table>';
- results.innerHTML = sResult;
- }
- function FindRecord (ppds_id, dim_index, code, label, path, axis, group, tempInfo, pageNo) {
- this._id = ppds_id;
- this._dim = dim_index;
- this._code = code;
- this._label = label;
- this._path = path;
- this._axis = axis;
- this._group = group;
- this._tempInfo = tempInfo;
- this._pageNo = pageNo;
- }
- function renderHTML(record,index) {
- var label = record._label;
- var path = record._path;
- if (path == "") {
- path = " ";
- }
- var pageNo = record._pageNo;
- pageNo++; //pageNo is zero based, so increase it just for display purposes
- var sResult = "";
- sResult += '<tr id="FindResult' + index + '" onclick="select(event, this);" class="findRow"><td onmouseover="return true;"><a class="FindResultCategory">';
- sResult += CEncodingUtil.HtmlEncode(label) + '</a></td><td onmouseover="return true;"><a class="FindResultCategory">';
- sResult += CEncodingUtil.HtmlEncode(path) + ' </a></td>';
-
- sResult += '</tr>';
- return sResult;
- }
- // the results of the find query are written to a separate frame in the following manner...
- // var FindResults = new Array();
- // FindResults[0] = new FindRecord(PPDS_ID, 'Label', 'Report/Cube Path');
- // FindResults[1] = ...
- // only matching results are returned to the pane
- // if no results match the query, the array size will be set to 0.
- function displayFindResults() {
- enableButton(document.getElementById("findButton"));
- displayResults();
- document.getElementById("resultsDisplay").style.visibility = "visible";
- }
- function displayResults() {
- selectedControlIdx = -1;
- var table = document.getElementById("searchResults");
- if (gFindResults) {
- displayTitles(false);
- var sTable = '<table border="0" cellpadding="0" cellspacing="0" width="100%">';
- sTable += '<tr><td><img src="../ppwb/Graphics/space.gif" height="7"/></td></tr>';
- sTable += '<tr class="findHeaderRow"><td width="150"><b>' + CEncodingUtil.HtmlEncode(strResultCat) + '</b></td><td><b>' + CEncodingUtil.HtmlEncode(strResultPath) + '</b></td></tr>';
- sTable += '<tr><table border="0" cellpadding="0" cellspacing="0" class="findTable" width="100%">';
- var startPos = currentPosition;
- var maxPos = Math.min(startPos + displayLimit, gFindResults.length);
- rowsDisplayed = 0;
- for ( ; currentPosition < maxPos; currentPosition++) {
- sTable += renderHTML(gFindResults[currentPosition],currentPosition);
- rowsDisplayed++;
- }
- sTable += "</table></tr>";
- sTable += "</table>";
- table.innerHTML = sTable;
- displayNavigationLinks();
- displayTitles(false);
- displayActions();
- selectedControlIdx = startPos;
- var control = document.getElementById("FindResult" + selectedControlIdx);
- control.className = "findRowSelected";
- } else {
- clearResults();
- }
- }
- function displayTitles(doDefault) {
- var titles = document.getElementById("navigationDisplayTop");
- var contents = "";
-
- var displayStart;
- if (gFindResults || doDefault)
- {
- contents += '<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr width="100%">' + navprev + '<td height="15" class="FindText" align="center" width="40%">' + CEncodingUtil.HtmlEncode(catTitle);
- if (!doDefault)
- {
- if (gFindResults.length > 0)
- {
- if (gFindResults.length > displayLimit) {
- displayStart = displayLimit * parseInt((currentPosition-1)/displayLimit) + 1;
- } else {
- displayStart = 1;
- }
- contents += ' (' + displayStart + '-' + Math.min(displayStart-1 + displayLimit, gFindResults.length) + ' ' + CEncodingUtil.HtmlEncode(strResultOf) + ' ' + gFindResults.length + ')';
- }
- }
- contents += '</td>' + navnext + '</tr></table>';
- }
- titles.innerHTML = contents;
- }
- function writeErrorMessage(msg) {
- displayCommonMessage(msg, MESSAGE_TYPE_INFO, [message_ok_button_text], [function() {removeMessage();}]);
- }
|