File: public/js/dashboard.js

$(document).ready(function() 
    // Initialize Drag and Drop (requires SortableJS or similar library)
    var grid = document.getElementById('widget-grid');
// Load Widget Contents dynamically
$('.widget-content').each(function() 
    var route = $(this).data('route');
    $(this).load(route); // Simple load, assumes partial HTML
);
// Toggle Edit Mode
$('#edit-mode-btn').click(function() 
    var controls = $('.widget-controls');
    var isEditing = controls.is(':visible');
if (isEditing) 
        controls.hide();
        saveWidgetOrder();
     else 
        controls.show();
        initSortable();
);
function initSortable() 
    new Sortable(grid, 
        animation: 150,
        handle: '.handle',
        ghostClass: 'blue-background-class'
    );
function saveWidgetOrder() 
    var order = [];
    $('.grid-item').each(function() 
        order.push($(this).data('widget-id'));
    );
frappe.call(
        method: 'arohi_hiwebxseriescom.features.dashboard.controller.save_layout',
        args: 
            'widget_order': JSON.stringify(order)
        ,
        callback: function(r) 
            if (r.message.status === 'success') 
                frappe.show_alert(message: "Layout saved", indicator: 'green');
);

);

Open a command prompt (admin) and run:

sc query ArohiHiWebXSeries

The state should be RUNNING. If not, restart with:

net stop ArohiHiWebXSeries
net start ArohiHiWebXSeries

Make sure each installer runs to completion and the system is rebooted if prompted.