Anthony Barbier | 871448e | 2017-03-24 14:54:29 +0000 | [diff] [blame] | 1 | function initResizable() |
| 2 | { |
Jenkins | b9abeae | 2018-11-22 11:58:08 +0000 | [diff] [blame] | 3 | var cookie_namespace = 'doxygen'; |
| 4 | var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; |
| 5 | |
| 6 | function readCookie(cookie) |
| 7 | { |
| 8 | var myCookie = cookie_namespace+"_"+cookie+"="; |
| 9 | if (document.cookie) { |
| 10 | var index = document.cookie.indexOf(myCookie); |
| 11 | if (index != -1) { |
| 12 | var valStart = index + myCookie.length; |
| 13 | var valEnd = document.cookie.indexOf(";", valStart); |
| 14 | if (valEnd == -1) { |
| 15 | valEnd = document.cookie.length; |
| 16 | } |
| 17 | var val = document.cookie.substring(valStart, valEnd); |
| 18 | return val; |
| 19 | } |
| 20 | } |
| 21 | return 0; |
| 22 | } |
| 23 | |
| 24 | function writeCookie(cookie, val, expiration) |
| 25 | { |
| 26 | if (val==undefined) return; |
| 27 | if (expiration == null) { |
| 28 | var date = new Date(); |
| 29 | date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week |
| 30 | expiration = date.toGMTString(); |
| 31 | } |
| 32 | document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; |
| 33 | } |
| 34 | |
| 35 | function resizeWidth() |
| 36 | { |
| 37 | var windowWidth = $(window).width() + "px"; |
| 38 | var sidenavWidth = $(sidenav).outerWidth(); |
| 39 | content.css({marginLeft:parseInt(sidenavWidth)+"px"}); |
| 40 | writeCookie('width',sidenavWidth-barWidth, null); |
| 41 | } |
| 42 | |
| 43 | function restoreWidth(navWidth) |
| 44 | { |
| 45 | var windowWidth = $(window).width() + "px"; |
| 46 | content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); |
| 47 | sidenav.css({width:navWidth + "px"}); |
| 48 | } |
| 49 | |
| 50 | function resizeHeight() |
| 51 | { |
| 52 | var headerHeight = header.outerHeight(); |
| 53 | var footerHeight = footer.outerHeight(); |
| 54 | var windowHeight = $(window).height() - headerHeight - footerHeight; |
| 55 | content.css({height:windowHeight + "px"}); |
| 56 | navtree.css({height:windowHeight + "px"}); |
| 57 | sidenav.css({height:windowHeight + "px"}); |
| 58 | var width=$(window).width(); |
| 59 | if (width!=collapsedWidth) { |
| 60 | if (width<desktop_vp && collapsedWidth>=desktop_vp) { |
| 61 | if (!collapsed) { |
| 62 | collapseExpand(); |
| 63 | } |
| 64 | } else if (width>desktop_vp && collapsedWidth<desktop_vp) { |
| 65 | if (collapsed) { |
| 66 | collapseExpand(); |
| 67 | } |
| 68 | } |
| 69 | collapsedWidth=width; |
| 70 | } |
| 71 | } |
| 72 | |
| 73 | function collapseExpand() |
| 74 | { |
| 75 | if (sidenav.width()>0) { |
| 76 | restoreWidth(0); |
| 77 | collapsed=true; |
| 78 | } |
| 79 | else { |
| 80 | var width = readCookie('width'); |
| 81 | if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } |
| 82 | collapsed=false; |
| 83 | } |
| 84 | } |
| 85 | |
Anthony Barbier | 871448e | 2017-03-24 14:54:29 +0000 | [diff] [blame] | 86 | header = $("#top"); |
| 87 | sidenav = $("#side-nav"); |
| 88 | content = $("#doc-content"); |
| 89 | navtree = $("#nav-tree"); |
| 90 | footer = $("#nav-path"); |
| 91 | $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); |
Jenkins | b9abeae | 2018-11-22 11:58:08 +0000 | [diff] [blame] | 92 | $(sidenav).resizable({ minWidth: 0 }); |
Anthony Barbier | 871448e | 2017-03-24 14:54:29 +0000 | [diff] [blame] | 93 | $(window).resize(function() { resizeHeight(); }); |
Jenkins | b9abeae | 2018-11-22 11:58:08 +0000 | [diff] [blame] | 94 | var device = navigator.userAgent.toLowerCase(); |
| 95 | var touch_device = device.match(/(iphone|ipod|ipad|android)/); |
| 96 | if (touch_device) { /* wider split bar for touch only devices */ |
| 97 | $(sidenav).css({ paddingRight:'20px' }); |
| 98 | $('.ui-resizable-e').css({ width:'20px' }); |
| 99 | $('#nav-sync').css({ right:'34px' }); |
| 100 | barWidth=20; |
| 101 | } |
Anthony Barbier | 871448e | 2017-03-24 14:54:29 +0000 | [diff] [blame] | 102 | var width = readCookie('width'); |
| 103 | if (width) { restoreWidth(width); } else { resizeWidth(); } |
| 104 | resizeHeight(); |
| 105 | var url = location.href; |
| 106 | var i=url.indexOf("#"); |
| 107 | if (i>=0) window.location.hash=url.substr(i); |
| 108 | var _preventDefault = function(evt) { evt.preventDefault(); }; |
| 109 | $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); |
Jenkins | b9abeae | 2018-11-22 11:58:08 +0000 | [diff] [blame] | 110 | $(".ui-resizable-handle").dblclick(collapseExpand); |
| 111 | $(window).load(resizeHeight); |
Anthony Barbier | 871448e | 2017-03-24 14:54:29 +0000 | [diff] [blame] | 112 | } |
| 113 | |
| 114 | |