Skip to content

Commit 22504d4

Browse files
committed
Merge branch 'main' of github.com:materialsproject/crystaltoolkit into main
2 parents 8fca2a8 + 46a9fb8 commit 22504d4

File tree

6 files changed

+95
-4
lines changed

6 files changed

+95
-4
lines changed

docs/_modules/crystal_toolkit/components/structure.html

Lines changed: 80 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@
7373
<div itemprop="articleBody">
7474

7575
<h1>Source code for crystal_toolkit.components.structure</h1><div class="highlight"><pre>
76-
<span></span><span class="kn">import</span> <span class="nn">json</span>
76+
<span></span><span class="kn">from</span> <span class="nn">base64</span> <span class="kn">import</span> <span class="n">b64encode</span>
77+
78+
<span class="kn">import</span> <span class="nn">json</span>
7779
<span class="kn">import</span> <span class="nn">os</span>
7880
<span class="kn">import</span> <span class="nn">re</span>
7981
<span class="kn">import</span> <span class="nn">sys</span>
@@ -509,6 +511,37 @@ <h1>Source code for crystal_toolkit.components.structure</h1><div class="highlig
509511
<span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;image/png&quot;</span><span class="p">,</span>
510512
<span class="p">}</span>
511513

514+
<span class="nd">@app</span><span class="o">.</span><span class="n">callback</span><span class="p">(</span>
515+
<span class="n">Output</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s2">&quot;download-structure&quot;</span><span class="p">),</span> <span class="s2">&quot;data&quot;</span><span class="p">),</span>
516+
<span class="n">Input</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s2">&quot;download-button&quot;</span><span class="p">),</span> <span class="s2">&quot;n_clicks&quot;</span><span class="p">),</span>
517+
<span class="p">[</span>
518+
<span class="n">State</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_kwarg_id</span><span class="p">(</span><span class="s2">&quot;download_fmt&quot;</span><span class="p">),</span> <span class="s2">&quot;value&quot;</span><span class="p">),</span>
519+
<span class="n">State</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(),</span> <span class="s2">&quot;data&quot;</span><span class="p">),</span>
520+
<span class="p">],</span>
521+
<span class="p">)</span>
522+
<span class="k">def</span> <span class="nf">download_image</span><span class="p">(</span><span class="n">n_clicks</span><span class="p">,</span> <span class="n">fmt</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
523+
524+
<span class="k">if</span> <span class="ow">not</span> <span class="n">n_clicks</span><span class="p">:</span>
525+
<span class="k">raise</span> <span class="n">PreventUpdate</span>
526+
527+
<span class="n">structure</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">from_data</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
528+
<span class="n">fmt</span> <span class="o">=</span> <span class="n">fmt</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
529+
530+
<span class="k">try</span><span class="p">:</span>
531+
<span class="n">contents</span> <span class="o">=</span> <span class="n">structure</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">fmt</span><span class="o">=</span><span class="n">fmt</span><span class="p">)</span>
532+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
533+
<span class="c1"># don&#39;t fail silently, tell user what went wrong</span>
534+
<span class="n">contents</span> <span class="o">=</span> <span class="n">exc</span>
535+
536+
<span class="n">base64</span> <span class="o">=</span> <span class="n">b64encode</span><span class="p">(</span><span class="n">contents</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">&quot;utf-8&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">&quot;ascii&quot;</span><span class="p">)</span>
537+
538+
<span class="k">return</span> <span class="p">{</span>
539+
<span class="s2">&quot;content&quot;</span><span class="p">:</span> <span class="n">base64</span><span class="p">,</span>
540+
<span class="s2">&quot;base64&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
541+
<span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;text/plain&quot;</span><span class="p">,</span>
542+
<span class="s2">&quot;filename&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">structure</span><span class="o">.</span><span class="n">composition</span><span class="o">.</span><span class="n">reduced_formula</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">fmt</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
543+
<span class="p">}</span>
544+
512545
<span class="nd">@app</span><span class="o">.</span><span class="n">callback</span><span class="p">(</span>
513546
<span class="n">Output</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s2">&quot;title_container&quot;</span><span class="p">),</span> <span class="s2">&quot;children&quot;</span><span class="p">),</span>
514547
<span class="p">[</span><span class="n">Input</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s2">&quot;legend_data&quot;</span><span class="p">),</span> <span class="s2">&quot;data&quot;</span><span class="p">)],</span>
@@ -675,7 +708,6 @@ <h1>Source code for crystal_toolkit.components.structure</h1><div class="highlig
675708
<span class="n">sceneSize</span><span class="o">=</span><span class="s2">&quot;100%&quot;</span><span class="p">,</span>
676709
<span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">scene_kwargs</span><span class="p">,</span>
677710
<span class="p">),</span>
678-
<span class="n">dcc</span><span class="o">.</span><span class="n">Download</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s2">&quot;download&quot;</span><span class="p">)),</span>
679711
<span class="p">],</span>
680712
<span class="n">style</span><span class="o">=</span><span class="p">{</span>
681713
<span class="s2">&quot;width&quot;</span><span class="p">:</span> <span class="s2">&quot;100%&quot;</span><span class="p">,</span>
@@ -692,6 +724,7 @@ <h1>Source code for crystal_toolkit.components.structure</h1><div class="highlig
692724
<span class="n">kind</span><span class="o">=</span><span class="s2">&quot;primary&quot;</span><span class="p">,</span>
693725
<span class="nb">id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s2">&quot;screenshot_button&quot;</span><span class="p">),</span>
694726
<span class="p">),</span>
727+
<span class="n">dcc</span><span class="o">.</span><span class="n">Download</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s2">&quot;download&quot;</span><span class="p">)),</span>
695728
<span class="p">],</span>
696729
<span class="c1"># TODO: change to &quot;bottom&quot; when dropdown included</span>
697730
<span class="n">style</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;verticalAlign&quot;</span><span class="p">:</span> <span class="s2">&quot;top&quot;</span><span class="p">,</span> <span class="s2">&quot;display&quot;</span><span class="p">:</span> <span class="s2">&quot;inline-block&quot;</span><span class="p">},</span>
@@ -874,12 +907,50 @@ <h1>Source code for crystal_toolkit.components.structure</h1><div class="highlig
874907
<span class="p">]</span>
875908
<span class="p">)</span>
876909

910+
<span class="c1"># human-readable label to file extension</span>
911+
<span class="n">struct_options</span> <span class="o">=</span> <span class="p">{</span>
912+
<span class="s2">&quot;CIF&quot;</span><span class="p">:</span> <span class="s2">&quot;cif&quot;</span><span class="p">,</span>
913+
<span class="s2">&quot;POSCAR&quot;</span><span class="p">:</span> <span class="s2">&quot;poscar&quot;</span><span class="p">,</span>
914+
<span class="s2">&quot;JSON&quot;</span><span class="p">:</span> <span class="s2">&quot;json&quot;</span><span class="p">,</span>
915+
<span class="s2">&quot;Prismatic&quot;</span><span class="p">:</span> <span class="s2">&quot;prismatic&quot;</span><span class="p">,</span>
916+
<span class="p">}</span>
917+
918+
<span class="n">state</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;fmt&quot;</span><span class="p">:</span> <span class="s2">&quot;cif&quot;</span><span class="p">}</span>
919+
920+
<span class="n">download_options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_choice_input</span><span class="p">(</span>
921+
<span class="n">kwarg_label</span><span class="o">=</span><span class="s2">&quot;download_fmt&quot;</span><span class="p">,</span>
922+
<span class="n">state</span><span class="o">=</span><span class="n">state</span><span class="p">,</span>
923+
<span class="n">options</span><span class="o">=</span><span class="p">[{</span><span class="s2">&quot;label&quot;</span><span class="p">:</span> <span class="n">k</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">:</span> <span class="n">v</span><span class="p">}</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">struct_options</span><span class="o">.</span><span class="n">items</span><span class="p">()],</span>
924+
<span class="n">style</span><span class="o">=</span><span class="p">{</span>
925+
<span class="s2">&quot;border-radius&quot;</span><span class="p">:</span> <span class="s2">&quot;4px 0px 0px 4px&quot;</span><span class="p">,</span>
926+
<span class="s2">&quot;width&quot;</span><span class="p">:</span> <span class="s2">&quot;10rem&quot;</span><span class="p">,</span>
927+
<span class="s2">&quot;height&quot;</span><span class="p">:</span> <span class="s2">&quot;1.5rem&quot;</span><span class="p">,</span>
928+
<span class="p">},</span>
929+
<span class="p">)</span>
930+
931+
<span class="n">download_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span>
932+
<span class="p">[</span><span class="n">Icon</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="s2">&quot;download&quot;</span><span class="p">),</span> <span class="n">html</span><span class="o">.</span><span class="n">Span</span><span class="p">(),</span> <span class="s2">&quot;Download&quot;</span><span class="p">],</span>
933+
<span class="n">kind</span><span class="o">=</span><span class="s2">&quot;primary&quot;</span><span class="p">,</span>
934+
<span class="nb">id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s2">&quot;download-button&quot;</span><span class="p">),</span>
935+
<span class="n">style</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;height&quot;</span><span class="p">:</span> <span class="s2">&quot;2.25rem&quot;</span><span class="p">},</span>
936+
<span class="p">)</span>
937+
938+
<span class="n">download_layout</span> <span class="o">=</span> <span class="n">html</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span>
939+
<span class="p">[</span>
940+
<span class="n">html</span><span class="o">.</span><span class="n">Div</span><span class="p">([</span><span class="n">download_options</span><span class="p">],</span> <span class="n">className</span><span class="o">=</span><span class="s2">&quot;control&quot;</span><span class="p">),</span>
941+
<span class="n">html</span><span class="o">.</span><span class="n">Div</span><span class="p">([</span><span class="n">download_button</span><span class="p">],</span> <span class="n">className</span><span class="o">=</span><span class="s2">&quot;control&quot;</span><span class="p">),</span>
942+
<span class="n">dcc</span><span class="o">.</span><span class="n">Download</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s2">&quot;download-structure&quot;</span><span class="p">)),</span>
943+
<span class="p">],</span>
944+
<span class="n">className</span><span class="o">=</span><span class="s2">&quot;field has-addons&quot;</span><span class="p">,</span>
945+
<span class="p">)</span>
946+
877947
<span class="k">return</span> <span class="p">{</span>
878948
<span class="s2">&quot;struct&quot;</span><span class="p">:</span> <span class="n">struct_layout</span><span class="p">,</span>
879949
<span class="s2">&quot;screenshot&quot;</span><span class="p">:</span> <span class="n">screenshot_layout</span><span class="p">,</span>
880950
<span class="s2">&quot;options&quot;</span><span class="p">:</span> <span class="n">options_layout</span><span class="p">,</span>
881951
<span class="s2">&quot;title&quot;</span><span class="p">:</span> <span class="n">title_layout</span><span class="p">,</span>
882952
<span class="s2">&quot;legend&quot;</span><span class="p">:</span> <span class="n">legend_layout</span><span class="p">,</span>
953+
<span class="s2">&quot;download&quot;</span><span class="p">:</span> <span class="n">download_layout</span><span class="p">,</span>
883954
<span class="p">}</span>
884955

885956
<div class="viewcode-block" id="StructureMoleculeComponent.layout"><a class="viewcode-back" href="../../../source/crystal_toolkit.components.structure.html#crystal_toolkit.components.structure.StructureMoleculeComponent.layout">[docs]</a> <span class="k">def</span> <span class="nf">layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;500px&quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">html</span><span class="o">.</span><span class="n">Div</span><span class="p">:</span>
@@ -1083,7 +1154,13 @@ <h1>Source code for crystal_toolkit.components.structure</h1><div class="highlig
10831154
<span class="sd">&quot;&quot;&quot;</span>
10841155
<span class="sd"> :return: A layout including a legend for the structure/molecule.</span>
10851156
<span class="sd"> &quot;&quot;&quot;</span>
1086-
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sub_layouts</span><span class="p">[</span><span class="s2">&quot;legend&quot;</span><span class="p">]</span></div></div>
1157+
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sub_layouts</span><span class="p">[</span><span class="s2">&quot;legend&quot;</span><span class="p">]</span></div>
1158+
1159+
<div class="viewcode-block" id="StructureMoleculeComponent.download_layout"><a class="viewcode-back" href="../../../source/crystal_toolkit.components.structure.html#crystal_toolkit.components.structure.StructureMoleculeComponent.download_layout">[docs]</a> <span class="k">def</span> <span class="nf">download_layout</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1160+
<span class="sd">&quot;&quot;&quot;</span>
1161+
<span class="sd"> :return: A layout including a download button to download the structure/molecule.</span>
1162+
<span class="sd"> &quot;&quot;&quot;</span>
1163+
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sub_layouts</span><span class="p">[</span><span class="s2">&quot;download&quot;</span><span class="p">]</span></div></div>
10871164
</pre></div>
10881165

10891166
</div>

docs/components/structuremoleculecomponent.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ <h2>Example Usage<a class="headerlink" href="#example-usage" title="Permalink to
136136
<span class="n">structure_component</span><span class="o">.</span><span class="n">title_layout</span><span class="p">(),</span>
137137
<span class="n">html</span><span class="o">.</span><span class="n">H3</span><span class="p">(</span><span class="s2">&quot;Legend Layout&quot;</span><span class="p">),</span>
138138
<span class="n">structure_component</span><span class="o">.</span><span class="n">legend_layout</span><span class="p">(),</span>
139+
<span class="n">html</span><span class="o">.</span><span class="n">H3</span><span class="p">(</span><span class="s2">&quot;Download Layout&quot;</span><span class="p">),</span>
140+
<span class="n">structure_component</span><span class="o">.</span><span class="n">download_layout</span><span class="p">(),</span>
139141
<span class="p">]</span>
140142
<span class="p">)</span>
141143

docs/genindex.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,8 @@ <h2 id="D">D</h2>
679679
</ul></td>
680680
<td style="width: 33%; vertical-align: top;"><ul>
681681
<li><a href="source/crystal_toolkit.components.diffraction.html#crystal_toolkit.components.diffraction.DiffractionPanelComponent">DiffractionPanelComponent (class in crystal_toolkit.components.diffraction)</a>
682+
</li>
683+
<li><a href="source/crystal_toolkit.components.structure.html#crystal_toolkit.components.structure.StructureMoleculeComponent.download_layout">download_layout() (crystal_toolkit.components.structure.StructureMoleculeComponent method)</a>
682684
</li>
683685
<li><a href="source/crystal_toolkit.components.download.html#crystal_toolkit.components.download.DownloadPanelComponent">DownloadPanelComponent (class in crystal_toolkit.components.download)</a>
684686
</li>

docs/objects.inv

7 Bytes
Binary file not shown.

docs/searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)