blockly > फ़ील्ड

फ़ील्ड क्लास

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

हस्ताक्षर:

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

लागू करने की सुविधा: IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

कंस्ट्रक्टर

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

प्रॉपर्टी

प्रॉपर्टी मॉडिफ़ायर टाइप ब्यौरा
borderRect_ protected SVGRect एलिमेंट | शून्य रेंडर किए गए फ़ील्ड का 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

खास चिह्न यह सिग्नल के लिए इस्तेमाल की जाने वाली वैल्यू है, क्योंकि फ़ील्ड के कंस्ट्रक्टर को फ़ील्ड की वैल्यू सेट *नहीं* करनी चाहिए याconfig_ नहीं चलाना चाहिए. साथ ही, सब-क्लास को ऐसा करने की अनुमति देनी चाहिए.
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

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

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

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue) protected इसका इस्तेमाल, फ़ील्ड को यह सूचना देने के लिए किया जाता है कि कोई अमान्य वैल्यू डाली गई है. सब-क्लास से बदली जा सकती है. FieldTextInput देखें. डिफ़ॉल्ट रूप से कोई बटन नहीं होता.
doValueUpdate_(newValue) protected इसका इस्तेमाल, किसी फ़ील्ड की वैल्यू को अपडेट करने के लिए किया जाता है. वैल्यू को अपने हिसाब से सेव करने या बाहरी चीज़ों को अपडेट करने के लिए, सब-क्लास को बदला जा सकता है.
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 टेक्स्ट के हिसाब से फ़ील्ड का साइज़ अपडेट करता है.