diff --git a/assets/r1.svg b/assets/r1.svg new file mode 100644 index 0000000..ae159fe --- /dev/null +++ b/assets/r1.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/assets/r2.svg b/assets/r2.svg new file mode 100644 index 0000000..e610f70 --- /dev/null +++ b/assets/r2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 0000000..cd11431 --- /dev/null +++ b/assets/style.css @@ -0,0 +1,44 @@ +.language { + float: left; + width: 6rem; + height: 6rem; + padding-top: 2rem; + text-align: center; + margin: 0.1rem; + border-radius: 50%; + font-size: 0.9em; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: solid 2px; +} + +.language span { + font-weight: bold; + font-size: 1.1em; +} + +.vscode-dark .language { + /* background: rgb(37,37,38); */ + color: #ddca7e; + border-color: #424242; +} + +.vscode-light .language { + background: gray; + color: blue; + border-color: black; +} + +sup { + top: -.5em; + font-size: 75%; +} + +h3 { + text-align: center; +} + +img { + float: left; +} \ No newline at end of file diff --git a/src/code-stats.ts b/src/code-stats.ts index e2b4007..c448955 100644 --- a/src/code-stats.ts +++ b/src/code-stats.ts @@ -3,7 +3,7 @@ import { ExtensionContext } from "vscode"; import { XpCounter } from "./xp-counter"; export function activate(context: ExtensionContext): void { - let controller: XpCounter = new XpCounter(); + let controller: XpCounter = new XpCounter(context); context.subscriptions.push(controller); } diff --git a/src/profileHtmlProvider.ts b/src/profileHtmlProvider.ts index e80e0a4..0fdf88a 100644 --- a/src/profileHtmlProvider.ts +++ b/src/profileHtmlProvider.ts @@ -3,8 +3,10 @@ import { Uri, Event, CancellationToken, - TextDocumentContentProvider + TextDocumentContentProvider, + ExtensionContext } from "vscode"; +import * as path from "path"; import { CodeStatsAPI } from "./code-stats-api"; @@ -12,8 +14,10 @@ export class ProfileHtmlProvider implements TextDocumentContentProvider { onDidChange?: Event; api: CodeStatsAPI; + context: ExtensionContext; - constructor(api: CodeStatsAPI) { + constructor(context: ExtensionContext, api: CodeStatsAPI) { + this.context = context; this.api = api; } @@ -26,12 +30,12 @@ export class ProfileHtmlProvider implements TextDocumentContentProvider { } function getNextLevelXp(level: number): number { - return Math.pow(Math.ceil((level+1)/LEVEL_FACTOR) ,2); + return Math.pow(Math.ceil((level + 1) / LEVEL_FACTOR), 2); } function getLevelProgress(xp: number): number { let level = getLevel(xp); - let curLevelXp = getNextLevelXp(level-1); + let curLevelXp = getNextLevelXp(level - 1); let nextLevelXp = getNextLevelXp(level); let haveXp = xp - curLevelXp; @@ -43,74 +47,34 @@ export class ProfileHtmlProvider implements TextDocumentContentProvider { function getLanguages(languages: any): string { let ret = ''; - for( let lang in languages ) - { - ret+=`
${lang}${languages[lang]["xps"]}
`; + for (let lang in languages) { + ret += `
${lang}${languages[lang]["xps"]}
`; } return ret; } function getHeader(profile: any): string { - - let userName = profile["user"]; - let totalXp = profile["total_xp"]; - let newXp = profile["new_xp"]; - let currentLevel = getLevel(totalXp); - return `

${userName}'s Profile Level ${currentLevel} (${totalXp} XP) ${newXp > 0 ? '(+' + newXp +')' :'' }

`; + let userName = profile["user"]; + let totalXp = profile["total_xp"]; + let newXp = profile["new_xp"]; + let currentLevel = getLevel(totalXp); + + return `

${userName}'s Profile Level ${currentLevel} (${totalXp} XP) ${newXp > 0 ? '(+' + newXp + ')' : ''}

`; } - return this.api.getProfile().then( profile => { - - console.log(profile); + return this.api.getProfile().then(profile => { + //console.log(profile); return ` - + + ${getHeader(profile)} ${getLanguages(profile["languages"])} `; - }); + }); } } diff --git a/src/xp-counter.ts b/src/xp-counter.ts index 17c4f03..9d7dfc0 100644 --- a/src/xp-counter.ts +++ b/src/xp-counter.ts @@ -13,7 +13,8 @@ import { StatusBarAlignment, TextDocumentChangeEvent, Range, - WorkspaceConfiguration + WorkspaceConfiguration, + ExtensionContext } from "vscode"; import { Pulse } from "./pulse"; import { CodeStatsAPI } from "./code-stats-api"; @@ -32,7 +33,7 @@ export class XpCounter { private UPDATE_DELAY = 10000; - constructor() { + constructor(context: ExtensionContext) { this.pulse = new Pulse(); /* // print out supported language names @@ -52,7 +53,7 @@ export class XpCounter { this.statusBarItem.command = "code-stats.profile"; } - let provider = new ProfileHtmlProvider(this.api); + let provider = new ProfileHtmlProvider(context, this.api); let registration = workspace.registerTextDocumentContentProvider('code-stats', provider); diff --git a/test.html b/test.html new file mode 100644 index 0000000..3c3b12b --- /dev/null +++ b/test.html @@ -0,0 +1,4 @@ + + + + \ No newline at end of file