<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Position Red Dot Based on First Point</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="table-container">
<table id="Mytable">
<thead className="bordered-row">
<tr className="bordered-row">
<th draggable="true">ID</th>
<th draggable="true">Nom</th>
<th draggable="true">Adresse</th>
<th draggable="true">Type</th>
<th draggable="true">Categorie</th>
<th draggable="true">GPS</th>
<th draggable="true"> Progression</th>
<th draggable="true" className='plus-container'>button</th>
<th draggable="true" class="departure-arrival">Départ</th>
<th draggable="true" class="departure-arrival">Arrivée</th>
<th draggable="true" >Attribut</th>
<th draggable="true" className='feed'> Feed </th>
</tr>
</thead>
<tbody>
<tr className="bordered-row">
<td>#00123</td>
<td>Nom de tournée</td>
<td>25 Rue Jean-Jacques...</td>
<td>Type 1</td>
<td>Categorie 1</td>
<td>
<div className='gps-container'> <span className='place'> 93130,France </span> </div>
</td>
<td className='progression'>
<label className="name"> Noisy-le -Sec </label> <label className='time'> Terminé 05/20 - 124 km </label>
</td>
<td>points</td>
<td>14:06</td>
<td>15:06</td>
<td>
<select className="attribute-select">
<option value="Attribute 1">Attribut 1</option>
<option value="Attribute 2">Attribut 2</option>
</select>
</td>
<td>
<span className="text-with-icon">5</span>
</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
const table = document.getElementById('Mytable');
let dragData = {};
// Add dragstart event listeners to all draggable <th> elements
const draggableHeaders = document.querySelectorAll('th[draggable="true"]');
draggableHeaders.forEach(header => {
header.addEventListener('dragstart', handleDragStart);
header.addEventListener('dragover', handleDragOver);
header.addEventListener('dragenter', handleDragEnter);
header.addEventListener('dragleave', handleDragLeave);
header.addEventListener('drop', handleDrop);
header.addEventListener('dragend', handleDragEnd);
});
function handleDragStart(event) {
const columnIndex = Array.from(event.target.parentNode.children).indexOf(event.target);
dragData = { column: columnIndex };
event.dataTransfer.setData('text/plain', event.target.outerHTML);
event.target.classList.add('dragging');
}
function handleDragOver(event) {
event.preventDefault();
}
function handleDragEnter(event) {
event.preventDefault();
}
function handleDragLeave(event) {
event.preventDefault();
}
function handleDrop(event) {
event.preventDefault();
const targetColumnIndex = Array.from(event.target.parentNode.children).indexOf(event.target);
// Swap columns by reordering <th> elements
const headerRow = table.querySelector('thead tr');
const headerCells = Array.from(headerRow.children);
const tempCell = headerCells[dragData.column].cloneNode(true);
headerCells[dragData.column].innerHTML = headerCells[targetColumnIndex].innerHTML;
headerCells[targetColumnIndex].innerHTML = tempCell.innerHTML;
// Swap columns by reordering <td> elements
const rows = table.querySelectorAll('tbody tr');
rows.forEach(row => {
const cells = Array.from(row.children);
const tempContent = cells[dragData.column].innerHTML;
cells[dragData.column].innerHTML = cells[targetColumnIndex].innerHTML;
cells[targetColumnIndex].innerHTML = tempContent;
});
// Reset the dragging state
event.target.classList.remove('dragging');
}
function handleDragEnd(event) {
event.target.classList.remove('dragging');
}
</script>
</body>
</html>
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |