import $ from 'jquery';
import Sortable from 'sortablejs';
import PageFilters, { Instance as PageFiltersInstance } from './filter';
import Page from './page';

const pad = (n, s) => (`000${n}`).substr(-s);

// Pages Ordering
let Ordering = null;
let orderingElement = $('#ordering');
if (orderingElement.length) {
    Ordering = new Sortable(orderingElement.get(0), {
        filter: '.ignore',
        onUpdate: function() {
            /* Old single page index behavior

            let item = $(event.item);
            let index = orderingElement.children().index(item) + 1;
            $('[data-order]').val(index);
            */

            let indexes = [];
            const children = orderingElement.children();
            const padZero = (children.length + '').split('').length;
            children.each((index, item) => {
                item = $(item);
                indexes.push(item.data('id'));
                item.find('.page-order').text(`${pad(index + 1, padZero)}.`);
            });

            $('[data-order]').val(indexes.join(','));
        }
    });

    $(document).on('input', '[name="data[folder]"]', (event) => {
        const target = $(event.currentTarget);
        const activeOrder = $('[data-id][data-active-id]');

        activeOrder.data('id', target.val());

        Ordering.options.onUpdate();
    });

}

export default {
    Ordering,
    Page,
    PageFilters: {
        PageFilters,
        Instance: PageFiltersInstance
    }
};