1 import { doubleClick
, dragElement
, IS_MOBILE
} from '../util.js';
2 import { controllers
} from './Controller.js';
3 import { OpacitySlider
} from './opacitySlider.js';
5 export class ColorbarPanel
extends HTMLElement
{
9 <div id='colorbar-panel' class='hidden'>
10 <div id='colorbar-tab' class='feature-controller'>
11 <span id='tab-text'>colorbar</span>
13 <div id='raster-colorbar-bg' class='colorbar-bg'>
14 <img id='raster-colorbar'/>
15 <div id='colorbar-opacity' class='hidden'>
16 <span id='colorbar-opacity-label'>Adjust Opacity</span>
17 <button id='colorbar-opacity-done'>done</button>
25 const colorbarBgImg
= this.querySelector('#raster-colorbar-bg');
26 dragElement(colorbarBgImg
, '', true);
28 this.subscribeToColorbarURL();
30 this.initializeColorbarTab();
31 this.intializeOpacitySlider();
34 subscribeToColorbarURL() {
35 const colorbarImg
= this.querySelector('#raster-colorbar');
36 controllers
.colorbarURL
.subscribe(() => {
37 let colorbarURL
= controllers
.colorbarURL
.getValue();
38 if (colorbarURL
== null) {
42 colorbarImg
.src
= colorbarURL
;
47 initializeColorbarTab() {
48 const colorbarTab
= this.querySelector('#colorbar-tab');
49 const colorbarBgImg
= this.querySelector('#raster-colorbar-bg');
50 colorbarTab
.onpointerdown
= () => {
51 if (colorbarBgImg
.classList
.contains('hidden')) {
59 intializeOpacitySlider() {
60 const colorbarBgImg
= this.querySelector('#raster-colorbar-bg');
61 const colorbarImg
= this.querySelector('#raster-colorbar');
62 const doneButton
= this.querySelector('#colorbar-opacity-done');
63 const colorbarOpacity
= this.querySelector('#colorbar-opacity');
65 const opacityUpdateCallback
= (opacity
) => {
66 colorbarBgImg
.style
.backgroundColor
= `rgba(255, 255, 255, ${opacity})`;
68 const sliderWidth
= IS_MOBILE
? 70 : 140;
69 const opacitySlider
= new OpacitySlider(opacityUpdateCallback
, null, 1, sliderWidth
);
70 colorbarOpacity
.insertBefore(opacitySlider
, doneButton
);
71 let doubleClickCallback
= () => {
72 if (colorbarImg
.classList
.contains('hidden')) {
73 colorbarImg
.classList
.remove('hidden');
74 colorbarOpacity
.classList
.add('hidden');
76 colorbarImg
.classList
.add('hidden');
77 colorbarOpacity
.classList
.remove('hidden');
80 doneButton
.onpointerdown
= () => {
81 colorbarImg
.classList
.remove('hidden');
82 colorbarOpacity
.classList
.add('hidden');
84 doubleClick(colorbarBgImg
, doubleClickCallback
);
88 const colorbarImgContainer
= this.querySelector('#colorbar-panel');
89 colorbarImgContainer
.classList
.add('hidden');
93 const colorbarImgContainer
= this.querySelector('#colorbar-panel');
94 colorbarImgContainer
.classList
.remove('hidden');
98 const colorbarImg
= this.querySelector('#raster-colorbar-bg');
99 colorbarImg
.classList
.remove('hidden');
103 const colorbarImg
= this.querySelector('#raster-colorbar-bg');
104 colorbarImg
.classList
.add('hidden');
108 window
.customElements
.define('colorbar-panel', ColorbarPanel
);