/content/folder[@name='Samples']/folder[@name='Models']/package[@name='GO Data Warehouse (query)']/model[@name='model'] <script> var fW = (typeof getFormWarpRequest == "function" ? getFormWarpRequest() : document.forms["formWarpRequest"]); if (!fW || fW == undefined) { fW = (formWarpRequest_THIS_ ? formWarpRequest_THIS_:formWarpRequest_NS_); } var preFix = ""; if (fW.elements["cv.id"]) { preFix = fW.elements["cv.id"].value;} var nameSpace = "oCV" + preFix; var paulScripts = {}; /* * Utilities */ paulScripts.isInArray=function(value, array) { //return array.indexOf(value) > -1; //Curses, foiled again! I'll get you IE, and your dog too! for(var j=0;j<array.length;++j) { if(array[j]===value){return true;} } return false; } /* * selectColumns * Fill the AvailableFields prompt with fields from the package. */ paulScripts.selectColumns={}; /* * Params */ paulScripts.selectColumns.selectField = function(name) { var available = fW['_oLstChoicesAvailableFields'+name] , selected = fW['_oLstChoicesSelectedFields'+name] , selectedCount=0; for(var i=0;i<available.length;++i){ if(available.options[i].selected) ++selectedCount; } for(var i=0;i<selectedCount;++i){ selected.appendChild(available.options[available.options.selectedIndex]); } } paulScripts.selectColumns.removeField=function(name) { var available = fW['_oLstChoicesAvailableFields'+name] , selected = fW['_oLstChoicesSelectedFields'+name] , selectedCount=0; for(var i=0;i<selected.length;++i){ if(selected.options[i].selected) ++selectedCount; } for(var i=0;i<selectedCount;++i){ available.appendChild(selected.options[selected.options.selectedIndex]); } } //Before modifying the use values, join the values into the merged textbox. This allows us to reselect those fields, in that order, on page load. paulScripts.selectColumns.mergeFields = function(name){ var selected = fW['_oLstChoicesSelectedFields'+name] , merged = fW['_textEditBoxMergedFields'+name] , mergedValue=[]; for(var i=0;i<selected.length;++i){ mergedValue.push(selected.options[i].value); } merged.value=mergedValue.join('||'); } //On page reload, select the fields that appear in the merged textbox paulScripts.selectColumns.reselectFields = function(name){ var selected = fW['_oLstChoicesSelectedFields'+name] , merged = fW['_textEditBoxMergedFields'+name] , available = fW['_oLstChoicesAvailableFields'+name] , mergedArr = merged.value.split('||'); for(var i=0;i<mergedArr.length;++i){ for(var j=0;j<available.length;++j) { if(available.options[j].value===mergedArr[i]){selected.appendChild(available.options[j])} } } } paulScripts.selectColumns.moveToTop= function(name){ var selected = fW['_oLstChoicesSelectedFields'+name] ,j=0; for(var i=0;i<selected.length;++i){ if(selected.options[i].selected) {selected.insertBefore(selected.options[i],selected.options[0+j]);++j} } /* Really disgusting IE hack. IE doesn't always redraw the select after moving options. Why? * Why should it? I only wasted 3 hours trying to figure out why the hell it wasn't working. * When it actually was working. Of course it doesn't refresh. That would be silly. Silly me, * expecting IE to act the way it should.*/ selected.style.display='none'; selected.style.display='block'; } paulScripts.selectColumns.moveUp= function(name){ var selected = fW['_oLstChoicesSelectedFields'+name]; for(var i=1;i<selected.length;++i){ if(selected.options[i].selected&!selected.options[i-1].selected) { selected.insertBefore(selected.options[i],selected.options[i-1]); } } selected.style.display='none'; selected.style.display='block'; } paulScripts.selectColumns.moveDown= function(name){ var selected = fW['_oLstChoicesSelectedFields'+name] for(var i=selected.length-2;i>=0;--i){ if(selected.options[i].selected&!selected.options[i+1].selected) { selected.insertBefore(selected.options[i],selected.options[i+2]); } } selected.style.display='none'; selected.style.display='block'; } paulScripts.selectColumns.moveToBottom= function(name){ var selected = fW['_oLstChoicesSelectedFields'+name] , j=0; for(var i=0;i<selected.length;++i){ if(selected.options[i-j].selected) { selected.appendChild(selected.options[i-j]); ++j; } } selected.style.display='none'; selected.style.display='block'; } /*After the fields have been merged to the text box, it is time to prepare them. The * report will search for the fields by looking for a number surrounded by pipes: |1| or |2| * This function will loop through and modify the use value to incorporate the pipes. */ paulScripts.selectColumns.prepUseValues = function(name){ var selected = fW['_oLstChoicesSelectedFields'+name]; for(var i=0;i<selected.length;++i){ selected.options[i].value+='|'+i+'|'; selected.options[i].selected=true; } } </script> AttributesProduct LineProduct TypeProductRegionRetailer countryYearQuarterMonth
<button onclick="paulScripts.selectColumns.selectField('_Attributes')" style="background-color:white"><img src="../ps/portal/images/move_right.gif" /></button> <button onclick="paulScripts.selectColumns.removeField('_Attributes')" style="background-color:white"><img src="../ps/portal/images/move_left.gif" /></button>
<button onclick="paulScripts.selectColumns.moveToTop('_Attributes')" style="background-color:white"> <img src="../skins/modern/viewer/images/top.gif" </button> <button onclick="paulScripts.selectColumns.moveUp('_Attributes')" style="background-color:white"> <img src="../skins/modern/viewer/images/pageup.gif" </button> <button onclick="paulScripts.selectColumns.moveDown('_Attributes')" style="background-color:white"> <img src="../skins/modern/viewer/images/pagedown.gif" </button> <button onclick="paulScripts.selectColumns.moveToBottom('_Attributes')" style="background-color:white"> <img src="../skins/modern/viewer/images/bottom.gif" </button>
<div style="display:none"> </div><script>paulScripts.selectColumns.reselectFields('_Attributes')</script>
MeasuresQuantityUnit costUnit priceUnit sale priceRevenueGross profitProduct costPlanned revenue <button onclick="paulScripts.selectColumns.selectField('_Measures')" style="background-color:white"><img src="../ps/portal/images/move_right.gif" /></button> <button onclick="paulScripts.selectColumns.removeField('_Measures')" style="background-color:white"><img src="../ps/portal/images/move_left.gif" /></button>
<button onclick="paulScripts.selectColumns.moveToTop('_Measures')" style="background-color:white"> <img src="../skins/modern/viewer/images/top.gif" </button> <button onclick="paulScripts.selectColumns.moveUp('_Measures')" style="background-color:white"> <img src="../skins/modern/viewer/images/pageup.gif" </button> <button onclick="paulScripts.selectColumns.moveDown('_Measures')" style="background-color:white"> <img src="../skins/modern/viewer/images/pagedown.gif" </button> <button onclick="paulScripts.selectColumns.moveToBottom('_Measures')" style="background-color:white" > <img src="../skins/modern/viewer/images/bottom.gif" </button>
<div style="display:none"> </div><script>paulScripts.selectColumns.reselectFields('_Measures')</script> <input type="button" onclick=" paulScripts.selectColumns.mergeFields('_Attributes'); paulScripts.selectColumns.prepUseValues('_Attributes') ; paulScripts.selectColumns.mergeFields('_Measures'); paulScripts.selectColumns.prepUseValues('_Measures') ; promptAction('finish');" value="Finish">
<script> var timerlen = 5 , slideAniLen = 250 , timerID = new Array() , startTime = new Array() , obj = new Array() , endHeight = new Array() , endWidth = new Array() , moving = new Array() , dir = new Array(); function slideright(objname){ if(moving[objname]) return; if(objname.style.visibility != "hidden") return; // cannot slide down something that is already visible moving[objname] = true; dir[objname] = "right"; startslide(objname); } function slidedown(objname){ if(moving[objname]) return; if(objname.style.visibility != "hidden") return; // cannot slide down something that is already visible moving[objname] = true; dir[objname] = "down"; startslide(objname); } function slideup(objname){ if(moving[objname]) return; if(objname.style.visibility == "hidden") return; // cannot slide up something that is already hidden moving[objname] = true; dir[objname] = "up"; startslide(objname); } function slideleft(objname){ if(moving[objname]) return; if(objname.style.visibility == "hidden") return; // cannot slide up something that is already hidden moving[objname] = true; dir[objname] = "left"; startslide(objname); } function startslide(objname){ obj[objname] = objname; startTime[objname] = (new Date()).getTime(); //for sliding down endHeight[objname] = parseInt(obj[objname].style.height?obj[objname].style.height:obj[objname].offsetHeight); //for sliding right endWidth[objname] = parseInt(obj[objname].style.width?obj[objname].style.width:obj[objname].offsetWidth); if(dir[objname] == "down"){ obj[objname].style.height = "1px"; } if(dir[objname] == "right"){ obj[objname].style.width = "1px"; } obj[objname].style.visibility = "visible"; timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen); } function slidetick(objname){ var multiplier; if(dir[objname] == "up" || dir[objname] == "down") {multiplier = endHeight[objname]} if(dir[objname] == "left" || dir[objname] == "right") {multiplier = endWidth[objname]} var elapsed = (new Date()).getTime() - startTime[objname]; if (elapsed > slideAniLen) endSlide(objname) else { var d =Math.round(elapsed / slideAniLen * multiplier); if(dir[objname] == "up" ) {obj[objname].style.height = endHeight[objname] - (d - 1) +"px";} if(dir[objname] == "left" ) {obj[objname].style.width = endWidth[objname] - (d - 1) +"px";} if(dir[objname] == "down") {obj[objname].style.height = d + "px";} if(dir[objname] == "right") {obj[objname].style.width = d + "px";} } return; } function endSlide(objname){ clearInterval(timerID[objname]); if(dir[objname] == "up" || dir[objname] == "left") {obj[objname].style.visibility= "hidden";} if(dir[objname] == "up" || dir[objname] == "down"){obj[objname].style.height = endHeight[objname] + "px";} if(dir[objname] == "left" || dir[objname] == "right"){obj[objname].style.width = endWidth[objname] + "px";} delete(moving[objname]); delete(timerID[objname]); delete(startTime[objname]); delete(endWidth[objname]); delete(endHeight[objname]); delete(obj[objname]); delete(dir[objname]); return; } </script> Report <span style="cursor:hand" onclick=" document.getElementById('Prompts').style.visibility=='hidden'?slidedown(document.getElementById('Prompts')):slideup(document.getElementById('Prompts')); ">Prompts</span><div id="Prompts" style="display:block;visibility:hidden;position:absolute;height:440px;overflow:hidden;background-color:white;"> </div>
No Data Available
Select Fields in List_Attribute# substitute('\|0\|'+sq('All'),'', join('', grep('\|0\|', split(';',promptmany('SelectedFields_Attributes','token',sq('All'))) ) )+sq('All')) # # substitute('\|1\|'+sq('All'),'', join('', grep('\|1\|', split(';',promptmany('SelectedFields_Attributes','token',sq('All'))) ) )+sq('All')) ## substitute('\|2\|'+sq('All'),'', join('', grep('\|2\|', split(';',promptmany('SelectedFields_Attributes','token',sq('All'))) ) )+sq('All')) ## substitute('\|3\|'+sq('All'),'', join('', grep('\|3\|', split(';',promptmany('SelectedFields_Attributes','token',sq('All'))) ) )+sq('All')) ## substitute('\|4\|'+sq('All'),'', join('', grep('\|4\|', split(';',promptmany('SelectedFields_Attributes','token',sq('All'))) ) )+sq('All')) ## substitute('\|0\|'+sq('All'),'', join('', grep('\|0\|', split(';',promptmany('SelectedFields_Measures','token',sq('All'))) ) )+sq('All')) ## substitute('\|1\|'+sq('All'),'', join('', grep('\|1\|', split(';',promptmany('SelectedFields_Measures','token',sq('All'))) ) )+sq('All')) ## substitute('\|2\|'+sq('All'),'', join('', grep('\|2\|', split(';',promptmany('SelectedFields_Measures','token',sq('All'))) ) )+sq('All')) # ParamValue('SelectedFields_Attributes') contains '|0|' ParamValue('SelectedFields_Attributes') contains '|1|' ParamValue('SelectedFields_Attributes') contains '|2|' ParamValue('SelectedFields_Attributes') contains '|3|' ParamValue('SelectedFields_Attributes') contains '|4|' ParamValue('SelectedFields_Measures') contains '|0|' ParamValue('SelectedFields_Measures') contains '|1|' ParamValue('SelectedFields_Measures') contains '|2|'