1 {% extends 'qcg/base.html' %}
2 {% load staticfiles bootstrap3 qcg_utils %}
5 <link href="{% static 'qcg/selectize/selectize.bootstrap3.css' %}" rel="stylesheet">
6 <link href="{% static 'qcg/datetimepicker/bootstrap-datetimepicker.min.css' %}" rel="stylesheet">
10 <script src="{% static 'qcg/selectize/selectize.min.js' %}"></script>
11 <script src="{% static 'qcg/formset/jquery.formset.js' %}"></script>
12 <script src="{% static 'qcg/moment/moment.min.js' %}"></script>
13 <script src="{% static 'qcg/moment/pl.js' %}"></script>
14 <script src="{% static 'qcg/datetimepicker/bootstrap-datetimepicker.min.js' %}"></script>
18 $('#id_application, #id_host').selectize();
19 $('#id_arguments,#id_properties,#id_native').selectize({
20 plugins: ['remove_button'],
23 option_create: function(data, escape) {
24 return '<div class="create">Dodaj <strong>' + escape(data.input) + '</strong>…</div>';
28 $('#id_queue').selectize({
31 option_create: function(data, escape) {
32 return '<div class="create">Wybierz <strong>' + escape(data.input) + '</strong>…</div>';
36 $('#id_modules').selectize({
37 plugins: ['remove_button']
40 // hide delete checkbox in empty env form
41 $('#env-form-empty').find('div.form-group:last-of-type').hide();
42 $('#env-controls').find('> div').formset({
43 formTemplate: '#env-form-empty',
44 parent: '#env-controls',
45 addLinkParent: '#add-env-form',
47 addCssClass: 'add-btn',
49 deleteCssClass: 'delete-btn btn btn-xs btn-danger'
52 $('#id_not_before,#id_not_after').datetimepicker({
57 $('input[name="notify_type"],input[name="watch_output_type"],input[name="preprocess_type"],input[name="postprocess_type"]').on('change', function () {
60 $(this).parent().toggleClass('active', this.checked);
66 $('#toggle-advanced').click(function(e) {
68 $('form .collapse').collapse('toggle');
69 $(this).find('span').text(this.text == "Pokaż zaawansowane" ? "Ukryj zaawansowane" : "Pokaż zaawansowane");
72 $('#new-env').click(function(e) {
74 $('#env-modal').modal('show');
77 $('#env-form').submit(function(e) {
79 $('#env-modal').modal('hide');
81 $('#id_environment')[0].selectize.createItem($('#id_env_name').val() + '=' + $('#id_env_value').val());
88 <h1 class="page-header">{% block title %}Zleć zadanie{% endblock %}</h1>
90 <form action="." method="post" class="form-horizontal">
94 <ul class="nav nav-tabs" style="margin-bottom: 20px">
95 <li role="presentation" class="active"><a href="#basic" data-toggle="tab">Podstawowe</a></li>
96 <li role="presentation"><a href="#resources" data-toggle="tab">Zasoby</a></li>
97 <li role="presentation"><a href="#files" data-toggle="tab">Pliki</a></li>
98 <li role="presentation"><a href="#environment" data-toggle="tab">Środowisko</a></li>
99 <li role="presentation"><a href="#reservation" data-toggle="tab">Rezerwacja</a></li>
100 <li role="presentation"><a href="#monitoring" data-toggle="tab">Powiadomienia</a></li>
101 <li role="presentation"><a href="#other" data-toggle="tab">Inne</a></li>
104 <div class="tab-content">
105 <fieldset id="basic" class="tab-pane active" role="tabpanel">
106 {% bootstrap_field form.application layout="horizontal" %}
107 <div class="row" style="margin-top: -15px; margin-bottom: 15px">
108 <div class="col-sm-offset-3 col-md-offset-4 col-sm-9 col-md-6">
110 <a id="add-main-file" href="#">wybierz plik główny »</a>
114 {% bootstrap_field form.executable layout="horizontal" form_group_class="form-group collapse" %}
115 {% bootstrap_field form.arguments layout="horizontal" %}
116 {% bootstrap_field form.name layout="horizontal" %}
117 {% bootstrap_field form.note layout="horizontal" %}
118 {% bootstrap_field form.grant layout="horizontal" %}
121 <fieldset id="resources" class="tab-pane" role="tabpanel">
122 {% bootstrap_field form.host layout="horizontal" %}
123 {% bootstrap_field form.queue layout="horizontal" %}
124 {% bootstrap_field form.procs layout="horizontal" %}
125 {% bootstrap_field form.nodes layout="horizontal" form_group_class="form-group collapse" %}
126 {% bootstrap_field form.wall_time layout="horizontal" %}
127 {% bootstrap_field form.memory layout="horizontal" %}
128 {% bootstrap_field form.memory_per_slot layout="horizontal" %}
131 <fieldset id="files" class="tab-pane" role="tabpanel">
132 {% bootstrap_field form.input layout="horizontal" %}
133 {% bootstrap_field form.output layout="horizontal" %}
134 {% bootstrap_field form.error layout="horizontal" %}
135 {% bootstrap_field form.stage_in layout="horizontal" %}
136 {% bootstrap_field form.stage_out layout="horizontal" %}
139 <fieldset id="environment" class="tab-pane" role="tabpanel">
140 {% bootstrap_field form.properties layout="horizontal" %}
141 {{ env_formset.management_form }}
143 <div class="form-group">
144 <label class="col-sm-3 col-md-4 control-label">Zmienne środowiskowe</label>
145 <div class="col-sm-9 col-md-6">
146 <div id="env-controls">
147 {% for env_form in env_formset %}
148 <div>{% bootstrap_form env_form layout='inline' %}</div>
151 <div id="add-env-form"></div>
152 <div id="env-form-empty" style="display: none">
153 {% bootstrap_form env_formset.empty_form layout='inline' %}
158 {% bootstrap_field form.modules layout="horizontal" %}
161 <fieldset id="reservation" class="tab-pane" role="tabpanel">
162 {% bootstrap_field form.not_before layout="horizontal" %}
163 {% bootstrap_field form.not_after layout="horizontal" %}
164 {% bootstrap_field form.deadline layout="horizontal" %}
165 {% bootstrap_field form.reservation layout="horizontal" form_group_class="form-group collapse" %}
168 <fieldset id="monitoring" class="tab-pane" role="tabpanel">
169 {% bootstrap_checkbox form.monitoring %}
171 <div class="form-group">
172 <label class="col-sm-3 col-md-4 control-label">Monitorowanie stanu</label>
173 <div class="col-sm-9 col-md-6">
174 <div class="btn-group" data-toggle="buttons">
175 {% for option in form.notify_type %}
176 <label class="btn btn-default">
177 <input type="radio" autocomplete="off" name="{{ option.name }}" value="{{ option.choice_value }}"
178 {% if option.is_checked %}checked{% endif %}
179 data-target=".notify-type-{{ option.choice_value }}"> {{ option.choice_label }}
186 <div class="tab-content">
187 <div class="tab-pane notify-type-0"></div>
189 <div class="tab-pane notify-type-1 notify-type-2" style="margin-top: 15px">
190 {% bootstrap_field form.notify_address layout="horizontal" %}
194 <div class="form-group">
195 <label class="col-sm-3 col-md-4 control-label">Monitorowanie wyjścia</label>
196 <div class="col-sm-9 col-md-6">
197 <div class="btn-group" data-toggle="buttons">
198 {% for option in form.watch_output_type %}
199 <label class="btn btn-default">
200 <input type="radio" autocomplete="off" name="{{ option.name }}" value="{{ option.choice_value }}"
201 {% if option.is_checked %}checked{% endif %}
202 data-target=".watch-output-type-{{ option.choice_value }}"> {{ option.choice_label }}
209 <div class="tab-content">
210 <div class="tab-pane watch-output-type-0"></div>
212 <div class="tab-pane watch-output-type-1 watch-output-type-2" style="margin-top: 15px">
213 {% bootstrap_field form.watch_output_address layout="horizontal" %}
214 {% bootstrap_field form.watch_output_pattern layout="horizontal" %}
219 <fieldset id="other" class="tab-pane" role="tabpanel">
220 <div class="form-group">
221 <label class="col-sm-3 col-md-4 control-label">Preprocessing</label>
222 <div class="col-sm-9 col-md-6">
223 <div class="btn-group" data-toggle="buttons">
224 {% for option in form.preprocess_type %}
225 <label class="btn btn-default">
226 <input type="radio" autocomplete="off" name="{{ option.name }}" value="{{ option.choice_value }}"
227 {% if option.is_checked %}checked{% endif %}
228 data-target=".preprocess-type-{{ option.choice_value }}"> {{ option.choice_label }}
235 <div class="tab-content">
236 <div class="tab-pane preprocess-type-0"></div>
238 <div class="tab-pane preprocess-type-1" style="margin-top: 15px">
239 {% bootstrap_field form.preprocess_cmd layout="horizontal" %}
242 <div class="tab-pane preprocess-type-2" style="margin-top: 15px">
243 {% bootstrap_field form.preprocess_script layout="horizontal" %}
247 <div class="form-group">
248 <label class="col-sm-3 col-md-4 control-label">Postprocessing</label>
249 <div class="col-sm-9 col-md-6">
250 <div class="btn-group" data-toggle="buttons">
251 {% for option in form.postprocess_type %}
252 <label class="btn btn-default">
253 <input type="radio" autocomplete="off" name="{{ option.name }}" value="{{ option.choice_value }}"
254 {% if option.is_checked %}checked{% endif %}
255 data-target=".postprocess-type-{{ option.choice_value }}"> {{ option.choice_label }}
262 <div class="tab-content">
263 <div class="tab-pane postprocess-type-0"></div>
265 <div class="tab-pane postprocess-type-1" style="margin-top: 15px">
266 {% bootstrap_field form.postprocess_cmd layout="horizontal" %}
269 <div class="tab-pane postprocess-type-2" style="margin-top: 15px">
270 {% bootstrap_field form.postprocess_script layout="horizontal" %}
274 {% bootstrap_field form.native layout="horizontal" %}
275 {% bootstrap_checkbox form.persistent %}
276 {% bootstrap_checkbox form.use_scratch %}
283 <div class="col-sm-offset-3 col-md-offset-4 col-sm-9 col-md-6">
284 <button type="submit" class="btn btn-primary">Zleć zadanie</button>
285 <button type="reset" class="btn btn-warning">Resetuj</button>
286 <a id="toggle-advanced" href="#"><span class="text-muted">Pokaż zaawansowane</span></a>