From 1d013f0c70c65cddbe00ccf698591dfd80378d96 Mon Sep 17 00:00:00 2001 From: Dou Date: Wed, 15 Apr 2020 11:14:18 +0200 Subject: [PATCH 01/19] Mark version 1.0.0 --- package.json | 2 +- widget_periodictable/_frontend.py | 2 +- widget_periodictable/_version.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 17c3e69..17d9178 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "widget-periodictable", - "version": "0.2.0", + "version": "1.0.0", "description": "A jupyter widget to select chemical elements from the periodic table.", "keywords": [ "jupyter", diff --git a/widget_periodictable/_frontend.py b/widget_periodictable/_frontend.py index 1a3cf2c..6437bae 100644 --- a/widget_periodictable/_frontend.py +++ b/widget_periodictable/_frontend.py @@ -9,4 +9,4 @@ """ module_name = "widget-periodictable" -module_version = "^0.1.0" +module_version = "^1.0.0" diff --git a/widget_periodictable/_version.py b/widget_periodictable/_version.py index 132fe30..1453270 100644 --- a/widget_periodictable/_version.py +++ b/widget_periodictable/_version.py @@ -4,5 +4,5 @@ # Copyright (c) Giovanni Pizzi and Dou Du. # Distributed under the terms of the Modified BSD License. -version_info = (0, 2, 0) +version_info = (1, 0, 0) __version__ = ".".join(map(str, version_info)) From cfa3f52e2a697facbf4e10c21d429957ec7479ab Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 03:44:18 +0200 Subject: [PATCH 02/19] Make it possible to selected by group --- examples/introduction.ipynb | 45 ++++- src/widget.ts | 268 ++++++++++++++----------- widget_periodictable/periodic_table.py | 17 +- 3 files changed, 206 insertions(+), 124 deletions(-) diff --git a/examples/introduction.ipynb b/examples/introduction.ipynb index f42ec16..457c16d 100644 --- a/examples/introduction.ipynb +++ b/examples/introduction.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -19,15 +19,50 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e8c2936c32a0481ea3e35f2819bc3b44", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "PTableWidget(selected_colors=['#a6cee3', '#b2df8a', '#fdbf6f', '#6a3d9a', '#b15928', '#e31a1c', '#1f78b4', '#3…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Show the widget\n", - "widget = PTableWidget()\n", + "widget = PTableWidget(states = 10)\n", "widget" ] }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Pd']" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widget.get_elements_by_state(3)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -206,7 +241,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.1" + "version": "3.7.6" } }, "nbformat": 4, diff --git a/src/widget.ts b/src/widget.ts index 42e0ea4..67121a5 100644 --- a/src/widget.ts +++ b/src/widget.ts @@ -22,29 +22,29 @@ import '../css/ptable.css'; // These assumptions are used both in the generation of the elementList // and in the template. var elementTable: string[][] = [ - ["H", "", "", "", "", "", "", "", "","", "", "", "", "", "", "", "", "He"], - ["Li", "Be", "", "", "", "", "", "", "","", "", "", "B", "C", "N", "O", "F", "Ne"], - ["Na", "Mg", "", "", "", "", "", "", "","", "", "", "Al", "Si", "P", "S", "Cl", "Ar"], - ["K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co","Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr"], - ["Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh","Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe"], - ["Cs", "Ba", "*", "Hf", "Ta", "W", "Re", "Os", "Ir","Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn"], - ["Fr", "Ra", "*", "Rf", "Db", "Sg", "Bh", "Hs", "Mt","Ds", "Rg", "Cn", "Nh", "Fi", "Mc", "Lv", "Ts", "Og"], - ["", "", "", "", "", "", "", "", "","", "", "", "", "", "", "", "", ""], - ["", "", "*", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu","Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu"], - ["", "", "*", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am","Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr"] + ["H", "", "", "", "", "", "", "", "","", "", "", "", "", "", "", "", "He"], + ["Li", "Be", "", "", "", "", "", "", "","", "", "", "B", "C", "N", "O", "F", "Ne"], + ["Na", "Mg", "", "", "", "", "", "", "","", "", "", "Al", "Si", "P", "S", "Cl", "Ar"], + ["K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co","Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr"], + ["Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh","Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe"], + ["Cs", "Ba", "*", "Hf", "Ta", "W", "Re", "Os", "Ir","Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn"], + ["Fr", "Ra", "*", "Rf", "Db", "Sg", "Bh", "Hs", "Mt","Ds", "Rg", "Cn", "Nh", "Fi", "Mc", "Lv", "Ts", "Og"], + ["", "", "", "", "", "", "", "", "","", "", "", "", "", "", "", "", ""], + ["", "", "*", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu","Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu"], + ["", "", "*", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am","Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr"] ]; // Flat list of elements, used for validation and cleaning up of the // selectedElements list. let elementList: string[] = []; for (let elementRow of elementTable) { - for (let elementName of elementRow) { - if ( (elementName === "") || (elementName == "*" ) ) { - } - else { - elementList.push(elementName); - } + for (let elementName of elementRow) { + if ( (elementName === "") || (elementName == "*" ) ) { } + else { + elementList.push(elementName); + } + } } export @@ -62,9 +62,9 @@ class MCPTableModel extends DOMWidgetModel { } static serializers: ISerializers = { - ...DOMWidgetModel.serializers, - // Add any extra serializers here - } + ...DOMWidgetModel.serializers, + // Add any extra serializers here + } static model_name = 'MCPTableModel'; static model_module = MODULE_NAME; @@ -77,109 +77,143 @@ class MCPTableModel extends DOMWidgetModel { export class MCPTableView extends DOMWidgetView { - // TODO: move template to external file to make it more readable, see - // http://codebeerstartups.com/2012/12/how-to-improve-templates-in-backbone-js-learning-backbone-js/ - tableTemplate = _.template( '<% for (let elementRow of elementTable) { print("
"); for (let elementName of elementRow) { if ( (elementName === "") || (elementName == "*" ) ) { %>' + ' <%= elementName %>' + '<% } else { %>' + ' noselect element-<%= elementName %><% if (selectedElements.includes(elementName) && (! disabledElements.includes(elementName)) ) { print(" elementOn"); } %>"><% print(displayNamesReplacements[elementName] || elementName); %>' + '<% } }; print("
"); } %>'); - - render() { - // I render the widget - this.rerenderScratch(); - // I bind on_change events - this.model.on('change:selected_elements', this.rerenderScratch, this); - this.model.on('change:disabled_elements', this.rerenderScratch, this); - this.model.on('change:display_names_replacements', this.rerenderScratch, this); - } + // TODO: move template to external file to make it more readable, see + // http://codebeerstartups.com/2012/12/how-to-improve-templates-in-backbone-js-learning-backbone-js/ + tableTemplate = _.template( '<% for (let elementRow of elementTable)'+ + ' { print("
"); for (let elementName of elementRow)'+ + ' { if ( (elementName === "") || (elementName == "*" ) ) { %>' + + ' <%= elementName %>' + '<% } else { %>' + + ' '+ + ' noselect element-<%= elementName %><% if (selectedElements.includes(elementName) && ' + + '(! disabledElements.includes(elementName)) ) { print(" elementOn"); } %>" '+ + 'style="background-color: <% if (disabledElements.includes(elementName)) {print(disabledColor)} ' + + 'else if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedColors[selectedStates[i]]);} %>"><% '+ + 'print(displayNamesReplacements[elementName] || elementName); %>' + + '<% } }; print("
"); } %>'); + + render() { + // I render the widget + this.rerenderScratch(); + // I bind on_change events + this.model.on('change:selected_elements', this.rerenderScratch, this); + this.model.on('change:selected_states', this.rerenderScratch, this); + this.model.on('change:disabled_elements', this.rerenderScratch, this); + this.model.on('change:display_names_replacements', this.rerenderScratch, this); + } - events(): {[e: string]: string} { - return {"click .periodic-table-entry": "toggleElement", "click .periodic-table-disabled": "toggleElement"}; -} + events(): {[e: string]: string} { + return {"click .periodic-table-entry": "toggleElement", "click .periodic-table-disabled": "toggleElement"}; + } - toggleElement(event: any) { - let classNames: string[] = _.map(event.target.classList, function(a: string){return a}); - let elementName: string = _.chain(classNames) - .filter(function(a: any){return a.startsWith('element-')}) - .map(function(a: any){return a.slice("element-".length);}) - .first() - .value(); - - var isOn = _.includes(classNames, 'elementOn'); - var isDisabled = _.includes(classNames, "periodic-table-disabled"); - // If this button is disabled, do not do anything - // (Actually, this function should not be triggered if the button - // is disabled, this is just a safety measure) - // if (isDisabled) return; - - // Check if we understood which element we are - if (typeof elementName !== 'undefined') { - var currentList = this.model.get('selected_elements'); - var currentDisabledList = this.model.get('disabled_elements'); - // NOTE! it is essential to duplicate the list, - // otherwise the value will not be updated. - var newList = currentList.slice(); - var newDisabledList = currentDisabledList.slice(); - - if (isOn) { - // remove the element from the selected_elements - newList = _.without(newList, elementName); - newDisabledList.push(elementName); - // Swap CSS state - event.target.classList.remove('elementOn'); - } - else if (isDisabled) { - newDisabledList = _.without(newDisabledList, elementName); - event.target.classList.remove('periodic-table-disabled'); - } - else { - // add the element from the selected_elements - newList.push(elementName); - // Swap CSS state - event.target.classList.add('elementOn'); - } - - // Update the model (send back data to python) - this.model.set('selected_elements', newList); - this.model.set('disabled_elements', newDisabledList); - this.touch(); + toggleElement(event: any) { + let classNames: string[] = _.map(event.target.classList, function(a: string){return a}); + let elementName: string = _.chain(classNames) + .filter(function(a: any){return a.startsWith('element-')}) + .map(function(a: any){return a.slice("element-".length);}) + .first() + .value(); + + var isOn = _.includes(classNames, 'elementOn'); + var isDisabled = _.includes(classNames, "periodic-table-disabled"); + // If this button is disabled, do not do anything + // (Actually, this function should not be triggered if the button + // is disabled, this is just a safety measure) + // if (isDisabled) return; + + let states = this.model.get("states"); + + // Check if we understood which element we are + if (typeof elementName !== 'undefined') { + var currentList = this.model.get('selected_elements'); + var currentDisabledList = this.model.get('disabled_elements'); + var currentStatesList = this.model.get('selected_states'); + // NOTE! it is essential to duplicate the list, + // otherwise the value will not be updated. + var newList = currentList.slice(); + var newDisabledList = currentDisabledList.slice(); + var newStatesList = currentStatesList.slice(); + var num = newList.indexOf(elementName); + + if (isOn) { + // remove the element from the selected_elements + + if (newStatesList[num] < states -1){ + newStatesList[num]++; } - } - - rerenderScratch() { -// Re-render full widget when the list of selected elements -// changed from python - var selectedElements = this.model.get('selected_elements'); - var disabledElements = this.model.get('disabled_elements'); - var newSelectedElements = selectedElements.slice(); - -// Here I want to clean up the two elements lists, to avoid -// to have unknown elements in the selectedElements, and -// to remove disabledElements from the selectedElements list. -// I use s variable to check if anything changed, so I send -// back the data to python only if needed - - var selectedElementsLength = newSelectedElements.length; -// Remove disabled elements from the selectedElements list -// newSelectedElements = _.difference(newSelectedElements, disabledElements); -// Remove unknown elements from the selectedElements list -// newSelectedElements = _.intersection(newSelectedElements, elementList); - var changed = newSelectedElements.length != selectedElementsLength; - -// call the update (to python) only if I actually removed/changed -// something - if (changed) { -// Make a copy before setting - this.model.set('selected_elements', newSelectedElements); - this.touch(); + else{ + newList = _.without(newList, elementName); + newDisabledList.push(elementName); + newStatesList.splice(num, 1); + // Swap CSS state + event.target.classList.remove('elementOn'); } + } + else if (isDisabled) { + newDisabledList = _.without(newDisabledList, elementName); + event.target.classList.remove('periodic-table-disabled'); + } + else { + // add the element from the selected_elements + newList.push(elementName); + newStatesList.push(0); + // Swap CSS state + event.target.classList.add('elementOn'); + } + + // Update the model (send back data to python) + this.model.set('selected_elements', newList); + this.model.set('disabled_elements', newDisabledList); + this.model.set('selected_states', newStatesList); + this.touch(); + } + } -// Render the full widget using the template - this.el.innerHTML = '
' + - this.tableTemplate({ - elementTable: elementTable, - displayNamesReplacements: this.model.get('display_names_replacements'), - selectedElements: newSelectedElements, - disabledElements: disabledElements - }) + - '
'; + rerenderScratch() { + // Re-render full widget when the list of selected elements + // changed from python + var selectedElements = this.model.get('selected_elements'); + var disabledElements = this.model.get('disabled_elements'); + var disabledColor = this.model.get('disabled_color'); + var selectedColors = this.model.get('selected_colors'); + var selectedStates = this.model.get('selected_states'); + var newSelectedElements = selectedElements.slice(); + var newSelectedColors = selectedColors.slice(); + var newSelectedStates = selectedStates.slice(); + + // Here I want to clean up the two elements lists, to avoid + // to have unknown elements in the selectedElements, and + // to remove disabledElements from the selectedElements list. + // I use s variable to check if anything changed, so I send + // back the data to python only if needed + + var selectedElementsLength = newSelectedElements.length; + // Remove disabled elements from the selectedElements list + // newSelectedElements = _.difference(newSelectedElements, disabledElements); + // Remove unknown elements from the selectedElements list + // newSelectedElements = _.intersection(newSelectedElements, elementList); + var changed = newSelectedElements.length != selectedElementsLength; + + // call the update (to python) only if I actually removed/changed + // something + if (changed) { + // Make a copy before setting + this.model.set('selected_elements', newSelectedElements); + this.touch(); } + // Render the full widget using the template + this.el.innerHTML = '
' + + this.tableTemplate({ + elementTable: elementTable, + displayNamesReplacements: this.model.get('display_names_replacements'), + selectedElements: newSelectedElements, + disabledElements: disabledElements, + disabledColor: disabledColor, + selectedColors: newSelectedColors, + selectedStates: newSelectedStates + }) + + '
'; + } + } diff --git a/widget_periodictable/periodic_table.py b/widget_periodictable/periodic_table.py index 116ca8d..e18cdca 100644 --- a/widget_periodictable/periodic_table.py +++ b/widget_periodictable/periodic_table.py @@ -9,10 +9,9 @@ """ from ipywidgets import DOMWidget -from traitlets import Unicode, Int, List, Dict +from traitlets import Unicode, Int, List, Dict from ._frontend import module_name, module_version - class PTableWidget(DOMWidget): """TODO: Add docstring here """ @@ -25,4 +24,18 @@ class PTableWidget(DOMWidget): selected_elements = List([]).tag(sync=True) disabled_elements = List([]).tag(sync=True) display_names_replacements = Dict({}).tag(sync=True) + disabled_color = Unicode('gray').tag(sync=True) + states = Int(1).tag(sync=True) + selected_states = List([]).tag(sync=True) + selected_colors = List(["#a6cee3", "#b2df8a", "#fdbf6f", "#6a3d9a", "#b15928", "#e31a1c", "#1f78b4", "#33a02c", "#ff7f00", "#cab2d6", "#ffff99"]).tag(sync=True) + + def __init__(self, states = 1): + super(PTableWidget, self).__init__() + self.states = states + def get_elements_by_state(self, state): + x = []; + for i, j in enumerate(self.selected_states): + if j == state: + x.append(self.selected_elements[i]) + return x From 120953aea17886d691f0770449de651f28330e63 Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 04:07:52 +0200 Subject: [PATCH 03/19] Add the hover title of the group --- examples/introduction.ipynb | 102 +++++++++++++++++++++++++----------- src/widget.ts | 3 +- 2 files changed, 73 insertions(+), 32 deletions(-) diff --git a/examples/introduction.ipynb b/examples/introduction.ipynb index 457c16d..60d0abd 100644 --- a/examples/introduction.ipynb +++ b/examples/introduction.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -19,13 +19,13 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e8c2936c32a0481ea3e35f2819bc3b44", + "model_id": "c13b9c333a6b4380b6c518d66df45048", "version_major": 2, "version_minor": 0 }, @@ -43,26 +43,6 @@ "widget" ] }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['Pd']" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "widget.get_elements_by_state(3)" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -79,9 +59,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9e4a2c3b385047568063d3c4fe4c5319", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(Button(button_style='success', description='Get the currently selected values', layout=Layout(w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "output = widgets.Output()\n", "\n", @@ -111,9 +106,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4c32957c1a8049bcbc9ebc346efdf1ce", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Disable oxygen')" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "toggle_disabled = widgets.Checkbox(\n", " value=\"O\" in widget.disabled_elements,\n", @@ -149,9 +159,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2ae6b08cc1da48f6a37a48b7e4524fd1", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(button_style='success', description='Select only Li and H (from python)', layout=Layout(width='300px'),…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def on_set_from_ptyhon(event):\n", " # NOTE! If you put an element which does not exist, it will stay forever in the list, but it's ignored\n", @@ -176,9 +201,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "80e526af410b4032a6065054b0bd59f7", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(button_style='success', description='Make noble gases bold', layout=Layout(width='300px'), style=Button…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def get_noble_gases_state():\n", " label_deactivate = \"Make noble gases bold\"\n", diff --git a/src/widget.ts b/src/widget.ts index 67121a5..aa9ce05 100644 --- a/src/widget.ts +++ b/src/widget.ts @@ -88,7 +88,8 @@ class MCPTableView extends DOMWidgetView { ' noselect element-<%= elementName %><% if (selectedElements.includes(elementName) && ' + '(! disabledElements.includes(elementName)) ) { print(" elementOn"); } %>" '+ 'style="background-color: <% if (disabledElements.includes(elementName)) {print(disabledColor)} ' + - 'else if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedColors[selectedStates[i]]);} %>"><% '+ + 'else if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedColors[selectedStates[i]]);} %>" '+ + 'title="group: <% if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedStates[i]);} %>" ><% '+ 'print(displayNamesReplacements[elementName] || elementName); %>' + '<% } }; print(""); } %>'); From 967572fa6a826500a25d8467abfefa42cc2d9089 Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 14:21:21 +0200 Subject: [PATCH 04/19] Update the disabled_color --- examples/introduction.ipynb | 99 ++++---------------------- widget_periodictable/periodic_table.py | 3 +- 2 files changed, 14 insertions(+), 88 deletions(-) diff --git a/examples/introduction.ipynb b/examples/introduction.ipynb index 60d0abd..c0badba 100644 --- a/examples/introduction.ipynb +++ b/examples/introduction.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -19,27 +19,12 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c13b9c333a6b4380b6c518d66df45048", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "PTableWidget(selected_colors=['#a6cee3', '#b2df8a', '#fdbf6f', '#6a3d9a', '#b15928', '#e31a1c', '#1f78b4', '#3…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Show the widget\n", - "widget = PTableWidget(states = 10)\n", + "widget = PTableWidget(states = 1, disabled_color = 'red')\n", "widget" ] }, @@ -59,24 +44,9 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "9e4a2c3b385047568063d3c4fe4c5319", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(Button(button_style='success', description='Get the currently selected values', layout=Layout(w…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "output = widgets.Output()\n", "\n", @@ -106,24 +76,9 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4c32957c1a8049bcbc9ebc346efdf1ce", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Checkbox(value=False, description='Disable oxygen')" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "toggle_disabled = widgets.Checkbox(\n", " value=\"O\" in widget.disabled_elements,\n", @@ -159,24 +114,9 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "2ae6b08cc1da48f6a37a48b7e4524fd1", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Button(button_style='success', description='Select only Li and H (from python)', layout=Layout(width='300px'),…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "def on_set_from_ptyhon(event):\n", " # NOTE! If you put an element which does not exist, it will stay forever in the list, but it's ignored\n", @@ -201,24 +141,9 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "80e526af410b4032a6065054b0bd59f7", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Button(button_style='success', description='Make noble gases bold', layout=Layout(width='300px'), style=Button…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "def get_noble_gases_state():\n", " label_deactivate = \"Make noble gases bold\"\n", diff --git a/widget_periodictable/periodic_table.py b/widget_periodictable/periodic_table.py index e18cdca..e64c4b7 100644 --- a/widget_periodictable/periodic_table.py +++ b/widget_periodictable/periodic_table.py @@ -29,9 +29,10 @@ class PTableWidget(DOMWidget): selected_states = List([]).tag(sync=True) selected_colors = List(["#a6cee3", "#b2df8a", "#fdbf6f", "#6a3d9a", "#b15928", "#e31a1c", "#1f78b4", "#33a02c", "#ff7f00", "#cab2d6", "#ffff99"]).tag(sync=True) - def __init__(self, states = 1): + def __init__(self, states = 1, disabled_color = 'gray'): super(PTableWidget, self).__init__() self.states = states + self.disabled_color = disabled_color def get_elements_by_state(self, state): x = []; From 6fc0bd2bcbc76db883f3c28c6e0779a1e24b12fa Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 14:38:52 +0200 Subject: [PATCH 05/19] Update the slected_colors in the inital --- examples/introduction.ipynb | 2 +- widget_periodictable/periodic_table.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/examples/introduction.ipynb b/examples/introduction.ipynb index c0badba..6758c7e 100644 --- a/examples/introduction.ipynb +++ b/examples/introduction.ipynb @@ -24,7 +24,7 @@ "outputs": [], "source": [ "# Show the widget\n", - "widget = PTableWidget(states = 1, disabled_color = 'red')\n", + "widget = PTableWidget(states = 3, disabled_color = 'red', selected_colors = ['red', 'green', 'yellow'])\n", "widget" ] }, diff --git a/widget_periodictable/periodic_table.py b/widget_periodictable/periodic_table.py index e64c4b7..03a6127 100644 --- a/widget_periodictable/periodic_table.py +++ b/widget_periodictable/periodic_table.py @@ -27,12 +27,16 @@ class PTableWidget(DOMWidget): disabled_color = Unicode('gray').tag(sync=True) states = Int(1).tag(sync=True) selected_states = List([]).tag(sync=True) - selected_colors = List(["#a6cee3", "#b2df8a", "#fdbf6f", "#6a3d9a", "#b15928", "#e31a1c", "#1f78b4", "#33a02c", "#ff7f00", "#cab2d6", "#ffff99"]).tag(sync=True) + selected_colors = List([]).tag(sync=True) - def __init__(self, states = 1, disabled_color = 'gray'): + def __init__(self, states = 1, disabled_color = 'gray', selected_colors = ["#a6cee3", "#b2df8a", "#fdbf6f", "#6a3d9a", "#b15928", "#e31a1c", "#1f78b4", "#33a02c", "#ff7f00", "#cab2d6", "#ffff99"]): super(PTableWidget, self).__init__() self.states = states - self.disabled_color = disabled_color + self.disabled_color = disabled_color + self.selected_colors = selected_colors + + if len(selected_colors) < states: + self.selected_colors = selected_colors + ["#a6cee3", "#b2df8a", "#fdbf6f", "#6a3d9a", "#b15928", "#e31a1c", "#1f78b4", "#33a02c", "#ff7f00", "#cab2d6", "#ffff99"] def get_elements_by_state(self, state): x = []; From 91defd8da7418640de47e9696fb68360653e0e9d Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 15:09:16 +0200 Subject: [PATCH 06/19] Update the README --- README.md | 10 ++++ examples/introduction.ipynb | 99 +++++++++++++++++++++++++++++++----- periodictable.png | Bin 74607 -> 94383 bytes src/widget.ts | 2 +- 4 files changed, 98 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 10256e0..d262234 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,16 @@ the nbextension: ```bash jupyter nbextension enable --py [--sys-prefix|--user|--system] widget_periodictable ``` + +## Selection and disable + +By clicking on the elements, one can select and disable the elements. The selected elements can be divided into different states with custom colors. +One can obtain the element list by state. + +```bash +PTable.get_elements_by_state(1) +``` + # Acknowlegements We acknowledge support from: diff --git a/examples/introduction.ipynb b/examples/introduction.ipynb index 6758c7e..5f4c396 100644 --- a/examples/introduction.ipynb +++ b/examples/introduction.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -19,12 +19,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1281cbe763d64f41b1acf74f73a6f9ba", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "PTableWidget(selected_colors=['red', 'green', 'yellow'], states=3)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Show the widget\n", - "widget = PTableWidget(states = 3, disabled_color = 'red', selected_colors = ['red', 'green', 'yellow'])\n", + "widget = PTableWidget(states = 3, disabled_color = 'gray', selected_colors = ['red', 'green', 'yellow'])\n", "widget" ] }, @@ -44,9 +59,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4b9f2ea42eaf47efbf4daf880e5eb779", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(Button(button_style='success', description='Get the currently selected values', layout=Layout(w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "output = widgets.Output()\n", "\n", @@ -76,9 +106,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ab1d7cfed905464a9c4ebbbc32bd6cd8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Disable oxygen')" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "toggle_disabled = widgets.Checkbox(\n", " value=\"O\" in widget.disabled_elements,\n", @@ -114,9 +159,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2db50068266445f5a54914f14b74ca3f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(button_style='success', description='Select only Li and H (from python)', layout=Layout(width='300px'),…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def on_set_from_ptyhon(event):\n", " # NOTE! If you put an element which does not exist, it will stay forever in the list, but it's ignored\n", @@ -141,9 +201,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "71f721c7aa524c85a570d649fa9369ba", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(button_style='success', description='Make noble gases bold', layout=Layout(width='300px'), style=Button…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def get_noble_gases_state():\n", " label_deactivate = \"Make noble gases bold\"\n", diff --git a/periodictable.png b/periodictable.png index 111c574aa84a22af063762f3890a81caa1459797..c5364d8cb356810eb59dd26a8a968852375bac03 100644 GIT binary patch literal 94383 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 IkJ{h<4~4t@$^ZZW literal 74607 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" '+ 'style="background-color: <% if (disabledElements.includes(elementName)) {print(disabledColor)} ' + 'else if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedColors[selectedStates[i]]);} %>" '+ - 'title="group: <% if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedStates[i]);} %>" ><% '+ + 'title="state: <% if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedStates[i]);} %>" ><% '+ 'print(displayNamesReplacements[elementName] || elementName); %>' + '<% } }; print(""); } %>'); From 213072bc80d471529ba90483156425e52693cd9a Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 15:22:25 +0200 Subject: [PATCH 07/19] Update the Jlab version --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6c87779..ecefee7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: python-version: '3.7' architecture: 'x64' - name: Install dependencies - run: python -m pip install jupyterlab==1.2.6 + run: python -m pip install jupyterlab==2.1.0 - name: Build the extension run: | jlpm && jlpm run build From b4913d5d7c1b6973d2bfdbf09e23a773611b85c5 Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 18:21:53 +0200 Subject: [PATCH 08/19] Fix the build.yml bug --- .github/workflows/build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ecefee7..24a0bf9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,9 @@ jobs: python-version: '3.7' architecture: 'x64' - name: Install dependencies - run: python -m pip install jupyterlab==2.1.0 + run: | + python -m pip install jupyterlab==2.1.0 + sudo apt install liblapacke - name: Build the extension run: | jlpm && jlpm run build From a883c71911c2c9412d2098b114173a181f8eed9b Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 18:30:32 +0200 Subject: [PATCH 09/19] Try again for the build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 24a0bf9..ff73bac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: - name: Install dependencies run: | python -m pip install jupyterlab==2.1.0 - sudo apt install liblapacke + python -m pip install ipywidgets - name: Build the extension run: | jlpm && jlpm run build From 01bc1df2e223176746c2cc75c282b766dbd47618 Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 18:54:34 +0200 Subject: [PATCH 10/19] Update the version --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ff73bac..ce24c8f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 steps: - name: Checkout uses: actions/checkout@v1 From f7bd91ff2aefa150f38b4b7feb96eb2e9c4c7745 Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 19:04:26 +0200 Subject: [PATCH 11/19] Update the node version --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ce24c8f..d3600fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - name: Install node uses: actions/setup-node@v1 with: - node-version: '10.x' + node-version: '10.18' - name: Install Python uses: actions/setup-python@v1 with: From 5c9575a8c95d1af82952b6811103b07f53db750a Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 19:15:16 +0200 Subject: [PATCH 12/19] update the versions for testing --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d3600fe..c3e8291 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,18 +8,18 @@ on: jobs: build: - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v1 - name: Install node uses: actions/setup-node@v1 with: - node-version: '10.18' + node-version: '13.x' - name: Install Python uses: actions/setup-python@v1 with: - python-version: '3.7' + python-version: '3.8' architecture: 'x64' - name: Install dependencies run: | From f93677ce2b19db541254d5db13d06647cc9e356a Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 20:13:32 +0200 Subject: [PATCH 13/19] use old jupyterlab version --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c3e8291..dcd5ffa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: architecture: 'x64' - name: Install dependencies run: | - python -m pip install jupyterlab==2.1.0 + python -m pip install jupyterlab==1.2.6 python -m pip install ipywidgets - name: Build the extension run: | From 0d39303af1bf61f3a1f4fdc5acb38bc9a35e2aa9 Mon Sep 17 00:00:00 2001 From: Dou Date: Sun, 26 Apr 2020 20:39:17 +0200 Subject: [PATCH 14/19] Update the state show --- examples/introduction.ipynb | 97 +++++-------------------------------- src/widget.ts | 3 +- 2 files changed, 13 insertions(+), 87 deletions(-) diff --git a/examples/introduction.ipynb b/examples/introduction.ipynb index 5f4c396..8781d8b 100644 --- a/examples/introduction.ipynb +++ b/examples/introduction.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -19,24 +19,9 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "1281cbe763d64f41b1acf74f73a6f9ba", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "PTableWidget(selected_colors=['red', 'green', 'yellow'], states=3)" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Show the widget\n", "widget = PTableWidget(states = 3, disabled_color = 'gray', selected_colors = ['red', 'green', 'yellow'])\n", @@ -59,24 +44,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4b9f2ea42eaf47efbf4daf880e5eb779", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(Button(button_style='success', description='Get the currently selected values', layout=Layout(w…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "output = widgets.Output()\n", "\n", @@ -106,24 +76,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ab1d7cfed905464a9c4ebbbc32bd6cd8", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Checkbox(value=False, description='Disable oxygen')" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "toggle_disabled = widgets.Checkbox(\n", " value=\"O\" in widget.disabled_elements,\n", @@ -159,24 +114,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "2db50068266445f5a54914f14b74ca3f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Button(button_style='success', description='Select only Li and H (from python)', layout=Layout(width='300px'),…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "def on_set_from_ptyhon(event):\n", " # NOTE! If you put an element which does not exist, it will stay forever in the list, but it's ignored\n", @@ -201,24 +141,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "71f721c7aa524c85a570d649fa9369ba", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Button(button_style='success', description='Make noble gases bold', layout=Layout(width='300px'), style=Button…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "def get_noble_gases_state():\n", " label_deactivate = \"Make noble gases bold\"\n", diff --git a/src/widget.ts b/src/widget.ts index 8daf532..2e97878 100644 --- a/src/widget.ts +++ b/src/widget.ts @@ -89,7 +89,8 @@ class MCPTableView extends DOMWidgetView { '(! disabledElements.includes(elementName)) ) { print(" elementOn"); } %>" '+ 'style="background-color: <% if (disabledElements.includes(elementName)) {print(disabledColor)} ' + 'else if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedColors[selectedStates[i]]);} %>" '+ - 'title="state: <% if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedStates[i]);} %>" ><% '+ + 'title="state: <% if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedStates[i]);} '+ + 'else if (disabledElements.includes(elementName)){print("disabled");} else {print("noselcted");} %>" ><% '+ 'print(displayNamesReplacements[elementName] || elementName); %>' + '<% } }; print(""); } %>'); From 7dcc79caf1794179eb30c67b791a1cd5a33b51b5 Mon Sep 17 00:00:00 2001 From: dou-du <56022756+dou-du@users.noreply.github.com> Date: Mon, 27 Apr 2020 11:08:09 +0200 Subject: [PATCH 15/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d262234..a6b0294 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ https://github.com/aiidalab/aiidalab-widget-periodictable ## Usage and try it on Binder -[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/osscar-org/widget-periodictable/master?urlpath=%2Flab%2Ftree%2Fexamples%2Fintroduction.ipynb) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/osscar-org/widget-periodictable/develop?urlpath=%2Flab%2Ftree%2Fexamples%2Fintroduction.ipynb) ## Installation From c2ff431b71e6694d5022fc9a3f57102ab25c8962 Mon Sep 17 00:00:00 2001 From: Dou Date: Thu, 30 Apr 2020 01:51:25 +0200 Subject: [PATCH 16/19] Update the PTable for Jlab2.1 --- examples/introduction.ipynb | 110 ++++++++++++++++++++++--- package.json | 4 +- src/plugin.ts | 2 +- src/widget.ts | 15 +--- widget_periodictable/periodic_table.py | 5 +- 5 files changed, 108 insertions(+), 28 deletions(-) diff --git a/examples/introduction.ipynb b/examples/introduction.ipynb index 8781d8b..541c571 100644 --- a/examples/introduction.ipynb +++ b/examples/introduction.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -19,12 +19,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "312dc9bc4c7645ba8711de89900c888a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "PTableWidget(noselect_color='blue', selected_colors=['red', 'green', 'yellow'], states=3)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Show the widget\n", - "widget = PTableWidget(states = 3, disabled_color = 'gray', selected_colors = ['red', 'green', 'yellow'])\n", + "widget = PTableWidget(states = 3, selected_colors = ['red', 'green', 'yellow'], noselect_color='blue')\n", "widget" ] }, @@ -44,9 +59,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9f716d75f43f46e0913e2b4e19f04f04", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(Button(button_style='success', description='Get the currently selected values', layout=Layout(w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "output = widgets.Output()\n", "\n", @@ -76,9 +106,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ba9d09402e0c43fe95a68fcb72561881", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Disable oxygen')" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "toggle_disabled = widgets.Checkbox(\n", " value=\"O\" in widget.disabled_elements,\n", @@ -114,9 +159,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "24001f1755fe492c97818b9fb70cf517", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(button_style='success', description='Select only Li and H (from python)', layout=Layout(width='300px'),…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def on_set_from_ptyhon(event):\n", " # NOTE! If you put an element which does not exist, it will stay forever in the list, but it's ignored\n", @@ -141,9 +201,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c99467dc0c284c1b9e4bb718730c8366", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(button_style='success', description='Make noble gases bold', layout=Layout(width='300px'), style=Button…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def get_noble_gases_state():\n", " label_deactivate = \"Make noble gases bold\"\n", @@ -188,6 +263,15 @@ "button_noble.on_click(on_toggle_noble_gases)\n", "button_noble" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This work has been done with the support of the EPFL Open Science Fund [OSSCAR](http://www.osscar.org).\n", + "\n", + "" + ] } ], "metadata": { @@ -206,7 +290,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.8.2" } }, "nbformat": 4, diff --git a/package.json b/package.json index 17d9178..5e4c667 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "watch:nbextension": "webpack --watch" }, "dependencies": { - "@jupyter-widgets/base": "^1.1.10 || ^2" + "@jupyter-widgets/base": "^1.1.10 || ^2 || ^3" }, "devDependencies": { "@phosphor/application": "^1.6.0", @@ -75,7 +75,7 @@ "source-map-loader": "^0.2.4", "style-loader": "^1.0.0", "ts-loader": "^5.2.1", - "typescript": "~3.1.2", + "typescript": "~3.8", "webpack": "^4.20.2", "webpack-cli": "^3.1.2" }, diff --git a/src/plugin.ts b/src/plugin.ts index ed718d1..8612152 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -29,7 +29,7 @@ const examplePlugin: IPlugin, void> = { requires: [IJupyterWidgetRegistry], activate: activateWidgetExtension, autoStart: true -}; +} as unknown as IPlugin, void>; export default examplePlugin; diff --git a/src/widget.ts b/src/widget.ts index 2e97878..80c2785 100644 --- a/src/widget.ts +++ b/src/widget.ts @@ -87,8 +87,8 @@ class MCPTableView extends DOMWidgetView { ' { print(" periodic-table-disabled"); } else { print(" periodic-table-entry"); }%> '+ ' noselect element-<%= elementName %><% if (selectedElements.includes(elementName) && ' + '(! disabledElements.includes(elementName)) ) { print(" elementOn"); } %>" '+ - 'style="background-color: <% if (disabledElements.includes(elementName)) {print(disabledColor)} ' + - 'else if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedColors[selectedStates[i]]);} %>" '+ + 'style="background-color: <% if (disabledElements.includes(elementName)) {print(disabledColor)}' + + 'else if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedColors[selectedStates[i]]);} else{print(noselectColor)} %>" '+ 'title="state: <% if (selectedElements.includes(elementName)) { i = selectedElements.indexOf(elementName); print(selectedStates[i]);} '+ 'else if (disabledElements.includes(elementName)){print("disabled");} else {print("noselcted");} %>" ><% '+ 'print(displayNamesReplacements[elementName] || elementName); %>' + @@ -117,7 +117,6 @@ class MCPTableView extends DOMWidgetView { .value(); var isOn = _.includes(classNames, 'elementOn'); - var isDisabled = _.includes(classNames, "periodic-table-disabled"); // If this button is disabled, do not do anything // (Actually, this function should not be triggered if the button // is disabled, this is just a safety measure) @@ -128,12 +127,10 @@ class MCPTableView extends DOMWidgetView { // Check if we understood which element we are if (typeof elementName !== 'undefined') { var currentList = this.model.get('selected_elements'); - var currentDisabledList = this.model.get('disabled_elements'); var currentStatesList = this.model.get('selected_states'); // NOTE! it is essential to duplicate the list, // otherwise the value will not be updated. var newList = currentList.slice(); - var newDisabledList = currentDisabledList.slice(); var newStatesList = currentStatesList.slice(); var num = newList.indexOf(elementName); @@ -145,16 +142,11 @@ class MCPTableView extends DOMWidgetView { } else{ newList = _.without(newList, elementName); - newDisabledList.push(elementName); newStatesList.splice(num, 1); // Swap CSS state event.target.classList.remove('elementOn'); } } - else if (isDisabled) { - newDisabledList = _.without(newDisabledList, elementName); - event.target.classList.remove('periodic-table-disabled'); - } else { // add the element from the selected_elements newList.push(elementName); @@ -165,7 +157,6 @@ class MCPTableView extends DOMWidgetView { // Update the model (send back data to python) this.model.set('selected_elements', newList); - this.model.set('disabled_elements', newDisabledList); this.model.set('selected_states', newStatesList); this.touch(); } @@ -177,6 +168,7 @@ class MCPTableView extends DOMWidgetView { var selectedElements = this.model.get('selected_elements'); var disabledElements = this.model.get('disabled_elements'); var disabledColor = this.model.get('disabled_color'); + var noselectColor = this.model.get('noselect_color'); var selectedColors = this.model.get('selected_colors'); var selectedStates = this.model.get('selected_states'); var newSelectedElements = selectedElements.slice(); @@ -212,6 +204,7 @@ class MCPTableView extends DOMWidgetView { selectedElements: newSelectedElements, disabledElements: disabledElements, disabledColor: disabledColor, + noselectColor: noselectColor, selectedColors: newSelectedColors, selectedStates: newSelectedStates }) + diff --git a/widget_periodictable/periodic_table.py b/widget_periodictable/periodic_table.py index 03a6127..1248d91 100644 --- a/widget_periodictable/periodic_table.py +++ b/widget_periodictable/periodic_table.py @@ -25,14 +25,17 @@ class PTableWidget(DOMWidget): disabled_elements = List([]).tag(sync=True) display_names_replacements = Dict({}).tag(sync=True) disabled_color = Unicode('gray').tag(sync=True) + noselect_color = Unicode('pink').tag(sync=True) states = Int(1).tag(sync=True) selected_states = List([]).tag(sync=True) selected_colors = List([]).tag(sync=True) - def __init__(self, states = 1, disabled_color = 'gray', selected_colors = ["#a6cee3", "#b2df8a", "#fdbf6f", "#6a3d9a", "#b15928", "#e31a1c", "#1f78b4", "#33a02c", "#ff7f00", "#cab2d6", "#ffff99"]): + + def __init__(self, states = 1, disabled_color = 'gray', noselect_color = 'pink', selected_colors = ["#a6cee3", "#b2df8a", "#fdbf6f", "#6a3d9a", "#b15928", "#e31a1c", "#1f78b4", "#33a02c", "#ff7f00", "#cab2d6", "#ffff99"]): super(PTableWidget, self).__init__() self.states = states self.disabled_color = disabled_color + self.noselect_color = noselect_color self.selected_colors = selected_colors if len(selected_colors) < states: From aba4ec1774c1bc61f8177db83f9aac5379c6252b Mon Sep 17 00:00:00 2001 From: Dou Date: Thu, 30 Apr 2020 01:53:15 +0200 Subject: [PATCH 17/19] Update the workflow for github --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dcd5ffa..b6f7f91 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: architecture: 'x64' - name: Install dependencies run: | - python -m pip install jupyterlab==1.2.6 + python -m pip install jupyterlab==2.1.1 python -m pip install ipywidgets - name: Build the extension run: | From 6f9cfe669339c16340143780be9b2aea7671f9b9 Mon Sep 17 00:00:00 2001 From: dou-du <56022756+dou-du@users.noreply.github.com> Date: Thu, 30 Apr 2020 02:00:21 +0200 Subject: [PATCH 18/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a6b0294..cb258d8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # widget-periodictable -![Build](https://github.com/osscar-org/widget-periodictable/workflows/Build/badge.svg) +![Build](https://github.com/osscar-org/widget-periodictable/workflows/Build/badge.svg?branch=develop) A jupyter widget to select chemical elements from the periodic table. This is a update version of the widget from: From 9d42d8410e4b78a264186075d7ea3a87987a915e Mon Sep 17 00:00:00 2001 From: Dou Date: Thu, 30 Apr 2020 02:32:44 +0200 Subject: [PATCH 19/19] New version number 1.1.0 --- package.json | 2 +- version_check.py | 7 ++++--- widget_periodictable/_frontend.py | 2 +- widget_periodictable/_version.py | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 5e4c667..7b44c16 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "widget-periodictable", - "version": "1.0.0", + "version": "1.1.0", "description": "A jupyter widget to select chemical elements from the periodic table.", "keywords": [ "jupyter", diff --git a/version_check.py b/version_check.py index 447e6bb..9c22aac 100644 --- a/version_check.py +++ b/version_check.py @@ -1,9 +1,11 @@ from setupbase import get_version from os.path import join as pjoin -import json +import json +from widget_periodictable._frontend import module_version name = 'widget_periodictable' +module_version = module_version[1:] version_py = get_version(pjoin(name, '_version.py')) with open('package.json') as json_file: @@ -11,9 +13,8 @@ version_npm = data['version'] -if version_py != version_npm : +if version_py != version_npm or module_version != version_npm: raise ValueError('The version number are NOT equal') else: print(version_py) - print('Check fine for the version number') diff --git a/widget_periodictable/_frontend.py b/widget_periodictable/_frontend.py index 6437bae..b4b66d5 100644 --- a/widget_periodictable/_frontend.py +++ b/widget_periodictable/_frontend.py @@ -9,4 +9,4 @@ """ module_name = "widget-periodictable" -module_version = "^1.0.0" +module_version = "^1.1.0" diff --git a/widget_periodictable/_version.py b/widget_periodictable/_version.py index 1453270..347eabc 100644 --- a/widget_periodictable/_version.py +++ b/widget_periodictable/_version.py @@ -4,5 +4,5 @@ # Copyright (c) Giovanni Pizzi and Dou Du. # Distributed under the terms of the Modified BSD License. -version_info = (1, 0, 0) +version_info = (1, 1, 0) __version__ = ".".join(map(str, version_info))