ExtJS একটি শক্তিশালী ফ্রন্টএন্ড ফ্রেমওয়ার্ক যা ইউজার ইন্টারফেস (UI) তৈরি করতে ব্যবহৃত হয়। এর মধ্যে Drag and Drop সমর্থন এবং Node Manipulation এর মতো ফিচার রয়েছে, যা অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন এবং DOM (Document Object Model) নিয়ন্ত্রণ করার ক্ষমতা বৃদ্ধি করে। এই ফিচারগুলো অ্যাপ্লিকেশনকে আরও ইন্টারেক্টিভ, ব্যবহারকারী বান্ধব এবং কার্যক্ষম করে তোলে।
Drag and Drop (ড্র্যাগ এবং ড্রপ) হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ব্যবহারকারীদের UI এলিমেন্টগুলিকে এক স্থান থেকে অন্য স্থানে টেনে নিয়ে যাওয়ার ক্ষমতা দেয়। ExtJS তে Drag and Drop সমর্থন বেশ শক্তিশালী, এবং এটি বিভিন্ন কম্পোনেন্টের মধ্যে ডেটা স্থানান্তর করতে সহায়ক।
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 হল DOM (Document Object Model) এর মাধ্যমে HTML উপাদানগুলিকে প্রোগ্রাম্যাটিকভাবে পরিবর্তন করা। ExtJS তে Node Manipulation খুবই সহজ এবং এটি বিভিন্ন ডম উপাদানের সাথে ইন্টারঅ্যাক্ট করার জন্য শক্তিশালী API সরবরাহ করে।
Ext.DomQuery
: DOM নোড অনুসন্ধান করার জন্য ব্যবহৃত হয়।Ext.get
: DOM এলিমেন্টে সরাসরি অ্যাক্সেস করার জন্য ব্যবহৃত হয়।setHtml
, setText
: HTML বা টেক্সট কনটেন্ট পরিবর্তন করা।appendChild
, insertBefore
: নতুন উপাদান যোগ করা বা পুরনো উপাদান পরিবর্তন করা।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 কনটেন্ট আপডেট করতে ব্যবহৃত হয়।ExtJS তে Drag and Drop API খুবই শক্তিশালী এবং এটি কাস্টম ড্র্যাগ এবং ড্রপ ইভেন্ট তৈরি করতে সহায়ক। ড্র্যাগ এবং ড্রপ করার সময়, আপনি কাস্টম কন্ডিশন চেক করতে পারেন, যেমন যদি ড্রপ এলিমেন্ট সঠিক হয় তবে ড্রপ হতে দেয় এবং না হলে ব্লক করে দেয়।
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', ...)
: প্যানেলটিতে ড্রপ ইভেন্ট শোনার জন্য ব্যবহার করা হয়।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 এ নতুন উপাদান (নোড) যোগ করতে ব্যবহৃত হয়।ExtJS তে এই ফিচারগুলো ব্যবহার করে আপনি অত্যন্ত ইন্টারেক্টিভ এবং ডাইনামিক ইউজার ইন্টারফেস তৈরি করতে পারেন, যা ব্যবহারকারীদেরকে আরও সহজে এবং কার্যকরীভাবে অ্যাপ্লিকেশনের সাথে ইন্টারঅ্যাক্ট করতে সহায়ক।