Spaces:
Running
Running
ok, now where are the pairs to choose from and also no buttons work
Browse files- index.html +74 -39
index.html
CHANGED
|
@@ -81,14 +81,16 @@
|
|
| 81 |
</div>
|
| 82 |
</header>
|
| 83 |
<div class="p-4">
|
| 84 |
-
<
|
| 85 |
-
|
| 86 |
-
<
|
| 87 |
-
|
|
|
|
|
|
|
|
|
|
| 88 |
</div>
|
| 89 |
</div>
|
| 90 |
-
|
| 91 |
-
<div id="chartGrid" class="chart-grid"></div>
|
| 92 |
</div>
|
| 93 |
|
| 94 |
<div id="sidebar" class="p-4">
|
|
@@ -151,16 +153,18 @@
|
|
| 151 |
const closeSidebar = document.getElementById('closeSidebar');
|
| 152 |
const darkModeToggle = document.getElementById('darkModeToggle');
|
| 153 |
const timeframeSelector = document.getElementById('timeframe');
|
| 154 |
-
|
| 155 |
// Initialize UI components
|
| 156 |
-
|
| 157 |
// Initialize Select2 for pair selection
|
| 158 |
-
pairSelector.select2({
|
| 159 |
placeholder: "Search and select trading pairs",
|
| 160 |
allowClear: true,
|
| 161 |
width: '100%',
|
| 162 |
closeOnSelect: false
|
| 163 |
});
|
|
|
|
|
|
|
|
|
|
| 164 |
// Initialize color pickers
|
| 165 |
const candleUpPicker = Pickr.create({
|
| 166 |
el: '#candleUpColor',
|
|
@@ -193,28 +197,44 @@
|
|
| 193 |
}
|
| 194 |
}
|
| 195 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
|
| 197 |
-
|
| 198 |
-
|
|
|
|
|
|
|
| 199 |
|
| 200 |
-
|
| 201 |
-
|
|
|
|
|
|
|
| 202 |
|
| 203 |
-
|
| 204 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 205 |
|
| 206 |
-
// Event listeners
|
| 207 |
-
document.getElementById('addPairsBtn').addEventListener('click', addSelectedPairs);
|
| 208 |
-
document.getElementById('clearPairsBtn').addEventListener('click', clearAllPairs);
|
| 209 |
-
settingsBtn.addEventListener('click', openSidebar);
|
| 210 |
-
closeSidebar.addEventListener('click', closeSidebar);
|
| 211 |
-
|
| 212 |
// Close sidebar when clicking outside
|
| 213 |
document.addEventListener('click', function(event) {
|
| 214 |
if (!sidebar.contains(event.target) && event.target !== settingsBtn) {
|
| 215 |
closeSidebar();
|
| 216 |
}
|
| 217 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
darkModeToggle.addEventListener('click', function() {
|
| 219 |
document.body.classList.toggle('dark-mode');
|
| 220 |
const isDarkMode = document.body.classList.contains('dark-mode');
|
|
@@ -261,8 +281,8 @@ document.getElementById('saveSettings').addEventListener('click', saveSettings);
|
|
| 261 |
processWebSocketMessage(message);
|
| 262 |
};
|
| 263 |
}
|
| 264 |
-
|
| 265 |
function fetchPairs() {
|
|
|
|
| 266 |
fetch('https://fapi.binance.com/fapi/v1/exchangeInfo')
|
| 267 |
.then(response => response.json())
|
| 268 |
.then(data => {
|
|
@@ -273,9 +293,20 @@ document.getElementById('saveSettings').addEventListener('click', saveSettings);
|
|
| 273 |
text: symbol.symbol
|
| 274 |
}));
|
| 275 |
|
| 276 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 277 |
})
|
| 278 |
-
.catch(error =>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 279 |
}
|
| 280 |
function addSelectedPairs() {
|
| 281 |
const selectedPairs = pairSelector.val();
|
|
@@ -526,22 +557,26 @@ function updateChartTheme(pair, isDarkMode) {
|
|
| 526 |
}
|
| 527 |
});
|
| 528 |
}
|
| 529 |
-
function saveSettings() {
|
| 530 |
-
|
| 531 |
-
|
| 532 |
-
|
| 533 |
-
|
| 534 |
-
|
| 535 |
-
|
| 536 |
-
|
| 537 |
-
|
| 538 |
-
|
| 539 |
-
|
| 540 |
-
|
| 541 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 542 |
}
|
| 543 |
-
|
| 544 |
-
function loadSettings() {
|
| 545 |
const savedSettings = localStorage.getItem('binanceDashboardSettings');
|
| 546 |
if (savedSettings) {
|
| 547 |
const settings = JSON.parse(savedSettings);
|
|
|
|
| 81 |
</div>
|
| 82 |
</header>
|
| 83 |
<div class="p-4">
|
| 84 |
+
<div class="mb-2">
|
| 85 |
+
<label for="pairSelector" class="block font-medium mb-1">Select Trading Pairs:</label>
|
| 86 |
+
<select id="pairSelector" class="w-full p-2 border rounded" multiple="multiple"></select>
|
| 87 |
+
</div>
|
| 88 |
+
<div class="flex space-x-2">
|
| 89 |
+
<button id="addPairsBtn" class="flex-1 p-2 bg-green-500 text-white rounded hover:bg-green-600">Add Selected Pairs</button>
|
| 90 |
+
<button id="clearPairsBtn" class="flex-1 p-2 bg-red-500 text-white rounded hover:bg-red-600">Clear All</button>
|
| 91 |
</div>
|
| 92 |
</div>
|
| 93 |
+
<div id="chartGrid" class="chart-grid"></div>
|
|
|
|
| 94 |
</div>
|
| 95 |
|
| 96 |
<div id="sidebar" class="p-4">
|
|
|
|
| 153 |
const closeSidebar = document.getElementById('closeSidebar');
|
| 154 |
const darkModeToggle = document.getElementById('darkModeToggle');
|
| 155 |
const timeframeSelector = document.getElementById('timeframe');
|
|
|
|
| 156 |
// Initialize UI components
|
| 157 |
+
document.addEventListener('DOMContentLoaded', function() {
|
| 158 |
// Initialize Select2 for pair selection
|
| 159 |
+
$(pairSelector).select2({
|
| 160 |
placeholder: "Search and select trading pairs",
|
| 161 |
allowClear: true,
|
| 162 |
width: '100%',
|
| 163 |
closeOnSelect: false
|
| 164 |
});
|
| 165 |
+
|
| 166 |
+
// Load pairs immediately
|
| 167 |
+
fetchPairs();
|
| 168 |
// Initialize color pickers
|
| 169 |
const candleUpPicker = Pickr.create({
|
| 170 |
el: '#candleUpColor',
|
|
|
|
| 197 |
}
|
| 198 |
}
|
| 199 |
});
|
| 200 |
+
// Event listeners
|
| 201 |
+
document.getElementById('addPairsBtn').addEventListener('click', function() {
|
| 202 |
+
console.log('Add pairs clicked');
|
| 203 |
+
addSelectedPairs();
|
| 204 |
+
});
|
| 205 |
|
| 206 |
+
document.getElementById('clearPairsBtn').addEventListener('click', function() {
|
| 207 |
+
console.log('Clear pairs clicked');
|
| 208 |
+
clearAllPairs();
|
| 209 |
+
});
|
| 210 |
|
| 211 |
+
settingsBtn.addEventListener('click', function() {
|
| 212 |
+
console.log('Settings clicked');
|
| 213 |
+
openSidebar();
|
| 214 |
+
});
|
| 215 |
|
| 216 |
+
closeSidebar.addEventListener('click', function() {
|
| 217 |
+
console.log('Close sidebar clicked');
|
| 218 |
+
closeSidebar();
|
| 219 |
+
});
|
| 220 |
+
|
| 221 |
+
document.getElementById('saveSettings').addEventListener('click', function() {
|
| 222 |
+
console.log('Save settings clicked');
|
| 223 |
+
saveSettings();
|
| 224 |
+
});
|
| 225 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 226 |
// Close sidebar when clicking outside
|
| 227 |
document.addEventListener('click', function(event) {
|
| 228 |
if (!sidebar.contains(event.target) && event.target !== settingsBtn) {
|
| 229 |
closeSidebar();
|
| 230 |
}
|
| 231 |
});
|
| 232 |
+
|
| 233 |
+
// Initialize WebSocket connection
|
| 234 |
+
initWebSocket();
|
| 235 |
+
|
| 236 |
+
// Load saved settings
|
| 237 |
+
loadSettings();
|
| 238 |
darkModeToggle.addEventListener('click', function() {
|
| 239 |
document.body.classList.toggle('dark-mode');
|
| 240 |
const isDarkMode = document.body.classList.contains('dark-mode');
|
|
|
|
| 281 |
processWebSocketMessage(message);
|
| 282 |
};
|
| 283 |
}
|
|
|
|
| 284 |
function fetchPairs() {
|
| 285 |
+
console.log('Fetching available pairs...');
|
| 286 |
fetch('https://fapi.binance.com/fapi/v1/exchangeInfo')
|
| 287 |
.then(response => response.json())
|
| 288 |
.then(data => {
|
|
|
|
| 293 |
text: symbol.symbol
|
| 294 |
}));
|
| 295 |
|
| 296 |
+
console.log(`Loaded ${pairs.length} trading pairs`);
|
| 297 |
+
$(pairSelector).select2({
|
| 298 |
+
data: pairs,
|
| 299 |
+
placeholder: "Search and select trading pairs",
|
| 300 |
+
allowClear: true,
|
| 301 |
+
width: '100%',
|
| 302 |
+
closeOnSelect: false
|
| 303 |
+
});
|
| 304 |
})
|
| 305 |
+
.catch(error => {
|
| 306 |
+
console.error('Error fetching pairs:', error);
|
| 307 |
+
// Retry after 5 seconds if failed
|
| 308 |
+
setTimeout(fetchPairs, 5000);
|
| 309 |
+
});
|
| 310 |
}
|
| 311 |
function addSelectedPairs() {
|
| 312 |
const selectedPairs = pairSelector.val();
|
|
|
|
| 557 |
}
|
| 558 |
});
|
| 559 |
}
|
| 560 |
+
function saveSettings() {
|
| 561 |
+
try {
|
| 562 |
+
const settings = {
|
| 563 |
+
showPrice: document.getElementById('showPrice').checked,
|
| 564 |
+
showVolume: document.getElementById('showVolume').checked,
|
| 565 |
+
showOI: document.getElementById('showOI').checked,
|
| 566 |
+
showFunding: document.getElementById('showFunding').checked,
|
| 567 |
+
showFundingTimer: document.getElementById('showFundingTimer').checked,
|
| 568 |
+
darkMode: document.body.classList.contains('dark-mode'),
|
| 569 |
+
selectedPairs: Array.from(subscribedPairs),
|
| 570 |
+
timeframe: document.getElementById('timeframe').value
|
| 571 |
+
};
|
| 572 |
+
localStorage.setItem('binanceDashboardSettings', JSON.stringify(settings));
|
| 573 |
+
console.log('Settings saved successfully');
|
| 574 |
+
closeSidebar();
|
| 575 |
+
} catch (error) {
|
| 576 |
+
console.error('Error saving settings:', error);
|
| 577 |
+
}
|
| 578 |
}
|
| 579 |
+
function loadSettings() {
|
|
|
|
| 580 |
const savedSettings = localStorage.getItem('binanceDashboardSettings');
|
| 581 |
if (savedSettings) {
|
| 582 |
const settings = JSON.parse(savedSettings);
|