| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091 |
- // Copyright 2006-2019 The MathWorks, Inc.
- // Class RTW_Hash ------------------------------------------------------------
- // Internal web browser doesn't change window.location.hash if the link points
- // to the same page.
- // RTW_Hash remembers the hash value when the page is loaded in the first time
- // or a link is clicked.
- // removeHiliteByHash cleans the high lighted elements according to the stored
- // hash value
- function RTW_Hash(aHash) {
- if (aHash == null) {
- this.fHash = "";
- } else {
- this.fHash = aHash;
- };
-
- this.getHash = function() {
- return this.fHash;
- }
- this.setHash = function(aHash) {
- this.fHash = aHash;
- }
- }
- RTW_Hash.instance = null;
- // Class RTW_TraceInfo --------------------------------------------------------
- function RTW_TraceInfo(aFileLinks) {
- this.fFileLinks = aFileLinks;
- this.fLines = new Array();
- this.fTotalLines = 0; // total number of highlighted lines
- this.fNumLines = new Array();
- this.fFileIdxCache = new Array();
- this.fDisablePanel = false;
- this.fCurrFileIdx = -1;
- this.fCurrLineIdx = -1;
- this.fCurrCodeNode = null;
- this.getHtmlFileName = function(aIndex) {
- if (aIndex < this.fFileLinks.length) {
- var href = this.fFileLinks[aIndex].href;
- return href.substring(href.lastIndexOf('/')+1);
- }
- }
- this.getSrcFileName = function(aIndex) {
- var name = this.getHtmlFileName(aIndex);
- if (name)
- name = RTW_TraceInfo.toSrcFileName(name);
- return name;
- }
- this.getNumFileLinks = function() {
- return this.fFileLinks.length;
- }
- this.setFileLinkColor = function(aIndex, aColor) {
- var link = this.fFileLinks[aIndex];
- if (link && link.parentNode && link.parentNode.style)
- link.parentNode.style.backgroundColor = aColor;
- }
- this.highlightFileLink = function(aIndex, aColor) {
- for (var i = 0; i < this.fFileLinks.length; ++i) {
- this.setFileLinkColor(i, i == aIndex ? aColor : "");
- }
- }
- this.highlightCurrFileLink = function(aColor) {
- this.highlightFileLink(this.fCurrFileIdx);
- }
- this.highlightLines = function(aCodeNode,aColor) {
- this.fCurrCodeNode = aCodeNode;
- var lines = this.fLines[this.getHtmlFileName(this.fCurrFileIdx)];
- if (lines && aCodeNode) {
- for (var i = 0; i < lines.length; ++i) {
- var lineObj = aCodeNode.childNodes[lines[i]-1];
- if (lineObj)
- lineObj.style.backgroundColor=aColor;
- }
- }
- }
- this.getFileIdx = function(aFile) {
- if (this.fFileIdxCache[aFile] != null)
- return this.fFileIdxCache[aFile];
- for (var i = 0; i < this.fFileLinks.length; ++i) {
- if (this.getHtmlFileName(i) == aFile) {
- this.fFileIdxCache[aFile] = i;
- return i;
- }
- }
- return null;
- }
- this.getCurrFileIdx = function() { return this.fCurrFileIdx; }
- this.setNumHighlightedLines = function(aFileIdx, aNumLines) {
- this.fNumLines[aFileIdx] = aNumLines;
- updateNumHighlightedLines(this.fFileLinks[aFileIdx], aNumLines);
- }
- this.getNumLines = function(aFileIdx) {
- return this.fNumLines[aFileIdx] != null ? this.fNumLines[aFileIdx] : 0;
- }
- this.getNumLinesAll = function() {
- var sum = 0;
- var len = this.fNumLines.length;
- for (var i = 0; i < len; ++i) {
- sum += this.getNumLines(i);
- }
- return sum;
- }
- this.getPrevButton = function() {
- var aFrame = getNavFrame();
- if (typeof aFrame !== "undefined" && aFrame !== null)
- return aFrame.document.getElementById("rtwIdButtonPrev");
- else
- return document.getElementById("rtwIdButtonPrev");
- }
- this.getNextButton = function() {
- var aFrame = getNavFrame();
- if (typeof aFrame !== "undefined" && aFrame !== null)
- return aFrame.document.getElementById("rtwIdButtonNext");
- else
- return document.getElementById("rtwIdButtonNext");
- }
- this.getPanel = function() {
- var aFrame = getNavFrame();
- if (typeof aFrame !== "undefined" && aFrame !== null)
- return aFrame.document.getElementById("rtwIdTracePanel");
- else
- return document.getElementById("rtwIdTracePanel");
- }
- this.removeHighlighting = function() {
- for (var i = 0; i < this.fFileLinks.length; ++i) {
- this.setFileLinkColor(i, "");
- this.setNumHighlightedLines(i, 0);
- }
- // remove highlight and reset current code node
- try {
- if (this.fCurrCodeNode != null)
- this.highlightLines(getCodeNode(),"");
- } catch (e) {};
- this.fCurrCodeNode = null;
- if (this.getPrevButton()) { this.getPrevButton().disabled = true; }
- if (this.getNextButton()) { this.getNextButton().disabled = true; }
- if (this.getPanel()) { this.getPanel().style.display = "none"; }
- this.fCurrFileIdx = -1;
- this.fCurrLineIdx = -1;
- }
- this.setCurrLineIdx = function(aLineIdx) {
- this.fCurrLineIdx = aLineIdx;
- }
- this.getCurrLineIdx = function() { return this.fCurrLineIdx; }
- this.setCurrent = function(aFileIdx, aLineIdx) {
- this.fCurrFileIdx = aFileIdx;
- var numLines = this.getNumLines(aFileIdx);
- if (!numLines || aLineIdx >= numLines)
- this.fCurrLineIdx = -1;
- else
- this.fCurrLineIdx = aLineIdx;
- var allNumLines = this.getNumLinesAll();
- if (this.getPrevButton()) {
- this.getPrevButton().disabled = (allNumLines <= 1 || !this.hasPrev());
- }
- if (this.getNextButton()) {
- this.getNextButton().disabled = (allNumLines <= 1 || !this.hasNext());
- }
- if (this.getPanel() && !this.fDisablePanel) {
- this.getPanel().style.display = 'block';
- }
- }
- this.setDisablePanel = function(aDisable) {
- this.fDisablePanel = aDisable;
- }
- this.getPrevFileIdx = function() {
- if (this.fCurrLineIdx > 0)
- return this.fCurrFileIdx;
- for (var i = this.fCurrFileIdx - 1; i >= 0; --i)
- if (this.fNumLines[i] > 0)
- return i;
- return null;
- }
- // update the navigation bar state
- this.updateNavState = function() {
- if (this.getPrevButton())
- this.getPrevButton().disabled = !this.hasPrev();
- if (this.getNextButton())
- this.getNextButton().disabled = !this.hasNext();
- setTraceNumber();
- }
- this.hasPrev = function() {
- return this.getPrevFileIdx() != null;
- }
- this.getFirstFileIdx = function() {
- for (var i = 0; i < this.getNumFileLinks(); ++i)
- if (this.fNumLines[i] > 0)
- return i;
- }
- this.getLastFileIdx = function() {
- for (var i = this.getNumFileLinks(); i >= 0; --i)
- if (this.fNumLines[i] > 0)
- return i;
- }
- this.goFirst = function() {
- this.fCurrFileIdx = this.getFirstFileIdx();
- this.fCurrLineIdx = 0;
- this.updateNavState();
- }
- this.goLast = function() {
- this.fCurrFileIdx = this.getLastFileIdx();;
- this.fCurrLineIdx = this.getNumLines(this.fCurrFileIdx) - 1;
- this.updateNavState();
- }
- this.goPrev = function() {
- var fileIdx = this.getPrevFileIdx();
- if (fileIdx == null)
- return;
- if (fileIdx == this.fCurrFileIdx)
- --this.fCurrLineIdx;
- else {
- this.fCurrFileIdx = fileIdx;
- this.fCurrLineIdx = this.getNumLines(fileIdx) - 1;
- }
- this.updateNavState();
- }
- this.getNextFileIdx = function() {
- if (this.fCurrLineIdx < this.getNumLines(this.fCurrFileIdx) - 1 && this.getNumLines(this.fCurrFileIdx) > 0)
- return this.fCurrFileIdx;
- for (var i = this.fCurrFileIdx + 1; i < this.getNumFileLinks(); ++i)
- if (this.fNumLines[i] > 0)
- return i;
- return null;
- }
- this.hasNext = function() {
- return this.getNextFileIdx() != null;
- }
- this.goNext = function() {
- var fileIdx = this.getNextFileIdx();
- if (fileIdx == null)
- return;
- if (fileIdx == this.fCurrFileIdx)
- ++this.fCurrLineIdx;
- else {
- this.fCurrFileIdx = fileIdx;
- this.fCurrLineIdx = 0;
- }
- this.updateNavState();
- }
- this.setTotalLines = function(num) {
- this.fTotalLines = num;
- }
- this.getTotalLines = function() { return this.fTotalLines;}
- this.setLines = function(aFile, aLines) {
- this.fLines[aFile] = aLines;
- var index = this.getFileIdx(aFile);
- if (index != null)
- this.setNumHighlightedLines(index,aLines.length);
- }
- this.getLines = function(aFile) {
- return this.fLines[aFile];
- }
- // get current on focus line number
- this.getCurrLine = function() {
- var file = this.getHtmlFileName(this.getCurrFileIdx());
- var lines = this.fLines[file];
- var line = null;
- if (lines) {
- var line = lines[this.fCurrLineIdx];
- }
- return line;
- }
- this.getHRef = function(aFileIdx, aLineIdx, offset) {
- var file = this.getHtmlFileName(aFileIdx);
- var lines = this.fLines[file];
- if (lines) {
- var line = lines[aLineIdx];
- line = offset_line(line, offset);
- file = file+"#"+line;
- }
- return file;
- }
-
- this.getCurrentHRef = function(offset) {
- return this.getHRef(this.fCurrFileIdx, this.fCurrLineIdx, offset);
- }
- this.setInitLocation = function(aFile, aLine) {
- var fileIdx = this.getFileIdx(aFile);
- var lineIdx = null;
- if (fileIdx != null && aLine) {
- var lines = this.getLines(aFile);
- for (var i = 0; i < lines.length; ++i) {
- if (lines[i] == aLine) {
- lineIdx = i;
- break;
- }
- }
- }
- if (fileIdx == null || lineIdx == null)
- this.setCurrent(-1,-1);
- else
- this.setCurrent(fileIdx,lineIdx);
- }
- }
- // Static methods in RTW_TraceInfo
- RTW_TraceInfo.getFileLinks = function(docObj) {
- var links;
- if (docObj && docObj.getElementsByName)
- links = docObj.getElementsByName("rtwIdGenFileLinks");
- return links ? links : new Array();
- }
- RTW_TraceInfo.toSrcFileName = function(aHtmlFileName) {
- aHtmlFileName = aHtmlFileName.replace(/_c.html$/,".c");
- aHtmlFileName = aHtmlFileName.replace(/_h.html$/,".h");
- aHtmlFileName = aHtmlFileName.replace(/_cpp.html$/,".cpp");
- aHtmlFileName = aHtmlFileName.replace(/_hpp.html$/,".hpp");
- aHtmlFileName = aHtmlFileName.replace(/_cc.html$/,".hpp");
- return aHtmlFileName;
- }
- RTW_TraceInfo.instance = null;
- // Class RTW_TraceArgs --------------------------------------------------------
- // file.c:10,20,30&file.h:10,20,30[&color=value] or
- // sid=model:1[&color=value]
- RTW_TraceArgs = function(aHash) {
- this.fColor = null;
- this.fFontSize = null;
- this.fInitFile = null;
- this.fInitLine = null;
- this.fSID = null;
- this.fFiles = new Array();
- this.fLines = new Array();
- this.fMessage = null;
- this.fBlock = null;
- this.fNumBlocks = 0;
- this.fUseExternalBrowser = true;
- this.fInStudio = false;
- this.fModel2CodeSrc = null;
- this.fInCodeTrace = false;
- this.fTraceData = null;
- this.fFileIdx = []; // filename to fileId
- this.fRows = []; // highlighted rows indexed by fileId
- this.fIDs = []; // highlighted IDs indexed by fileId
- this.hasSid = function() {
- return !(this.fSID == null);
- }
- this.parseCommand = function(aHash) {
- var args = new Array();
- args = aHash.split('&');
- for (var i = 0; i < args.length; ++i) {
- var arg = args[i];
- sep = arg.indexOf('=');
- if (sep != -1) {
- var cmd = arg.substring(0,sep);
- var opt = arg.substring(sep+1);
- switch (cmd.toLowerCase()) {
- case "color":
- this.fColor = opt;
- break;
- case "fontsize":
- this.fFontSize = opt;
- break;
- case "initfile":
- this.fInitFile = RTW_TraceArgs.toHtmlFileName(opt);
- break;
- case "initline":
- this.fInitLine = opt;
- break;
- case "msg":
- this.fMessage = opt;
- break;
- case "block":
- this.fBlock = unescape(opt);
- break;
- case "numblocks":
- this.fNumBlocks = parseInt(opt);
- break;
- case "sid":
- this.fSID = opt;
- // convert sid to code location
- break;
- case "model2code_src":
- // model2code_src from model or webview
- this.fModel2CodeSrc = opt;
- break;
- case "useexternalbrowser":
- this.fUseExternalBrowser = (opt=="true");
- break;
- case "instudio":
- this.fInStudio = (opt=="true");
- break;
- case "incodetrace":
- this.fInCodeTrace = (opt=="true");
- break;
- case "tracedata":
- this.fTraceData = decodeURI(opt);
- break;
- }
- }
- }
- }
- this.parseUrlHash = function(aHash) {
- var rows, sep, assignSep;
- if (aHash) {
- args = aHash.split('&');
- for (var i = 0; i < args.length; ++i) {
- var arg = args[i];
- sep = arg.indexOf(':');
- assignSep = arg.indexOf('=');
- if (sep !== -1 && assignSep === -1) {
- var fileLines = arg.split(':');
- var htmlFileName = RTW_TraceArgs.toHtmlFileName(fileLines[0]);
- this.fFileIdx[htmlFileName] = i;
- this.fFiles.push(htmlFileName);
- if (fileLines[1]) {
- rows = fileLines[1].split(',');
- rows = uniqueRows(rows);
- this.fLines.push(rows);
- this.fRows[i] = rows;
- }
- }
- }
- if (this.fInitFile == null && this.fFiles.length > 0) {
- this.fInitFile = this.fFiles[0];
- this.fInitLine = (this.fLines[0] == null ? -1 : this.fLines[0][0]);
- }
- }
- }
- this.parseUrlHash2 = function(aHash) {
- aHash = decodeURI(aHash);
- var rows;
- var ids;
- if (aHash && aHash.length > 0 && aHash[0] === "[") {
- var input = eval(aHash);
- var i;
- var j;
- // set highlight files from url
- for (i=0; i<input.length;i++) {
- rows = new Array();
- ids = new Array();
- this.fFileIdx[input[i].file] = i;
- this.fFiles.push(input[i].file);
- ids = input[i].id;
- for (j=0; j<ids.length;j++) {
- // get row number
- if (ids[j].indexOf("c") !== -1)
- rows.push(Number(ids[j].substring(0,ids[j].indexOf("c"))));
- else
- rows.push(Number(ids[j]));
- }
- rows = uniqueRows(rows);
- this.fRows[i] = rows;
- this.fIDs[i] = ids;
- }
- } else {
- // reset all states
- this.fFiles = [];
- this.fRows = [];
- this.fIDs = [];
- }
- return;
- }
- this.getFileIdx = function(aFileName) {
- if (aFileName) {
- return this.fFileIdx[aFileName];
- } else {
- // return the fileIdx of the current display file
- var pathname = top.rtwreport_document_frame.location.pathname;
- pathname = pathname.substr(pathname.lastIndexOf("/")+1);
- // find the highlight file name
- return this.getFileIdx(pathname);
- }
- }
- this.getColor = function() { return this.fColor; }
- this.getFontSize = function() { return this.fFontSize; }
- this.getInitFile = function() { return this.fInitFile; }
- this.getInitLine = function() { return this.fInitLine; }
- this.getNumFiles = function() { return this.fFiles.length; }
- this.getSID = function() { return this.fSID; }
- this.getFile = function(aIdx) { if (isNaN(aIdx)) return this.fFiles; return this.fFiles[aIdx];}
- this.getLines = function(aIdx) { return this.fLines[aIdx]; }
- this.getUseExternalBrowser = function() { return this.fUseExternalBrowser; }
- this.getInStudio = function() { return this.fInStudio; }
- this.getInCodeTrace = function() { return this.fInCodeTrace; }
- this.getTraceData = function() { return this.fTraceData; }
- this.getModel2CodeSrc = function() { return this.fModel2CodeSrc; }
- this.setUseExternalBrowser = function(val) { this.fUseExternalBrowser = val; }
- this.setInCodeTrace = function(val) { this.fInCodeTrace = val; }
- this.setTraceData = function(val) { this.fTraceData = val; }
- this.setModel2CodeSrc = function(val) { this.fModel2CodeSrc = val; }
- this.getRows = function(aIdx) { return this.fRows[aIdx];}
- this.getIDs = function(aIdx) { return this.fIDs[aIdx]; }
- this.getBlock = function() { return this.fBlock; }
- this.getNumBlocks = function() { return this.fNumBlocks; }
- // constructor
- this.parseCommand(aHash);
- }
- // Static methods in RTW_TraceArgs
- RTW_TraceArgs.toHtmlFileName = function(aFile) {
- f = aFile;
- aFile = f.substring(0,f.lastIndexOf('.')) + '_' + f.substring(f.lastIndexOf('.')+1) + ".html";
- return aFile;
- }
- RTW_TraceArgs.instance = null;
- RTW_MessageWindow = function(aWindow, aParagraph) {
- this.fWindow = aWindow;
- this.fParagraph = aParagraph;
-
- this.print = function(msg) {
- this.fParagraph.innerHTML = msg;
- if (msg)
- this.fWindow.style.display = "block";
- else
- this.fWindow.style.display = "none";
- }
- this.clear = function() {
- this.print("");
- }
- }
- // RTW_MessageWindow factory
- RTW_MessageWindowFactory = function(aDocObj) {
- this.fDocObj = aDocObj;
- this.fInstance = null;
- this.getInstance = function() {
- if (this.fInstance)
- return this.fInstance;
- if (!this.fDocObj)
- return;
-
- var table = this.fDocObj.getElementById("rtwIdMsgWindow");
- var paragraph = this.fDocObj.getElementById("rtwIdMsg");
- var button = this.fDocObj.getElementById("rtwIdButtonMsg");
- if (!table || !paragraph || !button)
- return null;
- obj = new RTW_MessageWindow(table,paragraph);
- button.onclick = function() { obj.clear(); }
- this.fInstance = obj;
- return this.fInstance;
- }
- }
- RTW_MessageWindowFactory.instance = null;
- RTW_MessageWindow.factory = function(aDocObj) {
- if (!RTW_MessageWindowFactory.instance)
- RTW_MessageWindowFactory.instance = new RTW_MessageWindowFactory(aDocObj);
- return RTW_MessageWindowFactory.instance.getInstance();
- }
- // Callbacks and helper functions ---------------------------------------------
- // Helper functions
- function getCodeNode() {
- return rtwSrcFrame().document.getElementById("RTWcode");
- }
- function rtwMidFrame() {
- return top.document.getElementById('rtw_midFrame');
- }
- function rtwSrcFrame() {
- return top.rtwreport_document_frame;
- }
- function rtwTocFrame() {
- return top.rtwreport_contents_frame;
- }
- function rtwNavToolbarFrame() {
- return top.rtwreport_navToolbar_frame; // return rtwTocFrame();
- }
- function rtwInspectFrame() {
- return top.rtwreport_inspect_frame; // return rtwTocFrame();
- }
- function rtwGetFileName(url) {
- var slashIdx = url.lastIndexOf('/');
- var hashIdx = url.indexOf('#', slashIdx);
- if (hashIdx == -1)
- return url.substring(slashIdx+1)
- else
- return url.substring(slashIdx+1,hashIdx);
- }
- // Help function to expand the file group
- function expandFileGroup(docObj, tagID) {
- if (docObj.getElementById) {
- var obj_table = docObj.getElementById(tagID);
- var o;
- while (obj_table.nodeName != "TABLE") {
- if (obj_table.parentNode) {
- obj_table = obj_table.parentNode;
- } else {
- return;
- }
- }
- if (obj_table.style.display == "none") {
- var category_table = obj_table.parentNode;
- while (category_table.nodeName != "TABLE") {
- if (category_table.parentNode) {
- category_table = category_table.parentNode;
- } else {
- return;
- }
- }
- var o = category_table.id + "_button";
- o = docObj.getElementById(o);
- if (o && top.rtwreport_contents_frame.rtwFileListShrink) {
- top.rtwreport_contents_frame.rtwFileListShrink(o, category_table.id,
- category_table.getAttribute('label'), 0);
- }
- }
- }
- }
- // Help function to set the background color based on Element's Id in a document
- // object
- function setBGColorByElementId(docObj, tagID, bgColor) {
- var status = false;
- if (bgColor == "") {
- bgColor = "TRANSPARENT";
- }
-
- if (docObj.getElementById) {
- var obj2Hilite = docObj.getElementById(tagID);
- if (obj2Hilite && obj2Hilite.parentNode) {
- obj2Hilite.parentNode.style.backgroundColor = bgColor;
- status = true;
- }
- }
- return status;
- }
- // Help function to set the background color based on Element's name in a document
- // object
- function setBGColorByElementsName(docObj, tagName, bgColor) {
- if (bgColor == "") {
- bgColor = "TRANSPARENT";
- }
- if (docObj.getElementsByName) {
- var objs2Hilite = docObj.getElementsByName(tagName);
- for (var objIndex = 0; objIndex < objs2Hilite.length; ++objIndex) {
- if (objs2Hilite[objIndex].parentNode)
- objs2Hilite[objIndex].parentNode.style.backgroundColor = bgColor;
- }
- }
- }
- // Help function to highlight lines in source file based on Element's name
- // Note: Name of docHiliteByElementsName would be better
- function hiliteByElementsName(winObj, tagName) {
- var hiliteColor = "#aaffff";
- if (winObj.document)
- setBGColorByElementsName(winObj.document, tagName, hiliteColor);
- }
- // Help function to remove the highlight of lines in source file based on Element's name
- function removeHiliteByElementsName(winObj, tagName) {
- if (winObj.document)
- setBGColorByElementsName(winObj.document, tagName, "");
- }
- // Help function to set the background color based on the URL's hash
- function setBGColorByHash(docObj, bgColor) {
- if (docObj.location) {
- var tagName = docObj.location.hash;
- // Use the stored hash value if it exists because the location.hash
- // may be wrong in internal web browser
- if (RTW_Hash.instance)
- tagName = RTW_Hash.instance.getHash();
- if (tagName != null)
- tagName = tagName.substring(1);
-
- var codeNode = docObj.getElementById("RTWcode");
- if (tagName != null && tagName != "") {
- if (!isNaN(tagName))
- tagName = Number(tagName) + 10;
- setBGColorByElementsName(docObj, tagName, bgColor);
- }
- }
- }
- // Highlight the lines in document frame based on the URL's hash
- function hiliteByHash(docObj) {
- var hiliteColor = "#aaffff";
- setBGColorByHash(docObj, hiliteColor);
- }
- // Remove highlight of lines in document frame based on the URL's hash
- function removeHiliteByHash(winObj) {
- if (winObj.document)
- setBGColorByHash(winObj.document, "");
- }
- // Highlight the filename Element in TOC frame based on the URL's filename
- function hiliteByFileName(aHref) {
- var status = false;
- if (!top.rtwreport_contents_frame)
- return status;
- var hiliteColor = GlobalConfig.fileLinkHiliteColor;
- var fileName = rtwGetFileName(aHref);
- if (top.rtwreport_contents_frame.document) {
- removeHiliteFileList(top.rtwreport_contents_frame);
- status = setBGColorByElementId(top.rtwreport_contents_frame.document, fileName, hiliteColor);
- if (status)
- expandFileGroup(top.rtwreport_contents_frame.document, fileName);
- }
- return status;
- }
- // Clear the highlights in the code navigation frame.
- function removeHiliteCodeNav(winObj) {
- removeHiliteTOC(winObj);
- removeHiliteFileList(winObj);
- }
- // Clear the highlights in TOC frame. TOC links are named TOC_List
- function removeHiliteTOC(winObj) {
- removeHiliteByElementsName(winObj, "TOC_List");
- }
- // Clear the highlights in Generated File List.
- // The filename links are named rtwIdGenFileLinks,
- function removeHiliteFileList(winObj) {
- removeHiliteByElementsName(winObj, "rtwIdGenFileLinks");
- }
- // Highlight TOC hyperlinks by their Ids.
- function tocHiliteById(id) {
- hiliteColor = GlobalConfig.fileLinkHiliteColor;
- if (top && top.rtwreport_contents_frame && top.rtwreport_contents_frame.document) {
- removeHiliteCodeNav(top.rtwreport_contents_frame);
- setBGColorByElementId(top.rtwreport_contents_frame.document, id, hiliteColor);
- }
- }
- // onClick function to highlight the link itself
- function tocHiliteMe(winObj, linkObj, bCleanTrace) {
- hiliteColor = GlobalConfig.fileLinkHiliteColor;
- // remove the trace info (previous highlighted source code and the navigate
- // panel)
- // Clean Trace info only when links in TOC clicked. Links of filenames won't
- // clean trace info.
- if (bCleanTrace) {
- if (RTW_TraceInfo.instance) {
- RTW_TraceInfo.instance.setDisablePanel(true);
- rtwRemoveHighlighting();
- }
- closeInspectWindow();
- }
- removeHiliteCodeNav(winObj);
- if (linkObj.parentNode) {
- linkObj.parentNode.style.backgroundColor= hiliteColor;
- }
- }
- // onClick function to clean the currently highlighed lines in document frame
- // based on URL's hash
- // Then highlight lines in document frame based on Element's name
- // It works for links to some elements in the same page, otherwise,
- // rtwFileOnLoad() in loading page does the job.
- function docHiliteMe(winObj, elementName) {
- // First, remove the highlighted elements by stored hash value
- removeHiliteByHash(winObj);
- // Store the new hash value defined by elementName
- if (RTW_Hash.instance) {
- RTW_Hash.instance.setHash("#"+elementName);
- } else {
- RTW_Hash.instance = new RTW_Hash("#"+elementName);
- }
- hiliteByElementsName(winObj, elementName);
- }
- // Callback for generated file load callback
- function rtwFileOnLoad(docObj) {
- if (!docObj.location || !docObj.location.href)
- return;
- // Save the hash value when file is loaded in the first time
- if (!RTW_Hash.instance) {
- RTW_Hash.instance = new RTW_Hash(docObj.location.hash);
- } else {
- RTW_Hash.instance.setHash(docObj.location.hash);
- }
-
- updateHyperlinks();
- // highlight lines in source code file according to the URL hash
- hiliteByHash(docObj);
- // highlight the filename in the TOC frame
- if (top.rtwreport_contents_frame) {
- if (hiliteByFileName(docObj.location.href)) {
- // remove the highlights in the TOC frame if filename is hilite successfully
- removeHiliteTOC(top.rtwreport_contents_frame);
- }
- }
-
- if (!RTW_TraceInfo.instance)
- return;
- if (!docObj.getElementById)
- return;
- if (rtwSrcFrame())
- rtwSrcFrame().focus();
- var fileName = rtwGetFileName(docObj.location.href);
- var fileIdx = RTW_TraceInfo.instance.getFileIdx(fileName);
- if (fileIdx != null) {
- if (fileIdx != RTW_TraceInfo.instance.getCurrFileIdx())
- RTW_TraceInfo.instance.setCurrent(fileIdx,-1);
- var codeNode = docObj.getElementById("RTWcode");
- var hiliteColor = RTW_TraceArgs.instance.getColor();
- if (!hiliteColor) {
- hiliteColor = "#aaffff";
- }
- var fontSize = RTW_TraceArgs.instance.getFontSize();
- if (fontSize) {
- codeNode.style.fontSize = fontSize;
- }
- RTW_TraceInfo.instance.highlightLines(codeNode,hiliteColor);
- RTW_TraceInfo.instance.highlightFileLink(fileIdx, GlobalConfig.fileLinkHiliteColor);
- }
- }
- function Nav(fileIdx1, fileIdx2) {
- var filename = top.rtwreport_document_frame.location.pathname.split(/\//);
- filename = filename[filename.length-1];
- var currentFileIdx = RTW_TraceInfo.instance.getFileIdx(filename);
- if (fileIdx1 === currentFileIdx) {
- top.rtwreport_document_frame.document.location.href = RTW_TraceInfo.instance.getCurrentHRef();
- top.initLine = top.rtwreport_document_frame.document.location.hash.substr(1);
- addTagToCurrentLine();
- if (top.rtwreport_contents_frame) {
- if (hiliteByFileName(top.rtwreport_document_frame.location.href))
- removeHiliteTOC(top.rtwreport_contents_frame);
- }
- } else {
- var aUrl = RTW_TraceInfo.instance.getCurrentHRef();
- if (hasWebviewFrame()) {
- top.rtwreport_document_frame.document.location.href=aUrl;
- } else {
- top.rtwreport_document_frame.document.location.href=aUrl + "+newPage";
- }
- }
- }
- // Callback for "Prev" button
- function rtwGoPrev() {
- if (RTW_TraceInfo.instance && top.rtwreport_document_frame) {
- var prevfileIdx = RTW_TraceInfo.instance.getPrevFileIdx();
- var currfileIdx = RTW_TraceInfo.instance.fCurrFileIdx;
- rmTagToCurrentLine();
- RTW_TraceInfo.instance.goPrev();
- Nav(prevfileIdx, currfileIdx);
- }
- }
- // Callback for "First" button
- function rtwGoFirst() {
- if (RTW_TraceInfo.instance && top.rtwreport_document_frame) {
- var prevfileIdx = RTW_TraceInfo.instance.getFirstFileIdx();
- var currfileIdx = RTW_TraceInfo.instance.fCurrFileIdx;
- rmTagToCurrentLine();
- RTW_TraceInfo.instance.goFirst();
- Nav(prevfileIdx, currfileIdx);
- }
- }
- // Callback for navigation button onclick
- var navButtonStatus = (function() {
- var isclicked = false;
- return {
- clicked: function () {
- isclicked = true;
- return false;
- },
- reset: function () {
- isclicked = false;
- },
- isClicked: function () {
- return isclicked;
- }
- };
- })();
- // Callback for "Next" button
- function rtwGoNext() {
- if (RTW_TraceInfo.instance && top.rtwreport_document_frame) {
- var nextfileIdx = RTW_TraceInfo.instance.getNextFileIdx();
- var currfileIdx = RTW_TraceInfo.instance.fCurrFileIdx;
- rmTagToCurrentLine();
- RTW_TraceInfo.instance.goNext();
- Nav(nextfileIdx, currfileIdx);
- }
- }
- // Callback for "Last" button
- function rtwGoLast() {
- if (RTW_TraceInfo.instance && top.rtwreport_document_frame) {
- var nextfileIdx = RTW_TraceInfo.instance.getLastFileIdx();
- var currfileIdx = RTW_TraceInfo.instance.fCurrFileIdx;
- rmTagToCurrentLine();
- RTW_TraceInfo.instance.goLast();
- Nav(nextfileIdx, currfileIdx);
- }
- }
- function addTagToCurrentLine() {
- rmHiliteClickedToken();
- tagCurrentLine(true);
- }
- function rmTagToCurrentLine() {
- tagCurrentLine(false);
- }
- // tag current line by changing the bacgkround color of the line
- function tagCurrentLine(addColor) {
- if (RTW_TraceInfo.instance) {
- var o = top.rtwreport_document_frame.document.getElementById(RTW_TraceInfo.instance.getCurrLine());
- if (o) {
- if (addColor) {
- o.className = "hiliteCurrentLine";
- } else {
- o.className = "hilite";
- }
- }
- }
- }
- // Helper function for main document load callback
- function rtwMainOnLoadFcn(topDocObj,aLoc,aPanel,forceReload) {
- var loc;
- var aHash="";
- var lastArgs = null;
- var tocDocObj = top.rtwreport_contents_frame.document;
- if (typeof forceReload === "undefined") {
- forceReload = false;
- }
- // get the hash value from location.
- if (!aLoc) {
- loc = topDocObj.location;
- if (loc.search || loc.hash) {
- if (loc.search)
- aHash = loc.search.substring(1);
- else
- aHash = loc.hash.substring(1);
- }
- } else {
- aHash = aLoc;
- if (RTW_TraceArgs.instance)
- lastArgs = RTW_TraceArgs.instance;
- }
- // parse URL hash value
- RTW_TraceArgs.instance = new RTW_TraceArgs(aHash);
- // load metrics
- load_metrics();
- // hide content panel if in studio
- if (RTW_TraceArgs.instance.getInStudio()) {
- setupInStudio();
- }
- // use incode traceability
- if (RTW_TraceArgs.instance.getInCodeTrace()) {
- RTW_TraceArgs.instance.parseUrlHash2(RTW_TraceArgs.instance.getTraceData());
- inCodeTraceOnload();
- return;
- }
- if (lastArgs !== null) {
- RTW_TraceArgs.instance.setUseExternalBrowser(lastArgs.getUseExternalBrowser());
- RTW_TraceArgs.instance.setModel2CodeSrc(lastArgs.getModel2CodeSrc());
- }
- // get highlight url using sid
- if (RTW_TraceArgs.instance.hasSid()) {
- aHash = getCodeLines();
- }
- // parse hash to look for msg=...&block=... pattern
- RTW_TraceArgs.instance.parseCommand(aHash);
- // parse hash to look for file.c:10,12&file.h:10,12
- RTW_TraceArgs.instance.parseUrlHash(aHash);
- // hide navigation buttons if not in MATLAB
- if (RTW_TraceArgs.instance.getUseExternalBrowser() && tocDocObj.getElementById) {
- var o = tocDocObj.getElementById("nav_buttons");
- if (o != null) {
- o.style.display = "none";
- }
- }
- // hide web view frameset if model2code_src is model
- if (RTW_TraceArgs.instance.getModel2CodeSrc() === "model") {
- var o = top.document.getElementById('rtw_webviewMidFrame');
- if (o) {
- o.rows = "100%,0%";
- }
- }
- // stop onload when it has been loaded
- if (window.location.search.indexOf("loaded=true") > 0
- && top.rtwreport_document_frame.location.href !== "about:blank" && forceReload !== true) {
- updateHyperlinks();
- return;
- }
-
- // modify modelref links
- update_modelref_report_link(top.rtwreport_contents_frame.document);
- try {
- // ignore browser security error
- update_modelref_report_link(top.rtwreport_document_frame.document);
- } catch(e) {};
- // redirect the page based on the url
- var initPage = null;
- if (RTW_TraceArgs.instance.getNumFiles()) {
- var fileLinks = RTW_TraceInfo.getFileLinks(tocDocObj);
- RTW_TraceInfo.instance = new RTW_TraceInfo(fileLinks);
- RTW_TraceInfo.instance.removeHighlighting()
- var numFiles = RTW_TraceArgs.instance.getNumFiles();
- var tLines = 0;
- for (var i = 0; i < numFiles; ++i) {
- RTW_TraceInfo.instance.setLines(RTW_TraceArgs.instance.getFile(i),RTW_TraceArgs.instance.getLines(i));
- tLines += RTW_TraceArgs.instance.getLines(i).length;
- }
- RTW_TraceInfo.instance.setTotalLines(tLines);
- if (aPanel == false) {
- RTW_TraceInfo.instance.setDisablePanel(true);
- }
- var initFile = RTW_TraceArgs.instance.getInitFile();
- RTW_TraceInfo.instance.setInitLocation(initFile,RTW_TraceArgs.instance.getInitLine());
- if (!hasInCodeTrace()) {
- initPage = RTW_TraceInfo.instance.getCurrentHRef();
- } else {
- initPage = initFile;
- }
- } else {
- // catch error that document frame is in another domain
- try {
- var fileDocObj = top.rtwreport_document_frame.document;
- if (fileDocObj.location && (!fileDocObj.location.href || fileDocObj.location.href == "about:blank")) {
- var summaryPage = tocDocObj.getElementById("rtwIdSummaryPage");
- var tracePage = tocDocObj.getElementById("rtwIdTraceability");
- if (summaryPage) {
- initPage = summaryPage.href;
- } else if (tracePage) {
- initPage = tracePage;
- }
- }
- } catch(e) {};
- }
- if (RTW_TraceArgs.instance && RTW_TraceArgs.instance.fMessage) {
- // display diagnostic message
- var linkId = "rtwIdMsgFileLink";
- var msgFile = tocDocObj.getElementById(linkId);
- if (msgFile && msgFile.style) {
- msgFile.style.display = "block";
- // Highlight the background of msg link
- tocHiliteById(linkId);
- }
- initPage = "rtwmsg.html";
- }
- if (initPage) {
- var is_same_page = false;
- try {
- var fileDocObj = top.rtwreport_document_frame.document;
- is_same_page = isSamePage(fileDocObj.location.href, initPage);
- } catch(e) {};
- if (document.getElementById("rtwreport_document_frame")) {
- document.getElementById("rtwreport_document_frame").setAttribute("src", initPage);
- } else {
- top.rtwreport_document_frame.location.href = initPage;
- }
-
- if (is_same_page) {
- // Goto the same page won't trigger onload function.
- // Call it manuelly to highligh new code location.
- rtwFileOnLoad(top.rtwreport_document_frame.document);
- }
- }
- }
- // Compare if href1(i.e. file:///path/file1.html#222) and href2(i.e.file2.html) are same pages.
- // isSamePage return true if file1 == file2.
- function isSamePage(href1, href2) {
- var page1 = href1.substring(href1.lastIndexOf('/')+1,href1.lastIndexOf('.html'));
- var page2 = href2.substring(href2.lastIndexOf('/')+1,href2.lastIndexOf('.html'));
- return (page1 == page2);
- }
- // Callback for main document loading
- function rtwMainOnLoad() {
- rtwMainOnLoadFcn(document,null,true, false);
- var newUrl;
- // modify history state to avoid reload from pressing back
- if (RTW_TraceArgs.instance && !RTW_TraceArgs.instance.getUseExternalBrowser() &&
- typeof window.history.replaceState === "function") {
- if (window.location.search.length > 0) {
- if (window.location.search.indexOf("loaded=true") === -1) {
- newUrl = document.location.pathname + window.location.search + '&loaded=true';
- } else {
- newUrl = document.location.pathname + window.location.search;
- }
- } else {
- newUrl = document.location.pathname + window.location.search + '?loaded=true';
- }
- window.history.replaceState("","",newUrl);
- }
- }
- // Helper function for traceability report
- function rtwMainReload(location) {
- // remove highlight filename and lines before reloading the page
- if (RTW_TraceInfo.instance)
- RTW_TraceInfo.instance.removeHighlighting();
- rtwMainOnLoadFcn(document,location,true,true);
- }
- function rtwMainReloadNoPanel(location) {
- rtwMainOnLoadFcn(document,location,false,true);
- }
- // Callback for hyperlink "Remove Highlighting"
- function rtwRemoveHighlighting() {
- if (RTW_TraceInfo.instance)
- RTW_TraceInfo.instance.removeHighlighting();
- if (rtwSrcFrame()) {
- rtwSrcFrame().focus();
- }
- if (hasInCodeTrace()) {
- removeInCodeTraceHighlight();
- }
- }
- // Display diagnostic message in document frame
- function rtwDisplayMessage() {
- var docObj = top.rtwreport_document_frame.document;
- var msg = docObj.getElementById(RTW_TraceArgs.instance.fMessage);
- if (!msg) {
- msg = docObj.getElementById("rtwMsg_notTraceable");
- }
- if (msg && msg.style) {
- msg.style.display = "block"; // make message visible
- var msgstr = msg.innerHTML;
- // replace '%s' in message with block name
- if (top.RTW_TraceArgs.instance) {
- var sid = top.RTW_TraceArgs.instance.getBlock();
- if (sid) {
- var block = sid;
- if (top.RTW_rtwnameSIDMap && top.RTW_rtwnameSIDMap.instance && top.RTW_rtwnameSIDMap.instance.getRtwname(sid)) {
- block = top.RTW_rtwnameSIDMap.instance.getRtwname(sid).rtwname;
- block = block.replace("<", "<").replace(">", ">");
- } else {
- block = sid;
- }
- if (block) {
- msgstr = msgstr.replace("%s", block);
- }
- }
- }
- msg.innerHTML = msgstr;
- }
- }
- function updateHyperlinks() {
- docObj = top.rtwreport_document_frame;
- if (docObj && docObj.document) {
- if (RTW_TraceArgs.instance === null || !RTW_TraceArgs.instance.getUseExternalBrowser()) {
- var plain_link = docObj.document.getElementById("linkToText_plain");
- if (plain_link && plain_link.href && plain_link.href.indexOf("matlab:coder.internal.editUrlTextFile") === -1 ) {
- plain_link.href = "matlab:coder.internal.editUrlTextFile('" + str2StrVar(plain_link.href) + "')";
- }
- var alink = docObj.document.getElementById("linkToCS");
- var linkCmd = "matlab:coder.internal.viewCodeConfigsetFromReport";
- if (alink && alink.href && alink.href.indexOf(linkCmd) === -1) {
- alink.href = linkCmd+ "('" + str2StrVar(alink.href) + "');";
- if(alink.style) {
- alink.style.display = "";
- hidden_link = docObj.document.getElementById("linkToCS_disabled");
- if (hidden_link) {
- hidden_link.style.display = "none";
- }
- }
- }
- } else {
- var alink = docObj.document.getElementById("linkToCS");
- if (alink && alink.style) {
- alink.style.display = "none";
- hidden_link = docObj.document.getElementById("linkToCS_disabled");
- if (hidden_link)
- hidden_link.style.display = "";
- }
- if (typeof docObj.document.getElementsByClassName === "function") {
- alinks = docObj.document.getElementsByClassName("callMATLAB");
- } else if (typeof docObj.document.getElementsByName === "function") {
- alinks = docObj.document.getElementsByName("callMATLAB");
- } else {
- alinks = [];
- }
- alink = docObj.document.getElementById("CodeGenAdvCheck");
- if (alink && alink.href && alink.href.indexOf("externalweb=true")===-1) {
- alink.href = alink.href + "?externalweb=true";
- }
- if (typeof docObj.document.getElementsByName === "function")
- var objs = docObj.document.getElementsByName("MATLAB_link");
- else
- objs = [];
- for (var objIndex = 0; objIndex < objs.length; ++objIndex) {
- objs[objIndex].style.display = "none";
- }
- }
- }
- updateCode2ModelLinks(docObj.document);
- // modify modelref links
- update_modelref_report_link(top.rtwreport_contents_frame.document);
- try {
- // ignore browser security error
- update_modelref_report_link(top.rtwreport_document_frame.document);
- } catch(e) {};
- }
- function update_modelref_report_link(docObj) {
- if (docObj.getElementsByName) {
- var arg = "";
- if (RTW_TraceArgs.instance && !RTW_TraceArgs.instance.getUseExternalBrowser()) {
- arg = "?useExternalBrowser=false";
- }
- if (RTW_TraceArgs && RTW_TraceArgs.instance && RTW_TraceArgs.instance.getModel2CodeSrc() != null) {
- if (arg.length > 0)
- arg = arg + "&model2code_src=" + RTW_TraceArgs.instance.getModel2CodeSrc();
- else
- arg = "?model2code_src=" + RTW_TraceArgs.instance.getModel2CodeSrc();
- }
- if (arg.length > 0) {
- links = docObj.getElementsByName('external_link');
- for (var link_idx = 0; link_idx < links.length; ++link_idx) {
- links[link_idx].href = links[link_idx].href + arg;
- }
- }
- }
- }
- function rtwResizeFrame(f) {
- if (f) {
- f.style.height = f.contentWindow.document.body.scrollHeight + "px";
- }
- }
- function rtwPageOnLoad(id) {
- // highlight toc entry
- tocHiliteById(id);
- // restore elements state
- if (top && top.restoreState) {
- if (top.rtwreport_contents_frame && top.rtwreport_contents_frame.document)
- top.restoreState(top.rtwreport_contents_frame.document);
- if (top.rtwreport_document_frame && top.rtwreport_document_frame.document) {
- top.restoreState(top.rtwreport_document_frame.document);
- rtwResizeFrame(top.rtwreport_document_frame.document.getElementById("rtwIdContentsIframe"));
- }
- }
- updateHyperlinks();
- }
- // highlight code after changeSys
- function rtwChangeSysCallback(sid) {
- if (sid == "" || typeof RTW_Sid2UrlHash == "undefined" || !RTW_Sid2UrlHash.instance)
- return false;
- urlHash = RTW_Sid2UrlHash.instance.getUrlHash(sid);
- if (urlHash != undefined) {
- if (RTW_TraceArgs && RTW_TraceArgs.instance &&
- !RTW_TraceArgs.instance.getUseExternalBrowser())
- urlHash = (urlHash == "")? "?useExternalBrowser=false" :
- urlHash+"&useExternalBrowser=false";
- rtwMainReload(urlHash, true);
- return true;
- } else {
- // remove highlighting from traceinfo
- rtwRemoveHighlighting();
- return false;
- }
- }
- function emlFileOnload(docObj) {
- var loc = docObj.location;
- if (loc.hash) {
- var line = loc.hash.substring(1);
- hiliteEmlLine(docObj, line);
- }
- }
- function hiliteEmlLine(docObj, line) {
- var bgColor;
- if (top.HiliteCodeStatus)
- bgColor = "#66CCFF";
- else
- bgColor = "#E8D152";
- // unhighlight
- if (typeof docObj.HiliteLine != "undefined") {
- trObj = docObj.getElementById("LN_"+docObj.HiliteLine);
- if (trObj != null) {
- trObj.style.backgroundColor = "";
- }
- }
- // hilighlight
- trObj = docObj.getElementById("LN_"+line);
- if (trObj != null) {
- trObj.style.backgroundColor = bgColor;
- docObj.HiliteLine = line;
- }
- }
- function emlLineOnClick(docObj,sid,line) {
- if (top) {
- top.HiliteCodeStatus = top.rtwChangeSysCallback(sid);
- }
- hiliteEmlLine(docObj, line);
- }
- function updateCode2ModelLinks(docObj) {
- var webviewFrame = top.document.getElementById('rtw_webviewMidFrame');
- var link2model = false;
- var isTestHarness = false;
- if (top.testHarnessInfo && top.testHarnessInfo.IsTestHarness === "1") {
- isTestHarness = true;
- }
- if (webviewFrame || isTestHarness) {
- if (webviewFrame && RTW_TraceArgs.instance &&
- (RTW_TraceArgs.instance.getModel2CodeSrc() !== "model" ||
- RTW_TraceArgs.instance.getUseExternalBrowser())
- ) {
- hiliteCmd = "javascript:top.rtwHilite(";
- } else {
- hiliteCmd = "matlab:coder.internal.code2model(";
- link2model = true;
- }
- var objs = docObj.getElementsByName('code2model');
- var o = null;
- var str = '';
- var sid = '';
- var pattern = "'code2model',";
- for (var objIndex = 0; objIndex < objs.length; ++objIndex) {
- o = objs[objIndex];
- str = o.href.substring(o.href.indexOf('(')+1);
- if (str.indexOf(pattern) > -1) {
- str = str.substring(str.indexOf(pattern) + pattern.length);
- }
- o.href = hiliteCmd + str;
- if (link2model && isTestHarness) {
- sid = str.substring(0, str.indexOf(")"));
- o.href = hiliteCmd + sid + ",'" +
- top.testHarnessInfo.HarnessName+ "','" +
- top.testHarnessInfo.HarnessOwner+ "','" +
- top.testHarnessInfo.OwnerFileName + "');";
- }
- }
- }
- }
- function rtwHilite(aBlock,aParentSID) {
- if (aBlock.indexOf('-') !== -1) {
- // remove sid range: model:sid:2-10 => model:sid
- var s;
- s = aBlock.split(':');
- if (s.length > 0) {
- s = s[s.length-1];
- if (s.indexOf('-') != -1) {
- aBlock = aBlock.substring(0, aBlock.lastIndexOf(':'));
- }
- }
- }
- if (typeof aParentSID === "undefined") {
- if (top.RTW_SidParentMap && top.RTW_SidParentMap.instance)
- aParentSID = top.RTW_SidParentMap.instance.getParentSid(aBlock);
- else
- aParentSID = aBlock;
- }
- top.HiliteCodeStatus = true;
-
- // webview 2 defines an interface api, call slwebview.
- if (top.slwebview) {
- // webview 2.x
- if (top.codeToWebView(aBlock, aParentSID) === -1) {
- alert("Cannot highlight block in model Web view. It may not be exported.");
- }
-
- } else {
- // webview 1.x
- if (hiliteBlockForRTWReport(aBlock,aParentSID) === false) {
- if (hiliteBlockForRTWReport(aBlock, aBlock) === false) {
- rtwHilite(aParentSID);
- }
- }
- }
- }
- function rtwHiliteMultiple(sids, action) {
- //For new Code Gen report
- if (top.slwebview) {
- // webview 2.x
- if (top.codeToWebViewArray(sids, action) === -1) {
- alert("Cannot highlight block(s) in model Web view. It may not be exported.");
- }
- }
- }
- function str2StrVar(str) {
- return str.replace(/'/g,"''");
- }
- window.onload=rtwMainOnLoad;
- // handle incode traceability highlighting
- function inCodeTraceOnload() {
- var tocDocObj = top.rtwreport_contents_frame.document;
- if (!top.RTW_TraceArgs.instance) {
- var summaryPage = tocDocObj.getElementById("rtwIdSummaryPage");
- top.rtwreport_document_frame.location.href = summaryPage.href;
- return;
- }
- var files = top.RTW_TraceArgs.instance.getFile();
- if (files.length === 0) {
- if (top.RTW_TraceArgs.instance) {
- var block = top.RTW_TraceArgs.instance.getBlock();
- block = block.replace("<", "<").replace(">", ">");
- }
- top.rtwreport_document_frame.document.write("<pre>No traceability information for block " + block + ".</pre>");
- return;
- };
- var fileLinks = RTW_TraceInfo.getFileLinks(tocDocObj);
- RTW_TraceInfo.instance = new RTW_TraceInfo(fileLinks);
- // update filelist with num of highlighted lines
- var tocDoc = top.rtwreport_contents_frame.document;
- var tLines = 0;
- for (var i=0; i<files.length;i++) {
- var fileIdx = top.RTW_TraceArgs.instance.getFileIdx(files[i]);
- if (typeof fileIdx !== "undefined") {
- var rows = top.RTW_TraceArgs.instance.getRows(fileIdx);
- var linkNode = tocDoc.getElementById(files[i]);
- updateNumHighlightedLines(linkNode, rows.length);
- RTW_TraceInfo.instance.setLines(files[i], rows);
- tLines += rows.length;
- }
- }
- // set number of total lines
- RTW_TraceInfo.instance.setTotalLines(tLines);
- // update highligthed from
- if (RTW_TraceArgs.instance.getNumBlocks() === 1) {
- var node = tocDoc.getElementById("rtwIdTraceBlock");
- if (node) node.textContent = RTW_TraceArgs.instance.getBlock();
- }
- // set the initial file and line
- fileIdx = top.RTW_TraceArgs.instance.getFileIdx(files[0]);
- rows = top.RTW_TraceArgs.instance.getRows(fileIdx);
- RTW_TraceInfo.instance.setInitLocation(files[0],rows[0]);
- // highlight first file
- top.rtwreport_document_frame.location.href = files[0];
- return;
- }
- function updateNumHighlightedLines(linkObj, aNumLines) {
- var parent = linkObj.parentNode;
- if (parent && parent.childNodes && parent.childNodes.length > 1) {
- var spanNodes = parent.getElementsByTagName('span');
- var len = spanNodes.length;
- if (len > 0) {
- if (aNumLines > 0) {
- /* display number of matches */
- spanNodes.item(len-1).innerHTML = " ("+aNumLines+")";
- } else {
- /* clear number of matches */
- spanNodes.item(len-1).innerHTML = "";
- }
- }
- }
- }
- function setupInStudio() {
- if (top.whole) {
- var tmp = top.whole.rows.split(",");
- tmp[0] = "35px";
- top.whole.rows = tmp.join();
- }
- if (top.main) {
- var tmp = top.main.cols.split(",");
- tmp[0] = "0";
- top.main.cols = tmp.join();
- }
- // add file list to source file
- if (top.Html2SrcLink && top.Html2SrcLink.instance && top.fileSelector) {
- var myDoc = top.fileSelector.document;
- var fileSelector = myDoc.createElement("select");
- fileSelector.id = "fileSelector";
- fileSelector.onchange = top.fileSelectorOnChange;
- var filename;
- var filelink;
- fileSelector.innerHTML += "<option value='" +
- top.rtwreport_contents_frame.document.getElementById('rtwIdSummaryPage').href +
- "'>Summary</option>";
- for (var i=0; i < top.fileList.length; i++) {
- filename = top.fileList[i];
- filelink = top.Html2SrcLink.instance.getLink2Src(filename);
- fileSelector.innerHTML += "<option value='" + filename + "'>" + filelink.substring(filelink.lastIndexOf('/')+1); + "</option>";
- }
- var bodyNode = myDoc.body;
- bodyNode.insertBefore(fileSelector, bodyNode.firstElementChild);
- var textNode = myDoc.createElement("span");
- textNode.innerHTML = "Goto: ";
- bodyNode.insertBefore(textNode, fileSelector);
- var myCss = myDoc.createElement("link");
- myCss.type = "text/css";
- myCss.rel = "stylesheet";
- myCss.href = "rtwreport.css";
- myDoc.getElementsByTagName("head")[0].appendChild(myCss);
- }
- }
- function toggleNavSideBar(val) {
- if (top.main) {
- var tmp = top.main.cols.split(",");
- if (val === "on") {
- tmp[tmp.length-1] = "15px";
- } else {
- tmp[tmp.length-1] = "0";
- }
- top.main.cols = tmp.join();
- if (top.rtwreport_nav_frame)
- top.rtwreport_nav_frame.location.href = "nav.html";
- }
- };
- function toggleNavToolBar(val)
- {
- var midFrame = rtwMidFrame();
- if (midFrame) {
- var tmp1 = midFrame.rows.split(",");
- var frameIdx = getNavToolbarFrameIdx();
- if (val === "on") {
- tmp1[frameIdx] = "40px";
- } else {
- tmp1[frameIdx] = "0";
- }
- midFrame.rows = tmp1.join();
- if (top.rtwreport_navToolbar_frame) {
- top.rtwreport_navToolbar_frame.location.href = "navToolbar.html";
- }
- }
- };
- var GlobalConfig = {
- navHiliteColor: "#0000ff",
- fileLinkHiliteColor: "#ffff99",
- navToolbarBgcolor: "ivory",
- offset: 10,
- hiliteToken: false
- };
- var NavSideBarState = {
- calLineHeight: 0,
- overLink: false,
- linkTarget: null,
- lastLinkTarget: null,
- linkTargetIdx: 0
- }
- function drawNavSideBar() {
- var rectHeight = 1;
- if (!top || !top.rtwreport_document_frame || !top.rtwreport_nav_frame) return;
-
- if (!top.RTW_TraceArgs.instance) return;
- var fileIdx = top.RTW_TraceArgs.instance.getFileIdx();
- if (fileIdx === undefined) return;
- var rows = top.RTW_TraceArgs.instance.getRows(fileIdx);
- if (rows.length === 0) return; // no highlighted line
-
- var codeTbl = top.rtwreport_document_frame.document.getElementById("codeTbl");
- if (!codeTbl) return; // no code table
-
- var nRows = codeTbl.rows.length + 1;
- var canvas = top.rtwreport_nav_frame.document.getElementById("canvas");
- canvas.width = top.rtwreport_nav_frame.innerWidth;
- canvas.height = top.rtwreport_nav_frame.innerHeight-2;
- NavSideBarState.calLineHeight = canvas.height/nRows;
- if (canvas.getContext) {
- var ctx = canvas.getContext("2d");
- ctx.clearRect(0, 0, canvas.width, canvas.height);
- // fill background
- ctx.fillStyle = GlobalConfig.navToolbarBgcolor;
- ctx.fillRect(0, 0, canvas.width, canvas.height);
- ctx.fillStyle = GlobalConfig.navHiliteColor;
- for (var i=0;i<rows.length;i++) {
- ctx.fillRect(0, Number(rows[i])*NavSideBarState.calLineHeight, canvas.width, rectHeight);
- }
- if (canvas.addEventListener) {
- canvas.addEventListener("mousemove", navBarOnMousemove, false);
- canvas.addEventListener("click", navBarOnClick, false);
- } else if (canvas.attachEvent) {
- canvas.attachEvent("mousemove", navBarOnMousemove);
- canvas.attachEvent("click", navBarOnClick);
- }
- }
- }
- function navBarOnMousemove(e) {
- var y = e.clientY;
- var tolerable_range = 5;
- if (!top.RTW_TraceArgs.instance || !top.rtwreport_nav_frame) return;
- var fileIdx = top.RTW_TraceArgs.instance.getFileIdx();
- var rows = top.RTW_TraceArgs.instance.getRows(fileIdx);
- var lineLoc,nextLineLoc;
- top.rtwreport_nav_frame.document.body.style.cursor="";
- NavSideBarState.overLink = false;
- NavSideBarState.linkTarget = null;
- NavSideBarState.linkTargetIdx = null;
- for (var i=0;i<rows.length;i++) {
- loc = rows[i]*NavSideBarState.calLineHeight;
- // if within the tolerable range
- if (Math.abs(y-loc) <= tolerable_range) {
- top.rtwreport_nav_frame.document.body.style.cursor="pointer";
- var canvas = top.rtwreport_nav_frame.document.getElementById("canvas");
- canvas.title = "navigate to line " + rows[i];
- NavSideBarState.overLink = true;
- NavSideBarState.linkTarget = rows[i];
- NavSideBarState.linkTargetIdx = i;
- break;
- }
- }
- }
- function navBarOnClick(e) {
- if (NavSideBarState.overLink && top.rtwreport_document_frame) {
- rmTagToCurrentLine(); // remove current line tag
- top.RTW_TraceInfo.instance.setCurrLineIdx(NavSideBarState.linkTargetIdx);
- top.rtwreport_document_frame.document.location.href=RTW_TraceInfo.instance.getCurrentHRef();
- top.addTagToCurrentLine(); // add current line tag
- RTW_TraceInfo.instance.updateNavState();
- }
- }
- function removeInCodeTraceHighlight() {
- var docObj = top.rtwreport_document_frame.document;
- toggleNavSideBar("off");
- toggleNavToolBar("off");
- var nodes = docObj.getElementsByClassName("hilite");
- // nodes is a live nodeList. Changing className modifies the list.
- while(nodes.length) {
- nodes[0].className = nodes[0].className.replace("hilite", "");
- }
- var nodes = docObj.getElementsByClassName("hiliteCurrentLine");
- // nodes is a live nodeList. Changing className modifies the list.
- while(nodes.length) {
- nodes[0].className = nodes[0].className.replace("hiliteCurrentLine", "");
- }
- // reset RTW_TraceArgs.instance
- RTW_TraceArgs.instance = null;
- // remove highlight in content panel except the filelink
- if (RTW_TraceInfo && RTW_TraceInfo.instance) {
- var currFileIdx = RTW_TraceInfo.instance.getCurrFileIdx();
- RTW_TraceInfo.instance.removeHighlighting();
- RTW_TraceInfo.instance.highlightFileLink(currFileIdx);
- }
- }
- function getInspectWindow() {
- var divObj = document.createElement("div");
- divObj.id = "popup_window";
- return divObj;
- }
- function getInspectData(file, anchorObj) {
- var metricsData = null;
- var propObj = null;
- var type = null;
- var size = null;
- var cm;
- var srcFileName = RTW_TraceInfo.toSrcFileName(file);
- if (top.rtwreport_nav_frame && top.rtwreport_nav_frame.CodeMetrics &&
- top.rtwreport_nav_frame.CodeMetrics.instance &&
- top.RTW_TraceArgs && top.RTW_TraceArgs.instance &&
- !top.RTW_TraceArgs.instance.getUseExternalBrowser()) {
- cm = top.rtwreport_nav_frame.CodeMetrics.instance;
- }
- if (cm && cm.getMetrics) {
- metricsData = cm.getMetrics(anchorObj.text);
- if (!metricsData) {
- // try static token
- metricsData = cm.getMetrics(srcFileName + ":" + anchorObj.text);
- }
- if (metricsData) {
- type = metricsData.type;
- if (type === "var") {
- type = "Global Variable";
- size = "(" + metricsData.size + " byte)";
- } else if (type === "fcn") {
- type = "Function";
- if (metricsData.stackTotal === -1) {
- size = "(stack: " + metricsData.stack + " byte, total stack: recursion)";
- } else {
- size = "(stack: " + metricsData.stack + " byte, total stack: "
- + metricsData.stackTotal + " byte)";
- }
- }
- }
- }
- if (type === null) {
- var defObj;
- if (top.CodeDefine.instance.def[srcFileName + ":" + anchorObj.text]) {
- defObj = top.CodeDefine.instance.def[srcFileName + ":" + anchorObj.text];
- } else if (top.CodeDefine.instance.def[anchorObj.text]) {
- defObj = top.CodeDefine.instance.def[anchorObj.text];
- }
- if (defObj) {
- type = defObj.type;
- if (type === "var") {
- type = "Variable";
- } else if (type === "fcn") {
- type = "Function";
- } else if (type === "type") {
- type = "Type";
- }
- size = "";
- }
- }
- var propObj = document.createElement("div");
- propObj.id = "token_property";
-
- var ulObj = document.createElement("ul");
- ulObj.className = "popup_attrib_list";
- if (type === null) {
- ulObj.innerHTML = "Navigate to model";
- } else {
- ulObj.innerHTML = "<li>" + type + ": <var>" + anchorObj.text + "</var></li><li>"+
- size + "</li>";
- }
- propObj.appendChild(ulObj);
-
- return propObj;
- }
- function getInspectLink(file, pathname, anchorObj) {
- var model = top.reportModel;
- var tokenId = anchorObj.id;
- var navObj = document.createElement("div");
- navObj.id = "token_usage_nav";
- ulObj = document.createElement("ul");
- ulObj.id = "token_nav_links";
- ulObj.className="popup_attrib_list";
- var srcFileName = RTW_TraceInfo.toSrcFileName(file);
- var defObj;
- if (top.CodeDefine.instance.def[srcFileName + ":" + anchorObj.text]) {
- defObj = top.CodeDefine.instance.def[srcFileName + ":" + anchorObj.text];
- } else if (top.CodeDefine.instance.def[anchorObj.text]) {
- defObj = top.CodeDefine.instance.def[anchorObj.text];
- }
- var line = anchorObj.id.substring(0,anchorObj.id.indexOf("c"));
- // link to model
- if (top.TraceInfoFlag && top.TraceInfoFlag.instance &&
- top.TraceInfoFlag.instance.traceFlag[srcFileName+":"+anchorObj.id]) {
- return null;
- }
- // link to def/decl
- if (defObj) {
- var filename = defObj.file.split(/\//);
- filename = filename[filename.length-1];
- ulObj.innerHTML += "<li><i>" + anchorObj.text + "</i> defined at <a target='rtwreport_document_frame' onclick=\"top.tokenLinkOnClick(event)\" href='" + defObj.file + "#" + defObj.line +
- "'>" + RTW_TraceInfo.toSrcFileName(filename) + " line " + defObj.line + "</a></li>";
- }
- navObj.appendChild(ulObj);
- return navObj;
- }
- var LastHiliteTokenId = null;
- function rmHiliteClickedToken() {
- if (LastHiliteTokenId) {
- var o = top.rtwreport_document_frame.document.getElementById(LastHiliteTokenId);
- if (o) {
- o.className = o.className.replace("hiliteToken", "");
- }
- }
- }
- function hiliteClickedToken(elem) {
- rmHiliteClickedToken();
- LastHiliteTokenId = elem.id;
- elem.className += " hiliteToken";
- }
- var initLine = null;
- function scrollToInitLine() {
- if (initLine) {
- var lineElem = top.rtwreport_document_frame.document.getElementById(initLine);
- if (lineElem) {
- lineElem.scrollIntoView();
- }
- }
- }
- function scrollToLineBasedOnHash(hashValue) {
- // move to the current highlight line if the hash is not empty
- if (hashValue === "") {
- if (top.RTW_TraceInfo.instance && top.RTW_TraceInfo.instance.getCurrLine() !== null) {
- top.rtwreport_document_frame.document.location.href=top.RTW_TraceInfo.instance.getCurrentHRef();
- top.initLine = top.rtwreport_document_frame.document.location.hash.substr(1);
- }
- } else {
- // scroll and hilite line
- hashValue = hashValue.substr(1);
- if (isNaN(hashValue)) {
- // #fcn_name
- var pattern = "+newPage";
- if (hashValue.indexOf(pattern) != -1) {
- hashValue = hashValue.replace(pattern, '');
- var lineElem = top.rtwreport_document_frame.document.getElementById(hashValue);
- initLine = hashValue; // save initLine in case the dom is updated later by anootation
- if (lineElem) {
- lineElem.scrollIntoView();
- addTagToCurrentLine();
- }
- } else {
- var token = null;
- pattern = ["var_", "fcn_", "type_"];
- for (var i =0; i < pattern.length; i++) {
- if (hashValue.indexOf(pattern[i]) === 0) {
- token = hashValue.substr(pattern[i].length);
- break;
- }
- }
- if (token !== null && top.CodeDefine && top.CodeDefine.instance) {
- var addr;
- var filename = location.pathname.split(/\//);
- filename = filename[filename.length-1];
- var srcFileName;
- if (top.RTW_TraceInfo) {
- srcFileName = top.RTW_TraceInfo.toSrcFileName(filename);
- }
- if (top.CodeDefine.instance.def[srcFileName + ":" + token]) {
- addr = top.CodeDefine.instance.def[srcFileName + ":" + token];
- } else {
- addr = top.CodeDefine.instance.def[token];
- }
- if (addr) {
- hilite_line(addr.line);
- }
- } else { // token id like #line"c"#col
- if (hashValue.indexOf("c") !== -1) {
- hilite_line(hashValue.substr(0, hashValue.indexOf("c")), hashValue);
- }
- }
- }
- } else { // #line
- hilite_line(hashValue);
- }
- }
- return false;
- // hilite line number and scroll with an offset
- function hilite_line(line, tokenId) {
- if (isNaN(line)) return;
- if (!tokenId) {
- tokenId = line;
- }
- var elem = top.rtwreport_document_frame.document.getElementById(tokenId);
- hiliteClickedToken(elem);
- initLine = offset_line(line);
- scrollToInitLine();
- }
- }
- function tokenLinkOnClick(event) {
- var alink = event.currentTarget;
- if (alink.pathname === top.rtwreport_document_frame.location.pathname) {
- event.preventDefault();
- scrollToLineBasedOnHash(alink.hash);
- }
- return false;
- }
- function inspectToken(file, pathname, event) {
- var height = "70px";
- // show inspect data
- if (top.rtwreport_inspect_frame) {
- var windowObj = getInspectWindow();
- var propObj = getInspectData(file, event.currentTarget);
- var navObj = getInspectLink(file, pathname, event.currentTarget);
- if (navObj === null) {
- closeInspectWindow();
- return false;
- }
- if (propObj === null) {
- height = "50px";
- } else {
- windowObj.appendChild(propObj);
- }
- windowObj.appendChild(navObj);
- var data = top.rtwreport_inspect_frame.document.getElementById("popup_window");
- if (data) {
- data.parentNode.replaceChild(windowObj.cloneNode(true), data);
- }
- }
- var offsetHeight = 0;
- var docHeight = 0;
- if (typeof(top.rtwInspectFrame().document.body.offsetHeight) === "number") {
- offsetHeight = top.rtwInspectFrame().document.body.offsetHeight;
- }
- if (typeof(top.rtwInspectFrame().document.height) === "number") {
- docHeight = top.rtwInspectFrame().document.height;
- }
- if (offsetHeight > 0) {
- height = ""+offsetHeight+"px";
- } else if (docHeight > 0) {
- height = ""+docHeight+"px";
- }
- setInspectWindow(height);
- return false;
- }
- function setInspectWindow(height) {
- // show inspect code frame
- var midFrame = rtwMidFrame();
- if (midFrame) {
- var tmp = midFrame.rows.split(",");
- tmp[getInspectFrameIdx()] = height;
- midFrame.rows = tmp.join();
- }
- }
- function closeInspectWindow() {
- setInspectWindow(0);
- return false;
- }
- // set the trace number in the navigation toolbar
- function setTraceNumber() {
- if (RTW_TraceInfo.instance) {
- var aFrame = rtwNavToolbarFrame();
- if (aFrame) {
- var node = aFrame.document.getElementById("rtwIdTraceNumber");
- // calculate current line index over total highlighted lines
- var currNum = RTW_TraceInfo.instance.getCurrLineIdx();
- for (var idx=0;idx<RTW_TraceInfo.instance.getCurrFileIdx();idx++) {
- currNum += RTW_TraceInfo.instance.getNumLines(idx);
- }
- if (node) {
- node.innerHTML = String(currNum+1) + " of " + String(RTW_TraceInfo.instance.getTotalLines());
- }
- }
- }
- }
- function offset_line(line, offset) {
- if (offset == undefined)
- offset = GlobalConfig.offset;
- if (offset > 0)
- line = (line > GlobalConfig.offset ? line - GlobalConfig.offset : 1);
- return line;
- }
- function load_js(frame, file) {
- var h = frame.document.getElementsByTagName("head")[0];
- var o = h.getElementsByTagName('script');
- for (var i=0;i<o.length;++i) {
- if (o[i].getAttribute("src") === file) {
- h.removeChild(o[i]);
- }
- }
- var s = top.document.createElement("script");
- s.type = "text/javascript";
- s.src = file;
- h.appendChild(s);
- }
- function reqOnClick(event) {
- top.hiliteClickedToken(event.currentTarget);
- return true;
- }
- function resize_NavToolbar_frame() {
- resize_frame(getNavToolbarFrameIdx(), rtwNavToolbarFrame().document.height);
- }
- function resize_frame(id, height) {
- if (height) {
- var midFrame = top.rtwMidFrame();
- var tmp = midFrame.rows.split(",");
- if (tmp[id] !== "0%" && tmp[id] !== "0") {
- tmp[id] = "" + height - 8 + "px";
- midFrame.rows = tmp.join();
- }
- }
- }
- function getNavToolbarFrameIdx() {
- return 0;
- }
- function getInspectFrameIdx() {
- return 2;
- }
- function load_metrics() {
- var alink = top.document.createElement("a");
- alink.href = "metrics.js";
- if (top.RTW_TraceArgs && top.RTW_TraceArgs.instance && !top.RTW_TraceArgs.instance.getUseExternalBrowser()) {
- try {
- load_js(top.rtwreport_nav_frame, alink.href);
- } catch (err) {};
- }
- }
- function getNavFrame() {
- if (hasWebviewFrame()) {
- return rtwTocFrame();
- } else {
- return rtwNavToolbarFrame();
- }
- }
- function hasWebviewFrame() {
- if (top.document.getElementById('rtw_webviewMidFrame')) {
- return true;
- } else {
- return false;
- }
- }
- function hasInCodeTrace() {
- return (typeof(Html2SrcLink) === "function") && !hasWebviewFrame();
- }
- function uniqueRows(rows) {
- return rows.sort(function(a,b) {return a-b}).filter(
- function(el,idx, arr) {
- if (idx===arr.indexOf(el)) return true; return false;
- }
- );
- }
- function fileSelectorOnChange(event) {
- var o = top.Html2SrcLink.instance.getLinkFromRoot(event.currentTarget.value)
- if (o) {
- top.rtwreport_document_frame.location.href = o;
- } else {
- top.rtwreport_document_frame.location.href = event.currentTarget.value;
- }
- }
- function getBuildDir() {
- var relPathToBuildDir = top.relPathToBuildDir.substr(0,top.relPathToBuildDir.lastIndexOf('/')+1);
- var a = document.createElement('a');
- a.href = relPathToBuildDir;
- var ret = decodeURI(a.pathname);
- if (top.isPC && ret[0] === "/") {
- ret = ret.substr(1);
- }
- ret = ret.replace(new RegExp("/", 'g'), top.fileSep);
- return ret;
- }
- function getCodeLocation() {
- var codeLocation = getBuildDir();
- // make build dir link in report visible by clearing 'display' style
- docObj = top.rtwreport_document_frame;
- var alinkTitle = docObj.document.getElementById("sourceLocationTitle");
- if (alinkTitle && alinkTitle.style) {
- alinkTitle.style.display = "";
- }
- var alink = docObj.document.getElementById("sourceLocation");
- if (alink && alink.style) {
- alink.style.display = "";
- }
- return codeLocation;
- }
- // get code lines for the input SIDs
- function getCodeLines()
- {
- var codeLocs = "";
- var sid = RTW_TraceArgs.instance.getSID();
- sid = sid.split(",");
- if(sid.length == 1) {
- codeLocs = RTW_Sid2UrlHash.instance.getUrlHash(sid[0]);
- }
- else {
- var fileLocs = [];
- for(var i=0; i < sid.length; ++i) {
- var locstr = RTW_Sid2UrlHash.instance.getUrlHash(sid[i]);
- var locs = locstr.split("&");
- for(var j=0; j< locs.length; ++j) {
- locElems = locs[j].split(":");
- if(fileLocs[locElems[0]] == null) {
- fileLocs[locElems[0]] = locElems[1];
- }
- else {
- fileLocs[locElems[0]] = fileLocs[locElems[0]].concat(",", locElems[1]);
- }
- }
- }
-
- // join all locations
- Object.keys(fileLocs).forEach(function(key) {
- if(codeLocs.length != 0) {
- codeLocs = codeLocs.concat("&", key, ":", fileLocs[key]);
- } else {
- codeLocs = codeLocs.concat(key, ":", fileLocs[key]);
- }
- });
- }
- return codeLocs;
- }
- //add source to frame when _codegen_rpt openend from outisde matlab
- function loadDocFrameSource(modelName) {
- const urlParams = new URLSearchParams(window.location.search);
- const opendInExtBrowser = urlParams.get('useExternalBrowser');
- if (opendInExtBrowser === null) {
- document.getElementById('rtwreport_document_frame').src = modelName.concat('_survey.html');
- }
- }
|