##// END OF EJS Templates
Merge pull request #6125 from jdfreder/flex...
Merge pull request #6125 from jdfreder/flex Embrace the flexible box model in the widgets

File last commit:

r17429:d659744c
r17692:c01a6f30 merge
Show More
pager.js
185 lines | 6.2 KiB | application/javascript | JavascriptLexer
MinRK
pager payload is a mime-bundle
r16586 // Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
Brian E. Granger
Refactoring pager into its own class.
r4357
Jonathan Frederic
Progress...
r17196 define([
'base/js/namespace',
Jonathan Frederic
More requirejs fixes
r17215 'jqueryui',
Jonathan Frederic
Pager
r17197 'base/js/utils',
Jonathan Frederic
Almost done!...
r17198 ], function(IPython, $, utils) {
Matthias BUSSONNIER
"use strict" in most (if not all) our javascript...
r12103 "use strict";
Brian E. Granger
Refactoring pager into its own class.
r4357
jon
In person review with @ellisonbg
r17210 var Pager = function (pager_selector, pager_splitter_selector, options) {
jon
Added some nice comments,...
r17211 // Constructor
//
// Parameters:
// pager_selector: string
// pager_splitter_selector: string
// options: dictionary
// Dictionary of keyword arguments.
// events: $(Events) instance
// layout_manager: LayoutManager instance
jon
In person review with @ellisonbg
r17210 this.events = options.events;
Brian E. Granger
Refactoring pager into its own class.
r4357 this.pager_element = $(pager_selector);
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 this.pager_button_area = $('#pager_button_area');
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 var that = this;
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 this.percentage_height = 0.40;
jon
In person review with @ellisonbg
r17210 options.layout_manager.pager = this;
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 this.pager_splitter_element = $(pager_splitter_selector)
.draggable({
containment: 'window',
axis:'y',
helper: null ,
Matthias BUSSONNIER
pep 8 and js...
r6739 drag: function(event, ui) {
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 // recalculate the amount of space the pager should take
MinRK
fix bad `$(body)`
r10908 var pheight = ($(document.body).height()-event.clientY-4);
jon
In person review with @ellisonbg
r17210 var downprct = pheight/options.layout_manager.app_height();
Matthias BUSSONNIER
pep 8 and js...
r6739 downprct = Math.min(0.9, downprct);
if (downprct < 0.1) {
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 that.percentage_height = 0.1;
that.collapse({'duration':0});
Matthias BUSSONNIER
pep 8 and js...
r6739 } else if (downprct > 0.2) {
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 that.percentage_height = downprct;
that.expand({'duration':0});
}
jon
In person review with @ellisonbg
r17210 options.layout_manager.do_resize();
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 }
});
this.expanded = false;
Brian E. Granger
Refactoring pager into its own class.
r4357 this.style();
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 this.create_button_area();
Brian E. Granger
Refactoring pager into its own class.
r4357 this.bind_events();
};
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 Pager.prototype.create_button_area = function(){
var that = this;
this.pager_button_area.append(
$('<a>').attr('role', "button")
Erik Tollerud
Added clickable icon to collapse pager...
r10469 .attr('title',"Open the pager in an external window")
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 .addClass('ui-button')
Jonathan Frederic
Progress...
r17196 .click(function(){that.detach();})
Erik Tollerud
Added clickable icon to collapse pager...
r10469 .attr('style','position: absolute; right: 20px;')
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 .append(
Bussonnier Matthias
change detach icon and tab title
r8449 $('<span>').addClass("ui-icon ui-icon-extlink")
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 )
Jonathan Frederic
Progress...
r17196 );
Erik Tollerud
Added clickable icon to collapse pager...
r10469 this.pager_button_area.append(
$('<a>').attr('role', "button")
Erik Tollerud
Collapse -> Close in button description as suggested by @fperez
r10474 .attr('title',"Close the pager")
Erik Tollerud
Added clickable icon to collapse pager...
r10469 .addClass('ui-button')
Jonathan Frederic
Progress...
r17196 .click(function(){that.collapse();})
Erik Tollerud
Added clickable icon to collapse pager...
r10469 .attr('style','position: absolute; right: 5px;')
.append(
$('<span>').addClass("ui-icon ui-icon-close")
)
Jonathan Frederic
Progress...
r17196 );
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 };
Brian E. Granger
Refactoring pager into its own class.
r4357 Pager.prototype.style = function () {
Matthias BUSSONNIER
move styling from js to css
r17429 this.pager_splitter_element.addClass('ui-widget ui-state-default');
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 this.pager_splitter_element.attr('title', 'Click to Show/Hide pager area, drag to Resize');
Brian E. Granger
Refactoring pager into its own class.
r4357 };
Pager.prototype.bind_events = function () {
var that = this;
Brian E. Granger
Pager is working again.
r4361
Matthias BUSSONNIER
pep 8 and js...
r6739 this.pager_element.bind('collapse_pager', function (event, extrap) {
MinRK
pager payload is a mime-bundle
r16586 var time = 'fast';
if (extrap && extrap.duration) {
time = extrap.duration;
}
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 that.pager_element.hide(time);
Brian E. Granger
Pager is working again.
r4361 });
Matthias BUSSONNIER
pep 8 and js...
r6739 this.pager_element.bind('expand_pager', function (event, extrap) {
MinRK
pager payload is a mime-bundle
r16586 var time = 'fast';
if (extrap && extrap.duration) {
time = extrap.duration;
}
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 that.pager_element.show(time);
Brian E. Granger
Refactoring pager into its own class.
r4357 });
Brian E. Granger
Left panel is now working.
r4363 this.pager_splitter_element.hover(
Brian E. Granger
Refactoring pager into its own class.
r4357 function () {
Brian E. Granger
Left panel is now working.
r4363 that.pager_splitter_element.addClass('ui-state-hover');
Brian E. Granger
Refactoring pager into its own class.
r4357 },
function () {
Brian E. Granger
Left panel is now working.
r4363 that.pager_splitter_element.removeClass('ui-state-hover');
Brian E. Granger
Refactoring pager into its own class.
r4357 }
);
Brian E. Granger
Pager is working again.
r4361
Brian E. Granger
Left panel is now working.
r4363 this.pager_splitter_element.click(function () {
Brian E. Granger
Pager is working again.
r4361 that.toggle();
});
Brian E. Granger
Left panel is now working.
r4363
Jonathan Frederic
Progress...
r17196 this.events.on('open_with_text.Pager', function (event, payload) {
MinRK
pager payload is a mime-bundle
r16586 // FIXME: support other mime types
if (payload.data['text/plain'] && payload.data['text/plain'] !== "") {
Brian Granger
Major refactoring of the Notebook, Kernel and CodeCell JavaScript....
r7168 that.clear();
that.expand();
MinRK
pager payload is a mime-bundle
r16586 that.append_text(payload.data['text/plain']);
}
Brian Granger
Major refactoring of the Notebook, Kernel and CodeCell JavaScript....
r7168 });
Brian E. Granger
Refactoring pager into its own class.
r4357 };
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 Pager.prototype.collapse = function (extrap) {
Brian E. Granger
Pager is working again.
r4361 if (this.expanded === true) {
this.expanded = false;
Matthias BUSSONNIER
pep 8 and js...
r6739 this.pager_element.add($('div#notebook')).trigger('collapse_pager', extrap);
MinRK
pager payload is a mime-bundle
r16586 }
Brian E. Granger
Refactoring pager into its own class.
r4357 };
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 Pager.prototype.expand = function (extrap) {
Brian E. Granger
Pager is working again.
r4361 if (this.expanded !== true) {
this.expanded = true;
Matthias BUSSONNIER
pep 8 and js...
r6739 this.pager_element.add($('div#notebook')).trigger('expand_pager', extrap);
MinRK
pager payload is a mime-bundle
r16586 }
Brian E. Granger
Pager is working again.
r4361 };
Pager.prototype.toggle = function () {
if (this.expanded === true) {
this.collapse();
} else {
this.expand();
MinRK
pager payload is a mime-bundle
r16586 }
Brian E. Granger
Refactoring pager into its own class.
r4357 };
Pager.prototype.clear = function (text) {
MinRK
pager styling...
r10914 this.pager_element.find(".container").empty();
Brian E. Granger
Refactoring pager into its own class.
r4357 };
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 Pager.prototype.detach = function(){
MinRK
fix Pager.detach...
r11542 var w = window.open("","_blank");
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 $(w.document.head)
.append(
$('<link>')
.attr('rel',"stylesheet")
.attr('href',"/static/css/notebook.css")
.attr('type',"text/css")
Bussonnier Matthias
change detach icon and tab title
r8449 )
.append(
$('<title>').text("IPython Pager")
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 );
MinRK
fix Pager.detach...
r11542 var pager_body = $(w.document.body);
pager_body.css('overflow','scroll');
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265
MinRK
fix Pager.detach...
r11542 pager_body.append(this.pager_element.clone().children());
Matthias BUSSONNIER
This create the ability to detach the pager...
r8265 w.document.close();
this.collapse();
MinRK
pager payload is a mime-bundle
r16586 };
Brian E. Granger
Refactoring pager into its own class.
r4357
Pager.prototype.append_text = function (text) {
Jonathan Frederic
s/with with/with
r15406 // The only user content injected with this HTML call is escaped by
Jonathan Frederic
Audit .html() calls take #2
r15376 // the fixConsole() method.
Jonathan Frederic
Almost done!...
r17198 this.pager_element.find(".container").append($('<pre/>').html(utils.fixCarriageReturn(utils.fixConsole(text))));
Matthias BUSSONNIER
Make pager resizable, and remember size......
r6723 };
Brian E. Granger
Refactoring pager into its own class.
r4357
Jonathan Frederic
Progress...
r17196 // Backwards compatability.
Brian E. Granger
Refactoring pager into its own class.
r4357 IPython.Pager = Pager;
Jonathan Frederic
Return dicts instead of classes,...
r17201 return {'Pager': Pager};
Jonathan Frederic
Progress...
r17196 });