MediaWiki:Common.js: Difference between revisions

From Mechabellum Wiki
mNo edit summary
(skip false elements)
Line 8: Line 8:
   $("time").each(function(){
   $("time").each(function(){
     var el = $(this)
     var el = $(this)
     var d = new Date(el.attr("datetime"))
     try {
      var d = new Date(el.attr("datetime"))
    } catch (err) {
      return
    }
     var opt = {timeStyle: "short"}
     var opt = {timeStyle: "short"}
     switch (el.data("type")) {
     switch (el.data("type")) {

Revision as of 21:06, 19 June 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)
    try {
      var d = new Date(el.attr("datetime"))
    } catch (err) {
      return
    }
    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.before($('<a href="#">').html("local:").css('paddingRight','.5em').click(function(ev){
      ev.preventDefault()
      var el = $(this).next()
      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+":")
    }));
  });
});