lib/har/viewer/scripts/tabs/domTab.js

Summary

Maintainability
A
0 mins
Test Coverage
/* See license.txt for terms of usage */

define("tabs/domTab",["domplate/domplate","domplate/tabView","core/lib","i18n!nls/domTab","domplate/toolbar","tabs/search","core/dragdrop","domplate/domTree","core/cookies","domplate/tableView","core/trace","json-query/JSONQuery"],function(Domplate,TabView,Lib,Strings,Toolbar,Search,DragDrop,DomTree,Cookies,TableView,Trace){with(Domplate){var jsonQueryOption="searchJsonQuery";function DomTab(){this.toolbar=new Toolbar,this.toolbar.addButtons(this.getToolbarButtons()),this.tableView=!1}return DomTab.prototype=domplate(TabView.Tab.prototype,{id:"DOM",label:Strings.domTabLabel,separator:DIV({"class":"separator"}),tabBodyTag:DIV({"class":"tab$tab.id\\Body tabBody",_repObject:"$tab"},DIV({"class":"domToolbar"}),DIV({"class":"domContent"})),domBox:TABLE({"class":"domBox",cellpadding:0,cellspacing:0},TBODY(TR(TD({"class":"content"},DIV({"class":"title"},"$title")),TD({"class":"splitter"}),TD({"class":"results"},DIV({"class":"resultsDefaultContent"},Strings.searchResultsDefaultText))))),queryResultsViewType:DIV({"class":"queryResultsViewType"},INPUT({"class":"type",type:"checkbox",onclick:"$onTableView"}),SPAN({"class":"label"},Strings.queryResultsTableView)),onUpdateBody:function(e,t){this.toolbar.render(Lib.$(t,"domToolbar"));if(!Lib.supportsSelectElementText){var n=Lib.getElementByClass(t,"searchBox"),r=Lib.getElementByClass(n,"searchInput");r.setAttribute("disabled","true"),r.setAttribute("title",Strings.searchDisabledForIE);var i=Lib.getElementByClass(n,"arrow");i.setAttribute("disabled","true")}this.updateSearchResultsUI()},getToolbarButtons:function(){var e=[];return e.push({id:"search",tag:Search.Box.tag,initialize:Search.Box.initialize}),e},createSearchObject:function(e){var t=Lib.getElementsByClass(this._body,"domTable");t=Lib.cloneArray(t);var n=t.map(function(e){return e.repObject.input});return new Search.ObjectSearch(e,n,!1,!1)},getSearchOptions:function(){var e=[];return e.push({label:Strings.searchOptionJsonQuery,checked:Cookies.getBooleanCookie(jsonQueryOption),command:Lib.bindFixed(this.onOption,this,jsonQueryOption)}),e},onOption:function(e){Search.Box.onOption(e),this.updateSearchResultsUI()},updateSearchResultsUI:function(){var e=Cookies.getBooleanCookie(jsonQueryOption),t=Lib.getElementsByClass(this._body,"domBox");for(var n=0;n<t.length;n++){var r=t[n],i=Lib.getElementByClass(r,"results"),s=Lib.getElementByClass(r,"splitter");e?(Lib.setClass(i,"visible"),Lib.setClass(s,"visible")):(Lib.removeClass(i,"visible"),Lib.removeClass(s,"visible"))}var o=Lib.getElementByClass(this._body,"searchInput");if(o){var u=e?Strings.jsonQueryPlaceholder:Strings.searchPlaceholder;o.setAttribute("placeholder",u)}var o=Lib.getElementByClass(this._body,"searchInput")},onSearch:function(e,t){var n=Cookies.getBooleanCookie(jsonQueryOption);if(n)return this.evalJsonQuery(e,t);if(e.length<3)return!0;this.currSearch&&this.currSearch.text!=e&&(this.currSearch=null),this.currSearch||(this.currSearch=this.createSearchObject(e));if(this.currSearch.findNext(e)){var r=this.currSearch.stack[1].object,i=this.getDomTree(r);for(var s=0;s<this.currSearch.stack.length;s++)i.expandRow(this.currSearch.stack[s].object);var o=this.currSearch.getCurrentMatch(),u=i.getRow(o.value);if(u){var a=u.querySelector(".memberValueCell .objectBox");this.currSearch.selectText(a.firstChild),Lib.scrollIntoCenterView(a)}return!0}return this.currSearch.matches.length>0&&(this.currSearch=this.createSearchObject(e)),!1},evalJsonQuery:function(e,t){if(t!=13)return!0;var n=Lib.getElementsByClass(this._body,"domBox");for(var r=0;r<n.length;r++){var i=n[r],s=Lib.getElementByClass(i,"domTable"),o=s.repObject.input,u=i.querySelector(".domBox .results");Lib.clearNode(u);try{var a=this.queryResultsViewType.append({},u);if(this.tableView){var f=Lib.getElementByClass(a,"type");f.setAttribute("checked","true")}var l=JSONQuery(e,o);u.repObject=l;if(this.tableView)TableView.render(u,l);else{var c=new DomTree(l);c.append(u)}}catch(h){Trace.exception(h)}}return!0},onTableView:function(e){var t=Lib.fixEvent(e),n=t.target,r=Lib.getAncestorByClass(n,"tabBody"),i=$(n).prop("checked");r.repObject.tableView=i;var s=Lib.getAncestorByClass(n,"results"),o=s.repObject,u=Lib.getElementByClass(s,"domTable");u&&u.parentNode.removeChild(u);var a=Lib.getElementByClass(s,"dataTableSizer");a&&a.parentNode.removeChild(a);if(i)TableView.render(s,o);else{var f=new DomTree(o);f.append(s)}},append:function(e){var t=Lib.$(this._body,"domContent"),n=[];for(var r=0;r<e.log.pages.length;r++){var i=e.log.pages[r];n.push(i.title)}var s=this.domBox.append({title:n.join(", ")},t),o=Lib.getElementByClass(s,"content"),u=Lib.getElementByClass(s,"splitter");this.splitter=new DragDrop.Tracker(u,{onDragStart:Lib.bind(this.onDragStart,this),onDragOver:Lib.bind(this.onDragOver,this),onDrop:Lib.bind(this.onDrop,this)}),this.updateSearchResultsUI();var a=new DomTree(e);a.append(o),this.separator.append({},t)},getDomTree:function(e){var t=Lib.getElementsByClass(this._body,"domTable");for(var n=0;n<t.length;n++){var r=t[n].repObject;if(r.input==e)return r}return null},highlightFile:function(e,t){var n=this.getDomTree(e);if(!n)return;n.expandRow(e.log),n.expandRow(e.log.entries);var r=n.expandRow(t);r&&Lib.setClassTimed(r,"jumpHighlight");var i=Lib.$(this._body,"domContent");i.scrollTop=r.offsetTop},onDragStart:function(e){var t=Lib.getBody(this._body.ownerDocument);t.setAttribute("vResizing","true");var n=Lib.getAncestorByClass(e.element,"domBox"),r=Lib.getElementByClass(n,"content");this.startWidth=r.clientWidth},onDragOver:function(e,t){var n=Lib.getAncestorByClass(t.element,"domBox"),r=Lib.getElementByClass(n,"content"),i=this.startWidth+e.x;r.style.width=i+"px"},onDrop:function(e){var t=Lib.getBody(this._body.ownerDocument);t.removeAttribute("vResizing")}}),DomTab}});