Index: reference/jquery-plugins/select2-4.0.13/src/scss/theme/default/layout.scss =================================================================== diff -u -rf0caaeebb2cb9ef347bdc8cd45af94e974026888 -rb00dcbf29f2b09005c0bf2eed9463c79db077651 --- reference/jquery-plugins/select2-4.0.13/src/scss/theme/default/layout.scss (.../layout.scss) (revision f0caaeebb2cb9ef347bdc8cd45af94e974026888) +++ reference/jquery-plugins/select2-4.0.13/src/scss/theme/default/layout.scss (.../layout.scss) (revision b00dcbf29f2b09005c0bf2eed9463c79db077651) @@ -55,6 +55,7 @@ function 로드_완료_이후_실행_함수() { laddaBtnSetting(); + 톱니바퀴_초기설정(); } //////////////////////////////////////////////////////////////////////////////////////// @@ -1165,4 +1166,263 @@ //지정된 투어가이드(gta) 의 설정이 없을 때, on으로 설정 setTourGuide("on"); } +} + +//////////////////////////////////////////////////////////////////////////////////////// +// 헤더 :: 톱니바퀴 대응함수 +//////////////////////////////////////////////////////////////////////////////////////// +function 톱니바퀴_초기설정() { + //settings + var $settings = $("#settings"), + $sidebarSettings = $("#sidebar-settings"), + settingsState = JSON.parse(localStorage.getItem("settings-state")) || { + sidebar: 'left', + sidebarState: 'auto', + displaySidebar: true + }, + $pageHeader = $(".page-header"), + $body = $("body"), + popoverReallyHide = function(){ + $settings.data('bs.popover').hoverState = 'out'; //yeah. cool BS3 fix. popover programmatic APi works only on HOVER + $settings.popover('hide'); + }, + popoverClose = function(e){ + var $popover = $settings.siblings(".popover"); + if($popover.length && !$.contains($popover[0], e.target)){ + popoverReallyHide(); + $(document).off("click", popoverClose); + } + }, + sidebarSide = function(side){ + if (side == "right"){ + $body.addClass("sidebar-on-right") + } else { + $body.removeClass("sidebar-on-right") + } + }, + sidebarState = function(state, triggerResize){ + var $template = $('#sidebar-settings-template'); + triggerResize = triggerResize == undefined ? true : false; + if (!$template[0]){ + return; + } + $sidebarSettings.html(_.template($template.html())({sidebarState: state})); + if (state == "auto"){ + $(".sidebar, .side-nav, .wrap, .logo").removeClass("sidebar-icons"); + } else { + $(".sidebar, .side-nav, .wrap, .logo").addClass("sidebar-icons"); + } + if (triggerResize){ + triggerChartsResize(); + } + + }, + displaySidebar = function(display, triggerResize){ + triggerResize = triggerResize == undefined ? true : false; + if (display == true){ + $body.removeClass("sidebar-hidden") + } else { + $body.addClass("sidebar-hidden") + } + if (triggerResize){ + triggerChartsResize(); + } + }; + + sidebarSide(settingsState.sidebar); + sidebarState(settingsState.sidebarState, false); + displaySidebar(settingsState.displaySidebar, false); + + if (!$settings[0]){ + return; + } + + $settings.popover({ + template: '
' + + '
' + + '
' + + '
' + + '
' + + '
', + html: true, + animation: false, + placement: 'bottom', + content: function(){ + return _.template($('#settings-template').html())(settingsState); + } + }).click(function(e){ + //close all open dropdowns + $('.page-header .dropdown.open .dropdown-toggle').dropdown('toggle'); + // need to remove popover on anywhere-click + $(document).on("click", popoverClose); + $(this).focus(); + return false; + }); + + $(".page-header .dropdown-toggle").click(function(){ + popoverReallyHide() + $(document).off("click", popoverClose); + }); + //sidevar left/right + $pageHeader.on("click", ".popover #sidebar-toggle .btn", function(){ + var $this = $(this), + side = $this.data("value"); + sidebarSide(side); + settingsState.sidebar = side; + localStorage.setItem("settings-state", JSON.stringify(settingsState)); + }); + + //sidebar visibility + $pageHeader.on("click", ".popover #display-sidebar-toggle .btn", function(){ + var $this = $(this), + display = $this.data("value"); + displaySidebar(display); + settingsState.displaySidebar = display; + localStorage.setItem("settings-state", JSON.stringify(settingsState)); + }); + + //sidebar state {active, icons} + $sidebarSettings.on("click", ".btn", function(){ + var $this = $(this), + state = $this.data("value"); + if (state == 'icons'){ + closeNavigation(); + } + sidebarState(state); + settingsState.sidebarState = state; + localStorage.setItem("settings-state", JSON.stringify(settingsState)); + }); + + //close navigation if sidebar in icons state + if (($("#sidebar").is(".sidebar-icons") || $(window).width() < 1049) && $(window).width() > 767){ + closeNavigation(); + } + + //imitate buttons radio behavior + $pageHeader.on("click", ".popover [data-toggle='buttons-radio'] .btn:not(.active)", function(){ + var $this = $(this), + $buttons = $this.parent().find('.btn'); + $buttons.removeClass('active'); + setTimeout(function(){ + $this.addClass('active'); + }, 0) + }); +} + +/** + * A global object containing theme specific colors, screen variables & color functions. + * @type Object + */ +window.LightBlue = { + screens: { + 'xs-max': 767, + 'sm-min': 768, + 'sm-max': 991, + 'md-min': 992, + 'md-max': 1199, + 'lg-min': 1200 + }, + + isScreen: function(size){ + var screenPx = window.innerWidth; + return (screenPx >= this.screens[size + '-min'] || size == 'xs') && (screenPx <= this.screens[size + '-max'] || size == 'lg'); + }, + + getScreenSize: function(){ + var screenPx = window.innerWidth; + if (screenPx <= this.screens['xs-max']) return 'xs'; + if ((screenPx >= this.screens['sm-min']) && (screenPx <= this.screens['sm-max'])) return 'sm'; + if ((screenPx >= this.screens['md-min']) && (screenPx <= this.screens['md-max'])) return 'md'; + if (screenPx >= this.screens['lg-min']) return 'lg'; + }, + + //credit http://stackoverflow.com/questions/1507931/generate-lighter-darker-color-in-css-using-javascript + changeColor: function(color, ratio, darker) { + var pad = function(num, totalChars) { + var pad = '0'; + num = num + ''; + while (num.length < totalChars) { + num = pad + num; + } + return num; + }; + // Trim trailing/leading whitespace + color = color.replace(/^\s*|\s*$/, ''); + + // Expand three-digit hex + color = color.replace( + /^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i, + '#$1$1$2$2$3$3' + ); + + // Calculate ratio + var difference = Math.round(ratio * 256) * (darker ? -1 : 1), + // Determine if input is RGB(A) + rgb = color.match(new RegExp('^rgba?\\(\\s*' + + '(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])' + + '\\s*,\\s*' + + '(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])' + + '\\s*,\\s*' + + '(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])' + + '(?:\\s*,\\s*' + + '(0|1|0?\\.\\d+))?' + + '\\s*\\)$' + , 'i')), + alpha = !!rgb && rgb[4] != null ? rgb[4] : null, + + // Convert hex to decimal + decimal = !!rgb? [rgb[1], rgb[2], rgb[3]] : color.replace( + /^#?([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])/i, + function() { + return parseInt(arguments[1], 16) + ',' + + parseInt(arguments[2], 16) + ',' + + parseInt(arguments[3], 16); + } + ).split(/,/), + returnValue; + + // Return RGB(A) + return !!rgb ? + 'rgb' + (alpha !== null ? 'a' : '') + '(' + + Math[darker ? 'max' : 'min']( + parseInt(decimal[0], 10) + difference, darker ? 0 : 255 + ) + ', ' + + Math[darker ? 'max' : 'min']( + parseInt(decimal[1], 10) + difference, darker ? 0 : 255 + ) + ', ' + + Math[darker ? 'max' : 'min']( + parseInt(decimal[2], 10) + difference, darker ? 0 : 255 + ) + + (alpha !== null ? ', ' + alpha : '') + + ')' : + // Return hex + [ + '#', + pad(Math[darker ? 'max' : 'min']( + parseInt(decimal[0], 10) + difference, darker ? 0 : 255 + ).toString(16), 2), + pad(Math[darker ? 'max' : 'min']( + parseInt(decimal[1], 10) + difference, darker ? 0 : 255 + ).toString(16), 2), + pad(Math[darker ? 'max' : 'min']( + parseInt(decimal[2], 10) + difference, darker ? 0 : 255 + ).toString(16), 2) + ].join(''); + }, + lighten: function(color, ratio) { + return this.changeColor(color, ratio, false); + }, + darken: function(color, ratio) { + return this.changeColor(color, ratio, true); + } +} +function triggerChartsResize(){ + try { + if (window.onresize){ + window.onresize(); + } + } catch (e){ + //just swallow it + } + $(window).trigger('resize'); } \ No newline at end of file Index: arms/template.html =================================================================== diff -u -r3f3ae75f1780077cb8261b665d332beec7d02bd5 -rb00dcbf29f2b09005c0bf2eed9463c79db077651 --- arms/template.html (.../template.html) (revision 3f3ae75f1780077cb8261b665d332beec7d02bd5) +++ arms/template.html (.../template.html) (revision b00dcbf29f2b09005c0bf2eed9463c79db077651) @@ -133,14 +133,13 @@ - - + @@ -192,6 +191,25 @@ alt="맨위로" /> + + +