blockly > फ़ील्ड

फ़ील्ड क्लास

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

हस्ताक्षर:

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

इस्तेमाल करता है: IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode

निर्माता

निर्माता मॉडिफ़ायर ब्यौरा
(constructor)(value, validator, config) Field क्लास का नया इंस्टेंस बनाता है

प्रॉपर्टी

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

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

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

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

static

readonly

(एलान नहीं किया गया) नॉन-ब्रेकिंग स्पेस.
SERIALIZABLE बूलियन सीरियलाइज़र, सीरियलाइज़ किए जा सकने वाले फ़ील्ड को सेव करता है, लेकिन सीरियलाइज़ नहीं किए जा सकने वाले फ़ील्ड को सेव नहीं करता. बदलाव किए जा सकने वाले फ़ील्ड, सीरियलाइज़ किए जा सकने वाले होने चाहिए. ऐसा डिफ़ॉल्ट रूप से नहीं होता, ताकि SERIALIZABLE पुराने सिस्टम के साथ काम कर सके.
size_ protected साइज़ इस फ़ील्ड का साइज़ दिखाता है. getSize() और updateSize() के साइड इफ़ेक्ट होते हैं. इसलिए, यह उन सबक्लास के लिए शिम के तौर पर काम करता है जो साइज़ सेट करने/पाने के दौरान, फ़ील्ड के बाउंड में बदलाव करना चाहते हैं. ऐसा, अनचाहे रेंडरिंग या अन्य साइड इफ़ेक्ट को ट्रिगर किए बिना किया जाता है. ध्यान दें कि अगर किसी सबक्लास में get या set में से किसी एक को बदला जाता है, तो उसे *दोनों* को बदलना होगा. इसे लागू करने के लिए, सीधे तौर पर super को कॉल किया जा सकता है. हालांकि, यह JS स्पेसिफ़िकेशन के मुताबिक मौजूद होना चाहिए.
SKIP_SETUP

static

readonly

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

तरीके

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

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

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

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

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

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

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

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

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

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

fromXml(fieldElement) दिए गए एक्सएमएल एलिमेंट के आधार पर, फ़ील्ड की वैल्यू सेट करता है. इसे सिर्फ़ Blockly.Xml से कॉल किया जाना चाहिए.
getAbsoluteXY_() protected इस फ़ील्ड के सबसे ऊपर बाएं कोने के सटीक निर्देशांक दिखाता है. ऑरिजिन (0,0) पेज के मुख्य हिस्से के सबसे ऊपर बाएं कोने में होता है.
getBorderRect() protected बॉर्डर रेक्टैंगल एलिमेंट को दिखाता है.
getClickTarget_() protected वह एलिमेंट जिस पर क्लिक करने पर क्लिक हैंडलर काम करेगा. अगर इसे साफ़ तौर पर सेट नहीं किया जाता है, तो यह फ़ील्ड के SVG रूट पर डिफ़ॉल्ट रूप से सेट हो जाता है. बदलाव किए जा सकने वाले फ़ील्ड पर इस एलिमेंट पर क्लिक करने से, एडिटर खुल जाएगा.
getConstants() रेंडरर का कॉन्स्टेंट प्रोवाइडर पाएं.
getDisplayText_() protected ब्लॉक पर दिखाने के लिए, इस फ़ील्ड से टेक्स्ट पाएं. एलिप्सिस और अन्य फ़ॉर्मैटिंग की वजह से, यह getText से अलग हो सकता है.
getFlipRtl() यह बताता है कि हमें फ़ील्ड को आरटीएल में फ़्लिप करना चाहिए या नहीं.
getFocusableElement() IFocusableNode.getFocusableElement देखें.
getFocusableTree() IFocusableNode.getFocusableTree देखें.
getSize()

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

*आम तौर पर*, render_ को सिर्फ़ यहां से कॉल किया जाना चाहिए.

getSourceBlock() वह ब्लॉक पाएं जिससे यह फ़ील्ड जुड़ा है.
getSvgRoot() बदलाव किए जा सकने वाले इस फ़ील्ड के लिए ग्रुप एलिमेंट पाता है. इसका इस्तेमाल साइज़ को मेज़र करने और पोज़िशनिंग के लिए किया जाता है.
getText_() protected इस फ़ील्ड से मिले टेक्स्ट को बदलने के लिए डेवलपर हुक. अगर इस फ़ील्ड की वैल्यू का टेक्स्ट, सिर्फ़ वैल्यू की स्ट्रिंग कास्ट नहीं है, तो बदलें. स्ट्रिंग कास्ट का इस्तेमाल करने के लिए, शून्य दिखाएं.
getText() इस फ़ील्ड से टेक्स्ट पाएं. वैल्यू को स्ट्रिंग में कास्ट करने के बजाय, अलग तरह का व्यवहार देने के लिए getText_ को बदलें.
getTextContent() protected टेक्स्ट कॉन्टेंट पाता है.
getTextElement() protected टेक्स्ट एलिमेंट को दिखाता है.
getTooltip() इस फ़ील्ड के लिए टूलटिप टेक्स्ट दिखाता है.
getValidator() बदलाव किए जा सकने वाले फ़ील्ड के लिए पुष्टि करने वाला फ़ंक्शन दिखाता है. अगर यह सेट नहीं है, तो शून्य दिखाता है.
getValue() फ़ील्ड की मौजूदा वैल्यू पाएं.
initModel() ब्लॉक पर इंस्टॉल होने के बाद, फ़ील्ड के मॉडल को शुरू करता है. डिफ़ॉल्ट रूप से कोई कार्रवाई नहीं की जाती.
initView() protected इस फ़ील्ड के लिए ब्लॉक यूज़र इंटरफ़ेस बनाएं.
isClickable() देखें कि यह फ़ील्ड, showEditor_ फ़ंक्शन को तय करता है या नहीं.
isClickableInFlyout(autoClosingFlyout) देखें कि फ़्लाईआउट में ब्लॉक होने पर, फ़ील्ड पर क्लिक किया जा सकता है या नहीं. डिफ़ॉल्ट रूप से, फ़ील्ड हमेशा खुले रहने वाले फ़्लाईआउट में क्लिक किए जा सकते हैं, जैसे कि आसान टूलबॉक्स. हालांकि, कैटगरी टूलबॉक्स जैसे अपने-आप बंद होने वाले फ़्लाईआउट में, फ़ील्ड क्लिक नहीं किए जा सकते. इस व्यवहार को बदलने के लिए, सबक्लास इस फ़ंक्शन को बदल सकते हैं. ध्यान दें कि isClickable के सही होने पर ही, इस फ़ंक्शन का असर पड़ेगा.
isCurrentlyEditable() देखें कि इस फ़ील्ड में फ़िलहाल बदलाव किया जा सकता है या नहीं. कुछ फ़ील्ड में कभी भी बदलाव नहीं किया जा सकता. जैसे, टेक्स्ट लेबल. अन्य फ़ील्ड में बदलाव किया जा सकता है, लेकिन हो सकता है कि वे ऐसे ब्लॉक में मौजूद हों जिनमें बदलाव नहीं किया जा सकता या फ़िलहाल वे बंद हों.
isEnabled() देखें कि सोर्स ब्लॉक में बदलाव करने की सुविधा होने पर, एडिटर का इस्तेमाल करके इस फ़ील्ड की वैल्यू बदली जा सकती है या नहीं.
isSerializable() देखें कि इस फ़ील्ड को एक्सएमएल रेंडरर से क्रम में लगाया जाना चाहिए या नहीं. पुराने सिस्टम के साथ काम करने की सुविधा और अलग-अलग स्थितियों के लिए लॉजिक को मैनेज करता है.
isVisible() यह पता लगाता है कि बदलाव किए जा सकने वाले इस फ़ील्ड को दिखाया जा रहा है या नहीं.
loadLegacyState(callingClass, state) अगर पुराने एक्सएमएल हुक का इस्तेमाल किया जाना चाहिए, तो दिए गए स्टेटस को लोड करता है. लोडिंग की प्रोसेस पूरी हो जाने पर 'सही' दिखाता है. ऐसा न होने पर 'गलत' दिखाता है.
loadState(state) दी गई स्थिति की वैल्यू के आधार पर, फ़ील्ड की स्थिति सेट करता है. इसे सिर्फ़ सीरियलाइज़ेशन सिस्टम से कॉल किया जाना चाहिए.
onLocationChange(_) फ़ील्ड को सूचना देता है कि उसकी जगह बदल गई है.
onMouseDown_(e) protected किसी फ़ील्ड पर pointerdown इवेंट को हैंडल करना.
onNodeBlur() IFocusableNode.onNodeBlur देखें.
onNodeFocus() IFocusableNode.onNodeFocus देखें.
onShortcut(_shortcut) दिए गए कीबोर्ड शॉर्टकट को मैनेज करता है.
positionBorderRect_() protected साइज़ बदलने के बाद, फ़ील्ड के बॉर्डर रेक्ट की पोज़िशन तय करना.
positionTextElement_(xOffset, contentWidth) protected साइज़ बदलने के बाद, फ़ील्ड के टेक्स्ट एलिमेंट की पोज़िशन तय करना. यह LTR और RTL, दोनों तरह की पोज़िशनिंग को मैनेज करता है.
referencesVariables() यह फ़ील्ड, Blockly के किसी वैरिएबल का रेफ़रंस देता है या नहीं. अगर यह सही है, तो हो सकता है कि इसे सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के दौरान अलग तरीके से मैनेज करना पड़े. सबक्लास इसे बदल सकते हैं.
refreshVariableName() अगर इस फ़ील्ड में वैरिएबल का रेफ़रंस दिया गया है, तो इस फ़ील्ड से रेफ़र किए गए वैरिएबल के नाम को रीफ़्रेश करें.
render_() protected

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

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

repositionForWindowResize()

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

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

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

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

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

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

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

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