MediaWiki:Common.js: Difference between revisions

From Mechabellum Wiki
(change time widget - add button)
(show host on external links)
Line 55: Line 55:
   });
   });
});
});
// show host on external links
$(function(){
  $('a[href].external').each(function(){
    var host = this.href.match('.*//(www\.)?([^/]+)')[2]
    this.dataset.host = host
  })
})

Revision as of 14:49, 9 July 2023

/* Any JavaScript here will be loaded for all users on every page load. */
$(function () {
  $('[data-toggle="tooltip"]').tooltip()
})

// time widget
$(function(){
  $("time").each(function(){
    var el = $(this)
    var d = new Date(el.attr("datetime"))
    if (isNaN(d.getDate())) {
      return // skip invalid date
    }
    var opt = {timeStyle: "short"}
    switch (el.data("type")) {
      default:
      case "short":
        opt.dateStyle = "medium"
        break
      case "full":
        opt.dateStyle = "full"
        break
      case "time":
        break
      case "weekday":
        opt = {weekday: "long", hour: "numeric", minute: "numeric"}
        break
    }
    
    // get next date when interval is set
    var iv = parseInt(el.data('interval'))
    if (iv > 0 && d.getFullYear() > 2020) {
      var now = new Date();
      while (d<now) {
        d.setDate(d.getDate()+iv)
      }
    }
    
    // set date-data
    el.data("local", d.toLocaleString([], opt))
    opt.timeZone = "UTC"
    el.data("UTC", new Intl.DateTimeFormat("en-US", opt).format(d));
    el.html(el.data("local"))
    el.data("view", "local")
    
    // add toggle button
    el.after($('<button class="btn btn-primary btn-xs">').html("local").css('marginLeft','.5em').click(function(ev){
      ev.preventDefault()
      var el = $(this).prev()
      var view = (el.data("view")==="local") ? "UTC" : "local"
      el.fadeOut(200, function() {el.html(el.data(view)).fadeIn(200)})
      el.data("view", view)
      $(this).html(view)
    }));
  });
});

// show host on external links
$(function(){
  $('a[href].external').each(function(){
    var host = this.href.match('.*//(www\.)?([^/]+)')[2]
    this.dataset.host = host
  })
})