Large Data Handling এবং Virtual Scrolling হল এমন দুটি কৌশল যা ওয়েব অ্যাপ্লিকেশনগুলির কার্যক্ষমতা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সহায়ক, বিশেষত যখন অ্যাপ্লিকেশন বিশাল পরিমাণ ডেটা প্রদর্শন করে। ExtJS এর মাধ্যমে আপনি এই দুইটি ফিচার দক্ষভাবে ব্যবহার করতে পারবেন, যা আপনাকে বড় ডেটাসেটের সাথে কাজ করতে সহায়তা করবে এবং ইউজার ইন্টারফেসের প্রতিক্রিয়া দ্রুত রাখবে।
এখানে আমরা Large Data Handling এবং Virtual Scrolling এর ধারণা এবং কিভাবে এটি ExtJS তে ইমপ্লিমেন্ট করা যায়, তা আলোচনা করব।
যখন আপনার অ্যাপ্লিকেশন বড় ডেটাসেট (যেমন হাজার বা লাখ লাখ রেকর্ড) নিয়ে কাজ করে, তখন পুরো ডেটা একসাথে লোড করা ইউজারের জন্য দেরি সৃষ্টি করতে পারে এবং ব্রাউজারের পারফরম্যান্সে প্রভাব ফেলতে পারে। Large Data Handling এর মাধ্যমে আমরা কেবল প্রয়োজনীয় ডেটা লোড করি এবং কাস্টমাইজড ডেটা ফিল্টার, পেজিনেশন, এবং লেজি লোডিং ব্যবহারের মাধ্যমে ডেটাকে দক্ষভাবে পরিচালনা করি।
Virtual Scrolling বা Infinite Scrolling হল একটি কৌশল যেখানে শুধুমাত্র দৃশ্যমান ডেটা বা দৃশ্যমান অংশের ডেটা লোড করা হয়, অর্থাৎ যখন আপনি স্ক্রোল করেন, তখন নতুন ডেটা লোড হয়। এটি ব্যবহারকারীদের বড় ডেটাসেট দেখানোর একটি সাশ্রয়ী পদ্ধতি, যেহেতু আপনি সমস্ত ডেটা একসাথে লোড না করে প্রয়োজন অনুযায়ী ডেটা লোড করেন।
ExtJS তে ভার্চুয়াল স্ক্রোলিং ব্যবহারের মাধ্যমে আপনি কম্পোনেন্ট বা গ্রিডে অল্প ডেটা দেখাতে পারেন, যখন স্ক্রল করা হবে তখন অবশিষ্ট ডেটা লোড হবে।
Virtual Scrolling বাস্তবায়ন করতে, ExtJS এর Ext.grid.Panel
বা Ext.data.Store
এর সাথে infinite scrolling
বা virtual store
ব্যবহার করা হয়।
Ext.create('Ext.data.Store', {
storeId: 'userStore',
fields: ['id', 'name', 'email'],
pageSize: 100, // প্রতিটি পেজে 100টি আইটেম দেখানো হবে
proxy: {
type: 'ajax',
url: 'https://example.com/api/users', // ডেটা লোড করার URL
reader: {
type: 'json',
rootProperty: 'data', // JSON ডেটার মূল অংশ
totalProperty: 'total' // মোট রেকর্ড সংখ্যা
}
},
autoLoad: true
});
Ext.create('Ext.grid.Panel', {
title: 'User List with Virtual Scrolling',
store: Ext.data.StoreManager.lookup('userStore'),
columns: [
{ text: 'ID', dataIndex: 'id', flex: 1 },
{ text: 'Name', dataIndex: 'name', flex: 2 },
{ text: 'Email', dataIndex: 'email', flex: 3 }
],
height: 400,
width: 600,
renderTo: Ext.getBody(),
loadMask: true, // ডেটা লোডের সময় লোড মাস্ক দেখাবে
viewConfig: {
trackOver: false, // স্ক্রলিংয়ের সময় সেল হাইলাইট না করার জন্য
stripeRows: true, // পঙক্তিগুলিতে স্ট্রাইপ যোগ করা হবে
listeners: {
// ভার্চুয়াল স্ক্রোলিং এর জন্য ইভেন্ট
bufferresize: function() {
var grid = this.up('grid');
var store = grid.getStore();
var view = grid.getView();
var total = store.getCount();
var visibleRows = view.getVisibleRange().length;
if (total <= visibleRows) return;
var currentIndex = store.getCount();
var nextPage = Math.floor(currentIndex / 100) + 1;
store.loadPage(nextPage); // পরবর্তী পেজ লোড করুন
}
}
}
});
এখানে:
pageSize: 100
: প্রতি পেজে 100টি রেকর্ড লোড করা হচ্ছে।bufferresize
: যখন গ্রিডের ভিউ আংশিকভাবে পরিবর্তিত হয় (যেমন স্ক্রল করা), তখন এটি নতুন ডেটা লোড করবে।store.loadPage(nextPage)
: এটি পরবর্তী পেজটি লোড করার জন্য ব্যবহৃত হয়।totalProperty
ব্যবহার করে সার্ভার থেকে মোট রেকর্ড সংখ্যা পাঠানো হচ্ছে, যাতে আমরা ডেটা লোড করার জন্য কাস্টম লজিক প্রয়োগ করতে পারি।বড় ডেটাসেটের জন্য paging একটি গুরুত্বপূর্ণ কৌশল। Paging ব্যবহারকারীদের pageSize
অনুযায়ী ডেটার পৃষ্ঠাগুলি ভাগ করে দেখায়। ExtJS তে পেজিং ব্যবহারের জন্য Ext.PagingToolbar
ব্যবহার করা হয়।
Ext.create('Ext.grid.Panel', {
title: 'Paginated Grid',
store: Ext.create('Ext.data.Store', {
pageSize: 50, // প্রতি পেজে 50টি রেকর্ড দেখানো হবে
proxy: {
type: 'ajax',
url: 'https://example.com/api/users', // সার্ভার থেকে ডেটা লোড
reader: {
type: 'json',
rootProperty: 'data',
totalProperty: 'total'
}
},
autoLoad: true
}),
columns: [
{ text: 'ID', dataIndex: 'id', flex: 1 },
{ text: 'Name', dataIndex: 'name', flex: 2 },
{ text: 'Email', dataIndex: 'email', flex: 3 }
],
height: 400,
width: 600,
renderTo: Ext.getBody(),
bbar: {
xtype: 'pagingtoolbar',
displayInfo: true, // পেজ তথ্য প্রদর্শন
store: Ext.data.StoreManager.lookup('userStore') // পেজিং টুলবারে স্টোর সেট করা
}
});
এখানে:
pageSize: 50
: প্রতি পেজে 50টি আইটেম দেখানো হচ্ছে।bbar
: পেজিং টুলবার যোগ করা হয়েছে যা ডেটার পৃষ্ঠাগুলোর মধ্যে নেভিগেট করতে সহায়ক।যখন আপনি বড় ডেটাসেট পরিচালনা করেন, তখন কিছু পারফরম্যান্স বিষয় খেয়াল রাখতে হবে:
এভাবে, আপনি ExtJS ব্যবহার করে দক্ষভাবে বড় ডেটাসেট পরিচালনা এবং ভার্চুয়াল স্ক্রোলিং প্রয়োগ করতে পারবেন, যা অ্যাপ্লিকেশনকে দ্রুত এবং স্নিগ্ধ রাখতে সাহায্য করবে।