একটি বিদ্যমান ক্ষেত্র প্রসারিত

একটি বিদ্যমান ক্ষেত্র প্রসারিত করার জন্য আপনাকে অবশ্যই একটি অন্তর্নির্মিত ক্ষেত্রকে সাবক্লাস করতে হবে (যেমন FieldTextInput , FieldColour ) এবং তারপর আপনার প্রয়োজনের সাথে মানানসই করার জন্য এর অংশ পরিবর্তন করুন। একটি ক্ষেত্রের কিছু অংশ যা আপনি পরিবর্তন করতে পারেন:

আপনি যদি এমন একটি কাস্টম ক্ষেত্র তৈরি করতে চান যাতে কোনো অন্তর্নির্মিত ক্ষেত্র থেকে আচরণের প্রয়োজন হয় না তবে আপনাকে Field সাবক্লাস করতে হবে।

সাধারণ এক্সটেনশন

বেশিরভাগ কাস্টম ক্ষেত্র এই তিনটি প্রকারের একটিকে প্রসারিত করে:

  • টেক্সট ইনপুট : আপনি যদি চান যে আপনার ব্যবহারকারীরা আপনার ক্ষেত্রে টাইপ করুক, তাহলে আপনার FieldTextInput প্রসারিত করা উচিত।
  • নম্বর : আপনি যদি একটি নম্বর সংরক্ষণ করতে চান, তাহলে আপনাকে FieldNumber প্রসারিত করতে হবে।
  • ড্রপডাউন : আপনি যদি একটি ড্রপডাউন তৈরি করতে চান, কিন্তু আপনি এটি ডিফল্ট স্ট্রিং বা ইমেজ মডেলের চেয়ে আলাদা মডেল সঞ্চয় করতে চান, আপনার FieldDropdown প্রসারিত করা উচিত।

নির্দিষ্ট পরিস্থিতিতে আপনি একটি ভিন্ন ক্ষেত্রের ধরন প্রসারিত করতে চাইতে পারেন। উদাহরণস্বরূপ FieldLabelSerializable FieldLabel প্রসারিত করে।

সাবক্লাসিং

import * as Blockly from 'blockly';

export class MyCustomTextField extends Blockly.FieldTextInput {

  constructor(value, validator, config) {
    super(value, validator, config);
  }
}

একটি ক্ষেত্রের সাবক্লাসের কনস্ট্রাক্টর একটি কাস্টম ক্ষেত্রের জন্য কনস্ট্রাক্টরের সাথে খুব মিল দেখায়। সাব-কনস্ট্রাক্টরের স্বাক্ষর সাধারণত সুপার-কন্সট্রাক্টরের স্বাক্ষরের সাথে মিলিত হওয়া উচিত।

JSON এবং নিবন্ধন

আপনাকে একবার ক্ষেত্রটি নিবন্ধন করতে হবে:

Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);

এবং ক্লাসে fromJson এর একটি বাস্তবায়ন প্রদান করুন যাতে এটি JSON ফর্ম্যাটের সাথে কাজ করে:

static fromJson(options) {
  const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
  return new MySubclassName(value);
}

একটি ক্ষেত্র নিবন্ধন সম্পর্কে আরও তথ্যের জন্য একটি কাস্টম ক্ষেত্র তৈরিতে JSON এবং নিবন্ধন বিভাগটি দেখুন৷

,

একটি বিদ্যমান ক্ষেত্র প্রসারিত করার জন্য আপনাকে অবশ্যই একটি অন্তর্নির্মিত ক্ষেত্রকে সাবক্লাস করতে হবে (যেমন FieldTextInput , FieldColour ) এবং তারপর আপনার প্রয়োজনের সাথে মানানসই করার জন্য এর অংশ পরিবর্তন করুন। একটি ক্ষেত্রের কিছু অংশ যা আপনি পরিবর্তন করতে পারেন:

আপনি যদি এমন একটি কাস্টম ক্ষেত্র তৈরি করতে চান যাতে কোনো অন্তর্নির্মিত ক্ষেত্র থেকে আচরণের প্রয়োজন হয় না তাহলে আপনাকে Field সাবক্লাস করতে হবে।

সাধারণ এক্সটেনশন

বেশিরভাগ কাস্টম ক্ষেত্র এই তিনটি প্রকারের একটিকে প্রসারিত করে:

  • টেক্সট ইনপুট : আপনি যদি চান যে আপনার ব্যবহারকারীরা আপনার ক্ষেত্রে টাইপ করুক, তাহলে আপনার FieldTextInput প্রসারিত করা উচিত।
  • নম্বর : আপনি যদি একটি নম্বর সংরক্ষণ করতে চান, তাহলে আপনাকে FieldNumber প্রসারিত করতে হবে।
  • ড্রপডাউন : আপনি যদি একটি ড্রপডাউন তৈরি করতে চান, কিন্তু আপনি এটি ডিফল্ট স্ট্রিং বা ইমেজ মডেলের চেয়ে আলাদা মডেল সঞ্চয় করতে চান, আপনার FieldDropdown প্রসারিত করা উচিত।

নির্দিষ্ট পরিস্থিতিতে আপনি একটি ভিন্ন ক্ষেত্রের ধরন প্রসারিত করতে চাইতে পারেন। উদাহরণস্বরূপ FieldLabelSerializable FieldLabel প্রসারিত করে।

সাবক্লাসিং

import * as Blockly from 'blockly';

export class MyCustomTextField extends Blockly.FieldTextInput {

  constructor(value, validator, config) {
    super(value, validator, config);
  }
}

একটি ক্ষেত্রের সাবক্লাসের কনস্ট্রাক্টর একটি কাস্টম ক্ষেত্রের জন্য কনস্ট্রাক্টরের সাথে খুব মিল দেখায়। সাব-কনস্ট্রাক্টরের স্বাক্ষর সাধারণত সুপার-কন্সট্রাক্টরের স্বাক্ষরের সাথে মিলিত হওয়া উচিত।

JSON এবং নিবন্ধন

আপনাকে একবার ক্ষেত্রটি নিবন্ধন করতে হবে:

Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);

এবং ক্লাসে fromJson এর একটি বাস্তবায়ন প্রদান করুন যাতে এটি JSON ফর্ম্যাটের সাথে কাজ করে:

static fromJson(options) {
  const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
  return new MySubclassName(value);
}

একটি ক্ষেত্র নিবন্ধন সম্পর্কে আরও তথ্যের জন্য একটি কাস্টম ক্ষেত্র তৈরিতে JSON এবং নিবন্ধন বিভাগটি দেখুন৷