Newer
Older
dmpopidor / app / javascript / views / plans / datasets.js

$(() => {
  $('#datasets').sortable({
    handle: '.dataset-actions .handle',
    stop: () => {
      $('#datasets .dataset-element').each(function callback(index) {
        $(this).find('.dataset-order').val(index + 1);
      });
    },
  });

  $('#add-dataset').click(() => {
    const lastDataset = $('#datasets .dataset-element').last();
    const lastDatasetOrder = parseInt(lastDataset.find('.dataset-order').val(), 10);
    const duplicated = lastDataset.clone(false, false);
    const duplicatedId = `plan_datasets_attributes_${new Date().getTime()}`;
    const duplicatedName = `plan[datasets_attributes][${new Date().getTime()}]`;

    // Dataset name
    duplicated.find('.dataset-name input').attr('id', `${duplicatedId}_name`);
    duplicated.find('.dataset-name input').attr('name', `${duplicatedName}[name]`);
    duplicated.find('.dataset-name label').attr('for', `${duplicatedId}_name`);
    duplicated.find('.dataset-name input').val(null);
    // Dataset description
    duplicated.find('.dataset-description input').attr('id', `${duplicatedId}_description`);
    duplicated.find('.dataset-description input').attr('name', `${duplicatedName}[description]`);
    duplicated.find('.dataset-description label').attr('for', `${duplicatedId}_description`);
    duplicated.find('.dataset-description input').val(null);
    // Dataset order
    duplicated.find('.dataset-order').attr('id', `${duplicatedId}_order`);
    duplicated.find('.dataset-order').attr('name', `${duplicatedName}[order]`);
    duplicated.find('.dataset-order').val(lastDatasetOrder + 1);

    duplicated.appendTo('#datasets');
  });
});