fixes for updated api
[qcg-portal.git] / qcg / templates / qcg / job_new.html
1 {% extends 'qcg/base.html' %}
2 {% load staticfiles bootstrap3 qcg_utils %}
3
4 {% block extra_css %}
5     <link href="{% static 'qcg/selectize/selectize.bootstrap3.css' %}" rel="stylesheet">
6 {% endblock %}
7
8 {% block extra_js %}
9     <script src="{% static 'qcg/selectize/selectize.min.js' %}"></script>
10     <script src="{% static 'qcg/formset/jquery.formset.js' %}"></script>
11
12     <script>
13         $(function() {
14             $('#id_application').selectize();
15             $('#id_arguments,#id_properties,#id_native').selectize({
16                 plugins: ['remove_button'],
17                 create: true,
18                 render: {
19                     option_create: function(data, escape) {
20                         return '<div class="create">Dodaj <strong>' + escape(data.input) + '</strong>&hellip;</div>';
21                     }
22                 }
23             });
24             $('#id_queue').selectize({
25                 create: true,
26                 render: {
27                     option_create: function(data, escape) {
28                         return '<div class="create">Wybierz <strong>' + escape(data.input) + '</strong>&hellip;</div>';
29                     }
30                 }
31             });
32             $('#id_modules, #id_host').selectize({
33                 plugins: ['remove_button']
34             });
35
36             // hide delete checkbox in empty env form
37             $('#env-form-empty').find('div.form-group:last-of-type').hide();
38             $('#env-controls').find('> div').formset({
39                 formTemplate: '#env-form-empty',
40                 parent: '#env-controls',
41                 addLinkParent: '#add-env-form',
42                 addText: 'dodaj »',
43                 addCssClass: 'add-btn',
44                 deleteText: 'Usuń',
45                 deleteCssClass: 'delete-btn btn btn-xs btn-danger'
46             });
47
48             $('input[name="notify_type"],input[name="watch_output_type"],input[name="preprocess_type"],input[name="postprocess_type"]').on('change', function () {
49                 $(this).tab('show');
50             }).each(function() {
51                 $(this).parent().toggleClass('active', this.checked);
52
53                 if (this.checked)
54                     $(this).tab('show');
55             });
56
57             $('#toggle-advanced').click(function(e) {
58                 e.preventDefault();
59                 $('form .collapse').collapse('toggle');
60                 $(this).find('span').text(this.text == "Pokaż zaawansowane" ? "Ukryj zaawansowane" : "Pokaż zaawansowane");
61             });
62
63             $('#new-env').click(function(e) {
64                 e.preventDefault();
65                 $('#env-modal').modal('show');
66             });
67
68             $('#env-form').submit(function(e) {
69                 e.preventDefault();
70                 $('#env-modal').modal('hide');
71
72                 $('#id_environment')[0].selectize.createItem($('#id_env_name').val() + '=' + $('#id_env_value').val());
73             });
74         });
75     </script>
76 {% endblock %}
77
78 {% block container %}
79     <h1 class="page-header">{% block title %}Zleć zadanie{% endblock %}</h1>
80
81     <form action="." method="post" class="form-horizontal">
82         {% csrf_token %}
83
84         <!-- Nav tabs -->
85         <ul class="nav nav-tabs" style="margin-bottom: 20px">
86             <li role="presentation" class="active"><a href="#basic" data-toggle="tab">Podstawowe</a></li>
87             <li role="presentation"><a href="#resources" data-toggle="tab">Zasoby</a></li>
88             <li role="presentation"><a href="#files" data-toggle="tab">Pliki</a></li>
89             <li role="presentation"><a href="#environment" data-toggle="tab">Środowisko</a></li>
90             <li role="presentation"><a href="#monitoring" data-toggle="tab">Powiadomienia</a></li>
91             <li role="presentation"><a href="#other" data-toggle="tab">Inne</a></li>
92         </ul>
93
94         <div class="tab-content">
95             <fieldset id="basic" class="tab-pane active" role="tabpanel">
96                 {% bootstrap_field form.application layout="horizontal" %}
97                 <div class="row" style="margin-top: -15px; margin-bottom: 15px">
98                     <div class="col-sm-offset-3 col-md-offset-4 col-sm-9 col-md-6">
99                         {# TODO grid ftp #}
100                         <a id="add-main-file" href="#">wybierz plik główny &raquo;</a>
101                     </div>
102                 </div>
103
104                 {% bootstrap_field form.executable layout="horizontal" form_group_class="form-group collapse" %}
105                 {% bootstrap_field form.script layout="horizontal" form_group_class="form-group collapse" %}
106                 {% bootstrap_field form.arguments layout="horizontal" %}
107                 {% bootstrap_field form.note layout="horizontal" %}
108                 {% bootstrap_field form.grant layout="horizontal" %}
109             </fieldset>
110
111             <fieldset id="resources" class="tab-pane" role="tabpanel">
112                 {% bootstrap_field form.host layout="horizontal" %}
113                 {% bootstrap_field form.queue layout="horizontal" %}
114                 {% bootstrap_field form.properties layout="horizontal" form_group_class="form-group collapse" %}
115                 {% bootstrap_field form.modules layout="horizontal" form_group_class="form-group collapse" %}
116                 {% bootstrap_field form.procs layout="horizontal" %}
117                 {% bootstrap_field form.nodes layout="horizontal" form_group_class="form-group collapse" %}
118                 {% bootstrap_field form.wall_time layout="horizontal" form_group_class="form-group timerange" %}
119                 {% bootstrap_field form.memory layout="horizontal" form_group_class="form-group collapse" %}
120                 {% bootstrap_field form.memory_per_slot layout="horizontal" form_group_class="form-group collapse" %}
121                 {% bootstrap_field form.reservation layout="horizontal" form_group_class="form-group collapse" %}
122             </fieldset>
123
124             <fieldset id="files" class="tab-pane" role="tabpanel">
125                 {% bootstrap_field form.input layout="horizontal" %}
126                 {% bootstrap_field form.stage_in layout="horizontal" %}
127                 {% bootstrap_field form.stage_out layout="horizontal" form_group_class="form-group collapse" %}
128             </fieldset>
129
130             <fieldset id="environment" class="tab-pane" role="tabpanel">
131                 {{ env_formset.management_form }}
132
133                 <div class="form-group">
134                     <label class="col-sm-3 col-md-4 control-label">Zmienne środowiskowe</label>
135                     <div class="col-sm-9 col-md-6">
136                         <div id="env-controls">
137                             {% for env_form in env_formset %}
138                                 <div>{% bootstrap_form env_form layout='inline' %}</div>
139                             {% endfor %}
140                         </div>
141                         <div id="add-env-form"></div>
142                         <div id="env-form-empty" style="display: none">
143                             {% bootstrap_form env_formset.empty_form layout='inline' %}
144                         </div>
145                     </div>
146                 </div>
147             </fieldset>
148
149             <fieldset id="monitoring" class="tab-pane" role="tabpanel">
150                 {% bootstrap_checkbox form.monitoring %}
151
152                 <div class="form-group">
153                     <label class="col-sm-3 col-md-4 control-label">Monitorowanie stanu</label>
154                     <div class="col-sm-9 col-md-6">
155                         <div class="btn-group" data-toggle="buttons">
156                             {% for option in form.notify_type %}
157                                 <label class="btn btn-default">
158                                     <input type="radio" autocomplete="off" name="{{ option.name }}" value="{{ option.choice_value }}"
159                                             {% if option.is_checked %}checked{% endif %}
160                                             data-target=".notify-type-{{ option.choice_value }}"> {{ option.choice_label }}
161                                 </label>
162                             {% endfor %}
163                         </div>
164                     </div>
165                 </div>
166
167                 <div class="tab-content">
168                     <div class="tab-pane notify-type-0"></div>
169
170                     <div class="tab-pane notify-type-1 notify-type-2" style="margin-top: 15px">
171                         {% bootstrap_field form.notify_address layout="horizontal" %}
172                     </div>
173                 </div>
174
175                 <div class="collapse">
176                     <div class="form-group">
177                         <label class="col-sm-3 col-md-4 control-label">Monitorowanie wyjścia</label>
178                         <div class="col-sm-9 col-md-6">
179                             <div class="btn-group" data-toggle="buttons">
180                                 {% for option in form.watch_output_type %}
181                                     <label class="btn btn-default">
182                                         <input type="radio" autocomplete="off" name="{{ option.name }}" value="{{ option.choice_value }}"
183                                                 {% if option.is_checked %}checked{% endif %}
184                                                 data-target=".watch-output-type-{{ option.choice_value }}"> {{ option.choice_label }}
185                                     </label>
186                                 {% endfor %}
187                             </div>
188                         </div>
189                     </div>
190
191                     <div class="tab-content">
192                         <div class="tab-pane watch-output-type-0"></div>
193
194                         <div class="tab-pane watch-output-type-1 watch-output-type-2" style="margin-top: 15px">
195                             {% bootstrap_field form.watch_output_address layout="horizontal" %}
196                             {% bootstrap_field form.watch_output_pattern layout="horizontal" %}
197                         </div>
198                     </div>
199                 </div>
200             </fieldset>
201
202             <fieldset id="other" class="tab-pane" role="tabpanel">
203                 <div class="form-group">
204                     <label class="col-sm-3 col-md-4 control-label">Preprocessing</label>
205                     <div class="col-sm-9 col-md-6">
206                         <div class="btn-group" data-toggle="buttons">
207                             {% for option in form.preprocess_type %}
208                                 <label class="btn btn-default">
209                                     <input type="radio" autocomplete="off" name="{{ option.name }}" value="{{ option.choice_value }}"
210                                             {% if option.is_checked %}checked{% endif %}
211                                             data-target=".preprocess-type-{{ option.choice_value }}"> {{ option.choice_label }}
212                                 </label>
213                             {% endfor %}
214                         </div>
215                     </div>
216                 </div>
217
218                 <div class="tab-content">
219                     <div class="tab-pane preprocess-type-0"></div>
220
221                     <div class="tab-pane preprocess-type-1" style="margin-top: 15px">
222                         {% bootstrap_field form.preprocess_cmd layout="horizontal" %}
223                     </div>
224
225                     <div class="tab-pane preprocess-type-2" style="margin-top: 15px">
226                         {% bootstrap_field form.preprocess_script layout="horizontal" %}
227                     </div>
228                 </div>
229
230                 <div class="form-group">
231                     <label class="col-sm-3 col-md-4 control-label">Postprocessing</label>
232                     <div class="col-sm-9 col-md-6">
233                         <div class="btn-group" data-toggle="buttons">
234                             {% for option in form.postprocess_type %}
235                                 <label class="btn btn-default">
236                                     <input type="radio" autocomplete="off" name="{{ option.name }}" value="{{ option.choice_value }}"
237                                             {% if option.is_checked %}checked{% endif %}
238                                             data-target=".postprocess-type-{{ option.choice_value }}"> {{ option.choice_label }}
239                                 </label>
240                             {% endfor %}
241                         </div>
242                     </div>
243                 </div>
244
245                 <div class="tab-content">
246                     <div class="tab-pane postprocess-type-0"></div>
247
248                     <div class="tab-pane postprocess-type-1" style="margin-top: 15px">
249                         {% bootstrap_field form.postprocess_cmd layout="horizontal" %}
250                     </div>
251
252                     <div class="tab-pane postprocess-type-2" style="margin-top: 15px">
253                         {% bootstrap_field form.postprocess_script layout="horizontal" %}
254                     </div>
255                 </div>
256
257                 {% bootstrap_field form.native layout="horizontal" %}
258                 {% bootstrap_checkbox form.persistent %}
259             </fieldset>
260         </div>
261
262         <hr>
263
264         <div class="row">
265             <div class="col-sm-offset-3 col-md-offset-4 col-sm-9 col-md-6">
266                 <button type="submit" class="btn btn-primary">Zleć zadanie</button>
267                 <button type="reset" class="btn btn-warning">Resetuj</button>
268                 <a id="toggle-advanced" href="#"><span class="text-muted">Pokaż zaawansowane</span></a>
269             </div>
270         </div>
271     </form>
272
273 {% endblock %}