From 7b946165025ec371353570a20457c6b6b89548ee Mon Sep 17 00:00:00 2001 From: Thibaut Date: Mon, 3 Aug 2015 17:08:36 -0400 Subject: [PATCH] Add an icon in the sidebar to constrain the width of the UI (only visible when applicable) --- assets/images/icons.png | Bin 32174 -> 32531 bytes assets/images/icons@2x.png | Bin 85217 -> 86142 bytes assets/javascripts/app/app.coffee | 1 + assets/javascripts/app/settings.coffee | 11 +++++ assets/javascripts/news.json | 3 ++ .../javascripts/templates/sidebar_tmpl.coffee | 1 + .../javascripts/views/layout/document.coffee | 9 ++++ .../javascripts/views/layout/resizer.coffee | 3 +- .../javascripts/views/sidebar/sidebar.coffee | 3 ++ .../views/sidebar/sidebar_hover.coffee | 7 +-- assets/stylesheets/components/_app.scss | 7 +++ assets/stylesheets/components/_sidebar.scss | 42 ++++++++++++++++-- assets/stylesheets/global/_base.scss | 2 +- assets/stylesheets/global/_icons.scss | 4 ++ assets/stylesheets/global/_variables.scss | 4 +- assets/stylesheets/global/variables-dark.scss | 2 + lib/app.rb | 4 ++ public/icons/ui/contract/16.png | Bin 0 -> 177 bytes public/icons/ui/contract/16@2x.png | Bin 0 -> 378 bytes public/icons/ui/expand/16.png | Bin 0 -> 176 bytes public/icons/ui/expand/16@2x.png | Bin 0 -> 390 bytes test/app_test.rb | 12 +++++ views/app.erb | 2 +- views/manifest.erb | 2 +- 24 files changed, 107 insertions(+), 12 deletions(-) create mode 100644 public/icons/ui/contract/16.png create mode 100644 public/icons/ui/contract/16@2x.png create mode 100644 public/icons/ui/expand/16.png create mode 100644 public/icons/ui/expand/16@2x.png diff --git a/assets/images/icons.png b/assets/images/icons.png index 4f9f014b46b881782b73c9154d03373038bccb04..93afb499232fe5ad34bb7241dcb3780daf330f95 100644 GIT binary patch delta 13523 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 RT1o%_002ovPDHLkV1np*oBjX* diff --git a/assets/images/icons@2x.png b/assets/images/icons@2x.png index 5e76ac219c67f2319c17346b4133de28c402ee0e..a04f5b71a8f2fa2755f629130f3ae03234cb6bf8 100644 GIT binary patch delta 11807 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 QaR2}S07*qoM6N<$f=$yFs{jB1 diff --git a/assets/javascripts/app/app.coffee b/assets/javascripts/app/app.coffee index 6499f9f0..fd5c57a3 100644 --- a/assets/javascripts/app/app.coffee +++ b/assets/javascripts/app/app.coffee @@ -11,6 +11,7 @@ return unless @browserCheck() @showLoading() + @el = $('._app') @store = new Store @appCache = new app.AppCache if app.AppCache.isEnabled() @settings = new app.Settings @store diff --git a/assets/javascripts/app/settings.coffee b/assets/javascripts/app/settings.coffee index af65232e..9e547eb9 100644 --- a/assets/javascripts/app/settings.coffee +++ b/assets/javascripts/app/settings.coffee @@ -2,6 +2,7 @@ class app.Settings SETTINGS_KEY = 'settings' DOCS_KEY = 'docs' DARK_KEY = 'dark' + LAYOUT_KEY = 'layout' SIZE_KEY = 'size' @defaults: -> @@ -60,6 +61,15 @@ class app.Settings catch return + setLayout: (value) -> + try + if value + Cookies.set LAYOUT_KEY, value, path: '/', expires: 1e8 + else + Cookies.expire LAYOUT_KEY + catch + return + setSize: (value) -> try Cookies.set SIZE_KEY, value, path: '/', expires: 1e8 @@ -69,6 +79,7 @@ class app.Settings reset: -> try Cookies.expire DOCS_KEY try Cookies.expire DARK_KEY + try Cookies.expire LAYOUT_KEY try Cookies.expire SIZE_KEY try @store.del(SETTINGS_KEY) return diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index 735e7d7c..391bed88 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,5 +1,8 @@ [ [ + "2015-08-03", + "Added an icon in the sidebar to constrain the width of the UI (visible when applicable)." + ], [ "2015-08-02", "New documentations: Q and OpenTSDB" ], [ diff --git a/assets/javascripts/templates/sidebar_tmpl.coffee b/assets/javascripts/templates/sidebar_tmpl.coffee index 80750590..c25fc8a3 100644 --- a/assets/javascripts/templates/sidebar_tmpl.coffee +++ b/assets/javascripts/templates/sidebar_tmpl.coffee @@ -53,6 +53,7 @@ sidebarFooter = (html) -> """""" templates.sidebarSettings = -> sidebarFooter """ + Select documentation """ diff --git a/assets/javascripts/views/layout/document.coffee b/assets/javascripts/views/layout/document.coffee index 358aa674..ed11ffec 100644 --- a/assets/javascripts/views/layout/document.coffee +++ b/assets/javascripts/views/layout/document.coffee @@ -1,4 +1,6 @@ class app.views.Document extends app.View + MAX_WIDTH_CLASS = '_max-width' + @el: document @shortcuts: @@ -26,6 +28,13 @@ class app.views.Document extends app.View app.appCache?.updateInBackground() return + toggleLayout: -> + wantsMaxWidth = !app.el.classList.contains(MAX_WIDTH_CLASS) + app.el.classList[if wantsMaxWidth then 'add' else 'remove'](MAX_WIDTH_CLASS) + app.settings.setLayout(if wantsMaxWidth then MAX_WIDTH_CLASS else false) + app.appCache?.updateInBackground() + return + setTitle: (title) -> @el.title = if title then "DevDocs - #{title}" else 'DevDocs API Documentation' diff --git a/assets/javascripts/views/layout/resizer.coffee b/assets/javascripts/views/layout/resizer.coffee index 34200dc8..40e6ccd1 100644 --- a/assets/javascripts/views/layout/resizer.coffee +++ b/assets/javascripts/views/layout/resizer.coffee @@ -17,10 +17,11 @@ class app.views.Resizer extends app.View @size = @style.getAttribute('data-size') return - MIN = 250 + MIN = 260 MAX = 600 resize: (value, save) -> + value -= app.el.offsetLeft return unless value > 0 value = Math.min(Math.max(Math.round(value), MIN), MAX) newSize = "#{value}px" diff --git a/assets/javascripts/views/sidebar/sidebar.coffee b/assets/javascripts/views/sidebar/sidebar.coffee index 55471bbd..fe2097a4 100644 --- a/assets/javascripts/views/sidebar/sidebar.coffee +++ b/assets/javascripts/views/sidebar/sidebar.coffee @@ -83,6 +83,9 @@ class app.views.Sidebar extends app.View else if event.target.hasAttribute? 'data-light' $.stopEvent(event) app.document.toggleLight() + else if event.target.hasAttribute? 'data-layout' + $.stopEvent(event) + app.document.toggleLayout() return onGlobalClick: (event) => diff --git a/assets/javascripts/views/sidebar/sidebar_hover.coffee b/assets/javascripts/views/sidebar/sidebar_hover.coffee index 16bf24fc..a3ed51c2 100644 --- a/assets/javascripts/views/sidebar/sidebar_hover.coffee +++ b/assets/javascripts/views/sidebar/sidebar_hover.coffee @@ -39,9 +39,10 @@ class app.views.SidebarHover extends app.View position: => if @cursor - top = $.rect(@cursor).top - if top >= @offsetTop - @clone.style.top = top + 'px' + rect = $.rect(@cursor) + if rect.top >= @offsetTop + @clone.style.top = rect.top + 'px' + @clone.style.left = rect.left + 'px' else @hide() return diff --git a/assets/stylesheets/components/_app.scss b/assets/stylesheets/components/_app.scss index eea85cce..9effe63f 100644 --- a/assets/stylesheets/components/_app.scss +++ b/assets/stylesheets/components/_app.scss @@ -4,12 +4,19 @@ height: 100%; padding-top: $headerHeight; overflow: hidden; + background: $contentBackground; -webkit-transition: opacity .2s; transition: opacity .2s; @extend %border-box; ._booting > & { opacity: 0; } ._noscript > & { display: none; } + + &._max-width { + margin: 0 auto; + max-width: $maxWidth; + box-shadow: 1px 0 $headerBorder, -1px 0 $headerBorder; + } } ._booting { diff --git a/assets/stylesheets/components/_sidebar.scss b/assets/stylesheets/components/_sidebar.scss index d029d274..45123628 100644 --- a/assets/stylesheets/components/_sidebar.scss +++ b/assets/stylesheets/components/_sidebar.scss @@ -339,6 +339,11 @@ @media #{$mediumScreen} { width: $sidebarMediumWidth; } + ._max-width & { + left: calc(50% - #{$maxWidth} / 2); + @media (max-width: #{$maxWidth}) { left: 0; } + } + &:before { content: ''; position: absolute; @@ -358,7 +363,7 @@ overflow: hidden; height: 2.5rem; line-height: 1rem; - padding: .75rem; + padding: .75rem .25rem .75rem .75rem; font-size: .875em; cursor: pointer; @extend %border-box; @@ -385,15 +390,15 @@ ._sidebar-footer-light { float: right; - width: 2.5rem; + width: 2rem; padding: 0; - opacity: .6; + opacity: .65; &:before { float: none; position: absolute; top: .75rem; - left: .75rem; + left: .25rem; @if $style == 'dark' { @extend %icon-light-white; @@ -403,6 +408,35 @@ } } +._sidebar-footer-layout { + float: right; + width: 2rem; + padding: 0; + opacity: .65; + + &:before { + float: none; + position: absolute; + top: .75rem; + left: .375rem; + @if $style == 'dark' { + @extend %icon-expand-white; + } @else { + @extend %icon-expand; + } + + ._max-width & { + @if $style == 'dark' { + @extend %icon-contract-white; + } @else { + @extend %icon-contract; + } + } + } + + @media (max-width: #{$maxWidth + .1rem}) { display: none; } +} + ._sidebar-footer-save { margin-right: 1px; font-weight: bold; diff --git a/assets/stylesheets/global/_base.scss b/assets/stylesheets/global/_base.scss index 3533d7d8..3a20b844 100644 --- a/assets/stylesheets/global/_base.scss +++ b/assets/stylesheets/global/_base.scss @@ -1,7 +1,7 @@ html { height: 100%; font-size: 100%; - background: $contentBackground; + background: $documentBackground; @media #{$mediumScreen} { font-size: 93.75%; } } diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index eeccc3dc..e18c6dd3 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -107,3 +107,7 @@ ._icon-vue:before { background-position: -3rem -8rem; } ._icon-opentsdb:before { background-position: -4rem -8rem; } ._icon-q:before { background-position: -5rem -8rem; } +%icon-expand { background-position: -6rem -8rem; } +%icon-contract { background-position: -7rem -8rem; } +%icon-expand-white { background-position: -8rem -8rem; } +%icon-contract-white { background-position: -9rem -8rem; } diff --git a/assets/stylesheets/global/_variables.scss b/assets/stylesheets/global/_variables.scss index a1dd1df7..c3677c47 100644 --- a/assets/stylesheets/global/_variables.scss +++ b/assets/stylesheets/global/_variables.scss @@ -3,11 +3,13 @@ $monoFont: Consolas, 'Liberation Mono', Menlo, Courier, monospace; $style: 'light'; +$maxWidth: 80rem; $headerHeight: 3rem; $sidebarWidth: 18rem; $sidebarMediumWidth: 16rem; $contentBackground: #fff; +$documentBackground: #fafafa; $textColor: #333; $textColorLight: #666; @@ -19,7 +21,7 @@ $focusBackground: #e5e5e5; $focusBorder: #d4d4d4; $focusText: #000; -$loadingText: #e6e6e6; +$loadingText: #ccc; $splashText: #bbb; $promoText: #bbb; diff --git a/assets/stylesheets/global/variables-dark.scss b/assets/stylesheets/global/variables-dark.scss index 54f747ac..de680537 100644 --- a/assets/stylesheets/global/variables-dark.scss +++ b/assets/stylesheets/global/variables-dark.scss @@ -3,11 +3,13 @@ $monoFont: Consolas, 'Liberation Mono', Menlo, Courier, monospace; $style: 'dark'; +$maxWidth: 80rem; $headerHeight: 3rem; $sidebarWidth: 18rem; $sidebarMediumWidth: 16rem; $contentBackground: #303030; +$documentBackground: #404040; $textColor: #c9c9c9; $textColorLight: #858585; diff --git a/lib/app.rb b/lib/app.rb index c4c69e90..f05c0e77 100644 --- a/lib/app.rb +++ b/lib/app.rb @@ -146,6 +146,10 @@ class App < Sinatra::Application @app_size ||= cookies[:size].nil? ? '18rem' : "#{cookies[:size]}px" end + def app_layout + cookies[:layout] + end + def app_theme @app_theme ||= cookies[:dark].nil? ? 'default' : 'dark' end diff --git a/public/icons/ui/contract/16.png b/public/icons/ui/contract/16.png new file mode 100644 index 0000000000000000000000000000000000000000..d23cfd88d06fd3c34c46b8409c94d6fd704f117d GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6Dm+~rLn;{8o?D)HB!GwE!uN0w z{_j$1*Jpg+Yjh|yuWoM&(^BW78vZ`9?dq~!$D&kCKPNr$jd&7$=$Pk@7v6ih6PJfQ z;l01{gV(yhc^tz3GnDpS-}WR6?8yGxY{an^LB{Ts5tsg`C literal 0 HcmV?d00001 diff --git a/public/icons/ui/contract/16@2x.png b/public/icons/ui/contract/16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a937314960bb29365891f7e08cedc46cf257410b GIT binary patch literal 378 zcmV-=0fqjFP)kdg0003&Nkl%)PYgv{bPEGd5n?ILU!+)MgLyG zY(ps022>i1x#57`d<94KD2fK_-4~wOtw-7`JJG=^w}m$!Dh?Qt6rR|OWv&ZttvF{? zQY%awcj805t1DcxQX?roM4s1hE1b7To~RY|?6i4kq(u$C-(H$D`;&OKpsqh-BRYya z@yRx2i=T8^d@{vD+w>^XCO)ZXg%|ee^Irvh_IpupPu*NLA+6}K%|oI4NySgvVoH3n z`YT-$H5`r`H!ZZ1MxCp_ z$yT^-IW~KepJ2oR&uYbOtI)wtuch_a?YVHzdNhin$5BZIy$-lx42{YF`3i>2Ruuo* YTlAQ?rz23MUH||907*qoM6N<$g46`AbN~PV literal 0 HcmV?d00001 diff --git a/public/icons/ui/expand/16.png b/public/icons/ui/expand/16.png new file mode 100644 index 0000000000000000000000000000000000000000..aeef7f9d7567a90de3acf7b9f01ea614b3e77f42 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6$~|2iLn;{Oo?V`J%z=mPLi#J6 zgyQvylaAR`YI!})te@-P_1>vYKFD%zrC#flyp>=3o<@81Ufe4XlzHAO!a|&DZF1u4 zfag(}1!g#U>{>;0+UOk;{Y4%*_=!X%j1@ literal 0 HcmV?d00001 diff --git a/public/icons/ui/expand/16@2x.png b/public/icons/ui/expand/16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..63381f8a61f863a4e9ffacedacc843629967e4ef GIT binary patch literal 390 zcmV;10eSw3P)kdg0003^NklJj6foPRt1vUPUL{m|fKV64G3)`t%$zOk4Z@uB3#kc9rN3kP-d}gpnI-f& z>b=kjWpdMmYLXs%JQrquQZ%y5l=x|CAen>h-u#rJfsBPFeK7NVY7}HFc2Si2Wvzh~ zt_t1v>YaB*QAxJm4N)ErXN{W{Iu#_0x*~io{ot;(*y)w16^uCMZBab50duh5C)M;g z=$-JyR%A)iQYq#~f_%uymQXjv1*<5nkDeHSP*sQCu-vE9iu2 +
">
diff --git a/views/manifest.erb b/views/manifest.erb index ca3a02f4..8b80ee20 100644 --- a/views/manifest.erb +++ b/views/manifest.erb @@ -1,5 +1,5 @@ CACHE MANIFEST -# <%= app_theme %> <%= app_size %> +# <%= app_theme %> <%= app_size %> <%= app_layout %> CACHE: /