auctions-1.0.x-dev/modules/auctions_core/js/drupal.behaviors.auctionCountdown.js

modules/auctions_core/js/drupal.behaviors.auctionCountdown.js
(function($, Drupal) {
  'use strict';

  /**
   * Attaches the JS countdown behavior
   */
  Drupal.behaviors.auctionCountdown = {
    attach: function(context) {
      $(once('auction-countdown-active', '.auction-countdown:not(.countdown-over)', context)).each(function() {
        var countdown = this;
        $(countdown)
          .find('.countdown')
          .attr({
            'aria-live': 'polite',
            'aria-atomic': 'true'
          })
          .auctionCountdown({
          timestamp: $(this).data('unix') * 1000,
          font_size: $(this).data('font-size'),
          callback: function(weeks, days, hours, minutes, seconds, left) {
            var dateStrings = {
              'weeks': Drupal.formatPlural(weeks, '1 week', '@count weeks'),
              'days': Drupal.formatPlural(days, '1 day', '@count days'),
              'hours': Drupal.formatPlural(hours, '1 hour', '@count hours'),
              'minutes': Drupal.formatPlural(minutes, '1 minute', '@count minutes'),
              'seconds': Drupal.formatPlural(seconds, '1 second', '@count seconds')
            };

            // Countdown: if unit is zero and fade it, keep visual blocking.
            if (weeks === 0) {
              $(countdown).find('.countWeeks, .countDiv[data-dot=countWeeks]').attr({'aria-hidden':true}).removeAttr('aria-label').animate({
                opacity: .1
              }, 1000);
            } else {
              $(countdown).find('.countWeeks').attr({
                'aria-label': dateStrings['weeks']
              });
            }
            if (days === 0 && weeks === 0) {
              $(countdown).find('.countDays, .countDiv[data-dot=countDays]').attr({'aria-hidden':true}).removeAttr('aria-label').animate({
                opacity: .1
              }, 1000);
            } else {
              $(countdown).find('.countDays').attr({
                'aria-label': dateStrings['days']
              });
            }
            if (hours === 0 && days === 0 && weeks === 0) {
              $(countdown).find('.countHrs, .countDiv[data-dot=countHrs]').attr({'aria-hidden':true}).removeAttr('aria-label').animate({
                opacity: .1
              }, 1000);
            } else {
              $(countdown).find('.countHrs').attr({
                'aria-label': dateStrings['hours']
              });
            }
            if (minutes === 0 && hours === 0 && days === 0 && weeks === 0) {
              $(countdown).find('.countMins, .countDiv[data-dot=countMins]').attr({'aria-hidden':true}).removeAttr('aria-label').animate({
                opacity: .1
              }, 1000);
            } else {
              $(countdown).find('.countMins').attr({
                'aria-label': dateStrings['minutes']
              });
            }
            if (seconds === 0 && minutes === 0 && hours === 0 && days === 0 && weeks === 0) {
              $(countdown).find('.countSecs').attr({'aria-hidden':true}).removeAttr('aria-label').animate({
                opacity: .1
              }, 1000);
            } else {
              $(countdown).find('.countSecs').attr({
                'aria-label': dateStrings['seconds']
              });
            }

            // Handle interval phrasing.
            var messageParts = [];
            var message = '';
            if (weeks > 0) messageParts.push(dateStrings['weeks']);
            if (days > 0) messageParts.push(dateStrings['days']);
            if (hours > 0) messageParts.push(dateStrings['hours']);
            if (minutes > 0) messageParts.push(dateStrings['minutes']);
            if (seconds > 0) messageParts.push(dateStrings['seconds']);
            if (messageParts.length > 0) {
              message = messageParts.join(', ');
              if (messageParts.length > 1) {
                var lastCommaIndex = message.lastIndexOf(', ');
                message = message.substring(0, lastCommaIndex) + ' ' + Drupal.t('and') + ' ' + message.substring(lastCommaIndex + 2);
              }
              message += ' ' + Drupal.t('left');
            }

            $(countdown)
              .find('.auction-item-interval')
              .attr({
                'aria-live': 'polite',
              })
              .html(message);
          }
        });
      });
    }
  };
})(jQuery, Drupal);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc