|
285 | 285 | <svg class='icon icon--l inline-block'><use xlink:href='#icon-layers'/></svg> Layers |
286 | 286 | </div> |
287 | 287 | <div class='select-container wmax-full'> |
288 | | - <select id='layer-selector' class='select select--s select--stroke wmax-full color-black'></select> |
| 288 | + <select id='layer-selector-dem' class='select select--s select--stroke wmax-full color-black'></select> |
289 | 289 | <div class='select-arrow color-black'></div> |
290 | 290 | </div> |
291 | 291 | </section> |
292 | 292 |
|
293 | 293 | <!-- Min/Max --> |
294 | | - <div id="minmax-data" class='px6 py6 none'> |
| 294 | + <div id="rescale-section" class='px6 py6 none'> |
295 | 295 | <div class='txt-h5 mb6 color-black'><svg class='icon icon--l inline-block'><use xlink:href='#icon-smooth-ramp'/></svg> Rescale</div> |
296 | 296 | <input id="data-min" class='input input--s w120-ml w60 inline-block align-center color-black' value='0' /> |
297 | 297 | <input id="data-max" class='input input--s w120-ml w60 inline-block align-center color-black' value='0' /> |
|
306 | 306 | </div> |
307 | 307 |
|
308 | 308 | <!-- Histogram --> |
309 | | - <div class='px6 py6 w-full'> |
| 309 | + <div id='histogram-section' class='px6 py6 w-full'> |
310 | 310 | <div class='txt-h5 color-black'><svg class='icon icon--l inline-block'><use xlink:href='#icon-graph'/></svg> Histogram</div> |
311 | 311 | <div id='fetch-stats-div' class='w-full align-center'> |
312 | 312 | <button id="btn-stats" class='btn bts--xs btn--stroke bg-darken25-on-hover inline-block txt-s color-black mx12 my12'>Get Dataset Statistics</button> |
|
472 | 472 | algorithm: "hillshade", |
473 | 473 | buffer: 3 |
474 | 474 | } |
| 475 | + params.bidx = document.getElementById('layer-selector-dem').selectedOptions[0].getAttribute("bidx") |
| 476 | + |
475 | 477 | let url_params = Object.keys(params).map(i => `${i}=${params[i]}`).join('&') |
476 | 478 |
|
477 | 479 | // Hillshade |
|
514 | 516 | params = { |
515 | 517 | algorithm: "terrainrgb", |
516 | 518 | format: "png", |
517 | | - bidx: 1, |
518 | 519 | //algorithm_params: JSON.stringify({nodata_height:-10000.0}) |
519 | 520 | } |
| 521 | + params.bidx = document.getElementById('layer-selector-dem').selectedOptions[0].getAttribute("bidx") |
| 522 | + |
520 | 523 | url_params = Object.keys(params).map(i => `${i}=${params[i]}`).join('&') |
521 | 524 |
|
522 | 525 | map.addSource('raster-dem', { |
|
758 | 761 | const rasterType = document.getElementById('toolbar').querySelector(".active").id |
759 | 762 | switch (rasterType) { |
760 | 763 | case 'dem': |
| 764 | + document.getElementById('cformula-section').classList.add('none') |
| 765 | + document.getElementById('rescale-section').classList.add('none') |
761 | 766 | setDemViz() |
762 | 767 | break |
763 | 768 | case '1b': |
| 769 | + document.getElementById('cformula-section').classList.remove('none') |
| 770 | + document.getElementById('rescale-section').classList.remove('none') |
764 | 771 | set1bViz() |
765 | 772 | break |
766 | 773 | case '3b': |
| 774 | + document.getElementById('cformula-section').classList.remove('none') |
| 775 | + document.getElementById('rescale-section').classList.remove('none') |
767 | 776 | set3bViz() |
768 | 777 | break |
769 | 778 | default: |
|
981 | 990 | }) |
982 | 991 | .then(data => { |
983 | 992 | scope.dataset_statistics = data |
984 | | - if (document.getElementById('toolbar').querySelector(".active").id === '1b') { |
985 | | - addHisto1Band() |
986 | | - } else { |
| 993 | + if (document.getElementById('toolbar').querySelector(".active").id === '3b') { |
987 | 994 | addHisto3Bands() |
| 995 | + } else { |
| 996 | + addHisto1Band() |
988 | 997 | } |
989 | 998 | document.getElementById('histogram').classList.remove('loading') |
990 | 999 | }) |
|
1040 | 1049 | updateViz() |
1041 | 1050 | }) |
1042 | 1051 |
|
| 1052 | +document.getElementById('layer-selector-dem').addEventListener('change', () => { |
| 1053 | + const active_layer = document.getElementById('layer-selector-dem')[document.getElementById('layer-selector-dem').selectedIndex] |
| 1054 | + updateViz() |
| 1055 | +}) |
| 1056 | + |
1043 | 1057 | document.getElementById('r-selector').addEventListener('change', () => {switchViz()}) |
1044 | 1058 | document.getElementById('g-selector').addEventListener('change', () => {switchViz()}) |
1045 | 1059 | document.getElementById('b-selector').addEventListener('change', () => {switchViz()}) |
|
1162 | 1176 | scope.data_type = data.properties.dtype |
1163 | 1177 | scope.colormap = data.properties.colormap |
1164 | 1178 |
|
1165 | | - if (['uint8','int8'].indexOf(scope.data_type) === -1 && !scope.colormap) document.getElementById('minmax-data').classList.remove('none') |
| 1179 | + if (['uint8','int8'].indexOf(scope.data_type) === -1 && !scope.colormap) document.getElementById('rescale-section').classList.remove('none') |
1166 | 1180 |
|
1167 | 1181 | const mm = dtype_ranges[scope.data_type] |
1168 | 1182 | document.getElementById('data-min').value = mm[0] |
1169 | 1183 | document.getElementById('data-max').value = mm[1] |
1170 | 1184 |
|
1171 | 1185 | scope.band_descriptions = data.properties.band_descriptions |
1172 | 1186 | const band_descr = data.properties.band_descriptions |
1173 | | - const nbands = band_descr.length |
| 1187 | + const valid_bidx = data.properties.colorinterp.map((e, i) => ( e !== 'alpha' ? i : undefined)).filter(x => x !== undefined); |
1174 | 1188 |
|
1175 | 1189 | //Populate Band (1b) selector |
1176 | 1190 | const layerList = document.getElementById('layer-selector') |
1177 | | - for (var i = 0; i < nbands; i++) { |
| 1191 | + valid_bidx.forEach((i) => { |
1178 | 1192 | let l = document.createElement('option') |
1179 | 1193 | l.setAttribute('bidx', i + 1) |
1180 | 1194 | l.setAttribute('bname', band_descr[i][0]) |
1181 | 1195 | l.text = band_descr[i][1] || band_descr[i][0] |
1182 | 1196 | layerList.appendChild(l) |
1183 | | - } |
| 1197 | + }) |
| 1198 | + |
| 1199 | + const demLayerList = document.getElementById('layer-selector-dem') |
| 1200 | + valid_bidx.forEach((i) => { |
| 1201 | + let l = document.createElement('option') |
| 1202 | + l.setAttribute('bidx', i + 1) |
| 1203 | + l.setAttribute('bname', band_descr[i][0]) |
| 1204 | + l.text = band_descr[i][1] || band_descr[i][0] |
| 1205 | + demLayerList.appendChild(l) |
| 1206 | + }) |
1184 | 1207 |
|
1185 | 1208 | // Populate R/G/B (3b) selectors |
1186 | 1209 | const rList = document.getElementById('r-selector') |
1187 | | - for (var i = 0; i < nbands; i++) { |
| 1210 | + valid_bidx.forEach((i) => { |
1188 | 1211 | let l = document.createElement('option') |
1189 | 1212 | l.setAttribute('bidx', i + 1) |
1190 | 1213 | l.setAttribute('bname', band_descr[i][0]) |
1191 | 1214 | l.text = band_descr[i][1] || band_descr[i][0] |
1192 | 1215 | if (i === 0) l.selected="selected" |
1193 | 1216 | rList.appendChild(l) |
1194 | | - } |
| 1217 | + }) |
1195 | 1218 |
|
1196 | 1219 | const gList = document.getElementById('g-selector') |
1197 | | - for (var i = 0; i < nbands; i++) { |
| 1220 | + valid_bidx.forEach((i) => { |
1198 | 1221 | let l = document.createElement('option') |
1199 | 1222 | l.setAttribute('bidx', i + 1) |
1200 | 1223 | l.setAttribute('bname', band_descr[i][0]) |
1201 | 1224 | l.text = band_descr[i][1] || band_descr[i][0] |
1202 | 1225 | if (i === 1) l.selected="selected" |
1203 | 1226 | gList.appendChild(l) |
1204 | | - } |
| 1227 | + }) |
1205 | 1228 |
|
1206 | 1229 | const bList = document.getElementById('b-selector') |
1207 | | - for (var i = 0; i < nbands; i++) { |
| 1230 | + valid_bidx.forEach((i) => { |
1208 | 1231 | let l = document.createElement('option') |
1209 | 1232 | l.setAttribute('bidx', i + 1) |
1210 | 1233 | l.setAttribute('bname', band_descr[i][0]) |
|
1215 | 1238 | l.selected="selected" |
1216 | 1239 | } |
1217 | 1240 | bList.appendChild(l) |
1218 | | - } |
| 1241 | + }) |
1219 | 1242 |
|
1220 | 1243 | // remove loader |
1221 | 1244 | document.getElementById('loader').classList.toggle('off') |
|
1241 | 1264 | paint: {'line-color': '#3bb2d0', 'line-width': 1} |
1242 | 1265 | }) |
1243 | 1266 |
|
1244 | | - if (nbands === 1) { |
| 1267 | + if (valid_bidx.length === 1) { |
1245 | 1268 | document.getElementById('3b').classList.add('disabled') |
1246 | 1269 | document.getElementById('3b').classList.remove('active') |
1247 | 1270 | document.getElementById('3b-section').classList.toggle('active') |
|
0 commit comments