ソースを参照

add State.Snapshots.OpenUrl

Alexander Rose 5 年 前
コミット
54fb9beeee

+ 5 - 0
src/mol-plugin/behavior/static/state.ts

@@ -187,4 +187,9 @@ export function Snapshots(ctx: PluginContext) {
     PluginCommands.State.Snapshots.OpenFile.subscribe(ctx, ({ file }) => {
         return ctx.managers.snapshot.open(file);
     });
+
+    PluginCommands.State.Snapshots.OpenUrl.subscribe(ctx, async ({ url, type }) => {
+        const data = await ctx.runTask(ctx.fetch({ url, type: 'binary' }));
+        return ctx.managers.snapshot.open(new File([data], `state.${type}`));
+    });
 }

+ 2 - 1
src/mol-plugin/commands.ts

@@ -37,8 +37,9 @@ export const PluginCommands = {
             Upload: PluginCommand<{ name?: string, description?: string, playOnLoad?: boolean, serverUrl: string, params?: PluginState.SnapshotParams }>(),
             Fetch: PluginCommand<{ url: string }>(),
 
-            DownloadToFile: PluginCommand<{ name?: string, type: 'json' | 'molj' | 'zip' | 'molx', params?: PluginState.SnapshotParams }>(),
+            DownloadToFile: PluginCommand<{ name?: string, type: PluginState.SnapshotType, params?: PluginState.SnapshotParams }>(),
             OpenFile: PluginCommand<{ file: File }>(),
+            OpenUrl: PluginCommand<{ url: string, type: PluginState.SnapshotType }>(),
         }
     },
     Interactivity: {

+ 2 - 0
src/mol-plugin/state.ts

@@ -166,4 +166,6 @@ namespace PluginState {
         structureFocus?: StructureFocusSnapshot,
         durationInMs?: number
     }
+
+    export type SnapshotType = 'json' | 'molj' | 'zip' | 'molx'
 }