petri_flow 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +28 -0
- data/Rakefile +34 -0
- data/app/assets/config/wf_manifest.js +2 -0
- data/app/assets/javascripts/wf/application.js +4 -0
- data/app/assets/stylesheets/wf/application.scss +2 -0
- data/app/assets/stylesheets/wf/arcs.css +4 -0
- data/app/assets/stylesheets/wf/cases.css +4 -0
- data/app/assets/stylesheets/wf/comments.css +4 -0
- data/app/assets/stylesheets/wf/fields.css +4 -0
- data/app/assets/stylesheets/wf/forms.css +4 -0
- data/app/assets/stylesheets/wf/guards.css +4 -0
- data/app/assets/stylesheets/wf/places.css +4 -0
- data/app/assets/stylesheets/wf/transitions.css +4 -0
- data/app/assets/stylesheets/wf/workflows.css +4 -0
- data/app/assets/stylesheets/wf/workitem_assignments.css +4 -0
- data/app/assets/stylesheets/wf/workitems.css +4 -0
- data/app/controllers/wf/application_controller.rb +14 -0
- data/app/controllers/wf/arcs_controller.rb +61 -0
- data/app/controllers/wf/cases_controller.rb +48 -0
- data/app/controllers/wf/comments_controller.rb +30 -0
- data/app/controllers/wf/fields_controller.rb +54 -0
- data/app/controllers/wf/forms_controller.rb +59 -0
- data/app/controllers/wf/guards_controller.rb +58 -0
- data/app/controllers/wf/places_controller.rb +53 -0
- data/app/controllers/wf/transitions_controller.rb +69 -0
- data/app/controllers/wf/workflows_controller.rb +59 -0
- data/app/controllers/wf/workitem_assignments_controller.rb +30 -0
- data/app/controllers/wf/workitems_controller.rb +79 -0
- data/app/helpers/wf/application_helper.rb +6 -0
- data/app/helpers/wf/arcs_helper.rb +6 -0
- data/app/helpers/wf/cases_helper.rb +6 -0
- data/app/helpers/wf/comments_helper.rb +6 -0
- data/app/helpers/wf/fields_helper.rb +6 -0
- data/app/helpers/wf/forms_helper.rb +6 -0
- data/app/helpers/wf/guards_helper.rb +6 -0
- data/app/helpers/wf/places_helper.rb +6 -0
- data/app/helpers/wf/transitions_helper.rb +6 -0
- data/app/helpers/wf/workflows_helper.rb +6 -0
- data/app/helpers/wf/workitem_assignments_helper.rb +6 -0
- data/app/helpers/wf/workitems_helper.rb +6 -0
- data/app/jobs/wf/application_job.rb +6 -0
- data/app/jobs/wf/fire_timed_workitem_job.rb +15 -0
- data/app/mailers/wf/application_mailer.rb +8 -0
- data/app/models/wf/application_record.rb +7 -0
- data/app/models/wf/arc.rb +42 -0
- data/app/models/wf/callbacks/assignment_default.rb +12 -0
- data/app/models/wf/callbacks/deadline_default.rb +11 -0
- data/app/models/wf/callbacks/enable_default.rb +11 -0
- data/app/models/wf/callbacks/fire_default.rb +11 -0
- data/app/models/wf/callbacks/hold_timeout_default.rb +11 -0
- data/app/models/wf/callbacks/notification_default.rb +11 -0
- data/app/models/wf/callbacks/time_default.rb +11 -0
- data/app/models/wf/callbacks/unassignment_default.rb +11 -0
- data/app/models/wf/case.rb +44 -0
- data/app/models/wf/case_assignment.rb +22 -0
- data/app/models/wf/case_command/add_comment.rb +17 -0
- data/app/models/wf/case_command/add_manual_assignment.rb +17 -0
- data/app/models/wf/case_command/add_token.rb +20 -0
- data/app/models/wf/case_command/add_workitem_assignment.rb +35 -0
- data/app/models/wf/case_command/begin_workitem_action.rb +33 -0
- data/app/models/wf/case_command/cancel.rb +17 -0
- data/app/models/wf/case_command/cancel_workitem.rb +20 -0
- data/app/models/wf/case_command/clear_manual_assignments.rb +16 -0
- data/app/models/wf/case_command/clear_workitem_assignments.rb +20 -0
- data/app/models/wf/case_command/consume_token.rb +23 -0
- data/app/models/wf/case_command/enable_transitions.rb +33 -0
- data/app/models/wf/case_command/end_workitem_action.rb +25 -0
- data/app/models/wf/case_command/finish_workitem.rb +18 -0
- data/app/models/wf/case_command/finished_p.rb +28 -0
- data/app/models/wf/case_command/fire_message_transition.rb +20 -0
- data/app/models/wf/case_command/fire_transition_internal.rb +41 -0
- data/app/models/wf/case_command/lock_token.rb +21 -0
- data/app/models/wf/case_command/new.rb +17 -0
- data/app/models/wf/case_command/release_token.rb +20 -0
- data/app/models/wf/case_command/remove_manual_assignment.rb +17 -0
- data/app/models/wf/case_command/remove_workitem_assignment.rb +24 -0
- data/app/models/wf/case_command/resume.rb +17 -0
- data/app/models/wf/case_command/set_workitem_assignments.rb +32 -0
- data/app/models/wf/case_command/start_case.rb +19 -0
- data/app/models/wf/case_command/start_workitem.rb +26 -0
- data/app/models/wf/case_command/suspend.rb +17 -0
- data/app/models/wf/case_command/sweep_automatic_transitions.rb +31 -0
- data/app/models/wf/case_command/sweep_timed_transitions.rb +16 -0
- data/app/models/wf/case_command/workitem_action.rb +20 -0
- data/app/models/wf/comment.rb +21 -0
- data/app/models/wf/demo_target.rb +18 -0
- data/app/models/wf/entry.rb +33 -0
- data/app/models/wf/field.rb +53 -0
- data/app/models/wf/field_value.rb +30 -0
- data/app/models/wf/form.rb +18 -0
- data/app/models/wf/group.rb +21 -0
- data/app/models/wf/guard.rb +73 -0
- data/app/models/wf/party.rb +22 -0
- data/app/models/wf/place.rb +28 -0
- data/app/models/wf/token.rb +37 -0
- data/app/models/wf/transition.rb +49 -0
- data/app/models/wf/transition_static_assignment.rb +21 -0
- data/app/models/wf/user.rb +26 -0
- data/app/models/wf/workflow.rb +182 -0
- data/app/models/wf/workitem.rb +78 -0
- data/app/models/wf/workitem_assignment.rb +19 -0
- data/app/views/layouts/wf/_alert.html.erb +4 -0
- data/app/views/layouts/wf/_footer.html.erb +13 -0
- data/app/views/layouts/wf/_nav.html.erb +13 -0
- data/app/views/layouts/wf/_notice.html.erb +4 -0
- data/app/views/layouts/wf/application.html.erb +34 -0
- data/app/views/wf/arcs/_form.html.erb +40 -0
- data/app/views/wf/arcs/edit.html.erb +1 -0
- data/app/views/wf/arcs/new.html.erb +1 -0
- data/app/views/wf/arcs/show.html.erb +67 -0
- data/app/views/wf/cases/_form.html.erb +27 -0
- data/app/views/wf/cases/index.html.erb +35 -0
- data/app/views/wf/cases/new.html.erb +1 -0
- data/app/views/wf/cases/show.html.erb +113 -0
- data/app/views/wf/comments/new.html.erb +27 -0
- data/app/views/wf/fields/_form.html.erb +42 -0
- data/app/views/wf/fields/edit.html.erb +1 -0
- data/app/views/wf/fields/new.html.erb +1 -0
- data/app/views/wf/forms/_form.html.erb +32 -0
- data/app/views/wf/forms/edit.html.erb +1 -0
- data/app/views/wf/forms/index.html.erb +32 -0
- data/app/views/wf/forms/new.html.erb +1 -0
- data/app/views/wf/forms/show.html.erb +53 -0
- data/app/views/wf/guards/_form.html.erb +43 -0
- data/app/views/wf/guards/edit.html.erb +1 -0
- data/app/views/wf/guards/new.html.erb +1 -0
- data/app/views/wf/places/_form.html.erb +43 -0
- data/app/views/wf/places/edit.html.erb +1 -0
- data/app/views/wf/places/new.html.erb +1 -0
- data/app/views/wf/transitions/_form.html.erb +92 -0
- data/app/views/wf/transitions/edit.html.erb +1 -0
- data/app/views/wf/transitions/new.html.erb +1 -0
- data/app/views/wf/workflows/_form.html.erb +32 -0
- data/app/views/wf/workflows/edit.html.erb +1 -0
- data/app/views/wf/workflows/index.html.erb +38 -0
- data/app/views/wf/workflows/new.html.erb +1 -0
- data/app/views/wf/workflows/show.html.erb +177 -0
- data/app/views/wf/workitem_assignments/new.html.erb +27 -0
- data/app/views/wf/workitems/index.html.erb +68 -0
- data/app/views/wf/workitems/pre_finish.html.erb +33 -0
- data/app/views/wf/workitems/show.html.erb +211 -0
- data/config/routes.rb +30 -0
- data/db/migrate/20200130201043_init.rb +226 -0
- data/db/migrate/20200130201641_init_some_data.rb +15 -0
- data/db/migrate/20200131200455_create_wf_entries.rb +19 -0
- data/db/migrate/20200201001543_add_target_field_name_for_guard.rb +7 -0
- data/lib/tasks/wf_tasks.rake +5 -0
- data/lib/wf/engine.rb +10 -0
- data/lib/wf/version.rb +5 -0
- data/lib/wf.rb +7 -0
- metadata +312 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
<%= form_with(model: arc, url: [@workflow, @arc], local: true) do |f| %>
|
2
|
+
<% if arc.errors.any? %>
|
3
|
+
<article class="message is-danger">
|
4
|
+
<div class="message-header">
|
5
|
+
<p>
|
6
|
+
<%= pluralize(arc.errors.count, "error") %> prohibited this arc from being saved:
|
7
|
+
</p>
|
8
|
+
</div>
|
9
|
+
<div class="message-body content">
|
10
|
+
<ul>
|
11
|
+
<% arc.errors.full_messages.each do |message| %>
|
12
|
+
<li><%= message %></li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
</div>
|
16
|
+
</article>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<div class="form-group">
|
20
|
+
<%= f.label :place, class: "label" %>
|
21
|
+
<%= f.select :place_id, @workflow.places.map{|x| [x.name, x.id]}, {}, class: "form-control custom-select", placeholder: "Place" %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="form-group">
|
25
|
+
<%= f.label :transition, class: "label" %>
|
26
|
+
<%= f.select :transition_id, @workflow.transitions.map{|x| [x.name, x.id]}, {}, class: "custom-select", placeholder: "Transition" %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div class="form-group">
|
30
|
+
<div id="notice" class="alert alert-success">
|
31
|
+
Direction is base on transition, in: P->T, out: T->P.
|
32
|
+
</div>
|
33
|
+
<%= f.label :direction, class: "label" %>
|
34
|
+
<%= f.select :direction, Wf::Arc.directions.keys, {}, class: "form-control custom-select", placeholder: "Direction" %>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<div class="form-group">
|
38
|
+
<%= f.submit class: "btn btn-primary", data: {disable_with: 'Waiting...'} %>
|
39
|
+
</div>
|
40
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", workflow: @workflow, arc: @arc %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", workflow: @workflow, arc: @arc %>
|
@@ -0,0 +1,67 @@
|
|
1
|
+
<div class="float-right">
|
2
|
+
<%= link_to 'Delete Arc', workflow_path(@workflow, @arc), data: {confirm: 'confirm?'}, method: :delete, class: 'btn btn-danger' %>
|
3
|
+
<%= link_to 'Edit Arc', edit_workflow_arc_path(@workflow, @arc), class: 'btn btn-primary' %>
|
4
|
+
<% if @arc.out? %>
|
5
|
+
<%= link_to 'Create Guards', new_arc_guard_path(@arc), class: 'btn btn-primary' %>
|
6
|
+
<% end %>
|
7
|
+
</div>
|
8
|
+
<div>
|
9
|
+
<h2>Arc Detail</h2>
|
10
|
+
<table class="table table-bordered table-info">
|
11
|
+
<tbody>
|
12
|
+
<tr>
|
13
|
+
<th scope="row">ID</th>
|
14
|
+
<td><%= @arc.id %></td>
|
15
|
+
</tr>
|
16
|
+
<tr>
|
17
|
+
<th scope="row">Name</th>
|
18
|
+
<td><%= @arc.name %></td>
|
19
|
+
</tr>
|
20
|
+
<tr>
|
21
|
+
<th scope="row">Transition</th>
|
22
|
+
<td><%= @arc.transition.name %></td>
|
23
|
+
</tr>
|
24
|
+
<tr>
|
25
|
+
<th scope="row">Place</th>
|
26
|
+
<td><%= @arc.place.name %></td>
|
27
|
+
</tr>
|
28
|
+
<tr>
|
29
|
+
<th scope="row">Guards</th>
|
30
|
+
<td><%= @arc.guards.map {|x| x.inspect }.join(" & ") %></td>
|
31
|
+
</tr>
|
32
|
+
<tr>
|
33
|
+
<th scope="row">Direction</th>
|
34
|
+
<td><%= @arc.direction %></td>
|
35
|
+
</tr>
|
36
|
+
</tbody>
|
37
|
+
</table>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<div>
|
41
|
+
<h2>Guards</h2>
|
42
|
+
<table class="table table-bordered table-info">
|
43
|
+
<thead>
|
44
|
+
<tr>
|
45
|
+
<th scope="col">ID</th>
|
46
|
+
<th scope="col">Field</th>
|
47
|
+
<th scope="col">Op</th>
|
48
|
+
<th scope="col">Value</th>
|
49
|
+
<th scope="col">Exp</th>
|
50
|
+
<th scope="col">Actions</th>
|
51
|
+
</tr>
|
52
|
+
</thead>
|
53
|
+
<tbody>
|
54
|
+
<% @arc.guards.each do |guard| %>
|
55
|
+
<tr>
|
56
|
+
<td><%= guard.id %></td>
|
57
|
+
<td><%= guard.fieldable&.form&.name %>/<%= guard.fieldable&.name %></td>
|
58
|
+
<td><%= guard.op %></td>
|
59
|
+
<td><%= guard.value %></td>
|
60
|
+
<td><%= guard.exp %></td>
|
61
|
+
<td><%= link_to 'Edit Guard', edit_arc_guard_path(@arc, guard), class: 'btn btn-sm btn-info' %></td>
|
62
|
+
<td><%= link_to 'Delete Guard', [@arc, guard], remote: true, method: :delete, data: {confirm: 'confirm?'}, class: 'btn btn-sm btn-info' %></td>
|
63
|
+
</tr>
|
64
|
+
<% end %>
|
65
|
+
</tbody>
|
66
|
+
</table>
|
67
|
+
</div>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<%= form_with(model: wf_case, url: [@workflow, @wf_case], local: true) do |f| %>
|
2
|
+
<% if wf_case.errors.any? %>
|
3
|
+
<article class="message is-danger">
|
4
|
+
<div class="message-header">
|
5
|
+
<p>
|
6
|
+
<%= pluralize(wf_case.errors.count, "error") %> prohibited this wf_case from being saved:
|
7
|
+
</p>
|
8
|
+
</div>
|
9
|
+
<div class="message-body content">
|
10
|
+
<ul>
|
11
|
+
<% wf_case.errors.full_messages.each do |message| %>
|
12
|
+
<li><%= message %></li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
</div>
|
16
|
+
</article>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<div class="form-group">
|
20
|
+
<%= f.label :targetable, class: "label" %>
|
21
|
+
<%= f.select :targetable, options_for_select(Wf::DemoTarget.all.map {|x| [x.name, x.to_global_id]} || []), {include_blank: true}, class: "form-control custom-select", placeholder: "targetable" %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="form-group">
|
25
|
+
<%= f.submit class: "btn btn-primary", data: {disable_with: 'Waiting...'} %>
|
26
|
+
</div>
|
27
|
+
<% end %>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<div class="float-left"><h2>Cases</h2></div>
|
2
|
+
<div class="float-right">
|
3
|
+
<%= link_to 'New Case', new_workflow_case_path(@workflow), class: 'btn btn-primary' %>
|
4
|
+
</div>
|
5
|
+
<div>
|
6
|
+
<table class="table table-bordered table-info">
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th scope="col">ID</th>
|
10
|
+
<th scope="col">State</th>
|
11
|
+
<th scope="col">Created At</th>
|
12
|
+
<th scope="col">Targetable Type</th>
|
13
|
+
<th scope="col">Targetable ID</th>
|
14
|
+
<th scope="col">Action</th>
|
15
|
+
</tr>
|
16
|
+
</thead>
|
17
|
+
<tbody>
|
18
|
+
<% @cases.each do |wf_case| %>
|
19
|
+
<tr>
|
20
|
+
<td><%= wf_case.id %></td>
|
21
|
+
<td><%= wf_case.state %></td>
|
22
|
+
<td><%= wf_case.created_at %></td>
|
23
|
+
<td><%= wf_case.targetable_type %></td>
|
24
|
+
<td><%= wf_case.targetable_id %></td>
|
25
|
+
<td>
|
26
|
+
<%= link_to "Run", workflow_case_path(@workflow, wf_case), class: 'btn btn-success btn-sm' %>
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
<% end %>
|
30
|
+
</tbody>
|
31
|
+
</table>
|
32
|
+
</div>
|
33
|
+
<div>
|
34
|
+
<%= paginate @cases, theme: 'twitter-bootstrap-4' %>
|
35
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", workflow: @workflow, wf_case: @wf_case %>
|
@@ -0,0 +1,113 @@
|
|
1
|
+
<div>
|
2
|
+
<h2>Case Detail</h2>
|
3
|
+
<table class="table table-bordered table-info">
|
4
|
+
<tbody>
|
5
|
+
<tr>
|
6
|
+
<th scope="row">ID</th>
|
7
|
+
<td><%= @wf_case.id %></td>
|
8
|
+
</tr>
|
9
|
+
<tr>
|
10
|
+
<th scope="row">Workflow</th>
|
11
|
+
<td><%= link_to @wf_case.workflow.name, workflow_path(@wf_case.workflow) %></td>
|
12
|
+
</tr>
|
13
|
+
<tr>
|
14
|
+
<th scope="row">State</th>
|
15
|
+
<td><%= @wf_case.state %></td>
|
16
|
+
</tr>
|
17
|
+
<tr>
|
18
|
+
<th scope="row">Targetable Type</th>
|
19
|
+
<td><%= @wf_case.targetable_type %></td>
|
20
|
+
</tr>
|
21
|
+
<tr>
|
22
|
+
<th scope="row">Targetable ID</th>
|
23
|
+
<td><%= @wf_case.targetable_id %></td>
|
24
|
+
</tr>
|
25
|
+
<tr>
|
26
|
+
<th scope="row">Created At</th>
|
27
|
+
<td><%= @wf_case.created_at %></td>
|
28
|
+
</tr>
|
29
|
+
</tbody>
|
30
|
+
</table>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div>
|
34
|
+
<h2>Case Graph</h2>
|
35
|
+
<div class="card">
|
36
|
+
<div class="card-body">
|
37
|
+
<%=raw @wf_case.workflow.render_graph(@wf_case) %>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<div>
|
43
|
+
<h2>Tokens</h2>
|
44
|
+
<table class="table table-bordered table-info">
|
45
|
+
<thead>
|
46
|
+
<tr>
|
47
|
+
<th scope="col">ID</th>
|
48
|
+
<th scope="col">Place</th>
|
49
|
+
<th scope="col">State</th>
|
50
|
+
<th scope="col">Locked Workitem</th>
|
51
|
+
<th scope="col">Produced At</th>
|
52
|
+
<th scope="col">Locked At</th>
|
53
|
+
<th scope="col">Canceled At</th>
|
54
|
+
<th scope="col">Consumed At</th>
|
55
|
+
<th scope="col">Created At</th>
|
56
|
+
</tr>
|
57
|
+
</thead>
|
58
|
+
<tbody>
|
59
|
+
<% @wf_case.tokens.each do |token| %>
|
60
|
+
<tr>
|
61
|
+
<td><%= token.id %></td>
|
62
|
+
<td><%= link_to token.place.name, workflow_place_path(token.workflow, token.place) %> </td>
|
63
|
+
<td><%= token.state %></td>
|
64
|
+
<td><%= token.locked_workitem_id %></td>
|
65
|
+
<td><%= token.produced_at %></td>
|
66
|
+
<td><%= token.locked_at %></td>
|
67
|
+
<td><%= token.canceled_at %></td>
|
68
|
+
<td><%= token.consumed_at %></td>
|
69
|
+
<td><%= token.created_at %></td>
|
70
|
+
</tr>
|
71
|
+
<% end %>
|
72
|
+
</tbody>
|
73
|
+
</table>
|
74
|
+
</div>
|
75
|
+
|
76
|
+
<div>
|
77
|
+
<h2>Workitems</h2>
|
78
|
+
<table class="table table-bordered table-info">
|
79
|
+
<thead>
|
80
|
+
<tr>
|
81
|
+
<th scope="col">ID</th>
|
82
|
+
<th scope="col">Transition</th>
|
83
|
+
<th scope="col">State</th>
|
84
|
+
<th scope="col">Holding User</th>
|
85
|
+
<th scope="col">Started At</th>
|
86
|
+
<th scope="col">Enabled At</th>
|
87
|
+
<th scope="col">Canceled At</th>
|
88
|
+
<th scope="col">Finished At</th>
|
89
|
+
<th scope="col">Overridden At</th>
|
90
|
+
<th scope="col">Deadline</th>
|
91
|
+
<th scope="col">Detail</th>
|
92
|
+
</tr>
|
93
|
+
</thead>
|
94
|
+
<tbody>
|
95
|
+
<% @wf_case.workitems.each do |workitem| %>
|
96
|
+
<tr>
|
97
|
+
<td><%= link_to workitem.id, workitem_path(workitem) %></td>
|
98
|
+
<td>
|
99
|
+
<%= link_to workitem.transition.name, workflow_transition_path(workitem.workflow, workitem.transition) %> </td>
|
100
|
+
<td><%= workitem.state %></td>
|
101
|
+
<td><%= workitem.holding_user_id %></td>
|
102
|
+
<td><%= workitem.started_at %></td>
|
103
|
+
<td><%= workitem.enabled_at %></td>
|
104
|
+
<td><%= workitem.canceled_at %></td>
|
105
|
+
<td><%= workitem.finished_at %></td>
|
106
|
+
<td><%= workitem.overridden_at %></td>
|
107
|
+
<td><%= workitem.deadline %></td>
|
108
|
+
<td><%= link_to "Run", workitem_path(workitem), class: 'btn btn-sm btn-success' %></td>
|
109
|
+
</tr>
|
110
|
+
<% end %>
|
111
|
+
</tbody>
|
112
|
+
</table>
|
113
|
+
</div>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<%= form_with(model: @comment, url: workitem_comments_path(@workitem), local: true) do |f| %>
|
2
|
+
<% if @comment.errors.any? %>
|
3
|
+
<article class="message is-danger">
|
4
|
+
<div class="message-header">
|
5
|
+
<p>
|
6
|
+
<%= pluralize(@comment.errors.count, "error") %> prohibited this comment from being saved:
|
7
|
+
</p>
|
8
|
+
</div>
|
9
|
+
<div class="message-body content">
|
10
|
+
<ul>
|
11
|
+
<% @comment.errors.full_messages.each do |message| %>
|
12
|
+
<li><%= message %></li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
</div>
|
16
|
+
</article>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<div class="form-group">
|
20
|
+
<%= f.label :body, class: "label" %>
|
21
|
+
<%= f.text_area :body, class: "form-control", rows: 3, placeholder: "comment" %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="form-group">
|
25
|
+
<%= f.submit class: "btn btn-primary", value: "Comment", data: {disable_with: 'Waiting...'} %>
|
26
|
+
</div>
|
27
|
+
<% end %>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<%= form_with(model: field, url: [@form, field], local: true) do |f| %>
|
2
|
+
<% if field.errors.any? %>
|
3
|
+
<article class="message is-danger">
|
4
|
+
<div class="message-header">
|
5
|
+
<p>
|
6
|
+
<%= pluralize(field.errors.count, "error") %> prohibited this field from being saved:
|
7
|
+
</p>
|
8
|
+
</div>
|
9
|
+
<div class="message-body content">
|
10
|
+
<ul>
|
11
|
+
<% field.errors.full_messages.each do |message| %>
|
12
|
+
<li><%= message %></li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
</div>
|
16
|
+
</article>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<div class="form-group">
|
20
|
+
<%= f.label :name, class: "label" %>
|
21
|
+
<%= f.text_field :name, class: "form-control", fieldholder: "Name" %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="form-group">
|
25
|
+
<%= f.label :position, class: "label" %>
|
26
|
+
<%= f.text_field :position, class: "form-control", fieldholder: "Position" %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div class="form-group">
|
30
|
+
<%= f.label :default_value, class: "label" %>
|
31
|
+
<%= f.text_field :default_value, class: "form-control", fieldholder: "Default Value" %>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<div class="form-group">
|
35
|
+
<%= f.label :field_type, class: "label" %>
|
36
|
+
<%= f.select :field_type, Wf::Field.field_types.keys, {}, class: "form-control custom-select", fieldholder: "Field Type" %>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="form-group">
|
40
|
+
<%= f.submit class: "btn btn-primary", data: {disable_with: 'Waiting...'} %>
|
41
|
+
</div>
|
42
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", form: @form, field: @field %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", form: @form, field: @field %>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<%= form_with(model: form, local: true) do |f| %>
|
2
|
+
<% if form.errors.any? %>
|
3
|
+
<article class="message is-danger">
|
4
|
+
<div class="message-header">
|
5
|
+
<p>
|
6
|
+
<%= pluralize(form.errors.count, "error") %> prohibited this form from being saved:
|
7
|
+
</p>
|
8
|
+
</div>
|
9
|
+
<div class="message-body content">
|
10
|
+
<ul>
|
11
|
+
<% form.errors.full_messages.each do |message| %>
|
12
|
+
<li><%= message %></li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
</div>
|
16
|
+
</article>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<div class="form-group">
|
20
|
+
<%= f.label :name, class: "label" %>
|
21
|
+
<%= f.text_field :name, class: "form-control", placeholder: "Name" %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="form-group">
|
25
|
+
<%= f.label :description, class: "label" %>
|
26
|
+
<%= f.text_area :description, class: "form-control", placeholder: "Description" %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div class="form-group">
|
30
|
+
<%= f.submit class: "btn btn-primary", data: {disable_with: 'Waiting...'} %>
|
31
|
+
</div>
|
32
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", form: @form %>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="float-left"><h2>Forms</h2></div>
|
2
|
+
<div class="float-right">
|
3
|
+
<%= link_to 'New Form', new_form_path, class: 'btn btn-primary' %>
|
4
|
+
</div>
|
5
|
+
<div>
|
6
|
+
<table class="table table-bordered table-info">
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th scope="col">ID</th>
|
10
|
+
<th scope="col">Name</th>
|
11
|
+
<th scope="col">Description</th>
|
12
|
+
<th scope="col">Actions</th>
|
13
|
+
</tr>
|
14
|
+
</thead>
|
15
|
+
<tbody>
|
16
|
+
<% @forms.each do |form| %>
|
17
|
+
<tr>
|
18
|
+
<td><%= form.id %></td>
|
19
|
+
<td><%= link_to form.name, form_path(form) %></td>
|
20
|
+
<td><%= form.description %></td>
|
21
|
+
<td>
|
22
|
+
<%= link_to 'Delete Form', form_path(form), method: :delete, data: {confirm: 'confirm?'}, class: 'btn-danger btn btn-sm' %>
|
23
|
+
<%= link_to 'Create Field', new_form_field_path(form), class: 'btn btn-info btn-sm' %>
|
24
|
+
</td>
|
25
|
+
</tr>
|
26
|
+
<% end %>
|
27
|
+
</tbody>
|
28
|
+
</table>
|
29
|
+
</div>
|
30
|
+
<div>
|
31
|
+
<%= paginate @forms, theme: 'twitter-bootstrap-4' %>
|
32
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", form: @form %>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<div class="float-right">
|
2
|
+
<%= link_to 'Delete Form', form_path(@form), data: {confirm: 'confirm?'}, method: :delete, class: 'btn btn-danger' %>
|
3
|
+
<%= link_to 'Edit Form', edit_form_path(@form), class: 'btn btn-primary' %>
|
4
|
+
<%= link_to 'Create Fields', new_form_field_path(@form), class: 'btn btn-primary' %>
|
5
|
+
</div>
|
6
|
+
<div>
|
7
|
+
<h2>Form Detail</h2>
|
8
|
+
<table class="table table-bordered table-info">
|
9
|
+
<tbody>
|
10
|
+
<tr>
|
11
|
+
<th scope="row">ID</th>
|
12
|
+
<td><%= @form.id %></td>
|
13
|
+
</tr>
|
14
|
+
<tr>
|
15
|
+
<th scope="row">Name</th>
|
16
|
+
<td><%= @form.name %></td>
|
17
|
+
</tr>
|
18
|
+
<tr>
|
19
|
+
<th scope="row">Description</th>
|
20
|
+
<td><%= @form.description %></td>
|
21
|
+
</tr>
|
22
|
+
</tbody>
|
23
|
+
</table>
|
24
|
+
</div>
|
25
|
+
|
26
|
+
<div>
|
27
|
+
<h2>Fields</h2>
|
28
|
+
<table class="table table-bordered table-info">
|
29
|
+
<thead>
|
30
|
+
<tr>
|
31
|
+
<th scope="col">ID</th>
|
32
|
+
<th scope="col">Name</th>
|
33
|
+
<th scope="col">Position</th>
|
34
|
+
<th scope="col">Field Type</th>
|
35
|
+
<th scope="col">Default Value</th>
|
36
|
+
<th scope="col">Actions</th>
|
37
|
+
</tr>
|
38
|
+
</thead>
|
39
|
+
<tbody>
|
40
|
+
<% @form.fields.each do |field| %>
|
41
|
+
<tr>
|
42
|
+
<td><%= field.id %></td>
|
43
|
+
<td><%= field.name %></td>
|
44
|
+
<td><%= field.position %></td>
|
45
|
+
<td><%= field.field_type %></td>
|
46
|
+
<td><%= field.default_value %></td>
|
47
|
+
<td><%= link_to 'Edit Field', edit_form_field_path(@form, field), class: 'btn btn-sm btn-info' %></td>
|
48
|
+
<td><%= link_to 'Delete Field', [@form, field], remote: true, method: :delete, data: {confirm: 'confirm?'}, class: 'btn btn-sm btn-info' %></td>
|
49
|
+
</tr>
|
50
|
+
<% end %>
|
51
|
+
</tbody>
|
52
|
+
</table>
|
53
|
+
</div>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<%= form_with(model: guard, url: [@arc, @guard], local: true) do |f| %>
|
2
|
+
<% if guard.errors.any? %>
|
3
|
+
<article class="message is-danger">
|
4
|
+
<div class="message-header">
|
5
|
+
<p>
|
6
|
+
<%= pluralize(guard.errors.count, "error") %> prohibited this guard from being saved:
|
7
|
+
</p>
|
8
|
+
</div>
|
9
|
+
<div class="message-body content">
|
10
|
+
<ul>
|
11
|
+
<% guard.errors.full_messages.each do |message| %>
|
12
|
+
<li><%= message %></li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
</div>
|
16
|
+
</article>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<div class="form-group">
|
20
|
+
<%= f.label :fieldable, class: "label" %>
|
21
|
+
<%= f.select :fieldable, options_for_select(@arc.transition.form&.fields&.map {|x| [x.name, x.to_global_id]} || []), {}, class: "form-control custom-select", placeholder: "fieldable" %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="form-group">
|
25
|
+
<%= f.label :op, class: "label" %>
|
26
|
+
<%= f.select :op, Wf::Guard::OP, {}, class: "form-control custom-select", placeholder: "Op" %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
|
30
|
+
<div class="form-group">
|
31
|
+
<%= f.label :value, class: "label" %>
|
32
|
+
<%= f.text_field :value, class: "form-control", placeholder: "Value" %>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class="form-group">
|
36
|
+
<%= f.label :exp, class: "label" %>
|
37
|
+
<%= f.text_field :exp, class: "form-control", placeholder: "Exp" %>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<div class="form-group">
|
41
|
+
<%= f.submit class: "btn btn-primary", data: {disable_with: 'Waiting...'} %>
|
42
|
+
</div>
|
43
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", arc: @arc, guard: @guard %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", arc: @arc, guard: @guard %>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<%= form_with(model: place, url: [@workflow, @place], local: true) do |f| %>
|
2
|
+
<% if place.errors.any? %>
|
3
|
+
<article class="message is-danger">
|
4
|
+
<div class="message-header">
|
5
|
+
<p>
|
6
|
+
<%= pluralize(place.errors.count, "error") %> prohibited this place from being saved:
|
7
|
+
</p>
|
8
|
+
</div>
|
9
|
+
<div class="message-body content">
|
10
|
+
<ul>
|
11
|
+
<% place.errors.full_messages.each do |message| %>
|
12
|
+
<li><%= message %></li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
</div>
|
16
|
+
</article>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<div class="form-group">
|
20
|
+
<%= f.label :name, class: "label" %>
|
21
|
+
<%= f.text_field :name, class: "form-control", placeholder: "Name" %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="form-group">
|
25
|
+
<%= f.label :description, class: "label" %>
|
26
|
+
<%= f.text_area :description, class: "form-control", placeholder: "Description" %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
|
30
|
+
<div class="form-group">
|
31
|
+
<%= f.label :sort_order, class: "label" %>
|
32
|
+
<%= f.text_field :sort_order, class: "form-control", placeholder: "Sort Order" %>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class="form-group">
|
36
|
+
<%= f.label :place_type, class: "label" %>
|
37
|
+
<%= f.select :place_type, Wf::Place.place_types.keys, {}, class: "form-control custom-select", placeholder: "Place Type" %>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<div class="form-group">
|
41
|
+
<%= f.submit class: "btn btn-primary", data: {disable_with: 'Waiting...'} %>
|
42
|
+
</div>
|
43
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", workflow: @workflow, place: @place %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form", workflow: @workflow, place: @place %>
|