tap-server 0.5.0 → 0.6.0
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/History +4 -0
- data/MIT-LICENSE +17 -15
- data/README +2 -11
- data/cmd/server.rb +27 -41
- data/lib/tap/controller.rb +22 -31
- data/lib/tap/controllers/app.rb +20 -116
- data/lib/tap/controllers/data.rb +16 -1
- data/lib/tap/controllers/server.rb +58 -15
- data/lib/tap/generator/generators/controller.rb +23 -0
- data/lib/tap/server.rb +75 -53
- data/lib/tap/tasks/echo.rb +1 -1
- data/templates/tap/generator/generators/controller/resource.erb +14 -0
- data/templates/tap/generator/generators/controller/test.erb +0 -0
- data/templates/tap/generator/generators/controller/view.erb +1 -0
- data/views/configurable/configurations.erb +57 -0
- data/views/configurable/default.erb +1 -0
- data/views/layout.erb +5 -2
- data/views/tap/{task → app/api}/help.erb +6 -4
- data/views/tap/controller/help.erb +4 -2
- data/views/tap/controllers/app/index.erb +47 -0
- data/views/tap/controllers/data/_upload.erb +1 -1
- data/views/tap/controllers/data/index.erb +16 -5
- data/views/tap/controllers/server/index.erb +10 -33
- data/views/tap/signals/signal/get.erb +1 -0
- data/views/tap/signals/signal/index.erb +4 -0
- data/views/tap/signals/signal/post.erb +1 -0
- metadata +18 -26
- data/lib/tap/controllers/schema.rb +0 -202
- data/lib/tap/server/runner.rb +0 -71
- data/public/javascripts/prototype.js +0 -4221
- data/public/javascripts/tap.js +0 -112
- data/views/configurable/_configs.erb +0 -33
- data/views/configurable/_flag.erb +0 -2
- data/views/configurable/_list_select.erb +0 -6
- data/views/configurable/_select.erb +0 -5
- data/views/configurable/_switch.erb +0 -2
- data/views/tap/controllers/app/_action.erb +0 -3
- data/views/tap/controllers/app/build.erb +0 -18
- data/views/tap/controllers/app/enque.erb +0 -13
- data/views/tap/controllers/app/info.erb +0 -21
- data/views/tap/controllers/app/tail.erb +0 -8
- data/views/tap/controllers/data/_index_entry.erb +0 -1
- data/views/tap/controllers/schema/_build.erb +0 -6
- data/views/tap/controllers/schema/_index_entry.erb +0 -6
- data/views/tap/controllers/schema/entry.erb +0 -144
- data/views/tap/task/input.erb +0 -17
- data/views/tap/tasks/load/input.erb +0 -11
@@ -2,8 +2,10 @@
|
|
2
2
|
|
3
3
|
<ul>
|
4
4
|
<li class="source_file">
|
5
|
-
<h2>
|
6
|
-
<
|
5
|
+
<h2>Registered As</h2>
|
6
|
+
<ul><% Lazydoc::Document[obj.to_s].each_pair do |type, comment| %>
|
7
|
+
<li><%= type %> (<%= comment.document.source_file %>)</li><% end %>
|
8
|
+
</ul>
|
7
9
|
</li>
|
8
10
|
<li>
|
9
11
|
<h2>Summary</h2>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<div>
|
2
|
+
<% [:run, :stop, :terminate].each do |signal| %>
|
3
|
+
<form action="<%= uri(nil, signal) %>" style="display:inline" method="post">
|
4
|
+
<input type="hidden" name="_mode" value="thread" />
|
5
|
+
<input type="submit" value="<%= signal %>" />
|
6
|
+
</form>
|
7
|
+
<% end %>
|
8
|
+
<%= app.info %>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<h3>Build:</h3>
|
12
|
+
<% env = app.env %>
|
13
|
+
<% objects = app.objects %>
|
14
|
+
<form action="<%= uri nil, :build %>" method="post">
|
15
|
+
<input type="text" name="set" value="<%= objects.length %>">Variable</input><br/>
|
16
|
+
<input type="text" name="type">Type</input><br/>
|
17
|
+
<input type="text" name="class">Class</input><br/>
|
18
|
+
<input type="submit" value="build" />
|
19
|
+
</form>
|
20
|
+
|
21
|
+
<form method="post" action="<%= uri(nil) %>">
|
22
|
+
<h3>Objects:</h3>
|
23
|
+
|
24
|
+
<% if objects.empty? %>
|
25
|
+
<span>(no workflow built)</span>
|
26
|
+
<% end %>
|
27
|
+
<ul>
|
28
|
+
<% objects.each_pair do |id, obj| %>
|
29
|
+
<li>
|
30
|
+
<input type="checkbox" name="ids[]" value="<%= id %>" />
|
31
|
+
<a href="<%= uri(id) %>"><%= id %></a> (<%= obj.class %>)
|
32
|
+
</li>
|
33
|
+
<% end %>
|
34
|
+
</ul>
|
35
|
+
|
36
|
+
<ul>
|
37
|
+
<li><a href="javascript:Tap.Utils.select_all_by_name('ids[]')">All</a></li>
|
38
|
+
<li><a href="javascript:Tap.Utils.deselect_all_by_name('ids[]')">None</a></li>
|
39
|
+
</ul>
|
40
|
+
|
41
|
+
<h3>Action</h3>
|
42
|
+
<ul>
|
43
|
+
<li><input type="radio" name="_method" value="destroy_all">Delete</input></li>
|
44
|
+
</ul>
|
45
|
+
|
46
|
+
<input type="submit" value="Submit" />
|
47
|
+
</form>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<input type="hidden" name="_method" value="upload" />
|
3
3
|
<ul>
|
4
4
|
<li><input type="file" name="<%= type %>" /></li>
|
5
|
-
<li><input type="text" name="id" value="" />
|
5
|
+
<li><input type="text" name="id" value="" /> Name (if other than file name)</li>
|
6
6
|
</ul>
|
7
7
|
<input type="submit" value="Upload" />
|
8
8
|
</form>
|
@@ -1,14 +1,25 @@
|
|
1
1
|
<h1><%= type %></h1>
|
2
|
+
|
2
3
|
<%= render('_upload.erb') %>
|
3
|
-
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
<form method="post" action="<%= uri %>">
|
6
6
|
<ul>
|
7
7
|
<% data.index(type).each do |id| %>
|
8
|
-
<li><input type="checkbox" name="id[]" value="<%= id %>"
|
8
|
+
<li><input type="checkbox" name="id[]" value="<%= id %>" /><%= data.cache[type].include?(id) ? "*" : "" %><a href="<%= uri(id) %>"><%= id %></a></li>
|
9
9
|
<% end %>
|
10
10
|
<li><a href="<%= uri('new') %>">new</a></li>
|
11
11
|
</ul>
|
12
12
|
|
13
|
-
<
|
13
|
+
<ul>
|
14
|
+
<li><a href="javascript:Tap.Utils.select_all_by_name('id[]')">All</a></li>
|
15
|
+
<li><a href="javascript:Tap.Utils.deselect_all_by_name('id[]')">None</a></li>
|
16
|
+
</ul>
|
17
|
+
|
18
|
+
<ul>
|
19
|
+
<li><input type="radio" name="_method" value="select" checked="true">Select</input></li>
|
20
|
+
<li><input type="radio" name="_method" value="deselect">Deselect</input></li>
|
21
|
+
<li><input type="radio" name="_method" value="destroy_all">Delete</input></li>
|
22
|
+
</ul>
|
23
|
+
|
24
|
+
<input type="submit" value="Submit" />
|
14
25
|
</form>
|
@@ -3,40 +3,17 @@
|
|
3
3
|
</div>
|
4
4
|
|
5
5
|
<div id="content_main">
|
6
|
-
<ol id="envs" class="manifest"
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
<% env_key = env_keys[env] %>
|
11
|
-
<% controllers = env.manifest(:controller) %>
|
12
|
-
<% tasks = env.manifest(:task) %>
|
13
|
-
<% next if controllers.empty? && tasks.empty? %>
|
6
|
+
<ol id="envs" class="manifest"><% manifests.each do |(env_key, types)| %>
|
7
|
+
<li>
|
8
|
+
<h2><%= env_key %></h2>
|
9
|
+
<ul><% types.each do |(type, minimap)| %>
|
14
10
|
<li>
|
15
|
-
<
|
16
|
-
<ul
|
17
|
-
|
18
|
-
<li>
|
19
|
-
<h3>controllers</h3>
|
20
|
-
<ul>
|
21
|
-
<% controllers.minimap.each do |(key, const)| %>
|
22
|
-
<li><a href="<%= escape(key) %>"><%= key %></a> (<a href="<%= help_uri('controller', key) %>">?</a>)</li>
|
23
|
-
<% end %>
|
24
|
-
</ul>
|
25
|
-
</li>
|
26
|
-
<% end %>
|
27
|
-
|
28
|
-
<% unless tasks.empty? %>
|
29
|
-
<li>
|
30
|
-
<h3>tasks</h3>
|
31
|
-
<ul>
|
32
|
-
<% tasks.minimap.each do |(key, const)| %>
|
33
|
-
<li><%= key %> (<a href="<%= help_uri('task', key) %>">?</a>)</li>
|
34
|
-
<% end %>
|
35
|
-
</ul>
|
36
|
-
</li>
|
37
|
-
<% end %>
|
11
|
+
<h3><%= type %></h3>
|
12
|
+
<ul><% minimap.each do |key, entry| %>
|
13
|
+
<li><%= key %> (<a href="help/<%= key %>">?</a>)</li><% end %>
|
38
14
|
</ul>
|
39
|
-
</li
|
40
|
-
|
15
|
+
</li><% end %>
|
16
|
+
</ul>
|
17
|
+
</li><% end %>
|
41
18
|
</ol>
|
42
19
|
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
"Got"
|
@@ -0,0 +1 @@
|
|
1
|
+
"Post"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tap-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Chiang
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-05 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.
|
23
|
+
version: 0.19.0
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rack
|
@@ -50,52 +50,44 @@ files:
|
|
50
50
|
- lib/tap/controller/utils.rb
|
51
51
|
- lib/tap/controllers/app.rb
|
52
52
|
- lib/tap/controllers/data.rb
|
53
|
-
- lib/tap/controllers/schema.rb
|
54
53
|
- lib/tap/controllers/server.rb
|
55
|
-
- lib/tap/
|
54
|
+
- lib/tap/generator/generators/controller.rb
|
56
55
|
- lib/tap/server.rb
|
57
56
|
- lib/tap/server/data.rb
|
58
57
|
- lib/tap/server/server_error.rb
|
59
58
|
- lib/tap/tasks/echo.rb
|
60
59
|
- lib/tap/tasks/render.rb
|
61
|
-
- public/javascripts/prototype.js
|
62
|
-
- public/javascripts/tap.js
|
63
60
|
- public/stylesheets/tap.css
|
64
61
|
- tap.yml
|
62
|
+
- templates/tap/generator/generators/controller/resource.erb
|
63
|
+
- templates/tap/generator/generators/controller/test.erb
|
64
|
+
- templates/tap/generator/generators/controller/view.erb
|
65
65
|
- views/404.erb
|
66
66
|
- views/500.erb
|
67
|
-
- views/configurable/
|
68
|
-
- views/configurable/
|
69
|
-
- views/configurable/_list_select.erb
|
70
|
-
- views/configurable/_select.erb
|
71
|
-
- views/configurable/_switch.erb
|
67
|
+
- views/configurable/configurations.erb
|
68
|
+
- views/configurable/default.erb
|
72
69
|
- views/layout.erb
|
73
70
|
- views/object/obj.erb
|
71
|
+
- views/tap/app/api/help.erb
|
74
72
|
- views/tap/controller/help.erb
|
75
|
-
- views/tap/controllers/app/
|
76
|
-
- views/tap/controllers/app/build.erb
|
77
|
-
- views/tap/controllers/app/enque.erb
|
78
|
-
- views/tap/controllers/app/info.erb
|
79
|
-
- views/tap/controllers/app/tail.erb
|
73
|
+
- views/tap/controllers/app/index.erb
|
80
74
|
- views/tap/controllers/data/_controls.erb
|
81
|
-
- views/tap/controllers/data/_index_entry.erb
|
82
75
|
- views/tap/controllers/data/_upload.erb
|
83
76
|
- views/tap/controllers/data/entry.erb
|
84
77
|
- views/tap/controllers/data/index.erb
|
85
|
-
- views/tap/controllers/schema/_build.erb
|
86
|
-
- views/tap/controllers/schema/_index_entry.erb
|
87
|
-
- views/tap/controllers/schema/entry.erb
|
88
78
|
- views/tap/controllers/server/access.erb
|
89
79
|
- views/tap/controllers/server/admin.erb
|
90
80
|
- views/tap/controllers/server/index.erb
|
91
|
-
- views/tap/
|
92
|
-
- views/tap/
|
93
|
-
- views/tap/
|
81
|
+
- views/tap/signals/signal/get.erb
|
82
|
+
- views/tap/signals/signal/index.erb
|
83
|
+
- views/tap/signals/signal/post.erb
|
94
84
|
- README
|
95
85
|
- MIT-LICENSE
|
96
86
|
- History
|
97
87
|
has_rdoc: true
|
98
88
|
homepage: http://tap.rubyforge.org
|
89
|
+
licenses: []
|
90
|
+
|
99
91
|
post_install_message:
|
100
92
|
rdoc_options:
|
101
93
|
- --main
|
@@ -121,9 +113,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
113
|
requirements: []
|
122
114
|
|
123
115
|
rubyforge_project: tap
|
124
|
-
rubygems_version: 1.3.
|
116
|
+
rubygems_version: 1.3.5
|
125
117
|
signing_key:
|
126
|
-
specification_version:
|
118
|
+
specification_version: 3
|
127
119
|
summary: A web interface for tap.
|
128
120
|
test_files: []
|
129
121
|
|
@@ -1,202 +0,0 @@
|
|
1
|
-
require 'tap/controllers/data'
|
2
|
-
|
3
|
-
module Tap
|
4
|
-
module Controllers
|
5
|
-
class Schema < Data
|
6
|
-
|
7
|
-
# Adds to the specified schema. Parameters:
|
8
|
-
#
|
9
|
-
# tasks[]:: The specified task ids are added to the schema
|
10
|
-
# queue[]:: Queues with empty inputs are added for the task ids
|
11
|
-
# middleware[]:: Middleware by the specified ids are added
|
12
|
-
#
|
13
|
-
# Joins are a bit more complicated. A join is added if inputs
|
14
|
-
# and outputs are specified.
|
15
|
-
#
|
16
|
-
# inputs[]:: An array inputs to a join
|
17
|
-
# outputs[]:: An array outputs for a join
|
18
|
-
# join:: The join id, 'join' if unspecified
|
19
|
-
#
|
20
|
-
def add(id)
|
21
|
-
if id == "new"
|
22
|
-
id = data.next_id(type).to_s
|
23
|
-
end
|
24
|
-
|
25
|
-
update_schema(id) do |schema|
|
26
|
-
# tasks[]
|
27
|
-
if tasks = request['tasks']
|
28
|
-
tasks.each do |task|
|
29
|
-
key = 0
|
30
|
-
key += 1 while schema.tasks.has_key?(key.to_s)
|
31
|
-
schema.tasks[key.to_s] = {'id' => task}
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# inputs[] outputs[] join
|
36
|
-
inputs = request['inputs'] || []
|
37
|
-
outputs = request['outputs'] || []
|
38
|
-
if !inputs.empty? && !outputs.empty?
|
39
|
-
schema.joins << [inputs, outputs, {'id' => request['join'] || 'join'}]
|
40
|
-
end
|
41
|
-
|
42
|
-
# queue[]
|
43
|
-
if queue = request['queue']
|
44
|
-
queue.each do |key|
|
45
|
-
schema.queue << [key, []]
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
# middleware[]
|
50
|
-
if middleware = request['middleware']
|
51
|
-
middleware.each do |middleware|
|
52
|
-
schema.middleware << {'id' => middleware}
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
redirect uri(id)
|
58
|
-
end
|
59
|
-
|
60
|
-
# Removes tasks or joins from a schema. Parameters:
|
61
|
-
#
|
62
|
-
# tasks[]:: An array of task keys to remove.
|
63
|
-
# joins[]:: An array of join indicies to remove.
|
64
|
-
# queue[]:: An array of queue indicies to remove.
|
65
|
-
# middleware[]:: An array of middleware indicies to remove.
|
66
|
-
#
|
67
|
-
def remove(id)
|
68
|
-
if id == "new"
|
69
|
-
id = data.next_id(type).to_s
|
70
|
-
end
|
71
|
-
|
72
|
-
tasks = request['tasks'] || []
|
73
|
-
joins = request['joins'] || []
|
74
|
-
queue = request['queue'] || []
|
75
|
-
middleware = request['middleware'] || []
|
76
|
-
|
77
|
-
update_schema(id) do |schema|
|
78
|
-
tasks.each {|key| schema.tasks.delete(key) }
|
79
|
-
|
80
|
-
joins.each {|index| schema.joins[index.to_i] = nil }
|
81
|
-
schema.joins.compact!
|
82
|
-
|
83
|
-
queue.each {|index| schema.queue[index.to_i] = nil }
|
84
|
-
schema.queue.compact!
|
85
|
-
|
86
|
-
middleware.each {|index| schema.middleware[index.to_i] = nil }
|
87
|
-
schema.middleware.compact!
|
88
|
-
|
89
|
-
schema.cleanup!
|
90
|
-
end
|
91
|
-
|
92
|
-
redirect uri(id)
|
93
|
-
end
|
94
|
-
|
95
|
-
def save(id)
|
96
|
-
if id == "new"
|
97
|
-
id = data.next_id(type).to_s
|
98
|
-
end
|
99
|
-
|
100
|
-
data.create_or_update(type, id) do |io|
|
101
|
-
io << yamlize(request['schema'] || '')
|
102
|
-
end
|
103
|
-
|
104
|
-
redirect uri(id)
|
105
|
-
end
|
106
|
-
|
107
|
-
# Helper methods
|
108
|
-
protected
|
109
|
-
|
110
|
-
def env
|
111
|
-
server.env
|
112
|
-
end
|
113
|
-
|
114
|
-
def type
|
115
|
-
:schema
|
116
|
-
end
|
117
|
-
|
118
|
-
def display(id)
|
119
|
-
schema = if path = data.find(type, id)
|
120
|
-
Tap::Schema.load_file(path)
|
121
|
-
else
|
122
|
-
Tap::Schema.new
|
123
|
-
end
|
124
|
-
|
125
|
-
schema.resolve! do |type, key|
|
126
|
-
env[type][key]
|
127
|
-
end
|
128
|
-
|
129
|
-
render "entry.erb", :locals => {
|
130
|
-
:id => id,
|
131
|
-
:schema => schema
|
132
|
-
}, :layout => true
|
133
|
-
end
|
134
|
-
|
135
|
-
#########################
|
136
|
-
# Helpers
|
137
|
-
#########################
|
138
|
-
|
139
|
-
def render_config(resource, name="")
|
140
|
-
klass = resource[:class]
|
141
|
-
values = resource[:config] || default_config(klass.configurations)
|
142
|
-
|
143
|
-
module_render "_configs.erb", klass,
|
144
|
-
:locals => {
|
145
|
-
:name => name,
|
146
|
-
:configs => klass.configurations,
|
147
|
-
:values => values
|
148
|
-
}
|
149
|
-
end
|
150
|
-
|
151
|
-
def default_config(configs)
|
152
|
-
Configurable::DelegateHash.new(configs).to_hash
|
153
|
-
end
|
154
|
-
|
155
|
-
def format_yaml(object)
|
156
|
-
object == nil ? "~" : YAML.dump(object)[4...-1].strip
|
157
|
-
end
|
158
|
-
|
159
|
-
def update_schema(id)
|
160
|
-
path = data.find(type, id) || data.create(type, id)
|
161
|
-
schema = Tap::Schema.load_file(path)
|
162
|
-
|
163
|
-
yield(schema)
|
164
|
-
|
165
|
-
data.update(type, id) do |io|
|
166
|
-
io << schema.dump
|
167
|
-
end
|
168
|
-
|
169
|
-
id
|
170
|
-
end
|
171
|
-
|
172
|
-
def summarize(schema)
|
173
|
-
summary = {}
|
174
|
-
schema.tasks.each_key do |key|
|
175
|
-
summary[key] = [[],[]]
|
176
|
-
end
|
177
|
-
|
178
|
-
index = 0
|
179
|
-
join_order = []
|
180
|
-
schema.joins.each do |inputs, outputs, join|
|
181
|
-
join_order.concat inputs
|
182
|
-
|
183
|
-
inputs.each do |key|
|
184
|
-
summary[key][1] << index
|
185
|
-
end
|
186
|
-
|
187
|
-
outputs.each do |key|
|
188
|
-
summary[key][0] << index
|
189
|
-
end
|
190
|
-
|
191
|
-
index += 1
|
192
|
-
end
|
193
|
-
|
194
|
-
summary.keys.sort_by do |key|
|
195
|
-
join_order.index(key) || join_order.length
|
196
|
-
end.collect do |key|
|
197
|
-
[key, *summary[key]]
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|
202
|
-
end
|