var events = []; var repositoryData; function addEvent(group, date, content) { var dateFormat = new Date(date); var dd = new Date(dateFormat.getFullYear(), dateFormat.getMonth(), dateFormat.getDay()); events.push({id: events.length, group: group, start: dd, content: content}); } // {id: 0, group: 0, start: new Date(2013,7,1), end: new Date(2017,5,15), content: 'High School'}, function addRepositories(userName, groupID) { return new Promise(function(resolve, reject) { queryAPIByUser(API_REPOSITORIES, userName, function(data) { repositoryData = data; for(var i = 0; i < data.length; i++) { data[i].id = events.length; addEvent(groupID, data[i]['created_at'], data[i]['name']) } resolve(); }, function(error) { console.log(error); reject(error); }) }) } function timeLineClickEvent(properties) { if(properties.item !== null && typeof repositoryData[properties.item].name !== 'undefined') { var item = repositoryData[properties.item]; var html = "
\n" + "
\n" + item.name + "
\n" + "
\n"; html += "

" + item.description + "

"; console.log(item.license); if(item.license === null) { item.license = new Object(); item.license.name = 'none'; } html += "
\n" + "
    \n" + "
  • \n" + "
    Fork Count
    \n" + "
    " + item.forks + "
    \n" + "
  • \n" + "
  • \n" + "
    Languages
    \n" + "
    " + item.language+ "
    \n" + "
  • \n" + "
  • \n" + "
    Liscense
    \n" + "
    " + item.license.name + "
  • "; if(item.homepage !== null) { html += "
  • \n" + "
    Home Page
    \n" + " \n" + "
  • \n" + "
\n"; } html += "
\n" + "
    \n" + "
  • \n" + "
    Repository URL
    \n" + " \n" + "
  • \n" + "
  • \n" + "
    Open Issues
    \n" + "
    " + item.open_issues_count + "
    \n" + "
  • \n" + "
  • \n" + "
    Watchers
    \n" + "
    " + item.watchers + "
    \n" + "
  • \n" + "
\n" + "
"; html +="
\n" + "
"; $("#repositoryInformation").html(html); } } function createProfileTimeLine(username, containerName) { var container = document.getElementById(containerName); var prom = [addRepositories(username, 1)]; var groups = new vis.DataSet([ {id: 1, content: 'Repositories', value: 2} ]); Promise.all(prom).then(function() { // note that months are zero-based in the JavaScript Date object var items = new vis.DataSet(events); var options = { // option groupOrder can be a property name or a sort function // the sort function must compare two groups and return a value // > 0 when a > b // < 0 when a < b // 0 when a == b groupOrder: function (a, b) { return a.value - b.value; }, margin: { item: 20, axis: 40 } }; var timeline = new vis.Timeline(container); timeline.setOptions(options); timeline.setGroups(groups); timeline.setItems(items); timeline.on('click', timeLineClickEvent); }); }