File size: 33,973 Bytes
7d6537e 2b8db60 7d6537e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 |
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>fdaudens/hf-blog-posts</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" />
<script src="https://unpkg.com/deck.gl@latest/dist.min.js"></script>
<script src="https://unpkg.com/[email protected]"></script>
<style>
body {
margin: 0;
padding: 0;
overflow: hidden;
background: #ffffff;
}
#deck-container {
width: 100vw;
height: 100vh;
}
#deck-container canvas {
z-index: 1;
background: #ffffff;
}
.deck-tooltip {
font-size: 0.8em;
font-family: Roboto;
font-weight: 300;
color: #000000 !important;
background-color: #ffffffaa !important;
border-radius: 12px;
box-shadow: 2px 3px 10px #aaaaaa44;
max-width: 25%;
}
#loading {
width: 100%;
height: 100%;
top: 0px;
left: 0px;
position: absolute;
display: block;
z-index: 99
}
#loading-image {
position: absolute;
top: 45%;
left: 47.5%;
z-index: 100
}
#title-container {
position: absolute;
top: 0;
left: 0;
margin: 16px;
padding: 12px;
border-radius: 16px;
line-height: 0.95;
z-index: 2;
font-family: Roboto;
color: #000000;
background: #ffffffaa;
box-shadow: 2px 3px 10px #aaaaaa44;
}
#search-container{
position: absolute;
left: -16px;
margin: 16px;
padding: 12px;
border-radius: 16px;
z-index: 2;
font-family: Roboto;
color: #000000;
background: #ffffffaa;
width: fit-content;
box-shadow: 2px 3px 10px #aaaaaa44;
}
input {
margin: 2px;
padding: 4px;
border-radius: 8px;
color: #000000;
background: #ffffffdd;
border: 1px solid #ddddddff;
transition: 0.5s;
outline: none;
}
input:focus {
border: 2px solid #555;
}
</style>
</head>
<body>
<div id="loading">
<img id="loading-image" src="https://i.gifer.com/ZKZg.gif" alt="Loading..." width="5%"/>
</div>
<div id="title-container">
<span style="font-family:Roboto;font-size:36pt;color:#000000">
fdaudens/hf-blog-posts
</span><br/>
<span style="font-family:Roboto;font-size:18pt;color:#777777">
Data map for the entire <a href='https://huggingface.co/datasets/fdaudens/hf-blog-posts/viewer/default/train' target='_blank'>dataset</a> (381 rows) using the column 'Headline'
</span>
<div id="search-container">
<input autocomplete="off" type="search" id="search" placeholder="🔍">
</div>
</div>
<div id="deck-container">
</div>
</body>
<script type="module">
import { ArrowLoader } from 'https://cdn.jsdelivr.net/npm/@loaders.gl/[email protected]/+esm'
import { JSONLoader } from 'https://cdn.jsdelivr.net/npm/@loaders.gl/[email protected]/+esm'
const pointDataBase64 = "QVJST1cxAAD/////0AUAABAAAAAAAAoADgAGAAUACAAKAAAAAAEEABAAAAAAAAoADAAAAAQACAAKAAAASAQAAAQAAAABAAAADAAAAAgADAAEAAgACAAAACAEAAAEAAAAEAQAAHsiaW5kZXhfY29sdW1ucyI6IFt7ImtpbmQiOiAicmFuZ2UiLCAibmFtZSI6IG51bGwsICJzdGFydCI6IDAsICJzdG9wIjogMzgxLCAic3RlcCI6IDF9XSwgImNvbHVtbl9pbmRleGVzIjogW3sibmFtZSI6IG51bGwsICJmaWVsZF9uYW1lIjogbnVsbCwgInBhbmRhc190eXBlIjogInVuaWNvZGUiLCAibnVtcHlfdHlwZSI6ICJvYmplY3QiLCAibWV0YWRhdGEiOiB7ImVuY29kaW5nIjogIlVURi04In19XSwgImNvbHVtbnMiOiBbeyJuYW1lIjogIngiLCAiZmllbGRfbmFtZSI6ICJ4IiwgInBhbmRhc190eXBlIjogImZsb2F0MzIiLCAibnVtcHlfdHlwZSI6ICJmbG9hdDMyIiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJ5IiwgImZpZWxkX25hbWUiOiAieSIsICJwYW5kYXNfdHlwZSI6ICJmbG9hdDMyIiwgIm51bXB5X3R5cGUiOiAiZmxvYXQzMiIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiciIsICJmaWVsZF9uYW1lIjogInIiLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiZyIsICJmaWVsZF9uYW1lIjogImciLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiYiIsICJmaWVsZF9uYW1lIjogImIiLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiYSIsICJmaWVsZF9uYW1lIjogImEiLCAicGFuZGFzX3R5cGUiOiAidWludDgi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yVnJyZ/Jn5+ampiayZpZmL/JmL+/yclZmIKayZiYv8mav5i/mpi/n5jJyb+av5hlycmYn7/Jv7+/mJjJmJjJycmYgslZmIK/yWXJyb+/gsmTv8nJyZq/mMm/mpiamL+Tv5iaycmCWb9ZgslZyYLJmMmYmsm/mJpZk4KYycnJmJiYmMlZmJiYgr+YycmCyVnJk5q/mr+YgpqYmFmYyVmYv5jJgpiCmGXJyWWCyZiagpjJmJ+aWVnJmphZgsmYWcmYmFllWcman2XJn2WYyYLJglmCn5hlmMmaWYKan5qfyZiCyZqCmmWfycmfmoKTWZiCmMmYmMmYyZplZclZycmYZWXJmprJZcmfmMmYmGWCZZjJZWVlyWVlmMllycllmMmfmGWTmGWYZZjJmGVZyZiampqayZqYmMmamGWYmslZmMmfmp/JmpplmpjJmJiTmpiYmGWYyZ+ayZiTmphlmJiYn5PJmpqaAAAAzs7msM7O4c6wr87m5iEhsM7m5jvm5iHmsK+wsDuwOzshIeYhsCGv5s6w5s7OsLCv5pwhsObmzrAhzubOIebOO+awsM4hzuY2sLDmO86wzs7O5uaw5uawsLDmnLCv5pzOsDawsM7OnLDhzrCwsCHO5rDOIeYh5s7hzuYhsLCcr86vnLCvsJyw5rDmIbDO5iGv4ZzmsLCw5ubm5rCv5ubmnM7msLCcsK+w4SHOIc7mnCHm5q/msK/mzuawnOac5jawsDacsOYhnOaw5jshr6+wIeavnLDmr7Dm5q82r7AhOzawOzbmsJywnK+cO+Y25rAhr5whOyE7sOacsCGcITY7sLA7IZzhr+ac5rDm5rDmsCE2NrCvsLDmNjawISGwNrA75rDm5jacNuawNjY2sDY25rA2sLA25rA75jbh5jbmNuaw5javsOYhISEhsCHm5rAh5jbmIbCv5rA7ITuwISE2Ieaw5ubhIebm5jbmsDshsObhIeY25ubmO+GwISEhAAAAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0AAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAA/////wAAAAAQAAAADAAUAAYACAAMABAADAAAAAAABAA8AAAAKAAAAAQAAAABAAAA4AUAAAAAAACwAQAAAAAAAHATAAAAAAAAAAAAAAAAAAAAAAoADAAAAAQACAAKAAAASAQAAAQAAAABAAAADAAAAAgADAAEAAgACAAAACAEAAAEAAAAEAQAAHsiaW5kZXhfY29sdW1ucyI6IFt7ImtpbmQiOiAicmFuZ2UiLCAibmFtZSI6IG51bGwsICJzdGFydCI6IDAsICJzdG9wIjogMzgxLCAic3RlcCI6IDF9XSwgImNvbHVtbl9pbmRleGVzIjogW3sibmFtZSI6IG51bGwsICJmaWVsZF9uYW1lIjogbnVsbCwgInBhbmRhc190eXBlIjogInVuaWNvZGUiLCAibnVtcHlfdHlwZSI6ICJvYmplY3QiLCAibWV0YWRhdGEiOiB7ImVuY29kaW5nIjogIlVURi04In19XSwgImNvbHVtbnMiOiBbeyJuYW1lIjogIngiLCAiZmllbGRfbmFtZSI6ICJ4IiwgInBhbmRhc190eXBlIjogImZsb2F0MzIiLCAibnVtcHlfdHlwZSI6ICJmbG9hdDMyIiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJ5IiwgImZpZWxkX25hbWUiOiAieSIsICJwYW5kYXNfdHlwZSI6ICJmbG9hdDMyIiwgIm51bXB5X3R5cGUiOiAiZmxvYXQzMiIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiciIsICJmaWVsZF9uYW1lIjogInIiLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiZyIsICJmaWVsZF9uYW1lIjogImciLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiYiIsICJmaWVsZF9uYW1lIjogImIiLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiYSIsICJmaWVsZF9uYW1lIjogImEiLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAic2VsZWN0ZWQiLCAiZmllbGRfbmFtZSI6ICJzZWxlY3RlZCIsICJwYW5kYXNfdHlwZSI6ICJ1aW50OCIsICJudW1weV90eXBlIjogInVpbnQ4IiwgIm1ldGFkYXRhIjogbnVsbH1dLCAiY3JlYXRvciI6IHsibGlicmFyeSI6ICJweWFycm93IiwgInZlcnNpb24iOiAiMTcuMC4wIn0sICJwYW5kYXNfdmVyc2lvbiI6ICIyLjIuMiJ9AAAAAAYAAABwYW5kYXMAAAcAAAAoAQAA7AAAALwAAACQAAAAZAAAADgAAAAEAAAABP///wAAAQIQAAAAHAAAAAQAAAAAAAAACAAAAHNlbGVjdGVkAAAAAGL///8IAAAANP///wAAAQIQAAAAFAAAAAQAAAAAAAAAAQAAAGEAAACK////CAAAAFz///8AAAECEAAAABQAAAAEAAAAAAAAAAEAAABiAAAAsv///wgAAACE////AAABAhAAAAAUAAAABAAAAAAAAAABAAAAZwAAANr///8IAAAArP///wAAAQIQAAAAGAAAAAQAAAAAAAAAAQAAAHIABgAIAAQABgAAAAgAAADY////AAABAxAAAAAUAAAABAAAAAAAAAABAAAAeQAAAMr///8AAAEAEAAUAAgABgAHAAwAAAAQABAAAAAAAAEDEAAAABgAAAAEAAAAAAAAAAEAAAB4AAYACAAGAAYAAAAAAAEA+AUAAEFSUk9XMQ==";
const pointDataBuffer = fflate.strToU8(atob(pointDataBase64), true);
const pointData = await loaders.parse(pointDataBuffer, ArrowLoader);
const hoverDataBase64 = "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";
const hoverDataBuffer = fflate.strToU8(atob(hoverDataBase64), true);
const unzippedHoverData = fflate.gunzipSync(hoverDataBuffer);
const hoverData = await loaders.parse(unzippedHoverData, ArrowLoader);
const labelDataBase64 = "H4sIALfzIGcC/32UW2+bQBCF/wraZxvNzN55q5RGrRS3VeW30oeNvSVIsLhgp22q/vcOEN8SKTzBSnC+c+YM3/6K36JYYi61VQ6ck2Yh/ohC5kY5QgQguRBNuI+NKMS7j8sqptiHfdxm8qZMVWhjto2Psel2bUx7sRBD/RRFQZgrMB68QeQv9qJAxIWoRKFhIe5F4fk0iMKof4sJgQkAASVJlBOByslKR+CsxTPBh0NV1anKbsMmlqnttrEZspC2ZVrHNHT9bdP9OkO4HGZtcJO2U5M2SrwWZ/8kQYIjr2Z1yo2RhkYHF/7v7lbZ+8fQHMK+7lKZWDhbx9CWaRVSqOJ1BJRbabR1Cmmm0DPFaH2kwBcRLIGnYDQBOKMnCsw9edTakTEXFCFVB1bLVpP9s6DNrUZlweFJ0U+KCHqStPJl6N4yhiRLfhJkBOK3NcjpE0fFVdg81ClmdzH0ieMv0+fdvm7rp+cc1nHzkOqfhzi8UQA9oYzDZBL30jvxuNHxG1rLo3dNaLXy7i2Qr13YtmF3mbokduS9lsfi2bl4c+wSXqXurQfp0LpTCFJpg45PL2JfHRr23G1DU6ZPYX/oQ5MdR1GmL323icPATGcUlWu+UJG1M8rYv7GG8zRIXZOwLEpvFWiyEwiTSeN5LQHVmeM5et7Amxh3ZTpnse5Dna4IIOdRei+RrJoI1LyEzs1ZvOqDAU4d0Bt/HAJYHox3l3VgnTT86Po29ssy3Ych8v7xc9yEYT9uJ9+XiX8L9eaiEXjcxnHFRoa5CUgniO//Ac3DWNWOBAAA";
const labelDataBuffer = fflate.strToU8(atob(labelDataBase64), true);
const unzippedLabelData = fflate.gunzipSync(labelDataBuffer);
const labelData = await loaders.parse(unzippedLabelData, JSONLoader);
const DATA = {src: pointData.data, length: pointData.data.x.length}
const container = document.getElementById('deck-container');
const pointLayer = new deck.ScatterplotLayer({
id: 'dataPointLayer',
data: DATA,
getPosition: (object, {index, data}) => {
return [data.src.x[index], data.src.y[index]];
},
getRadius: 0.1,
getFillColor: (object, {index, data}) => {
return [
data.src.r[index],
data.src.g[index],
data.src.b[index],
180
]
},
getLineColor: (object, {index, data}) => {
return [
data.src.r[index],
data.src.g[index],
data.src.b[index],
32
]
},
getLineColor: [250, 250, 250, 128],
getLineWidth: 0.001,
highlightColor: [170, 0, 0, 187],
lineWidthMaxPixels: 8,
lineWidthMinPixels: 0.1,
radiusMaxPixels: 24,
radiusMinPixels: 0.01,
radiusUnits: "common",
lineWidthUnits: "common",
autoHighlight: true,
pickable: true,
stroked: true
});
const labelLayer = new deck.TextLayer({
id: "textLabelLayer",
data: labelData,
pickable: false,
getPosition: d => [d.x, d.y],
getText: d => d.label,
getColor: d => [d.r, d.g, d.b],
getSize: d => d.size,
sizeScale: 1,
sizeMinPixels: 18,
sizeMaxPixels: 36,
outlineWidth: 8,
outlineColor: [238, 238, 238, 221],
getBackgroundColor: [255, 255, 255, 64],
getBackgroundPadding: [15, 15, 15, 15],
background: true,
characterSet: "auto",
fontFamily: "Roboto",
fontWeight: 900,
lineHeight: 0.95,
fontSettings: {"sdf": true},
getTextAnchor: "middle",
getAlignmentBaseline: "center",
lineHeight: 0.95,
elevation: 100,
// CollideExtension options
collisionEnabled: true,
getCollisionPriority: d => d.size,
collisionTestProps: {
sizeScale: 3,
sizeMaxPixels: 36 * 2,
sizeMinPixels: 18 * 2
},
extensions: [new deck.CollisionFilterExtension()],
});
const deckgl = new deck.DeckGL({
container: container,
initialViewState: {
latitude: 2.1977801,
longitude: -0.084878646,
zoom: 6.143425800644859
},
controller: true,
layers: [pointLayer, labelLayer],
getTooltip: ({index}) => hoverData.data.hover_text[index]
});
document.getElementById("loading").style.display = "none";
function selectPoints(item, conditional) {
var layerId;
if (item) {
for (var i = 0; i < DATA.length; i++) {
if (conditional(i)) {
DATA.src.selected[i] = 1;
} else {
DATA.src.selected[i] = 0;
}
}
layerId = 'selectedPointLayer' + item;
} else {
for (var i = 0; i < DATA.length; i++) {
DATA.src.selected[i] = 1;
}
layerId = 'dataPointLayer';
}
const selectedPointLayer = pointLayer.clone(
{
id: layerId,
data: DATA,
getFilterValue: (object, {index, data}) => data.src.selected[index],
filterRange: [1, 2],
extensions: [new deck.DataFilterExtension({filterSize: 1})]
}
);
deckgl.setProps(
{layers:
[selectedPointLayer].concat(deckgl.props.layers.slice(1,))
}
);
}
const search = document.getElementById("search");
search.addEventListener("input", (event) => {
const search_term = event.target.value.toLowerCase();
selectPoints(search_term, (i) => hoverData.data.hover_text[i].toLowerCase().includes(search_term));
}
);
</script>
</html> |