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