mutx 0.1.69 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +2 -2
  3. data/documentation/repos.md +21 -24
  4. data/lib/generators/task_rack.rb +8 -2
  5. data/lib/generators/templates/config.ru.tt +1 -1
  6. data/lib/mutx/API/execution.rb +8 -44
  7. data/lib/mutx/API/repo.rb +7 -10
  8. data/lib/mutx/background_jobs/workers/executor.rb +44 -38
  9. data/lib/mutx/commands/install.rb +1 -1
  10. data/lib/mutx/commands/start.rb +1 -1
  11. data/lib/mutx/custom/execution.rb +1 -1
  12. data/lib/mutx/database/mongo_connector.rb +19 -22
  13. data/lib/mutx/execution.rb +1 -0
  14. data/lib/mutx/lib/authentication.rb +23 -0
  15. data/lib/mutx/lib/helpers.rb +52 -0
  16. data/lib/mutx/lib/middlewares/database_middleware.rb +16 -0
  17. data/lib/mutx/lib/middlewares/flash_middleware.rb +31 -0
  18. data/lib/mutx/lib/middlewares/logger_middleware.rb +13 -0
  19. data/lib/mutx/lib/monkey_patch.rb +28 -0
  20. data/lib/mutx/lib/paths.rb +80 -0
  21. data/lib/mutx/platforms/ruby.rb +8 -0
  22. data/lib/mutx/public/css/bootstrap.min.css +7 -0
  23. data/lib/mutx/public/css/font-awesome.min.css +4 -0
  24. data/lib/mutx/public/css/jquery.json-viewer.css +44 -0
  25. data/{favicon.ico → lib/mutx/public/img/favicon.ico} +0 -0
  26. data/lib/mutx/public/js/bootstrap.min.js +6 -0
  27. data/lib/mutx/public/js/jquery.json-viewer.js +148 -0
  28. data/lib/mutx/public/js/jquery.min.js +6 -0
  29. data/lib/mutx/{view/javascript.mote → public/js/mutx.js} +0 -5
  30. data/lib/mutx/public/js/notify.min.js +1 -0
  31. data/lib/mutx/results/result.rb +60 -68
  32. data/lib/mutx/results/results.rb +4 -0
  33. data/lib/mutx/routes.rb +85 -883
  34. data/lib/mutx/routes/admin_routes.rb +16 -0
  35. data/lib/mutx/routes/admin_routes/custom_params_routes.rb +97 -0
  36. data/lib/mutx/routes/admin_routes/repositories_routes.rb +35 -0
  37. data/lib/mutx/routes/admin_routes/tasks_routes.rb +110 -0
  38. data/lib/mutx/routes/api_routes.rb +49 -0
  39. data/lib/mutx/routes/api_routes/custom_params_routes.rb +41 -0
  40. data/lib/mutx/routes/api_routes/input_routes.rb +48 -0
  41. data/lib/mutx/routes/api_routes/repos_routes.rb +74 -0
  42. data/lib/mutx/routes/api_routes/results_routes.rb +50 -0
  43. data/lib/mutx/routes/api_routes/tasks_routes.rb +47 -0
  44. data/lib/mutx/routes/api_routes/tests_routes.rb +42 -0
  45. data/lib/mutx/routes/features_routes.rb +24 -0
  46. data/lib/mutx/routes/help_routes.rb +23 -0
  47. data/lib/mutx/routes/logs_routes.rb +22 -0
  48. data/lib/mutx/routes/message_routes.rb +24 -0
  49. data/lib/mutx/routes/repositories_routes.rb +25 -0
  50. data/lib/mutx/routes/results_routes.rb +53 -0
  51. data/lib/mutx/routes/task_results_routes.rb +25 -0
  52. data/lib/mutx/routes/tasks_routes.rb +67 -0
  53. data/lib/mutx/routes/tests_routes.rb +66 -0
  54. data/lib/mutx/support/change_inspector.rb +3 -3
  55. data/lib/mutx/support/files_cleanner.rb +12 -3
  56. data/lib/mutx/support/git.rb +11 -2
  57. data/lib/mutx/support/processes.rb +2 -2
  58. data/lib/mutx/support/project_type.rb +12 -0
  59. data/lib/mutx/tasks/task.rb +8 -2
  60. data/lib/mutx/version.rb +1 -1
  61. data/lib/mutx/view/{custom/params/delete_form.mote → admin/custom-params/_delete_form.mote} +2 -4
  62. data/lib/mutx/view/{custom/params/create_edit_form.mote → admin/custom-params/_form.mote} +5 -9
  63. data/lib/mutx/view/{custom/params/custom_param_task_deleting_box.mote → admin/custom-params/_task_deleting_box.mote} +1 -2
  64. data/lib/mutx/view/{custom/params → admin/custom-params}/delete.mote +1 -3
  65. data/lib/mutx/view/{custom/params → admin/custom-params}/edit.mote +1 -5
  66. data/lib/mutx/view/{custom/params/list.mote → admin/custom-params/index.mote} +8 -13
  67. data/lib/mutx/view/{custom/params → admin/custom-params}/new.mote +1 -5
  68. data/lib/mutx/view/{custom/params/custom_param_selection_box.mote → admin/custom-params/selection_box.mote} +2 -3
  69. data/lib/mutx/view/{list_repos.mote → admin/repositories/index.mote} +2 -6
  70. data/lib/mutx/view/{repos.mote → admin/repositories/new.mote} +2 -6
  71. data/lib/mutx/view/{tasks/admin/delete_form.mote → admin/tasks/_delete_form.mote} +2 -12
  72. data/lib/mutx/view/{tasks/admin/create_edit_form.mote → admin/tasks/_form.mote} +6 -9
  73. data/lib/mutx/view/{tasks/admin → admin/tasks}/delete.mote +1 -3
  74. data/lib/mutx/view/{tasks/admin → admin/tasks}/edit.mote +1 -4
  75. data/lib/mutx/view/{tasks/admin/list.mote → admin/tasks/index.mote} +5 -10
  76. data/lib/mutx/view/{tasks/admin → admin/tasks}/new.mote +1 -5
  77. data/lib/mutx/view/{tasks/admin/view.mote → admin/tasks/show.mote} +1 -3
  78. data/lib/mutx/view/body.mote +13 -51
  79. data/lib/mutx/view/{custom/params.mote → custom-params/_custom_params.mote} +3 -4
  80. data/lib/mutx/view/{custom/params → custom-params/types}/json.mote +0 -0
  81. data/lib/mutx/view/{custom/params → custom-params/types}/select_list.mote +0 -0
  82. data/lib/mutx/view/{custom/params → custom-params/types}/text.mote +0 -0
  83. data/lib/mutx/view/error_handler.mote +4 -54
  84. data/lib/mutx/view/features/{feature.mote → file.mote} +0 -0
  85. data/lib/mutx/view/features/index.mote +9 -0
  86. data/lib/mutx/view/git_information.mote +2 -8
  87. data/lib/mutx/view/help/{main.mote → _main.mote} +0 -0
  88. data/lib/mutx/view/help/{page.mote → _page.mote} +0 -0
  89. data/lib/mutx/view/help/{search_result.mote → _search_result.mote} +0 -0
  90. data/lib/mutx/view/help/index.mote +38 -0
  91. data/lib/mutx/view/layout/flash.mote +7 -0
  92. data/lib/mutx/view/{footer.mote → layout/footer.mote} +1 -1
  93. data/lib/mutx/view/layout/javascript.mote +6 -0
  94. data/lib/mutx/view/{modals.mote → layout/modals.mote} +0 -0
  95. data/lib/mutx/view/layout/navigation_bar.mote +88 -0
  96. data/lib/mutx/view/{styles.mote → layout/styles.mote} +10 -0
  97. data/lib/mutx/view/logs/{logs.mote → index.mote} +1 -1
  98. data/lib/mutx/view/logs/show.mote +3 -0
  99. data/lib/mutx/view/repositories/_repository.mote +7 -0
  100. data/lib/mutx/view/repositories/index.mote +23 -0
  101. data/lib/mutx/view/repositories/show.mote +21 -0
  102. data/lib/mutx/view/results/{detailed_info.mote → _result.mote} +5 -5
  103. data/lib/mutx/view/results/console.mote +63 -106
  104. data/lib/mutx/view/results/{all.mote → index.mote} +18 -24
  105. data/lib/mutx/view/sections.rb +36 -24
  106. data/lib/mutx/view/task_results/_result.mote +57 -0
  107. data/lib/mutx/view/{results/result.mote → task_results/_result_item.mote} +6 -5
  108. data/lib/mutx/view/task_results/index.mote +35 -0
  109. data/lib/mutx/view/tasks/_task.mote +90 -0
  110. data/lib/mutx/view/tasks/index.mote +61 -0
  111. data/lib/mutx/view/tasks/show.mote +167 -0
  112. data/lib/mutx/view/tests/_test.mote +90 -0
  113. data/lib/mutx/view/tests/index.mote +59 -0
  114. data/lib/mutx/view/tests/show.mote +172 -0
  115. data/lib/mutx/view/view.rb +172 -10
  116. metadata +89 -50
  117. data/lib/mutx/database/middleware.rb +0 -18
  118. data/lib/mutx/view/features.mote +0 -57
  119. data/lib/mutx/view/features/features_list.mote +0 -10
  120. data/lib/mutx/view/help.mote +0 -75
  121. data/lib/mutx/view/logs/log.mote +0 -3
  122. data/lib/mutx/view/message.mote +0 -8
  123. data/lib/mutx/view/navigation_bar.mote +0 -67
  124. data/lib/mutx/view/results/results.mote +0 -112
  125. data/lib/mutx/view/tasks/message.mote +0 -37
  126. data/lib/mutx/view/tasks/task.mote +0 -167
  127. data/lib/mutx/view/tasks/task_item.mote +0 -77
  128. data/lib/mutx/view/tasks/tasks.mote +0 -74
@@ -1,18 +0,0 @@
1
- module Mutx
2
- module Database
3
- class Middleware
4
-
5
- def initialize(app)
6
- @app = app
7
- end
8
-
9
- def call(env)
10
- configuration = Mutx::Support::Configuration.db_connection_data
11
- Mutx::Database::MongoConnector.new(configuration)
12
- @app.call(env)
13
- ensure
14
- Mutx::Database::MongoConnector.close
15
- end
16
- end
17
- end
18
- end
@@ -1,57 +0,0 @@
1
- % title = h1 = section = "features"
2
-
3
- <!--partials -->
4
-
5
- % feature_path = query_string.path
6
-
7
- % javascript = Mote.parse(File.read("#{Mutx::View.path}/javascript.mote"), self, []).call()
8
-
9
- % styles = Mote.parse(File.read("#{Mutx::View.path}/styles.mote"), self, []).call()
10
-
11
- % modals = Mote.parse(File.read("#{Mutx::View.path}/modals.mote"), self, []).call()
12
-
13
- % git_information = Mote.parse(File.read("#{Mutx::View.path}/git_information.mote"), self, [:section]).call(section:section)
14
-
15
- % footer = Mote.parse(File.read("#{Mutx::View.path}/footer.mote"), self, []).call()
16
-
17
- % if feature_path
18
- % content = Mote.parse(File.read("#{Mutx::View.path}/features/feature.mote"), self, [:feature_path]).call(feature_path:feature_path)
19
- % else
20
- % content = Mote.parse(File.read("#{Mutx::View.path}/features/features_list.mote"), self, []).call()
21
- % end
22
- % section = section.gsub(" ","_").downcase
23
-
24
- % navigation_bar = Mote.parse(File.read("#{Mutx::View.path}/navigation_bar.mote"), self, [:section]).call(section:section)
25
-
26
- <!DOCtype html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns ="http://www.w3.org/1999/xhtml"><head><meta content="text/html;charset=utf-8" http-equiv="Content-Type"/>'
27
- <head>
28
- <title>{{Mutx::Support::Configuration.project_name}} through Mutx - {{title.capitalize}}</title>
29
-
30
- <meta content='text/html;charset=utf-8' http-equiv='Content-Type'/>
31
- <meta name='viewport' content='width=device-width, initial-scale=1.0'>
32
- <link rel='shortcut icon' href='/favicon'>
33
- <link href='https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css' rel='stylesheet'>
34
-
35
- {{javascript}}
36
-
37
- {{styles}}
38
-
39
- </head>
40
- <body class='padding-top: 50px;'>
41
-
42
- {{modals}}
43
-
44
- {{navigation_bar}}
45
-
46
- <div class='container'>
47
- <br>
48
- {{git_information}}
49
-
50
- <p>{{content}}</p>
51
-
52
- {{footer}}
53
-
54
- </div>
55
- </div>
56
- </body>
57
- </html>
@@ -1,10 +0,0 @@
1
- % features_files_list = Mutx::Cucumber::Features.feature_files_names
2
- <table class='table table-hover'>
3
- % features_files_list.each do |file_name|
4
- <tr>
5
- <td>
6
- <a aria-hidden='true' href='/features/file?path={{file_name.gsub("/"," ")}}'>{{file_name}}</a>
7
- </td>
8
- </tr>
9
- % end
10
- </table>
@@ -1,75 +0,0 @@
1
-
2
- <?
3
-
4
- page = args[:page]
5
-
6
- title = (page == "main")? page : Mutx::Database::MongoConnector.help_title(page)
7
-
8
- javascript = Mote.parse(File.read("#{Mutx::View.path}/javascript.mote"), self, []).call()
9
-
10
- styles = Mote.parse(File.read("#{Mutx::View.path}/styles.mote"), self, []).call()
11
-
12
- available_pages = Mutx::Database::MongoConnector.get_all_documentation.map{|doc| doc["title"].downcase}
13
-
14
- navigation_bar = Mote.parse(File.read("#{Mutx::View.path}/navigation_bar.mote"), self, [:section]).call(section:"help")
15
-
16
- query = args[:query_string]
17
-
18
- ?>
19
- <!DOCtype html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
20
- <html xmlns ="http://www.w3.org/1999/xhtml">
21
-
22
- <head>
23
- <title>{{Mutx::Support::Configuration.project_name}} through Mutx - {{title}}</title>
24
-
25
- <meta content='text/html;charset=utf-8' http-equiv='Content-Type'/>
26
- <meta name='viewport' content='width=device-width, initial-scale=1.0'>
27
- <link rel='shortcut icon' href='/favicon'>
28
- <link href='https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css' rel='stylesheet'>
29
-
30
- {{javascript}}
31
-
32
- {{styles}}
33
-
34
-
35
-
36
- </head>
37
- <body class='padding-top: 50px;'>
38
-
39
-
40
- {{navigation_bar}}
41
-
42
- <div class='container'>
43
- <br>
44
-
45
- <div class='jumbotron'>
46
- <div class='container'>
47
- <h1>
48
- <a href='/help'>Help</a>
49
- {{page.capitalize.gsub("_"," ")}}
50
- <div class='col-sm-3 col-md-3 pull-right'>
51
- <form class='navbar-form' role='search' action='/help/main' method='get'>
52
- <div class='input-group'>
53
- <input type='text' class='form-control' placeholder='Search' name='s' value="{{query}}">
54
- <div class='input-group-btn'>
55
- <button class='btn btn-info' type='submit'><i class='glyphicon glyphicon-search'></i></button>
56
- </div>
57
- </div>
58
- </form>
59
- </div>
60
- </h1>
61
- <!-- inicio content-->
62
- % if query and !query.empty?
63
- {{Mote.parse(File.read("#{Mutx::View.path}/help/search_result.mote"), self, [:query]).call(query:query)}}
64
- % else
65
- % if available_pages.include? page
66
- {{Mote.parse(File.read("#{Mutx::View.path}/help/page.mote"), self, [:page]).call(page:page)}}
67
- % else
68
- {{Mote.parse(File.read("#{Mutx::View.path}/help/main.mote"), self, []).call()}}
69
- % end
70
- % end
71
- <!-- fin content -->
72
- </div>
73
- </div>
74
- </body>
75
- </html>
@@ -1,3 +0,0 @@
1
- <h3>{{args[:log_name].gsub("_"," ").capitalize}} Log</h3>
2
- % content = Mutx::Support::Logs.read_log_file_content_for args[:log_name]
3
- <pre style="height:400px; overflow:scroll; white-space:pre; word-wrap:normal;">{{content}}</pre>
@@ -1,8 +0,0 @@
1
- <div style="padding: 20px; z-index: 9999; position: absolute; top: 20px; right: 20px;">
2
- <div class="alert alert-info alert-dismissible fade in" role="alert">
3
- <button type="button" class="close" data-dismiss="alert" aria-label="Close">
4
- <span aria-hidden="true"> × </span>
5
- </button>
6
- <strong>{{query_string.msg[0..30]}}</strong>
7
- </div>
8
- </div>
@@ -1,67 +0,0 @@
1
- <div class='navbar navbar-inverse navbar-fixed-top'>
2
- <div class='container'>
3
- <div class='navbar-header'>
4
- <button type='button' class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse'>
5
- <span class='icon-bar'></span>
6
- <span class='icon-bar'></span>
7
- <span class='icon-bar'></span>
8
- <span class='icon-bar'></span>
9
- <span class='icon-bar'></span>
10
- <span class='icon-bar'></span>
11
- <span class='icon-bar'></span>
12
- </button>
13
- <a class='navbar-brand' href='#'>{{Mutx::Support::Configuration.project_name}}</a>
14
- </div>
15
- <div class='collapse navbar-collapse'>
16
- <ul class='nav navbar-nav'>
17
- <li class='{{'active' if section =~ /test/}}'>
18
- <a href='/tests'>Tests</a>
19
- </li>
20
- <li class='{{'active' if section =~ /task/}}'>
21
- <a href='/tasks'>Tasks</a>
22
- </li>
23
- <li class='{{'active' if section == "features"}}'>
24
- <a href='/features'>Features</a>
25
- </li>
26
- <li class='{{'active' if section == "results"}}'>
27
- <a href='/results?type=all'>
28
- Results
29
- </a>
30
- </li>
31
- <li class='{{'active' if section == "all_results"}}'>
32
- <a href='/results/all'>All Results</a>
33
- </li>
34
- <li class='{{'active' if section == "repo"}}'>
35
- <a title='Open repository url' href='{{Mutx::Support::Configuration.project_url}}' target='_blank'>Repo</a>
36
- </li>
37
- <!--
38
- <li class='{{section == "help" ? 'active' : ''}}'>
39
- <a href='/help'>Help</a>
40
- </li>
41
- -->
42
- <li class='{{'active' if section =~ /custom|admin|log/}}'>
43
- <a href='#' class='dropdown-toggle' data-toggle='dropdown' role= 'button' aria-expanded='false'>
44
- Admin
45
- </a>
46
- <ul class='dropdown-menu' role='menu'>
47
- <li><a href='/admin/tasks/list'>Tasks</a></li>
48
- <li><a href='/admin/custom/params'>Custom Parameters</a></li>
49
- <li><a href='/admin/list/repositories'>Repositories</a>
50
- <li role="presentation" class="divider"></li>
51
- <li><a href='/logs/mutx'>Mutx Log</a>
52
- <li><a href='/logs/sidekiq'>Sidekiq Log</a>
53
- <li role="presentation" class="divider"></li>
54
- <!-- <li><a href='/admin/config'>Configuration</a></li>
55
- -->
56
- </ul>
57
- </li>
58
- % if $result
59
- <li class='{{'active' if section == "logout"}}'>
60
- <a href='/logout'>Logout</a>
61
- </li>
62
- % end
63
- </ul>
64
- </div>
65
- <!--/.nav-collapse -->
66
- </div>
67
- </div>
@@ -1,112 +0,0 @@
1
-
2
- % type = "tasks"
3
-
4
- % tasks_list = Mutx::API::Tasks.list({})
5
- % Mutx::Support::Log.debug "Results for task name #{args[:task_name]}" if Mutx::Support::Log and args[:task_name]
6
- % type = args[:type] || "all"
7
- % unless tasks_list["tasks"].empty?
8
- <!--
9
- <div class='form-group'>
10
- <label class='control-label' for='formGroupInputSmall'>Type</label>
11
- <select id='type' name='type' class='customParam' >
12
- <option value='all'>All</option>
13
- <option value='tests' {{selected if type=="tests"}}>Tests</option>
14
- <option value='tasks' {{selected if type=="tasks"}}>Tasks</option>
15
- </select>
16
- </div>
17
- -->
18
- % tasks_list["tasks"].select!{|task| task["name"]==args[:task_name]} if args[:task_name]
19
- % tasks_list["tasks"].each do |task|
20
- % results_list = Mutx::API::Result.results_list_for(task["_id"])
21
- % if results_list.size > 0
22
- % results_list_size = Mutx::View.round_plus(results_list.size)
23
- <div class="panel panel-primary">
24
- <div class="panel-heading" data-toggle="collapse" data-target='#{{task["_id"]}}'>
25
- <h3 class="panel-title">
26
- {{task["name"]}}
27
- <div class="pull-right">{{results_list_size}} Results</div>
28
- </h3>
29
- <div></div>
30
- </div>
31
- <div class="panel-body collapse in" id='{{task["_id"]}}'>
32
- <table class="table">
33
- <thead>
34
- <tr>
35
- <th style="font-weight: bold;">When started</th>
36
- <th style="font-weight: bold;">Label</th>
37
- <th style="font-weight: bold;">Time Elapsed</th>
38
- <th style="font-weight: bold; text-align: center;">Viewed</th>
39
- <th style="font-weight: bold; text-align: center;">Notified</th>
40
- <th style="font-weight: bold; text-align: center;">File Attached</th>
41
- <th style="font-weight: bold;">Console</th>
42
- <th style="font-weight: bold;">Status</th>
43
- </tr>
44
- </thead>
45
- % result_template = Mote.parse(File.read("#{Mutx::View.path}/results/result.mote"), self, [:result])
46
- % results_list_size = results_list.size
47
- % results_list = results_list[0..2] unless args[:task_name]
48
- % results_list.each do |result_data|
49
- {{result_template.call(result:result_data)}}
50
- % end
51
- </table>
52
- <div class="text-center">
53
- <a href="/tasks/{{task["name"]}}" class="btn btn-info">
54
- Go to task
55
- </a>
56
- % unless args[:task_name]
57
- <a href="/results/task/{{task["name"]}}" class="btn btn-default">
58
- &nbsp;&nbsp;All results for this {{args[:type]}}&nbsp;
59
- <span class="label label-info label-as-badge">
60
- {{results_list_size}}
61
- </span>
62
- </a>
63
- % end
64
- </div>
65
- </div>
66
- </div>
67
- % else
68
- <!--
69
- <br>
70
- <br>
71
- <div id='well'>
72
- <h4>No results found for execution: '{{task[:name]}}', go ahead and run it</h4>
73
- </div>
74
- <br>
75
- <br>
76
- -->
77
- % end
78
- % end
79
- % end
80
- % if tasks_list["tasks"].empty?
81
- <!--
82
- <br>
83
- <br>
84
- <div id='well'>
85
- <h3>No results found, go ahead create and run a task</h3>
86
- </div>
87
- <br>
88
- <br>
89
- -->
90
- % end
91
-
92
- <style>
93
- #well {
94
- aling: right;
95
- height: 50px;
96
- background: #F5F5F5;
97
- width: 600px;
98
- font-size: 20px;
99
- #font-style: oblique;
100
- color: #696969;
101
- text-align: center;
102
- padding: 0 20px;
103
- margin: 20px;
104
- display: flex;
105
- justify-content: center;
106
- /* align horizontal */
107
- align-items: center;
108
- /* align vertical */
109
- margin-right: auto;
110
- margin-left: auto;
111
- }
112
- </style>
@@ -1,37 +0,0 @@
1
- <?
2
- title = "<p>Click on result or return to tasks</p>"
3
- alert = "info"
4
- buttons = "<a href='/tasks' class='btn btn-info' >Go to Tasks</a>"
5
-
6
- result_id = args[:result_id]
7
- result = Mutx::Results::Result.get(result_id)
8
-
9
- if result
10
- type = result.task_type.capitalize
11
- task_name = result.task_name
12
-
13
- if result.has_started_message?
14
- title = result.get_started_message!
15
-
16
- alert = "success"
17
- buttons = "
18
- <a href='/#{type.downcase}s/#{task_name}' class='btn btn-info' >Go to '#{task_name}'</a>
19
- <a href='/#{type.downcase}s' class='btn btn-default' >Go to #{type.capitalize}s</a>
20
- "
21
- end
22
-
23
- end
24
- ?>
25
-
26
- <div class="alert alert-{{alert}}" role="alert">
27
-
28
- <H3>
29
- <!--<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>-->&nbsp;{{title}}
30
- </H3>
31
- <p>&nbsp;</p>
32
- <p>&nbsp;</p>
33
- <p>
34
- {{buttons}}
35
- <a href='/results/{{result_id}}/log', '_blank', 'toolbar=no, scrollbars=yes, resizable=yes, top=300, left=300, width=800, height=600';" class='btn btn-primary'>Go to Result</a>
36
- </p>
37
- </div>
@@ -1,167 +0,0 @@
1
- <?
2
-
3
- puts "========================================"
4
- puts task_data
5
- puts "========================================"
6
-
7
- task = task_data["task"]
8
-
9
- #task = Mutx::Tasks::Task.get(task_name)
10
-
11
-
12
- running_results = Mutx::Results.running_results_for_task_id task["_id"]
13
-
14
-
15
- max_number_of_execs_reached = running_results.size == task["max_execs"]
16
-
17
- status = if running_results.size>0
18
- "running"
19
- else
20
- "ready"
21
- end
22
-
23
- run_on = []
24
- run_on << 'Sunday' if task["su"]=="on"
25
- run_on << 'Monday' if task["mo"]=="on"
26
- run_on << 'Tuesday' if task["tu"]=="on"
27
- run_on << 'Wednesday' if task["we"]=="on"
28
- run_on << 'Thursday' if task["th"]=="on"
29
- run_on << 'Friday' if task["fr"]=="on"
30
- run_on << 'Saturday' if task["sa"]=="on"
31
-
32
- if run_on.empty?
33
- run_on << "everyday"
34
- end
35
-
36
- if task["start_time"] and task["stop_time"]
37
- from_to = "from " + task["start_time"] + " to " + task["stop_time"]
38
- end
39
-
40
- color = Mutx::View.color(status)
41
-
42
- ?>
43
- <div class='starter-template'>
44
- <div class='panel panel-{{color}}'>
45
- <div class='panel-heading' data-toggle='collapse' data-target='#{{task["name"].gsub(' ','')}}'>
46
- <h4 class='panel-title'>{{task["name"]}}</h4>
47
- % if status=="running"
48
- <i class="fa fa-cog fa-spin fa-2x fa-fw margin-bottom"></i>
49
- % end
50
- </div>
51
-
52
- <div class='panel-body collapse in' id='{{task["name"].gsub(' ','')}}'>
53
- <ul class='list-group'>
54
- <!-- Si la task está en running se muestran las ejecuciones -->
55
- % if running_results.size > 0
56
- <li class='list-group-item'>
57
- &nbsp;&nbsp;&nbsp;Running {{running_results.size}} tasks
58
- % if max_number_of_execs_reached
59
- <small>(Maximum no. of execution reached)</small>
60
- % end
61
- <div class='panel-body'>
62
- <div class='list-group'>
63
- % running_results.each do |result|
64
- <a class='list-group-item' onclick="refreshAndOpen('/results/{{result["_id"]}}/log/');">
65
- {{Mutx::Support::TimeHelper.formatted_time_for(Mutx::Results::Result.get(result["_id"]).started_at)}}
66
- &nbsp; <small>{{result["execution_name"]}}</small>&nbsp;
67
- {{Mutx::View.only_label_for result}}
68
- </a>
69
- % end
70
- </div>
71
- </div>
72
- </li>
73
- % end
74
- % unless max_number_of_execs_reached
75
- <li class='list-group-item'>
76
- % task_type = (task["type"] == "test") ? "tests" : "tasks"
77
- % form_url = "/#{task_type}/#{task["name"]}/run"
78
- <form name='run' id='{{task["name"]}}' method='get' action='{{form_url}}'>
79
-
80
- % unless task["custom_params"].empty?
81
- % custom_template = Mote.parse(File.read("#{Mutx::View.path}/custom/params.mote"), self, [:custom_params])
82
- {{custom_template.call(custom_params:task["custom_params"])}}
83
- % end
84
- <br><br>
85
- <button type='submit' class='btn btn-success' value='Execute'/>Execute&nbsp;
86
- <span class="glyphicon glyphicon-send" aria-hidden="true"></span>
87
- </button>
88
- <input type='text' name='execution_name' class='customParam' title='This value could be used to identify the result execution from other execution of this task. E.g: You could use the release your are going to test' placeholder='Identify your execution' value='{{Mutx::Support::Configuration.auto_execution_id}}' style='height: 34px; padding: 6px 12px; font-size: 14px; line-height: 1.42857143; color: #555; background-color: #fff; background-image: none; border: 1px solid #ccc; border-radius: 4px; font-weight:normal;' />
89
- <button type='button' class='btn btn-default' aria-label='Left Align' data-toggle='modal' data-target='#myModal' onclick='javascript:starterLink("{{task['name']}}","{{task['type']}}");'>
90
- <span class='glyphicon glyphicon-share' aria-hidden='true'></span>
91
- Share
92
- </button>
93
- <a href='/results/task/{{task["name"].gsub(' ','%20')}}' class='btn btn-primary'>
94
- <span class="glyphicon glyphicon-list" aria-hidden="true"></span>
95
- Results
96
- </a>
97
- <br>
98
-
99
- <!--
100
- <li class='list-group-item'>
101
- Command: {{task["command"]}}
102
- </li>
103
- -->
104
-
105
- <!-- cron info -->
106
-
107
- % if task["cronneable"]=="on"
108
- <br>
109
- <li class="list-group-item">
110
- <span class="glyphicon glyphicon-repeat" aria-hidden="true"></span> Run every {{task["cron_time"]}} minutes
111
-
112
- % unless run_on.empty?
113
- <br>
114
- on:
115
- % run_on.each do |day|
116
- <span class='label label-default'>{{day}}&nbsp;</span>
117
- % end
118
-
119
- % end
120
- % if from_to
121
- <br>
122
- {{from_to}}
123
-
124
- % end
125
- </li>
126
- % end
127
-
128
- <!-- end cron info -->
129
-
130
- <!-- notification info -->
131
- % if task["notifications"]=="on"
132
- <br>
133
- <li class="list-group-item">
134
- <span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Notification on {{task["notify_on"]}}
135
- <br>
136
- Recipients: {{task["mail"]}}
137
- <br>
138
- Subject: {{task["subject"]}}
139
- </li>
140
- % end
141
- <!-- end notification info -->
142
-
143
- % if task["information"]
144
- <br><br>
145
- <p><figure class="highlight">{{task["information"].gsub('\n','<br>')}}</figure></p>
146
-
147
- <br>
148
- % end
149
-
150
-
151
-
152
- </form>
153
- </li>
154
- % end
155
- </li>
156
- </ul>
157
-
158
- % if task["last_result"] # There is at least one result
159
- % if task["results"]["size"] > 0
160
- <a href='/results/task/{{task["name"].gsub(' ','%20')}}' class='btn btn-default pull-center'>All results({{task["results"]["size"]}})</a>
161
- % end
162
- % else
163
- &nbsp;
164
- % end
165
- </div>
166
- </div>
167
- </div>