<!--<script src="/js/echarts.min.js"></script>-->
<!--<script src="/js/mergedData.js"></script>-->
<!--<script src="/js/initMergedGraph.js?t=20220810"></script>-->
<script>
  $('.contributors-wrapper .item').on('click', function (e) {
    e.preventDefault();
    var $item = $(e.currentTarget)
    var name = $item.data('name') + ' contributors';
    var icon = $item.data('icon');
    $('.modal-name').html(name);
    if (!icon) {
      $('.modal-icon').hide()
    } else {
      $('.modal-icon').attr('src', '/images/project/' + icon + '.svg').show();
    }
    $('.modal-detail').html($item.next().clone().addClass('show'));
    $('.modal-wrapper').fadeIn()
  });
  $('.btn-back').on('click', function () {
    $('.modal-wrapper').fadeOut();
  });
  // search
  var doSearch = function () {
    var contributor = $('#team-contributor-input').val().trim();
    if(!contributor) {
      return;
    }
    window.open('/contributors/?contributor=' + contributor, '_blank');
  }
  $('.team-contributor-search').on('click', doSearch);
  $('#team-contributor-input').on('keydown', function (e) {
    if (e.keyCode === 13) {
      doSearch();
    }
  });
</script>
