123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823 |
- var reSectionHeader = /\bsh\b/;
- var reListColumnTitle = /\blt\b/;
- var reListColumnBody = /\blc\b/;
- var reListColumnOuterSummary = /\bos\b/;
- var reListColumnInnerSummary = /\bis\b/;
- var reListColumnSectionSummary = /\bss\b/;
- var reLevelFooter = /\bol\b/;
- var reCrosstabCell = /\bmv\b/;
- var reCrosstabCorner = /\bxm\b/;
- var reCrosstabNodeMember = /\bml\b/;
- var reCrosstabInnerLevelFooter = /\bil\b/;
- var reCrosstabValue = /\b(mv|iv|ov)\b/;
- var reInlineFooter = /\b(if|of)\b/;
- var reInnerHeaderOuterHeader = /\b(ih|oh)\b/;
- var reDragOver = /\s*\bonDragOver\b/;
- var _last_srcElem = null;
- var _last_CrosstabTable = null;
- var _enteredElement = true;
- function dragEnterColumn (event)
- {
- var rf = getReportFrame();
- var rfDoc = getReportFrameDoc();
- if (rfDoc == null || ddController == null)
- return;
-
- _enteredElement = false;
-
-
- if (rfDoc.getElementById("defaultReport"))
- return;
- var dt = event.dataTransfer.getData("Text");
- if ((dt == null) || (dt.indexOf("~~~~~") == -1))
- {
-
- return;
- }
-
- var _top = 0, _left = 0;
-
-
- ddController.setDropEffect(event);
-
- var ddi = ddController.m_ddi;
-
- var srcElem = event.srcElement ? event.srcElement : event.target;
-
- if (srcElem == ddi.getElement() || srcElem.parentNode == ddi.getElement())
- {
- _enteredElement = true;
- return;
- }
-
- if (window.ie) {
- while (srcElem != null && typeof srcElem.tag == "undefined") {
- srcElem = srcElem.parentNode;
- }
- } else {
- while (srcElem != null && !srcElem.getAttribute("tag")) {
- srcElem = srcElem.parentNode;
- }
- }
-
- var minTop = 0;
- var e = rf.offsetParent;
- if (typeof e != "undefined")
- {
- while (e != null)
- {
-
- if (e.tagName != "TR" && typeof e.offsetTop == "number")
- minTop += e.offsetTop;
- e = e.offsetParent;
- }
- }
- var maxHeight = minTop + rf.offsetHeight;
-
-
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- var qsc = (srcElem != null) ? srcElem.getAttribute("qsc") : "";
-
- if ( srcElem == null || srcElem.tag == "footertag" || (qsc != null && (qsc.indexOf("if") != -1 || qsc.indexOf("sf") != -1 || reCrosstabValue.test(qsc) || reCrosstabInnerLevelFooter.test(qsc) || reLevelFooter.test(qsc))) )
- {
- _last_srcElem = null;
-
-
- var sizeColIds = oMQMgr.getAllColumns().length;
- var _id = new Array();
- for (var colIdx = 0; colIdx < sizeColIds; ++colIdx)
- {
- if (goApplicationManager.getMiniQueryManager().isCollapsed(colIdx))
- {
- continue;
- }
- _id.push(oMQMgr.getTag(colIdx));
- }
- _id = _id.toString();
- var _col = new Array();
- var _tdEls = rf.document.getElementsByTagName("td");
- for (var i = 0; i < _tdEls.length; i++)
- {
- if (_tdEls[i].getAttribute("tag") != null && _tdEls[i].getAttribute("tag") != "" && _tdEls[i].getAttribute("tag") != "footerTag")
- {
- _col[_col.length] = _tdEls[i];
- break;
- }
- }
- if (ddi)
- {
- var _left = 0;
- var _top = 0;
- var _height = 0;
- if (_col.length > 0)
- {
- var el = _col[0];
- while (el.tagName.toUpperCase() != "TABLE")
- el = el.parentNode;
- if (typeof el.offsetWidth == "number")
- _left += el.offsetWidth;
- while (el != null)
- {
- if (typeof el.offsetLeft == "number")
- _left += el.offsetLeft;
-
- if (el.tagName != "TR" && typeof el.offsetTop == "number")
- _top += el.offsetTop;
- el = el.parentNode;
- }
- el = _col[0];
- while (el.tagName.toUpperCase() != "TABLE")
- el = el.parentNode;
- _height = el.offsetHeight;
- }
- if (_height <= 0)
- {
-
- _height = 25;
- _left = 25;
- _top = 25;
- }
- if (typeof rf.scrollLeft == "number")
- _left -= rf.scrollLeft;
- if (typeof rf.scrollTop == "number")
- _top -= rf.scrollTop;
-
- if ( _top < minTop )
- _top = minTop;
- maxHeight -= _top;
- if ( _height > maxHeight )
- _height = maxHeight;
- if (ddi != null && !dragHasOnlyFilters())
- ddi.setStyle(_height, DDI_SMALL_SIZE, _top, _left, "inline");
- }
- cfgRemove("lastDropTarget");
- }
- else
- {
- var _class = srcElem.getAttribute("qsc");
- if ( _class == null ) _class = "";
- var bMeasureDrop = false;
-
- var _width = DDI_SMALL_SIZE;
- var _height = DDI_SMALL_SIZE;
-
- setTop = false;
- if (reLevelFooter.test(_class))
- {
-
- var tr = srcElem.parentElement;
- var table = tr.parentElement;
-
- if (oMQMgr.isPivoted(oMQMgr.getColumnIndexByAttribute("tag", srcElem.getAttribute("tag"))))
- {
- if (srcElem.cellIndex > 0)
- _class = tr.cells[srcElem.cellIndex-1].className;
- }
- else
- {
- var ci = 0;
- var ri = tr.rowIndex - 1;
- var colId = srcElem.getAttribute("tag");
-
- if (ri >= 0)
- {
- tr = table.rows[ri];
- for (var ci = 0; ci < tr.cells.length; ci++)
- {
- if (colId == tr.cells[ci].getAttribute("tag"))
- {
- _class = tr.cells[ci].className;
- break;
- }
- }
- }
- setTop = true;
- }
- }
- if (reCrosstabNodeMember.test(_class) || reCrosstabInnerLevelFooter.test(_class))
- {
- var tr = srcElem.parentElement;
- var table = tr.parentElement;
-
-
- if (oMQMgr.isPivoted(oMQMgr.getColumnIndexByAttribute("tag", srcElem.getAttribute("tag"))))
- {
- var ci = 0;
-
-
- while (ci < tr.cells.length && !reCrosstabNodeMember.test(tr.cells[ci].className))
- ci++;
- srcElem = tr.cells[ci];
-
- var el = srcElem;
- while (el!=null)
- {
- if (typeof el.offsetLeft == "number" )
- _left += el.offsetLeft;
-
- if (el.tagName != "TR" && typeof el.offsetTop=="number")
- _top += el.offsetTop;
- el = el.parentNode;
- }
- _top -= 4;
- }
- else
- {
- var ci = srcElem.cellIndex;
- var ri = tr.rowIndex;
- var colId = srcElem.getAttribute("tag");
-
- var newRi = ri;
- var newCi = ci;
-
- ri--;ci=0;
- var cell = null;
- while (ri >= 0)
- {
- cell = table.rows[ri].cells[ci];
- if (cell==null)
- break;
- if ( colId == cell.getAttribute("tag") && reCrosstabNodeMember.test(cell.className) )
- {
- newRi=ri;
- newCi=ci;
- ri--;
- ci=0;
- }
- else if (!reCrosstabCell.test(cell.className) && ci < table.rows[ri].cells.length)
- ci++;
- else
- {
- ri--;
- ci=0;
- }
- }
- srcElem = table.rows[newRi].cells[newCi];
- setTop = true;
-
- _left -= 4;
- }
- }
- if (setTop)
- {
- var table = srcElem.parentElement.parentElement;
- if (table.rows.length > 1)
- {
- var el = table;
- while (el != null)
- {
- if (typeof el.offsetLeft == "number" )
- _left += el.offsetLeft;
-
- if (el.tagName != "TR" && typeof el.offsetTop == "number")
- _top += el.offsetTop;
- el = el.parentNode;
- }
- var numPivots = 0;
- var numMeasures = 0;
- for (var i = 0; i < oMQMgr.getAllColumns().length; i++)
- {
- if (oMQMgr.isPivoted(i))
- {
- numPivots++;
- }
- if (oMQMgr.isMeasure(i) === true)
- {
- numMeasures++;
- }
- }
- if (numMeasures > 1 && (srcElem.parentElement.rowIndex >= numPivots + 1))
- _top += table.rows[numPivots + 1].offsetTop;
- else
- {
- _top += table.rows[numPivots].offsetTop;
- bMeasureDrop = true;
- }
- if (srcElem.cellindex != 0)
- _left += srcElem.offsetLeft;
- }
- }
-
- if (srcElem != _last_srcElem)
- {
- var el = srcElem;
- if (_top == 0)
- {
- while (el!=null)
- {
- if (typeof el.offsetLeft == "number" )
- _left += el.offsetLeft;
- el = el.parentNode;
- }
-
- el = srcElem;
-
- if (reListColumnBody.test(el.className) || reListColumnTitle.test(el.className) || reListColumnInnerSummary.test(el.className) || reListColumnOuterSummary.test(el.className) || reListColumnSectionSummary.test(el.className))
- {
- var tr = el.parentElement;
- var tbody = tr.parentElement;
- var ci = srcElem.cellIndex;
- var ri = tr.rowIndex;
- var tableRows = tbody.rows;
-
- while (ri >= 0)
- {
- var rowCells = tableRows[ri].cells;
- if (rowCells[ci] != null && reListColumnTitle.test(rowCells[ci].className))
- {
- el = rowCells[ci];
- break;
- }
- ri--;
- }
- }
-
- while (el!=null)
- {
-
- if (el.tagName != "TR" && typeof el.offsetTop=="number")
- _top += el.offsetTop;
- el = el.parentNode;
- }
- }
-
- if (typeof rf.scrollLeft == "number")
- _left -= rf.scrollLeft;
- if (typeof rf.scrollTop == "number")
- _top -= rf.scrollTop;
-
- if ( reListColumnTitle.test(_class) || reListColumnBody.test(_class) || reListColumnInnerSummary.test(_class) || reListColumnOuterSummary.test(_class) || reListColumnSectionSummary.test(_class) )
- {
- _height = di_listColumn(srcElem);
- _left -= 4;
- }
- else if (reSectionHeader.test(_class))
- {
- _width = srcElem.offsetWidth;
- _top -= 4;
- }
- else if (reInnerHeaderOuterHeader.test(_class))
- _width = srcElem.offsetWidth;
- else if (reCrosstabNodeMember.test(_class) || reCrosstabInnerLevelFooter.test(_class) || reLevelFooter.test(_class))
- {
- if (oMQMgr.isPivoted(oMQMgr.getColumnIndexByAttribute("tag", srcElem.getAttribute("tag"))))
- {
- _width = di_crosstabLevel_pivot(srcElem);
- }
- else
- {
- _height = di_crosstabLevel(srcElem,bMeasureDrop);
- }
- }
- else if (reCrosstabCorner.test(_class))
- _height = srcElem.offsetHeight;
-
- if (_top < minTop)
- _top = minTop;
- maxHeight -= _top;
- if (_height > maxHeight)
- _height = maxHeight;
- if (_width == DDI_SMALL_SIZE && _height == DDI_SMALL_SIZE)
- _height = srcElem.offsetHeight;
- if (ddi != null && !dragHasOnlyFilters())
- ddi.setStyle(_height, _width, _top, _left, "inline");
-
- cfgSet("lastDropTarget", srcElem.getAttribute("tag"));
- if (reCrosstabCorner.test(_class))
- ddController.dragStartCornerDropZone(srcElem);
- else if (reSectionHeader.test(_class))
- ddController.dragStartSection(srcElem);
- }
- }
-
- if (goApplicationManager.getMiniQueryManager().hasPivottedColumns())
- {
- if (window.ie && srcElem != null && srcElem.parentNode.parentNode != _last_CrosstabTable)
- {
- ddController.dragStartCrosstab(srcElem);
- _last_CrosstabTable = srcElem.parentNode.parentNode;
- }
- else
- {
- _last_CrosstabTable = null;
- }
- }
-
- _enteredElement = true;
- };
- function di_listColumn(srcElem)
- {
- var _height = 0;
-
- var tr = srcElem.parentElement;
- var tbody = tr.parentElement;
- var ci = srcElem.cellIndex;
- var ri = tr.rowIndex;
- var tableRows = tbody.rows;
-
- while (ri >= 0)
- {
- var rowCells = tableRows[ri].cells;
- if (rowCells[ci] != null && reListColumnTitle.test(rowCells[ci].className))
- break;
- ri--;
- }
-
- var sid = srcElem.tag;
-
-
- while (ri < tableRows.length)
- {
- var rowCells = tableRows[ri].cells;
- ci = -1;
- for (var c = 0; c < rowCells.length; c++)
- {
- if (rowCells[c].getAttribute("tag") == sid)
- {
- ci = c;
- break;
- }
- }
- if (ci > -1 && (reListColumnBody.test(rowCells[ci].className) || reListColumnTitle.test(rowCells[ci].className)))
- {
- _height += rowCells[ci].offsetHeight;
- ri += rowCells[ci].rowSpan;
- }
- else if (rowCells[0] != null && reInlineFooter.test(rowCells[0].className))
- {
- _height += rowCells[0].offsetHeight;
- ri++;
- }
- else
- break;
- }
-
- return _height;
- };
- function di_crosstabLevel_pivot(srcElem)
- {
- var _width = 0;
- var tbody = srcElem.parentElement.parentElement;
- for (var i = 1; i < tbody.rows[0].cells.length; i++)
- _width += tbody.rows[0].cells[i].offsetWidth;
- return _width;
- };
- function di_crosstabLevel(srcElem,bMeasureDrop)
- {
- var _height = 0;
- var tr = srcElem.parentElement;
- var table = tr.parentElement;
- var ri = bMeasureDrop ? 1 + table.rows[0].cells[0].rowSpan : table.rows[0].cells[0].rowSpan;
-
-
- for (; ri < table.rows.length;)
- {
- td = table.rows[ri].cells[0];
- _height += td.offsetHeight;
- ri += td.rowSpan;
- }
- return _height;
- };
- function dragOverColumn (event)
- {
- var rfDoc = getReportFrameDoc();
- if (rfDoc == null || ddController == null)
- return;
- var dt = event.dataTransfer.getData("Text");
-
- if ((dt != null) && (dt.indexOf("~~~~~") > -1) && !rfDoc.getElementById("defaultReport"))
- {
-
- if (ddController.m_ddi && !dragHasOnlyFilters())
- ddController.m_ddi.show();
-
-
-
- ddController.setDropEffect(event);
-
- var srcId = event.srcElement ? event.srcElement.id : event.target.id;
- var dzArray = ddController.getDragDropZoneIds();
- for (var i=0; i < dzArray.length; i++)
- {
- if (id == dzArray[i])
- {
- _enteredElement = true;
- break;
- }
- }
- }
- if (!window.ie)
- {
- event.preventDefault();
- }
- };
- function dragLeaveColumn (event, bForceHide)
- {
- if (typeof bForceHide == "undefined")
- bForceHide = false;
- var rfDoc = getReportFrameDoc();
- if (rfDoc == null || ddController == null)
- return;
-
- if (ddController.m_ddi && (_enteredElement == false || bForceHide == true))
- ddController.m_ddi.hide();
- if (!window.ie)
- {
- event.preventDefault();
- }
- };
- function dropColumn(event, tag, groupType)
- {
- var oMQMgr = goApplicationManager.getMiniQueryManager();
- if (typeof groupType == "undefined")
- groupType = "none";
- var rfDoc = getReportFrameDoc();
- if (rfDoc == null || ddController == null)
- return;
-
- var dzArray = ddController.getDragDropZoneIds();
-
- var qid = "-1";
- if (typeof tag == "undefined" || tag == null || tag == "")
- {
- tag = cfgGet("lastDropTarget");
-
- if (typeof tag == "undefined" || tag == null || tag == "")
- {
- var ddi = ddController.m_ddi != null ? ddController.m_ddi.getElement() : null;
- var srcElement = event.srcElement ? event.srcElement : event.target;
- if (ddi != null && srcElement == ddi || srcElement.parentNode == ddi)
- {
- var x = event.x, y = event.y;
- for (var i = 0; i < dzArray.length; i++)
- {
- var dz = rfDoc.getElementById(dzArray[i]);
- if (dz != null && y > dz.offsetTop && y < dz.offsetTop + dz.offsetHeight
- && x> dz.offsetLeft && x < dz.offsetLeft + dz.offsetWidth)
- {
- tag = dzArray[i];
- break;
- }
- }
- }
- }
- }
-
- var bFoundDropZone = false;
- for (var i = 0; i < dzArray.length; i++)
- {
- if (tag == dzArray[i])
- {
- bFoundDropZone = true;
- break;
- }
- }
- if (tag != null && tag != "" && tag != "__reportContent__" && bFoundDropZone == false)
- qid = oMQMgr.getColumnId(oMQMgr.getColumnIndexByAttribute("tag", tag));
- if (qid == MINI_QUERY_NO_COLUMN_FOUND || qid == MINI_QUERY_ATTRIBUTE_NOT_FOUND)
- {
- qid = null;
- }
-
- else if (tag == "xtabHorizDropZone")
- groupType = "pivot";
- else if (tag == "lastSectionDropZone")
- {
- if (cfgGet("DragSelectionType") != "nonMeasure")
- groupType = "none";
- else
- groupType = "header";
- }
- addSelected(qid, groupType);
- event.cancelBubble = true;
- if (!window.ie)
- {
- event.preventDefault();
- }
- event.returnValue = true;
- event.dataTransfer.clearData("Text");
- };
- function dragOverXtabHorizDropZone(event) {
- if (ddController != null && ddController.m_xtabHorizDropZone != null)
- {
- ddController.m_xtabHorizDropZone.dragOver();
- ddController.setDropEffect(event);
- }
- event.cancelBubble = true;
- };
- function dragOverXtabVertDropZone(event) {
- if (ddController != null && ddController.m_xtabVertDropZone != null)
- {
- ddController.m_xtabVertDropZone.dragOver();
- ddController.setDropEffect(event);
- }
- event.cancelBubble = true;
- };
- function dragOverXtabCornerDropZone(event) {
- if (ddController != null && ddController.m_xtabCornerDropZone != null)
- {
- ddController.m_xtabCornerDropZone.dragOver();
- ddController.setDropEffect(event);
- }
- event.cancelBubble = true;
- };
- function dragOverLastSectionDropZone(event) {
- if (ddController != null && ddController.m_lastSectionDropZone != null)
- {
- ddController.m_lastSectionDropZone.dragOver();
- ddController.setDropEffect(event);
- }
- event.cancelBubble = true;
- };
- function dragStartPageEnterColumn (event)
- {
- var rfDoc = getReportFrameDoc();
- if (rfDoc == null || ddController == null)
- return;
- var dt = event.dataTransfer.getData("Text");
- if ((dt == null) || (dt.indexOf("~~~~~") == -1))
- {
-
- return;
- }
-
- var srcElem = event.srcElement ? event.srcElement : event.target;
- if (srcElem.nodeName != "TD")
- return;
- var srcId = srcElem.id;
-
-
- ddController.setDropEffect(event);
- var startPageTable = rfDoc.getElementsByTagName("td");
- for (var i = 0; i < startPageTable.length; i++)
- {
- if (startPageTable[i].id == "defaultReportTDTop")
- startPageTable[i].className = "startPageListColumnTitleOver";
- else if (startPageTable[i].id == "defaultReportTDBottom")
- startPageTable[i].className = "startPageListColumnOver";
- }
- var startPageText = rfDoc.getElementsByTagName("span");
- for (var i = 0; i < startPageText.length; i++)
- {
- if (startPageText[i].name == "startPageText")
- startPageText[i].className = "startPageTextOver";
- }
- event.cancelBubble=true;
- cfgSet("lastDropTarget", srcElem.id);
- };
- function dragStartPageOverColumn (event)
- {
- var dt = event.dataTransfer.getData("Text");
- if ((dt != null) && (dt.indexOf("~~~~~") > -1))
- {
-
-
- if (ddController != null)
- ddController.setDropEffect(event);
- }
- event.cancelBubble=true;
- };
- function dragStartPageLeaveColumn (event)
- {
- var rfDoc = getReportFrameDoc();
- if (rfDoc == null || ddController == null)
- return;
- var srcElem = event.srcElement ? event.srcElement : event.target;
- var srcId = (srcElem != null) ? srcElem.id : "";
- event.cancelBubble = true;
- if (srcId == "defaultReport"
- || srcId == "defaultReportTRTop"
- || srcId == "defaultReportTDTop"
- || srcId == "startPageDropList"
- || srcId == "defaultReportTRBottom"
- || srcId == "defaultReportTDBottom"
- || srcId == "defaultReportInnerTable"
- || srcId == "defaultReportInnerTD1"
- || srcId == "startPageDragDropLine1"
- || srcId == "defaultReportInnerTD2"
- || srcId == "startPageDragDropLine2"
- || srcId == "defaultReportInnerTD3"
- || srcId == "defaultReportImg"
- || srcId == "defaultReportInnerTD4"
- || srcId == "startPageTipsLine1"
- || srcId == "defaultReportInnerTD5"
- || srcId == "startPageTipsLine2")
- return;
- if (srcId != null)
- {
- var startPageTable = rfDoc.getElementsByTagName("td");
- for (var i = 0; i < startPageTable.length; i++)
- {
- if (startPageTable[i].id == "defaultReportTDTop")
- startPageTable[i].className = "startPageListColumnTitle";
- else if (startPageTable[i].id == "defaultReportTDBottom")
- startPageTable[i].className = "startPageListColumn";
- }
- var startPageText = rfDoc.getElementsByTagName("span");
- for (var i = 0; i < startPageText.length; i++)
- {
- if (startPageText[i].name == "startPageText")
- startPageText[i].className = "startPageText";
- }
- }
- };
- function dragHasOnlyFilters()
- {
- var leafNodes = metadataTree.getSelectedLeafNodes();
- var onlyFilters = false;
- for (var i = 0; i < leafNodes.length; i++)
- {
- if (leafNodes[i].getNodeTypeObject().m_bIsFilter == true)
- onlyFilters = true;
- else if (typeof leafNodes[i].getNodeTypeObject().m_bIsFilter == "undefined")
- {
- onlyFilters = false;
- break;
- }
- }
- return onlyFilters;
- };
|