Skip to content

Commit

Permalink
finish configuration: showStatus
Browse files Browse the repository at this point in the history
  • Loading branch information
hangxingliu committed Sep 5, 2017
1 parent 4cb39d0 commit 81d471d
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 19 deletions.
2 changes: 1 addition & 1 deletion TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
- Maybe it will cause wrong project tracking data.
- [ ] Add lines count and character count tracking.(How many lines you modify and how many characters you modify)
- [ ] Add VCS(git) information tracking
- [ ] Add config about show/hide status bar icon
- [x] Add config about show/hide status bar icon
- [x] Add config item about inactivity time
5 changes: 4 additions & 1 deletion extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ let vscode = require('vscode'),
ext = require('./lib/VSCodeHelper'),
uploader = require('./lib/Uploader'),
log = require('./lib/Log'),
statusBar = require('./lib/StatusBarManager'),
localServer = require('./lib/LocalServer'),
UploadObjectGenerator = require('./lib/UploadObjectGenerator');

Expand Down Expand Up @@ -161,7 +162,8 @@ function updateConfigurations() {
uploadToken = String(configurations.get('uploadToken')),
uploadURL = String(configurations.get('serverURL')),
computerId = String(configurations.get('computerId')),
mtt = parseInt(configurations.get('moreThinkingTime'));
mtt = parseInt(configurations.get('moreThinkingTime')),
enableStatusBar = configurations.get('showStatus');

// fixed wrong more thinking time configuration value
if (isNaN(mtt)) mtt = 0;
Expand All @@ -172,6 +174,7 @@ function updateConfigurations() {
uploader.set(uploadURL, uploadToken);
uploadObjectGenerator.setComputerId(computerId || `unknown-${require('os').platform()}`);
localServer.updateConfig();
statusBar.init(enableStatusBar);
}

function activate(context) {
Expand Down
38 changes: 24 additions & 14 deletions lib/StatusBarManager.js
Original file line number Diff line number Diff line change
@@ -1,53 +1,63 @@
var vscode = require("vscode");
let vscode = require("vscode");

const MAIN_TITLE = 'CodingTracker';

var statusBarItem;// = vscode.window.createStatusBarItem();
var uploadQueue = [],
let statusBarItem;// = vscode.window.createStatusBarItem();
let uploadQueue = [],
bindUploadQueueArray = Q => uploadQueue = Q;

var isLocalServerOn = false,
let isLocalServerOn = undefined,
mainStatus = '';

function init() {
if (statusBarItem) statusBarItem.dispose();
statusBarItem = vscode.window.createStatusBarItem();
isLocalServerOn = false;
function init(enable = true) {
if (statusBarItem && !enable) {
statusBarItem.dispose();
statusBarItem = null;
}

if(!statusBarItem && enable)
statusBarItem = vscode.window.createStatusBarItem();

if(typeof isLocalServerOn == 'undefined')
isLocalServerOn = false;
mainStatus = '';
_updateText();
_updateTooltip();
}

var hasInit = () => !!statusBarItem,
setStatus2Uploading = () => _update(mainStatus = 'Uploading...'),
let setStatus2Uploading = () => _update(mainStatus = 'Uploading...'),
setStatus2Uploaded = desc => _update(mainStatus = desc || 'Uploaded'),
setStatus2GotNew1 = () => _update(mainStatus = '+1'),
setStatus2Nothing = () => _update(mainStatus = null);

var setLocalServerOn = () => (isLocalServerOn = true, _update()),
let setLocalServerOn = () => (isLocalServerOn = true, _update()),
setLocalServerOff = () => (isLocalServerOn = false, _update());

function _update() {
if (!statusBarItem) return;
_updateText();
_updateTooltip();
}
function _updateText() {
var text = `$(dashboard) ${mainStatus || MAIN_TITLE}`;
if (!statusBarItem) return;

let text = `$(dashboard) ${mainStatus || MAIN_TITLE}`;
if (isLocalServerOn) text += ' $(database) Local';
text += uploadQueue.length ? ('$(chevron-left) ' + uploadQueue.length) : '';
statusBarItem.text = text;
statusBarItem.show();
}
function _updateTooltip() {
var qLen = uploadQueue.length;
if (!statusBarItem) return;

let qLen = uploadQueue.length;
statusBarItem.tooltip = `${MAIN_TITLE} ${isLocalServerOn ? ' - local server is running' : ''}` +
(qLen ? `(${qLen} ${qLen > 1 ? 'records are' : 'record is'} waiting upload!)` : '');
statusBarItem.show();
}

module.exports = {
init,
hasInit,
bindUploadQueueArray,
setStatus2Uploading,
setStatus2Uploaded,
Expand Down
3 changes: 0 additions & 3 deletions lib/Uploader.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,8 @@ var Q = [],
hadShowError = 0,
retryTime = 0;

var constStatusBarText = 'CodingTracker';

var uploader = {
init: function (context) {
statusBar.hasInit() || statusBar.init();
statusBar.bindUploadQueueArray(Q);
},
set: function (url, token) {
Expand Down

0 comments on commit 81d471d

Please sign in to comment.