78 lines
2.3 KiB
JavaScript
78 lines
2.3 KiB
JavaScript
// Copyright (c) Jupyter Development Team.
|
|
// Distributed under the terms of the Modified BSD License.
|
|
|
|
define([
|
|
'jquery',
|
|
'base/js/events',
|
|
], function($, events){
|
|
"use strict";
|
|
|
|
var Page = function (header_div_selector, site_div_selector) {
|
|
/**
|
|
* Constructor
|
|
*
|
|
* Parameters
|
|
* header_div_selector: string
|
|
* site_div_selector: string
|
|
*/
|
|
this.header_div_element = $(header_div_selector || 'div#header');
|
|
this.site_div_element = $(site_div_selector || 'div#site');
|
|
|
|
this.bind_events();
|
|
};
|
|
|
|
Page.prototype.bind_events = function () {
|
|
// resize site on:
|
|
// - window resize
|
|
// - header change
|
|
// - page load
|
|
var _handle_resize = $.proxy(this._resize_site, this);
|
|
|
|
$(window).resize(_handle_resize);
|
|
|
|
// On document ready, resize codemirror.
|
|
$(document).ready(_handle_resize);
|
|
events.on('resize-header.Page', _handle_resize);
|
|
};
|
|
|
|
Page.prototype.show = function () {
|
|
/**
|
|
* The header and site divs start out hidden to prevent FLOUC.
|
|
* Main scripts should call this method after styling everything.
|
|
*/
|
|
this.show_header();
|
|
this.show_site();
|
|
};
|
|
|
|
Page.prototype.show_header = function () {
|
|
/**
|
|
* The header and site divs start out hidden to prevent FLOUC.
|
|
* Main scripts should call this method after styling everything.
|
|
*/
|
|
this.header_div_element.css('display','block');
|
|
};
|
|
|
|
Page.prototype.show_site = function () {
|
|
/**
|
|
* The header and site divs start out hidden to prevent FLOUC.
|
|
* Main scripts should call this method after styling everything.
|
|
*/
|
|
this.site_div_element.css('display', 'block');
|
|
this._resize_site();
|
|
};
|
|
|
|
Page.prototype._resize_site = function(e) {
|
|
/**
|
|
* Update the site's size.
|
|
*/
|
|
|
|
// In the case an event is passed in, only trigger if the event does
|
|
// *not* have a target DOM node (i.e., it is not bubbling up). See
|
|
// https://bugs.jquery.com/ticket/9841#comment:8
|
|
if (!(e && e.target && e.target.tagName)) {
|
|
$('div#site').height($(window).height() - $('#header').height());
|
|
}
|
|
};
|
|
|
|
return {'Page': Page};
|
|
});
|