একটি বিদ্যমান ক্ষেত্র প্রসারিত করার জন্য আপনাকে অবশ্যই একটি অন্তর্নির্মিত ক্ষেত্রকে সাবক্লাস করতে হবে (যেমন FieldTextInput
, FieldColour
) এবং তারপর আপনার প্রয়োজনের সাথে মানানসই করার জন্য এর অংশ পরিবর্তন করুন। একটি ক্ষেত্রের কিছু অংশ যা আপনি পরিবর্তন করতে পারেন:
- এর সম্পাদক ।
- এর অন-ব্লক ডিসপ্লে ।
- এটি যে পাঠ্য প্রদর্শন করে।
আপনি যদি এমন একটি কাস্টম ক্ষেত্র তৈরি করতে চান যাতে কোনো অন্তর্নির্মিত ক্ষেত্র থেকে আচরণের প্রয়োজন হয় না তবে আপনাকে Field
সাবক্লাস করতে হবে।
সাধারণ এক্সটেনশন
বেশিরভাগ কাস্টম ক্ষেত্র এই তিনটি প্রকারের একটিকে প্রসারিত করে:
- টেক্সট ইনপুট : আপনি যদি চান যে আপনার ব্যবহারকারীরা আপনার ক্ষেত্রে টাইপ করুক, তাহলে আপনার
FieldTextInput
প্রসারিত করা উচিত। - নম্বর : আপনি যদি একটি নম্বর সংরক্ষণ করতে চান, তাহলে আপনাকে
FieldNumber
প্রসারিত করতে হবে। - ড্রপডাউন : আপনি যদি একটি ড্রপডাউন তৈরি করতে চান, কিন্তু আপনি এটি ডিফল্ট স্ট্রিং বা ইমেজ মডেলের চেয়ে আলাদা মডেল সঞ্চয় করতে চান, আপনার
FieldDropdown
প্রসারিত করা উচিত।- সতর্কতা:
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
প্রসারিত করা উচিত।- সতর্কতা:
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 এবং নিবন্ধন বিভাগটি দেখুন৷