/*!
 * Copyright (c) 2021 Eclipse Foundation, Inc.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * Contributors:
 *   Christopher Guindon <chris.guindon@eclipse-foundation.org>
 *
 * SPDX-License-Identifier: EPL-2.0
*/

(function ($) {
  var release_name = $('.eclipsefdn-new-noteworty').attr('data-sr-name');
  if (release_name) {
    $.getJSON(
      'https://projects.eclipse.org/api/simultaneous_release/' + release_name,
      function (data) {
        var items = [];
        if (data[release_name].projects) {
          $.each(data[release_name].projects, function (NULL, val) {

            if (val.new_and_noteworthy_url) {
              items.push(
                '<li><a href="' +
                  val.new_and_noteworthy_url +
                  '">' +
                  val.project_name +
                  '</a></li>'
              );
            }
          });

          $('<ul/>', {
            html: items.join(''),
          }).appendTo('.eclipsefdn-new-noteworty');
        }
      }
    );
  }
})(jQuery);
