5
5
<b-card-text class =" mt-4" v-if =" asset.description" >
6
6
<Description :description =" asset.description" compact />
7
7
</b-card-text >
8
- <Metadata class =" mt-4" :data =" asset " :context =" context" :ignoreFields =" ignore" title =" " type =" Asset" />
8
+ <Metadata class =" mt-4" :data =" resolvedAsset " :context =" context" :ignoreFields =" ignore" title =" " type =" Asset" />
9
9
</component >
10
10
</template >
11
11
@@ -16,6 +16,8 @@ import Description from './Description.vue';
16
16
import HrefActions from ' ./HrefActions.vue' ;
17
17
import StacFieldsMixin from ' ./StacFieldsMixin' ;
18
18
import AuthUtils from ' ./auth/utils' ;
19
+ import Utils from ' ../utils' ;
20
+ import STAC from ' ../models/stac' ;
19
21
20
22
export default {
21
23
name: ' AssetAlternative' ,
@@ -61,8 +63,9 @@ export default {
61
63
' table:storage_options' ,
62
64
' xarray:open_kwargs' ,
63
65
' xarray:storage_options' ,
64
- // Special handling for auth
66
+ // Special handling for auth and storage
65
67
' auth:refs' ,
68
+ ' storage:refs' ,
66
69
// Alternative Assets are displayed separately
67
70
' alternate' ,
68
71
' alternate:name' ,
@@ -71,6 +74,15 @@ export default {
71
74
},
72
75
computed: {
73
76
... mapState ([' buildTileUrlTemplate' , ' useTileLayerAsFallback' ]),
77
+ resolvedAsset () {
78
+ if (Array .isArray (this .asset [' storage:refs' ])) {
79
+ const storage = this .resolveStorage (this .asset , this .context );
80
+ const asset = Object .assign ({}, this .asset );
81
+ asset[' storage:schemes' ] = storage;
82
+ return asset;
83
+ }
84
+ return this .asset ;
85
+ },
74
86
component () {
75
87
return this .hasAlternatives ? ' div' : ' b-card-body' ;
76
88
},
@@ -93,6 +105,22 @@ export default {
93
105
}
94
106
},
95
107
methods: {
108
+ resolveStorage (obj , context ) {
109
+ if (context instanceof STAC && Utils .size (obj[' storage:refs' ]) > 0 ) {
110
+ const scheme = context .getMetadata (' storage:schemes' );
111
+ if (Utils .size (scheme) > 0 ) {
112
+ const schemes = {};
113
+ for (const key in scheme) {
114
+ const value = scheme[key];
115
+ if (Utils .isObject (value)) {
116
+ schemes[key] = value;
117
+ }
118
+ }
119
+ return schemes;
120
+ }
121
+ }
122
+ return [];
123
+ },
96
124
show () {
97
125
this .$emit (' show' , ... arguments );
98
126
}
0 commit comments