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_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>

Také k dispozici: Unified diff