From 34c570bed5f64d98011007f7b52bdb0dc2fbd2ea Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 7 Feb 2013 19:49:21 -0800 Subject: [PATCH] Modernize editor-stats package with package.cson --- src/packages/editor-stats/index.coffee | 16 ---------- .../{src => lib}/editor-stats-view.coffee | 16 +++++----- .../editor-stats/lib/editor-stats.coffee | 19 +++++++++++ .../stats.coffee => lib/stats-tracker.coffee} | 5 ++- src/packages/editor-stats/package.cson | 1 + .../spec/editor-stats-spec.coffee | 9 ++---- .../editor-stats/src/stats-tracker.coffee | 32 +++++++++++++++++++ 7 files changed, 67 insertions(+), 31 deletions(-) delete mode 100644 src/packages/editor-stats/index.coffee rename src/packages/editor-stats/{src => lib}/editor-stats-view.coffee (91%) create mode 100644 src/packages/editor-stats/lib/editor-stats.coffee rename src/packages/editor-stats/{src/stats.coffee => lib/stats-tracker.coffee} (85%) create mode 100644 src/packages/editor-stats/package.cson create mode 100644 src/packages/editor-stats/src/stats-tracker.coffee diff --git a/src/packages/editor-stats/index.coffee b/src/packages/editor-stats/index.coffee deleted file mode 100644 index e743c0f18..000000000 --- a/src/packages/editor-stats/index.coffee +++ /dev/null @@ -1,16 +0,0 @@ -DeferredAtomPackage = require 'deferred-atom-package' -Stats = require './src/stats' - -module.exports = -class EditorStats extends DeferredAtomPackage - loadEvents: ['editor-stats:toggle'] - instanceClass: 'editor-stats/src/editor-stats-view' - stats: new Stats - - activate: (rootView) -> - super - - rootView.on 'keydown', => @stats.track() - rootView.on 'mouseup', => @stats.track() - - onLoadEvent: (event, instance) -> instance.toggle(@stats) diff --git a/src/packages/editor-stats/src/editor-stats-view.coffee b/src/packages/editor-stats/lib/editor-stats-view.coffee similarity index 91% rename from src/packages/editor-stats/src/editor-stats-view.coffee rename to src/packages/editor-stats/lib/editor-stats-view.coffee index aea6ca303..c86ab18d8 100644 --- a/src/packages/editor-stats/src/editor-stats-view.coffee +++ b/src/packages/editor-stats/lib/editor-stats-view.coffee @@ -5,10 +5,10 @@ $ = require 'jquery' module.exports = class EditorStatsView extends ScrollView - @activate: (rootView, state) -> - @instance = new EditorStatsView(rootView) + @activate: -> + new EditorStatsView - @content: (rootView) -> + @content: -> @div class: 'editor-stats-wrapper', tabindex: -1, => @div class: 'editor-stats', outlet: 'editorStats' @@ -17,7 +17,7 @@ class EditorStatsView extends ScrollView pb: 3 pr: 25 - initialize: (@rootView) -> + initialize: -> super resizer = => @@ -30,7 +30,7 @@ class EditorStatsView extends ScrollView @editorStats.empty() @x ?= d3.scale.ordinal().domain d3.range(@stats.hours * 60) @y ?= d3.scale.linear() - w = @rootView.vertical.width() + w = rootView.vertical.width() h = @height() data = d3.entries @stats.eventLog max = d3.max data, (d) -> d.value @@ -94,10 +94,10 @@ class EditorStatsView extends ScrollView @attach() attach: -> - @rootView.vertical.append(@) + rootView.vertical.append(this) @draw() detach: -> - super() + super clearInterval(@updateInterval) - @rootView.focus() + rootView.focus() diff --git a/src/packages/editor-stats/lib/editor-stats.coffee b/src/packages/editor-stats/lib/editor-stats.coffee new file mode 100644 index 000000000..bdfdaa6b1 --- /dev/null +++ b/src/packages/editor-stats/lib/editor-stats.coffee @@ -0,0 +1,19 @@ +StatsTracker = require './stats-tracker' + +module.exports = + stats: null + editorStatsView: null + + activate: -> + @stats = new StatsTracker() + rootView.command 'editor-stats:toggle', => @createView().toggle(@stats) + + deactivate: -> + @editorStatsView = null + @stats = null + + createView: -> + unless @editorStatsView + EditorStatsView = require 'editor-stats/lib/editor-stats-view' + @editorStatsView = new EditorStatsView() + @editorStatsView diff --git a/src/packages/editor-stats/src/stats.coffee b/src/packages/editor-stats/lib/stats-tracker.coffee similarity index 85% rename from src/packages/editor-stats/src/stats.coffee rename to src/packages/editor-stats/lib/stats-tracker.coffee index 5e9c6700d..d7cc8d1d8 100644 --- a/src/packages/editor-stats/src/stats.coffee +++ b/src/packages/editor-stats/lib/stats-tracker.coffee @@ -1,5 +1,5 @@ module.exports = -class Stats +class StatsTracker startDate: new Date hours: 6 eventLog: [] @@ -12,6 +12,9 @@ class Stats while date < future @eventLog[@time(date)] = 0 + rootView.on 'keydown', => @track() + rootView.on 'mouseup', => @track() + clear: -> @eventLog = [] diff --git a/src/packages/editor-stats/package.cson b/src/packages/editor-stats/package.cson new file mode 100644 index 000000000..258a141f9 --- /dev/null +++ b/src/packages/editor-stats/package.cson @@ -0,0 +1 @@ +'main': 'lib/editor-stats' diff --git a/src/packages/editor-stats/spec/editor-stats-spec.coffee b/src/packages/editor-stats/spec/editor-stats-spec.coffee index ca274a252..0ba0b2032 100644 --- a/src/packages/editor-stats/spec/editor-stats-spec.coffee +++ b/src/packages/editor-stats/spec/editor-stats-spec.coffee @@ -1,9 +1,9 @@ $ = require 'jquery' RootView = require 'root-view' -EditorStats = require 'editor-stats/src/editor-stats-view' +EditorStats = require 'editor-stats/lib/editor-stats-view' describe "EditorStats", -> - [rootView, editorStats, time] = [] + [editorStats, time] = [] simulateKeyUp = (key) -> e = $.Event "keydown", keyCode: key.charCodeAt(0) @@ -23,10 +23,7 @@ describe "EditorStats", -> mins = if mins == 60 then '01' else mins + 1 time = "#{hours}:#{mins}" - editorStatsPackage = atom.loadPackage('editor-stats') - editorStatsPackage.getInstance() - editorStats = editorStatsPackage.stats - editorStats.clear() + editorStats = atom.loadPackage('editor-stats').packageMain.stats afterEach -> rootView.deactivate() diff --git a/src/packages/editor-stats/src/stats-tracker.coffee b/src/packages/editor-stats/src/stats-tracker.coffee new file mode 100644 index 000000000..d7cc8d1d8 --- /dev/null +++ b/src/packages/editor-stats/src/stats-tracker.coffee @@ -0,0 +1,32 @@ +module.exports = +class StatsTracker + startDate: new Date + hours: 6 + eventLog: [] + + constructor: -> + date = new Date(@startDate) + future = new Date(date.getTime() + (36e5 * @hours)) + @eventLog[@time(date)] = 0 + + while date < future + @eventLog[@time(date)] = 0 + + rootView.on 'keydown', => @track() + rootView.on 'mouseup', => @track() + + clear: -> + @eventLog = [] + + track: -> + date = new Date + times = @time date + @eventLog[times] ?= 0 + @eventLog[times] += 1 + @eventLog.shift() if @eventLog.length > (@hours * 60) + + time: (date) -> + date.setTime(date.getTime() + 6e4) + hour = date.getHours() + minute = date.getMinutes() + "#{hour}:#{minute}"