12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682 |
- /*
- *+------------------------------------------------------------------------+
- *| Licensed Materials - Property of IBM
- *| BI and PM: prmt
- *| (C) Copyright IBM Corp. 2002, 2020
- *|
- *| US Government Users Restricted Rights - Use, duplication or
- *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- *|
- *+------------------------------------------------------------------------+
- */
- /**
- @fileOverview Managing Prompts.
- @namespace cognos.Prompt
- */
- /**
- @class Prompting Control. Refers to elements in the User Interface used to manipulate values associated to a parameter. There can be one or many controls associated to a parameter.
- */
- cognos.Prompt.Control = new Class({});
- cognos.Prompt.Control.isElementInList = function(elem,list)
- {
- var aElements = list.split(K_PRMT_TREE_CACHE_LIST_SEP);
- var bIsInList = false;
- for (var i = 0; i < aElements.length; i++)
- {
- if (aElements[i] == elem)
- {
- bIsInList = true;
- break;
- }
- }
- return bIsInList;
- };
- /**
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_initialize = function( v_oProps )
- {
- // set the default for the customizable labels
- // C_Choices labels
- this[K_PRMT_LABEL_CHOICES] = (this._type_ == "cognos.Prompt.Control.Search" && !this.isMulti()? PMT_UIM_CHOICE : PMT_UIM_CHOICES);
- this[K_PRMT_LABEL_INSERT] = PMT_UIM_INSERT;
- this[K_PRMT_LABEL_REMOVE] = PMT_UIM_REMOVE;
- this[K_PRMT_LABEL_CHOICES_SELECT_ALL] = PMT_UIM_SELECTALL;
- this[K_PRMT_LABEL_CHOICES_DESELECT_ALL] = PMT_UIM_DESELECTALL;
- this[K_PRMT_LABEL_RESULTS_SELECT_ALL] = PMT_UIM_SELECTALL;
- this[K_PRMT_LABEL_RESULTS_DESELECT_ALL] = PMT_UIM_DESELECTALL;
- //range
- this[K_PRMT_LABEL_RANGE_FROM] = PMT_RNG_FROM;
- this[K_PRMT_LABEL_RANGE_TO] = PMT_RNG_TO;
- // the following attr can be overriden by the subclass
- this[K_PRMT_LABEL_RANGE_LOWEST] = this[K_PRMT_LABEL_RANGE_LOWEST] ? this[K_PRMT_LABEL_RANGE_LOWEST] : PMT_RNG_LOWEST_VALUE;
- this[K_PRMT_LABEL_RANGE_HIGHEST] = this[K_PRMT_LABEL_RANGE_HIGHEST] ? this[K_PRMT_LABEL_RANGE_HIGHEST] : PMT_RNG_HIGHEST_VALUE;
- // search
- this[K_PRMT_LABEL_SEARCH_KEYWORDS] = PMT_SSM_KEYWORDSLABEL;
- this[K_PRMT_LABEL_SEARCH_INSTRUCTIONS_TEXT] = PMT_SSM_KEYWORDTIP;
- this[K_PRMT_LABEL_SEARCH_BTN_LABEL] = PMT_SSM_SEARCH;
- this[K_PRMT_LABEL_SEARCH_OPTIONS_TEXT] = PMT_SSM_OPTIONS;
- this[K_PRMT_LABEL_SEARCH_RESULTS_TEXT] = PMT_SSM_SEARCHRESULTS;
- // selectValue
- this[K_PRMT_LABEL_DESELECT] = PMT_UIM_DESELECT;
- // interval
- this[K_PRMT_LABEL_INTERVAL_DAYS] = PMT_SIC_DAYS;
- this[K_PRMT_LABEL_INTERVAL_HOURS] = PMT_SIC_HOURS;
- this[K_PRMT_LABEL_INTERVAL_MINUTES] = PMT_SIC_MINUTES;
- this[K_PRMT_LABEL_INTERVAL_SECONDS] = PMT_SIC_SECONDS;
- this[K_PRMT_LABEL_INTERVAL_MILLISECONDS] = PMT_SIC_MILLISECONDS;
- if ( v_oProps )
- {
- Object.f_extend( this, v_oProps );
- }
- this.f_decodeProperty("@parameter");
- this.f_decodeProperty("@name");
- // this.m_oSubmit is the hidden <input> used to submit (POST) prompt values (<selectChoices...>)
- this.m_oSubmit = null;
- this.m_sDivPrefix = "PRMT_";
- this.m_sSkin = (typeof getPromptSkin != K_PRMT_sUNDEFINED ? getPromptSkin() : K_PRMT_sDEFAULTSKIN);
- this.m_elPrompt = null;
- this.m_imgError = null;
- this.m_oChoices = null;
- this.m_fValidator = null;
- this.m_bisValidationON = false;
- this.m_bisGetValuesCall = false;
- this.m_sImgErrorOn = this.m_sSkin + "/prompting/images/error_timed_small.gif";
- this.m_sImgErrorOnRTL = this.m_sSkin + "/prompting/images/error_timed_small_rtl.gif";
- this.m_sImgErrorOff = this.m_sSkin + "/prompting/images/error_timed_small_off.gif";
- if ( !this["@submitType"] )
- {
- this["@submitType"] = K_PRMT_sXML;
- }
- this.m_bValid = false;
- this.m_dicStrings = {
- 'lowest': PMT_RNG_LOWEST_VALUE,
- 'highest': PMT_RNG_HIGHEST_VALUE
- };
- };
- cognos.Prompt.Control.prototype.clearSubmit = function()
- {
- this.m_oSubmit.value = K_PRMT_sEMPTY;
- };
- /**
- Triggers verification routine. Used after modifying a selection for example.
- @private
- @return {boolean} <i>true</i> if verification passed. <i>false</i> otherwise.
- */
- cognos.Prompt.Control.prototype.checkData = function()
- {
- if ( this.m_oRangeControl )
- {
- this.m_oRangeControl.checkData();
- }
- // custom validation through the JS API
- if (this.m_fValidator && (typeof this.m_fValidator == K_PRMT_sFUNCTION) && !this.m_bisValidationON) {
- this.m_bisValidationON = true;
- this.m_bValid = this.m_fValidator(this.getValues());
- this.m_bisValidationON = false;
- }
- var v_bPass = this.m_bValid;
-
- if ( v_bPass )
- {
- this.checkPass();
- }
- else
- {
- this.checkFail();
- }
- if ( this.m_oOwner )
- {
- this.m_oOwner.checkData();
- }
-
- if (v_bPass && (this._type_ != "cognos.Prompt.Control.Search") &&
- (this._type_ != "cognos.Prompt.Control.Time"))
- {
- this.cacheControlValue(this._type_);
- }
-
- return v_bPass;
- };
- /**
- Update UI to show this control as invalid.
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.checkFail = function()
- {
- var v_elWidget = this.f_getErrorWidget();
- if ( v_elWidget )
- {
- PRMTUtils.f_addClass( v_elWidget, "clsTextWidgetParseError" );
- // Date control is made in CDatePickerIE5 CDatePicker_checkDateFail
- if ( !(this._type_ == "cognos.Prompt.Control.Date") ) {
- var v_errorMsg = (this.isEmpty() ? PMT_UIM_MISSING_VALUE : PMT_UIM_INVALID_INPUT );
- var v_oPrompt = this.m_elPrompt;
- var v_sPromptId = this.f_getId();
- var v_sPromptSkin = this.m_sSkin;
- window.setTimeout(function () { PRMTUtils.f_showARIAFail(v_oPrompt, v_sPromptId,v_sPromptSkin, v_errorMsg); },0);
- }
- }
- if ( !this["@hideAdornments"] && this.m_imgError && this.m_imgError.getAttribute("src") != this.m_sImgErrorOn && this.m_imgError.getAttribute("src") != this.m_sImgErrorOnRTL)
- {
- var v_el = (this.m_elRangeContainer ? this.m_elRangeContainer : $( this.f_getId(this.m_sDivPrefix) ));
- var v_sCustomDir = cssParser( this["@style"], "direction", true );
- var v_sFinalDir = ((v_sCustomDir == "ltr" || v_sCustomDir == "rtl") ? v_sCustomDir : PRMT_BidiUtils.lookupDirection(v_el));
- this.m_imgError.setAttribute( "src", ( v_sFinalDir == "rtl" ) ? this.m_sImgErrorOnRTL : this.m_sImgErrorOn);
- }
- this.notify(gFAIL, this);
- };
- /**
- Update UI to show this control as valid.
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.checkPass = function()
- {
- var v_elWidget = this.f_getErrorWidget();
- if ( v_elWidget )
- {
- PRMTUtils.f_removeClass( v_elWidget, "clsTextWidgetParseError" );
- // Date control is made in CDatePickerIE5 CDatePicker_checkDatePass
- if ( !(this._type_ == "cognos.Prompt.Control.Date") ) {
- PRMTUtils.f_showARIAPass(this.m_elPrompt, this.f_getId());
- }
- }
- if ( this.m_oErrorFeedback )
- {
- PRMTUtils.f_removeClass( this.m_oErrorFeedback, this.m_sErrorFeedbackClass ? this.m_sErrorFeedbackClass : "clsFeedbackWidgetParseError" );
- }
- if ( !this["@hideAdornments"] && this.m_imgError && this.m_imgError.getAttribute("src") != this.m_sImgErrorOff )
- {
- this.m_imgError.setAttribute( "src", this.m_sImgErrorOff );
- }
- this.notify(gPASS, this);
- };
- /**
- Update UI to show this control as required.
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.checkRequired = function()
- {
- if ( this.isRequired() )
- {
- if ( this.m_oChoices && this.m_oChoices.m_elRequired )
- {
- if ( this.m_oChoices.F_IsEmpty() ) {
- PRMTUtils.f_addClass( this.m_oChoices.m_elRequired, this.m_sErrorFeedbackClass ? this.m_sErrorFeedbackClass : "clsTextWidgetParseError" );
- }
- else {
- PRMTUtils.f_removeClass( this.m_oChoices.m_elRequired, this.m_sErrorFeedbackClass );
- PRMTUtils.f_removeClass( this.m_oChoices.m_elRequired, "clsTextWidgetParseError" );
- }
- }
- }
- };
- /**
- Set the aria-required tag to an element.
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.setAriaRequired = function(v_inputEl) {
- if (this.isRequired() && v_inputEl) {
- v_inputEl.setAttribute("aria-required", true);
- }
- };
- cognos.Prompt.Control.prototype.getWebContentRoot = function()
- {
- var v_sWebContentRoot = "..";
- var v_oCV = (this.f_getCV ? this.f_getCV() : null);
- if (v_oCV && v_oCV.getWebContentRoot) {
- v_sWebContentRoot = v_oCV.getWebContentRoot();
- }
- return v_sWebContentRoot;
- };
- /**
- [Abstract] This function should be overriden by any sub-classes of cognos.Prompt.Control.
- Return values:<ul>
- <li><b>-1</b> if v_oValue is lower than current value.</li>
- <li><b>0</b> if v_oValue is matching current value.</li>
- <li><b>1</b> if v_oValue is higher than current value.</li></ul>
- @private
- @return {Integer} Always returns 1.
- */
- cognos.Prompt.Control.prototype.f_compare = function( v_oValue )
- {
- PRMTUtils.f_error( "PRMT_0006", "f_compare() not implemented! [" + this._type_ + "]");
- return 1;
- };
- /**
- Kicks off the control UI rendering in the container.
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_draw = function()
- {
- var v_el = $( this.f_getId(this.m_sDivPrefix) );
- if ( !v_el )
- {
- PRMTUtils.f_error( "PRMT_0000", "f_draw():: Can't find " + this.f_getId(this.m_sDivPrefix) );
- return;
- }
- if (PRMTUtils.f_isHighContrast()) {
- v_el.className = v_el.className + " clsPrompt_a11y";
- }
- var v_customVAlign = cssParser( this["@style"], "vertical-align", true );
- if ( v_customVAlign ) {
- v_el.style.verticalAlign = v_customVAlign;
- }
- var v_sCustomDir = cssParser( this["@style"], "direction", true );
- var v_sFinalDir = ((v_sCustomDir == "ltr" || v_sCustomDir == "rtl") ? v_sCustomDir : PRMT_BidiUtils.lookupDirection(v_el));
- if ( v_sFinalDir == "rtl" ) {
- v_el.style.textAlign = "right";
- }
- else {
- v_el.style.textAlign = "left";
- }
- var v_tblLayout = $CE( "table", {
- "border": K_PRMT_DEBUG_TABLEBORDER,
- "cellPadding": 0,
- "cellSpacing": 0,
- "role":K_PRMT_ARIA_ROLE_PRESENTATION,
- "style": (window.ie?"display:inline-table;vertical-align:top;":"") + cssParser( this["@style"], gsCSS_DEFAULT_STYLE )
- });
- if ( cssParser( this["@style"], "width" ) && this.n != "selectValue" )
- {
- v_tblLayout.f_setProperty( "width", "100%" );
- }
- if ( this[K_PRMT_sATTR_DISABLED] )
- {
- v_tblLayout.f_appendClass( K_PRMT_sCLS_DISABLED );
- }
- var v_tbdLayout = $CE( "tbody", {}, v_tblLayout );
- var v_trLayout = $CE( "tr", {}, v_tbdLayout );
- this.f_drawLayout( v_trLayout );
- var v_sCSSFloat = cssParser( this["@style"], "float", true );
- if ( v_sCSSFloat )
- {
- v_el.style.styleFloat = v_sCSSFloat; //IE
- v_el.style.cssFloat = v_sCSSFloat; // Firefox
- }
- var v_sHTML = this.f_drawParameterValueHolder() + v_tblLayout.f_getHTML();
- v_el.innerHTML = ( v_sHTML );
- if ( !this.m_oSubmit )
- {
- this.f_setFormSubmit();
- }
- if ( this.m_elPrompt && this.disabled )
- {
- this.m_elPrompt.f_setProperty( "disabled", "disabled" );
- }
- this.f_drawCompleted();
- };
- /**
- Renders the adornments for errors and required.
- @private
- @param {HTMLelement} v_el Container for this control.
- @param {boolean} [v_bSkipRequired] Skips rendering of the required flag. Used when controls are set as children of another control (like in ranges). The parent control will handle the 'Required' UI.
- @return {C_PromptElement}
- */
- cognos.Prompt.Control.prototype.f_drawAdornments = function( v_el, v_bSkipRequired )
- {
- var v_td0 = $CE( "td", {"vAlign": "top", "width": "10px"}, v_el );
- if ( this["@hideAdornments"] )
- {
- // This function shouldn't be called when @hideAdornments is set to true, but to preserve some
- // layout formatting (like in ranges), we are using blank image as spacers.
- var v_img = $CE( "img", {
- "src": this.m_sSkin + "/prompting/images/spacer.gif",
- "height": 10,
- "width": 10,
- "border": 0
- }, v_td0);
- if ( !this.m_bIsAComponent )
- {
- // class clsErrorRequired adds padding, which we don't want when the control is a component of an other control.
- // (ie. Time in a DateTime, text box in a range control...)
- v_img.f_setProperty( "class", "clsErrorRequired" );
- }
- }
- else
- {
- var v_tblReq = $CE( "table", {"border": K_PRMT_DEBUG_TABLEBORDER, "cellPadding":0, "cellSpacing":0, "width":10, "height":20, "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_td0 );
- var v_tbdReq = $CE( "tbody", {}, v_tblReq );
- if ( this.isRequired() && !v_bSkipRequired )
- {
- var v_trReq = $CE( "tr", {}, v_tbdReq);
- var v_tdReq = $CE( "td", {"vAlign":"top"}, v_trReq);
- var v_imgReq = $CE( "img", {
- "src": this.m_sSkin + "/prompting/images/icon_required.gif",
- "class": "clsErrorRequired",
- "vAlign": "top",
- "height": 10,
- "width": 10,
- "border": 0,
- "alt": ""
- }, v_tdReq);
- }
- var v_trError = $CE( "tr", {}, v_tbdReq );
- var v_tdError = $CE( "td", {"vAlign":"top"}, v_trError );
- $CE( "img", {
- "id": this.f_getId( K_PRMT_sIMG_ERROR_PREFIX ),
- "src": this.m_sSkin + "/prompting/images/error_timed_small_off.gif",
- "class": "clsErrorRequired",
- "vAlign": "top",
- "height": 10,
- "width": 10,
- "border": 0,
- "alt": ""
- }, v_tdError);
- }
- return v_td0;
- };
- /**
- [Abstract] This function should be overriden by any sub-classes of cognos.Prompt.Control.
- @private
- @param {C_PromptElement} v_el Container.
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_drawInput = function( v_el )
- {
- alert( "cognos.Prompt.Control::f_drawInput" );
- };
- /**
- Renders the layout of the control: position lists, adornments and control inputs.
- @private
- @param {C_PromptElement} v_trLayout Container for this control.
- @return {C_PromptElement}
- */
- cognos.Prompt.Control.prototype.f_drawLayout = function( v_trLayout )
- {
- var v_oPrompt = null;
- if ( this.isMulti() )
- {
- var v_td1 = $CE( "td", {"vAlign":"top", "class": "clsControlLabel pc"}, v_trLayout );
- if ( !this.f_isRange() && !this.m_bHasLabel )
- {
- v_td1.f_appendChild( " <br>" );
- if ( this["@showCondition"])
- {
- // Add a empty (invisible) select, to fix alignment.
- var v_sel = $CE( "select", {"style":"margin-bottom:5px;visibility:hidden;"}, v_td1 );
- var v_opt = $CE( "option", {"value":"null"}, v_sel);
- v_opt.f_appendText( "x" );
- }
- }
- var v_tbl = $CE( "table", {"border": K_PRMT_DEBUG_TABLEBORDER, "cellPadding":0, "cellSpacing":0}, v_td1 );
- var v_tbd = $CE( "tbody", {}, v_tbl );
- var v_tr = $CE( "tr", {}, v_tbd );
- if ( !(this["@hideAdornments"] || this.m_bSkipAdornments) )
- {
- this.f_drawAdornments( v_tr, true );
- }
- var v_td = $CE( "td", {}, v_tr );
- if ( cssParser( this["@style"], "width" ) )
- {
- v_td1.f_setProperty( "width", "100%" );
- v_tbl.f_setProperty( "width", "100%" );
- v_td.f_setProperty( "width", "100%" );
- }
- v_oPrompt = this.f_drawInput( v_td );
- this.setAriaRequired();
- this.m_oChoices = new C_Choices( this );
- var v_aMO = this.f_getCV().multipleObserverArray;
- if (v_aMO) {
- v_aMO.push( this.m_oChoices );
- }
- this.m_oChoices.F_Draw( v_trLayout );
- }
- else
- {
- if ( !(this["@hideAdornments"] || this.m_bSkipAdornments) )
- {
- this.f_drawAdornments( v_trLayout );
- }
- v_oPrompt = this.f_drawInput( $CE( "td", {}, v_trLayout ) );
- }
- this.m_elPrompt = v_oPrompt;
- return (v_oPrompt);
- };
- /**
- [Abstract] This function should be overriden by any sub-classes of cognos.Prompt.Control.
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_getPV = function()
- {
- PRMTUtils.f_error( "PRMT_0004", "f_getPV() not implemented! [" + this._type_ + "]");
- };
- /**
- Return a localized string.
- @private
- @param {String} v_sKey Key for the localized string.
- @return {String} Returns the value associated with the key. If no value, return the key.
- */
- cognos.Prompt.Control.prototype.f_getString = function( v_sKey )
- {
- var v_s = this.m_dicStrings[v_sKey];
- if ( typeof v_s == K_PRMT_sUNDEFINED )
- {
- v_s = v_sKey;
- }
- return v_s;
- };
- /**
- Returns the last validity state. It doesn't check the data first. Call checkData() before if required.
- @private
- @return {boolean}
- */
- cognos.Prompt.Control.prototype.getValid = function()
- {
- return ( this.m_oChoices ? this.m_oChoices.f_getValid() : this.m_bValid );
- };
- /**
- Return the first element matching the tag name in the control.
- @private
- @param {String} v_sTag Tag name.
- @return {HTMLelement[]} Null if not found.
- */
- cognos.Prompt.Control.prototype.f_getChildByTagName = function( v_sTag )
- {
- var v_oPrompt = this;
- var v_oChild = null;
- if ( v_oPrompt.c && v_oPrompt.c.length )
- {
- for ( var v_idx = 0; v_idx < v_oPrompt.c.length; v_idx++ )
- {
- if ( v_oPrompt.c[ v_idx ].n == v_sTag )
- {
- v_oChild = v_oPrompt.c[ v_idx ];
- if ( !(v_oChild && v_oChild.c && v_oChild.c.length > 0) )
- {
- // clear v_oChild, <selectChoices> is empty
- v_oChild = null;
- }
- // Stop after the first find, we should have only one node called 'selectChoices'.
- break;
- }
- }
- }
- return v_oChild;
- };
- /**
- Return the <selectChoices> node.
- @private
- @return {HTMLelement} Null if not found.
- */
- cognos.Prompt.Control.prototype.getSelectChoices = function()
- {
- return ( this.f_getChildByTagName( "selectChoices" ) );
- };
- /**
- By default, returns true if one or more value are returned by the control.
- @private
- @return {boolean} Always false.
- */
- cognos.Prompt.Control.prototype.hasValue = function()
- {
- var v_aPV = this.f_getPV();
- return ( v_aPV && v_aPV.length > 0 );
- };
- /**
- * By default, returns true if the control does not return any value.
- *
- * @private
- * @return {boolean}
- */
- cognos.Prompt.Control.prototype.isEmpty = function()
- {
- return !this.hasValue();
- };
- /**
- Query Studio feature only.
- @private
- @return {boolean}
- */
- cognos.Prompt.Control.prototype.isExclusive = function()
- {
- var v_sel = $( this.f_getId("oExcludeSelectedValues") );
- return ( v_sel && v_sel.options && v_sel.options[1] && v_sel.options[1].selected ? true : false );
- };
- /**
- Check if multi-selection if enabled.
- @private
- @return {boolean} <i>true</i> if this control accepts multiple selections.
- */
- cognos.Prompt.Control.prototype.isMulti = function()
- {
- return ( this["@multiSelect"] === true );
- };
- /**
- Check if this is a range control.
- @private
- @return {boolean}
- */
- cognos.Prompt.Control.prototype.f_isRange = function()
- {
- return ( this["@range"] === true );
- };
- /**
- Check if this control needs to have a selection to be valid.
- @private
- @return {boolean} <i>true</i> if this control is satisfied.
- */
- cognos.Prompt.Control.prototype.isRequired = function()
- {
- return ( this["@required"] === true );
- };
- /**
- Check if this control is valid, i.e. ready to submit.
- @private
- @return {boolean} <i>true</i> if this control has a valid selection.
- */
- cognos.Prompt.Control.prototype.isValid = function()
- {
- this.checkData();
- return (this.m_bValid===true);
- };
- /**
- @private
- @param {integer} iState
- @param {object} oNotifier
- @return {void}
- */
- cognos.Prompt.Control.prototype.notify = function(iState, oNotifier)
- {
- var v_oCV = this.f_getCV();
- if (v_oCV && typeof v_oCV.notify == K_PRMT_sFUNCTION)
- {
- v_oCV.notify(iState, oNotifier);
- }
- };
- /**
- @private
- @return {String} XML
- */
- cognos.Prompt.Control.prototype.preProcess = function()
- {
- if ( !this.m_oSubmit )
- {
- PRMTUtils.f_error( "PRMT_0005", "preProcess():: No m_oSubmit defined. [" + this._type_ + "]");
- return;
- }
- var v_aPV = ( this.m_oChoices ? this.m_oChoices.f_getPV() : this.f_getPV() );
- var v_sXML = null;
- if ( v_aPV && typeof v_aPV == K_PRMT_sOBJECT )
- {
- v_sXML = cognos.Value.toXML(v_aPV);
- }
- else if ( typeof v_aPV == K_PRMT_sSTRING )
- {
- v_sXML = v_aPV;
- }
- if ( v_sXML === null )
- {
- v_sXML = K_PRMT_sEMPTY;
- }
- addSelectChoices( this.m_oSubmit, v_sXML );
- return (v_sXML);
- };
- /**
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.removeSelectedChoices = function()
- {
- var iFirstSelection = null;
- if (typeof this.m_oLstChoices == K_PRMT_sOBJECT)
- {
- iFirstSelection = this.m_oLstChoices.selectedIndex;
- }
- if (typeof iFirstSelection != "number")
- {
- return;
- }
- if (iFirstSelection != -1)
- {
- for (var idxSelection = this.m_oLstChoices.options.length-1; idxSelection > -1 ; idxSelection--)
- {
- if (this.m_oLstChoices.options[idxSelection].selected)
- {
- this.m_oLstChoices.options[idxSelection] = null;
- }
- }
- }
- else
- {
- var sPrompt_Select_Item_First = "sPrompt_Select_Item_First";
- if (typeof PMT_UIM_sPrompt_Select_Item_First == K_PRMT_sSTRING)
- {
- sPrompt_Select_Item_First = PMT_UIM_sPrompt_Select_Item_First;
- }
- PRMTUtils.f_error("PRMT_0001", sPrompt_Select_Item_First);
- }
- this.checkData();
- };
- /**
- @private
- @param {String} sId New Id.
- @return {void}
- */
- cognos.Prompt.Control.prototype.setCVId = function(sId)
- {
- if (typeof sId == K_PRMT_sSTRING && sId !== K_PRMT_sEMPTY & sId != K_PRMT_sUNDEFINED)
- {
- this.m_sCVId = sId;
- }
- };
- /**
- Query Studio feature only.
- @private
- @param {boolean} v_bExclusive
- @return {void}
- */
- cognos.Prompt.Control.prototype.setExclusive = function( v_bExclusive )
- {
- var v_sel = $( this.f_getId("oExcludeSelectedValues") );
- if ( v_sel && v_sel.options )
- {
- var v_idx = ( v_bExclusive ? 1 : 0 );
- if ( v_sel.options[v_idx] ) {
- v_sel.options[v_idx].selected = true;
- }
- }
- };
- /**
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_setFormSubmit = function()
- {
- var v_frm = this.f_CSW_GetForm();
- var sParamName = this.getParameterName();
- if (v_frm)
- {
- this.m_oSubmit = v_frm.elements[ sParamName ];
- }
- if (this.m_oSubmit) {
- this.m_oSubmit.value = K_PRMT_sEMPTY;
- }
- else
- {
- if ( document.readyState && document.readyState != "complete" )
- {
- // Need DOM ready for IE.
- setTimeout( this.f_setFormSubmit.bind(this), 100 );
- return;
- }
- this.m_oSubmit = PRMTUtils.f_createElement( "input", {"name": sParamName, "type":"hidden", "value":K_PRMT_sEMPTY}, v_frm );
- }
- };
- /**
- Modifies the selection of the control.
- @private
- @param {ParameterValues[]} Array of parameter values (cognos.SingleValue or cognos.RangeValue). If the control doesn't accept multiple selections, only the first value will be considered.
- @return {void}
- */
- cognos.Prompt.Control.prototype.setParameterValues = function( v_aParmValueItems )
- {
- var v_oChoiceControl = this.m_oChoices;
- if ( v_oChoiceControl )
- {
- v_oChoiceControl.F_SelectAll();
- v_oChoiceControl.F_Remove();
- for ( var v_idx = 0; v_idx < v_aParmValueItems.length; v_idx++ )
- {
- v_oChoiceControl.F_AddPV( v_aParmValueItems[ v_idx ] );
- }
- v_oChoiceControl.checkData();
- }
- else if (v_aParmValueItems.length)
- {
- this.f_setPV( v_aParmValueItems[0] );
- }
- };
- /**
- Finish drawing, set events.
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_drawCompleted = function()
- {
- if ( this.m_oChoices )
- {
- this.m_oChoices.F_DrawCompleted();
- }
- var img = $( this.f_getId(K_PRMT_sIMG_ERROR_PREFIX) );
- if ( img )
- {
- this.m_imgError = img;
- }
- if ( !this.m_oRangeControl )
- {
- this.f_setSelectChoices();
- }
- if (window.JsUnitException)
- {
- this.checkData();
- }
- else
- {
- // 575695 - Need to call checkData() in a different thread.
- // We can't just call checkData() through setTimeout, JsUnit tests will fail.
- setTimeout( this.checkData.bind(this), 20 );
- }
- if (typeof SYSTEMPROPERTY_CREATE_CUSTOM_SCRIPTS_REFS != K_PRMT_sUNDEFINED && SYSTEMPROPERTY_CREATE_CUSTOM_SCRIPTS_REFS && typeof this.f_CSW_init == K_PRMT_sFUNCTION)
- {
- this.f_CSW_init();
- }
- };
- /**
- Set up event callbacks for this control. Supported events: <tt>onChange</tt>, <tt>onFail</tt>, <tt>onValid</tt>, <tt style="color:red">onLoad?</tt>.
- @param {String} evt Event type
- @param {function} fct The Javascript function used as callback.
- @return {void}
- @example Change the background to red when control's selection is invalid: <br/>
- ctrl.addEvent( "<tt>onFail</tt>", <tt>function() {
- <br/> var ctrl = cognos.Report.getReport().prompt.getControlByName('X');
- <br/> ctrl.setStyle("background-color:red;");
- <br/> }</tt> );
- */
- cognos.Prompt.Control.prototype.addEvent = function(evt, fct) {};
- /**
- If the control doesn't support multiple values, only the first one will be considered.
- @param {cognos.Value[]} aValues New values to use for this control.
- @return {void}
- */
- cognos.Prompt.Control.prototype.addValues = function( aValues )
- {
- var v_iLimit = ( this.isMulti() ? aValues.length : 1);
-
- for (var v_idx = 0; v_idx < v_iLimit; v_idx++)
- {
- this.f_setPV( aValues[v_idx] );
- if ( this.m_oChoices ) {
- this.m_oChoices.F_Insert();
- }
- }
- this.checkData();
- };
- /**
- If the control doesn't support multiple values, only the first one will be considered.
- @param {cognos.Value[]} aValues New values to use for this control.
- @return {void}
- */
- cognos.Prompt.Control.prototype.setValues = function( aValues )
- {
- this.clearValues();
- this.addValues(aValues);
- };
- /**
- Change the validation function for controls. Returning <tt>false</tt> will update control's UI to indicate there is a validation error and will disable the <tt>Insert</tt> button when used in a multi-selection scenario.
- @param {function} oFct A function that would take the user input as parameter and must return a boolean value.
- @return {void}
- @example
- // Make sure we have a valid Postal Code (ie. A1A 1A1)
- textBox.setValidator(
- function (sInput) {
- var rePostalCodeFormat = new RegExp( "[a-z][0-9][a-z] [0-9][a-z][0-9]", "gi" );
- if ( rePostalCodeFormat.test(sInput) ) {
- return true;
- }
- return false;
- }
- );
- */
- cognos.Prompt.Control.prototype.setValidator = function(oFct) {
- this.m_fValidator = oFct;
- };
- /**
- Traps whether the user has pressed the delete key in the choices box. [IE specific]
- @private
- @param {Integer} iKeyCode
- @return {void}
- */
- cognos.Prompt.Control.prototype.catchDeleteKey = function(iKeyCode)
- {
- //catch the Delete key code
- if (iKeyCode == 46 && typeof this.remove == K_PRMT_sFUNCTION)
- {
- this.remove(this.m_oLstChoices);
- }
- };
- /**
- Clear (or deselect) all values for this control.
- @return {void}
- */
- cognos.Prompt.Control.prototype.clearValues = function()
- {
- if ( this.m_oChoices )
- {
- this.m_oChoices.F_SelectAll();
- this.m_oChoices.F_Remove();
- }
- };
- /**
- Adds a javascript reference using 'prefix' and this control's name (Custom Scripts Workaround).
- @private
- @param {String} v_sPrefix Prefix of the 'input' control to use in the formWarpRequest
- @param {HTMLElement} v_obj HTML element to set to v_sName. If missing, using this.m_elPrompt.
- @return {object} The newly associated object, incidently 'this'.
- */
- cognos.Prompt.Control.prototype.f_CSW_createJSObject = function( v_sPrefix, v_obj )
- {
- if ( this["@name"] )
- {
- var v_sName = v_sPrefix + this["@name"];
- window[v_sName] = (v_obj ? v_obj : this);
- return (window[v_sName]);
- }
- return null;
- };
- /**
- Set the value of an input in the FormWarpRequest form. Adds the reference if missing.
- (Custom Scripts Workaround)
- @private
- @return {HTMLelement} The 'FormWarpRequest' element.
- */
- cognos.Prompt.Control.prototype.f_CSW_GetForm = function()
- {
- var v_doc = document;
- var v_sFWR = "formWarpRequest";
- var v_f = v_doc[v_sFWR + this.f_getCVId()];
- if ( !v_f && v_doc[v_sFWR] )
- {
- v_f = v_doc[v_sFWR];
- v_doc[v_sFWR].submit = f_CSW_tryCVPromptAction;
- }
- return v_f;
- };
- /**
- Set the value of an input in the FormWarpRequest form. Adds the reference if missing (Custom Scripts Workaround).
- @private
- @param {String} v_sPrefix Prefix of the 'input' control to use in the formWarpRequest
- @param {HTMLElement} [v_el] HTML element to set to v_sName. If missing, using this.m_elPrompt.
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_CSW_SetFormElement = function(v_sPrefix, v_el)
- {
- if ( this["@name"] )
- {
- var v_sName = v_sPrefix + this["@name"];
- var v_f = this.f_CSW_GetForm();
- if ( v_f )
- {
- v_f[v_sName] = ( v_el ? v_el : this.m_elPrompt );
- }
- if (this.m_sCSW_rangeSuffix)
- {
- // Used to fix references in ranges
- v_sName = v_sPrefix + this.m_sCSW_rangeSuffix + this["@name"];
- window[v_sName] = ( v_el ? v_el : this.m_elPrompt );
- if ( v_f ) {
- v_f[v_sName] = window[v_sName];
- }
- }
- if ( this["@parameter"] )
- {
- v_sName = "p_" + this["@parameter"];
- if ( !v_f[v_sName] )
- {
- v_f[v_sName] = this.m_oSubmit;
- }
- }
- }
- };
- /**
- Checks and decodes a property if necessary (U003 encoding for < and >).
- @private
- @param {String} v_sPropertyName The property name we need to decode.
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_decodeProperty = function(v_sPropertyName)
- {
- if ( typeof this[v_sPropertyName] == K_PRMT_sSTRING )
- {
- this[v_sPropertyName] = sDecodeU003( this[v_sPropertyName] );
- }
- };
- /**
- Generates a hidden input field to store parameter values in the UI.
- @private
- @return {C_PromptElement}
- */
- cognos.Prompt.Control.prototype.f_drawParameterValueHolder = function()
- {
- var v_sHiddenInput = "";
- var v_sCVID = this.f_getCVId();
- var v_frm = $("formWarpRequest" + v_sCVID);
- if ( v_frm && v_frm.elements && !v_frm.elements[this.getParameterName()] )
- {
- var v_hidden = $CE( "input", {
- "type": "hidden",
- "name": this.getParameterName()
- });
- v_sHiddenInput = v_hidden.f_getHTML();
- }
- return v_sHiddenInput;
- };
- /**
- @private
- @return {CCognosViewer}
- */
- cognos.Prompt.Control.prototype.f_getCV = function()
- {
- var oRetVal = window;
- if (typeof this.m_oCV == K_PRMT_sOBJECT)
- {
- oRetVal = this.m_oCV;
- }
- else
- {
- try {
- oRetVal = eval("oCV" + this.f_getCVId());
- if (typeof oRetVal == K_PRMT_sOBJECT)
- {
- this.m_oCV = oRetVal;
- }
- }
- catch (e)
- {
- oRetVal = window;
- }
- }
- return oRetVal;
- };
- /**
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_setPromptManager = function(oPromptManager)
- {
- this.m_oPromptManager = oPromptManager;
- }
- /**
- @private
- @return {PromptManager}
- */
- cognos.Prompt.Control.prototype.f_getPromptManager = function()
- {
- return this.m_oPromptManager;
- }
- cognos.Prompt.Control.prototype.f_isBUX = function(){
- var v_oCV = this.f_getCV();
- return (typeof v_oCV == K_PRMT_sOBJECT && v_oCV.isBux? true :false);
- };
- cognos.Prompt.Control.prototype.getGateway = function()
- {
- var v_sGateway = document.location.pathname;
- var v_oCV = (this.f_getCV ? this.f_getCV() : null);
- if (v_oCV && v_oCV.getGateway) {
- v_sGateway = v_oCV.getGateway();
- }
- return v_sGateway;
- };
- /**
- @private
- @return {String}
- */
- cognos.Prompt.Control.prototype.f_getCVId = function()
- {
- return this.CVId;
- };
- /**
- Retrieves the control's ID based on its id, name or parameter properties.
- @private
- @return {String}
- */
- cognos.Prompt.Control.prototype.f_getControlId = function()
- {
- var v_sId = K_PRMT_sEMPTY;
- if ( this._id_ )
- {
- v_sId = this._id_;
- }
- else if ( this.id )
- {
- v_sId = this.id;
- }
- else if ( this["@parameter"] )
- {
- v_sId = this["@parameter"];
- }
- else if ( this.name )
- {
- v_sId = this.name;
- }
- return v_sId;
- };
- /**
- Return the error widget for this control.
- @private
- @return {HTMLelement}
- */
- cognos.Prompt.Control.prototype.f_getErrorWidget = function()
- {
- var v_elWidget = this.m_elPrompt;
- // When control is a Text inside a Interval, use self for showing errors, otherwise use its parent.
- // It means the border will be under the control (as opposed to be the control's border in case of intervals).
- if ( !(this.m_oOwner && this.m_oOwner.n == "selectInterval") && v_elWidget && v_elWidget.parentNode )
- {
- v_elWidget = v_elWidget.parentNode;
- }
- return v_elWidget;
- };
- /**
- Returns the ID for this control.
- @private
- @param {String} [v_sPrefix] Prefix to add to the ID/name.
- @return {String} Prompt Control ID.
- */
- cognos.Prompt.Control.prototype.f_getId = function( v_sPrefix )
- {
- return ( (v_sPrefix ? v_sPrefix : K_PRMT_sEMPTY) + this.f_getControlId() );
- };
- /**
- Called after initialisation is completed and initiate the contol rendering.
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_initCompleted = function()
- {
- if ( !this.m_oRangeControl && !this.m_bIsAComponent )
- {
- this.f_draw();
- }
- };
- /**
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_setPV = function()
- {
- PRMTUtils.f_log( "PRMT_0003", "f_setPV() is not implemented for this class. [" + this._type_ + "]");
- };
- /**
- @private
- @return {void}
- */
- cognos.Prompt.Control.prototype.f_setSelectChoices = function()
- {
- var v_oSC = this.getSelectChoices();
- var v_oPV = null;
- if ( v_oSC )
- {
- if ( this.m_oChoices )
- {
- if ( v_oSC.c && v_oSC.c.length > 0){
- this.m_oChoices.f_setSelectChoices(v_oSC.c);
- }
- }
- else if ( !this.m_bIsAComponent )
- {
- this.f_setPV( cognos.Value.getValue( v_oSC ) );
- }
- }
- };
- /**
- Finds a HTML element contained in this control.
- @private
- @param {String} v_sName Name of the HTML element.
- @return {HTMLelement}
- */
- cognos.Prompt.Control.prototype.getChildByName = function( v_sName )
- {
- var v_oChild = null;
- if ( this.c )
- {
- for (var v_idxChild = 0; v_idxChild < this.c.length; v_idxChild++)
- {
- if ( this.c[v_idxChild].n == v_sName )
- {
- v_oChild = this.c[v_idxChild];
- break;
- }
- }
- }
- return v_oChild;
- };
- /**
- Returns the control's name, set in Report Studio.
- @return {String}
- */
- cognos.Prompt.Control.prototype.getName = function()
- {
- return ( typeof this["@name"] == K_PRMT_sUNDEFINED ? null : this["@name"] );
- };
- /**
- Returns the parameter associated to this control.
- @return {cognos.Prompt.Parameter}
- */
- cognos.Prompt.Control.prototype.getParameter = function() {};
- /**
- Returns the name of the parameter associated to this control.
- @private
- @return {String} Parameter name
- */
- cognos.Prompt.Control.prototype.getParameterName = function()
- {
- var sParamName = "p_" + this["@parameter"];
- if ( this.suppressExtraPromptNames )
- {
- sParamName = sParamName.substring(1);
- }
- return sParamName;
- };
- /**
- Returns the parameter values selected in this control.
- @private
- @return {ParameterValues[]} Array of parameter values (cognos.SingleValue or cognos.RangeValue).
- */
- cognos.Prompt.Control.prototype.getParameterValues = function()
- {
- return ( this.m_oChoices ? this.m_oChoices.getParameterValues() : this.f_getPV() );
- };
- /**
- @private
- @return {HTMLelement[]}
- */
- cognos.Prompt.Control.prototype.getSelectOptions = function()
- {
- if ( !this.m_aSO )
- {
- this.m_aSO = this.getChildByName("selectOptions");
- if (this.m_aSO && this.m_aSO.c)
- {
- this.m_aSO = this.m_aSO.c;
- }
- }
- return (this.m_aSO);
- };
- /**
- Returns the current value for the control. Always returns an array for simplicity, even if single select and/or there is only one value selected.
- See {@link cognos.Value} for the format of the returned values.
- @return {cognos.Value[]}
- @example <ul>
- <li>Text box prompt (single): <tt>[ {use: "Smith", display: "Smith"} ]</tt></li>
- <li>Select prompt (multiple): <tt>[ {use: "CAN", display: "Canada"}, {use: "JPN", display: "Japan"} ]</tt></li>
- <li>Tree prompt (multiple): <tt>[ {use: "[Americas].[Canada]", display: "Canada"}, {use: "[Asia].[Japan]", display: "Japan"} ]</tt></li>
- </ul>
- */
- cognos.Prompt.Control.prototype.getValues = function(v_allOptions)
- {
- this.m_bisGetValuesCall = true;
- var v_aValues = ( this.m_oChoices ? this.m_oChoices.getValues() : this.f_getPV(true,v_allOptions) );
- if ( !(v_aValues instanceof Array) ) {
- if (v_aValues) {
- v_aValues = [v_aValues];
- }
- else {
- v_aValues = [];
- }
- }
- this.m_bisGetValuesCall = false;
- return v_aValues;
- };
- /**
- Returns the name of the parameter associated to this control.
- @private
- @return {Object} cascadeOn Parameter
- */
- cognos.Prompt.Control.prototype.getCascadeOnParameter = function()
- {
- var result = null;
- var v_promptManager = this.f_getPromptManager();
- if(this["@cascadeOn"]){
- var v_cascadeParamName = "p_" + this["@cascadeOn"];
- result = v_promptManager.getParameterByName(v_cascadeParamName);
- }
-
- return result;
- };
- cognos.Prompt.Control.prototype.getTracking = function()
- {
- var tracking_info = K_PRMT_sEMPTY;
- var oCV = this.f_getCV();
- if (oCV && typeof oCV.getTracking == K_PRMT_sFUNCTION)
- {
- tracking_info = oCV.getTracking();
- }
- else
- {
- // can't find tracking in CCognosViewer, trying with a form
- var oForm = document.getElementById("formWarpRequest" + this.f_getCVId());
- if (!oForm) {
- oForm = document.getElementById("formWarpRequest");
- }
- if (oForm) {
- if (typeof oForm.m_tracking != K_PRMT_sUNDEFINED) {
- tracking_info = oForm.m_tracking.value;
- }
- else if (typeof oForm.tracking != K_PRMT_sUNDEFINED) {
- tracking_info = oForm.tracking.value;
- }
- else if (typeof tracking != K_PRMT_sUNDEFINED) {
- tracking_info = tracking;
- }
- }
- }
- return tracking_info;
- };
- cognos.Prompt.Control.prototype.cacheControlValue = function (sType)
- {
- if (SYSTEMPROPERTY_TREE_CACHE_ENABLED)
- {
- var sTracking = this.getTracking();
- if (sTracking.length == 0) return;
-
- var selectDateTimeControl = this.getCachedDateTimePromptNames(sTracking);
-
- if (selectDateTimeControl != null)
- {
- if (cognos.Prompt.Control.isElementInList(this.getName(),selectDateTimeControl))
- {
- // this is a DateTime control
- if (sType != "cognos.Prompt.Control.DateTime")
- {
- // getting a notification of a "has-a" control so ignore
- return;
- }
- }
- }
- // to avoid recursion DateTime control where attempt to get value calls checkData
- if ((typeof cognos.Prompt.Control.prototype.cacheControlValue.running != 'undefined') && cognos.Prompt.Control.prototype.cacheControlValue.running)
- {
- return;
- }
- else
- {
- cognos.Prompt.Control.prototype.cacheControlValue.running = true;
- }
-
- if (this.cacheUseValue(sTracking))
- {
- this.cachePromptName(sTracking);
- }
-
- cognos.Prompt.Control.prototype.cacheControlValue.running = false;
- }
- };
- cognos.Prompt.Control.prototype.getUseValues = function()
- {
- var sValues = "";
- var v_aValues = this.getValues();
- if (v_aValues)
- {
- for (var j = 0; j < v_aValues.length; j++)
- {
- var v_oValue = v_aValues[j];
- sValues += v_oValue["use"];
- }
- }
-
- return sValues
- };
- cognos.Prompt.Control.prototype.cacheDateTimeControlName = function (sTracking)
- {
- var sCacheKey = this.generateUniqueDateTimeKey(sTracking);
-
- this.cacheControlName(sTracking,sCacheKey);
- };
- cognos.Prompt.Control.prototype.cacheControlName = function (sTracking,sCacheKey)
- {
- var sPreviousValue = window.sessionStorage.getItem(sCacheKey);
- var bAddToList = true;
-
- if (sPreviousValue != null)
- {
- if (sPreviousValue.length != 0)
- {
- // only add if name is not already in list
- bAddToList = !cognos.Prompt.Control.isElementInList(this.getName(), sPreviousValue);
- if (bAddToList) {
- sPreviousValue += K_PRMT_TREE_CACHE_LIST_SEP;
- }
- }
- if (bAddToList) {
- sPreviousValue += this.getName();
- }
- }
- else
- {
- sPreviousValue = this.getName();
- }
- if (bAddToList) {
- this.saveToSessionStorage(sCacheKey,sPreviousValue,sTracking);
- }
- };
- cognos.Prompt.Control.prototype.cacheUseValue = function (sTracking)
- {
- var bReturnValue = false;
- var sValues = this.getUseValues();
- if (sValues && sValues.length > 0)
- {
- var sCacheKey = this.generateUniqueValueKey(sTracking);
- this.saveToSessionStorage(sCacheKey,sValues,sTracking);
- bReturnValue = true;
- }
- return bReturnValue;
- };
- cognos.Prompt.Control.prototype.cachePromptName = function (sTracking)
- {
- var sCacheKey = this.generateUniquePromptKey(sTracking);
-
- this.cacheControlName(sTracking,sCacheKey);
- };
- cognos.Prompt.Control.prototype.saveToSessionStorage = function(sCacheKey, sValue, sTrackingInfo)
- {
- // save tracking so we can clear our entries
- if (!sTrackingInfo)
- {
- sTrackingInfo = this.getTracking();
- }
- var sPreviousValue = "";
-
- sPreviousValue = window.sessionStorage.getItem(K_PRMT_TREE_CACHE_TRACKING);
- if (!sPreviousValue)
- {
- this.writeToSessionStorage(K_PRMT_TREE_CACHE_TRACKING,sTrackingInfo);
- }
- else
- {
- if (!cognos.Prompt.Control.isElementInList(sTrackingInfo, sPreviousValue))
- {
- sPreviousValue += K_PRMT_TREE_CACHE_LIST_SEP;
- sPreviousValue += sTrackingInfo;
-
- // add tracking info
- this.writeToSessionStorage(K_PRMT_TREE_CACHE_TRACKING,sPreviousValue);
- }
- }
- this.writeToSessionStorage(sCacheKey, sValue);
- };
- cognos.Prompt.Control.prototype.writeToSessionStorage = function(key, value, bNoRetryWhenFull)
- {
- if ((key == null) || (value == null)) return;
- if ((key == "") || (value == "")) return;
-
- try
- {
- window.sessionStorage.setItem(key,value);
- }
- catch(e)
- {
- if (!bNoRetryWhenFull)
- {
- this.cleanCacheValues();
- this.saveToSessionStorage(key,value,true);
- }
- }
- };
- cognos.Prompt.Control.prototype.cleanCacheValues = function()
- {
- if (SYSTEMPROPERTY_TREE_CACHE_ENABLED)
- {
- try
- {
- var sKnownTrackingIds =
- window.sessionStorage.getItem(K_PRMT_TREE_CACHE_TRACKING);
- var aTrackingIds = sKnownTrackingIds.split(K_PRMT_TREE_CACHE_LIST_SEP);
- for (var i = 0; i < aTrackingIds.length; i++)
- {
- var sTrackingId = aTrackingIds[i];
- // build key for prompt names
- var sCacheKeyPromptNames = K_PRMT_TREE_CACHE_NAMES + sTrackingId;
- var sSavedPromptNames = window.sessionStorage.getItem(sCacheKeyPromptNames);
- var aPromptNames = sSavedPromptNames.split(K_PRMT_TREE_CACHE_LIST_SEP);
- for (var j = 0; j < aPromptNames.length; j++)
- {
- var sPromptName = aPromptNames[j];
- // delete the display value
- var sPromptDisplayKey = K_PRMT_TREE_CACHE_VALUES + sTrackingId + sPromptName;
- window.sessionStorage.removeItem(sPromptDisplayKey);
- }
- // delete the prompt names
- window.sessionStorage.removeItem(sCacheKeyPromptNames);
-
- // delete the DateTime prompt names
- sCacheKeyPromptNames = K_PRMT_TREE_CACHE_SELECTDATETIME + sTrackingId;
- window.sessionStorage.removeItem(sCacheKeyPromptNames);
- }
- // delete the tracking ids
- window.sessionStorage.removeItem(K_PRMT_TREE_CACHE_TRACKING);
- }
- catch(e)
- {
- }
- }
- };
- cognos.Prompt.Control.prototype.getCachedDateTimePromptNames = function(sTracking)
- {
- var sCacheKey = K_PRMT_TREE_CACHE_SELECTDATETIME + sTracking;
- var promptNames = window.sessionStorage.getItem(sCacheKey);
-
- return promptNames;
- };
- cognos.Prompt.Control.prototype.getCachedPromptNames = function(sTracking)
- {
- var sCacheKey = K_PRMT_TREE_CACHE_NAMES + sTracking;
- var promptNames = window.sessionStorage.getItem(sCacheKey);
-
- return promptNames;
- };
- cognos.Prompt.Control.prototype.getCachedDisplayValues = function (sTracking, sPrmtName)
- {
- var sCacheKey = K_PRMT_TREE_CACHE_VALUES + sTracking + sPrmtName;
- var sPromptValues = window.sessionStorage.getItem(sCacheKey);
-
- return sPromptValues;
- };
- cognos.Prompt.Control.prototype.generateUniqueDateTimeKey = function(sTracking)
- {
- return K_PRMT_TREE_CACHE_SELECTDATETIME + sTracking;
- };
- cognos.Prompt.Control.prototype.generateUniqueValueKey = function(sTracking)
- {
- return K_PRMT_TREE_CACHE_VALUES + sTracking + this.getName();
- };
- cognos.Prompt.Control.prototype.generateUniquePromptKey = function(sTracking)
- {
- return K_PRMT_TREE_CACHE_NAMES + sTracking;
- };
- /**
- Sets a property for one control. Each control will defined what property they are 'listening' to.
- For examaple: This is to be able to set 'caseInsensitive' option for a Search control.
- Supported properties: <small>[defined by the type of controls]</small>
- @param {String} sName Property name.
- @param {object} oValue Can be a string, number, boolean, object.
- @return {void}
- @example <ul>
- <li>ctrl.setProperty( "<tt>caseInsensitive</tt>", <tt>true</tt> );</li>
- <li>ctrl.setProperty( "<tt>searchType</tt>", "<tt>startsWith</tt>" );</li>
- </ul>
- */
- cognos.Prompt.Control.prototype.setProperty = function(sName, oValue) {};
- /**
- Overrides CSS style for a control. The control will decide which part of it is updated based on the style passed in.
- For example: You can't specify the width of the text box a date control here, setting the width will resize the whole calendar.
- Supported styles:
- <tt>background</tt>(-*),
- <tt>border</tt>(-*),
- <tt>color</tt>,
- <tt>display</tt>,
- <tt>font</tt>(-*),
- <tt>height</tt> <small>(absolute sizes)</small>,
- <tt>overflow</tt>,
- <tt>text-decoration</tt>,
- <tt>text-transform</tt>,
- <tt>visibility</tt>,
- <tt>width</tt> <small>(absolute sizes)</small>.
- @param {String} sStyle CSS string.
- @return {void}
- @example <ul>
- <li>ctrl.setStyle( "<tt>display:none</tt>" );</li>
- <li>ctrl.setStyle( "<tt>border:1px solid blue;background-color:yellow;</tt>" );</li>
- </ul>
- */
- cognos.Prompt.Control.prototype.setStyle = function(sStyle) {};
- /**
- The following function is included for the Cognos Mobile case, where the MooTools Javascript framework
- has also defined a function $( id ), which has a document context that is not able to find the element in the DOM.
- Mobile will be upgrading MooTools in their next release, and their $( id ) method is aliased in later version when
- a $ function already exists. So once the upgrade is done, this code will be able to be removed.
- @private
- @param id - identifier for the element being requested
- @return the element requested, or null
- */
- cognos.Prompt.Control.prototype.$ = function(id) {
- var v_el = $( id );
- if(!v_el){
- v_el = document.getElementById(id);
- }
- return v_el;
- };
- var C_PromptControl = cognos.Prompt.Control; // Keep old reference for backward compatibility with custom scripts.
|