ruote-kit 2.2.0.3 → 2.3.0.2
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.
- data/CHANGELOG.txt +28 -1
 - data/CREDITS.txt +8 -2
 - data/LICENSE.txt +1 -1
 - data/Rakefile +21 -9
 - data/lib/ruote-kit.rb +13 -4
 - data/lib/ruote-kit/core_ext.rb +15 -0
 - data/lib/ruote-kit/helpers/json_helpers.rb +22 -7
 - data/lib/ruote-kit/helpers/link_helpers.rb +9 -7
 - data/lib/ruote-kit/helpers/pagination_helpers.rb +1 -2
 - data/lib/ruote-kit/helpers/render_helpers.rb +1 -1
 - data/lib/ruote-kit/public/_ruote/images/favicon.png +0 -0
 - data/lib/ruote-kit/public/_ruote/images/{ruote_buttons.png → ruote-buttons.png} +0 -0
 - data/lib/ruote-kit/public/_ruote/images/ruote.png +0 -0
 - data/lib/ruote-kit/public/_ruote/javascripts/foolbox-all.min.js +3 -0
 - data/lib/ruote-kit/public/_ruote/javascripts/jquery-1.9.1.min.js +5 -0
 - data/lib/ruote-kit/public/_ruote/javascripts/rk.js +68 -17
 - data/lib/ruote-kit/public/_ruote/javascripts/ruote-fluo-all.min.js +3 -0
 - data/lib/ruote-kit/public/_ruote/stylesheets/rk.css +82 -12
 - data/lib/ruote-kit/public/_ruote/stylesheets/ruote-buttons.png +0 -0
 - data/lib/ruote-kit/public/_ruote/stylesheets/ruote-fluo-editor.css +9 -6
 - data/lib/ruote-kit/public/_ruote/stylesheets/ruote-fluo.css +62 -0
 - data/lib/ruote-kit/resources/errors.rb +8 -3
 - data/lib/ruote-kit/resources/expressions.rb +38 -35
 - data/lib/ruote-kit/resources/participants.rb +1 -1
 - data/lib/ruote-kit/resources/processes.rb +61 -4
 - data/lib/ruote-kit/resources/workitems.rb +4 -4
 - data/lib/ruote-kit/version.rb +1 -1
 - data/lib/ruote-kit/views/_pagination.html.haml +2 -2
 - data/lib/ruote-kit/views/_tree_editor.html.haml +63 -30
 - data/lib/ruote-kit/views/error.html.haml +50 -9
 - data/lib/ruote-kit/views/errors.html.haml +1 -1
 - data/lib/ruote-kit/views/expression.html.haml +83 -33
 - data/lib/ruote-kit/views/expressions.html.haml +23 -8
 - data/lib/ruote-kit/views/http_error.html.haml +9 -2
 - data/lib/ruote-kit/views/layout.html.haml +14 -13
 - data/lib/ruote-kit/views/process.html.haml +75 -20
 - data/lib/ruote-kit/views/processes.html.haml +9 -3
 - data/lib/ruote-kit/views/processes_new.html.haml +19 -2
 - data/lib/ruote-kit/views/schedules.html.haml +2 -2
 - data/lib/ruote-kit/views/workitem.html.haml +17 -6
 - data/ruote-kit.gemspec +9 -7
 - data/spec/cases/orphan_workitem_spec.rb +141 -0
 - data/spec/core_ext_spec.rb +19 -0
 - data/spec/resources/errors_spec.rb +182 -156
 - data/spec/resources/expressions_spec.rb +497 -379
 - data/spec/resources/index_spec.rb +5 -5
 - data/spec/resources/participants_spec.rb +64 -75
 - data/spec/resources/processes_spec.rb +396 -277
 - data/spec/resources/schedules_spec.rb +92 -76
 - data/spec/resources/workitems_spec.rb +352 -343
 - data/spec/ruote-kit_configure_spec.rb +41 -13
 - data/spec/spec_helper.rb +6 -8
 - data/spec/support/link_helper.rb +11 -0
 - data/spec/webapp_helpers_spec.rb +29 -23
 - metadata +161 -180
 - data/README.rdoc +0 -313
 - data/lib/ruote-kit/public/_ruote/images/favicon.ico +0 -0
 - data/lib/ruote-kit/public/_ruote/javascripts/jquery-1.4.2.min.js +0 -154
 - data/lib/ruote-kit/public/_ruote/javascripts/ruote-fluo-editor.js +0 -548
 - data/lib/ruote-kit/public/_ruote/javascripts/ruote-fluo.js +0 -1118
 
| 
         @@ -24,8 +24,36 @@ class RuoteKit::Application 
     | 
|
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                @process = RuoteKit.engine.process(params[:wfid])
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
                return http_error(404) if @process.nil? or @process.expressions.empty?
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                @pins =
         
     | 
| 
      
 30 
     | 
    
         
            +
                  @process.leaves.collect { |fexp|
         
     | 
| 
      
 31 
     | 
    
         
            +
                    pin =
         
     | 
| 
      
 32 
     | 
    
         
            +
                      if fexp.error
         
     | 
| 
      
 33 
     | 
    
         
            +
                        [ 'error', 'er' ]
         
     | 
| 
      
 34 
     | 
    
         
            +
                      elsif fexp.class == Ruote::Exp::ParticipantExpression
         
     | 
| 
      
 35 
     | 
    
         
            +
                        [ 'workitem', 'wi' ]
         
     | 
| 
      
 36 
     | 
    
         
            +
                      else
         
     | 
| 
      
 37 
     | 
    
         
            +
                        [ 'other', '-' ]
         
     | 
| 
      
 38 
     | 
    
         
            +
                      end
         
     | 
| 
      
 39 
     | 
    
         
            +
                    [ fexp.fei.expid, *pin ]
         
     | 
| 
      
 40 
     | 
    
         
            +
                  }
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                respond_with :process
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              put '/_ruote/processes/:wfid' do
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                @process = RuoteKit.engine.process(params[:wfid])
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
       27 
49 
     | 
    
         
             
                return http_error(404) unless @process
         
     | 
| 
       28 
50 
     | 
    
         | 
| 
      
 51 
     | 
    
         
            +
                if fetch_put_info['state'] == 'paused'
         
     | 
| 
      
 52 
     | 
    
         
            +
                  RuoteKit.engine.pause(params[:wfid])
         
     | 
| 
      
 53 
     | 
    
         
            +
                else
         
     | 
| 
      
 54 
     | 
    
         
            +
                  RuoteKit.engine.resume(params[:wfid])
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
       29 
57 
     | 
    
         
             
                respond_with :process
         
     | 
| 
       30 
58 
     | 
    
         
             
              end
         
     | 
| 
       31 
59 
     | 
    
         | 
| 
         @@ -38,7 +66,11 @@ class RuoteKit::Application 
     | 
|
| 
       38 
66 
     | 
    
         
             
                  @wfid = RuoteKit.engine.launch(
         
     | 
| 
       39 
67 
     | 
    
         
             
                    @info.definition, @info.fields || {}, @info.variables || {})
         
     | 
| 
       40 
68 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                rescue  
     | 
| 
      
 69 
     | 
    
         
            +
                rescue => e
         
     | 
| 
      
 70 
     | 
    
         
            +
                  #p e
         
     | 
| 
      
 71 
     | 
    
         
            +
                  #p e.ruby
         
     | 
| 
      
 72 
     | 
    
         
            +
                  #puts e.ruby.backtrace
         
     | 
| 
      
 73 
     | 
    
         
            +
                  #puts e.backtrace
         
     | 
| 
       42 
74 
     | 
    
         
             
                  return http_error(400, e)
         
     | 
| 
       43 
75 
     | 
    
         
             
                end
         
     | 
| 
       44 
76 
     | 
    
         | 
| 
         @@ -59,22 +91,47 @@ class RuoteKit::Application 
     | 
|
| 
       59 
91 
     | 
    
         
             
                end
         
     | 
| 
       60 
92 
     | 
    
         | 
| 
       61 
93 
     | 
    
         
             
                respond_to do |format|
         
     | 
| 
       62 
     | 
    
         
            -
                  format.html { redirect '/_ruote/processes' }
         
     | 
| 
      
 94 
     | 
    
         
            +
                  format.html { redirect url('/_ruote/processes') }
         
     | 
| 
       63 
95 
     | 
    
         
             
                  format.json { json :status, :ok }
         
     | 
| 
       64 
96 
     | 
    
         
             
                end
         
     | 
| 
       65 
97 
     | 
    
         
             
              end
         
     | 
| 
       66 
98 
     | 
    
         | 
| 
       67 
99 
     | 
    
         
             
              protected
         
     | 
| 
       68 
100 
     | 
    
         | 
| 
      
 101 
     | 
    
         
            +
              class LaunchInfo
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                attr_accessor :definition, :fields, :variables
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                def initialize(h={})
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                  @definition = h['definition'].strip
         
     | 
| 
      
 108 
     | 
    
         
            +
                  @fields = h['fields']
         
     | 
| 
      
 109 
     | 
    
         
            +
                  @variables = h['variables']
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                  if @definition.match(/^define /) && @definition.match(/\bend$/)
         
     | 
| 
      
 112 
     | 
    
         
            +
                    @definition = 'Ruote.' + @definition
         
     | 
| 
      
 113 
     | 
    
         
            +
                  end
         
     | 
| 
      
 114 
     | 
    
         
            +
                end
         
     | 
| 
      
 115 
     | 
    
         
            +
              end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
              def fetch_put_info
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                if request.content_type.match(/^application\/json(;.+)?$/)
         
     | 
| 
      
 120 
     | 
    
         
            +
                  Rufus::Json.decode(request.body.read)
         
     | 
| 
      
 121 
     | 
    
         
            +
                else
         
     | 
| 
      
 122 
     | 
    
         
            +
                  params
         
     | 
| 
      
 123 
     | 
    
         
            +
                end
         
     | 
| 
      
 124 
     | 
    
         
            +
              end
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
       69 
126 
     | 
    
         
             
              def fetch_launch_info
         
     | 
| 
       70 
127 
     | 
    
         | 
| 
       71 
128 
     | 
    
         
             
                if request.content_type == 'application/json' then
         
     | 
| 
       72 
129 
     | 
    
         | 
| 
       73 
     | 
    
         
            -
                   
     | 
| 
      
 130 
     | 
    
         
            +
                  LaunchInfo.new(Rufus::Json.decode(request.body.read))
         
     | 
| 
       74 
131 
     | 
    
         | 
| 
       75 
132 
     | 
    
         
             
                else
         
     | 
| 
       76 
133 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
                  info =  
     | 
| 
      
 134 
     | 
    
         
            +
                  info = LaunchInfo.new('definition' => params[:definition])
         
     | 
| 
       78 
135 
     | 
    
         | 
| 
       79 
136 
     | 
    
         
             
                  fields = params[:fields] || ''
         
     | 
| 
       80 
137 
     | 
    
         
             
                  fields = '{}' if fields.empty?
         
     | 
| 
         @@ -35,7 +35,6 @@ class RuoteKit::Application 
     | 
|
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                if @workitem
         
     | 
| 
       37 
37 
     | 
    
         
             
                  etag @workitem.to_h['_rev']
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
38 
     | 
    
         
             
                  respond_with :workitem
         
     | 
| 
       40 
39 
     | 
    
         
             
                else
         
     | 
| 
       41 
40 
     | 
    
         
             
                  respond_with :workitems
         
     | 
| 
         @@ -62,15 +61,16 @@ class RuoteKit::Application 
     | 
|
| 
       62 
61 
     | 
    
         
             
                end
         
     | 
| 
       63 
62 
     | 
    
         | 
| 
       64 
63 
     | 
    
         
             
                if options[:proceed]
         
     | 
| 
       65 
     | 
    
         
            -
                  RuoteKit.engine.storage_participant. 
     | 
| 
      
 64 
     | 
    
         
            +
                  RuoteKit.engine.storage_participant.proceed(@workitem)
         
     | 
| 
       66 
65 
     | 
    
         
             
                end
         
     | 
| 
       67 
66 
     | 
    
         | 
| 
       68 
67 
     | 
    
         
             
                respond_to do |format|
         
     | 
| 
       69 
68 
     | 
    
         | 
| 
       70 
69 
     | 
    
         
             
                  format.html do
         
     | 
| 
       71 
70 
     | 
    
         
             
                    redirect(options[:proceed] ?
         
     | 
| 
       72 
     | 
    
         
            -
                      "/_ruote/workitems/#{@workitem.fei.wfid}" :
         
     | 
| 
       73 
     | 
    
         
            -
                      "/_ruote/workitems/#{@workitem.fei.sid}")
         
     | 
| 
      
 71 
     | 
    
         
            +
                      url("/_ruote/workitems/#{@workitem.fei.wfid}") :
         
     | 
| 
      
 72 
     | 
    
         
            +
                      url("/_ruote/workitems/#{@workitem.fei.sid}")
         
     | 
| 
      
 73 
     | 
    
         
            +
                    )
         
     | 
| 
       74 
74 
     | 
    
         
             
                  end
         
     | 
| 
       75 
75 
     | 
    
         
             
                  format.json do
         
     | 
| 
       76 
76 
     | 
    
         
             
                    json :workitem
         
     | 
    
        data/lib/ruote-kit/version.rb
    CHANGED
    
    
| 
         @@ -17,7 +17,7 @@ 
     | 
|
| 
       17 
17 
     | 
    
         
             
                = @count
         
     | 
| 
       18 
18 
     | 
    
         
             
                = res
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                - las = ((@count / lim.to_f).ceil - 1) * lim
         
     | 
| 
      
 20 
     | 
    
         
            +
                - las = lim < 1 ? @count : ((@count / lim.to_f).ceil - 1) * lim
         
     | 
| 
       21 
21 
     | 
    
         
             
                - pre = [ 0, @skip - lim ].max
         
     | 
| 
       22 
22 
     | 
    
         
             
                - nex = [ @skip + lim, las ].min
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
         @@ -35,4 +35,4 @@ 
     | 
|
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                - if resources = instance_variable_get("@#{res}")
         
     | 
| 
       37 
37 
     | 
    
         
             
                  = "#{resources.size} #{res}"
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
         @@ -1,10 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         | 
| 
       2 
2 
     | 
    
         
             
            #overlay
         
     | 
| 
       3 
3 
     | 
    
         
             
            #editor
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
      
 4 
     | 
    
         
            +
              #fluo
         
     | 
| 
       5 
5 
     | 
    
         
             
              #fluo_editor
         
     | 
| 
       6 
     | 
    
         
            -
               
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
              .editor_buttons
         
     | 
| 
      
 7 
     | 
    
         
            +
                %button.use{ :value => 'Ruby' } use (Ruby)
         
     | 
| 
      
 8 
     | 
    
         
            +
                %button.use{ :value => 'Json' } use (JSON)
         
     | 
| 
      
 9 
     | 
    
         
            +
                %button.use{ :value => 'Radial' } use (Radial)
         
     | 
| 
      
 10 
     | 
    
         
            +
                %button.discard{ :title => 'close' } discard
         
     | 
| 
       8 
11 
     | 
    
         | 
| 
       9 
12 
     | 
    
         
             
            :javascript
         
     | 
| 
       10 
13 
     | 
    
         | 
| 
         @@ -13,40 +16,70 @@ 
     | 
|
| 
       13 
16 
     | 
    
         
             
              $('#overlay').hide();
         
     | 
| 
       14 
17 
     | 
    
         
             
              $('#editor').hide();
         
     | 
| 
       15 
18 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
              function  
     | 
| 
      
 19 
     | 
    
         
            +
              $('button.use').each(function(i, e) {
         
     | 
| 
      
 20 
     | 
    
         
            +
                $(e).attr('title', 'close and use this definition as ' + e.value);
         
     | 
| 
      
 21 
     | 
    
         
            +
              });
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              $('button.use').on('click', function(ev) {
         
     | 
| 
      
 24 
     | 
    
         
            +
                RkEditor.hide(ev.target.value);
         
     | 
| 
      
 25 
     | 
    
         
            +
                return false;
         
     | 
| 
      
 26 
     | 
    
         
            +
              });
         
     | 
| 
      
 27 
     | 
    
         
            +
              $('button.discard').on('click', function() {
         
     | 
| 
      
 28 
     | 
    
         
            +
                RkEditor.hide(false);
         
     | 
| 
      
 29 
     | 
    
         
            +
                return false;
         
     | 
| 
      
 30 
     | 
    
         
            +
              });
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              // disable "save as Ruby" for now
         
     | 
| 
      
 33 
     | 
    
         
            +
              //
         
     | 
| 
      
 34 
     | 
    
         
            +
              var $ruby = $('button.use[value="Ruby"]');
         
     | 
| 
      
 35 
     | 
    
         
            +
              $ruby.attr(
         
     | 
| 
      
 36 
     | 
    
         
            +
                'disabled',
         
     | 
| 
      
 37 
     | 
    
         
            +
                'disabled');
         
     | 
| 
      
 38 
     | 
    
         
            +
              $ruby.attr(
         
     | 
| 
      
 39 
     | 
    
         
            +
                'title',
         
     | 
| 
      
 40 
     | 
    
         
            +
                $ruby.attr('title') +
         
     | 
| 
      
 41 
     | 
    
         
            +
                ' (disabled for now, Radial and JSON are sufficient)');
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              var RkEditor = (function() {
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                var self = this;
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                this.init = function() {
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                  var tree = window.tree || #{sample_process_tree};
         
     | 
| 
      
 50 
     | 
    
         
            +
                  var def = $('#tree').val();
         
     | 
| 
      
 51 
     | 
    
         
            +
                  if (def.match(/\s*\[/)) tree = JSON.parse(def);
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                  RuoteFluoEditor.render('#fluo_editor', tree);
         
     | 
| 
      
 54 
     | 
    
         
            +
                  RuoteFluo.render('#fluo', tree);
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  $('#fluo_editor')[0].onChange = function(tree) {
         
     | 
| 
      
 57 
     | 
    
         
            +
                    RuoteFluo.render('#fluo', tree);
         
     | 
| 
      
 58 
     | 
    
         
            +
                  }
         
     | 
| 
      
 59 
     | 
    
         
            +
                  $('#fluo_editor')[0].onOver = function(expid) {
         
     | 
| 
      
 60 
     | 
    
         
            +
                    RuoteFluo.highlight('#fluo', expid);
         
     | 
| 
      
 61 
     | 
    
         
            +
                  }
         
     | 
| 
      
 62 
     | 
    
         
            +
                }
         
     | 
| 
       17 
63 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
                 
     | 
| 
       19 
     | 
    
         
            -
                var def = $('#tree')[0].value;
         
     | 
| 
       20 
     | 
    
         
            -
                if (def.match(/\s*\[/)) tree = JSON.parse(def);
         
     | 
| 
      
 64 
     | 
    
         
            +
                this.show = function() {
         
     | 
| 
       21 
65 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                Fluo.renderFlow('efluo', tree);
         
     | 
| 
       24 
     | 
    
         
            -
                Fluo.crop('efluo');
         
     | 
| 
      
 66 
     | 
    
         
            +
                  $('#overlay').css('height', '' + $(document).height() + 'px');
         
     | 
| 
       25 
67 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                $('#fluo_editor')[0].onOver = function (expid) {
         
     | 
| 
       31 
     | 
    
         
            -
                  Fluo.highlight('efluo', expid);
         
     | 
| 
      
 68 
     | 
    
         
            +
                  $('#overlay').slideDown(function() {
         
     | 
| 
      
 69 
     | 
    
         
            +
                    $('#editor').show();
         
     | 
| 
      
 70 
     | 
    
         
            +
                    RkEditor.init()
         
     | 
| 
      
 71 
     | 
    
         
            +
                  });
         
     | 
| 
       32 
72 
     | 
    
         
             
                }
         
     | 
| 
       33 
     | 
    
         
            -
              }
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
              function showEditor () {
         
     | 
| 
       36 
73 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                 
     | 
| 
      
 74 
     | 
    
         
            +
                this.hide = function(use) {
         
     | 
| 
       38 
75 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                  '' 
     | 
| 
      
 76 
     | 
    
         
            +
                  $('#editor').hide();
         
     | 
| 
      
 77 
     | 
    
         
            +
                  $('#overlay').hide();
         
     | 
| 
       41 
78 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
              function hideEditor (use) {
         
     | 
| 
      
 79 
     | 
    
         
            +
                  if (use) $('#tree').val(RuoteFluoEditor['as' + use]('#fluo_editor'));
         
     | 
| 
      
 80 
     | 
    
         
            +
                }
         
     | 
| 
       46 
81 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                 
     | 
| 
       48 
     | 
    
         
            -
                $('#overlay').hide();
         
     | 
| 
      
 82 
     | 
    
         
            +
                return this;
         
     | 
| 
       49 
83 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
              }
         
     | 
| 
      
 84 
     | 
    
         
            +
              }).apply({});
         
     | 
| 
       52 
85 
     | 
    
         | 
| 
         @@ -1,15 +1,25 @@ 
     | 
|
| 
       1 
1 
     | 
    
         | 
| 
       2 
2 
     | 
    
         
             
            - # under the MIT license, see LICENSE.txt
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
      
 4 
     | 
    
         
            +
            - @_uses_fluo = true
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       4 
6 
     | 
    
         
             
            %h1 error #{@error.fei.sid}
         
     | 
| 
       5 
7 
     | 
    
         | 
| 
      
 8 
     | 
    
         
            +
            #fluo
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       6 
10 
     | 
    
         
             
            %table.details
         
     | 
| 
       7 
11 
     | 
    
         | 
| 
       8 
12 
     | 
    
         
             
              %tr
         
     | 
| 
       9 
13 
     | 
    
         
             
                %td
         
     | 
| 
       10 
14 
     | 
    
         
             
                  id
         
     | 
| 
       11 
15 
     | 
    
         
             
                %td
         
     | 
| 
       12 
     | 
    
         
            -
                   
     | 
| 
      
 16 
     | 
    
         
            +
                  &= @error.fei.sid
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              %tr
         
     | 
| 
      
 19 
     | 
    
         
            +
                %td
         
     | 
| 
      
 20 
     | 
    
         
            +
                  at
         
     | 
| 
      
 21 
     | 
    
         
            +
                %td
         
     | 
| 
      
 22 
     | 
    
         
            +
                  &= @error.at
         
     | 
| 
       13 
23 
     | 
    
         | 
| 
       14 
24 
     | 
    
         
             
              %tr
         
     | 
| 
       15 
25 
     | 
    
         
             
                %td
         
     | 
| 
         @@ -27,8 +37,19 @@ 
     | 
|
| 
       27 
37 
     | 
    
         
             
                %td
         
     | 
| 
       28 
38 
     | 
    
         
             
                  trace
         
     | 
| 
       29 
39 
     | 
    
         
             
                %td
         
     | 
| 
       30 
     | 
    
         
            -
                  %pre.trace 
     | 
| 
       31 
     | 
    
         
            -
                  %pre.trace{ : 
     | 
| 
      
 40 
     | 
    
         
            +
                  %pre.trace #{h(@error.trace[0, 80] + '...')}
         
     | 
| 
      
 41 
     | 
    
         
            +
                  %pre.trace{ :style => 'display: none;' } #{h(@error.trace)}
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              %tr
         
     | 
| 
      
 44 
     | 
    
         
            +
                %td
         
     | 
| 
      
 45 
     | 
    
         
            +
                  details
         
     | 
| 
      
 46 
     | 
    
         
            +
                %td
         
     | 
| 
      
 47 
     | 
    
         
            +
                  - if @error.details.nil?
         
     | 
| 
      
 48 
     | 
    
         
            +
                    %pre.details nil
         
     | 
| 
      
 49 
     | 
    
         
            +
                  - else
         
     | 
| 
      
 50 
     | 
    
         
            +
                    - details = Ruote.pps(@error.details)
         
     | 
| 
      
 51 
     | 
    
         
            +
                    %pre.details #{h(details[0, 80] + '...')}
         
     | 
| 
      
 52 
     | 
    
         
            +
                    %pre.details{ :style => 'display: none;' } #{h(details)}
         
     | 
| 
       32 
53 
     | 
    
         | 
| 
       33 
54 
     | 
    
         
             
              %tr
         
     | 
| 
       34 
55 
     | 
    
         
             
                %td.no_border{ :colspan => 2 }
         
     | 
| 
         @@ -40,8 +61,8 @@ 
     | 
|
| 
       40 
61 
     | 
    
         
             
                %td
         
     | 
| 
       41 
62 
     | 
    
         
             
                  GET
         
     | 
| 
       42 
63 
     | 
    
         
             
                  = alink(:expressions, @error.fei.sid)
         
     | 
| 
       43 
     | 
    
         
            -
                   
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 64 
     | 
    
         
            +
                  -#%span.explanation
         
     | 
| 
      
 65 
     | 
    
         
            +
                  -#  you can re-apply the expression (and hopefully nuke the error) from there
         
     | 
| 
       45 
66 
     | 
    
         
             
              %tr
         
     | 
| 
       46 
67 
     | 
    
         
             
                %td
         
     | 
| 
       47 
68 
     | 
    
         
             
                  process
         
     | 
| 
         @@ -50,7 +71,7 @@ 
     | 
|
| 
       50 
71 
     | 
    
         
             
                  = alink(:processes, @error.wfid)
         
     | 
| 
       51 
72 
     | 
    
         
             
              %tr
         
     | 
| 
       52 
73 
     | 
    
         
             
                %td
         
     | 
| 
       53 
     | 
    
         
            -
                  errors 
     | 
| 
      
 74 
     | 
    
         
            +
                  process errors
         
     | 
| 
       54 
75 
     | 
    
         
             
                %td
         
     | 
| 
       55 
76 
     | 
    
         
             
                  GET
         
     | 
| 
       56 
77 
     | 
    
         
             
                  = alink(:errors, @error.wfid)
         
     | 
| 
         @@ -62,8 +83,28 @@ 
     | 
|
| 
       62 
83 
     | 
    
         
             
                %td
         
     | 
| 
       63 
84 
     | 
    
         
             
                %td
         
     | 
| 
       64 
85 
     | 
    
         
             
                  %form{ :method => 'POST' }
         
     | 
| 
       65 
     | 
    
         
            -
                    %input{ :type => 'hidden', :name => '_method', :value => ' 
     | 
| 
      
 86 
     | 
    
         
            +
                    %input{ :type => 'hidden', :name => '_method', :value => 'DELETE' }
         
     | 
| 
       66 
87 
     | 
    
         
             
                    %input{ :type => 'submit', :value => "DELETE /_ruote/errors/#{@error.fei.sid}", :title => 'replay at this error' }
         
     | 
| 
       67 
     | 
    
         
            -
                     
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 88 
     | 
    
         
            +
                    -#%span.explanation
         
     | 
| 
      
 89 
     | 
    
         
            +
                    -#  replay at this error
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            :javascript
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
              $(document).ready(function() {
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                $('pre.trace').on('click', Rk.toggleNext);
         
     | 
| 
      
 96 
     | 
    
         
            +
                $('pre.details').on('click', Rk.toggleNext);
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                Rk.fitFluo();
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                var proc_rep = #{process_tree(@process)};
         
     | 
| 
      
 101 
     | 
    
         
            +
                var pins = #{Rufus::Json.encode(@pins)};
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                RuoteFluo.render('#fluo', proc_rep, { fit: 'down' });
         
     | 
| 
      
 104 
     | 
    
         
            +
                Rk.onClickZoom('#fluo');
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                pins.forEach(function(pin) {
         
     | 
| 
      
 107 
     | 
    
         
            +
                  RuoteFluo.pin('#fluo', pin[0], pin[1], pin[2])
         
     | 
| 
      
 108 
     | 
    
         
            +
                });
         
     | 
| 
      
 109 
     | 
    
         
            +
              });
         
     | 
| 
       69 
110 
     | 
    
         | 
| 
         @@ -7,11 +7,12 @@ 
     | 
|
| 
       7 
7 
     | 
    
         
             
              expression
         
     | 
| 
       8 
8 
     | 
    
         
             
              = @expression.fei.sid
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
            #exp_fluo
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
            %form{ :method => 'POST', :enctype => 'multipart/form-data', :accept_charset => 'UTF-8' }
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
              %input#_method{ :type => 'hidden', :name => '_method', :value => 'DELETE' }
         
     | 
| 
      
 15 
     | 
    
         
            +
              %input#state{ :type => 'hidden', :name => 'state', :value => '' }
         
     | 
| 
       15 
16 
     | 
    
         
             
              %input{ :type => 'hidden', :name => '_snowman', :value => '☃' }
         
     | 
| 
       16 
17 
     | 
    
         | 
| 
       17 
18 
     | 
    
         
             
              %table.details
         
     | 
| 
         @@ -33,9 +34,14 @@ 
     | 
|
| 
       33 
34 
     | 
    
         
             
                    &= @expression.tree.first
         
     | 
| 
       34 
35 
     | 
    
         
             
                %tr
         
     | 
| 
       35 
36 
     | 
    
         
             
                  %td
         
     | 
| 
       36 
     | 
    
         
            -
                     
     | 
| 
      
 37 
     | 
    
         
            +
                    class
         
     | 
| 
       37 
38 
     | 
    
         
             
                  %td
         
     | 
| 
       38 
39 
     | 
    
         
             
                    &= @expression.class.to_s
         
     | 
| 
      
 40 
     | 
    
         
            +
                %tr
         
     | 
| 
      
 41 
     | 
    
         
            +
                  %td
         
     | 
| 
      
 42 
     | 
    
         
            +
                    state
         
     | 
| 
      
 43 
     | 
    
         
            +
                  %td
         
     | 
| 
      
 44 
     | 
    
         
            +
                    &= @expression.state
         
     | 
| 
       39 
45 
     | 
    
         
             
                - if @expression.original_tree != @expression.tree
         
     | 
| 
       40 
46 
     | 
    
         
             
                  %tr
         
     | 
| 
       41 
47 
     | 
    
         
             
                    %td
         
     | 
| 
         @@ -44,9 +50,9 @@ 
     | 
|
| 
       44 
50 
     | 
    
         
             
                      - ruby = Ruote::Reader.to_ruby(@expression.original_tree)
         
     | 
| 
       45 
51 
     | 
    
         
             
                      - rubyline = ruby.split("\n").first
         
     | 
| 
       46 
52 
     | 
    
         
             
                      - json = Rufus::Json.pretty_encode(@expression.original_tree)
         
     | 
| 
       47 
     | 
    
         
            -
                      %pre.pdef 
     | 
| 
       48 
     | 
    
         
            -
                      %pre.pdef{ : 
     | 
| 
       49 
     | 
    
         
            -
                      %pre.pdef{ : 
     | 
| 
      
 53 
     | 
    
         
            +
                      %pre.pdef #{rubyline}
         
     | 
| 
      
 54 
     | 
    
         
            +
                      %pre.pdef{ :style => 'display: none;' } #{ruby}
         
     | 
| 
      
 55 
     | 
    
         
            +
                      %pre.pdef{ :style => 'display: none;' } #{json}
         
     | 
| 
       50 
56 
     | 
    
         
             
                %tr
         
     | 
| 
       51 
57 
     | 
    
         
             
                  %td
         
     | 
| 
       52 
58 
     | 
    
         
             
                    tree
         
     | 
| 
         @@ -54,9 +60,9 @@ 
     | 
|
| 
       54 
60 
     | 
    
         
             
                    - ruby = Ruote::Reader.to_ruby(@expression.tree)
         
     | 
| 
       55 
61 
     | 
    
         
             
                    - rubyline = ruby.split("\n").first
         
     | 
| 
       56 
62 
     | 
    
         
             
                    - json = Rufus::Json.pretty_encode(@expression.tree)
         
     | 
| 
       57 
     | 
    
         
            -
                    %pre.pdef 
     | 
| 
       58 
     | 
    
         
            -
                    %pre.pdef{ : 
     | 
| 
       59 
     | 
    
         
            -
                    %pre.pdef{ : 
     | 
| 
      
 63 
     | 
    
         
            +
                    %pre.pdef #{rubyline}
         
     | 
| 
      
 64 
     | 
    
         
            +
                    %pre.pdef{ :style => 'display: none;' } #{ruby}
         
     | 
| 
      
 65 
     | 
    
         
            +
                    %pre.pdef{ :style => 'display: none;' } #{json}
         
     | 
| 
       60 
66 
     | 
    
         | 
| 
       61 
67 
     | 
    
         
             
                - if sched = @process.schedules.find { |s| s['owner'] == @expression.fei }
         
     | 
| 
       62 
68 
     | 
    
         
             
                  %tr
         
     | 
| 
         @@ -97,23 +103,35 @@ 
     | 
|
| 
       97 
103 
     | 
    
         | 
| 
       98 
104 
     | 
    
         
             
                %tr
         
     | 
| 
       99 
105 
     | 
    
         
             
                  %td
         
     | 
| 
       100 
     | 
    
         
            -
                     
     | 
| 
      
 106 
     | 
    
         
            +
                    - if @expression.state == 'paused'
         
     | 
| 
      
 107 
     | 
    
         
            +
                      %input{ :type => 'submit', :value => 'resume' }
         
     | 
| 
      
 108 
     | 
    
         
            +
                    - else
         
     | 
| 
      
 109 
     | 
    
         
            +
                      %input{ :type => 'submit', :value => 'pause' }
         
     | 
| 
      
 110 
     | 
    
         
            +
                      %input{ :type => 'checkbox', :name => 'breakpoint' }
         
     | 
| 
      
 111 
     | 
    
         
            +
                      breakpoint
         
     | 
| 
      
 112 
     | 
    
         
            +
                  %td
         
     | 
| 
      
 113 
     | 
    
         
            +
                    %span.description PUT /_ruote/expressions/#{@expression.fei.sid}
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                %tr
         
     | 
| 
      
 116 
     | 
    
         
            +
                  %td.no_border{ :colspan => 2 }
         
     | 
| 
      
 117 
     | 
    
         
            +
                     
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                %tr
         
     | 
| 
      
 120 
     | 
    
         
            +
                  %td
         
     | 
| 
      
 121 
     | 
    
         
            +
                    %input{ :type => 'submit', :value => 'cancel' }
         
     | 
| 
       101 
122 
     | 
    
         
             
                  %td
         
     | 
| 
       102 
     | 
    
         
            -
                    %input{ :type => 'submit', :value => 'cancel', :onclick => 'return confirm("really ?");' }
         
     | 
| 
       103 
123 
     | 
    
         
             
                    %span.description DELETE /_ruote/expressions/#{@expression.fei.sid}
         
     | 
| 
       104 
124 
     | 
    
         
             
                %tr
         
     | 
| 
       105 
125 
     | 
    
         
             
                  %td
         
     | 
| 
       106 
     | 
    
         
            -
                    kill
         
     | 
| 
      
 126 
     | 
    
         
            +
                    %input{ :type => 'submit', :value => 'kill' }
         
     | 
| 
       107 
127 
     | 
    
         
             
                  %td
         
     | 
| 
       108 
     | 
    
         
            -
                    -#%input{ :type => 'hidden', :name => '_kill', :value => '1' }
         
     | 
| 
       109 
     | 
    
         
            -
                    %input{ :type => 'submit', :value => 'kill', :onclick => 'return confirm("really ?");' }
         
     | 
| 
       110 
128 
     | 
    
         
             
                    %span.description DELETE /_ruote/expressions/#{@expression.fei.sid}?_kill=1
         
     | 
| 
       111 
129 
     | 
    
         | 
| 
       112 
130 
     | 
    
         
             
                %tr
         
     | 
| 
       113 
131 
     | 
    
         
             
                  %td.no_border{ :colspan => 2 }
         
     | 
| 
       114 
132 
     | 
    
         
             
                     
         
     | 
| 
       115 
133 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
                %tr{ :style => 'cursor: pointer;' 
     | 
| 
      
 134 
     | 
    
         
            +
                %tr#show_re_apply{ :style => 'cursor: pointer;' }
         
     | 
| 
       117 
135 
     | 
    
         
             
                  %td{ :colspan => 2 }
         
     | 
| 
       118 
136 
     | 
    
         
             
                    re-apply
         
     | 
| 
       119 
137 
     | 
    
         
             
                %tr.re_apply
         
     | 
| 
         @@ -126,7 +144,7 @@ 
     | 
|
| 
       126 
144 
     | 
    
         
             
                %tr.re_apply
         
     | 
| 
       127 
145 
     | 
    
         
             
                  %td
         
     | 
| 
       128 
146 
     | 
    
         
             
                    tree
         
     | 
| 
       129 
     | 
    
         
            -
                    %a.ruote_button.ruote_go_button{ :title => 'open process definition editor', :href => '' 
     | 
| 
      
 147 
     | 
    
         
            +
                    %a.ruote_button.ruote_go_button{ :title => 'open process definition editor', :href => '' }
         
     | 
| 
       130 
148 
     | 
    
         
             
                  %td.no_padding
         
     | 
| 
       131 
149 
     | 
    
         
             
                    - tree = @expression.tree
         
     | 
| 
       132 
150 
     | 
    
         
             
                    - tree = Rufus::Json.pretty_encode(tree)
         
     | 
| 
         @@ -135,35 +153,67 @@ 
     | 
|
| 
       135 
153 
     | 
    
         
             
                %tr.re_apply
         
     | 
| 
       136 
154 
     | 
    
         
             
                  %td
         
     | 
| 
       137 
155 
     | 
    
         
             
                  %td
         
     | 
| 
       138 
     | 
    
         
            -
                     
     | 
| 
       139 
     | 
    
         
            -
                    %input{ :type => 'submit', :value => 're-apply', :onclick => 'return confirmReApply();' }
         
     | 
| 
      
 156 
     | 
    
         
            +
                    %input{ :type => 'submit', :value => 're-apply' }
         
     | 
| 
       140 
157 
     | 
    
         
             
                    %span.description PUT /_ruote/expressions/#{@expression.fei.sid}
         
     | 
| 
       141 
158 
     | 
    
         | 
| 
       142 
159 
     | 
    
         | 
| 
       143 
160 
     | 
    
         
             
            :javascript
         
     | 
| 
       144 
161 
     | 
    
         | 
| 
       145 
     | 
    
         
            -
               
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
      
 162 
     | 
    
         
            +
              $(document).ready(function() {
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
                $('pre.pdef').on('click', Rk.toggleNext);
         
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
      
 166 
     | 
    
         
            +
                Rk.fitFluo($('#exp_fluo'), $('table.details'));
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
                var proc_rep = #{process_tree(@process)};
         
     | 
| 
      
 169 
     | 
    
         
            +
                RuoteFluo.render('#exp_fluo', proc_rep, { fit: 'down' });
         
     | 
| 
      
 170 
     | 
    
         
            +
                RuoteFluo.highlight('#exp_fluo', '#{@expression.fei.expid}');
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
                Rk.onClickZoom('#exp_fluo');
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
                $('.re_apply').hide();
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
                $('#show_re_apply').on('click', function(ev) {
         
     | 
| 
      
 177 
     | 
    
         
            +
                  $(ev.target).hide();
         
     | 
| 
      
 178 
     | 
    
         
            +
                  $('.re_apply').show();
         
     | 
| 
      
 179 
     | 
    
         
            +
                });
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
      
 181 
     | 
    
         
            +
                $('a.ruote_go_button').on('click', function(ev) {
         
     | 
| 
      
 182 
     | 
    
         
            +
                  RkEditor.show();
         
     | 
| 
      
 183 
     | 
    
         
            +
                  return false;
         
     | 
| 
      
 184 
     | 
    
         
            +
                });
         
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
      
 186 
     | 
    
         
            +
                function confirmPut(message) {
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
                  var r = confirm(message);
         
     | 
| 
       150 
189 
     | 
    
         | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
      
 190 
     | 
    
         
            +
                  if (r) {
         
     | 
| 
      
 191 
     | 
    
         
            +
                    $('#_method')[0].value = 'PUT';
         
     | 
| 
      
 192 
     | 
    
         
            +
                    if (message.match(/pause/)) {
         
     | 
| 
      
 193 
     | 
    
         
            +
                      $('#state')[0].value = 'paused';
         
     | 
| 
      
 194 
     | 
    
         
            +
                    } else if (message.match(/resume/)) {
         
     | 
| 
      
 195 
     | 
    
         
            +
                      $('#state')[0].value = 'resuming';
         
     | 
| 
      
 196 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 197 
     | 
    
         
            +
                      $('#state').detach();
         
     | 
| 
      
 198 
     | 
    
         
            +
                    }
         
     | 
| 
      
 199 
     | 
    
         
            +
                  }
         
     | 
| 
       152 
200 
     | 
    
         | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
                 
     | 
| 
       155 
     | 
    
         
            -
                $('.re_apply').show();
         
     | 
| 
       156 
     | 
    
         
            -
              }
         
     | 
| 
      
 201 
     | 
    
         
            +
                  return r;
         
     | 
| 
      
 202 
     | 
    
         
            +
                }
         
     | 
| 
       157 
203 
     | 
    
         | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
      
 204 
     | 
    
         
            +
                $('input[type="submit"]').on('click', function(ev) {
         
     | 
| 
       159 
205 
     | 
    
         | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
      
 206 
     | 
    
         
            +
                  var val = ev.target.value;
         
     | 
| 
      
 207 
     | 
    
         
            +
                  var msg = "really " + val + " expression?";
         
     | 
| 
       162 
208 
     | 
    
         | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
      
 209 
     | 
    
         
            +
                  if (val === 'cancel' || val === 'kill') {
         
     | 
| 
      
 210 
     | 
    
         
            +
                    return confirm(msg);
         
     | 
| 
      
 211 
     | 
    
         
            +
                  }
         
     | 
| 
      
 212 
     | 
    
         
            +
                  return confirmPut(msg);
         
     | 
| 
      
 213 
     | 
    
         
            +
                });
         
     | 
| 
      
 214 
     | 
    
         
            +
              });
         
     | 
| 
       165 
215 
     | 
    
         | 
| 
       166 
     | 
    
         
            -
               
     | 
| 
      
 216 
     | 
    
         
            +
              window.tree = #{Rufus::Json.encode(@expression.tree)};
         
     | 
| 
       167 
217 
     | 
    
         | 
| 
       168 
218 
     | 
    
         
             
            = haml :_tree_editor, :layout => false
         
     | 
| 
       169 
219 
     | 
    
         |