Projekt

Obecné

Profil

« Předchozí | Další » 

Revize b3c57a7c

Přidáno uživatelem Jan Čarnogurský před asi 4 roky(ů)

re #7970 added confirmation before assembly delete. Srcipts moved from templates to separated files

Zobrazit rozdíly:

src/main/webapp/WEB-INF/templates/assembly.html
262 262
<script type="text/javascript">
263 263
    $("select").selectpicker();
264 264
</script>
265
<script>
266
    $(document).ready(function() {
267

  
268
        $('.select-action-button').on('click', function () {
269
            if ($(this).hasClass('select-action-headlight'))
270
            {
271
                $(this).removeClass('select-action-headlight');
272
                removeParameter(getParameterTitle($(this)), getParameterType($(this)));
273
            }
274
            else
275
            {
276
                $(this).closest('.select-action-buttons').find('.select-action-button').removeClass('select-action-headlight');
277

  
278
                removeFromAll(getParameterTitle($(this)));
279

  
280
                $(this).addClass('select-action-headlight');
281

  
282
                addParameter(getParameterIndex($(this)),
283
                             getParameterTitle($(this)),
284
                             getParameterType($(this)),
285
                             getParameterHiddenValue($(this)));
286

  
287
                initParameters();
288
            }
289
        });
290

  
291
        initParameters();
292

  
293
    });
294

  
295
    function removeFromAll(title) {
296
        $rows = $('.selected-input-container');
297

  
298
        $rows.each(function () {
299
            $(this).find('.parameter-name').each(function () {
300
                if ($(this).text() == title)
301
                {
302
                    $(this).closest('.parameter').remove();
303
                }
304
            })
305
        });
306
    }
307

  
308
    function getParameterIndex(button) {
309
        return $(button).closest('.parameter-row').find('.parameterIndex').val();
310
    }
311

  
312
    function addParameter(index, parameterName, type, hiddenValue) {
313
        var row = document.createElement('tr');
314
        row.classList.add(type + '-parameter', 'parameter');
315

  
316
        let hiddenInput = document.createElement('input');
317
        hiddenInput.type = 'hidden';
318
        hiddenInput.id = `parametersInConfiguration${index}.location.id`;
319
        hiddenInput.name = `parametersInConfiguration[${index}].location.id`;
320
        hiddenInput.value = hiddenValue;
321

  
322
        row.appendChild(hiddenInput);
323

  
324
        var firstTd = document.createElement('td');
325

  
326
        var firstTdBody = document.createElement('span');
327
        firstTdBody.classList.add('parameter-name');
328
        firstTdBody.innerHTML = parameterName;
329

  
330
        firstTd.appendChild(firstTdBody);
331

  
332
        row.appendChild(firstTd);
333

  
334
        var thirdTd = document.createElement('td');
335

  
336
        var thirdTdBody;
337

  
338

  
339
        if (type == 'value')
340
        {
341
            thirdTdBody = $('#function-select-' + index).clone()[0];
342

  
343
            $(thirdTdBody).removeClass('hidden');
344
        }
345
        else
346
        {
347
            var secondTd = document.createElement('td');
348

  
349
            var secondTdBody = document.createElement('input');
350
            secondTdBody.type = 'text';
351
            secondTdBody.classList.add('form-control', 'select-filter-input-name');
352
            secondTdBody.name = `parametersInConfiguration[${index}].columnName`;
353

  
354
            secondTd.appendChild(secondTdBody);
355

  
356
            row.appendChild(secondTd);
357

  
358
            thirdTdBody = document.createElement('span');
359
            thirdTdBody.innerHTML = "<i class=\"fas fa-sort\"></i>";
360
        }
361

  
362
        thirdTd.appendChild(thirdTdBody);
363

  
364
        row.appendChild(thirdTd);
365

  
366
        $('#' + type + '-wrapper').append($(row));
367

  
368
    }
369
    
370
    function removeParameter(title, parameterClass) {
371
        $rows = $('.' + parameterClass + '-parameter');
372

  
373
        $rows.each(function () {
374
            $(this).find('.parameter-name').each(function () {
375
                if ($(this).text() == title)
376
                {
377
                    $(this).closest('.' + parameterClass + '-parameter').remove();
378
                }
379
            })
380
        });
381
    }
382

  
383
    function getParameterType(context) {
384
        if ($(context).hasClass('column-button'))
385
        {
386
            return 'column';
387
        }
388
        else if ($(context).hasClass('row-button'))
389
        {
390
            return 'row';
391
        }
392
        else if ($(context).hasClass('value-button'))
393
        {
394
            return 'value';
395
        }
396
    }
397

  
398
    function getParameterHiddenValue(context) {
399
        if ($(context).hasClass('column-button'))
400
        {
401
            return 1;
402
        }
403
        else if ($(context).hasClass('row-button'))
404
        {
405
            return 2;
406
        }
407
        else if ($(context).hasClass('value-button'))
408
        {
409
            return 3;
410
        }
411
    }
412

  
413
    function getParameterTitle(context) {
414
        return $(context).closest('.parameter-row').find('.parameter-name').text();
415
    }
416

  
417

  
418
    function initParameters()
419
    {
420
        $('.sortable').sortable();
421
        $("select").selectpicker('refresh');
422
    }
423

  
424

  
425
</script>
265
<script ype="text/javascript" src="js/assemblyScripts.js"></script>
src/main/webapp/WEB-INF/templates/assembly_manage.html
237 237

  
238 238
</script>
239 239

  
240
<script type="text/javascript">
241

  
242
  $(document).ready(function() {
243

  
244
    $(".panel-wrapper").sortable({
245
      stop: function(event, ui) {
246
        reindexParametrOrder();
247
      }
248
    }).disableSelection();
249

  
250

  
251
    $('.fa-trash-alt').click(function(event){
252
      event.preventDefault();
253
    });
254

  
255
    $('#add-param-button').on('click', function () {
256
      addCollapse();
257
    });
258

  
259
    reindexParametrOrder();
260
    initPanelBody();
261

  
262
  });
263

  
264
  $('#permission-button').on('click', function () {
265
    var selectedRoleId = $('select[name=permission-select] option').filter(':selected').val();
266
    var selectedRoleValue = $('select[name=permission-select] option').filter(':selected').text();
267

  
268
    var addedRoles = $('.permission-role');
269

  
270
    var roles = [];
271

  
272
    // get assigned roles
273
    addedRoles.each(function () {
274
      roles.push($(this).val())
275
    });
276

  
277
    if (roles.includes(selectedRoleId))
278
    {
279
      return;
280
    }
281

  
282
    addPermissionRow(selectedRoleId, selectedRoleValue);
283

  
284
  });
285

  
286

  
287
  function addPermissionRow(id, value){
288

  
289
    let row = document.createElement('div');
290
    row.classList.add('input-action-box', 'input-border-bottom', 'permission-row');
291

  
292
    let input = document.createElement('input');
293
    input.type = 'text';
294
    input.classList.add('form-control-plaintext', 'permission-title');
295
    input.id = id;
296
    input.value = value;
297
    input.setAttribute('readonly', "true");
298

  
299
    let hiddenInput = document.createElement('input');
300
    hiddenInput.type = 'hidden';
301
    hiddenInput.classList.add('permission-role');
302
    hiddenInput.value = id;
303

  
304

  
305
    row.appendChild(input);
306
    row.appendChild(hiddenInput);
307

  
308
    let actionButton = document.createElement('span');
309
    actionButton.classList.add('action-padding', 'action-button', 'input-action-margin');
310

  
311
    let deleteButton = document.createElement('span');
312
    deleteButton.classList.add('action-link', 'far', 'fa-trash-alt');
313
    deleteButton.setAttribute('onclick', 'removeRole(this);');
314
    deleteButton.setAttribute('role', 'button');
315

  
316
    actionButton.appendChild(deleteButton);
317
    row.appendChild(actionButton);
318

  
319
    document.getElementById('permission-wrapper').appendChild(row);
320

  
321
    var permissionRoles = $('.permission-row');
322
    var permissionIndex = 0;
323

  
324
    permissionRoles.each(function () {
325
        var hiddenInput = $(this).find('.permission-role');
326

  
327
        hiddenInput.attr("id",`roles${permissionIndex}.id`);
328

  
329
        hiddenInput.attr("name",`roles[${permissionIndex}].id`);
330

  
331
        var input = $(this).find('.permission-title');
332
        input.attr("name", `roles[${permissionIndex}].name`);
333
        input.attr("id", `roles${permissionIndex}.name`);
334
        permissionIndex++;
335
    });
336

  
337
  };
338

  
339

  
340

  
341
  function addEnumRow(context, value)
342
  {
343
    let enumIndex = $(context).closest('.enum_box').find('.enum-index').val();
344
    let countIndex = $(context).closest('.enum_box').find('.enum-row').length;
345

  
346
    let row = document.createElement('div');
347
    row.classList.add('input-action-box', 'input-border-bottom', 'enum-row');
348

  
349

  
350
    let input = document.createElement('input');
351
    input.type = 'text';
352
    input.classList.add('form-control-plaintext');
353
    input.value = value;
354
    input.setAttribute('readonly', "true");
355
    input.setAttribute('id', `parameters${enumIndex}.parameterValues${countIndex}.value`);
356
    input.setAttribute('name', `parameters[${enumIndex}].parameterValues[${countIndex}].value`);
357

  
358
    row.appendChild(input);
359

  
360
    let sortSpan = document.createElement('span');
361
    sortSpan.classList.add('action-padding', 'input-action-margin', 'sort-icon');
362
    sortSpan.innerHTML = "<i class=\"fas fa-sort\"></i>";
363

  
364
    row.appendChild(sortSpan);
365

  
366
    let deleteSpan = document.createElement('span');
367
    deleteSpan.classList.add('action-padding', 'input-action-margin', 'action-button');
368

  
369
    let deleteButton = document.createElement('span');
370
    deleteButton.classList.add('action-link', 'far', 'fa-trash-alt');
371
    deleteButton.setAttribute('onclick', 'removeEnum(this)');
372

  
373
    deleteSpan.appendChild(deleteButton);
374

  
375
    row.appendChild(deleteSpan);
376

  
377
    $(context).closest(".enum_box").find(".enum-wrapper").append($(row));
378

  
379
  }
380

  
381

  
382
  function removeRole (selectedField) {
383
    selectedField.closest('.permission-row').remove();
384
  }
385

  
386

  
387
  function showEnum(select) {
388
    var enumBox = $(select).closest(".panel-collapse").find(".enum_box");
389
    enumBox.removeClass("hidden");
390
  }
391

  
392
  function hideEnum(select) {
393
    var enumBox = $(select).closest(".panel-collapse").find(".enum_box");
394
    enumBox.addClass("hidden");
395
  }
396

  
397

  
398
  function removeEnum(select) {
399
    $(select).closest(".enum-row").remove();
400
  }
401

  
402
  function removePanel(panel) {
403
    var r = confirm("Opravdu si přejete odstranit parametr?");
404
    if (r == true) {
405
      $(panel).closest(".parameter").remove();
406
    }
407

  
408
  }
409

  
410

  
411
  function addCollapse() {
412

  
413
    var index = $(".parameter").length;
414

  
415
    var typeSelectValues = $("#allParametersHiddenSelect").html();
416
    var functionSelectValues = $("#allFunctionsHiddenSelect").html();
417
    var operatorSelectValues = $("#allOperatorsHiddenSelect").html();
418

  
419
    $(".panel-wrapper").append('\n' +
420
            '      <div class="panel-group parameter">\n' +
421
            `      <input type="hidden" class="parametr-order" value="0" id="parameters${index}.parameterOrder" name="parameters[${index}].parameterOrder">\n` +
422
            '        <div class="panel panel-default">\n' +
423
            '          <div class="panel-heading">\n' +
424
            '            <span class="panel-title">\n' +
425
            `              <a data-toggle="collapse" data-parent="#accordion" href=#collapse${index}>\n` +
426
            `                <i class="fas fa-angle-right"></i> Nový parametr\n` +
427
            '              </a>\n' +
428
            '              <span class="align-right collapse-actions">\n' +
429
            '                <span class="action-padding input-action-margin-collapse sort-icon">\n' +
430
            '                  <i class="fas fa-sort"></i>\n' +
431
            '                </span>\n' +
432
            '                <span class="action-padding action-button input-action-margin-collapse">\n' +
433
            '                  <span href=# class="action-link far fa-trash-alt" onclick="removePanel(this);"></span>\n' +
434
            '                </span>\n' +
435
            '              </span>\n' +
436
            '            </span>\n' +
437
            '          </div>\n' +
438
            `          <div id="collapse${index}" class="panel-collapse collapse">\n` +
439
            '            <div class="panel-body">\n' +
440
            '              <div class="form-group row">\n' +
441
            '                <label for="name" class="col-sm-2 col-form-label">Název:</label>\n' +
442
            '                <div class="col-sm-10">\n' +
443
            `                  <input type="text" class="form-control" name="parameters[${index}].name" id="parameterName${index}" value="Nový parametr" required>\n` +
444
            '                </div>\n' +
445
            '              </div>\n' +
446
            '              <div class="form-group row">\n' +
447
            '                <label for="name" class="col-sm-2 col-form-label">V&nbsp;SQL:</label>\n' +
448
            '                <div class="col-sm-10">\n' +
449
            `                  <input type="text" class="form-control" name="parameters[${index}].nameOfSelect" id="parameterSQLName${index}" required>\n` +
450
            '                </div>\n' +
451
            '              </div>\n' +
452
            '              <div class="form-group row">\n' +
453
            '                <label for="exampleFormControlSelect1" class="col-sm-2">Typ:</label>\n' +
454
            '                <div class="col-sm-10">\n' +
455
            `                  <select name="parameters[${index}].parameterType" class="form-control type-select">\n` +
456
                                  typeSelectValues+
457
            '                  </select>\n' +
458
            '                </div>\n' +
459
            '              </div>\n' +
460
            '\n' +
461
            '              <div class="enum_box">\n' +
462
            '                Hodnoty:\n' +
463
            '                <div class="enum_values col-md-8">\n' +
464
            '                  <div class="enum-wrapper">\n' +
465
            `                     <input type="hidden" class="enum-index" value="${index}">\n` +
466
            '                  </div>\n' +
467
            '\n' +
468
            '                  <div class="form-group row form-add-item">\n' +
469
            '                    <div class="col-md-9">\n' +
470
            '                      <input type="text" class="form-control enum-add-input">\n' +
471
            '                    </div>\n' +
472
            '                    <span class="btn btn-primary mb-2 enum-add-button">Přidat</span>\n' +
473
            '                  </div>\n' +
474
            '                </div>\n' +
475
            '              </div>\n' +
476
            '\n' +
477
            `              <div class="form-group row">\n` +
478
            '                <label for="exampleFormControlSelect1" class="col-sm-2">Umístění:</label>\n' +
479
            '                <div class="col-sm-10">\n' +
480
            '                  <div class="form-check form-check-inline">\n' +
481
            `                    <input type="hidden" name="_parameters[${index}].locations" value="on">\n` +
482
            `                    <input class="form-check-input" name="parameters[${index}].locations" id="parameters${index}.locations1" type="checkbox" value="1">\n` +
483
            `                    <label class="form-check-label" for="parameters[${index}].locations" >Sloupec</label>\n` +
484
            '                  </div>\n' +
485
            '                  <div class="form-check form-check-inline">\n' +
486
            `                    <input type="hidden" name="_parameters[${index}].locations" value="on">\n` +
487
            `                    <input class="form-check-input" name="parameters[${index}].locations" id="parameters${index}.locations2" type="checkbox" value="2">\n` +
488
            '                    <label class="form-check-label" for="parameters[${index}].locations">Řádek</label>\n' +
489
            '                  </div>\n' +
490
            '                  <div class="form-check form-check-inline">\n' +
491
            `                    <input type="hidden" name="_parameters[${index}].locations" value="on">\n` +
492
            `                    <input class="form-check-input" name="parameters[${index}].locations" id="parameters${index}.locations3" type="checkbox" value="3">\n` +
493
            '                    <label class="form-check-label" for="parameters[${index}].locations" >Hodnota</label>\n' +
494
            '                  </div>\n' +
495
            '                </div>\n' +
496
            '              </div>\n' +
497
            '              <div class="form-group row">\n' +
498
            '                  <label for="exampleFormControlSelect1" class="col-sm-2">Funkce:</label>\n' +
499
            '                  <div class="col-sm-10">\n' +
500
            `                    <select name="parameters[${index}].functions" id="parameters${index}.functions" class="mbSelect selectpicker" multiple data-live-search="true">\n` +
501
                                    functionSelectValues +
502
            '                    </select>\n' +
503
            '                  </div>\n' +
504
            '              </div>\n' +
505
            '              <div class="form-group row">\n' +
506
            '                  <label for="exampleFormControlSelect1" class="col-sm-2">Operátory:</label>\n' +
507
            '                  <div class="col-sm-10">\n' +
508
            `                    <select name="parameters[${index}].operators" id="parameters${index}.operators" class="mbSelect selectpicker" multiple data-live-search="true">\n` +
509
                                    operatorSelectValues +
510
            '                    </select>\n' +
511
            '                  </div>\n' +
512
            '              </div>\n' +
513
            '            </div>\n' +
514
            '          </div>\n' +
515
            '        </div>\n' +
516
            '      </div>\n' +
517
            '    ');
518

  
519
    this.reindexParametrOrder();
520
    this.initPanelBody();
521

  
522
  }
523

  
524
  function initPanelBody() {
525
    $('.enum-add-button').on('click', function () {
526
      var input = $(this).closest(".row").find('.enum-add-input');
527
      addEnumRow(this, input.val());
528

  
529
      input.val("");
530
    });
531

  
532
    $('.enum-wrapper').sortable().disableSelection();
533

  
534
    $('.type-select').on('change', function () {
535
      if (this.value == 1)
536
      {
537
        showEnum(this);
538
      }
539
      else
540
      {
541
        hideEnum(this);
542
      }
543
    });
544

  
545
    $(".selectpicker").selectpicker('refresh');
546

  
547
    $('.fa-trash-alt').click(function(event){
548
      event.preventDefault();
549
    });
550
  }
551

  
552
  function reindexParametrOrder() {
553
    var data = $(".parametr-order");
554

  
555
    let index = 0;
556
    $(data).each(function () {
557
      console.log($(this));
558
      $(this).attr('value', index);
559
      index++;
560
      console.log($(this));
561
    });
562
  }
563

  
564
</script>
240
<script type="text/javascript" src="js/assemblyManageScripts.js"></script>
src/main/webapp/WEB-INF/templates/index.html
42 42
						<td><a th:href="@{/configuration(configurationID=${iconfiguration.id})}"><span th:text="${iconfiguration.name}"></span></a></td>
43 43
						<td class="center-cell">
44 44
				  <span class="action-button">
45
					<a th:href="@{/configuration_delete(configurationID=${iconfiguration.id})}" class="action-link far fa-trash-alt"></a>
45
					<a th:href="@{/configuration_delete(configurationID=${iconfiguration.id})}" class="action-link far fa-trash-alt" onclick="return confirm('Opravdu si přejete odstranit sestavu?');"></a>
46 46
				  </span>
47 47
						</td>
48 48
					</tr>
......
80 80
									  <a th:href="@{/assembly_edit(assemblyID=${iassembly.id})}" class="action-link far fa-edit"></a>
81 81
									</span>
82 82
									<span class="action-button">
83
									  <a th:href="@{/assembly_delete(assemblyID=${iassembly.id})}" class="action-link far fa-trash-alt"></a>
83
									  <a th:href="@{/assembly_delete(assemblyID=${iassembly.id})}" class="action-link far fa-trash-alt" onclick="return confirm('Opravdu si přejete odstranit sestavu?');"></a>
84 84
									</span>
85

  
86 85
									<i class="fas fa-sort"></i>
87 86
								</div>
88 87
							</td>
src/main/webapp/js/assemblyManageScripts.js
1

  
2
$(document).ready(function() {
3

  
4
    $(".panel-wrapper").sortable({
5
        stop: function(event, ui) {
6
            reindexParametrOrder();
7
        }
8
    }).disableSelection();
9

  
10

  
11
    $('.fa-trash-alt').click(function(event){
12
        event.preventDefault();
13
    });
14

  
15
    $('#add-param-button').on('click', function () {
16
        addCollapse();
17
    });
18

  
19
    reindexParametrOrder();
20
    initPanelBody();
21

  
22
});
23

  
24
$('#permission-button').on('click', function () {
25
    var selectedRoleId = $('select[name=permission-select] option').filter(':selected').val();
26
    var selectedRoleValue = $('select[name=permission-select] option').filter(':selected').text();
27

  
28
    var addedRoles = $('.permission-role');
29

  
30
    var roles = [];
31

  
32
    // get assigned roles
33
    addedRoles.each(function () {
34
        roles.push($(this).val())
35
    });
36

  
37
    if (roles.includes(selectedRoleId))
38
    {
39
        return;
40
    }
41

  
42
    addPermissionRow(selectedRoleId, selectedRoleValue);
43

  
44
});
45

  
46

  
47
function addPermissionRow(id, value){
48

  
49
    let row = document.createElement('div');
50
    row.classList.add('input-action-box', 'input-border-bottom', 'permission-row');
51

  
52
    let input = document.createElement('input');
53
    input.type = 'text';
54
    input.classList.add('form-control-plaintext', 'permission-title');
55
    input.id = id;
56
    input.value = value;
57
    input.setAttribute('readonly', "true");
58

  
59
    let hiddenInput = document.createElement('input');
60
    hiddenInput.type = 'hidden';
61
    hiddenInput.classList.add('permission-role');
62
    hiddenInput.value = id;
63

  
64

  
65
    row.appendChild(input);
66
    row.appendChild(hiddenInput);
67

  
68
    let actionButton = document.createElement('span');
69
    actionButton.classList.add('action-padding', 'action-button', 'input-action-margin');
70

  
71
    let deleteButton = document.createElement('span');
72
    deleteButton.classList.add('action-link', 'far', 'fa-trash-alt');
73
    deleteButton.setAttribute('onclick', 'removeRole(this);');
74
    deleteButton.setAttribute('role', 'button');
75

  
76
    actionButton.appendChild(deleteButton);
77
    row.appendChild(actionButton);
78

  
79
    document.getElementById('permission-wrapper').appendChild(row);
80

  
81
    var permissionRoles = $('.permission-row');
82
    var permissionIndex = 0;
83

  
84
    permissionRoles.each(function () {
85
        var hiddenInput = $(this).find('.permission-role');
86

  
87
        hiddenInput.attr("id",`roles${permissionIndex}.id`);
88

  
89
        hiddenInput.attr("name",`roles[${permissionIndex}].id`);
90

  
91
        var input = $(this).find('.permission-title');
92
        input.attr("name", `roles[${permissionIndex}].name`);
93
        input.attr("id", `roles${permissionIndex}.name`);
94
        permissionIndex++;
95
    });
96

  
97
};
98

  
99

  
100

  
101
function addEnumRow(context, value)
102
{
103
    let enumIndex = $(context).closest('.enum_box').find('.enum-index').val();
104
    let countIndex = $(context).closest('.enum_box').find('.enum-row').length;
105

  
106
    let row = document.createElement('div');
107
    row.classList.add('input-action-box', 'input-border-bottom', 'enum-row');
108

  
109

  
110
    let input = document.createElement('input');
111
    input.type = 'text';
112
    input.classList.add('form-control-plaintext');
113
    input.value = value;
114
    input.setAttribute('readonly', "true");
115
    input.setAttribute('id', `parameters${enumIndex}.parameterValues${countIndex}.value`);
116
    input.setAttribute('name', `parameters[${enumIndex}].parameterValues[${countIndex}].value`);
117

  
118
    row.appendChild(input);
119

  
120
    let sortSpan = document.createElement('span');
121
    sortSpan.classList.add('action-padding', 'input-action-margin', 'sort-icon');
122
    sortSpan.innerHTML = "<i class=\"fas fa-sort\"></i>";
123

  
124
    row.appendChild(sortSpan);
125

  
126
    let deleteSpan = document.createElement('span');
127
    deleteSpan.classList.add('action-padding', 'input-action-margin', 'action-button');
128

  
129
    let deleteButton = document.createElement('span');
130
    deleteButton.classList.add('action-link', 'far', 'fa-trash-alt');
131
    deleteButton.setAttribute('onclick', 'removeEnum(this)');
132

  
133
    deleteSpan.appendChild(deleteButton);
134

  
135
    row.appendChild(deleteSpan);
136

  
137
    $(context).closest(".enum_box").find(".enum-wrapper").append($(row));
138

  
139
}
140

  
141

  
142
function removeRole (selectedField) {
143
    selectedField.closest('.permission-row').remove();
144
}
145

  
146

  
147
function showEnum(select) {
148
    var enumBox = $(select).closest(".panel-collapse").find(".enum_box");
149
    enumBox.removeClass("hidden");
150
}
151

  
152
function hideEnum(select) {
153
    var enumBox = $(select).closest(".panel-collapse").find(".enum_box");
154
    enumBox.addClass("hidden");
155
}
156

  
157

  
158
function removeEnum(select) {
159
    $(select).closest(".enum-row").remove();
160
}
161

  
162
function removePanel(panel) {
163
    var r = confirm("Opravdu si přejete odstranit parametr?");
164
    if (r == true) {
165
        $(panel).closest(".parameter").remove();
166
    }
167

  
168
}
169

  
170

  
171
function addCollapse() {
172

  
173
    var index = $(".parameter").length;
174

  
175
    var typeSelectValues = $("#allParametersHiddenSelect").html();
176
    var functionSelectValues = $("#allFunctionsHiddenSelect").html();
177
    var operatorSelectValues = $("#allOperatorsHiddenSelect").html();
178

  
179
    $(".panel-wrapper").append('\n' +
180
        '      <div class="panel-group parameter">\n' +
181
        `      <input type="hidden" class="parametr-order" value="0" id="parameters${index}.parameterOrder" name="parameters[${index}].parameterOrder">\n` +
182
        '        <div class="panel panel-default">\n' +
183
        '          <div class="panel-heading">\n' +
184
        '            <span class="panel-title">\n' +
185
        `              <a data-toggle="collapse" data-parent="#accordion" href=#collapse${index}>\n` +
186
        `                <i class="fas fa-angle-right"></i> Nový parametr\n` +
187
        '              </a>\n' +
188
        '              <span class="align-right collapse-actions">\n' +
189
        '                <span class="action-padding input-action-margin-collapse sort-icon">\n' +
190
        '                  <i class="fas fa-sort"></i>\n' +
191
        '                </span>\n' +
192
        '                <span class="action-padding action-button input-action-margin-collapse">\n' +
193
        '                  <span href=# class="action-link far fa-trash-alt" onclick="removePanel(this);"></span>\n' +
194
        '                </span>\n' +
195
        '              </span>\n' +
196
        '            </span>\n' +
197
        '          </div>\n' +
198
        `          <div id="collapse${index}" class="panel-collapse collapse">\n` +
199
        '            <div class="panel-body">\n' +
200
        '              <div class="form-group row">\n' +
201
        '                <label for="name" class="col-sm-2 col-form-label">Název:</label>\n' +
202
        '                <div class="col-sm-10">\n' +
203
        `                  <input type="text" class="form-control" name="parameters[${index}].name" id="parameterName${index}" value="Nový parametr" required>\n` +
204
        '                </div>\n' +
205
        '              </div>\n' +
206
        '              <div class="form-group row">\n' +
207
        '                <label for="name" class="col-sm-2 col-form-label">V&nbsp;SQL:</label>\n' +
208
        '                <div class="col-sm-10">\n' +
209
        `                  <input type="text" class="form-control" name="parameters[${index}].nameOfSelect" id="parameterSQLName${index}" required>\n` +
210
        '                </div>\n' +
211
        '              </div>\n' +
212
        '              <div class="form-group row">\n' +
213
        '                <label for="exampleFormControlSelect1" class="col-sm-2">Typ:</label>\n' +
214
        '                <div class="col-sm-10">\n' +
215
        `                  <select name="parameters[${index}].parameterType" class="form-control type-select">\n` +
216
        typeSelectValues+
217
        '                  </select>\n' +
218
        '                </div>\n' +
219
        '              </div>\n' +
220
        '\n' +
221
        '              <div class="enum_box">\n' +
222
        '                Hodnoty:\n' +
223
        '                <div class="enum_values col-md-8">\n' +
224
        '                  <div class="enum-wrapper">\n' +
225
        `                     <input type="hidden" class="enum-index" value="${index}">\n` +
226
        '                  </div>\n' +
227
        '\n' +
228
        '                  <div class="form-group row form-add-item">\n' +
229
        '                    <div class="col-md-9">\n' +
230
        '                      <input type="text" class="form-control enum-add-input">\n' +
231
        '                    </div>\n' +
232
        '                    <span class="btn btn-primary mb-2 enum-add-button">Přidat</span>\n' +
233
        '                  </div>\n' +
234
        '                </div>\n' +
235
        '              </div>\n' +
236
        '\n' +
237
        `              <div class="form-group row">\n` +
238
        '                <label for="exampleFormControlSelect1" class="col-sm-2">Umístění:</label>\n' +
239
        '                <div class="col-sm-10">\n' +
240
        '                  <div class="form-check form-check-inline">\n' +
241
        `                    <input type="hidden" name="_parameters[${index}].locations" value="on">\n` +
242
        `                    <input class="form-check-input" name="parameters[${index}].locations" id="parameters${index}.locations1" type="checkbox" value="1">\n` +
243
        `                    <label class="form-check-label" for="parameters[${index}].locations" >Sloupec</label>\n` +
244
        '                  </div>\n' +
245
        '                  <div class="form-check form-check-inline">\n' +
246
        `                    <input type="hidden" name="_parameters[${index}].locations" value="on">\n` +
247
        `                    <input class="form-check-input" name="parameters[${index}].locations" id="parameters${index}.locations2" type="checkbox" value="2">\n` +
248
        '                    <label class="form-check-label" for="parameters[${index}].locations">Řádek</label>\n' +
249
        '                  </div>\n' +
250
        '                  <div class="form-check form-check-inline">\n' +
251
        `                    <input type="hidden" name="_parameters[${index}].locations" value="on">\n` +
252
        `                    <input class="form-check-input" name="parameters[${index}].locations" id="parameters${index}.locations3" type="checkbox" value="3">\n` +
253
        '                    <label class="form-check-label" for="parameters[${index}].locations" >Hodnota</label>\n' +
254
        '                  </div>\n' +
255
        '                </div>\n' +
256
        '              </div>\n' +
257
        '              <div class="form-group row">\n' +
258
        '                  <label for="exampleFormControlSelect1" class="col-sm-2">Funkce:</label>\n' +
259
        '                  <div class="col-sm-10">\n' +
260
        `                    <select name="parameters[${index}].functions" id="parameters${index}.functions" class="mbSelect selectpicker" multiple data-live-search="true">\n` +
261
        functionSelectValues +
262
        '                    </select>\n' +
263
        '                  </div>\n' +
264
        '              </div>\n' +
265
        '              <div class="form-group row">\n' +
266
        '                  <label for="exampleFormControlSelect1" class="col-sm-2">Operátory:</label>\n' +
267
        '                  <div class="col-sm-10">\n' +
268
        `                    <select name="parameters[${index}].operators" id="parameters${index}.operators" class="mbSelect selectpicker" multiple data-live-search="true">\n` +
269
        operatorSelectValues +
270
        '                    </select>\n' +
271
        '                  </div>\n' +
272
        '              </div>\n' +
273
        '            </div>\n' +
274
        '          </div>\n' +
275
        '        </div>\n' +
276
        '      </div>\n' +
277
        '    ');
278

  
279
    this.reindexParametrOrder();
280
    this.initPanelBody();
281

  
282
}
283

  
284
function initPanelBody() {
285
    $('.enum-add-button').on('click', function () {
286
        var input = $(this).closest(".row").find('.enum-add-input');
287
        addEnumRow(this, input.val());
288

  
289
        input.val("");
290
    });
291

  
292
    $('.enum-wrapper').sortable().disableSelection();
293

  
294
    $('.type-select').on('change', function () {
295
        if (this.value == 1)
296
        {
297
            showEnum(this);
298
        }
299
        else
300
        {
301
            hideEnum(this);
302
        }
303
    });
304

  
305
    $(".selectpicker").selectpicker('refresh');
306

  
307
    $('.fa-trash-alt').click(function(event){
308
        event.preventDefault();
309
    });
310
}
311

  
312
function reindexParametrOrder() {
313
    var data = $(".parametr-order");
314

  
315
    let index = 0;
316
    $(data).each(function () {
317
        console.log($(this));
318
        $(this).attr('value', index);
319
        index++;
320
        console.log($(this));
321
    });
322
}
src/main/webapp/js/assemblyScripts.js
1
$(document).ready(function() {
2

  
3
    $('.select-action-button').on('click', function () {
4
        if ($(this).hasClass('select-action-headlight'))
5
        {
6
            $(this).removeClass('select-action-headlight');
7
            removeParameter(getParameterTitle($(this)), getParameterType($(this)));
8
        }
9
        else
10
        {
11
            $(this).closest('.select-action-buttons').find('.select-action-button').removeClass('select-action-headlight');
12

  
13
            removeFromAll(getParameterTitle($(this)));
14

  
15
            $(this).addClass('select-action-headlight');
16

  
17
            addParameter(getParameterIndex($(this)),
18
                getParameterTitle($(this)),
19
                getParameterType($(this)),
20
                getParameterHiddenValue($(this)));
21

  
22
            initParameters();
23
        }
24
    });
25

  
26
    initParameters();
27

  
28
});
29

  
30
function removeFromAll(title) {
31
    $rows = $('.selected-input-container');
32

  
33
    $rows.each(function () {
34
        $(this).find('.parameter-name').each(function () {
35
            if ($(this).text() == title)
36
            {
37
                $(this).closest('.parameter').remove();
38
            }
39
        })
40
    });
41
}
42

  
43
function getParameterIndex(button) {
44
    return $(button).closest('.parameter-row').find('.parameterIndex').val();
45
}
46

  
47
function addParameter(index, parameterName, type, hiddenValue) {
48
    var row = document.createElement('tr');
49
    row.classList.add(type + '-parameter', 'parameter');
50

  
51
    let hiddenInput = document.createElement('input');
52
    hiddenInput.type = 'hidden';
53
    hiddenInput.id = `parametersInConfiguration${index}.location.id`;
54
    hiddenInput.name = `parametersInConfiguration[${index}].location.id`;
55
    hiddenInput.value = hiddenValue;
56

  
57
    row.appendChild(hiddenInput);
58

  
59
    var firstTd = document.createElement('td');
60

  
61
    var firstTdBody = document.createElement('span');
62
    firstTdBody.classList.add('parameter-name');
63
    firstTdBody.innerHTML = parameterName;
64

  
65
    firstTd.appendChild(firstTdBody);
66

  
67
    row.appendChild(firstTd);
68

  
69
    var thirdTd = document.createElement('td');
70

  
71
    var thirdTdBody;
72

  
73

  
74
    if (type == 'value')
75
    {
76
        thirdTdBody = $('#function-select-' + index).clone()[0];
77

  
78
        $(thirdTdBody).removeClass('hidden');
79
    }
80
    else
81
    {
82
        var secondTd = document.createElement('td');
83

  
84
        var secondTdBody = document.createElement('input');
85
        secondTdBody.type = 'text';
86
        secondTdBody.classList.add('form-control', 'select-filter-input-name');
87
        secondTdBody.name = `parametersInConfiguration[${index}].columnName`;
88

  
89
        secondTd.appendChild(secondTdBody);
90

  
91
        row.appendChild(secondTd);
92

  
93
        thirdTdBody = document.createElement('span');
94
        thirdTdBody.innerHTML = "<i class=\"fas fa-sort\"></i>";
95
    }
96

  
97
    thirdTd.appendChild(thirdTdBody);
98

  
99
    row.appendChild(thirdTd);
100

  
101
    $('#' + type + '-wrapper').append($(row));
102

  
103
}
104

  
105
function removeParameter(title, parameterClass) {
106
    $rows = $('.' + parameterClass + '-parameter');
107

  
108
    $rows.each(function () {
109
        $(this).find('.parameter-name').each(function () {
110
            if ($(this).text() == title)
111
            {
112
                $(this).closest('.' + parameterClass + '-parameter').remove();
113
            }
114
        })
115
    });
116
}
117

  
118
function getParameterType(context) {
119
    if ($(context).hasClass('column-button'))
120
    {
121
        return 'column';
122
    }
123
    else if ($(context).hasClass('row-button'))
124
    {
125
        return 'row';
126
    }
127
    else if ($(context).hasClass('value-button'))
128
    {
129
        return 'value';
130
    }
131
}
132

  
133
function getParameterHiddenValue(context) {
134
    if ($(context).hasClass('column-button'))
135
    {
136
        return 1;
137
    }
138
    else if ($(context).hasClass('row-button'))
139
    {
140
        return 2;
141
    }
142
    else if ($(context).hasClass('value-button'))
143
    {
144
        return 3;
145
    }
146
}
147

  
148
function getParameterTitle(context) {
149
    return $(context).closest('.parameter-row').find('.parameter-name').text();
150
}
151

  
152

  
153
function initParameters()
154
{
155
    $('.sortable').sortable();
156
    $("select").selectpicker('refresh');
157
}
src/main/webapp/js/indexScripts.js
30 30
            });
31 31
        }
32 32

  
33
    })
33
    });
34 34
});

Také k dispozici: Unified diff