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 = "<div class=\"card\">\n" +
|
|
" <div class=\"card-header\">\n" +
|
|
item.name +
|
|
" </div>\n" +
|
|
" <div class=\"card-body\">\n";
|
|
|
|
html += "<p>" + item.description + "</p>";
|
|
|
|
console.log(item.license);
|
|
if(item.license === null)
|
|
{
|
|
item.license = new Object();
|
|
item.license.name = 'none';
|
|
}
|
|
|
|
html += "<div class='row'><div class=\"col-6\">\n" +
|
|
" <ul class=\"list-group\">\n" +
|
|
" <li class=\"row\">\n" +
|
|
" <div class=\"col-md-6\"><b>Fork Count</b></div>\n" +
|
|
" <div class=\"col-md-6\">" +
|
|
item.forks +
|
|
"</div>\n" +
|
|
" </li>\n" +
|
|
" <li class=\"row\">\n" +
|
|
" <div class=\"col-md-6\"><b>Languages</b></div>\n" +
|
|
" <div class=\"col-md-6\">" +
|
|
item.language+
|
|
"</div>\n" +
|
|
" </li>\n" +
|
|
" <li class=\"row\">\n" +
|
|
" <div class=\"col-md-6\"><b>Liscense</b></div>\n" +
|
|
" <div class=\"col-md-6\">" +
|
|
item.license.name +
|
|
"</div></li>";
|
|
if(item.homepage !== null)
|
|
{
|
|
html +=
|
|
" <li class=\"row\">\n" +
|
|
" <div class=\"col-md-6\"><b>Home Page</b></div>\n" +
|
|
" <div class=\"col-md-6\">" +
|
|
"<a href='" + item.homepage + "'>" +item.homepage + "</a>" +
|
|
"</div>\n" +
|
|
" </li>\n" +
|
|
" </ul>\n";
|
|
}
|
|
|
|
|
|
html += "</div><div class=\"col-6\">\n" +
|
|
" <ul class=\"list-group\">\n" +
|
|
" <li class=\"row\">\n" +
|
|
" <div class=\"col-md-6\"><b>Repository URL</b></div>\n" +
|
|
" <div class=\"col-md-6\">" +
|
|
"<a href='" + item.html_url + "'>" +item.html_url + "</a>" +
|
|
"</div>\n" +
|
|
" </li>\n" +
|
|
" <li class=\"row\">\n" +
|
|
" <div class=\"col-md-6\"><b>Open Issues</b></div>\n" +
|
|
" <div class=\"col-md-6\">" +
|
|
item.open_issues_count +
|
|
"</div>\n" +
|
|
" </li>\n" +
|
|
" <li class=\"row\">\n" +
|
|
" <div class=\"col-md-6\"><b>Watchers</b></div>\n" +
|
|
" <div class=\"col-md-6\">" +
|
|
item.watchers +
|
|
"</div>\n" +
|
|
" </li>\n" +
|
|
" </ul>\n" +
|
|
" </div></div>";
|
|
|
|
html +=" </div>\n" +
|
|
"</div>";
|
|
|
|
$("#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);
|
|
});
|
|
}
|