PageSourceSearch

https://www.kiesjedocent.nl/assets/js/interaction.js?burst=1791515712

js kiesjedocent.nl collected 2026-10-09 03:16:44 UTC 17,783 bytes, 443 lines download raw bytes

1/* 
2 * Interaction layer
3 */
4
5$(function() {
6    if (_KD.Is.func($.fn.select2)) {
7        // load select2 on search combo's
8        $("select[name='customer_segments']").select2();
9        $("select[name='disciplines']").select2();
10        $("select[name='municipality']").select2();
11    }
12    // enable some bootstrap func.
13    $("[data-init='popover']").popover();
14    
15    // add event for search terms.
16    $("form.searchFrm").on('submit', _KD.App.trackSearch);
17    
18    // load more results.
19    $("div.loadmore button").on('click', _KD.App.searchLoadMore);
20    
21    // set some listeners on report collapse
22    $(".report-collapse").on('shown.bs.collapse', function(e) {
23        e.preventDefault();
24        // set focus on firstname
25        $(this).find("input[name=firstname]").focus();
26    });
27    $(".report-collapse").on('hide.bs.collapse', function(e) {
28        // clear form data.
29        var _scope = $(this);
30        _scope.find("form")[0].reset();
31        
32        // make sure submit is enabled (again)
33        _scope.find("button").removeAttr('disabled').removeClass('disabled');
34        
35        // restore form state.
36        _scope.find("div.tnxx").hide(function() {
37            _scope.find("button").show();
38            _scope.find("div.form").show();
39        });
40        
41        return true;
42    });
43    
44    // set some listeners on report modal
45    $('.report-teacher-modal').on('shown.bs.modal', function (e) {
46        e.preventDefault();
47        // set focus on firstname
48        $("form.reportFrm input[name=firstname]").focus();
49    });
50    // hide 
51    $('.report-teacher-modal').on('hide.bs.modal', function (e) {
52        // clear form data.
53        $("form.reportFrm")[0].reset();
54        // make sure submit is enabled (again)
55        $("form.reportFrm button").removeAttr('disabled');
56        $('form.reportFrm button').removeClass('disabled');
57        // restore form state.
58        $(".report-teacher-modal div.tnxx").hide(function() {
59            $(".report-teacher-modal button").show();
60            $(".report-teacher-modal div.form").show();
61        });
62        
63        return true;
64    });
65    
66    
67    // on form submit.. set loader for page.
68//    $("form:not(.contactFrm)").on('submit', function() {
69//        _KD.App.setLoader();
70//    });
71    // test in-/external links
72    $("a").on('click', function(e) {
73        if (this.host !== location.host) {
74            // track on google.
75            _KD.App.googleLinkTrack(this.href);
76        }
77        if ($(this).hasClass('search-read-more')) {
78            // track event.
79            _KD.App.googleEvent('bekijk_profiel', 'klik', 'ID:' + $(this).data('teacher_id'));
80            var scrollId = "#result-details-contact-" + $(this).data('teacher_id');
81            // and not contracting.
82            if (!$("#result-details-" + $(this).data('teacher_id')).hasClass('in')) {
83                _KD.Util.scrollToElement($(scrollId), 'div.content div.panel-group');
84            }
85        }
86        if ($(this).hasClass('contact-teacher')) {
87            // track event.
88            _KD.App.googleEvent('contactgegevens', 'klik', 'ID:' + $(this).data('teacher_id'));
89            var scrollId = "#result-details-contact-" + $(this).data('teacher_id') + ' div.contactFrmContainer';
90            if (!$("#result-details-contact-" + $(this).data('teacher_id')).hasClass('in')) {
91                _KD.Util.scrollToElement($(scrollId), 'div.content div.panel-group');
92            }
93        }
94        if ($(this).hasClass('search')) {
95            e.preventDefault();
96            // build search.
97            var segment = $(this).data('segment');
98            var value = $(this).data('value');
99            if (segment && value) {
100                // reset form
101                $("form.searchFrm")[0].reset();
102                // set back value.
103                $("select[name='" + segment + "'] option[value='" + value + "']").attr('selected', 'selected');
104                $("form.searchFrm")[0].submit();
105            }
106        }
107
108        if ($(this).hasClass('report-teacher')) {
109            e.preventDefault();
110            // get type of action clicked.
111            var modal = ($(this).hasClass('modalLink')) ? true : false;
112            var teacher_id = $(this).data('teacher_id');
113            if (parseInt(teacher_id) > 0) {
114                if (modal) {
115                    // set teacher id to report form.
116                    $(".reportFrm input[name=id]").val(teacher_id);
117                    $('.report-teacher-modal').modal('show');
118                } else {
119                    console.log('hier?');
120                    var el = $("#report-" + teacher_id);
121                    console.log('el');
122                    console.log(el);
123                    el.find("input[name=id]").val(teacher_id);
124                    el.collapse();
125                }
126            }
127        }
128    });
129    // scroll to 'read more' part in search results.
130    // submit contact form.
131    console.log('Set listener for contact submit');
132	$(document).on('submit', "form.contactFrm:visible", function(e) { 
133		console.log('Submit contact form');
134        e.preventDefault();
135        // copy scope.
136        var _scope = $(this);
137        
138        // disable the submit button.
139        _scope.find('button[type="submit"]').addClass('disabled');
140        
141        // remove possible current errors.
142        $(this).find("p.help-block.required").remove();
143        // obtain teacher id
144        var teacher_id = $(this).data('id');
145        // error helper block
146        var error_tpl = '<p class="help-block required">{{msg}}</p>';
147        
148        // get some form data.
149        // name
150        var name = $(this).find("input[name='name']");
151        // email
152        var email = $(this).find("input[name='email']");
153        // phonenumber
154        var phonenumber = $(this).find("input[name='phonenumber']");
155        // city
156        var city = $(this).find("input[name='city']");
157        // question
158        var question = $(this).find("textarea[name='question']");
159        
160        if (name.hasClass('required') && name.val() == '') {
161            var name_error = error_tpl.replace("{{msg}}", "Naam is verplicht");
162            name.parent().append(name_error);
163            name.focus();
164            _scope.find('button[type="submit"]').removeClass('disabled');
165            return false;
166        }
167        if (email.hasClass('required') && email.val() == '') {
168            var email_error = error_tpl.replace("{{msg}}", "E-mailadres is verplicht");
169            email.parent().append(email_error);
170            email.focus();
171            _scope.find('button[type="submit"]').removeClass('disabled');
172            return false;
173        }
174        if (phonenumber.hasClass('required') && phonenumber.val() == '') {
175            var phonenumber_error = error_tpl.replace("{{msg}}", "Telefoonnummer is verplicht");
176            phonenumber.parent().append(phonenumber_error);
177            phonenumber.focus();
178            _scope.find('button[type="submit"]').removeClass('disabled');
179            return false;
180        }
181        if (city.hasClass('required') && city.val() == '') {
182            var city_error = error_tpl.replace("{{msg}}", "Woonplaats is verplicht");
183            city.parent().append(city_error);
184            city.focus();
185            _scope.find('button[type="submit"]').removeClass('disabled');
186            return false;
187        }
188        if (question.hasClass('required') && question.val() == '') {
189            var question_error = error_tpl.replace("{{msg}}", "Vraag/opmerking is verplicht");
190            question.parent().append(question_error);
191            question.focus();
192            _scope.find('button[type="submit"]').removeClass('disabled');
193            return false;
194        }
195        // all fine.. proceed.
196        $.ajax({
197            url:$(this).attr('action'),
198            type:'POST',
199            data: {
200                id:teacher_id,
201                name:name.val(),
202                email:email.val(),
203                phonenumber:phonenumber.val(),
204                city:city.val(),
205                question:question.val()
206            },
207            success:function (_data) { // handle response
208                var data = _data || {};
209                if (data.success == true) {
210                    // track event
211                    _KD.App.googleEvent('contactformulier_verzonden', 'verzonden', 'ID:' + teacher_id);
212                    _scope.fadeOut(function() {
213                        _scope.parent().html(
214                            "<h4>Aanvraag verzonden</h4>" + 
215                            "<p class='lead'>Dank voor uw interesse, normaliter neemt een docent binnen 2 werkdagen contact met u op</p>"
216                        );
217                    });
218                } else {
219                    _scope.find('button[type="submit"]').removeClass('disabled');
220                    var errors = data.errors || {};
221                    if (errors.length) {
222                        // set above form.
223                    }
224                }
225            },
226            error:function(err) {
227                _scope.find('button[type="submit"]').removeClass('disabled');
228                // set error above form.
229            }
230        });
231	// return false to overwrite default brower behaviour
232	return false;
233    });
234    $(document).on('submit', 'form.reportFrm', function(e) {
235        e.preventDefault();
236        // copy scope.
237        var _scope = $(this);
238        
239        // disable the submit button.
240        _scope.find('button[type="submit"]').addClass('disabled');
241        
242        // remove possible current errors.
243        $(this).find("p.help-block.required").remove();
244        // error helper block
245        var error_tpl = '<p class="help-block required">{{msg}}</p>';
246        
247        // get some form data.
248        // teacher id
249        var teacher_id = $(this).find("input[name='id']").val();
250        // name
251        var firstname = $(this).find("input[name='firstname']");
252        // surname
253        var surname = $(this).find("input[name='surname']");
254        // email
255        var email = $(this).find("input[name='email']");
256        // reason
257        var reason= $(this).find("select[name='reason']");
258        
259        if (firstname.hasClass('required') && firstname.val() == '') {
260            var name_error = error_tpl.replace("{{msg}}", "Voornaam is verplicht");
261            firstname.parent().append(name_error);
262            firstname.focus();
263            _scope.find('button[type="submit"]').removeClass('disabled');
264            return false;
265        }
266        if (surname.hasClass('required') && surname.val() == '') {
267            var surname_error = error_tpl.replace("{{msg}}", "Achternaam is verplicht");
268            surname.parent().append(surname_error);
269            surname.focus();
270            _scope.find('button[type="submit"]').removeClass('disabled');
271            return false;
272        }
273        if (email.hasClass('required') && email.val() == '') {
274            var email_error = error_tpl.replace("{{msg}}", "E-mailadres is verplicht");
275            email.parent().append(email_error);
276            email.focus();
277            _scope.find('button[type="submit"]').removeClass('disabled');
278            return false;
279        }
280        if (reason.hasClass('required') && reason.val() == '') {
281            var reason_error = error_tpl.replace("{{msg}}", "Reden is verplicht");
282            reason.parent().append(reason_error);
283            reason.focus();
284            _scope.find('button[type="submit"]').removeClass('disabled');
285            return false;
286        }
287        
288        // all fine.. proceed.
289        $.ajax({
290            url:$(this).attr('action'),
291            type:'POST',
292            data: {
293                id:teacher_id,
294                firstname:firstname.val(),
295                surname:surname.val(),
296                email:email.val(),
297                reason:reason.val(),
298                notes: $(this).find("textarea[name='notes']").val()
299            },
300            success:function (_data) { // handle response
301                var data = _data || {};
302                if (data.success == true) {
303                    _scope.find('button[type="submit"]').removeClass('disabled');
304                    _scope.find("div.form").hide(function(){
305                        _scope.find('button[type="submit"]').hide();
306                        // remove report button.. just to be sure :)
307                        _scope.find("div.tnxx").show();
308                    });
309                } else {
310                    _scope.find('button[type="submit"]').removeClass('disabled');
311                    var errors = data.errors || {};
312                    if (errors.length) {
313                        // set above form.
314                    }
315                }
316            },
317            error:function(err) {
318                _scope.find('button[type="submit"]').removeClass('disabled');
319                // set error above form.
320            }
321        });        
322    });
323    $("form.reportInlineFrm").on('submit', function(e) {
324        e.preventDefault();
325        // copy scope.
326        var _scope = $(this);
327        
328        // disable the submit button.
329        _scope.find('button[type="submit"]').addClass('disabled');
330        
331        // remove possible current errors.
332        $(this).find("p.help-block.required").remove();
333        // error helper block
334        var error_tpl = '<p class="help-block required">{{msg}}</p>';
335        
336        // get some form data.
337        // teacher id
338        var teacher_id = $(this).find("input[name='id']").val();
339        // name
340        var firstname = $(this).find("input[name='firstname']");
341        // surname
342        var surname = $(this).find("input[name='surname']");
343        // email
344        var email = $(this).find("input[name='email']");
345        // reason
346        var reason= $(this).find("select[name='reason']");
347        
348        if (firstname.hasClass('required') && firstname.val() == '') {
349            var name_error = error_tpl.replace("{{msg}}", "Voornaam is verplicht");
350            firstname.parent().append(name_error);
351            firstname.focus();
352            _scope.find('button[type="submit"]').removeClass('disabled');
353            return false;
354        }
355        if (surname.hasClass('required') && surname.val() == '') {
356            var surname_error = error_tpl.replace("{{msg}}", "Achternaam is verplicht");
357            surname.parent().append(surname_error);
358            surname.focus();
359            _scope.find('button[type="submit"]').removeClass('disabled');
360            return false;
361        }
362        if (email.hasClass('required') && email.val() == '') {
363            var email_error = error_tpl.replace("{{msg}}", "E-mailadres is verplicht");
364            email.parent().append(email_error);
365            email.focus();
366            _scope.find('button[type="submit"]').removeClass('disabled');
367            return false;
368        }
369        if (reason.hasClass('required') && reason.val() == '') {
370            var reason_error = error_tpl.replace("{{msg}}", "Reden is verplicht");
371            reason.parent().append(reason_error);
372            reason.focus();
373            _scope.find('button[type="submit"]').removeClass('disabled');
374            return false;
375        }
376        
377        // all fine.. proceed.
378        $.ajax({
379            url:$(this).attr('action'),
380            type:'POST',
381            data: {
382                id:teacher_id,
383                firstname:firstname.val(),
384                surname:surname.val(),
385                email:email.val(),
386                reason:reason.val(),
387                notes: $(this).find("textarea[name='notes']").val()
388            },
389            success:function (_data) { // handle response
390                var data = _data || {};
391                if (data.success == true) {
392                    _scope.find('button[type="submit"]').removeClass('disabled');
393                    _scope.find("div.form").hide(function(){
394                        _scope.find('button[type="submit"]').hide();
395                        // remove report button.. just to be sure :)
396                        _scope.find("div.tnxx").show();
397                    });
398                } else {
399                    _scope.find('button[type="submit"]').removeClass('disabled');
400                    var errors = data.errors || {};
401                    if (errors.length) {
402                        // set above form.
403                    }
404                }
405            },
406            error:function(err) {
407                _scope.find('button[type="submit"]').removeClass('disabled');
408                // set error above form.
409            }
410        });        
411    });
412    
413    // maakposter
414    $(document).on('click', "#posters a.createPoster", function(e) {
415        e.preventDefault();
416        var poster = $(this).data('poster');
417        var location = window.location;
418        var $this = $(this);
419        $this.button('loading');
420        $.ajax({
421            url:location,
422            type:'POST',
423            data: {
424                poster:poster
425            },
426            success:function (_data) { // handle response
427                $this.button('reset');
428                var data = _data || {};
429                if (data.success == true) {
430                    $this.addClass('hidden');
431                    $this.parent().find('.download').removeClass('hidden');
432                    $this.parent().find('.download a').attr('href', _KD.app.uri + '/' + data.filename);
433                } else {
434                    alert('Fout bij genereren poster probeer nogmaals');
435                }
436            },
437            error:function(err) {
438                $this.button('reset');
439                alert('Fout bij genereren poster probeer nogmaals');
440            }
441        });        
442    });
443});

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.