From e379fac5c287cf3be404331b00aeded63f341e76 Mon Sep 17 00:00:00 2001 From: Anastasia Kukanova Date: Mon, 21 Mar 2016 23:36:56 +0300 Subject: [PATCH] [Freeze] Use `jquery.extend` to update cell metadata --- nbextensions/usability/freeze/main.js | 35 ++++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/nbextensions/usability/freeze/main.js b/nbextensions/usability/freeze/main.js index c49fb64..1794ee3 100644 --- a/nbextensions/usability/freeze/main.js +++ b/nbextensions/usability/freeze/main.js @@ -1,11 +1,13 @@ define([ 'base/js/namespace', 'base/js/events', - 'notebook/js/codecell' + 'notebook/js/codecell', + 'jquery' ], function ( Jupyter, events, - codecell + codecell, + $ ){ 'use strict'; @@ -16,7 +18,9 @@ define([ var old_execute = CodeCell.prototype.execute; CodeCell.prototype.execute = function () { - if (!this.metadata.run_control.frozen) { + if (this.metadata.run_control === undefined || + !this.metadata.run_control.frozen + ) { old_execute.apply(this, arguments); } } @@ -24,27 +28,34 @@ define([ function set_state(cell, state) { if (cell instanceof CodeCell) { - if (cell.metadata.run_control == undefined) + if (cell.metadata.run_control === undefined) cell.metadata.run_control = {}; - if (state == undefined) + if (state === undefined) state = 'normal'; switch(state) { case 'normal': - cell.metadata.run_control.frozen = false; - cell.metadata.run_control.read_only = false; + var new_run_control_values = { + read_only : false, + frozen : false + }; var bg = ""; break; case 'read_only': - cell.metadata.run_control.frozen = false; - cell.metadata.run_control.read_only = true; + var new_run_control_values = { + read_only : true, + frozen : false + }; var bg = "#FFFEF0"; break; case 'frozen': - cell.metadata.run_control.frozen = true; - cell.metadata.run_control.read_only = true; + var new_run_control_values = { + read_only : true, + frozen : true + }; var bg = "#f0feff"; break; - } + } + $.extend(cell.metadata.run_control, new_run_control_values); cell.code_mirror.setOption('readOnly', cell.metadata.run_control.read_only); var prompt = cell.element.find('div.input_area'); prompt.css("background-color", bg);