Actions

MediaWiki

Common.js: Difference between revisions

From Blood on the Clocktower Wiki

(Created page with "$("li:contains('Toolbox')").hide(); $("img").contextmenu(function() { return false; }); $(document).ready(function() { var e_interactions = document.querySelector("#interactions"); var language = e_interactions.dataset.language; var href = window.location.href var slash = href.indexOf("/", 8) var hashtag = href.indexOf("#") var key = href.substring(slash + 1, hashtag == -1 ? href.length : hashtag) .replace...")
 
No edit summary
 
(33 intermediate revisions by the same user not shown)
Line 1: Line 1:
$("li:contains('Toolbox')").hide();
$("li:contains('Toolbox')").hide();


$("img").contextmenu(function() {
$("img").contextmenu(function () {
     return false;
     return false;
});
});


$(document).ready(function()  
var jinxesOpen = false;
{
 
     var e_interactions = document.querySelector("#interactions");
$(document).ready(function () {
     var language = e_interactions.dataset.language;
     handleAudioElements();
                   
     replaceRolesWithAbilities();
     var href = window.location.href
     $("#jinxes > table").css("display", "none");
      
     $("#jinx-toggle").on("click", function() {
    var slash = href.indexOf("/", 8)
        jinxesOpen = !jinxesOpen;
    var hashtag = href.indexOf("#")
        $("#jinx-toggle").text(jinxesOpen ? "(Close)" : "(Open)")
        $("#jinxes > table").css("display", jinxesOpen ? "block" : "none");
    });
});


    var key = href.substring(slash + 1, hashtag == -1 ? href.length : hashtag)
        .replace(" ", "")
        .replace("-", "")
        .replace("'", "")
        .replace("_", "")
        .replace("%27", "")
        .toLowerCase();


     fetch("https://interactions.patters.live/api/interactions/by-key/" + key + "/" + language)
function replaceRolesWithAbilities()
        .then(function(response)  
{
     fetch("https://wiki.bloodontheclocktower.com/roles.json").then(function(resp)
    {
        if (resp.ok)  
         {
         {
             if (!response) {
             resp.json().then(function(roles)
                 return;
            {
            }
                 document.querySelectorAll("[data-role]").forEach(function(e)  
       
                {
            response.json()
                .then(function(interactions) {


                     interactions.sort(function(a, b) {
                     const filtered = roles.filter(function(r)  
                    {
                        return r.name === e.dataset.role
                    });


                         var aKey = (a.primaryKey !== key ? a.primaryKey : a.secondaryKey)
                    if (filtered.length > 0)
                        var bKey = (b.primaryKey !== key ? b.primaryKey : b.secondaryKey)
                    {
                         e.parentElement.title = "";
                        e.dataset.role = filtered[0].ability
                    }
                    else
                    {
                        delete e.dataset.role;
                    }
                });
            })
        }
        else
        {
            document.querySelectorAll("[data-role]").forEach(function(e)
            {
                delete e.dataset.role;
            });
        }
    });
}


                        if (aKey < bKey)
function handleAudioElements()
                            return -1;
{
                           
    document.querySelectorAll('.html5audio:not(.loaded)').forEach(function (div) {
                        if (aKey > bKey)
        var data = div.dataset;
                            return 1;
        var file = data.file;
        if (!file) {
            return;
        }
        var format = file.split('.').pop();
        var preload = data.preload;
        var download = data.download;
        var options = data.options;
        var opts = { controls: '' };
        var volume = Number(Number(data.volume).toFixed(1));


                        return 0;
        if (format === 'mp3') {
            format = 'mpeg';
        }


                    })
        if (format === 'm4a') {
            format = 'mp4';
        }


                    var content = ""
        if (preload !== 'auto' || preload !== 'metadata') {
                    var table = document.createElement("table")
            preload = 'none';
        }
        opts.preload = preload;


                    var tr = document.createElement("tr")
        if (download === 'false') {
            opts.controlsList = 'nodownload';
        }


                    var thRole = document.createElement("th")
        if (options) {
                    thRole.style.fontWeight = "bold"
            var valid = ['autoplay', 'loop', 'muted'];
            options.split(',').forEach(function (el) {
                el = el.trim();
                if (valid.indexOf(el) !== -1) {
                    opts[el] = '';
                }
            });
        }


                    var thDescription = document.createElement("th")
        var audio = document.createElement('audio');
                    thDescription.style.fontWeight = "bold"


                    thRole.innerText = "Character"
        Object.keys(opts).forEach(function (attr) {
                    thDescription.innerText = "Description"
            var value = opts[attr];
 
            audio.setAttribute(attr, value);
                    tr.append(thRole)
        });
                    tr.append(thDescription)
                    table.append(tr);
 
                    for (var i = 0; i < interactions.length; i++)
                    {
                        var interaction = interactions[i]
 
                        var tr = document.createElement("tr")
                        var tdRole = document.createElement("td")
                        var tdValue = document.createElement("td")


                        if (interaction.primaryKey !== key)
        var source = document.createElement('source');
                        {
        source.src = file;
                            tdRole.innerText = interaction.primary
        source.type = 'audio/' + format;
                            tdValue.innerText = interaction.value
                        }
                        else
                        {
                            tdRole.innerText = interaction.secondary
                            tdValue.innerText = interaction.value
                        }


                        tr.append(tdRole)
        audio.append(source);
                        tr.append(tdValue)
                        table.append(tr)


                    }
        if (volume >= 0 && volume <= 1) {
            audio.volume = volume;
        }


                    e_interactions.append(table)
        div.innerHTML = '';
                });
        div.appendChild(audio);
       
        div.classList.add('loaded');
        });
    })
});
}

Latest revision as of 08:04, 7 October 2024

$("li:contains('Toolbox')").hide();

$("img").contextmenu(function () {
    return false;
});

var jinxesOpen = false;

$(document).ready(function () {
    handleAudioElements();
    replaceRolesWithAbilities();
    $("#jinxes > table").css("display", "none");
    $("#jinx-toggle").on("click", function() {
        jinxesOpen = !jinxesOpen;
        $("#jinx-toggle").text(jinxesOpen ? "(Close)" : "(Open)")
        $("#jinxes > table").css("display", jinxesOpen ? "block" : "none");
    });
});


function replaceRolesWithAbilities() 
{
    fetch("https://wiki.bloodontheclocktower.com/roles.json").then(function(resp) 
    { 
        if (resp.ok) 
        {
            resp.json().then(function(roles) 
            {
                document.querySelectorAll("[data-role]").forEach(function(e) 
                {

                    const filtered = roles.filter(function(r) 
                    {
                        return r.name === e.dataset.role
                    });

                    if (filtered.length > 0) 
                    {
                        e.parentElement.title = "";
                        e.dataset.role = filtered[0].ability
                    }
                    else
                    {
                        delete e.dataset.role;
                    }
                });
            })
        }
        else 
        {
            document.querySelectorAll("[data-role]").forEach(function(e) 
            {
                delete e.dataset.role;
            });
        }
    });
}

function handleAudioElements() 
{
    document.querySelectorAll('.html5audio:not(.loaded)').forEach(function (div) {
        var data = div.dataset;
        var file = data.file;
        if (!file) {
            return;
        }
        var format = file.split('.').pop();
        var preload = data.preload;
        var download = data.download;
        var options = data.options;
        var opts = { controls: '' };
        var volume = Number(Number(data.volume).toFixed(1));

        if (format === 'mp3') {
            format = 'mpeg';
        }

        if (format === 'm4a') {
            format = 'mp4';
        }

        if (preload !== 'auto' || preload !== 'metadata') {
            preload = 'none';
        }
        opts.preload = preload;

        if (download === 'false') {
            opts.controlsList = 'nodownload';
        }

        if (options) {
            var valid = ['autoplay', 'loop', 'muted'];
            options.split(',').forEach(function (el) {
                el = el.trim();
                if (valid.indexOf(el) !== -1) {
                    opts[el] = '';
                }
            });
        }

        var audio = document.createElement('audio');

        Object.keys(opts).forEach(function (attr) {
            var value = opts[attr];
            audio.setAttribute(attr, value);
        });

        var source = document.createElement('source');
        source.src = file;
        source.type = 'audio/' + format;

        audio.append(source);

        if (volume >= 0 && volume <= 1) {
            audio.volume = volume;
        }

        div.innerHTML = '';
        div.appendChild(audio);
        div.classList.add('loaded');
    })
}