Start language radial progress

This commit is contained in:
Valentin Ivanov
2018-04-24 12:26:03 -04:00
committed by Juha Ristolainen
parent 1643159674
commit ac74701866
5 changed files with 98 additions and 56 deletions

View File

@@ -6,7 +6,7 @@ export class CodeStatsAPI {
private API_KEY = null;
private USER_NAME = null;
private UPDATE_URL = "https://codestats.net/api/";
//private PROFILE_URL = "https://codestats.net/api/users";
private axios = null;
constructor(apiKey: string, apiURL: string, userName: string) {
@@ -66,8 +66,7 @@ export class CodeStatsAPI {
public getProfile(): axios.AxiosPromise {
return this.axios
.get(`users/${this.USER_NAME}`)
.then(response => {
console.log("Got Response\n");
.then(response => {
return response.data;
})
.catch(error => {

View File

@@ -36,15 +36,18 @@ export class ProfileHtmlProvider implements TextDocumentContentProvider {
return Math.pow(Math.ceil((level + 1) / LEVEL_FACTOR), 2);
}
function getLevelProgress(xp: number): number {
function getLevelProgress(xp: number, new_xp: number): number[] {
let level = getLevel(xp);
let curLevelXp = getNextLevelXp(level - 1);
let nextLevelXp = getNextLevelXp(level);
let haveXp = xp - curLevelXp;
let haveXp = (xp-new_xp) - curLevelXp;
let needXp = nextLevelXp - curLevelXp;
return Math.round(haveXp * 100.0 / needXp);
let xpP = Math.round(haveXp * 100.0 / needXp);
let nxpP = Math.round(new_xp * 100.0 / needXp);
return [ xpP, nxpP ];
}
function getSortedArray(profile: any, obj: string): any[] {
@@ -52,12 +55,15 @@ export class ProfileHtmlProvider implements TextDocumentContentProvider {
let langs = [];
let languages_object = profile[obj]
for( let lang in languages_object) {
let percents = getLevelProgress(languages_object[lang].xps, languages_object[lang].new_xps);
langs.push(
{
name: lang,
level: getLevel(languages_object[lang].xps),
xp: languages_object[lang].xps,
new_xp: languages_object[lang].new_xps,
progress: getLevelProgress(languages_object[lang].xps)
progress: percents[0],
new_progress: percents[1]
}
);
}
@@ -68,7 +74,7 @@ export class ProfileHtmlProvider implements TextDocumentContentProvider {
return this.api.getProfile().then(profile => {
let htmlTemplate = fs.readFileSync(this.context.asAbsolutePath("assets/profile.html"));
let htmlTemplate = fs.readFileSync(this.context.asAbsolutePath("assets/profile.html.eex"));
profile["style"] = this.context.asAbsolutePath("assets/profile.css");
profile["level"] = getLevel(profile["total_xp"]);