123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import CacheUtils from "./CacheUtils.js";
- import GithubUtils from "./GithubUtils.js";
- import OpenCollectiveUtils from "./OpenCollectiveUtils.js";
- // import Christmas from "./Christmas.js";
- class OpenCollectiveService{
- static async init(){
- const collective="jmonkeyengine";
- this.backers=await OpenCollectiveUtils.getBackersFlat(collective,this.backers,(res)=>window.shuffleArray(res));
- console.assert(this.backers,"Backers can't be undefined");
-
- this.backersWithMessage = this.backers.filter(el=>el.message);
-
- this.cycleBackers();
- this.cycleMessage();
- setInterval(() =>{
- this.cycleBackers();
- }, 5000);
- }
- static async cycleBackers () {
- this.shownBacker=CacheUtils.cachedCycle("backers",0,this.backers.length-1,10000);
- const backer = this.backers[this.shownBacker];
- document.querySelectorAll("#backerName").forEach(el=>{
- el.setAttribute("href", backer.accountUrl);
- el.innerHTML = backer.name;
- });
- }
- static async cycleMessage () {
- this.shownBackerMessage=CacheUtils.cachedCycle("backersMex",0,this.backersWithMessage.length-1,10000);
- const backer = this.backersWithMessage[this.shownBackerMessage];
- document.querySelectorAll("#backerMessage").forEach(el=>{
- el.innerHTML = backer.message?backer.message:" ";
- });
- document.querySelectorAll("#backerMessageName").forEach(el=>{
- el.innerText = "- "+backer.name;
- el.setAttribute("href", backer.accountUrl);
- });
- }
- }
- class GithubService{
- static async init(){
- this.contributors=[];
- this.contributors.push(...await GithubUtils.getTop100Contributors("jMonkeyEngine/jmonkeyengine"),(res)=>window.shuffleArray(res));
- this.contributors.push(...await GithubUtils.getTop100Contributors("jMonkeyEngine/sdk"),(res)=>window.shuffleArray(res));
- this.contributors.push(...await GithubUtils.getTop100Contributors("jMonkeyEngine/wiki"),(res)=>window.shuffleArray(res));
- this.resolveUsers();
- this.cycleContributors();
- setInterval(() =>{
- this.cycleContributors();
- }, 5000);
- }
- static async cycleContributors () {
- this.shownContributor=CacheUtils.cachedCycle("contribs",0,this.contributors.length-1,20000);
-
- let contributor = this.contributors[this.shownContributor];
- contributor=await GithubUtils.resolveUser(contributor.login);
- document.querySelectorAll("#contributorName").forEach(contributorNameEl=>{
- contributorNameEl.innerText = contributor.name?contributor.name:contributor.login;
- contributorNameEl.setAttribute("href", contributor.html_url);
- });
- }
- static async resolveUsers(){
- console.log("Look for github users to resolve...")
- document.querySelectorAll("[github-user]").forEach(el=>{
- const user=el.getAttribute("github-user");
- console.log("Found user needing resolution",el,user)
- GithubUtils.resolveUser(user).then(user=>{
- // console.log(user,"read for resolution!");
- const properties={};
- properties.name=user.name;
- if(!properties.name)properties.name=user.login;
- properties.link=user.html_url;
- properties.bio=user.bio;
- properties.twitter_username=user.twitter_username;
- properties.twitter_link=user.twitter_username?"https://twitter.com/"+user.twitter_username:undefined;
- properties.public_repos=user.public_repos;
- properties.hireable=user.hireable;
- properties.email=user.email;
- properties.blog=user.blog;
- properties.avatar_url=user.avatar_url;
- for(let k in properties){
- const v=properties[k];
- if(!v)continue;
- const attr="ghresolve-"+k;
- el.querySelectorAll("["+attr+"]").forEach(eel=>{
- const realattr=eel.getAttribute(attr);
- eel.style.display="inline-block";
- if(realattr==="innerText"){
- eel.innerText=v;
- }else{
- eel.setAttribute(realattr,v);
- }
- })
- // el.querySelectorAll(".gh"+k).forEach(eel=>eel.style.display="inline-block");
- // el.querySelectorAll("a.gh"+k).forEach(eel=>eel.setAttribute("href",v));
- // el.querySelectorAll("span.gh"+k).forEach(eel=>eel.innerText=v);
- }
- });
- });
- }
- }
- window.addEventListener("DOMContentLoaded", function () {
- OpenCollectiveService.init();
- GithubService.init();
- // Christmas.init();
- });
|