Explorar o código

Merge branch 'master' of https://github.com/molstar/molstar

David Sehnal %!s(int64=5) %!d(string=hai) anos
pai
achega
2b5d9bd213
Modificáronse 1 ficheiros con 11 adicións e 1 borrados
  1. 11 1
      src/mol-plugin/ui/image.tsx

+ 11 - 1
src/mol-plugin/ui/image.tsx

@@ -12,6 +12,8 @@ import { ImagePass } from '../../mol-canvas3d/passes/image';
 import { download } from '../../mol-util/download';
 import { download } from '../../mol-util/download';
 import { setCanvasSize, canvasToBlob } from '../../mol-canvas3d/util';
 import { setCanvasSize, canvasToBlob } from '../../mol-canvas3d/util';
 import { Task } from '../../mol-task';
 import { Task } from '../../mol-task';
+import { StateSelection } from '../../mol-state';
+import { PluginStateObject } from '../state/objects';
 
 
 interface ImageControlsState extends CollapsableState {
 interface ImageControlsState extends CollapsableState {
     showPreview: boolean
     showPreview: boolean
@@ -72,6 +74,14 @@ export class ImageControls<P, S extends ImageControlsState> extends CollapsableC
         this.canvasContext.putImageData(imageData, 0, 0)
         this.canvasContext.putImageData(imageData, 0, 0)
     }
     }
 
 
+    private getFilename() {
+        const models = this.plugin.state.dataState.select(StateSelection.Generators.rootsOfType(PluginStateObject.Molecule.Model)).map(s => s.obj!.data)
+        const uniqueIds = new Set<string>()
+        models.forEach(m => uniqueIds.add(m.entryId.toUpperCase()))
+        const idString = Array.from(uniqueIds).join('-')
+        return `${idString || 'molstar-image'}.png`
+    }
+
     private downloadTask = () => {
     private downloadTask = () => {
         return Task.create('Download Image', async ctx => {
         return Task.create('Download Image', async ctx => {
             const { width, height } = this.getSize()
             const { width, height } = this.getSize()
@@ -90,7 +100,7 @@ export class ImageControls<P, S extends ImageControlsState> extends CollapsableC
 
 
             await ctx.update('Downloading image...')
             await ctx.update('Downloading image...')
             const blob = await canvasToBlob(canvas, 'png')
             const blob = await canvasToBlob(canvas, 'png')
-            download(blob, 'molstar-image.png')
+            download(blob, this.getFilename())
         })
         })
     }
     }