user_dashboard_bootstrap-1.0.2/js/user_dashboard.js

js/user_dashboard.js
(function ($, drupalSettings, once) {

  let sortable = () => {
    $(".sortable").sortable({
      revert: true,
      handle: '.handle',
      placeholder: 'sort-placeholder',
      forcePlaceholderSize: true,
      connectWith: ".sortable",
      receive: function (event, ui) {
        let region = this.id;
        let bid = ui.sender.attr("id");
        $.post(drupalSettings.dashboard.updatePath, {action: 'move', bid: bid, region: region})
          .done(function (data) {

          })
          .fail(function () {
            Drupal.t("An error occurred during the update of the entity. Please consult the watchdog.");
          });
      },
      update: function (event, ui) {
        let blockOrder = $(this).sortable('toArray').toString();
        $.post(drupalSettings.dashboard.updatePath, {action: 'weight', bids: blockOrder})
          .done(function (data) {

          })
          .fail(function () {
            Drupal.t("An error occurred during the update of the entity. Please consult the watchdog.");
          });
      }
    }).disableSelection();
    $(".draggable").draggable({
      axis: "y",
      connectToSortable: '.sortable',
      cursor: 'pointer',
      revert: 'invalid',
      start: function() {
        $('.layout-row').removeClass('d-none');
        $('.sortable').addClass('ui-sortable-border');
      },
      stop: function(){
        $('.sortable').removeClass('ui-sortable-border');
      },
    });
  }
  let removeEmpty = ()=> {
    let checkSidebar = $.trim($('#user_dashboard_column2').text());
    if (checkSidebar==''){
      $('#user_dashboard_column2').addClass('d-none');
      $('#user_dashboard_column1').removeClass('col-8').addClass('col-12');
    } else {
      $('#user_dashboard_column2').removeClass('d-none');
      $('#user_dashboard_column1').removeClass('col-12').addClass('col-8');
    }
    let checkEmpty = ['user_dashboard_main', 'user_dashboard_column1','user_dashboard_column3', 'user_dashboard_footer'];
    checkEmpty.forEach((childId) => {
      let parentCheck = $.trim($('#' + childId).text());
      if (parentCheck == ''){
        $('#' + childId).parent().addClass('d-none');
      } else {
        $('#' + childId).parent().removeClass('d-none');
      }
    });
  }
  removeEmpty();
  sortable();
  Drupal.behaviors.user_dashboard = {
    attach: function (context, settings) {
      $(once('dashboard-process', '#dashboard', context)).each(function () {
        $('.customize #load-disabled-blocks').click(function (e) {
          e.preventDefault();
          //send the blocks to our default blocks callback
          $('#dashboard .canvas .canvas-content').removeClass('hidden');
          $('#dashboard .btn-close.hidden').removeClass('hidden');
          $('.layout-row').removeClass('d-none');
          $.get(drupalSettings.dashboard.customize, function (data) {
            $('#dashboard .canvas .canvas-content .disabled-blocks').html(data);
            $(".user-dashboard-region .region").addClass('ui-sortable');
            draggableInit();
            close();
            collapse();
          });
        });
        function draggableInit() {
          let blockId = '';
          $("#disabled-blocks [draggable=true]").bind("dragstart", function (event) {
            blockId = $(this).attr('id');
            $('.sortable').addClass('ui-sortable-border');
            let that = $(this);
            let urlBlockContent = drupalSettings.dashboard.blockContent + '/' + $(this).data('delta');

            $.get(urlBlockContent, function (data) {
              that.next().html(data);
            });

            event.originalEvent.dataTransfer.setData("application/json", JSON.stringify({id: blockId, delta: $(this).data('delta')}));
          });

          $("#dashboard [droppable=true]").bind("dragover", function (event) {
            $(this).find('.region').addClass("bg-info");
            event.preventDefault();
          });
          $("#dashboard [droppable=true]").bind("dragleave", function () {
            $(this).find('.region').removeClass("bg-info");
            $('.ui-sortable-border').addClass('ui-sortable-border');
          });
          $("#dashboard [droppable=true]").bind("drop", function (event) {
            let region_id = $(this).attr('id');
            if (!$(this).data('status')) {
              $(this).data('status', 'lock');
              let data = JSON.parse(event.originalEvent.dataTransfer.getData("application/json"));
              let elementId = data.id;
              let blockId = data.delta;
              let that = $(this);
              let spinners =
                '<div class="spinners d-flex justify-content-center"><div class="spinner-border" role="status">' +
                '<span class="sr-only">' + Drupal.t('Loading') + '…' + '</span>' +
                '</div></div>';

              $(this).find('.region').prepend(spinners);
              $.post(drupalSettings.dashboard.drawer, {region: region_id, blockId: blockId})
                .done(function (data) {
                  let bid = data.data.id;
                  let block = $(".disabled-blocks #" + elementId).data('bid', bid).hide().parent().detach();
                  that.find('.region').prepend(block);
                  that.find(".bg-info").removeClass("bg-info");
                  that.find(".spinners").remove();
                })
                .fail(function () {
                  Drupal.t("An error occurred during the update of the entity. Please consult the watchdog.");
                });

              that.data('status', '');
            }
          });
        }
        function close() {
          $('#dashboard .btn-close').on('click', function () {
            let bid = $(this).data('bid');
            let that = $(this);
            $.post(drupalSettings.dashboard.updatePath, {action: 'delete', bid: bid})
              .done(function (data) {
                that.closest('.card').remove();
              })
              .fail(function () {
                Drupal.t("An error occurred during the update of the entity. Please consult the watchdog.");
              });
          });
        }
        function collapse() {
          $('#dashboard .card-header').on('click', function () {
            let bid = $(this).data('bid');
            let status = $(this).closest('.card').attr('open');
            $.post(drupalSettings.dashboard.updatePath, {action: 'collapse', bid: bid, status: status})
              .fail(function () {
                Drupal.t("An error occurred during the update of the entity. Please consult the watchdog.");
              });
          });
        }

      });
    }
  };
})(jQuery, drupalSettings, once);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc