Brak opisu

milestone.js 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* global MilestoneConfig */
  2. var Milestone = ( function () {
  3. var Milestone = function ( args ) {
  4. var widget_content = document.getElementById( args.content_id ),
  5. id = args.id,
  6. refresh = args.refresh * 1000;
  7. this.timer = function () {
  8. var instance = this;
  9. var xhr = new XMLHttpRequest();
  10. xhr.onload = function () {
  11. var response = JSON.parse( xhr.responseText ),
  12. httpCheck = xhr.status >= 200 && xhr.status < 300,
  13. responseCheck =
  14. 'undefined' !== typeof response.message && 'undefined' !== typeof response.refresh;
  15. if ( httpCheck && responseCheck ) {
  16. var countdownElement = widget_content.querySelector( '.milestone-countdown' );
  17. countdownElement.outerHTML = response.message;
  18. refresh = response.refresh * 1000;
  19. if ( ! refresh ) {
  20. return;
  21. }
  22. setTimeout( function () {
  23. instance.timer();
  24. }, refresh );
  25. }
  26. };
  27. xhr.open( 'GET', MilestoneConfig.api_root + 'jetpack/v4/widgets/' + id );
  28. xhr.send();
  29. };
  30. if ( refresh > 0 ) {
  31. this.timer();
  32. }
  33. };
  34. return function ( args ) {
  35. return new Milestone( args );
  36. };
  37. } )();
  38. ( function () {
  39. var i,
  40. MilestoneInstances = {};
  41. if ( typeof MilestoneConfig === 'undefined' ) {
  42. return;
  43. }
  44. for ( i = 0; i < MilestoneConfig.instances.length; i++ ) {
  45. MilestoneInstances[ i ] = new Milestone( MilestoneConfig.instances[ i ] );
  46. }
  47. } )();