Progress Bar (rich:progressBar) তৈরি এবং আপডেট করা

RichFaces এর File Upload এবং Progress Bar - রিচফেসেস (RichFaces) - Web Development

222

RichFaces এর rich:progressBar কম্পোনেন্ট একটি উন্নত ইউজার ইন্টারফেস উপাদান যা ব্যবহারকারীদের ফাইল আপলোড বা অন্যান্য লম্বা প্রসেসের প্রগ্রেস দেখানোর জন্য ব্যবহৃত হয়। এটি একটি ডায়নামিক প্রগ্রেস বার যা AJAX সমর্থিত এবং ইন্টারেকটিভ কাজের জন্য খুবই উপযোগী।

এখানে আমরা আলোচনা করব rich:progressBar কম্পোনেন্ট তৈরি এবং আপডেট করার পদ্ধতি।

1. rich:progressBar তৈরি করা

RichFaces এর rich:progressBar কম্পোনেন্ট ব্যবহার করে একটি সহজ প্রগ্রেস বার তৈরি করা যায়, যা বিভিন্ন কাজের প্রগ্রেস দেখাতে সহায়ক। এটি AJAX-এ কাজ করার সময় বা ফাইল আপলোডের সময় ব্যবহৃত হয়।

Basic Progress Bar Example:

<h:head>
    <h:outputStylesheet name="richfaces.css" />
</h:head>

<h:body>
    <h:form>
        <h:outputText value="Upload Progress" />
        <rich:progressBar value="#{uploadBean.progress}" maxValue="100" />
        <h:commandButton value="Start Upload" action="#{uploadBean.startUpload}" />
    </h:form>
</h:body>

Explanation:

  • rich:progressBar: এই কম্পোনেন্টটি প্রগ্রেস বার তৈরি করে এবং এর মাধ্যমে আপনি যে প্রগ্রেস ট্র্যাক করছেন তা দেখাতে পারেন।
  • value: প্রগ্রেস বারটি যে মান প্রদর্শন করবে, তা এখানে uploadBean.progress থেকে নেওয়া হচ্ছে।
  • maxValue: প্রগ্রেস বারটির সর্বোচ্চ মান সেট করা হয়েছে 100।
  • h:commandButton: একটি বাটন যা ব্যবহারকারীকে ফাইল আপলোড শুরু করতে সহায়ক।

2. Progress Bar আপডেট করা

আপনি AJAX ব্যবহার করে প্রগ্রেস বারটি আপডেট করতে পারেন, যেমন ফাইল আপলোড বা দীর্ঘস্থায়ী প্রসেস চলাকালীন সময়।

AJAX Progress Bar Update Example:

<h:head>
    <h:outputStylesheet name="richfaces.css" />
</h:head>

<h:body>
    <h:form>
        <h:outputText value="File Upload Progress" />
        
        <!-- Progress Bar to show the upload progress -->
        <rich:progressBar value="#{uploadBean.progress}" maxValue="100" styleClass="progress-bar" />
        
        <!-- Command Button to start the upload -->
        <h:commandButton value="Start Upload" action="#{uploadBean.startUpload}">
            <!-- Using AJAX to update progress bar -->
            <f:ajax execute="@form" render="progressBar" />
        </h:commandButton>
    </h:form>
</h:body>

Explanation:

  • AJAX: <f:ajax> ট্যাগটি ব্যবহার করে আপনি বাটনের ক্লিক ইভেন্টে প্রগ্রেস বারটি আপডেট করতে পারেন।
    • execute="@form": এটি সম্পূর্ণ ফর্মকে প্রসেস করবে।
    • render="progressBar": এটি প্রগ্রেস বারটি পুনরায় রেন্ডার করবে।
  • #{uploadBean.progress}: এটি বিন্ডিংয়ের মাধ্যমে Managed Bean থেকে প্রগ্রেস মান গ্রহণ করবে।

3. Managed Bean (Back-end) Example for Progress Bar Update

এখন, আমাদের একটি Managed Bean তৈরি করতে হবে যা ফাইল আপলোড বা অন্য কোনো প্রসেসের প্রগ্রেস আপডেট করবে।

Managed Bean Example (Java):

@ManagedBean
@ViewScoped
public class UploadBean {

    private int progress = 0;

    public int getProgress() {
        return progress;
    }

    public void setProgress(int progress) {
        this.progress = progress;
    }

    // Method to simulate a long running task (e.g. file upload)
    public void startUpload() {
        try {
            // Simulating file upload by updating progress bar
            for (int i = 1; i <= 100; i++) {
                // Simulating work being done
                Thread.sleep(50); // Simulate time-consuming task
                progress = i; // Update the progress
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Explanation:

  • progress: এটি আমাদের প্রগ্রেস স্ট্যাটাসের ভ্যালু। এটি rich:progressBar এর value অ্যাট্রিবিউটের সাথে সংযুক্ত।
  • startUpload(): এই মেথডটি ফাইল আপলোডের প্রগ্রেস আপডেট করার জন্য কাজ করবে। এটি 100 ভাগ প্রগ্রেস পর্যন্ত আপডেট করবে। Thread.sleep(50) ব্যবহার করা হয়েছে প্রতিটি স্টেপে বিলম্ব যুক্ত করতে, যেন আপনি প্রগ্রেস বারটি ধীরে ধীরে পূর্ণ হতে দেখুন।
  • AJAX: f:ajax এর মাধ্যমে যখন আপলোড শুরু হবে, তখন প্রগ্রেস বারটি AJAX এর মাধ্যমে আপডেট হবে।

4. Styling the Progress Bar

আপনি প্রগ্রেস বারের চেহারা কাস্টমাইজ করতে CSS ব্যবহার করতে পারেন। নিচে একটি সাধারণ CSS স্টাইলিং উদাহরণ দেওয়া হলো।

CSS for Progress Bar:

.progress-bar {
    width: 100%;
    height: 20px;
    border: 1px solid #ccc;
    background-color: #f3f3f3;
}

.richProgressBar .rf-pb-bar {
    background-color: #4CAF50; /* Green */
    height: 100%;
    transition: width 0.5s ease-in-out;
}

.richProgressBar .rf-pb-status {
    color: #fff;
    font-weight: bold;
    text-align: center;
}

Explanation:

  • width: 100%: প্রগ্রেস বারের পুরো প্রস্থ 100% পর্যন্ত প্রসারিত হবে।
  • background-color: #f3f3f3;: প্রগ্রেস বারের ব্যাকগ্রাউন্ড কালার।
  • rf-pb-bar: এটি প্রগ্রেস বারের সক্রিয় অংশ যা প্রগ্রেস আপডেট করার সময় রঙ পরিবর্তন করবে।

5. Handling Errors and Finalizing the Progress Bar

এটা নিশ্চিত করা গুরুত্বপূর্ণ যে, প্রগ্রেস বারটি কোনো ত্রুটি বা এক্সপিরেশন ঘটলে সঠিকভাবে কাজ করবে।

Adding Error Handling:

public void startUpload() {
    try {
        for (int i = 1; i <= 100; i++) {
            // Simulating work being done
            Thread.sleep(50); 
            progress = i; // Update the progress
        }
    } catch (InterruptedException e) {
        progress = 0; // Reset progress on error
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Upload failed", null);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
}

Explanation:

  • Error Handling: যদি InterruptedException ঘটলে, প্রগ্রেস বারটি পুনরায় 0 এ সেট করা হবে এবং একটি ত্রুটি বার্তা প্রদর্শন হবে।

RichFaces এর rich:progressBar কম্পোনেন্ট ব্যবহার করে আপনি খুব সহজেই একটি ডায়নামিক এবং AJAX সমর্থিত প্রগ্রেস বার তৈরি করতে পারেন। এটি ফাইল আপলোড, ডেটা প্রসেসিং, বা দীর্ঘস্থায়ী কাজের প্রগ্রেস দেখানোর জন্য ব্যবহৃত হয়। AJAX এর মাধ্যমে, আপনি প্রগ্রেস বারটিকে কোনো পেজ রিফ্রেশ ছাড়াই আপডেট করতে পারবেন, যা ব্যবহারকারীর অভিজ্ঞতাকে আরও উন্নত করে।

  • AJAX Integration: এটি প্রগ্রেস আপডেটের জন্য AJAX ব্যবহার করে পেজ রিফ্রেশ ছাড়াই ডেটা আপডেট করা হয়।
  • Customizable: CSS দিয়ে প্রগ্রেস বারের ডিজাইন কাস্টমাইজ করা যায়।

এভাবে, rich:progressBar ব্যবহার করে আপনার অ্যাপ্লিকেশনে ইন্টারঅ্যাকটিভ প্রগ্রেস বারের সাপোর্ট যুক্ত করা সম্ভব, যা উন্নত ইউজার অভিজ্ঞতা প্রদান করবে।

Content added By
Promotion

Are you sure to start over?

Loading...