📝 LWS এর এসাইনমেন্ট— নিজের শেখা যাচাই করি
LWS এসাইনমেন্ট ৩ঃ প্রোজেক্ট ম্যানেজার
Seach Feature Not Working

তুমি search ফিচার বানিয়েছো, কিন্তু TaskCard কম্পোনেন্টে ফিল্টার করা tasks দেখাচ্ছো না — বরং পুরনো tasks দেখাচ্ছো। সেজন্য সার্চ কাজ করছে না।

তোমার TaskList কম্পোনেন্টে filterdTasks ঠিকভাবে তৈরি হয়েছে, কিন্তু তুমি TaskCard কম্পোনেন্টে tasks পাঠাচ্ছো না, বরং TaskCard নিজেই useTaskList() দিয়ে পুরো tasks নিয়ে নিচ্ছে।


✅ Step-by-Step সমাধান (Bangla):

Step 1: TaskCardfilteredTasks পাঠাও

TaskCard কম্পোনেন্টে filteredTasks-এর মধ্যে প্রতিটি category অনুযায়ী আলাদা tasks পাঠাতে হবে।

🔧 TaskList.jsx - এ পরিবর্তন করো:

<TaskCard
  key={category}
  category={category}
  tasks={filterdTasks[category]} // ✅ এই লাইন অ্যাড করো
  onEditTask={handleEditTask}
/>

Step 2: TaskCard.jsx এ প্রপস দিয়ে টাস্কগুলো রিসিভ করো

🔧 TaskCard.jsx - এ এইভাবে কোড আপডেট করো:

export default function TaskCard({ category, tasks, onEditTask }) {
  const backgroundColor = {
    todo: "bg-indigo-600",
    inprogress: "bg-yellow-500",
    done: "bg-teal-500",
    revised: "bg-rose-500",
  };
 
  const background = backgroundColor[category];
 
  return (
    <div className="mb-4 w-full px-2 sm:w-1/2 md:w-1/4">
      {tasks?.length > 0 && (
        <div className={`rounded-lg ${background} p-4`}>
          <div className="mb-2 flex items-center justify-between">
            <h3 className="text-lg font-semibold">
              {category} ({tasks.length})
            </h3>
            <SortingBtn />
          </div>
          <div>
            {tasks.map((task) => (
              <Task
                key={task.id}
                task={task}
                category={category}
                onEditTask={onEditTask}
              />
            ))}
          </div>
        </div>
      )}
    </div>
  );
}

✅ Final Outcome:

  • এখন সার্চ বক্সে কিছু লিখলে title অনুযায়ী ফিল্টার করা টাস্কগুলোই দেখাবে।
  • যদি সার্চে কিছু না মিলে, সেই category-র টাস্ক সেকশন দেখাবে না।

📌 Bonus Suggestion:

তুমি চাইলে "No tasks found" মেসেজও দেখাতে পারো, যদি ফিল্টার করার পর কিছু না থাকে।

তুমি কি চাইছো এই "No task found" মেসেজ ফিচারটা আমি অ্যাড করে দিই?

দারুন! চল এবার "No tasks found" মেসেজটি যুক্ত করি। যখন সার্চ করার পর কোনো task মিলে না, তখন সেটা দেখানোর জন্য নিচের ধাপে কাজ করো।


✅ Step-by-Step (Bangla)

🔧 Step 1: TaskList.jsx - এ নতুন চেক যুক্ত করো

filterdTasks এর মধ্যে কোনো টাস্ক নেই — এটা চেক করার জন্য একটা noTasksFound ভ্যারিয়েবল বানাও।

const noTasksFound =
  filterdTasks.todo.length === 0 &&
  filterdTasks.inprogress.length === 0 &&
  filterdTasks.done.length === 0 &&
  filterdTasks.revised.length === 0;

এখন নিচের রেন্ডার অংশে শর্ত যোগ করো:

{
  anyTasksExist ? (
    noTasksFound ? (
      <div className="flex justify-center items-center text-gray-400 text-xl mt-10">
        No tasks found for your search.
      </div>
    ) : (
      <div className="mx-2 mb-6 flex flex-wrap">
        {Object.keys(filterdTasks).map((category) => (
          <TaskCard
            key={category}
            category={category}
            tasks={filterdTasks[category]}
            onEditTask={handleEditTask}
          />
        ))}
      </div>
    )
  ) : (
    <div className="flex justify-center items-center text-gray-500 text-xl">
      Task List is empty. Add task first.
    </div>
  );
}

🎯 এখন কী হবে:

  • যদি tasks একেবারে না থাকে → "Task List is empty. Add task first."
  • যদি টাস্ক থাকে, কিন্তু সার্চে কিছু না মেলে → "No tasks found for your search."
  • যদি সার্চে মিলে → ফিল্টার করা টাস্কগুলো দেখাবে ✅

তোমার অ্যাপ এখন পুরোপুরি ইউজার-ফ্রেন্ডলি ও স্মার্ট ফিল্টার ফিচারসহ হয়ে গেছে।
চাইলে আমি পুরা আপডেট করা TaskList.jsx ফাইল একসাথে দেখাতে পারি। দরকার হলে বলো।