rubyneat_dashboard 0.4.0.alpha.4.pre.1 → 0.4.0.alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.semver +1 -1
- data/Gemfile +3 -2
- data/Gemfile.lock +36 -0
- data/README.rdoc +32 -2
- data/app/css/dashboard/linechart.sass +1 -1
- data/app/images/population_sprite.050.png +0 -0
- data/app/images/population_sprite.100.png +0 -0
- data/app/images/population_sprite.200.png +0 -0
- data/app/images/population_sprite.svg +7088 -0
- data/app/images/rubyneat_icon.svg +1357 -0
- data/app/js/dashboard/controllers/population_controller.coffee +8 -5
- data/app/js/dashboard/directives/critter_genotype_topology.coffee +1 -1
- data/app/js/dashboard/directives/critter_ice.coffee +5 -0
- data/app/js/dashboard/directives/critter_phenotype_topology.coffee +1 -1
- data/app/js/dashboard/directives/critter_sandbox.coffee +5 -0
- data/app/js/dashboard/directives/population_brigade.coffee +65 -0
- data/app/js/dashboard/directives/population_progress_chart.coffee +4 -3
- data/app/js/dashboard/directives/population_window.coffee +5 -0
- data/app/js/dashboard/services/population_service.coffee +15 -0
- data/lib/rubyneat_dashboard.rb +4 -3
- data/rubyneat_dashboard.gemspec +21 -6
- data/views/overview.haml +31 -6
- data/views/population/home.haml +8 -26
- metadata +42 -5
@@ -1,14 +1,17 @@
|
|
1
|
-
@PopulationController = ($scope,
|
1
|
+
@PopulationController = ($scope, $timeout, populationHistoryService) ->
|
2
2
|
$scope.init = ->
|
3
3
|
$scope.entry = {}
|
4
|
-
|
5
|
-
|
6
|
-
$scope.$apply ->
|
4
|
+
populationHistoryService.getMessages (message) ->
|
5
|
+
$timeout ->
|
7
6
|
p = message.payload
|
7
|
+
|
8
8
|
$scope.entry = {
|
9
9
|
generation: p.generation
|
10
|
+
pop_name: p.pop_name
|
10
11
|
best: p.fitness.best
|
12
|
+
best_name: p.fitness.best_name
|
11
13
|
overall: p.fitness.overall
|
12
14
|
worst: p.fitness.worst
|
15
|
+
worst_name: p.fitness.worst_name
|
13
16
|
}
|
14
|
-
|
17
|
+
, 0, true
|
@@ -0,0 +1,65 @@
|
|
1
|
+
@DashboardApp.directive 'populationBrigade', ->
|
2
|
+
link: (scope, el, attr) ->
|
3
|
+
# link code begin
|
4
|
+
margin =
|
5
|
+
top: 5
|
6
|
+
right: 10
|
7
|
+
bottom: 5
|
8
|
+
left: 10
|
9
|
+
|
10
|
+
box =
|
11
|
+
height: h = scope.height || 160
|
12
|
+
width: w = scope.width || 900
|
13
|
+
inner_height: h - margin.top - margin.bottom
|
14
|
+
inner_width: w - margin.right - margin.left
|
15
|
+
|
16
|
+
|
17
|
+
config =
|
18
|
+
numOfPops: scope.numberOfPops || 10
|
19
|
+
|
20
|
+
icon =
|
21
|
+
uri: "/images/population_sprite.050.png"
|
22
|
+
width: 50
|
23
|
+
height: 148
|
24
|
+
bottom: 10
|
25
|
+
|
26
|
+
range =
|
27
|
+
x: d3.scale.linear().range([ box.width, 0]).domain([0, config.numOfPops])
|
28
|
+
y: d3.scale.linear().range([ box.height, 0 ])
|
29
|
+
|
30
|
+
svg = d3.select(el[0]).append('svg')
|
31
|
+
.attr('width', box.width).attr('height', box.height)
|
32
|
+
.append('g')
|
33
|
+
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
|
34
|
+
|
35
|
+
popboxes = []
|
36
|
+
|
37
|
+
update_brigade = (tick) ->
|
38
|
+
console.log tick
|
39
|
+
|
40
|
+
new_popbox = (i, name) ->
|
41
|
+
g = svg.append("g")
|
42
|
+
.attr("transform", "translate(#{range.x(i)}, #{0})")
|
43
|
+
|
44
|
+
g.append("image")
|
45
|
+
.attr("xlink:href", icon.uri)
|
46
|
+
.attr("width", icon.width)
|
47
|
+
.attr("height", icon.height)
|
48
|
+
g.append("text").text(name)
|
49
|
+
.attr("transform", "translate(#{icon.width / 2}, #{icon.height - icon.bottom}) rotate(-90)")
|
50
|
+
g
|
51
|
+
|
52
|
+
popboxes.push new_popbox(0, "many")
|
53
|
+
popboxes.push new_popbox(1, "moe")
|
54
|
+
popboxes.push new_popbox(2, "jack")
|
55
|
+
|
56
|
+
scope.$watch 'tickSource', (tick) ->
|
57
|
+
update_brigade tick
|
58
|
+
|
59
|
+
# link code end
|
60
|
+
restrict: "E"
|
61
|
+
scope:
|
62
|
+
width: '='
|
63
|
+
height: '='
|
64
|
+
tickSource: '='
|
65
|
+
numberOfPops: '='
|
@@ -7,6 +7,7 @@
|
|
7
7
|
basis = scope.basis || 'generation'
|
8
8
|
xname = scope.xaxisName || '**Generations**'
|
9
9
|
yname = scope.yaxisName || '**Fitness**'
|
10
|
+
data = scope.data || []
|
10
11
|
|
11
12
|
margin =
|
12
13
|
top: 20
|
@@ -64,8 +65,8 @@
|
|
64
65
|
scope.fitness
|
65
66
|
|
66
67
|
update_domains = (fitness) ->
|
67
|
-
x.domain d3.extent
|
68
|
-
d
|
68
|
+
x.domain d3.extent fitness[labels[0]].values, (d) ->
|
69
|
+
d.gen
|
69
70
|
|
70
71
|
y.domain [ d3.min(labels, (c) ->
|
71
72
|
d3.min fitness[c].values, (v) ->
|
@@ -155,7 +156,7 @@
|
|
155
156
|
render_tick(tick) if tick.generation
|
156
157
|
, true
|
157
158
|
|
158
|
-
datamessage
|
159
|
+
datamessage data
|
159
160
|
|
160
161
|
link: link
|
161
162
|
restrict: 'E'
|
@@ -1,5 +1,20 @@
|
|
1
1
|
@DashboardApp.factory 'populationService', () ->
|
2
2
|
source = new EventSource('/population')
|
3
|
+
receivers = []
|
3
4
|
getMessages: (receiver) ->
|
5
|
+
receivers.push receiver
|
4
6
|
source.onmessage = (event) ->
|
7
|
+
receivers.forEach (receiver) ->
|
5
8
|
receiver(JSON.parse(event.data))
|
9
|
+
|
10
|
+
@DashboardApp.factory 'populationHistoryService', (populationService) ->
|
11
|
+
history = []
|
12
|
+
populationService.getMessages (message) ->
|
13
|
+
history.push message
|
14
|
+
|
15
|
+
getMessages: (receiver) ->
|
16
|
+
history.forEach (message) ->
|
17
|
+
receiver(message)
|
18
|
+
populationService.getMessages (message) ->
|
19
|
+
receiver(message)
|
20
|
+
|
data/lib/rubyneat_dashboard.rb
CHANGED
@@ -27,14 +27,15 @@ module Dashboard
|
|
27
27
|
register BowerDSL
|
28
28
|
|
29
29
|
configure do
|
30
|
-
set port: 3912
|
30
|
+
set port: 3912 #TODO: Make this configurable from the DSL
|
31
31
|
set static: true
|
32
|
-
set :bind, '0.0.0.0' #
|
32
|
+
set :bind, '0.0.0.0' #TODO: Make this configurable from the DSL
|
33
33
|
use Rack::CommonLogger, $log = ::Logger.new(::File.new('log/dashboard.log', 'a+'))
|
34
34
|
$log.debug "Started Dashboard at #{Time.now}"
|
35
35
|
Barista.add_preamble do |location|
|
36
36
|
%{
|
37
|
-
/*
|
37
|
+
/* RubyNEAT Dashboard Generated -- compiled from #{location}
|
38
|
+
* DO NOT MODIFY
|
38
39
|
*/
|
39
40
|
}
|
40
41
|
end
|
data/rubyneat_dashboard.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: rubyneat_dashboard 0.4.0.alpha.
|
5
|
+
# stub: rubyneat_dashboard 0.4.0.alpha.6 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "rubyneat_dashboard"
|
9
|
-
s.version = "0.4.0.alpha.
|
9
|
+
s.version = "0.4.0.alpha.6"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Fred Mitchell"]
|
14
|
-
s.date = "2014-08-
|
14
|
+
s.date = "2014-08-09"
|
15
15
|
s.description = "\n A web-based Dashboard for your RubyNEAT development,\n http://localhost:3912\n "
|
16
16
|
s.email = "lordalveric@yahoo.com"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -39,6 +39,11 @@ Gem::Specification.new do |s|
|
|
39
39
|
"app/css/vendor/normalize.css",
|
40
40
|
"app/images/RubyNEAT_Dashboard_logo_full.xcf",
|
41
41
|
"app/images/logo.png",
|
42
|
+
"app/images/population_sprite.050.png",
|
43
|
+
"app/images/population_sprite.100.png",
|
44
|
+
"app/images/population_sprite.200.png",
|
45
|
+
"app/images/population_sprite.svg",
|
46
|
+
"app/images/rubyneat_icon.svg",
|
42
47
|
"app/js/dashboard.coffee",
|
43
48
|
"app/js/dashboard/controllers/critters_controller.coffee",
|
44
49
|
"app/js/dashboard/controllers/dashboard_controller.coffee",
|
@@ -46,9 +51,13 @@ Gem::Specification.new do |s|
|
|
46
51
|
"app/js/dashboard/controllers/overview_controller.coffee",
|
47
52
|
"app/js/dashboard/controllers/population_controller.coffee",
|
48
53
|
"app/js/dashboard/directives/critter_genotype_topology.coffee",
|
54
|
+
"app/js/dashboard/directives/critter_ice.coffee",
|
49
55
|
"app/js/dashboard/directives/critter_phenotype_topology.coffee",
|
56
|
+
"app/js/dashboard/directives/critter_sandbox.coffee",
|
50
57
|
"app/js/dashboard/directives/pie.coffee",
|
58
|
+
"app/js/dashboard/directives/population_brigade.coffee",
|
51
59
|
"app/js/dashboard/directives/population_progress_chart.coffee",
|
60
|
+
"app/js/dashboard/directives/population_window.coffee",
|
52
61
|
"app/js/dashboard/services/population_service.coffee",
|
53
62
|
"bower_components/angular-animate.css/.bower.json",
|
54
63
|
"bower_components/angular-animate.css/README.md",
|
@@ -1278,6 +1287,8 @@ Gem::Specification.new do |s|
|
|
1278
1287
|
|
1279
1288
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
1280
1289
|
s.add_runtime_dependency(%q<sinatra>, ["~> 1"])
|
1290
|
+
s.add_runtime_dependency(%q<sinatra-assetpack>, [">= 0"])
|
1291
|
+
s.add_runtime_dependency(%q<sinatra-contrib>, [">= 0"])
|
1281
1292
|
s.add_runtime_dependency(%q<thin>, [">= 0"])
|
1282
1293
|
s.add_runtime_dependency(%q<haml>, ["~> 4"])
|
1283
1294
|
s.add_runtime_dependency(%q<sass>, ["~> 3"])
|
@@ -1285,9 +1296,9 @@ Gem::Specification.new do |s|
|
|
1285
1296
|
s.add_runtime_dependency(%q<json-stream>, ["~> 0"])
|
1286
1297
|
s.add_runtime_dependency(%q<compass>, [">= 0"])
|
1287
1298
|
s.add_runtime_dependency(%q<barista>, [">= 0"])
|
1288
|
-
s.add_runtime_dependency(%q<sinatra-assetpack>, [">= 0"])
|
1289
1299
|
s.add_runtime_dependency(%q<eventmachine>, [">= 0"])
|
1290
1300
|
s.add_runtime_dependency(%q<queue_ding>, [">= 0"])
|
1301
|
+
s.add_runtime_dependency(%q<rubyneat>, [">= 0"])
|
1291
1302
|
s.add_development_dependency(%q<rspec>, ["~> 2"])
|
1292
1303
|
s.add_development_dependency(%q<yard>, ["~> 0"])
|
1293
1304
|
s.add_development_dependency(%q<rdoc>, ["~> 3"])
|
@@ -1297,6 +1308,8 @@ Gem::Specification.new do |s|
|
|
1297
1308
|
s.add_development_dependency(%q<semver>, ["~> 1"])
|
1298
1309
|
else
|
1299
1310
|
s.add_dependency(%q<sinatra>, ["~> 1"])
|
1311
|
+
s.add_dependency(%q<sinatra-assetpack>, [">= 0"])
|
1312
|
+
s.add_dependency(%q<sinatra-contrib>, [">= 0"])
|
1300
1313
|
s.add_dependency(%q<thin>, [">= 0"])
|
1301
1314
|
s.add_dependency(%q<haml>, ["~> 4"])
|
1302
1315
|
s.add_dependency(%q<sass>, ["~> 3"])
|
@@ -1304,9 +1317,9 @@ Gem::Specification.new do |s|
|
|
1304
1317
|
s.add_dependency(%q<json-stream>, ["~> 0"])
|
1305
1318
|
s.add_dependency(%q<compass>, [">= 0"])
|
1306
1319
|
s.add_dependency(%q<barista>, [">= 0"])
|
1307
|
-
s.add_dependency(%q<sinatra-assetpack>, [">= 0"])
|
1308
1320
|
s.add_dependency(%q<eventmachine>, [">= 0"])
|
1309
1321
|
s.add_dependency(%q<queue_ding>, [">= 0"])
|
1322
|
+
s.add_dependency(%q<rubyneat>, [">= 0"])
|
1310
1323
|
s.add_dependency(%q<rspec>, ["~> 2"])
|
1311
1324
|
s.add_dependency(%q<yard>, ["~> 0"])
|
1312
1325
|
s.add_dependency(%q<rdoc>, ["~> 3"])
|
@@ -1317,6 +1330,8 @@ Gem::Specification.new do |s|
|
|
1317
1330
|
end
|
1318
1331
|
else
|
1319
1332
|
s.add_dependency(%q<sinatra>, ["~> 1"])
|
1333
|
+
s.add_dependency(%q<sinatra-assetpack>, [">= 0"])
|
1334
|
+
s.add_dependency(%q<sinatra-contrib>, [">= 0"])
|
1320
1335
|
s.add_dependency(%q<thin>, [">= 0"])
|
1321
1336
|
s.add_dependency(%q<haml>, ["~> 4"])
|
1322
1337
|
s.add_dependency(%q<sass>, ["~> 3"])
|
@@ -1324,9 +1339,9 @@ Gem::Specification.new do |s|
|
|
1324
1339
|
s.add_dependency(%q<json-stream>, ["~> 0"])
|
1325
1340
|
s.add_dependency(%q<compass>, [">= 0"])
|
1326
1341
|
s.add_dependency(%q<barista>, [">= 0"])
|
1327
|
-
s.add_dependency(%q<sinatra-assetpack>, [">= 0"])
|
1328
1342
|
s.add_dependency(%q<eventmachine>, [">= 0"])
|
1329
1343
|
s.add_dependency(%q<queue_ding>, [">= 0"])
|
1344
|
+
s.add_dependency(%q<rubyneat>, [">= 0"])
|
1330
1345
|
s.add_dependency(%q<rspec>, ["~> 2"])
|
1331
1346
|
s.add_dependency(%q<yard>, ["~> 0"])
|
1332
1347
|
s.add_dependency(%q<rdoc>, ["~> 3"])
|
data/views/overview.haml
CHANGED
@@ -1,6 +1,31 @@
|
|
1
|
-
%
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
%h3 Population Progress Overview
|
2
|
+
.pop(ng-controller = 'PopulationController' ng-init = "init()")
|
3
|
+
.charting
|
4
|
+
%population-progress-chart(labels = "['best', 'worst', 'overall']"
|
5
|
+
basis = "'generation'"
|
6
|
+
width = "900"
|
7
|
+
height = "400"
|
8
|
+
xaxis-name = "Generation"
|
9
|
+
yaxis-name = "Fitness"
|
10
|
+
tick-source = "entry"
|
11
|
+
)
|
12
|
+
.current
|
13
|
+
%h3 Realtime Status
|
14
|
+
.realtime
|
15
|
+
%table
|
16
|
+
%tr
|
17
|
+
%td generation
|
18
|
+
%td {{ entry.generation | number:0 }}
|
19
|
+
%td {{ entry.pop_name }}
|
20
|
+
%tr
|
21
|
+
%td best
|
22
|
+
%td {{ entry.best | number:4 }}
|
23
|
+
%td {{ entry.best_name }}
|
24
|
+
%tr
|
25
|
+
%td worst
|
26
|
+
%td {{ entry.worst | number:4 }}
|
27
|
+
%td {{ entry.worst_name }}
|
28
|
+
%tr
|
29
|
+
%td overall
|
30
|
+
%td {{ entry.overall | number:4 }}
|
31
|
+
%td
|
data/views/population/home.haml
CHANGED
@@ -1,28 +1,10 @@
|
|
1
|
-
%
|
1
|
+
%h3 Population Drilldown
|
2
2
|
.pop(ng-controller = 'PopulationController' ng-init = "init()")
|
3
|
-
.
|
4
|
-
%population-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
xaxis-name = "Generation"
|
9
|
-
yaxis-name = "Fitness"
|
10
|
-
data = "entries"
|
11
|
-
tick-source = "entry"
|
12
|
-
)
|
13
|
-
.current
|
14
|
-
%h2 Realtime Status
|
15
|
-
%table
|
16
|
-
%tr
|
17
|
-
%td generation
|
18
|
-
%td {{ entry.generation }}
|
19
|
-
%tr
|
20
|
-
%td best
|
21
|
-
%td {{ entry.best }}
|
22
|
-
%tr
|
23
|
-
%td worst
|
24
|
-
%td {{ entry.worst }}
|
25
|
-
%tr
|
26
|
-
%td overall
|
27
|
-
%td {{ entry.overall }}
|
3
|
+
.pop-brigade
|
4
|
+
%population-brigade(tick-source = "entry" number-of-pops = "20")
|
5
|
+
Wheeeee!
|
6
|
+
.pop-window
|
7
|
+
%population-window()
|
28
8
|
|
9
|
+
.pop-sandbox
|
10
|
+
%critterSandbox()
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyneat_dashboard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.0.alpha.
|
4
|
+
version: 0.4.0.alpha.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Mitchell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sinatra-assetpack
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sinatra-contrib
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: thin
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,7 +151,7 @@ dependencies:
|
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: '0'
|
125
153
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
154
|
+
name: eventmachine
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
157
|
- - ">="
|
@@ -137,7 +165,7 @@ dependencies:
|
|
137
165
|
- !ruby/object:Gem::Version
|
138
166
|
version: '0'
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
168
|
+
name: queue_ding
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
142
170
|
requirements:
|
143
171
|
- - ">="
|
@@ -151,7 +179,7 @@ dependencies:
|
|
151
179
|
- !ruby/object:Gem::Version
|
152
180
|
version: '0'
|
153
181
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
182
|
+
name: rubyneat
|
155
183
|
requirement: !ruby/object:Gem::Requirement
|
156
184
|
requirements:
|
157
185
|
- - ">="
|
@@ -291,6 +319,11 @@ files:
|
|
291
319
|
- app/css/vendor/normalize.css
|
292
320
|
- app/images/RubyNEAT_Dashboard_logo_full.xcf
|
293
321
|
- app/images/logo.png
|
322
|
+
- app/images/population_sprite.050.png
|
323
|
+
- app/images/population_sprite.100.png
|
324
|
+
- app/images/population_sprite.200.png
|
325
|
+
- app/images/population_sprite.svg
|
326
|
+
- app/images/rubyneat_icon.svg
|
294
327
|
- app/js/dashboard.coffee
|
295
328
|
- app/js/dashboard/controllers/critters_controller.coffee
|
296
329
|
- app/js/dashboard/controllers/dashboard_controller.coffee
|
@@ -298,9 +331,13 @@ files:
|
|
298
331
|
- app/js/dashboard/controllers/overview_controller.coffee
|
299
332
|
- app/js/dashboard/controllers/population_controller.coffee
|
300
333
|
- app/js/dashboard/directives/critter_genotype_topology.coffee
|
334
|
+
- app/js/dashboard/directives/critter_ice.coffee
|
301
335
|
- app/js/dashboard/directives/critter_phenotype_topology.coffee
|
336
|
+
- app/js/dashboard/directives/critter_sandbox.coffee
|
302
337
|
- app/js/dashboard/directives/pie.coffee
|
338
|
+
- app/js/dashboard/directives/population_brigade.coffee
|
303
339
|
- app/js/dashboard/directives/population_progress_chart.coffee
|
340
|
+
- app/js/dashboard/directives/population_window.coffee
|
304
341
|
- app/js/dashboard/services/population_service.coffee
|
305
342
|
- bower_components/angular-animate.css/.bower.json
|
306
343
|
- bower_components/angular-animate.css/README.md
|