PageSourceSearch

https://tanssi.net/cal/performers/83ae10f0-7016-41a3-8be4-83fdf4455ec6/

html tanssi.net collected 2026-09-24 20:52:03 UTC 16,816 bytes, 505 lines download raw bytes

1
2
3
4
5<!DOCTYPE html>
6<html lang="fi" xml:lang="fi">
7  <head>
8    <link rel="apple-touch-icon" sizes="180x180" href="/static/img/apple-touch-icon.png"/>
9    <link rel="icon" type="image/png" sizes="32x32" href="/static/img/favicon-32x32.png"/>
10    <link rel="icon" type="image/png" sizes="16x16" href="/static/img/favicon-16x16.png"/>
11    <link rel="canonical" href="https://tanssi.io/cal/performers/83ae10f0-7016-41a3-8be4-83fdf4455ec6/"/>
12    <meta http-equiv="Content-Language" content="fi">
13    <meta charset="utf-8"/>
14    <meta name="google" content="notranslate">
15    <meta name="htmx-config" content='{"selfRequestsOnly":false}'>
16    <title>Neloset | tanssi.net</title>
17    <meta name="description" content="Tulevat tanssitapahtumat: Neloset."/>
18    
19    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"/>
20    <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet"/>
21    
21<script defer data-domain="tanssi.net" src="https://p.tanssi.io/js/script.js"></script>
21
22    
22<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
22
23    
23<script src="https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/1.3.4/bloodhound.min.js"></script>
23
24    
24<script src="https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/1.3.4/typeahead.jquery.min.js"></script>
24
25    
26<script src="/static/js/cal.js"></script>
vendor: 1 bytes, line 26
26
27<script>
28$(document).ready(function() {
29    $('[data-bs-toggle="tooltip"]').tooltip();
30});
31</script>
31
32
33    
34
35
36
37    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
38    
38<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
38
39
40    
40<script defer src="https://cdn.jsdelivr.net/npm/@alpinejs/[email protected]/dist/cdn.min.js"></script>
40
41    
41<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.js"></script>
41
42
43    
43<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/htmx.js" integrity="sha384-yWakaGAFicqusuwOYEmoRjLNOC+6OFsdmwC2lbGQaRELtuVEqNzt11c2J711DeCZ" crossorigin="anonymous"></script>
43
44    
44<script src="https://cdn.jsdelivr.net/npm/[email protected]" integrity="sha384-aiAPowx3gG+h620/TJLIfLPgBcn6DMWlhu45oOhWVwTOjds9E6X2pmGbT4Xc8XMJ" crossorigin="anonymous"></script>
44
45    
45<script>
46      // Enable credentials (cookies) for all HTMX requests, including cross-origin
47      (function() {
48        document.addEventListener('htmx:configRequest', function(evt) {
49          evt.detail.withCredentials = true;
50        });
51      })();
52    </script>
52
53
54    
54<script src="/static/js/jquery.formset.js"></script>
54
55    <style>.user_events .user-events-button {
56    cursor: pointer;
57}</style>
58    
59    <link rel="stylesheet" href="/static/css/styles.min.css"/>
60    
61    
62    
63    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
64</head>
65<body hx-ext="response-targets" hx-headers='{"X-CSRFToken": "JaBWkcbDyJU96acAN0JxGZtKJ9FTPmMO7kpVDZTwOv0pcLYDsUmEgYT0Awm1M4ya"}'>
66  
66<script>
67    // Get CSRF token from cookie for cross-domain requests (e.g., tanssi.net -> a.tanssi.io)
68    // This ensures HTMX requests have a valid CSRF token even on static pages
69    (function() {
70      function getCookie(name) {
71        let cookieValue = null;
72        if (document.cookie && document.cookie !== '') {
73          const cookies = document.cookie.split(';');
74          for (let i = 0; i < cookies.length; i++) {
75            const cookie = cookies[i].trim();
76            if (cookie.substring(0, name.length + 1) === (name + '=')) {
77              cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
78              break;
79            }
80          }
81        }
82        return cookieValue;
83      }
84
85      // Update HTMX config with CSRF token from cookie
86      // Only needed for static pages (tanssi.net) where template token is stale
87      document.addEventListener('DOMContentLoaded', function() {
88        // Check if we're on a static site (no server-side rendering)
89        // Static sites have stale tokens, dynamic sites have fresh tokens from template
90        const bodyToken = document.body.getAttribute('hx-headers');
91        const csrftoken = getCookie('csrftoken');
92
93        // Only update if we have a cookie token AND we're likely on a static page
94        // (indicated by hostname being tanssi.net, not a.tanssi.io)
95        if (csrftoken && window.location.hostname === 'tanssi.net') {
96          try {
97            const headers = JSON.parse(bodyToken || '{}');
98            headers['X-CSRFToken'] = csrftoken;
99            document.body.setAttribute('hx-headers', JSON.stringify(headers));
100          } catch (e) {
101            console.error('Error updating CSRF token:', e);
102          }
103        }
104      });
105    })();
106  </script>
106
107  
108  <div class="header">
109    <nav class="navbar navbar-custom navbar-expand-lg sticky-top navbar-dark bg-dark">
110      <div class="container-fluid">
111        
112
113<div class="position-relative me-3" style="margin-top: 20px; margin-bottom: 10px">
114  <a class="navbar-brand" href="https://tanssi.io/cal/today/"><img width="64" height="45" style="margin-left: 20px" src="/static/img/tanssi_net_logo_white.png" alt="Logo"/></a>
115</div>
116
117        
118
119
120
121        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
122  <span class="navbar-toggler-icon"></span>
123</button>
124
125        
126
127
128
129<div class="collapse navbar-collapse" id="navbarSupportedContent">
130  
131  <ul class="list-unstyled navbar-nav">
132    
133    <li class="nav-item ">
134      <a class="nav-link" href="https://tanssi.io/cal/today/">Tänään</a>
135    </li>
136    <li class="nav-item ">
137      <a class="nav-link" href="https://tanssi.io/cal/events/">Kalenteri</a>
138    </li>
139    
140    <li class="nav-item ">
141      <a class="nav-link" href="https://tanssi.io/cal/venues/">Paikat</a>
142    </li>
143    <li class="nav-item ">
144      <a class="nav-link" href="https://tanssi.io/cal/regions/">Maakunnat</a>
145    </li>
146    <li class="nav-item active">
147      <a class="nav-link" href="https://tanssi.io/cal/performers/">Esiintyjät</a>
148    </li>
149    <li class="nav-item ">
150      <a class="nav-link" href="https://a.tanssi.io/routes/">Reitit</a>
151    </li>
152    <li class="nav-item ">
153      <a class="nav-link" href="https://a.tanssi.io/search/events/list/">Haku</a>
154    </li>
155    
156    
157
158
159
160                    
161                    <li class="nav-item d-block d-lg-none"
162                        hx-get="https://a.tanssi.io/accounts/user-info/navbar/"
163                        hx-vals='{"p": "/cal/performers/83ae10f0-7016-41a3-8be4-83fdf4455ec6/"}'
164                        hx-swap="outerHTML"
165                        hx-trigger="load"
166                        hx-timeout="10000"
167                        hx-request='{"credentials": true}'
168                    >
169                        <div>
170                            <a class="foo1 nav-link " href="https://a.tanssi.io/accounts/login/">Kirjaudu sisään</a>h
171                            <a class="foo1 nav-link " href="https://a.tanssi.io/accounts/register/">Rekisteröidy</a>
172                        </div>
173                    </li>
174                    
175
176    
177  </ul>
178</div>
179
180        <div class="d-none d-lg-block ms-auto me-1">
181          <ul class="list-unstyled navbar-nav">
182            
183
184
185
186            
187            
188
189
190
191                    
192                    
193
194                    <li class="nav-item d-none d-flex align-items-end d-lg-block dropdown "
195                        x-data="{ showErrors: false }"
196                        x-show="!showErrors"
197                        hx-get="https://a.tanssi.io/accounts/user-info/navbar-dropdown/"
198                        hx-vals='{"p": "/cal/performers/83ae10f0-7016-41a3-8be4-83fdf4455ec6/"}'
199                        hx-trigger="load delay:100ms"
200                        hx-timeout="10000"
201                        hx-swap="outerHTML"
202                        x-on:htmx:before-request="this.showErrors = false"
203                        x-on:htmx:after-request="if ($event.detail.failed) { this.showErrors = true }"
204                    >
205                        <span class="text-white spinner-border spinner-border" role="status" aria-hidden="true"></span><span class="nav-text text-white "> Loading ...</span>
206                    </li>
207                    <li x-cloak x-show="showErrors" class="nav-item">
208                        <a class="nav-link" href="https://a.tanssi.io/accounts/login/">Kirjaudu sisään</a>
209                    </li>
210                    <li x-cloak x-show="showErrors" class="nav-item">
211                        <a class="nav-link" href="https://a.tanssi.io/accounts/register/">Rekisteröidy</a>
212                    </li>
213                    
214
215            
216            
217
218
219<li class="nav-item">
220  <a class="nav-link" title="Sivulatauksia viimeisen 30 päivän aikana, klikkaamalla näet historian"  data-bs-toggle="tooltip" href="https://tanssi.io/cal/stats/"><i class="bi bi-bar-chart-line"></i> 1.9M</a>
221</li>
222
223          </ul>
224        </div>
225      </div>
226    </nav>
227  </div>
228  
229  <div class="container mt-3">
230    
231
232
233
234<div class="ad d-none m-0"
235    
236    x-init="
237      $nextTick(() => {
238        htmx.trigger($el, 'reload-this');
239      })
240    "
241    hx-trigger="reload-this"
242    
243    hx-get="/components/ad/ad/"
244    hx-target="this"
245    hx-swap="outerHTML"
246    x-bind:hx-vals="JSON.stringify({
247        
248        
249        'd': 'a',
250        
251        
252        'z': 'header',
253        
254        
255        'c': 'other',
256        
257        
258        'w': (window.innerWidth > 0) ? window.innerWidth : screen.width,
259    })"
260 data-djc-id-cDj0xt8="">
261</div>
262
263
264
265  </div>
266
267  <div id="content">
268
269    <div class="row w-100">
270      <div class="col col-auto d-none d-lg-block d-print-none" id="sidenav-container">
271        <div class="container-fluid h-100 mx-0 g-0">
272          
273        </div>
274      </div>
275      <div class="col">
276        
277<div class="container">
278<section>
279
280<h1>Neloset</h1>
281<p>
282Muokattu:  2.2.2024
283</p>
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313<div class="row mt-4">
314  <div class="col">
315    
316      
317      <div>
318        
319
320
321
322
323<div class="event" x-show="!f || 'trad-fi'.indexOf(f) > -1" data-venue="aff4b0d4-296c-4b70-b199-7378733126aa" data-djc-id-cnqxt3f=""><small class="mt-3 mb-0">
324      Forssan iltapäivätanssit<br/></small><h4 class="mt-0 mb-0 d-flex align-items-center">
325
326<div 
327  id="user-events-50742636-c0ea-4be9-a4f9-d483a2d3161e"
328  class="user_events" 
329  x-show="window.UserInfo.hasFeature('https://a.tanssi.io', 'interests')"
330  x-data="{ 
331    event_id: '50742636-c0ea-4be9-a4f9-d483a2d3161e',
332    status: null,
333    async init() {
334        let that = this;
335        window.UserInfo.getEventInterest('https://a.tanssi.io', '50742636-c0ea-4be9-a4f9-d483a2d3161e').then((eventInterest) => {
336            that.status = eventInterest;
337        });
338    }
339  }"
340  x-init="
341    status = await window.UserInfo.getEventInterest('https://a.tanssi.io', '50742636-c0ea-4be9-a4f9-d483a2d3161e');
342    $watch('status', (v) => { window.UserInfo.setEventInterest('50742636-c0ea-4be9-a4f9-d483a2d3161e', v); $dispatch('save'); })
343  "
344 data-djc-id-chkEWES="">
345  <div class="user-events-button"
346    @click="status = !status || status === 'not-interested' ? 'interested' : (status === 'interested' ? 'going' : 'not-interested')"
347  >
348    <i class="bi" 
349      data-bs-toggle="tooltip"
350      :data-bs-original-title="!status ? 'Lisää tapahtuma henkilökohtaiseen kalenteriisi' : (status === 'going' ? 'Menossa' : (status === 'interested' ? 'Kiinnostunut': 'En ole kiinnostunut'))" 
351      :title="!status ? 'Lisää tapahtuma henkilökohtaiseen kalenteriisi' : (status === 'going' ? 'Menossa' : (status === 'interested' ? 'Kiinnostunut': 'En ole kiinnostunut'))"
352      :class="{
353        'text-primary bi-calendar-plus': !status,
354        'text-primary bi-calendar-check-fill': status === 'going',
355        'text-primary bi-calendar-heart-fill': status === 'interested',
356        'text-primary bi-calendar-x-fill': status === 'not-interested'
357      }"></i>
358  </div>
359  <input
360    name="status"
361    type="hidden"
362    :value="status"
363    hx-trigger="save from:#user-events-50742636-c0ea-4be9-a4f9-d483a2d3161e"
364    hx-post="https://a.tanssi.io/components/user-events/user-events/"
365    hx-swap="none"
366    hx-vals="js:{
367      'event_id': '50742636-c0ea-4be9-a4f9-d483a2d3161e',
368    }"/>
369</div>
370<span><span>&nbsp;</span><a class="link-opacity-0" href="/cal/events/50742636-c0ea-4be9-a4f9-d483a2d3161e/"><i class="bi bi-info-circle"></i></a></span><span>&nbsp;</span><span class="event-date"><a class="text-decoration-none text-black" href="/cal/events/2026/9/24/">To 24.9.2026</a></span></h4><a class="venue-link" href="/cal/venues/aff4b0d4-296c-4b70-b199-7378733126aa/">Forssan järjestöjentalo</a><br/><p class="mt-0 mb-3"><span><a class="performer-link" href="/cal/performers/83ae10f0-7016-41a3-8be4-83fdf4455ec6/">Neloset</a></span><br/><small><span data-event-type="trad-fi" class="event-type badge border border-primary text-primary">Lavatanssit</span>&thinsp;
371      
372      Forssa | 10 € | <span data-bs-toggle="tooltip" data-bs-placement="right" title="Päivätanssit loppuvat ennen klo 18">Päivätanssit</span> | 13 – 16<span class="event-distance with-separator" data-lat="60.814610" data-lon="23.614688"></span></small></p></div>
373
374      </div>
375    
376    
377  </div>
378</div>
379</section>
380</div>
381
382        
383        
384      </div>
385    </div>
386   </div>
387  
388  <div class="container mt-3">
389    
390
391
392
393<div class="ad d-none m-0"
394    
395    x-init="
396      $nextTick(() => {
397        htmx.trigger($el, 'reload-this');
398      })
399    "
400    hx-trigger="reload-this"
401    
402    hx-get="/components/ad/ad/"
403    hx-target="this"
404    hx-swap="outerHTML"
405    x-bind:hx-vals="JSON.stringify({
406        
407        
408        'd': 'a',
409        
410        
411        'z': 'footer',
412        
413        
414        'c': 'other',
415        
416        
417        'w': (window.innerWidth > 0) ? window.innerWidth : screen.width,
418    })"
419 data-djc-id-cItOHyF="">
420</div>
421
422
423
424  </div>
425
426  
427
428
429
430
431<footer id="footer" class="mt-auto page-footer small pt-4 footer-text-color bg-primary">
432  <div class="container-fluid text-left">
433    <div class="row">
434      <div class="col-lg-4 d-none d-lg-block">
435        <img class="my-0 py-0" width="69" height="200" src="/static/img/tanssinet_footer_logo.png" alt="Logo"/>
436      </div>
437      <div class="col-12 col-lg-4">
438        <h5>Tuki</h5>
439
440        <p>
441          <a href="https://a.tanssi.io/support/wizard/start/">Tukipyyntö</a>
442        </p>
443              
444        <p>
445          Sähköposti ja puhelinnumero löytyvät <a href="https://tanssi.io/public/contact/">yhteystiedoista</a>.
446        </p>
447
448        <p>
449          <h3>
450            <a href="https://www.facebook.com/profile.php?id=61561894911334"><i class="bi bi-facebook"></i></a>
451          </h3>
452        </p>
453      </div>
454
455      <div class="col-12 col-lg-4">
456
457        <h5>Tanssi.net</h5>
458
459        <ul class="list-unstyled footer-links text-light">
460          <li>
461            <a class="text-white" href="https://tanssi.io/public/about/">Tietoa palvelusta</a>
462          </li>
463          
464          <li>
465            <a class="text-white" href="https://tanssi.io/public/privacy-policy/">Rekisteri- ja tietosuojaseloste</a>
466          </li>
467          <li>
468            <a class="text-white" href="https://tanssi.io/public/instructions/">Ohjevideot</a>
469          </li>
470          <li>
471            <a class="text-white" href="https://a.tanssi.io/support/faq/">Usein Kysytyt Kysymykset</a>
472          </li>
473          <li>
474            <a class="text-white" href="https://tanssi.io/public/news/">Uutiset</a>
475          </li>
476          <li>
477            <a class="text-white" href="https://tanssi.io/public/contact/">Yhteystiedot</a>
478          </li>
479          <li>
480            <a class="text-white" href="https://tanssi.io/public/banner-sales/">Mediamyynti</a>
481          </li>
482          
483        </ul>
484      </div>
485    </div>
486  </div>
487  <div class="footer-copyright text-center py-3">&#169; 2025 Copyright <a class="text-white" href="https://kalenterppi.com/">Kalenterppi Oy</a> | 0.1011.0 | 24.9.2026 23:52:02
488  </div>
489</footer>
490
491
492  
492<script src="/static/js/userinfo.js"></script>
492
493  
494  <div class="alert-messages">
495
496</div>
497
498  
499  
500  
501  
502
503  
503<script src="/static/django_components/django_components.min.js"></script>
503<script type="application/json" data-djc>{"loadedCssUrls": ["L2NvbXBvbmVudHMvY2FjaGUvVXNlckV2ZW50c18zYTNkOWMuY3Nz"], "loadedJsUrls": [], "toLoadCssTags": [], "toLoadJsTags": []}</script>
503
504</body>
505</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.