Components এর মধ্যে Interaction এবং Event Handling

Web Development - এক্সটিজেএস (ExtJS) - ExtJS Components এবং Widgets |

ExtJS একটি শক্তিশালী ফ্রেমওয়ার্ক যা বিভিন্ন ধরনের UI কম্পোনেন্ট সরবরাহ করে এবং এগুলির মধ্যে Interaction ও Event Handling এর মাধ্যমে অ্যাপ্লিকেশনের কার্যক্ষমতা বৃদ্ধি করা যায়। ExtJS কম্পোনেন্টগুলির মধ্যে ইন্টারঅ্যাকশন এবং ইভেন্ট হ্যান্ডলিং গুরুত্বপূর্ণ ভূমিকা পালন করে, যা অ্যাপ্লিকেশনকে ইন্টারেক্টিভ এবং ব্যবহারকারী-বান্ধব করে তোলে।


১. Components এর মধ্যে Interaction

ExtJS এ, components হল UI উপাদান (যেমন গ্রিড, প্যানেল, বাটন, টেক্সটফিল্ড ইত্যাদি), যেগুলি একে অপরের সাথে ইন্টারঅ্যাক্ট করতে পারে। Interaction এর মাধ্যমে বিভিন্ন কম্পোনেন্টের মধ্যে তথ্য আদান-প্রদান, ডেটা আপডেট এবং অন্যান্য কার্যকলাপ করা যায়।

Components এর মধ্যে Interaction উদাহরণ:

ধরা যাক, একটি ComboBox এবং একটি Grid কম্পোনেন্ট রয়েছে এবং আমরা ComboBox থেকে একটি সিলেক্ট করা মানের উপর ভিত্তি করে Grid কম্পোনেন্টের ডেটা আপডেট করতে চাই।

Ext.create('Ext.panel.Panel', {
    renderTo: Ext.getBody(),
    width: 500,
    height: 400,
    title: 'ComboBox Interaction Example',
    layout: 'vbox',
    items: [
        {
            xtype: 'combo',
            fieldLabel: 'Select Category',
            store: ['Category 1', 'Category 2', 'Category 3'],
            listeners: {
                select: function(combo, records) {
                    // ComboBox এর সিলেকশন পরিবর্তিত হলে Grid আপডেট হবে
                    var selectedCategory = records[0].get('field1');
                    grid.getStore().filter('category', selectedCategory);
                }
            }
        },
        {
            xtype: 'grid',
            reference: 'grid',
            title: 'Data Grid',
            store: {
                fields: ['id', 'name', 'category'],
                data: [
                    { id: 1, name: 'Item 1', category: 'Category 1' },
                    { id: 2, name: 'Item 2', category: 'Category 2' },
                    { id: 3, name: 'Item 3', category: 'Category 3' }
                ]
            },
            columns: [
                { text: 'ID', dataIndex: 'id' },
                { text: 'Name', dataIndex: 'name' },
                { text: 'Category', dataIndex: 'category' }
            ]
        }
    ]
});

এখানে, ComboBox এর মধ্যে একটি সিলেকশন পরিবর্তন হলে, তার উপর ভিত্তি করে Grid এর ডেটা আপডেট করা হচ্ছে। এটি একটি Interaction এর উদাহরণ, যেখানে দুটি কম্পোনেন্ট একে অপরের সাথে ইন্টারঅ্যাক্ট করছে।


২. Event Handling

ExtJS তে, কম্পোনেন্টগুলির সাথে ইভেন্ট হ্যান্ডলিং অত্যন্ত গুরুত্বপূর্ণ। প্রতিটি কম্পোনেন্টের নিজস্ব ইভেন্ট থাকে (যেমন click, change, select ইত্যাদি), এবং আপনি এই ইভেন্টগুলো হ্যান্ডল করার মাধ্যমে অ্যাপ্লিকেশনের আচরণ নিয়ন্ত্রণ করতে পারেন।

Event Handling উদাহরণ:

  1. Button Click Event:

একটি Button কম্পোনেন্টের click ইভেন্ট হ্যান্ডল করা:

Ext.create('Ext.Button', {
    text: 'Click Me',
    renderTo: Ext.getBody(),
    handler: function() {
        Ext.Msg.alert('Button Clicked', 'You clicked the button!');
    }
});

এখানে, handler প্রপার্টি ব্যবহার করে বাটনের click ইভেন্টটি হ্যান্ডল করা হয়েছে। বাটনে ক্লিক করার সাথে সাথে একটি অ্যালার্ট ডায়ালগ বক্স প্রদর্শিত হবে।

  1. TextField Change Event:

একটি TextField কম্পোনেন্টে ব্যবহারকারী কোন টেক্সট প্রবেশ করলে change ইভেন্টটি ট্রিগার হয়:

Ext.create('Ext.form.field.Text', {
    fieldLabel: 'Enter Text',
    renderTo: Ext.getBody(),
    listeners: {
        change: function(field, newValue, oldValue) {
            console.log('Text changed from ' + oldValue + ' to ' + newValue);
        }
    }
});

এখানে, change ইভেন্টটি যখন ট্রিগার হবে, তখন এটি পরিবর্তিত মান এবং আগের মানকে কনসোলে লগ করবে।

  1. Grid Row Click Event:

Grid কম্পোনেন্টে একটি রো ক্লিক করা হলে ইভেন্ট হ্যান্ডল করা:

Ext.create('Ext.grid.Panel', {
    title: 'Click a Row',
    renderTo: Ext.getBody(),
    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' }
    ],
    listeners: {
        itemclick: function(grid, record) {
            Ext.Msg.alert('Row Clicked', 'You clicked: ' + record.get('name'));
        }
    }
});

এখানে, গ্রিডে একটি রো ক্লিক করার পর itemclick ইভেন্টটি ট্রিগার হয় এবং একটি অ্যালার্ট ডায়ালগ বক্সে ক্লিক করা রোয়ের নাম প্রদর্শিত হয়।


ExtJS তে Event Propagation এবং Bubbling

Event Propagation এবং Event Bubbling হল দুটি গুরুত্বপূর্ণ ধারণা যা ইভেন্ট হ্যান্ডলিংয়ের সময় ঘটতে পারে:

  1. Event Propagation:
    • এটি ইভেন্টের বিস্তার নির্দেশ করে, যেখানে একটি ইভেন্ট একটি DOM এলিমেন্টে ঘটে এবং তার পরবর্তী উপাদানগুলিতে ছড়িয়ে পড়ে।
  2. Event Bubbling:
    • ইভেন্ট বাবলিং হলো যখন একটি ইভেন্ট একটি DOM উপাদানে ঘটে এবং তার পরবর্তী উপাদান থেকে উপরের দিকে (প্যারেন্ট এলিমেন্টে) উঠে আসে।

ইভেন্ট বুবলিং উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'Parent Panel',
    renderTo: Ext.getBody(),
    listeners: {
        click: function() {
            alert('Parent Panel clicked!');
        }
    },
    items: [{
        xtype: 'button',
        text: 'Click Me',
        listeners: {
            click: function() {
                alert('Button clicked!');
            }
        }
    }]
});

এখানে, প্রথমে Button ক্লিক করলে বাচ্চা কম্পোনেন্টের ইভেন্ট হ্যান্ডল হবে, তারপর প্যারেন্ট কম্পোনেন্টের ইভেন্ট হ্যান্ডল হবে (ইভেন্ট বাবলিং)।


সারাংশ

  • Interaction: ExtJS কম্পোনেন্টগুলির মধ্যে তথ্য আদান-প্রদান এবং কম্পোনেন্টগুলির একে অপরের সাথে কাজ করার প্রক্রিয়া। উদাহরণস্বরূপ, ComboBox থেকে একটি মান সিলেক্ট করা হলে গ্রিডের ডেটা আপডেট করা।
  • Event Handling: ExtJS কম্পোনেন্টের ইভেন্টগুলো (যেমন: click, change, select ইত্যাদি) হ্যান্ডল করার প্রক্রিয়া। আপনি কম্পোনেন্টের নির্দিষ্ট ইভেন্টের উপর ভিত্তি করে অ্যাপ্লিকেশনের আচরণ নিয়ন্ত্রণ করতে পারেন।

ExtJS তে কম্পোনেন্টের মধ্যে Interaction এবং ইভেন্ট হ্যান্ডলিং ব্যবহার করে আপনি একটি ইন্টারেক্টিভ এবং ব্যবহারকারী-বান্ধব অ্যাপ্লিকেশন তৈরি করতে পারেন।

Content added By
Promotion