Advertisement
briank

schedule_content.js

Dec 11th, 2019
480
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * schedule_content.js - Schedule content display with jQuery
  3.  *
  4.  * Author: Brian Katzung, briank@kappacs.com
  5.  *
  6.  * <tag data-display-starting='y-m-d h:m:s'
  7.  * data-display-ending='y-m-d h:m:s'>content</tag>
  8.  * will display starting at starting (default: start of time)
  9.  * and ending at ending (default: end of time), *GMT*.
  10.  *
  11.  * Any non-digit sequence between elements will work, but this syntax is
  12.  * recommended for compatibility with any potential future enhancements.
  13.  * Everything after the year is optional. 1 <= month <= 12; 0 <= hour <= 23
  14.  *
  15.  * Call display_scheduled_content([jQuery]) to activate/update.
  16.  *
  17.  * Version 1.0.0 / 2019-12-11
  18.  */
  19. function display_scheduled_content ($ = window.jQuery) {
  20.     function get_date (str) {
  21.         var parts = str.split(/\D+/).map(function (p) { return parseInt(p); }).concat([0, 0, 0, 0, 0]);
  22.         return new Date(parts[0], (parts[1] || 1) - 1, parts[2] || 1, parts[3], parts[4], parts[5]);
  23.     }
  24.     var now = new Date();
  25.  
  26.     $('[data-display-starting],[data-display-ending]').each(function () {
  27.         var $this = $(this), display = true;
  28.         var starting = $this.attr('data-display-starting');
  29.         var ending = $this.attr('data-display-ending');
  30.         if (starting && now < get_date(starting)) display = false;
  31.         if (display && ending && now >= get_date(ending)) display = false;
  32.         display ? $this.show() : $this.hide();
  33.     });
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement