ExtJS তে Components হচ্ছে ইউজার ইন্টারফেস (UI) তৈরির মৌলিক উপাদান। এটি বিভিন্ন UI এলিমেন্ট (যেমন গ্রিড, প্যানেল, বাটন, টেক্সটফিল্ড, ফর্ম ইত্যাদি) তৈরি করতে ব্যবহৃত হয়। প্রতিটি Component একটি নির্দিষ্ট কনফিগারেশন এবং প্রপার্টি সেটিংস দিয়ে কাস্টমাইজ এবং কনফিগার করা যেতে পারে।
xtype
: কম্পোনেন্টের টাইপ বা ক্লাস।renderTo
: কোন DOM এলিমেন্টে কম্পোনেন্ট রেন্ডার হবে।width
/ height
: কম্পোনেন্টের আকার।items
: প্যানেল বা কনটেইনারের মধ্যে রাখা অন্যান্য কম্পোনেন্ট।listeners
: কম্পোনেন্টের ইভেন্ট হ্যান্ডলিং।ExtJS তে কম্পোনেন্ট তৈরি করার জন্য Ext.create
ব্যবহার করা হয়, যা কম্পোনেন্টের একটি ইনস্ট্যান্স তৈরি করে। এছাড়া, xtype
ব্যবহার করে ক্লাস নামও সরাসরি ব্যবহার করা যায়।
প্যানেল হল একটি সাধারণ কনটেইনার যা অন্যান্য UI উপাদান ধারণ করতে ব্যবহৃত হয়। এটি সাধারণত টেক্সট, ইমেজ, গ্রিড, এবং অন্যান্য উপাদান প্রদর্শন করতে ব্যবহৃত হয়।
Ext.create('Ext.panel.Panel', {
title: 'My Panel',
width: 300,
height: 200,
html: '<p>This is a simple panel!</p>',
renderTo: Ext.getBody() // DOM এর body তে রেন্ডার হবে
});
title
: প্যানেলের শিরোনাম।width
/ height
: প্যানেলের আকার।html
: প্যানেলের ভিতরের HTML কন্টেন্ট।renderTo
: কম্পোনেন্টকে রেন্ডার করার এলিমেন্ট।একটি বাটন কম্পোনেন্ট ক্লিক ইভেন্টের মাধ্যমে কোনো কার্যকলাপ সম্পাদন করতে ব্যবহৃত হয়। এটি একটি মৌলিক ইনপুট কম্পোনেন্ট।
Ext.create('Ext.Button', {
text: 'Click Me',
renderTo: Ext.getBody(), // DOM এর body তে রেন্ডার হবে
listeners: {
click: function() {
Ext.Msg.alert('Button Clicked', 'You clicked the button!');
}
}
});
text
: বাটনের লেখা।renderTo
: বাটনটি কোন DOM এলিমেন্টে রেন্ডার হবে।listeners
: বাটনের ক্লিক ইভেন্ট হ্যান্ডলার।গ্রিড কম্পোনেন্ট টেবিলের মতো ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়। এটি সাধারণত ডেটার লিস্ট, সোর্টিং, ফিল্টারিং, এবং পেজিনেশন (pagination) সমর্থন করে।
Ext.create('Ext.grid.Panel', {
title: 'User Grid',
store: {
fields: ['name', 'email'],
data: [
{ name: 'John Doe', email: 'john.doe@example.com' },
{ name: 'Jane Smith', email: 'jane.smith@example.com' }
]
},
columns: [
{ text: 'Name', dataIndex: 'name' },
{ text: 'Email', dataIndex: 'email' }
],
renderTo: Ext.getBody()
});
store
: গ্রিডের জন্য ডেটা স্টোর।columns
: গ্রিডের কলামগুলো।dataIndex
: গ্রিড কলামের জন্য ডেটা ইনডেক্স।টেক্সটফিল্ড ইউজারের ইনপুট নেওয়ার জন্য ব্যবহৃত হয়। এটি সাধারণত ফর্ম কম্পোনেন্ট হিসেবে ব্যবহৃত হয়।
Ext.create('Ext.form.field.Text', {
fieldLabel: 'Name',
name: 'name',
renderTo: Ext.getBody()
});
fieldLabel
: ইনপুট ফিল্ডের লেবেল।name
: ইনপুট ফিল্ডের নাম।renderTo
: ফিল্ডটি কোন DOM এলিমেন্টে রেন্ডার হবে।ExtJS তে কম্পোনেন্ট কনফিগার করতে config
এবং defaults
অপশন ব্যবহার করা যায়, যা আপনাকে নির্দিষ্ট প্রপার্টি নির্ধারণ করতে সাহায্য করে। এছাড়া, listeners
ব্যবহার করে ইভেন্ট হ্যান্ডলিংও করা যেতে পারে।
Ext.create('Ext.panel.Panel', {
title: 'Configured Panel',
width: 400,
height: 300,
bodyPadding: 10, // প্যানেলের ভিতরের প্যাডিং
html: '<p>This is a configured panel with padding and customized width!</p>',
layout: 'fit', // প্যানেলের লেআউট
renderTo: Ext.getBody()
});
bodyPadding
: প্যানেলের ভিতরের প্যাডিং।layout
: প্যানেলের লেআউট কনফিগার করা।আপনি যদি কাস্টম কম্পোনেন্ট বা ডায়নামিক কম্পোনেন্ট তৈরি করতে চান, তবে আপনাকে xtype
এবং items
ব্যবহার করতে হবে। উদাহরণস্বরূপ:
Ext.create('Ext.container.Viewport', {
layout: 'border',
items: [{
xtype: 'panel',
region: 'north',
title: 'Header Panel',
height: 50
}, {
xtype: 'grid',
region: 'center',
title: 'Main Grid',
store: {
fields: ['name', 'email'],
data: [
{ name: 'John', email: 'john@example.com' },
{ name: 'Jane', email: 'jane@example.com' }
]
},
columns: [{
text: 'Name',
dataIndex: 'name'
}, {
text: 'Email',
dataIndex: 'email'
}]
}]
});
এখানে xtype
ব্যবহার করে আমরা panel
এবং grid
কম্পোনেন্টগুলি ডায়নামিকভাবে তৈরি করেছি এবং region
এর মাধ্যমে তাদের পজিশন নির্ধারণ করেছি।
renderTo
দিয়ে কম্পোনেন্টকে DOM এ রেন্ডার করা যায়।listeners
দিয়ে ইভেন্ট হ্যান্ডলিং করা সম্ভব।items
কনফিগারেশন ব্যবহার করে কম্পোনেন্টের ভিতরে অন্যান্য কম্পোনেন্ট যোগ করা যায়।layout
এবং bodyPadding
এর মাধ্যমে UI কনফিগারেশন আরও কাস্টমাইজ করা যায়।ExtJS তে কম্পোনেন্ট তৈরি এবং কনফিগার করার এই পদ্ধতিগুলি আপনার অ্যাপ্লিকেশন তৈরির প্রক্রিয়াকে আরও সহজ এবং কার্যকরী করে তোলে।
Read more