blockly > फ़ील्ड

फ़ील्ड क्लास

बदलाव किए जा सकने वाले फ़ील्ड के लिए ऐब्सट्रैक्ट क्लास.

हस्ताक्षर:

export declare abstract class Field<T = any> implements IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable 

यह लागू करता है: IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

कंस्ट्रक्टर

निर्माता मॉडिफ़ायर कंपनी का ब्यौरा
(कंस्ट्रक्टर)(वैल्यू, पुष्टि करने वाला, कॉन्फ़िगरेशन) Field क्लास का एक नया इंस्टेंस बनाता है

प्रॉपर्टी

प्रॉपर्टी मॉडिफ़ायर टाइप कंपनी का ब्यौरा
borderRect_ protected SVGRectElement | शून्य रेंडर किए गए फ़ील्ड का SVG बॉर्डर एलिमेंट.
clickTarget_ protected एलिमेंट | शून्य वह एलिमेंट जिससे क्लिक हैंडलर जुड़ा है.
constants_ protected ConstantProvider | शून्य सोर्स ब्लॉक के रेंडरर से जुड़े स्थिर.
कर्सर स्ट्रिंग कर्सर की स्टाइल पर कर्सर ले जाएं, जहां से एडिटर शुरू होता है.
DEFAULT_VALUE T | शून्य

**फ़ील्ड** में सेट की गई डिफ़ॉल्ट वैल्यू को ओवरराइट करने के लिए, सीधे प्रोटोटाइप को अपडेट करें.

उदाहरण: FieldImage.prototype.DEFAULT_VALUE = null;

बदलाव किया जा सकता है boolean आम तौर पर, बदलाव किए जा सकने वाले फ़ील्ड में कुछ ऐसा यूज़र इंटरफ़ेस (यूआई) दिखता है जिसमें बदलाव किया जा सकता है. उन्हें सीरियलाइज़र के ज़रिए भी सेव किया जाएगा.
enabled_ protected boolean क्या बदलाव किए जा सकने वाले ब्लॉक पर, एडिटर का इस्तेमाल करके फ़ील्ड की वैल्यू को बदला जा सकता है?
fieldGroup_ protected SVGG एलिमेंट | शून्य रेंडर किए गए फ़ील्ड का SVG ग्रुप एलिमेंट.
isDirty_ protected boolean क्या इस ब्लॉक को फिर से रेंडर करना होगा?
maxDisplayLength नंबर एलिप्सिस जोड़ने से पहले, टेक्स्ट में दिखाए जाने वाले ज़्यादा से ज़्यादा वर्ण.
नाम? स्ट्रिंग (ज़रूरी नहीं) फ़ील्ड का नाम. हर ब्लॉक में यूनीक. आम तौर पर, स्टैटिक लेबल का नाम नहीं होता.
एनबीएसपी

static

readonly

(तय नहीं किया गया) नॉन-ब्रेकिंग स्पेस.
क्रम से लगाने लायक boolean सीरियल नंबर वाले फ़ील्ड, सीरियलाइज़र की मदद से सेव किए जाते हैं, लेकिन क्रम से न लगाए जा सकने वाले फ़ील्ड सेव नहीं किए जाते. ऐसे फ़ील्ड जिनमें बदलाव किया जा सकता है, उन्हें क्रम से भी लगाया जा सकता है. डिफ़ॉल्ट रूप से ऐसा नहीं होता है, ताकि SERIALIZABLE पीछे के साथ काम कर सके.
size_ protected साइज़
SKIP_SETUP

static

readonly

खास चिह्न ऐसी वैल्यू जिसका इस्तेमाल यह सिग्नल देने के लिए किया जाता है कि फ़ील्ड के कंस्ट्रक्टर को फ़ील्ड की वैल्यू को कब सेट *नहीं* करना चाहिए याConfigure_ को चलाने की ज़रूरत नहीं है. साथ ही, सब-क्लास को ऐसा करने की अनुमति देनी चाहिए.
sourceBlock_ protected ब्लॉक करना | शून्य ब्लॉक करें, यह फ़ील्ड इससे जुड़ा है. शून्य से शुरू होता है और फिर init में सेट करें.
textContent_ protected टेक्स्ट | शून्य रेंडर किए गए फ़ील्ड का टेक्स्ट कॉन्टेंट एलिमेंट.
textElement_ protected SVGTextElement | शून्य रेंडर किए गए फ़ील्ड का SVG टेक्स्ट एलिमेंट.
validator_ protected FieldValidator<T> | शून्य पुष्टि करने वाला फ़ंक्शन तब कॉल किया जाता है, जब उपयोगकर्ता किसी बदलाव किए जा सकने वाले फ़ील्ड में बदलाव करता है.
value_ protected T | शून्य
visible_ protected boolean क्या ब्लॉक को छोटा किए जाने की वजह से, फ़ील्ड दिख रहा है या छिपाया गया है?

तरीके

तरीका मॉडिफ़ायर कंपनी का ब्यौरा
applyColour()

ब्लॉक के रंग/स्टाइल से मैच करने के लिए फ़ील्ड को अपडेट करता है.

अगर फ़ील्ड का रंग ब्लॉक के रंग पर निर्भर है, तो नॉन-ऐब्सट्रैक्ट सब-क्लास इसे लागू कर सकती हैं. ज़रूरत के मुताबिक यह अपने-आप कॉल कर देगा. जैसे, जब पैरंट ब्लॉक या रेंडरर बदलता है.

ज़्यादा जानकारी के लिए, फ़ील्ड का दस्तावेज़ देखें या उदाहरण के लिए,Fieldड्रॉपडाउन देखें.

bindEvents_() protected इवेंट को फ़ील्ड से बाइंड करें. सब-क्लास को तब बदला जा सकता है, जब उन्हें पसंद के मुताबिक इनपुट मैनेज करने की ज़रूरत हो.
configure_(config) protected फ़ील्ड में भेजे गए कॉन्फ़िगरेशन मैप को प्रोसेस करें.
createBorderRect_() protected फ़ील्ड बॉर्डर रेक्ट एलिमेंट बनाएं. सब-क्लास से नहीं बदला जाना चाहिए. इसके बजाय, initView के अंदर फ़ंक्शन के नतीजे में बदलाव करें या कॉल करने के लिए एक अलग फ़ंक्शन बनाएं.
createTextElement_() protected फ़ील्ड के लिए टेक्स्ट एलिमेंट बनाएं. सब-क्लास से नहीं बदला जाना चाहिए. इसके बजाय, initView के अंदर फ़ंक्शन के नतीजे में बदलाव करें या कॉल करने के लिए एक अलग फ़ंक्शन बनाएं.
doClassValidation_(newValue) protected

फ़ील्ड की वैल्यू पर सेट होने से पहले, उनकी पुष्टि करें. सब-क्लास को लागू करने का उदाहरण देखने के लिए, **FieldDropdown** देखें.

**ध्यान दें:** पुष्टि करने की सुविधा की मदद से, T, null, और undefined के बीच का कोई एक विकल्प चुना जा सकता है. **फ़ील्ड** को लागू करने पर कभी undefined नहीं दिखेगा. हालांकि, अगर कोई नई वैल्यू T के साथ काम करती है, तो सब-क्लास के लिए यह मान्य है कि वह undefined को दिखाए.

doClassValidation_(newValue) protected
doValueअमान्य_(_अमान्य वैल्यू, _fireChangeEvent) protected इसका इस्तेमाल, फ़ील्ड को यह बताने के लिए किया जाता है कि कोई अमान्य वैल्यू डाली गई है. फ़ील्ड को सब-क्लास से बदला जा सकता है. इसके लिए, FieldText Input देखें. डिफ़ॉल्ट रूप से कोई जवाब नहीं होता.
doValueUpdate_(newValue) protected इसका इस्तेमाल, फ़ील्ड की वैल्यू को अपडेट करने के लिए किया जाता है. वैल्यू को अपने हिसाब से सेव करने/बाहरी चीज़ों को अपडेट करने के लिए, सब-क्लास की मदद से उसे बदला जा सकता है.
fromJson(_options) static

सब-क्लास को JSON आर्ग ऑब्जेक्ट से अपनी फ़ील्ड सब-क्लास बनाने के लिए, इस तरीके को फिर से लागू करना चाहिए.

अगर किसी सब-क्लास ने इस तरीके को ओवरराइड नहीं किया है, तो फ़ील्ड सब-क्लास को फ़ील्ड सब-क्लास में रजिस्टर करने की कोशिश करना एक गड़बड़ी है.

getAbsoluteXY_() protected इस फ़ील्ड के ऊपरी-बाएं कोने के निरपेक्ष निर्देशांक दिखाएं. शुरुआत की जगह (0,0), पेज के मुख्य हिस्से का सबसे ऊपर बाईं ओर मौजूद होता है.
getBorderRect() protected बॉर्डर रेक्टैंगल एलिमेंट मिलता है.
getClickTarget_() protected क्लिक हैंडलर को बाइंड करने के लिए एलिमेंट. अगर यह नीति साफ़ तौर पर सेट नहीं की जाती है, तो फ़ील्ड का SVG रूट डिफ़ॉल्ट रूप से सेट हो जाता है. जब इस एलिमेंट पर बदलाव किए जा सकने वाले किसी फ़ील्ड पर क्लिक किया जाएगा, तो एडिटर खुलेगा.
getConstants() रेंडरर कॉन्सटेंट प्रोवाइडर डाउनलोड करें.
getDisplayText_() protected ब्लॉक पर दिखाने के लिए इस फ़ील्ड से टेक्स्ट पाएं. एलिप्सिस और दूसरे फ़ॉर्मैट की वजह से, getText से अलग हो सकता है.
getFlipRtl() यह दिखाता है कि हमें RTL में फ़ील्ड को फ़्लिप करना चाहिए या नहीं.
getSize()

फ़ील्ड की ऊंचाई और चौड़ाई दिखाता है.

*आम तौर पर* यही वह जगह होनी चाहिए जहां से रेंडर_ कॉल किया जाता है.

getSourceBlock() यह फ़ील्ड अटैच किया गया ब्लॉक पाएं.
getSvgRoot() बदलाव किए जा सकने वाले इस फ़ील्ड के लिए ग्रुप एलिमेंट पाता है. इसका इस्तेमाल साइज़ मापने और पोज़िशन तय करने के लिए किया जाता है.
getText_() protected इस फ़ील्ड के लौटाए गए टेक्स्ट को बदलने के लिए डेवलपर हुक. अगर इस फ़ील्ड की वैल्यू का टेक्स्ट प्रज़ेंटेशन, उसकी वैल्यू का सिर्फ़ स्ट्रिंग कास्ट नहीं है, तो इसे ओवरराइड करें. स्ट्रिंग कास्ट का इस्तेमाल करने के लिए, शून्य दिखाएं.
getText() इस फ़ील्ड से टेक्स्ट पाएं. किसी स्ट्रिंग पर वैल्यू को कास्ट करने के बजाय, एक अलग व्यवहार देने के लिए getText_ को ओवरराइड करें.
getTextContent() protected टेक्स्ट कॉन्टेंट को ऐक्सेस किया जा सकता है.
getTextElement() protected टेक्स्ट एलिमेंट पाता है.
getTooltip() इस फ़ील्ड के लिए टूलटिप टेक्स्ट दिखाता है.
getValidator() बदलाव करने लायक फ़ील्ड के लिए पुष्टि करने वाला फ़ंक्शन देता है या सेट न होने पर शून्य देता है.
getValue() फ़ील्ड की मौजूदा वैल्यू पाएं.
initModel() ब्लॉक पर इंस्टॉल होने के बाद, फ़ील्ड के मॉडल को शुरू करता है. डिफ़ॉल्ट रूप से कोई जवाब नहीं होता.
initView() protected इस फ़ील्ड के लिए 'ब्लॉक करें' यूज़र इंटरफ़ेस (यूआई) बनाएं.
isClickable() देखें कि यह फ़ील्ड, showEditor_ फ़ंक्शन तय करता है या नहीं.
isClickableInFlyout(autoClosingFlyout) जांचें कि जब ब्लॉक फ़्लायआउट में हो, तो फ़ील्ड पर क्लिक किया जा सकता है या नहीं. डिफ़ॉल्ट यह है कि फ़ील्ड हमेशा खुले रहने वाले फ़्लायआउट में क्लिक किए जा सकते हैं, जैसे कि सिंपल टूलबॉक्स, लेकिन कैटगरी टूलबॉक्स जैसे ऑटोक्लोज़िंग फ़्लाइआउट में नहीं. इस व्यवहार को बदलने के लिए सब-क्लास इस फ़ंक्शन को बदल सकती हैं. ध्यान दें कि इससे कोई असर पड़ेगा, इसके लिए isClickable को 'सही' दिखाना भी ज़रूरी है.
isCurrentlyEditable() देखें कि फ़िलहाल इस फ़ील्ड में बदलाव किया जा सकता है या नहीं. कुछ फ़ील्ड में कभी भी बदलाव नहीं किया जा सकता (जैसे कि टेक्स्ट लेबल). अन्य फ़ील्ड में बदलाव किया जा सकता है, लेकिन उनमें बदलाव नहीं किया जा सकता या वे फ़िलहाल बंद हो सकते हैं.
isEnabled() देखें कि सोर्स ब्लॉक में बदलाव किए जाने की स्थिति में, एडिटर का इस्तेमाल करके इस फ़ील्ड की वैल्यू को बदला जा सकता है या नहीं.
isFullBlockField() protected

इससे तय होता है कि इस फ़ील्ड को पूरा ब्लॉक लेना चाहिए या नहीं.

इस फ़ंक्शन को बदलते समय सावधानी बरतें. ऐसा हो सकता है कि यह आपकी उम्मीद या मकसद के मुताबिक काम न करे, क्योंकि इस तरह की गतिविधि को हैक किया गया था. अगर आपको इस फ़ंक्शन को बदलने का विचार करना है, तो अपने सही व्यवहार के साथ फ़ोरम पर पोस्ट करके देखें कि कोई दूसरा तरीका है या नहीं.

isSerializable() देखें कि इस फ़ील्ड को एक्सएमएल रेंडरर की मदद से सीरियलाइज़ किया जाना चाहिए या नहीं. पुराने सिस्टम के साथ काम करने की सुविधा और अलग-अलग स्थितियों के लॉजिक को हैंडल करता है.
isTabNavigable() यह दिखाता है कि फ़ील्ड, टैब नेविगेट करने लायक है या नहीं.
isVisible() इससे पता चलता है कि बदलाव किया जा सकने वाला यह फ़ील्ड दिख रहा है या नहीं.
loadLegacyState(callingClass, state) दिए गए स्टेटस को या तो पुराने एक्सएमएल हुक का इस्तेमाल करके लोड करता है, अगर उनका इस्तेमाल किया जाना चाहिए. यह दिखाने के लिए 'सही' दिखाता है कि लोडिंग मैनेज कर दी गई है. अगर ऐसा नहीं होता है, तो 'गलत' दिखाता है.
onLocationChange(_) उस फ़ील्ड को सूचना देता है जिसमें जगह बदल गई है.
onMouseDown_(e) protected फ़ील्ड पर पॉइंटरडाउन इवेंट मैनेज करना.
onShortcut(_shortcut) दिए गए कीबोर्ड शॉर्टकट को हैंडल करता है.
positionBorderRect_() protected साइज़ बदलने के बाद, फ़ील्ड के बॉर्डर रेक्टैंगल को जगह पर रखें.
positionTextElement_(xOffset, contentwidth) protected फ़ील्ड के टेक्स्ट एलिमेंट का साइज़ बदलने के बाद उसे पोज़िशन करें. यह एलटीआर और आरटीएल पोज़िशन, दोनों को हैंडल करता है.
render_() protected

किसी भी डीओएम एलिमेंट को एक जगह से दूसरी जगह ले जाने/साइज़ बदलने और नया साइज़ पाने के लिए, getSize() का इस्तेमाल किया जाता है.

ब्लॉक के साइज़/आकार पर असर डालने वाली सभी रेंडरिंग को यहां किया जाना चाहिए. इसे getSize() से ट्रिगर किया जाना चाहिए.

repositionForWindowResize()

विंडो का साइज़ बदलने के दौरान, WidgetDiv की जगह बदलने के लिए डेवलपर हुक. अगर आपके फ़ील्ड में ऐसा WidgetDiv है जिसे विंडो का साइज़ बदलने पर अपनी पोज़िशन बदलनी है, तो आपको यह हुक तय करना होगा. उदाहरण के लिए, टेक्स्ट इनपुट फ़ील्ड इस हुक को तय करते हैं, ताकि इनपुट WidgetDiv विंडो साइज़ इवेंट पर अपनी जगह बदल सके. यह खास तौर पर तब ज़रूरी होता है, जब मोडल इनपुट बंद हों. ऐसा इसलिए है, क्योंकि सॉफ़्ट कीबोर्ड के खुलने पर Android डिवाइस, विंडो का साइज़ बदलने वाला इवेंट फ़ायर करेंगे.

अगर आप चाहते हैं कि WidgetDiv की जगह बदलने के बजाय खुद को छिप जाए, तो 'गलत' डालें. यह डिफ़ॉल्ट व्यवहार है.

ड्रॉपडाउन डिव्स का अपना पोजिशन लॉजिक पहले से ही इस्तेमाल होता है. इसलिए, अगर आपके फ़ील्ड में सिर्फ़ कोई ड्रॉपडाउन है, तो आपको इस फ़ंक्शन को बदलने की ज़रूरत नहीं है.

saveLegacyState(callingClass) protected अगर इसका इस्तेमाल किया जाना चाहिए, तो एक्सएमएल स्थिति का स्ट्रिंग वाला वर्शन दिखाता है. अगर ऐसा नहीं होता है, तो यह शून्य दिखाता है. इसलिए, फ़ील्ड को सिग्नल देने के लिए, क्रम तय करने की सुविधा का इस्तेमाल करना चाहिए.
setEnabled(enabled) सेट करें कि सोर्स ब्लॉक में बदलाव किए जा सकने पर, एडिटर का इस्तेमाल करके इस फ़ील्ड की वैल्यू को बदला जा सकता है या नहीं.
setSourceBlock(block) इस फ़ील्ड को ब्लॉक में अटैच करें.
setTooltip(newTip) इस फ़ील्ड के लिए टूलटिप सेट करता है.
setValidator(handler)

बदलाव किए जा सकने वाले फ़ील्ड के लिए, पुष्टि करने का नया फ़ंक्शन सेट करता है या पहले से सेट किए गए वैलिडेटर को हटाता है.

पुष्टि करने वाला फ़ंक्शन, नई फ़ील्ड की वैल्यू लेता है और पुष्टि की गई वैल्यू दिखाता है. बदलाव को रद्द करने के लिए, पुष्टि की गई वैल्यू, इनपुट वैल्यू, उसका बदला गया वर्शन या शून्य हो सकती है.

अगर फ़ंक्शन कुछ भी नहीं देता है या तय नहीं होता है, तो नई वैल्यू को मान्य के तौर पर स्वीकार कर लिया जाता है. ऐसा इसलिए किया जाता है, ताकि फ़ील्ड-लेवल पर बदलाव की सूचना पाने वाले फ़ील्ड में, पुष्टि किए गए फ़ंक्शन का इस्तेमाल किया जा सके.

setValue(newValue, fireChangeEvent) इसका इस्तेमाल, फ़ील्ड की वैल्यू बदलने के लिए किया जाता है. पुष्टि और इवेंट मैनेज करता है. सब-क्लास को इस तरीके के बजाय, doClassValidation_ और doValueUpdate_ को बदलना चाहिए.
showEditor_(_e) protected फ़ील्ड के लिए एडिटर बनाने के लिए डेवलपर हुक. यह सुविधा डिफ़ॉल्ट रूप से काम नहीं करती. एडिटर बनाने के लिए, इसे ओवरराइड करना ज़रूरी है.
updateEditable() यूज़र इंटरफ़ेस (यूआई) जोड़ें या हटाएं, जिससे यह पता चलता है कि इस फ़ील्ड में बदलाव किया जा सकता है या नहीं.
updateSize_(margin) protected टेक्स्ट के आधार पर, फ़ील्ड का साइज़ अपडेट करता है.