This commit is contained in:
Valentin Ivanov 2018-04-27 13:49:52 -04:00 committed by Juha Ristolainen
parent 2343164b29
commit e8421926dc
5 changed files with 48 additions and 32 deletions

View File

@ -4,19 +4,16 @@
--color-primary: #E3C23D; --color-primary: #E3C23D;
--color-secondary: #5D5535; --color-secondary: #5D5535;
--color-bar-background: #303030; --color-bar-background: #303030;
} --color-bar-border: #424242;
.vscode-dark1 {
--color-language: #ddca7e;
--color-primary: #dcc97e;
--color-secondary: #318245;
--color-bar-background: #303030;
} }
/* Light theme color palette */ /* Light theme color palette */
.vscode-light { .vscode-light {
--color-language: blue; --color-language: #1B2334;
--color-primary: #00ca7e; --color-primary: #5D78B3;
--color-secondary: #354567;
--color-bar-background: #939DB3;
--color-bar-border: #697080;
} }
.profile { .profile {
@ -43,13 +40,11 @@ sup {
.language-progress .tooltiptext { .language-progress .tooltiptext {
visibility: hidden; visibility: hidden;
width: 120px; width: 120px;
background-color: var(--color-primary); background-color: var(--color-bar-border);
color: black; color: var(--color-language);
text-align: center; text-align: center;
border-radius: 6px; border-radius: 6px;
padding: 5px 0; padding: 5px 0;
/* Position the tooltip */
position: absolute; position: absolute;
z-index: 1; z-index: 1;
} }
@ -112,9 +107,7 @@ circle.oldxp {
background-color: var(--color-bar-background); background-color: var(--color-bar-background);
border-radius: 4px; border-radius: 4px;
border: solid 1px; border: solid 1px;
border-color: #424242; border-color: var(--color-bar-border);
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
} }
.progress-bar { .progress-bar {
@ -124,10 +117,7 @@ circle.oldxp {
font-size: 12px; font-size: 12px;
line-height: 20px; line-height: 20px;
text-align: center; text-align: center;
background-color: var(--color-secondary); background-color: var(--color-secondary);
-webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
} }
.progress-bar-new { .progress-bar-new {

View File

@ -19,7 +19,7 @@
<span class="tooltiptext"> <span class="tooltiptext">
<strong><%=languages[l].xp %> xp</strong> <strong><%=languages[l].xp %> xp</strong>
<% if( languages[l].new_xp > 0 ) { %> <% if( languages[l].new_xp > 0 ) { %>
<sup style="color:black">+<%= languages[l].new_xp %></sup> <sup>+<%= languages[l].new_xp %></sup>
<% } %> <% } %>
</span> </span>
<svg viewBox="0 0 100 100"> <svg viewBox="0 0 100 100">

View File

@ -10,6 +10,11 @@ export class CodeStatsAPI {
private axios = null; private axios = null;
constructor(apiKey: string, apiURL: string, userName: string) { constructor(apiKey: string, apiURL: string, userName: string) {
this.updateSettings(apiKey, apiURL, userName);
}
public updateSettings( apiKey: string, apiURL: string, userName: string) {
this.API_KEY = apiKey; this.API_KEY = apiKey;
this.UPDATE_URL = apiURL; this.UPDATE_URL = apiURL;
this.USER_NAME = userName; this.USER_NAME = userName;
@ -71,6 +76,7 @@ export class CodeStatsAPI {
}) })
.catch(error => { .catch(error => {
console.log(error); console.log(error);
return null;
}); });
} }
} }

View File

@ -18,6 +18,9 @@ export class ProfileProvider implements TextDocumentContentProvider {
provideTextDocumentContent(uri: Uri, token: CancellationToken): string | Thenable<string> { provideTextDocumentContent(uri: Uri, token: CancellationToken): string | Thenable<string> {
if( token.isCancellationRequested )
return;
const LEVEL_FACTOR = 0.025; const LEVEL_FACTOR = 0.025;
function getLevel(xp: number): number { function getLevel(xp: number): number {
@ -66,6 +69,11 @@ export class ProfileProvider implements TextDocumentContentProvider {
return this.api.getProfile().then(profile => { return this.api.getProfile().then(profile => {
if( profile === null )
{
return `<h1>Can't fetch profile. Please try again later</h1> Make sure <strong>codestats.username</strong> setting is set to correct user name.`;
}
let htmlTemplate = fs.readFileSync(this.context.asAbsolutePath("assets/profile.html.eex")); let htmlTemplate = fs.readFileSync(this.context.asAbsolutePath("assets/profile.html.eex"));
profile["level"] = getLevel(profile["total_xp"]); profile["level"] = getLevel(profile["total_xp"]);

View File

@ -51,17 +51,26 @@ export class XpCounter {
this.statusBarItem.command = "code-stats.profile"; this.statusBarItem.command = "code-stats.profile";
} }
let provider = new ProfileProvider(context, this.api); subscriptions.push(workspace.registerTextDocumentContentProvider('code-stats', new ProfileProvider(context, this.api)));
let registration = workspace.registerTextDocumentContentProvider('code-stats', provider);
subscriptions.push(registration);
let previewUri = Uri.parse('code-stats://profile')
subscriptions.push(commands.registerCommand("code-stats.profile", () => { subscriptions.push(commands.registerCommand("code-stats.profile", () => {
commands.executeCommand('vscode.previewHtml', previewUri, ViewColumn.Two, 'Code::Stats Profile');
} ) ); let config: WorkspaceConfiguration = workspace.getConfiguration(
"codestats"
);
if (!config) {
window.showErrorMessage('codestats.username configuration setting is missing');
return;
}
if( config.get("username") === '' ){
window.showErrorMessage('codestats.username configuration setting is missing');
return;
}
commands.executeCommand('vscode.previewHtml', Uri.parse('code-stats://profile'), ViewColumn.Two, 'Code::Stats Profile');
}));
workspace.onDidChangeTextDocument( workspace.onDidChangeTextDocument(
this.onTextDocumentChanged, this.onTextDocumentChanged,
@ -145,6 +154,9 @@ export class XpCounter {
` `
); );
this.api = new CodeStatsAPI(apiKey, apiURL, userName); if( this.api != null )
this.api.updateSettings(apiKey, apiURL, userName);
else
this.api = new CodeStatsAPI(apiKey,apiURL,userName);
} }
} }