Drag and Drop Support এবং Node Manipulation

Web Development - এক্সটিজেএস (ExtJS) - ExtJS Tree Panel এবং Nested Data Structures |
1

ExtJS একটি শক্তিশালী ফ্রন্টএন্ড ফ্রেমওয়ার্ক যা ইউজার ইন্টারফেস (UI) তৈরি করতে ব্যবহৃত হয়। এর মধ্যে Drag and Drop সমর্থন এবং Node Manipulation এর মতো ফিচার রয়েছে, যা অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন এবং DOM (Document Object Model) নিয়ন্ত্রণ করার ক্ষমতা বৃদ্ধি করে। এই ফিচারগুলো অ্যাপ্লিকেশনকে আরও ইন্টারেক্টিভ, ব্যবহারকারী বান্ধব এবং কার্যক্ষম করে তোলে।


১. Drag and Drop Support in ExtJS

Drag and Drop (ড্র্যাগ এবং ড্রপ) হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ব্যবহারকারীদের UI এলিমেন্টগুলিকে এক স্থান থেকে অন্য স্থানে টেনে নিয়ে যাওয়ার ক্ষমতা দেয়। ExtJS তে Drag and Drop সমর্থন বেশ শক্তিশালী, এবং এটি বিভিন্ন কম্পোনেন্টের মধ্যে ডেটা স্থানান্তর করতে সহায়ক।

ExtJS তে Drag and Drop সমর্থন কিভাবে কাজ করে:

  • DragSource: এটি একটি এলিমেন্ট যা ড্র্যাগ করা যায়।
  • DropTarget: এটি একটি এলিমেন্ট যা ড্রপ করা যায়।

উদাহরণ: ড্র্যাগ এবং ড্রপ ব্যবহারে দুইটি প্যানেল

Ext.create('Ext.panel.Panel', {
    title: 'Draggable Panel',
    width: 300,
    height: 200,
    renderTo: Ext.getBody(),
    draggable: true, // প্যানেলটি ড্র্যাগ করা যাবে
    html: 'Drag this panel'
});

Ext.create('Ext.panel.Panel', {
    title: 'Drop Target',
    width: 300,
    height: 200,
    renderTo: Ext.getBody(),
    style: { marginTop: '10px' },
    html: 'Drop here',
    listeners: {
        render: function(panel) {
            panel.getEl().on('drop', function(e) {
                Ext.Msg.alert('Dropped', 'Item has been dropped!');
            });
        }
    }
});

ব্যাখ্যা:

  • draggable: true: এটি একটি প্যানেলকে ড্র্যাগযোগ্য করে তোলে।
  • on('drop', ...): ড্রপ ইভেন্টে একটি ফাংশন কল করা হয় যখন প্যানেলটিতে ড্রপ করা হয়।

২. Node Manipulation in ExtJS

Node Manipulation হল DOM (Document Object Model) এর মাধ্যমে HTML উপাদানগুলিকে প্রোগ্রাম্যাটিকভাবে পরিবর্তন করা। ExtJS তে Node Manipulation খুবই সহজ এবং এটি বিভিন্ন ডম উপাদানের সাথে ইন্টারঅ্যাক্ট করার জন্য শক্তিশালী API সরবরাহ করে।

Node Manipulation এর প্রধান ফিচারগুলো:

  • Ext.DomQuery: DOM নোড অনুসন্ধান করার জন্য ব্যবহৃত হয়।
  • Ext.get: DOM এলিমেন্টে সরাসরি অ্যাক্সেস করার জন্য ব্যবহৃত হয়।
  • setHtml, setText: HTML বা টেক্সট কনটেন্ট পরিবর্তন করা।
  • appendChild, insertBefore: নতুন উপাদান যোগ করা বা পুরনো উপাদান পরিবর্তন করা।

উদাহরণ: DOM নোড ম্যানিপুলেশন

Ext.create('Ext.button.Button', {
    text: 'Click Me',
    renderTo: Ext.getBody(),
    handler: function() {
        var node = Ext.get('myNode'); // DOM নোড নির্বাচন
        node.setHtml('This is a new content!'); // HTML পরিবর্তন করা
    }
});

Ext.create('Ext.Panel', {
    id: 'myNode',
    title: 'Panel',
    html: 'Original Content',
    renderTo: Ext.getBody()
});

ব্যাখ্যা:

  • Ext.get('myNode'): এটি id='myNode' সহ একটি DOM নোড নির্বাচন করে।
  • setHtml(): এই মেথডটি DOM নোডে HTML কনটেন্ট আপডেট করতে ব্যবহৃত হয়।

৩. Drag and Drop API এর ব্যবহার

ExtJS তে Drag and Drop API খুবই শক্তিশালী এবং এটি কাস্টম ড্র্যাগ এবং ড্রপ ইভেন্ট তৈরি করতে সহায়ক। ড্র্যাগ এবং ড্রপ করার সময়, আপনি কাস্টম কন্ডিশন চেক করতে পারেন, যেমন যদি ড্রপ এলিমেন্ট সঠিক হয় তবে ড্রপ হতে দেয় এবং না হলে ব্লক করে দেয়।

কাস্টম Drag and Drop উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'Drag Me',
    width: 200,
    height: 100,
    renderTo: Ext.getBody(),
    draggable: {
        moveOnEnter: true, // ড্র্যাগের সময় মুভমেন্ট
        constrain: true    // প্যানেলটি ড্র্যাগ করার সময় সীমাবদ্ধ রাখা
    },
    html: 'Drag me!'
});

Ext.create('Ext.panel.Panel', {
    title: 'Drop Area',
    width: 200,
    height: 100,
    style: { marginTop: '10px' },
    renderTo: Ext.getBody(),
    listeners: {
        render: function(panel) {
            panel.getEl().on('drop', function(e) {
                Ext.Msg.alert('Dropped', 'You dropped something!');
            });
        }
    }
});

ব্যাখ্যা:

  • draggable: ড্র্যাগ করার সময় প্যানেলটি কীভাবে আচরণ করবে তা নির্ধারণ করে (যেমন, moveOnEnter এবং constrain এর মাধ্যমে সীমাবদ্ধ করা)।
  • panel.getEl().on('drop', ...): প্যানেলটিতে ড্রপ ইভেন্ট শোনার জন্য ব্যবহার করা হয়।

৪. Node Manipulation API উদাহরণ

Ext.create('Ext.button.Button', {
    text: 'Add Node',
    renderTo: Ext.getBody(),
    handler: function() {
        // নতুন ডম নোড তৈরি
        var newNode = Ext.create('Ext.Component', {
            html: 'New Node Added'
        });
        // DOM এ নতুন নোড যোগ করা
        Ext.get('myNode').appendChild(newNode.el);
    }
});

Ext.create('Ext.Panel', {
    id: 'myNode',
    title: 'Container Panel',
    html: 'Initial Content',
    renderTo: Ext.getBody()
});

ব্যাখ্যা:

  • appendChild(): এই মেথডটি DOM এ নতুন উপাদান (নোড) যোগ করতে ব্যবহৃত হয়।

সারাংশ

  1. Drag and Drop: ExtJS তে Drag and Drop ফিচার ব্যবহারকারীকে ইন্টারঅ্যাকটিভভাবে UI এলিমেন্টগুলি টেনে নিয়ে যেতে এবং ড্রপ করতে দেয়। এটি DragSource এবং DropTarget এর মাধ্যমে কাজ করে।
  2. Node Manipulation: ExtJS এর Node Manipulation API ডেভেলপারদের DOM উপাদানগুলিকে সহজে পরিবর্তন এবং ম্যানিপুলেট করার সুযোগ দেয়। এটি ডেটার ডাইনামিক পরিবর্তন এবং UI কন্টেন্ট ম্যানিপুলেশন করার জন্য ব্যবহৃত হয়।
  3. ব্যবহারকারী অভিজ্ঞতা: Drag and Drop এবং Node Manipulation ব্যবহারকারীদের জন্য আরও ইন্টারেক্টিভ এবং গতিশীল ইউজার ইন্টারফেস তৈরি করতে সাহায্য করে, যা অ্যাপ্লিকেশনকে আরও ব্যবহারকারী-বান্ধব করে তোলে।

ExtJS তে এই ফিচারগুলো ব্যবহার করে আপনি অত্যন্ত ইন্টারেক্টিভ এবং ডাইনামিক ইউজার ইন্টারফেস তৈরি করতে পারেন, যা ব্যবহারকারীদেরকে আরও সহজে এবং কার্যকরীভাবে অ্যাপ্লিকেশনের সাথে ইন্টারঅ্যাক্ট করতে সহায়ক।

Content added By
Promotion