|
22 | 22 | <v-col cols="4"> |
23 | 23 | <v-select |
24 | 24 | v-model="output_extension" |
25 | | - :items="['png', 'jpg']" |
| 25 | + :items="output_extensions" |
26 | 26 | label="Extension" |
27 | 27 | required |
28 | 28 | /> |
|
33 | 33 | <v-col cols="12"> |
34 | 34 | <v-switch |
35 | 35 | v-model="include_background" |
| 36 | + :disabled="output_extension !== 'png'" |
36 | 37 | label="Include background" |
37 | 38 | inset |
38 | 39 | ></v-switch> |
|
52 | 53 | <v-btn |
53 | 54 | variant="outlined" |
54 | 55 | class="mb-4" |
| 56 | + :disabled="!filename || !output_extension" |
55 | 57 | color="white" |
56 | 58 | text |
57 | 59 | @click="takeScreenshot()" |
|
64 | 66 | </template> |
65 | 67 |
|
66 | 68 | <script setup> |
| 69 | + import fileDownload from "js-file-download" |
| 70 | +
|
67 | 71 | const emit = defineEmits(["close"]) |
68 | 72 | import viewer_schemas from "@geode/opengeodeweb-viewer/schemas.json" |
69 | 73 |
|
70 | 74 | const props = defineProps({ |
71 | 75 | show_dialog: { type: Boolean, required: true }, |
72 | 76 | }) |
73 | 77 |
|
| 78 | + const output_extensions = |
| 79 | + viewer_schemas.opengeodeweb_viewer.take_screenshot.properties |
| 80 | + .output_extension.enum |
74 | 81 | const filename = ref("") |
75 | 82 | const output_extension = ref("png") |
76 | 83 | const include_background = ref(true) |
77 | 84 |
|
78 | 85 | async function takeScreenshot() { |
79 | | - console.log("screenshot") |
80 | | -
|
81 | | - await viewer_call({ |
82 | | - schema: viewer_schemas.opengeodeweb_viewer.take_screenshot, |
83 | | - params: { |
84 | | - filename: filename.value, |
85 | | - output_extension: output_extension.value, |
86 | | - include_background: include_background.value, |
| 86 | + await viewer_call( |
| 87 | + { |
| 88 | + schema: viewer_schemas.opengeodeweb_viewer.take_screenshot, |
| 89 | + params: { |
| 90 | + filename: filename.value, |
| 91 | + output_extension: output_extension.value, |
| 92 | + include_background: include_background.value, |
| 93 | + }, |
87 | 94 | }, |
88 | | - }) |
89 | | -
|
| 95 | + { |
| 96 | + response_function: async (response) => { |
| 97 | + fileDownload( |
| 98 | + response.blob, |
| 99 | + filename.value + "." + output_extension.value, |
| 100 | + ) |
| 101 | + }, |
| 102 | + }, |
| 103 | + ) |
90 | 104 | emit("close") |
91 | 105 | } |
| 106 | +
|
| 107 | + watch(output_extension, (value) => { |
| 108 | + if (value !== "png") { |
| 109 | + include_background.value = true |
| 110 | + } |
| 111 | + }) |
92 | 112 | </script> |
0 commit comments