furnace-xray 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +60 -0
- data/Rakefile +1 -0
- data/bin/furnace-xray +23 -0
- data/furnace-xray.gemspec +33 -0
- data/lib/furnace-xray.rb +1 -0
- data/lib/furnace-xray/app/app.rb +56 -0
- data/lib/furnace-xray/app/assets/images/chosen-sprite.png +0 -0
- data/lib/furnace-xray/app/assets/images/evil_martians_bw_logo.svg +3 -0
- data/lib/furnace-xray/app/assets/images/evil_martians_logo.svg +3 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-bg_diagonal-maze_20_6e4f1c_10x10.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-bg_diagonal-maze_40_000000_10x10.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-bg_fine-grain_10_eceadf_60x60.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-bg_fine-grain_10_f8f7f6_60x60.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-bg_fine-grain_15_eceadf_60x60.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-bg_fine-grain_15_f7f3de_60x60.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-bg_fine-grain_15_ffffff_60x60.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-bg_fine-grain_65_654b24_60x60.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-bg_fine-grain_68_b83400_60x60.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-icons_222222_256x240.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-icons_3572ac_256x240.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-icons_8c291d_256x240.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-icons_b83400_256x240.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-icons_fbdb93_256x240.png +0 -0
- data/lib/furnace-xray/app/assets/images/ui/ui-icons_ffffff_256x240.png +0 -0
- data/lib/furnace-xray/app/assets/javascripts/application.js.coffee +219 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/drawer.js.coffee +206 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/graph.js.coffee +26 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/input.js.coffee +134 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/input_state.js.coffee +8 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/map.js.coffee +45 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/nodes/argument.js.coffee +7 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/nodes/block.js.coffee +76 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/nodes/function.js.coffee +15 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/nodes/instruction.js.coffee +33 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/nodes/operand.js.coffee +21 -0
- data/lib/furnace-xray/app/assets/javascripts/lib/nodes/type.js.coffee +12 -0
- data/lib/furnace-xray/app/assets/javascripts/vendor/chosen.jquery.js +1090 -0
- data/lib/furnace-xray/app/assets/javascripts/vendor/d3.v3.js +7806 -0
- data/lib/furnace-xray/app/assets/javascripts/vendor/dagre.js +4053 -0
- data/lib/furnace-xray/app/assets/javascripts/vendor/hotkeys.jquery.js +106 -0
- data/lib/furnace-xray/app/assets/javascripts/vendor/jquery.js +9472 -0
- data/lib/furnace-xray/app/assets/javascripts/vendor/mustache.js +532 -0
- data/lib/furnace-xray/app/assets/javascripts/vendor/stacktrace-0.4.js +424 -0
- data/lib/furnace-xray/app/assets/javascripts/vendor/sugar-1.3.8.js +8615 -0
- data/lib/furnace-xray/app/assets/javascripts/vendor/ui.jquery.js +14850 -0
- data/lib/furnace-xray/app/assets/stylesheets/app.css.sass +199 -0
- data/lib/furnace-xray/app/assets/stylesheets/chosen.jquery.css +413 -0
- data/lib/furnace-xray/app/assets/stylesheets/elements.css.sass +31 -0
- data/lib/furnace-xray/app/assets/stylesheets/graph.css.sass +29 -0
- data/lib/furnace-xray/app/assets/stylesheets/ui.jquery.css +1174 -0
- data/lib/furnace-xray/app/public/fonts/iconic_stroke.afm +170 -0
- data/lib/furnace-xray/app/public/fonts/iconic_stroke.eot +0 -0
- data/lib/furnace-xray/app/public/fonts/iconic_stroke.otf +0 -0
- data/lib/furnace-xray/app/public/fonts/iconic_stroke.svg +553 -0
- data/lib/furnace-xray/app/public/fonts/iconic_stroke.ttf +0 -0
- data/lib/furnace-xray/app/public/fonts/iconic_stroke.woff +0 -0
- data/lib/furnace-xray/app/public/fonts/iconic_stroke_demo.html +1 -0
- data/lib/furnace-xray/app/views/index.haml +52 -0
- data/lib/furnace-xray/app/views/nodes/argument.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/block.jst.mustache +4 -0
- data/lib/furnace-xray/app/views/nodes/diff/added_line.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/diff/changed_line.jst.mustache +2 -0
- data/lib/furnace-xray/app/views/nodes/diff/removed_line.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/diff/unchanged_line.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/function.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/function_removed.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/instruction_typed.jst.mustache +3 -0
- data/lib/furnace-xray/app/views/nodes/instruction_void.jst.mustache +3 -0
- data/lib/furnace-xray/app/views/nodes/operand_argument.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/operand_basic_block.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/operand_constant.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/operand_constant_function.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/operand_instruction.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/type_constant.jst.mustache +1 -0
- data/lib/furnace-xray/app/views/nodes/type_parametric.jst.mustache +3 -0
- data/lib/furnace-xray/lib/jst_pages.rb +226 -0
- data/lib/furnace-xray/version.rb +5 -0
- data/sample.json +1 -0
- metadata +251 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Boris Staal
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
# Furnace X-Ray
|
2
|
+
|
3
|
+
Furnace X-Ray is a visualizer for transformations performed on Static Single
|
4
|
+
Assignment form in the [Furnace][] framework.
|
5
|
+
|
6
|
+
[Furnace]: http://github.com/whitequark/furnace
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
$ gem install furnace-xray
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
14
|
+
First, you need to enable instrumentation for the functions you want to
|
15
|
+
observe. Here is a sample snippet:
|
16
|
+
|
17
|
+
``` ruby
|
18
|
+
mod = SSA::Module.new
|
19
|
+
|
20
|
+
fun = SSA::Function.new('my-function')
|
21
|
+
|
22
|
+
# It is important to enable instrumentation before doing anything else
|
23
|
+
# with the function. Otherwise, the collected data will be invalid.
|
24
|
+
fun.instrumentaiton = SSA::EventStream.new
|
25
|
+
mod.add fun
|
26
|
+
|
27
|
+
# Optionally, notify the instrumentation engine that you have started
|
28
|
+
# a transformation.
|
29
|
+
fun.instrumentation.transform_start "Set return type"
|
30
|
+
|
31
|
+
# Now, do whatever you want with the function.
|
32
|
+
fun.return_type = SSA.void_type
|
33
|
+
|
34
|
+
# After you have finished transforming functions, fetch the instrumentation
|
35
|
+
# data and dump it as JSON.
|
36
|
+
File.write("data.json", JSON.dump(mod.instrumentation))
|
37
|
+
```
|
38
|
+
|
39
|
+
To view collected data, just point furnace-xray to it:
|
40
|
+
|
41
|
+
$ furnace-xray data.json
|
42
|
+
[2013-01-27 20:05:13] INFO WEBrick 1.3.1
|
43
|
+
[2013-01-27 20:05:13] INFO ruby 1.9.3 (2012-04-20) [x86_64-linux]
|
44
|
+
== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from WEBrick
|
45
|
+
[2013-01-27 20:05:13] INFO WEBrick::HTTPServer#start: pid=28695 port=4567
|
46
|
+
|
47
|
+
Now, open your ~~browser~~ Chrome or Chromium and point it to
|
48
|
+
http://localhost:4567.
|
49
|
+
|
50
|
+
## Contributing
|
51
|
+
|
52
|
+
1. Fork it
|
53
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
54
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
55
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
56
|
+
5. Create new Pull Request
|
57
|
+
|
58
|
+
## License
|
59
|
+
|
60
|
+
MIT.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/furnace-xray
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'active_support/all'
|
5
|
+
require 'trollop'
|
6
|
+
|
7
|
+
lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
|
8
|
+
$LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
|
9
|
+
|
10
|
+
require 'furnace-xray/version'
|
11
|
+
require 'furnace-xray/app/app'
|
12
|
+
|
13
|
+
opts = Trollop::options do
|
14
|
+
version "furnace-xray #{Furnace::Xray::VERSION}"
|
15
|
+
|
16
|
+
banner <<-EOS
|
17
|
+
Usage: furnace-xray <filename>
|
18
|
+
EOS
|
19
|
+
end
|
20
|
+
|
21
|
+
Trollop::die "File not specified or does not exist" unless ARGV[0] && File.exist?(ARGV[0])
|
22
|
+
|
23
|
+
Furnace::Xray::App.run! ARGV[0], :environment => :production
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require 'furnace-xray/version'
|
7
|
+
|
8
|
+
Gem::Specification.new do |gem|
|
9
|
+
gem.name = 'furnace-xray'
|
10
|
+
gem.version = Furnace::Xray::VERSION
|
11
|
+
gem.authors = ['Boris Staal']
|
12
|
+
gem.email = ['staal@evl.ms']
|
13
|
+
gem.description = 'A visualizer for transformations of code in Static Single Assignment form based on the Furnace library.'
|
14
|
+
gem.summary = gem.description
|
15
|
+
gem.homepage = 'https://github.com/evilmartians/furnace-xray'
|
16
|
+
|
17
|
+
gem.files = `git ls-files`.split($/)
|
18
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
19
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
20
|
+
gem.require_paths = ['lib']
|
21
|
+
|
22
|
+
gem.add_dependency 'trollop'
|
23
|
+
gem.add_dependency 'sprockets', '~> 2.0.0'
|
24
|
+
gem.add_dependency 'sinatra'
|
25
|
+
gem.add_dependency 'sinatra-sprockets-ext'
|
26
|
+
gem.add_dependency 'activesupport'
|
27
|
+
gem.add_dependency 'sprockets-vendor_gems'
|
28
|
+
gem.add_dependency 'haml'
|
29
|
+
gem.add_dependency 'sass'
|
30
|
+
gem.add_dependency 'sprockets-sass'
|
31
|
+
gem.add_dependency 'compass'
|
32
|
+
gem.add_dependency 'coffee-script'
|
33
|
+
end
|
data/lib/furnace-xray.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'furnace-xray/version'
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'sinatra/base'
|
2
|
+
|
3
|
+
require 'sprockets-vendor_gems/extend_all'
|
4
|
+
require 'sinatra/sprockets'
|
5
|
+
|
6
|
+
require 'haml'
|
7
|
+
require 'sprockets-sass'
|
8
|
+
require 'sass'
|
9
|
+
require 'compass'
|
10
|
+
require 'coffee-script'
|
11
|
+
|
12
|
+
require_relative '../lib/jst_pages'
|
13
|
+
|
14
|
+
Compass.configuration do |config|
|
15
|
+
config.project_path = File.dirname(__FILE__)
|
16
|
+
config.sass_dir = 'assets/stylesheets'
|
17
|
+
end
|
18
|
+
|
19
|
+
module Furnace
|
20
|
+
module Xray
|
21
|
+
class App < Sinatra::Base
|
22
|
+
def self.run!(file, options={})
|
23
|
+
set :json_location, file
|
24
|
+
super options
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
# Sprockets
|
29
|
+
#
|
30
|
+
register Sinatra::Sprockets
|
31
|
+
use Module.new {
|
32
|
+
def self.new(app)
|
33
|
+
Rack::Builder.new(app) do
|
34
|
+
map('/assets') { run Sinatra::Sprockets.environment }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
}
|
38
|
+
|
39
|
+
#
|
40
|
+
# JST
|
41
|
+
#
|
42
|
+
register Sinatra::JstPages
|
43
|
+
serve_jst '/jst.js'
|
44
|
+
|
45
|
+
#
|
46
|
+
# App
|
47
|
+
#
|
48
|
+
enable :static
|
49
|
+
set :public_folder, File.expand_path('../public', __FILE__)
|
50
|
+
|
51
|
+
get '/' do
|
52
|
+
haml :index
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
Binary file
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="157 293 283 207" width="283pt" height="207pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2012-11-20 08:29Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.2 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect width="595.28998" height="841.89"/><g><title>Layer 1</title><path d="M 324.13959 353.9943 C 324.13959 353.9693 324.14059 346.0923 331.20959 344.4173 L 331.20959 331.3503 L 331.22559 331.3173 C 331.22659 331.2563 331.22559 310.0903 352.46959 310.0903 L 375.1466 310.0903 C 396.3896 310.0903 396.3896 331.2563 396.3896 331.3173 L 396.4066 331.3503 L 396.4066 344.4173 C 403.4746 346.0923 403.4756 353.9693 403.4766 353.9943 L 403.4766 354.0603 C 403.4756 354.0853 403.4746 361.9613 396.4066 363.6373 L 396.4066 365.3663 L 392.5086 365.3663 L 392.5086 366.7833 C 392.5086 369.6183 389.6736 369.6183 389.6736 369.6183 C 386.8396 369.6183 386.8396 366.7833 386.8396 366.7833 L 386.8396 365.3663 L 381.1696 365.3663 L 381.1696 366.7833 C 381.1696 369.6183 378.3356 369.6183 378.3356 369.6183 C 375.5006 369.6183 375.5006 366.7833 375.5006 366.7833 L 375.5006 365.3663 L 369.8316 365.3663 L 369.8316 366.7833 C 369.8316 369.6183 366.99659 369.6183 366.99659 369.6183 C 364.16159 369.6183 364.16159 366.7833 364.16159 366.7833 L 364.16159 365.3663 L 358.49259 365.3663 L 358.49259 366.7833 C 358.49259 369.6183 355.65859 369.6183 355.65859 369.6183 C 352.82359 369.6183 352.82359 366.7833 352.82359 366.7833 L 352.82359 365.3663 L 352.46959 365.3663 C 343.40959 365.3663 341.64559 376.3883 347.17459 380.6853 C 347.25759 379.9773 347.69559 378.1213 349.98859 378.1213 C 352.82359 378.1213 352.82359 380.9563 352.82359 380.9563 L 352.82359 382.3733 L 358.49259 382.3733 L 358.49259 380.9563 C 358.49259 378.1213 361.32759 378.1213 361.32759 378.1213 C 364.16159 378.1213 364.16159 380.9563 364.16159 380.9563 L 364.16159 382.3733 L 369.8316 382.3733 L 369.8316 380.9563 C 369.8316 378.1213 372.6656 378.1213 372.6656 378.1213 C 375.5006 378.1213 375.5006 380.9563 375.5006 380.9563 L 375.5006 382.3733 L 381.1696 382.3733 L 381.1696 380.9563 C 381.1696 378.1213 384.0046 378.1213 384.0046 378.1213 C 386.8396 378.1213 386.8396 380.9563 386.8396 380.9563 L 386.8396 382.3733 L 387.9026 382.3733 L 396.4066 382.3733 L 396.4066 409.3033 C 397.7126 409.3033 397.8286 408.1013 397.8396 407.8853 L 397.8236 407.8853 L 397.8236 389.0353 L 397.8236 387.3343 C 397.8236 387.3173 397.8236 381.3813 403.7766 381.3813 C 405.2416 381.3813 406.3456 381.7423 407.1776 382.2843 C 408.0106 381.7423 409.1146 381.3813 410.5796 381.3813 C 412.0446 381.3813 413.1486 381.7423 413.9806 382.2843 C 414.8136 381.7423 415.9176 381.3813 417.3826 381.3813 C 423.3356 381.3813 423.3356 387.3173 423.3356 387.3343 L 423.3356 389.0353 L 423.3356 407.8853 L 423.3186 407.9183 C 423.3176 407.9953 423.3186 434.8143 396.4066 434.8143 L 396.4066 436.4773 C 419.0616 439.1443 419.0666 463.0553 419.0666 463.1283 L 419.0836 463.1613 L 419.0836 467.0703 L 430.7646 478.7513 L 393.5716 478.7513 L 393.5716 463.1613 L 393.5876 463.1613 C 393.5776 462.9453 393.4606 461.7443 392.1546 461.7443 L 355.16959 461.7443 C 349.42959 478.7333 329.88559 478.7353 329.82559 478.7353 L 329.79159 478.7513 L 325.88359 478.7513 L 314.20159 490.4333 L 314.20159 453.2403 L 329.79159 453.2403 L 329.79159 453.2553 C 330.00859 453.2453 331.20959 453.1293 331.20959 451.8223 L 331.20959 434.8143 C 304.29659 434.8143 304.29759 407.9953 304.29659 407.9183 L 304.28059 407.8853 L 304.28059 396.5473 L 304.28059 389.0353 L 304.28059 387.3343 C 304.28059 387.3173 304.28059 381.3813 310.23259 381.3813 C 311.69859 381.3813 312.80259 381.7423 313.63459 382.2843 C 314.46759 381.7423 315.57159 381.3813 317.03559 381.3813 C 318.50159 381.3813 319.60559 381.7423 320.43759 382.2843 C 321.27059 381.7423 322.37459 381.3813 323.83959 381.3813 C 329.79159 381.3813 329.79159 387.3173 329.79159 387.3343 L 329.79159 389.0353 L 329.79159 396.5473 L 329.79159 407.8853 L 329.77659 407.8853 C 329.78659 408.1013 329.90259 409.3033 331.20959 409.3033 L 331.20959 363.6373 C 324.14059 361.9613 324.13959 354.0853 324.13959 354.0603 Z M 183.80759 437.4223 L 167.25359 429.1453 L 183.80759 420.8693 L 183.80759 420.4143 L 167.25359 412.1373 L 183.80759 403.8603 L 183.80759 403.4063 L 167.25359 395.1293 L 183.80759 386.8523 L 183.80759 386.3983 L 167.25359 378.1213 L 183.80759 369.8453 L 183.80759 331.3503 L 183.82459 331.3173 C 183.82559 331.2823 183.82659 324.3893 187.76259 318.4683 L 180.88759 311.5933 C 180.80559 311.5113 180.73259 311.4243 180.66659 311.3333 C 179.64659 311.8733 178.35559 312.2163 176.72159 312.2163 C 175.54759 312.2163 174.59559 311.2643 174.59559 310.0903 C 174.59559 308.9163 175.54759 307.9643 176.72159 307.9643 C 180.27259 307.9643 180.27259 304.4143 180.27259 304.4043 C 180.28259 303.2353 181.23759 302.2943 182.40759 302.3033 C 183.57659 302.3123 184.51759 303.2683 184.50859 304.4373 C 184.50859 304.4483 184.50859 306.3753 183.54859 308.3073 C 183.67059 308.3873 183.78659 308.4803 183.89359 308.5873 L 190.51159 315.2043 C 193.65459 312.2573 198.27259 310.0903 205.06759 310.0903 L 233.41459 310.0903 C 240.20859 310.0903 244.82859 312.2573 247.97059 315.2043 L 254.58859 308.5873 C 254.69559 308.4803 254.81159 308.3873 254.93359 308.3073 C 253.97459 306.3743 253.97359 304.4483 253.97359 304.4373 C 253.96459 303.2683 254.90559 302.3123 256.07459 302.3033 C 257.24459 302.2943 258.20059 303.2353 258.20859 304.4043 C 258.20859 304.4143 258.20959 307.9643 261.76059 307.9643 C 262.93459 307.9643 263.88659 308.9163 263.88659 310.0903 C 263.88659 311.2643 262.93459 312.2163 261.76059 312.2163 C 260.12659 312.2163 258.83559 311.8733 257.81559 311.3333 C 257.74959 311.4243 257.67659 311.5113 257.59459 311.5933 L 250.71959 318.4683 C 254.65459 324.3893 254.65759 331.2823 254.65759 331.3173 L 254.67459 331.3503 L 254.67459 360.4053 L 254.67459 364.6573 L 246.40859 364.6573 L 242.62659 372.2203 L 238.84559 364.6573 L 235.06959 364.6573 L 231.28859 372.2203 L 227.50659 364.6573 L 223.73159 364.6573 L 219.94959 372.2203 L 216.16859 364.6573 L 212.39259 364.6573 L 208.61159 372.2203 L 204.83259 364.6623 C 195.88959 364.8553 194.25759 375.9403 199.93959 380.1063 L 202.94159 374.1023 L 206.72359 381.6653 L 210.49859 381.6653 L 214.28059 374.1023 L 218.06159 381.6653 L 221.83759 381.6653 L 225.61859 374.1023 L 229.40059 381.6653 L 233.17659 381.6653 L 236.95759 374.1023 L 240.73959 381.6653 L 244.51459 381.6653 L 248.29659 374.1023 L 252.07759 381.6653 L 301.40159 381.6653 L 292.89759 389.1063 L 292.18059 389.7343 L 293.97659 390.5513 L 302.49159 394.4213 L 293.97659 398.2903 L 292.18059 399.1083 L 292.89759 399.7363 L 301.40159 407.1773 L 254.67459 407.1773 L 254.67459 409.3033 L 301.40159 409.3033 L 292.89759 416.7443 L 292.18059 417.3713 L 293.97659 418.1883 L 302.49159 422.0583 L 293.97659 425.9293 L 292.18059 426.7453 L 292.89759 427.3733 L 301.40159 434.8143 L 254.67459 434.8143 L 254.67459 436.4773 C 277.32959 439.1443 277.33359 463.0553 277.33459 463.1283 L 277.35159 463.1613 L 277.35159 467.0703 L 289.03359 478.7513 L 251.83959 478.7513 L 251.83959 463.1613 L 251.85459 463.1613 C 251.84459 462.9453 251.72859 461.7443 250.42259 461.7443 L 207.76859 461.7443 C 202.02859 478.7333 182.48359 478.7353 182.42359 478.7353 L 182.39059 478.7513 L 178.48159 478.7513 L 166.80059 490.4333 L 166.80059 453.2403 L 182.39059 453.2403 L 182.39059 453.2553 C 182.60659 453.2453 183.80759 453.1293 183.80759 451.8223 Z" fill="white"/><path d="M 231.28859 342.6887 C 234.41859 342.6887 236.95759 345.2277 236.95759 348.3577 C 236.95759 351.4887 234.41859 354.0277 231.28859 354.0277 C 228.15759 354.0277 225.61959 351.4887 225.61959 348.3577 C 225.61959 345.2277 228.15759 342.6887 231.28859 342.6887 M 352.46959 342.6887 C 355.60059 342.6887 358.13859 345.2277 358.13859 348.3577 C 358.13859 351.4887 355.60059 354.0277 352.46959 354.0277 C 349.33859 354.0277 346.79959 351.4887 346.79959 348.3577 C 346.79959 345.2277 349.33859 342.6887 352.46959 342.6887 M 375.1466 342.6887 C 378.2766 342.6887 380.8156 345.2277 380.8156 348.3577 C 380.8156 351.4887 378.2766 354.0277 375.1466 354.0277 C 372.0166 354.0277 369.4766 351.4887 369.4766 348.3577 C 369.4766 345.2277 372.0166 342.6887 375.1466 342.6887 M 208.61159 342.6887 C 211.74159 342.6887 214.28059 345.2277 214.28059 348.3577 C 214.28059 351.4887 211.74159 354.0277 208.61159 354.0277 C 205.48059 354.0277 202.94159 351.4887 202.94159 348.3577 C 202.94159 345.2277 205.48059 342.6887 208.61159 342.6887" fill="white"/><path d="M 331.20949 359.0715 L 331.20949 348.9835 C 330.62449 349.2875 330.16049 349.6805 329.79249 350.1135 C 328.37549 351.7785 328.37549 354.0275 328.37549 354.0275 C 328.37549 356.2765 329.79249 357.9415 329.79249 357.9415 C 330.16049 358.3745 330.62449 358.7675 331.20949 359.0715 Z" fill="white"/><path d="M 183.80809 432.6887 L 183.80809 425.6027 L 176.72209 429.1457 Z" fill="white"/><path d="M 419.0835 407.8854 L 419.0835 396.5474 L 419.0835 389.0354 L 419.0835 387.3344 C 419.0835 385.6334 417.3825 385.6334 417.3825 385.6334 C 415.6825 385.6334 415.6825 387.3344 415.6825 387.3344 C 415.6825 389.0354 413.9805 389.0354 413.9805 389.0354 C 412.2805 389.0354 412.2805 387.3344 412.2805 387.3344 C 412.2805 385.6334 410.5795 385.6334 410.5795 385.6334 C 408.8785 385.6334 408.8785 387.3344 408.8785 387.3344 C 408.8785 389.0354 407.1775 389.0354 407.1775 389.0354 C 405.4775 389.0354 405.4775 387.3344 405.4775 387.3344 C 405.4775 385.6334 403.7765 385.6334 403.7765 385.6334 C 402.0755 385.6334 402.0755 387.3344 402.0755 387.3344 L 402.0755 389.0354 L 402.0755 396.5474 L 402.0755 407.8854 C 402.0755 412.5644 397.8235 413.4204 397.8235 413.4204 C 397.3955 413.5074 396.9245 413.5544 396.4065 413.5544 L 396.4065 430.5624 C 396.8905 430.5624 397.3595 430.5494 397.8235 430.5284 C 419.0795 429.6014 419.0835 407.8854 419.0835 407.8854 Z" fill="white"/><path d="M 399.2407 354.0275 C 399.2407 351.7785 397.8237 350.1135 397.8237 350.1135 C 397.4547 349.6805 396.9907 349.2875 396.4067 348.9835 L 396.4067 359.0715 C 396.9907 358.7675 397.4547 358.3745 397.8237 357.9415 C 399.2407 356.2765 399.2407 354.0275 399.2407 354.0275 Z" fill="white"/><path d="M 183.80809 381.6652 L 183.80809 374.5782 L 176.72209 378.1222 Z" fill="white"/><path d="M 183.80809 415.6808 L 183.80809 408.5948 L 176.72209 412.1378 Z" fill="white"/><path d="M 345.45459 341.3434 C 347.24959 339.5474 349.73059 338.4364 352.46959 338.4364 C 355.20859 338.4364 357.68859 339.5474 359.48459 341.3434 C 361.27959 343.1384 362.39059 345.6184 362.39059 348.3584 C 362.39059 351.0964 361.27959 353.5774 359.48459 355.3734 C 357.68859 357.1684 355.20859 358.2794 352.46959 358.2794 C 349.73059 358.2794 347.24959 357.1684 345.45459 355.3734 C 343.65859 353.5774 342.54759 351.0964 342.54759 348.3584 C 342.54759 345.6184 343.65859 343.1384 345.45459 341.3434 M 368.13159 341.3434 C 369.9276 339.5474 372.4076 338.4364 375.1466 338.4364 C 377.8856 338.4364 380.3656 339.5474 382.1616 341.3434 C 383.9566 343.1384 385.0676 345.6184 385.0676 348.3584 C 385.0676 351.0964 383.9566 353.5774 382.1616 355.3734 C 380.3656 357.1684 377.8856 358.2794 375.1466 358.2794 C 372.4076 358.2794 369.9276 357.1684 368.13159 355.3734 C 366.33559 353.5774 365.22559 351.0964 365.22559 348.3584 C 365.22559 345.6184 366.33559 343.1384 368.13159 341.3434 M 414.8316 468.8304 L 414.8316 463.1614 C 414.8296 444.4444 397.8236 441.0204 397.8236 441.0204 C 396.1116 440.6754 394.2286 440.4844 392.1546 440.4844 L 392.1546 436.5864 L 392.1546 430.5624 L 392.1546 413.5544 L 392.1546 410.3654 L 392.1546 394.4214 L 392.1546 386.6254 L 375.1466 386.6254 L 352.46959 386.6254 C 346.40559 386.6254 342.49259 383.2484 340.75459 378.9264 C 340.10359 377.3054 339.77759 375.5754 339.77759 373.8694 C 339.77759 372.1644 340.10259 370.4344 340.75459 368.8134 C 342.49259 364.4914 346.40559 361.1144 352.46959 361.1144 L 375.1466 361.1144 L 392.1546 361.1144 L 392.1546 331.3504 C 392.1546 314.3424 375.1466 314.3424 375.1466 314.3424 L 352.46959 314.3424 C 335.46159 314.3424 335.46159 331.3504 335.46159 331.3504 L 335.46159 413.5544 L 331.20959 413.5544 C 330.69059 413.5544 330.22059 413.5074 329.79159 413.4204 C 325.54059 412.5644 325.53959 407.8854 325.53959 407.8854 L 325.53959 396.5474 L 325.53959 389.0354 L 325.53959 387.3344 C 325.53959 385.6334 323.83959 385.6334 323.83959 385.6334 C 322.13859 385.6334 322.13859 387.3344 322.13859 387.3344 C 322.13859 389.0354 320.43759 389.0354 320.43759 389.0354 C 318.73659 389.0354 318.73659 387.3344 318.73659 387.3344 C 318.73659 385.6334 317.03659 385.6334 317.03659 385.6334 C 315.33559 385.6334 315.33559 387.3344 315.33559 387.3344 C 315.33559 389.0354 313.63459 389.0354 313.63459 389.0354 C 311.93359 389.0354 311.93359 387.3344 311.93359 387.3344 C 311.93359 385.6334 310.23259 385.6334 310.23259 385.6334 C 308.53259 385.6334 308.53259 387.3344 308.53259 387.3344 L 308.53259 389.0354 L 308.53259 396.5474 L 308.53259 407.8854 C 308.53659 429.6014 329.79159 430.5284 329.79159 430.5284 C 330.25559 430.5494 330.72559 430.5624 331.20959 430.5624 L 335.46159 430.5624 L 335.46159 440.4844 L 335.46159 440.4884 L 335.46159 440.4964 L 335.46159 440.5004 L 335.46159 451.8224 C 335.46159 457.4914 329.79159 457.4914 329.79159 457.4914 L 318.45359 457.4914 L 318.45359 474.4994 L 318.45359 480.1694 C 320.34359 478.2794 324.12259 474.4994 324.12259 474.4994 L 329.79159 474.4994 C 348.51459 474.4974 351.93459 457.4834 351.93459 457.4834 C 352.11159 457.4874 352.28859 457.4914 352.46959 457.4914 L 375.1466 457.4914 L 392.1546 457.4914 C 397.7356 457.4914 397.8226 462.9854 397.8236 463.1574 L 397.8236 463.1614 L 397.8236 474.4994 L 414.8316 474.4994 L 420.5006 474.4994 C 418.6116 472.6104 414.8316 468.8304 414.8316 468.8304" fill="white"/><path d="M 183.80809 398.673 L 183.80809 391.587 L 176.72209 395.13 Z" fill="white"/><path d="M 201.59619 341.3434 C 203.39219 339.5474 205.87219 338.4364 208.61119 338.4364 C 211.35019 338.4364 213.83019 339.5474 215.62619 341.3434 C 217.42219 343.1384 218.53319 345.6184 218.53319 348.3584 C 218.53319 351.0964 217.42219 353.5774 215.62619 355.3734 C 213.83019 357.1684 211.35019 358.2794 208.61119 358.2794 C 205.87219 358.2794 203.39219 357.1684 201.59619 355.3734 C 199.80119 353.5774 198.69019 351.0964 198.69019 348.3584 C 198.69019 345.6184 199.80119 343.1384 201.59619 341.3434 M 224.27319 341.3434 C 226.06919 339.5474 228.54919 338.4364 231.28819 338.4364 C 234.02719 338.4364 236.50819 339.5474 238.30319 341.3434 C 240.09819 343.1384 241.20919 345.6184 241.20919 348.3584 C 241.20919 351.0964 240.09819 353.5774 238.30319 355.3734 C 236.50819 357.1684 234.02719 358.2794 231.28819 358.2794 C 228.54919 358.2794 226.06919 357.1684 224.27319 355.3734 C 222.47819 353.5774 221.36719 351.0964 221.36719 348.3584 C 221.36719 345.6184 222.47819 343.1384 224.27319 341.3434 M 284.43819 418.5154 L 290.10719 413.5544 L 273.45319 413.5544 L 250.42219 413.5544 L 250.42219 404.3424 L 250.42219 402.9254 L 250.42219 385.9174 L 231.28819 385.9174 L 208.61119 385.9174 L 205.06819 385.9174 C 199.00319 385.9174 195.09119 382.5394 193.35319 378.2174 C 192.70219 376.5964 192.37619 374.8664 192.37619 373.1614 C 192.37619 371.4554 192.70219 369.7254 193.35319 368.1054 C 195.09119 363.7824 199.00319 360.4054 205.06819 360.4054 L 208.61119 360.4054 L 231.28819 360.4054 L 250.42219 360.4054 L 250.42219 331.3504 C 250.42219 314.3424 233.41419 314.3424 233.41419 314.3424 L 231.28819 314.3424 L 208.61119 314.3424 L 205.06819 314.3424 C 188.06019 314.3424 188.06019 331.3504 188.06019 331.3504 L 188.06019 440.4844 L 188.06019 440.4884 L 188.06019 440.4964 L 188.06019 440.5004 L 188.06019 451.8224 C 188.06019 457.4914 182.39019 457.4914 182.39019 457.4914 L 171.05219 457.4914 L 171.05219 474.4994 L 171.05219 480.1694 L 176.72119 474.4994 L 182.39019 474.4994 C 201.11319 474.4974 204.53319 457.4834 204.53319 457.4834 C 204.71019 457.4874 204.88719 457.4914 205.06819 457.4914 L 208.61119 457.4914 L 231.28819 457.4914 L 250.42219 457.4914 C 256.09219 457.4914 256.09219 463.1614 256.09219 463.1614 L 256.09219 474.4994 L 273.09919 474.4994 L 273.45319 474.4994 L 278.76919 474.4994 L 273.45319 469.1844 L 273.09919 468.8304 L 273.09919 463.1614 C 273.09919 440.4844 250.42219 440.4844 250.42219 440.4844 L 250.42219 430.5624 L 273.45319 430.5624 L 290.10719 430.5624 L 284.43819 425.6024 L 292.23319 422.0584 Z" fill="white"/><path d="M 352.46919 345.5236 C 350.90419 345.5236 349.63519 346.7926 349.63519 348.3576 C 349.63519 349.9236 350.90419 351.1926 352.46919 351.1926 C 354.03419 351.1926 355.30319 349.9236 355.30319 348.3576 C 355.30319 346.7926 354.03419 345.5236 352.46919 345.5236 Z" fill="white"/><path d="M 375.1465 345.5236 C 373.5815 345.5236 372.3125 346.7926 372.3125 348.3576 C 372.3125 349.9236 373.5815 351.1926 375.1465 351.1926 C 376.7115 351.1926 377.9805 349.9236 377.9805 348.3576 C 377.9805 346.7926 376.7115 345.5236 375.1465 345.5236 Z" fill="white"/><path d="M 290.10739 385.9172 L 273.45339 385.9172 L 254.67439 385.9172 L 254.67439 402.9252 L 273.45339 402.9252 L 290.10739 402.9252 L 284.43839 397.9642 L 292.23339 394.4212 L 284.43839 390.8772 Z" fill="white"/><path d="M 208.61129 345.5236 C 210.17629 345.5236 211.44529 346.7926 211.44529 348.3576 C 211.44529 349.9236 210.17629 351.1926 208.61129 351.1926 C 207.04629 351.1926 205.77729 349.9236 205.77729 348.3576 C 205.77729 346.7926 207.04629 345.5236 208.61129 345.5236 M 231.28829 345.5236 C 232.85429 345.5236 234.12329 346.7926 234.12329 348.3576 C 234.12329 349.9236 232.85429 351.1926 231.28829 351.1926 C 229.72329 351.1926 228.45329 349.9236 228.45329 348.3576 C 228.45329 346.7926 229.72329 345.5236 231.28829 345.5236 M 335.54729 330.0186 C 335.96229 326.0126 338.38129 314.3426 352.46929 314.3426 L 375.1463 314.3426 C 389.2353 314.3426 391.6533 326.0126 392.0683 330.0186 L 386.4853 335.6026 L 380.8163 329.9326 L 375.1463 335.6026 L 369.4773 329.9326 L 363.80829 335.6026 L 358.13829 329.9326 L 352.46929 335.6026 L 346.79929 329.9326 L 341.13129 335.6026 Z" fill="white"/></g></g></svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="157 293 283 207" width="283pt" height="207pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2012-11-20 08:29Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.2 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect width="595.28998" height="841.89"/><g><title>Layer 1</title><path d="M 324.13959 353.9943 C 324.13959 353.9693 324.14059 346.0923 331.20959 344.4173 L 331.20959 331.3503 L 331.22559 331.3173 C 331.22659 331.2563 331.22559 310.0903 352.46959 310.0903 L 375.1466 310.0903 C 396.3896 310.0903 396.3896 331.2563 396.3896 331.3173 L 396.4066 331.3503 L 396.4066 344.4173 C 403.4746 346.0923 403.4756 353.9693 403.4766 353.9943 L 403.4766 354.0603 C 403.4756 354.0853 403.4746 361.9613 396.4066 363.6373 L 396.4066 365.3663 L 392.5086 365.3663 L 392.5086 366.7833 C 392.5086 369.6183 389.6736 369.6183 389.6736 369.6183 C 386.8396 369.6183 386.8396 366.7833 386.8396 366.7833 L 386.8396 365.3663 L 381.1696 365.3663 L 381.1696 366.7833 C 381.1696 369.6183 378.3356 369.6183 378.3356 369.6183 C 375.5006 369.6183 375.5006 366.7833 375.5006 366.7833 L 375.5006 365.3663 L 369.8316 365.3663 L 369.8316 366.7833 C 369.8316 369.6183 366.99659 369.6183 366.99659 369.6183 C 364.16159 369.6183 364.16159 366.7833 364.16159 366.7833 L 364.16159 365.3663 L 358.49259 365.3663 L 358.49259 366.7833 C 358.49259 369.6183 355.65859 369.6183 355.65859 369.6183 C 352.82359 369.6183 352.82359 366.7833 352.82359 366.7833 L 352.82359 365.3663 L 352.46959 365.3663 C 343.40959 365.3663 341.64559 376.3883 347.17459 380.6853 C 347.25759 379.9773 347.69559 378.1213 349.98859 378.1213 C 352.82359 378.1213 352.82359 380.9563 352.82359 380.9563 L 352.82359 382.3733 L 358.49259 382.3733 L 358.49259 380.9563 C 358.49259 378.1213 361.32759 378.1213 361.32759 378.1213 C 364.16159 378.1213 364.16159 380.9563 364.16159 380.9563 L 364.16159 382.3733 L 369.8316 382.3733 L 369.8316 380.9563 C 369.8316 378.1213 372.6656 378.1213 372.6656 378.1213 C 375.5006 378.1213 375.5006 380.9563 375.5006 380.9563 L 375.5006 382.3733 L 381.1696 382.3733 L 381.1696 380.9563 C 381.1696 378.1213 384.0046 378.1213 384.0046 378.1213 C 386.8396 378.1213 386.8396 380.9563 386.8396 380.9563 L 386.8396 382.3733 L 387.9026 382.3733 L 396.4066 382.3733 L 396.4066 409.3033 C 397.7126 409.3033 397.8286 408.1013 397.8396 407.8853 L 397.8236 407.8853 L 397.8236 389.0353 L 397.8236 387.3343 C 397.8236 387.3173 397.8236 381.3813 403.7766 381.3813 C 405.2416 381.3813 406.3456 381.7423 407.1776 382.2843 C 408.0106 381.7423 409.1146 381.3813 410.5796 381.3813 C 412.0446 381.3813 413.1486 381.7423 413.9806 382.2843 C 414.8136 381.7423 415.9176 381.3813 417.3826 381.3813 C 423.3356 381.3813 423.3356 387.3173 423.3356 387.3343 L 423.3356 389.0353 L 423.3356 407.8853 L 423.3186 407.9183 C 423.3176 407.9953 423.3186 434.8143 396.4066 434.8143 L 396.4066 436.4773 C 419.0616 439.1443 419.0666 463.0553 419.0666 463.1283 L 419.0836 463.1613 L 419.0836 467.0703 L 430.7646 478.7513 L 393.5716 478.7513 L 393.5716 463.1613 L 393.5876 463.1613 C 393.5776 462.9453 393.4606 461.7443 392.1546 461.7443 L 355.16959 461.7443 C 349.42959 478.7333 329.88559 478.7353 329.82559 478.7353 L 329.79159 478.7513 L 325.88359 478.7513 L 314.20159 490.4333 L 314.20159 453.2403 L 329.79159 453.2403 L 329.79159 453.2553 C 330.00859 453.2453 331.20959 453.1293 331.20959 451.8223 L 331.20959 434.8143 C 304.29659 434.8143 304.29759 407.9953 304.29659 407.9183 L 304.28059 407.8853 L 304.28059 396.5473 L 304.28059 389.0353 L 304.28059 387.3343 C 304.28059 387.3173 304.28059 381.3813 310.23259 381.3813 C 311.69859 381.3813 312.80259 381.7423 313.63459 382.2843 C 314.46759 381.7423 315.57159 381.3813 317.03559 381.3813 C 318.50159 381.3813 319.60559 381.7423 320.43759 382.2843 C 321.27059 381.7423 322.37459 381.3813 323.83959 381.3813 C 329.79159 381.3813 329.79159 387.3173 329.79159 387.3343 L 329.79159 389.0353 L 329.79159 396.5473 L 329.79159 407.8853 L 329.77659 407.8853 C 329.78659 408.1013 329.90259 409.3033 331.20959 409.3033 L 331.20959 363.6373 C 324.14059 361.9613 324.13959 354.0853 324.13959 354.0603 Z M 183.80759 437.4223 L 167.25359 429.1453 L 183.80759 420.8693 L 183.80759 420.4143 L 167.25359 412.1373 L 183.80759 403.8603 L 183.80759 403.4063 L 167.25359 395.1293 L 183.80759 386.8523 L 183.80759 386.3983 L 167.25359 378.1213 L 183.80759 369.8453 L 183.80759 331.3503 L 183.82459 331.3173 C 183.82559 331.2823 183.82659 324.3893 187.76259 318.4683 L 180.88759 311.5933 C 180.80559 311.5113 180.73259 311.4243 180.66659 311.3333 C 179.64659 311.8733 178.35559 312.2163 176.72159 312.2163 C 175.54759 312.2163 174.59559 311.2643 174.59559 310.0903 C 174.59559 308.9163 175.54759 307.9643 176.72159 307.9643 C 180.27259 307.9643 180.27259 304.4143 180.27259 304.4043 C 180.28259 303.2353 181.23759 302.2943 182.40759 302.3033 C 183.57659 302.3123 184.51759 303.2683 184.50859 304.4373 C 184.50859 304.4483 184.50859 306.3753 183.54859 308.3073 C 183.67059 308.3873 183.78659 308.4803 183.89359 308.5873 L 190.51159 315.2043 C 193.65459 312.2573 198.27259 310.0903 205.06759 310.0903 L 233.41459 310.0903 C 240.20859 310.0903 244.82859 312.2573 247.97059 315.2043 L 254.58859 308.5873 C 254.69559 308.4803 254.81159 308.3873 254.93359 308.3073 C 253.97459 306.3743 253.97359 304.4483 253.97359 304.4373 C 253.96459 303.2683 254.90559 302.3123 256.07459 302.3033 C 257.24459 302.2943 258.20059 303.2353 258.20859 304.4043 C 258.20859 304.4143 258.20959 307.9643 261.76059 307.9643 C 262.93459 307.9643 263.88659 308.9163 263.88659 310.0903 C 263.88659 311.2643 262.93459 312.2163 261.76059 312.2163 C 260.12659 312.2163 258.83559 311.8733 257.81559 311.3333 C 257.74959 311.4243 257.67659 311.5113 257.59459 311.5933 L 250.71959 318.4683 C 254.65459 324.3893 254.65759 331.2823 254.65759 331.3173 L 254.67459 331.3503 L 254.67459 360.4053 L 254.67459 364.6573 L 246.40859 364.6573 L 242.62659 372.2203 L 238.84559 364.6573 L 235.06959 364.6573 L 231.28859 372.2203 L 227.50659 364.6573 L 223.73159 364.6573 L 219.94959 372.2203 L 216.16859 364.6573 L 212.39259 364.6573 L 208.61159 372.2203 L 204.83259 364.6623 C 195.88959 364.8553 194.25759 375.9403 199.93959 380.1063 L 202.94159 374.1023 L 206.72359 381.6653 L 210.49859 381.6653 L 214.28059 374.1023 L 218.06159 381.6653 L 221.83759 381.6653 L 225.61859 374.1023 L 229.40059 381.6653 L 233.17659 381.6653 L 236.95759 374.1023 L 240.73959 381.6653 L 244.51459 381.6653 L 248.29659 374.1023 L 252.07759 381.6653 L 301.40159 381.6653 L 292.89759 389.1063 L 292.18059 389.7343 L 293.97659 390.5513 L 302.49159 394.4213 L 293.97659 398.2903 L 292.18059 399.1083 L 292.89759 399.7363 L 301.40159 407.1773 L 254.67459 407.1773 L 254.67459 409.3033 L 301.40159 409.3033 L 292.89759 416.7443 L 292.18059 417.3713 L 293.97659 418.1883 L 302.49159 422.0583 L 293.97659 425.9293 L 292.18059 426.7453 L 292.89759 427.3733 L 301.40159 434.8143 L 254.67459 434.8143 L 254.67459 436.4773 C 277.32959 439.1443 277.33359 463.0553 277.33459 463.1283 L 277.35159 463.1613 L 277.35159 467.0703 L 289.03359 478.7513 L 251.83959 478.7513 L 251.83959 463.1613 L 251.85459 463.1613 C 251.84459 462.9453 251.72859 461.7443 250.42259 461.7443 L 207.76859 461.7443 C 202.02859 478.7333 182.48359 478.7353 182.42359 478.7353 L 182.39059 478.7513 L 178.48159 478.7513 L 166.80059 490.4333 L 166.80059 453.2403 L 182.39059 453.2403 L 182.39059 453.2553 C 182.60659 453.2453 183.80759 453.1293 183.80759 451.8223 Z" fill="#452a32"/><path d="M 231.28859 342.6887 C 234.41859 342.6887 236.95759 345.2277 236.95759 348.3577 C 236.95759 351.4887 234.41859 354.0277 231.28859 354.0277 C 228.15759 354.0277 225.61959 351.4887 225.61959 348.3577 C 225.61959 345.2277 228.15759 342.6887 231.28859 342.6887 M 352.46959 342.6887 C 355.60059 342.6887 358.13859 345.2277 358.13859 348.3577 C 358.13859 351.4887 355.60059 354.0277 352.46959 354.0277 C 349.33859 354.0277 346.79959 351.4887 346.79959 348.3577 C 346.79959 345.2277 349.33859 342.6887 352.46959 342.6887 M 375.1466 342.6887 C 378.2766 342.6887 380.8156 345.2277 380.8156 348.3577 C 380.8156 351.4887 378.2766 354.0277 375.1466 354.0277 C 372.0166 354.0277 369.4766 351.4887 369.4766 348.3577 C 369.4766 345.2277 372.0166 342.6887 375.1466 342.6887 M 208.61159 342.6887 C 211.74159 342.6887 214.28059 345.2277 214.28059 348.3577 C 214.28059 351.4887 211.74159 354.0277 208.61159 354.0277 C 205.48059 354.0277 202.94159 351.4887 202.94159 348.3577 C 202.94159 345.2277 205.48059 342.6887 208.61159 342.6887" fill="#fffffe"/><path d="M 331.20949 359.0715 L 331.20949 348.9835 C 330.62449 349.2875 330.16049 349.6805 329.79249 350.1135 C 328.37549 351.7785 328.37549 354.0275 328.37549 354.0275 C 328.37549 356.2765 329.79249 357.9415 329.79249 357.9415 C 330.16049 358.3745 330.62449 358.7675 331.20949 359.0715 Z" fill="#d5bb9f"/><path d="M 183.80809 432.6887 L 183.80809 425.6027 L 176.72209 429.1457 Z" fill="#d5bb9f"/><path d="M 419.0835 407.8854 L 419.0835 396.5474 L 419.0835 389.0354 L 419.0835 387.3344 C 419.0835 385.6334 417.3825 385.6334 417.3825 385.6334 C 415.6825 385.6334 415.6825 387.3344 415.6825 387.3344 C 415.6825 389.0354 413.9805 389.0354 413.9805 389.0354 C 412.2805 389.0354 412.2805 387.3344 412.2805 387.3344 C 412.2805 385.6334 410.5795 385.6334 410.5795 385.6334 C 408.8785 385.6334 408.8785 387.3344 408.8785 387.3344 C 408.8785 389.0354 407.1775 389.0354 407.1775 389.0354 C 405.4775 389.0354 405.4775 387.3344 405.4775 387.3344 C 405.4775 385.6334 403.7765 385.6334 403.7765 385.6334 C 402.0755 385.6334 402.0755 387.3344 402.0755 387.3344 L 402.0755 389.0354 L 402.0755 396.5474 L 402.0755 407.8854 C 402.0755 412.5644 397.8235 413.4204 397.8235 413.4204 C 397.3955 413.5074 396.9245 413.5544 396.4065 413.5544 L 396.4065 430.5624 C 396.8905 430.5624 397.3595 430.5494 397.8235 430.5284 C 419.0795 429.6014 419.0835 407.8854 419.0835 407.8854 Z" fill="#d5bb9f"/><path d="M 399.2407 354.0275 C 399.2407 351.7785 397.8237 350.1135 397.8237 350.1135 C 397.4547 349.6805 396.9907 349.2875 396.4067 348.9835 L 396.4067 359.0715 C 396.9907 358.7675 397.4547 358.3745 397.8237 357.9415 C 399.2407 356.2765 399.2407 354.0275 399.2407 354.0275 Z" fill="#d5bb9f"/><path d="M 183.80809 381.6652 L 183.80809 374.5782 L 176.72209 378.1222 Z" fill="#d5bb9f"/><path d="M 183.80809 415.6808 L 183.80809 408.5948 L 176.72209 412.1378 Z" fill="#d5bb9f"/><path d="M 345.45459 341.3434 C 347.24959 339.5474 349.73059 338.4364 352.46959 338.4364 C 355.20859 338.4364 357.68859 339.5474 359.48459 341.3434 C 361.27959 343.1384 362.39059 345.6184 362.39059 348.3584 C 362.39059 351.0964 361.27959 353.5774 359.48459 355.3734 C 357.68859 357.1684 355.20859 358.2794 352.46959 358.2794 C 349.73059 358.2794 347.24959 357.1684 345.45459 355.3734 C 343.65859 353.5774 342.54759 351.0964 342.54759 348.3584 C 342.54759 345.6184 343.65859 343.1384 345.45459 341.3434 M 368.13159 341.3434 C 369.9276 339.5474 372.4076 338.4364 375.1466 338.4364 C 377.8856 338.4364 380.3656 339.5474 382.1616 341.3434 C 383.9566 343.1384 385.0676 345.6184 385.0676 348.3584 C 385.0676 351.0964 383.9566 353.5774 382.1616 355.3734 C 380.3656 357.1684 377.8856 358.2794 375.1466 358.2794 C 372.4076 358.2794 369.9276 357.1684 368.13159 355.3734 C 366.33559 353.5774 365.22559 351.0964 365.22559 348.3584 C 365.22559 345.6184 366.33559 343.1384 368.13159 341.3434 M 414.8316 468.8304 L 414.8316 463.1614 C 414.8296 444.4444 397.8236 441.0204 397.8236 441.0204 C 396.1116 440.6754 394.2286 440.4844 392.1546 440.4844 L 392.1546 436.5864 L 392.1546 430.5624 L 392.1546 413.5544 L 392.1546 410.3654 L 392.1546 394.4214 L 392.1546 386.6254 L 375.1466 386.6254 L 352.46959 386.6254 C 346.40559 386.6254 342.49259 383.2484 340.75459 378.9264 C 340.10359 377.3054 339.77759 375.5754 339.77759 373.8694 C 339.77759 372.1644 340.10259 370.4344 340.75459 368.8134 C 342.49259 364.4914 346.40559 361.1144 352.46959 361.1144 L 375.1466 361.1144 L 392.1546 361.1144 L 392.1546 331.3504 C 392.1546 314.3424 375.1466 314.3424 375.1466 314.3424 L 352.46959 314.3424 C 335.46159 314.3424 335.46159 331.3504 335.46159 331.3504 L 335.46159 413.5544 L 331.20959 413.5544 C 330.69059 413.5544 330.22059 413.5074 329.79159 413.4204 C 325.54059 412.5644 325.53959 407.8854 325.53959 407.8854 L 325.53959 396.5474 L 325.53959 389.0354 L 325.53959 387.3344 C 325.53959 385.6334 323.83959 385.6334 323.83959 385.6334 C 322.13859 385.6334 322.13859 387.3344 322.13859 387.3344 C 322.13859 389.0354 320.43759 389.0354 320.43759 389.0354 C 318.73659 389.0354 318.73659 387.3344 318.73659 387.3344 C 318.73659 385.6334 317.03659 385.6334 317.03659 385.6334 C 315.33559 385.6334 315.33559 387.3344 315.33559 387.3344 C 315.33559 389.0354 313.63459 389.0354 313.63459 389.0354 C 311.93359 389.0354 311.93359 387.3344 311.93359 387.3344 C 311.93359 385.6334 310.23259 385.6334 310.23259 385.6334 C 308.53259 385.6334 308.53259 387.3344 308.53259 387.3344 L 308.53259 389.0354 L 308.53259 396.5474 L 308.53259 407.8854 C 308.53659 429.6014 329.79159 430.5284 329.79159 430.5284 C 330.25559 430.5494 330.72559 430.5624 331.20959 430.5624 L 335.46159 430.5624 L 335.46159 440.4844 L 335.46159 440.4884 L 335.46159 440.4964 L 335.46159 440.5004 L 335.46159 451.8224 C 335.46159 457.4914 329.79159 457.4914 329.79159 457.4914 L 318.45359 457.4914 L 318.45359 474.4994 L 318.45359 480.1694 C 320.34359 478.2794 324.12259 474.4994 324.12259 474.4994 L 329.79159 474.4994 C 348.51459 474.4974 351.93459 457.4834 351.93459 457.4834 C 352.11159 457.4874 352.28859 457.4914 352.46959 457.4914 L 375.1466 457.4914 L 392.1546 457.4914 C 397.7356 457.4914 397.8226 462.9854 397.8236 463.1574 L 397.8236 463.1614 L 397.8236 474.4994 L 414.8316 474.4994 L 420.5006 474.4994 C 418.6116 472.6104 414.8316 468.8304 414.8316 468.8304" fill="#d5bb9f"/><path d="M 183.80809 398.673 L 183.80809 391.587 L 176.72209 395.13 Z" fill="#d5bb9f"/><path d="M 201.59619 341.3434 C 203.39219 339.5474 205.87219 338.4364 208.61119 338.4364 C 211.35019 338.4364 213.83019 339.5474 215.62619 341.3434 C 217.42219 343.1384 218.53319 345.6184 218.53319 348.3584 C 218.53319 351.0964 217.42219 353.5774 215.62619 355.3734 C 213.83019 357.1684 211.35019 358.2794 208.61119 358.2794 C 205.87219 358.2794 203.39219 357.1684 201.59619 355.3734 C 199.80119 353.5774 198.69019 351.0964 198.69019 348.3584 C 198.69019 345.6184 199.80119 343.1384 201.59619 341.3434 M 224.27319 341.3434 C 226.06919 339.5474 228.54919 338.4364 231.28819 338.4364 C 234.02719 338.4364 236.50819 339.5474 238.30319 341.3434 C 240.09819 343.1384 241.20919 345.6184 241.20919 348.3584 C 241.20919 351.0964 240.09819 353.5774 238.30319 355.3734 C 236.50819 357.1684 234.02719 358.2794 231.28819 358.2794 C 228.54919 358.2794 226.06919 357.1684 224.27319 355.3734 C 222.47819 353.5774 221.36719 351.0964 221.36719 348.3584 C 221.36719 345.6184 222.47819 343.1384 224.27319 341.3434 M 284.43819 418.5154 L 290.10719 413.5544 L 273.45319 413.5544 L 250.42219 413.5544 L 250.42219 404.3424 L 250.42219 402.9254 L 250.42219 385.9174 L 231.28819 385.9174 L 208.61119 385.9174 L 205.06819 385.9174 C 199.00319 385.9174 195.09119 382.5394 193.35319 378.2174 C 192.70219 376.5964 192.37619 374.8664 192.37619 373.1614 C 192.37619 371.4554 192.70219 369.7254 193.35319 368.1054 C 195.09119 363.7824 199.00319 360.4054 205.06819 360.4054 L 208.61119 360.4054 L 231.28819 360.4054 L 250.42219 360.4054 L 250.42219 331.3504 C 250.42219 314.3424 233.41419 314.3424 233.41419 314.3424 L 231.28819 314.3424 L 208.61119 314.3424 L 205.06819 314.3424 C 188.06019 314.3424 188.06019 331.3504 188.06019 331.3504 L 188.06019 440.4844 L 188.06019 440.4884 L 188.06019 440.4964 L 188.06019 440.5004 L 188.06019 451.8224 C 188.06019 457.4914 182.39019 457.4914 182.39019 457.4914 L 171.05219 457.4914 L 171.05219 474.4994 L 171.05219 480.1694 L 176.72119 474.4994 L 182.39019 474.4994 C 201.11319 474.4974 204.53319 457.4834 204.53319 457.4834 C 204.71019 457.4874 204.88719 457.4914 205.06819 457.4914 L 208.61119 457.4914 L 231.28819 457.4914 L 250.42219 457.4914 C 256.09219 457.4914 256.09219 463.1614 256.09219 463.1614 L 256.09219 474.4994 L 273.09919 474.4994 L 273.45319 474.4994 L 278.76919 474.4994 L 273.45319 469.1844 L 273.09919 468.8304 L 273.09919 463.1614 C 273.09919 440.4844 250.42219 440.4844 250.42219 440.4844 L 250.42219 430.5624 L 273.45319 430.5624 L 290.10719 430.5624 L 284.43819 425.6024 L 292.23319 422.0584 Z" fill="#85912d"/><path d="M 352.46919 345.5236 C 350.90419 345.5236 349.63519 346.7926 349.63519 348.3576 C 349.63519 349.9236 350.90419 351.1926 352.46919 351.1926 C 354.03419 351.1926 355.30319 349.9236 355.30319 348.3576 C 355.30319 346.7926 354.03419 345.5236 352.46919 345.5236 Z" fill="#85912d"/><path d="M 375.1465 345.5236 C 373.5815 345.5236 372.3125 346.7926 372.3125 348.3576 C 372.3125 349.9236 373.5815 351.1926 375.1465 351.1926 C 376.7115 351.1926 377.9805 349.9236 377.9805 348.3576 C 377.9805 346.7926 376.7115 345.5236 375.1465 345.5236 Z" fill="#85912d"/><path d="M 290.10739 385.9172 L 273.45339 385.9172 L 254.67439 385.9172 L 254.67439 402.9252 L 273.45339 402.9252 L 290.10739 402.9252 L 284.43839 397.9642 L 292.23339 394.4212 L 284.43839 390.8772 Z" fill="#85912d"/><path d="M 208.61129 345.5236 C 210.17629 345.5236 211.44529 346.7926 211.44529 348.3576 C 211.44529 349.9236 210.17629 351.1926 208.61129 351.1926 C 207.04629 351.1926 205.77729 349.9236 205.77729 348.3576 C 205.77729 346.7926 207.04629 345.5236 208.61129 345.5236 M 231.28829 345.5236 C 232.85429 345.5236 234.12329 346.7926 234.12329 348.3576 C 234.12329 349.9236 232.85429 351.1926 231.28829 351.1926 C 229.72329 351.1926 228.45329 349.9236 228.45329 348.3576 C 228.45329 346.7926 229.72329 345.5236 231.28829 345.5236 M 335.54729 330.0186 C 335.96229 326.0126 338.38129 314.3426 352.46929 314.3426 L 375.1463 314.3426 C 389.2353 314.3426 391.6533 326.0126 392.0683 330.0186 L 386.4853 335.6026 L 380.8163 329.9326 L 375.1463 335.6026 L 369.4773 329.9326 L 363.80829 335.6026 L 358.13829 329.9326 L 352.46929 335.6026 L 346.79929 329.9326 L 341.13129 335.6026 Z" fill="#a1522b"/></g></g></svg>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,219 @@
|
|
1
|
+
#= require vendor/d3.v3
|
2
|
+
#= require vendor/dagre
|
3
|
+
#= require vendor/jquery
|
4
|
+
#= require vendor/ui.jquery
|
5
|
+
#= require vendor/sugar-1.3.8
|
6
|
+
#= require vendor/stacktrace-0.4
|
7
|
+
#= require vendor/chosen.jquery
|
8
|
+
#= require vendor/mustache
|
9
|
+
#= require vendor/hotkeys.jquery
|
10
|
+
#= require_tree ./lib
|
11
|
+
#= require_self
|
12
|
+
|
13
|
+
$ -> window.app = new Application
|
14
|
+
|
15
|
+
class Application
|
16
|
+
|
17
|
+
constructor: ->
|
18
|
+
@data = window.data
|
19
|
+
|
20
|
+
Drawer.attach('svg')
|
21
|
+
|
22
|
+
@toolbar = $('#toolbar')
|
23
|
+
@title = $('#title')
|
24
|
+
@transform = $('#transform')
|
25
|
+
@selector = $('#functions select')
|
26
|
+
@diff = $('#diff')
|
27
|
+
|
28
|
+
@zoomButton = $('#zoom button')
|
29
|
+
|
30
|
+
@container = $('#container')
|
31
|
+
@svg = $('svg')
|
32
|
+
@timeline = $('#timeline')
|
33
|
+
@slider = $('#timeline .slider')
|
34
|
+
@sliderInput = $('#timeline input')
|
35
|
+
@sliderApply = $('#timeline button.ok')
|
36
|
+
@sliderNext = $('#timeline button.next')
|
37
|
+
@sliderPrev = $('#timeline button.prev')
|
38
|
+
@sliderFNext = $('#timeline button.fnext')
|
39
|
+
@sliderFPrev = $('#timeline button.fprev')
|
40
|
+
|
41
|
+
@transforms = $('#transforms')
|
42
|
+
|
43
|
+
@buildZoomer()
|
44
|
+
@buildSelector()
|
45
|
+
@buildSlider()
|
46
|
+
|
47
|
+
redraw = =>
|
48
|
+
@dehasherize()
|
49
|
+
@currentFunction ||= 0
|
50
|
+
@draw()
|
51
|
+
|
52
|
+
redraw(); $(window).bind 'hashchange', redraw
|
53
|
+
|
54
|
+
resize = =>
|
55
|
+
@container.find('.stretch').height($(window).height() - @toolbar.outerHeight() - 4)
|
56
|
+
@slider.height($(window).height() - @toolbar.outerHeight() - 280)
|
57
|
+
|
58
|
+
resize(); $(window).bind('resize', resize)
|
59
|
+
|
60
|
+
draw: ->
|
61
|
+
try
|
62
|
+
@timeline.show()
|
63
|
+
@title.removeClass('error')
|
64
|
+
@transform.removeClass('active').html('')
|
65
|
+
@diff.html('')
|
66
|
+
|
67
|
+
input = @data[@currentFunction]
|
68
|
+
|
69
|
+
Drawer.reset() if @input?.source.name != input.source.name
|
70
|
+
Drawer.clear()
|
71
|
+
|
72
|
+
@input = input
|
73
|
+
@input.rewind(@currentStep)
|
74
|
+
@drawer = new Drawer(new Graph(@input))
|
75
|
+
|
76
|
+
@title.html @input.function.title()
|
77
|
+
@diff.html "~ " + @input.previousState.cursor if @input.previousState?.cursor?
|
78
|
+
|
79
|
+
@renewZoomer()
|
80
|
+
@renewSelector()
|
81
|
+
@renewSlider()
|
82
|
+
@renewNaming()
|
83
|
+
catch error
|
84
|
+
console.log error
|
85
|
+
@timeline.hide()
|
86
|
+
@title.addClass('error').text 'Unable to build graph: problem dumped to console'
|
87
|
+
|
88
|
+
dehasherize: ->
|
89
|
+
hash = window.location.hash.from(1)
|
90
|
+
hash = "0:#{@data[0].events.length-1}" if hash.length == 0
|
91
|
+
[@currentFunction, @currentStep] = hash.split(":").map (x) -> x.toNumber()
|
92
|
+
|
93
|
+
jumpTo: (func, step) ->
|
94
|
+
if Object.isString(func)
|
95
|
+
@selector.find('option').each (x) ->
|
96
|
+
func = $(@).attr('value').toNumber() if $(@).text() == func
|
97
|
+
|
98
|
+
@currentFunction = func; step = @data[func].events.length-1 if step == undefined
|
99
|
+
@currentStep = [step, @data[func].events.length-1].min()
|
100
|
+
@currentStep = [0, @currentStep].max()
|
101
|
+
window.location.hash = "#{@currentFunction}:#{@currentStep || 0}"
|
102
|
+
|
103
|
+
jumpToBlock: (name) ->
|
104
|
+
@drawer.zoomNode @svg.width(), @svg.height(), name
|
105
|
+
|
106
|
+
renewSlider: (max, value) ->
|
107
|
+
@slider.slider
|
108
|
+
max: @input.events.length-1
|
109
|
+
value: @input.cursor
|
110
|
+
|
111
|
+
@slider.find('.label').remove()
|
112
|
+
|
113
|
+
@input.transforms.each (entry) =>
|
114
|
+
height = entry.length/(@input.events.length-1)*100
|
115
|
+
top = 100-entry.id/(@input.events.length-1)*100-height
|
116
|
+
label = "#{entry.label} (#{entry.id}+#{entry.length})"
|
117
|
+
|
118
|
+
if @currentStep >= entry.id && @currentStep < entry.id+entry.length
|
119
|
+
klass = "current"
|
120
|
+
@transform.addClass('active').html(entry.label)
|
121
|
+
else
|
122
|
+
klass = ""
|
123
|
+
|
124
|
+
@transforms.append $("<div class='label #{klass}'><span>#{label}</span></div>")
|
125
|
+
.attr("style", "top: #{top}%; height: #{height}%;")
|
126
|
+
.mousedown (e) =>
|
127
|
+
e.stopPropagation()
|
128
|
+
@jumpTo @currentFunction, entry.id
|
129
|
+
|
130
|
+
renewSelector: ->
|
131
|
+
@selector.val(@currentFunction).trigger('liszt:updated')
|
132
|
+
|
133
|
+
renewZoomer: ->
|
134
|
+
@zoomButton.removeClass 'active'
|
135
|
+
|
136
|
+
renewNaming: ->
|
137
|
+
elements = $('.naming')
|
138
|
+
drawer = @drawer
|
139
|
+
|
140
|
+
elements.filter('.link').click ->
|
141
|
+
element = $(@)
|
142
|
+
active = element.hasClass('active')
|
143
|
+
needle = element.attr("data-naming") || @innerHTML
|
144
|
+
elements.removeClass('active')
|
145
|
+
|
146
|
+
unless active
|
147
|
+
elements.filter(->
|
148
|
+
($(@).attr("data-naming") || @innerHTML) == needle
|
149
|
+
).addClass('active')
|
150
|
+
|
151
|
+
drawer.repaint()
|
152
|
+
|
153
|
+
buildZoomer: ->
|
154
|
+
@zoomButton.click =>
|
155
|
+
if @zoomButton.hasClass('active')
|
156
|
+
@zoomButton.removeClass('active')
|
157
|
+
@drawer.unfit()
|
158
|
+
else
|
159
|
+
@zoomButton.addClass('active')
|
160
|
+
@drawer.fit(@svg.width(), @svg.height())
|
161
|
+
|
162
|
+
buildSelector: ->
|
163
|
+
groups = ['Present', 'Removed'].map (x) -> $("<optgroup label='#{x}'></optgroup>")
|
164
|
+
|
165
|
+
@data.each (f, i) =>
|
166
|
+
group = if f.source.present then groups[0] else groups[1]
|
167
|
+
group.append "<option value='#{i}'>#{f.source.name}</option>"
|
168
|
+
|
169
|
+
groups.each (x) => @selector.append x
|
170
|
+
|
171
|
+
@selector.chosen(search_contains: true).change => @jumpTo @selector.val().toNumber()
|
172
|
+
@selector.val(@currentFunction).trigger('liszt:updated')
|
173
|
+
|
174
|
+
buildSlider: ->
|
175
|
+
$('button').button()
|
176
|
+
|
177
|
+
@sliderInput.focus -> $(@).blur()
|
178
|
+
|
179
|
+
@slider.slider
|
180
|
+
min: 0
|
181
|
+
orientation: 'vertical'
|
182
|
+
slide: (event, ui) => @sliderInput.val ui.value
|
183
|
+
change: (event) =>
|
184
|
+
@sliderInput.val @slider.slider('value')
|
185
|
+
# Redraw if triggered by manual slider scroll
|
186
|
+
@jumpTo @currentFunction, @sliderInput.val().toNumber() if event.originalEvent
|
187
|
+
|
188
|
+
@slider.on 'mouseenter', '.label', -> $(this).find('span').show()
|
189
|
+
@slider.on 'mouseout', '.label', -> $(this).find('span').hide()
|
190
|
+
|
191
|
+
next = => @jumpTo @currentFunction, @currentStep+1
|
192
|
+
prev = => @jumpTo @currentFunction, @currentStep-1
|
193
|
+
|
194
|
+
fnext = =>
|
195
|
+
step = @input.transforms.find (x) => x.id > @currentStep
|
196
|
+
if step
|
197
|
+
@jumpTo @currentFunction, step.id
|
198
|
+
else
|
199
|
+
transform = @input.transforms.last()
|
200
|
+
step = transform.id + transform.length
|
201
|
+
@jumpTo @currentFunction, step if step > @currentStep
|
202
|
+
|
203
|
+
fprev = =>
|
204
|
+
step = @input.transforms.findAll((x) => x.id < @currentStep).last()
|
205
|
+
@jumpTo @currentFunction, step.id if step
|
206
|
+
|
207
|
+
@sliderPrev.click prev
|
208
|
+
@sliderNext.click next
|
209
|
+
@sliderFNext.click fnext
|
210
|
+
@sliderFPrev.click fprev
|
211
|
+
|
212
|
+
$(document).bind 'keydown.h', fprev
|
213
|
+
$(document).bind 'keydown.j', prev
|
214
|
+
$(document).bind 'keydown.k', next
|
215
|
+
$(document).bind 'keydown.l', fnext
|
216
|
+
$(document).bind 'keydown.x', => @zoomButton.click()
|
217
|
+
$(document).bind 'keydown.backspace', (e) ->
|
218
|
+
e.preventDefault()
|
219
|
+
history.back()
|