1/**
2 * RandomTable.js
3 */
4var random_tables_plugin = {
5
6    /**
7     * @brief onclick method for input element
8     *
9     * @param {jQuery} $chk the jQuery input element
10     */
11    roll: function($btn) {
12        let src = $btn.data('src');
13        let prefix = '';
14        if (!src) {
15            let $srcSelect = jQuery('select#' + $btn.data('pick'));
16            src = $srcSelect.find(':selected').val();
17            prefix = $srcSelect.find(':selected').text() + ': ';
18        }
19
20        if (prefix === '') {
21            let text = $btn.text();
22            text = text.replace(/^Roll\s+/, '');
23            if (text.length > 0) {
24                prefix = text + ': ';
25            }
26        }
27
28        if (!src) {
29            return;
30        }
31
32        let target = $btn.data('target');
33        let targetDiv = jQuery('#' + target);
34
35        // make an AJAX call
36        jQuery.post(
37            DOKU_BASE + 'lib/exe/ajax.php',
38            {
39                call: 'plugin_randomtable_roll',
40                table_id: src,
41            },
42            function(response) {
43                random_tables_plugin.addResult(targetDiv, response, prefix);
44            },
45            'json'
46        );
47    }, // roll
48
49    addResult: function(targetDiv, response, prefix) {
50        // update the result
51        targetDiv.append('<div>' + prefix + response.result + '<button class="delete">del</button></div>');
52        targetDiv.find('button').on('click', function(ev) {
53            jQuery(this).parent().first().remove();
54        });
55    }, // addResult
56
57    init: function() {
58        // add clickhandler to rolltable buttons
59        jQuery('button.randomtable').on('click', function(ev) {
60            ev.preventDefault();
61            random_tables_plugin.roll(jQuery(this));
62        });
63    } // init
64};
65
66jQuery(random_tables_plugin.init);
67