forked from phcode-dev/phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinfobar.js
More file actions
1 lines (1 loc) · 2.21 KB
/
infobar.js
File metadata and controls
1 lines (1 loc) · 2.21 KB
1
define(function(require,exports,module){var MainViewManager=require("view/MainViewManager"),Mustache=require("thirdparty/mustache/mustache"),EventDispatcher=require("utils/EventDispatcher"),InfoBarHtml=require("text!htmlContent/infobar-template.html"),_=require("thirdparty/lodash");EventDispatcher.makeEventDispatcher(exports);var ESC_KEY=27;function generateJsonForMustache(msgObj){var msgJsonObj={};return msgObj.type&&(msgJsonObj.type="'"+msgObj.type+"'"),msgJsonObj.title=msgObj.title,msgJsonObj.description=msgObj.description,msgJsonObj}function cleanInfoBar(){var $infoBar=$("#info-bar-template");$infoBar.length>0&&$infoBar.remove(),$(window.document).off("keydown.InfoBarTemplateDoc"),$(window).off("resize.InfoBarTemplate")}function showInfoBar(msgObj){var jsonToMustache=generateJsonForMustache(msgObj),$infoBarElement=$(Mustache.render(InfoBarHtml,jsonToMustache));cleanInfoBar(),$infoBarElement.prependTo(".content");var $infoBar=$("#info-bar-template"),$infoContent=$infoBar.find("#info-content"),$contentContainer=$infoBar.find("#content-container"),$iconContainer=$infoBar.find("#icon-container"),$closeIconContainer=$infoBar.find("#close-icon-container"),$heading=$infoBar.find("#heading"),$description=$infoBar.find("#description"),$closeIcon=$infoBar.find("#close-icon");$infoContent.length>0&&$infoContent[0].scrollWidth>$infoContent.innerWidth()&&$contentContainer.length>0&&$heading.length>0&&$description.length>0&&$contentContainer.attr("title",$heading.text()+$description.text());var resizeContentContainer=function(){if($infoContent.length>0&&$contentContainer.length>0&&$infoBar.length>0){var newWidth=$infoBar.outerWidth()-38;$iconContainer.length>0&&(newWidth-=$iconContainer.outerWidth()),$closeIconContainer.length>0&&(newWidth-=$closeIconContainer.outerWidth()),$contentContainer.css({maxWidth:newWidth})}};resizeContentContainer(),$(window).on("resize.InfoBarTemplate",_.debounce(resizeContentContainer,150)),$closeIcon.length>0&&$closeIcon.click(function(){cleanInfoBar(),MainViewManager.focusActivePane()}),$(window.document).on("keydown.InfoBarTemplateDoc",function(event){var code;event.which===ESC_KEY&&(cleanInfoBar(),MainViewManager.focusActivePane(),event.stopImmediatePropagation())})}exports.showInfoBar=showInfoBar});