డైనమిక్ ప్రశ్న రకం
డైనమిక్ ప్రశ్న రకం ఫీల్డ్ యొక్క ప్రశ్న రకం మరియు విడ్జెట్ API ప్రతిస్పందన లేదా లెక్కించిన విలువ ఆధారంగా రన్టైమ్లో నిర్ణయించబడటానికి అనుమతిస్తుంది.
డైనమిక్ ప్రశ్న రకం ఫీచర్ ఫీల్డ్ యొక్క ఇన్పుట్ విడ్జెట్ మరియు ధృవీకరణ ప్రవర్తన ఫారం డిజైన్ సమయంలో కాకుండా రన్టైమ్లో నిర్ణయించబడటానికి అనుమతిస్తుంది. సేకరించవలసిన డేటా రకం సర్వర్-వైపు కాన్ఫిగరేషన్, API ప్రతిస్పందన, లేదా మునుపటి ఫీల్డ్ విలువపై ఆధారపడినప్పుడు ఉపయోగించే అధునాతన rtSurvey పొడిగింపు ఇది.
సాధారణ వినియోగ కేసు ఒక కాన్ఫిగర్ చేయగల తనిఖీ చెక్లిస్ట్, ఇక్కడ సర్వర్ ఏ ఫీల్డ్లు అవసరమో, అవి ఏ రకమైనవో (text, integer, select మొదలైనవి), మరియు ఏ ఎంపికలు అందుబాటులో ఉన్నాయో నిర్ణయిస్తుంది — ప్రతి కాన్ఫిగరేషన్కు ఫారం తిరిగి నిర్మించకుండా.
ఇది ఎలా పని చేస్తుంది
డైనమిక్ ప్రశ్న రకంగా గుర్తించిన ఫీల్డ్ దాని కాన్ఫిగరేషన్ API నుండి తీసుకోవడానికి callapi() ఉపయోగిస్తుంది. API ప్రతిస్పందన నిర్వచిస్తుంది:
- రెండర్ చేయవలసిన ఇన్పుట్ రకం (text, integer, select_one మొదలైనవి)
- అందుబాటులో ఉన్న ఎంపికలు (select రకాలకు)
- ధృవీకరణ నియమాలు
ఫీల్డ్ అంతర్గతంగా specialFeature: isDynamicQuestionType తో గుర్తించబడుతుంది, ఇది ఫారం ఇంజిన్కు స్థిర ఫారం నిర్వచనం బదులు API ప్రతిస్పందనను ఉపయోగించి విడ్జెట్ నిర్మించమని చెప్తుంది.
సెటప్
దశ 1: ఫీల్డ్ కాన్ఫిగరేషన్ తీసుకోవడం
డైనమిక్ కాన్ఫిగరేషన్ పొందడానికి callapi() తో calculate ఫీల్డ్ ఉపయోగించండి:
| type | name | label | appearance | calculation |
|---|---|---|---|---|
| calculate | field_config | callapi | callapi('POST', 'https://api.example.com/field-config', 1, 2, 0, '$.config', 10000, 0, '', '', '{"form_id": "##form_id##", "field_id": "inspection_result"}') |
దశ 2: డైనమిక్ ఫీల్డ్లో కాన్ఫిగరేషన్ సూచించడం
డైనమిక్ ఫీల్డ్ తీసుకున్న కాన్ఫిగ్కు లింక్ చేయడానికి దాని appearance లేదా constraint లో callapi-verify() ఉపయోగిస్తుంది:
| type | name | label | appearance |
|---|---|---|---|
| text | inspection_result | Inspection result | callapi-verify(dynamicParams) |
ఫారం ఇంజిన్ field_config చదివి inspection_result ని text, integer, లేదా select_one ఫీల్డ్గా రెండర్ చేయాలో డైనమిక్గా నిర్ణయిస్తుంది.
API ప్రతిస్పందన ఫార్మాట్
API ఫీల్డ్ కాన్ఫిగరేషన్ వివరించే JSON ఆబ్జెక్ట్ తిరిగి ఇవ్వాలి. విలక్షణ ప్రతిస్పందన:
{
"config": {
"type": "select_one",
"choices": [
{"value": "pass", "label": "Pass"},
{"value": "fail", "label": "Fail"},
{"value": "na", "label": "N/A"}
],
"required": true,
"constraint": ". != ''"
}
}
ఉదాహరణ: కాన్ఫిగర్ చేయగల తనిఖీ ఫారం
తనిఖీ వర్గం ఆధారంగా సర్వర్ నుండి చెక్లిస్ట్ అంశాలు మరియు వాటి సమాధాన రకాలు తీసుకున్న తనిఖీ ఫారం:
| type | name | label | appearance | calculation |
|---|---|---|---|---|
| select_one inspection_type | insp_type | Type of inspection | ||
| calculate | checklist_config | callapi | callapi('POST', 'https://api.example.com/checklist', 1, 2, 0, '$.items', 10000, 0, '', '', '{"type": "##insp_type##"}') | |
| text | item_1 | Item 1 | callapi-verify(dynamicParams) | |
| text | item_2 | Item 2 | callapi-verify(dynamicParams) | |
| text | item_3 | Item 3 | callapi-verify(dynamicParams) |
insp_type ఆధారంగా సర్వర్ ప్రతి అంశానికి సరైన విడ్జెట్ రకం, లేబుల్, ఎంపికలు మరియు ధృవీకరణ తిరిగి ఇస్తుంది.
ఉత్తమ పద్ధతులు
- ఫీల్డ్ నిర్మాణం నిజంగా రన్టైమ్లో మారినప్పుడు మాత్రమే డైనమిక్ ప్రశ్న రకాలు ఉపయోగించండి — స్థిర ఫారాలకు ప్రామాణిక ప్రశ్న రకాలు ఉపయోగించండి.
- కాన్ఫిగరేషన్ API త్వరగా (2 సెకన్లలో) ప్రతిస్పందిస్తుందని మరియు ఫీల్డ్ నెట్వర్క్లో అందుబాటులో ఉందని నిర్ధారించుకోండి.
- API అందుబాటులో లేని సందర్భానికి ఫారంలో సమంజసమైన ఫాల్బ్యాక్ ఎల్లప్పుడూ నిర్వచించండి — నోట్తో plain
textఫీల్డ్ విచ్ఛిన్నమైన విడ్జెట్ కంటే మెరుగు. - మీ API ప్రతిస్పందన schema ను వెర్షన్ చేయండి — ప్రతిస్పందన ఫార్మాట్లో మార్పులు ఆ endpoint ఉపయోగించే అన్ని సక్రియ ఫారాలను ప్రభావితం చేస్తాయి.
- మోహరించే ముందు API తిరిగి ఇవ్వగల అన్ని ఫీల్డ్ రకాల కలయికలు పరీక్షించండి.
పరిమితులు
- డైనమిక్ ప్రశ్న రకాలు కాన్ఫిగరేషన్ తీసుకోవడానికి నెట్వర్క్ కనెక్టివిటీ అవసరం.
- డైనమిక్గా అందుబాటులో ఉన్న విడ్జెట్ రకాల పూర్తి శ్రేణి rtSurvey క్లయింట్ వెర్షన్పై ఆధారపడుతుంది — మీ లక్ష్య వెర్షన్ పరీక్షించండి.
- ఇది ప్రామాణిక XLSForm స్పెసిఫికేషన్లో సమానమైనది లేని అధునాతన rtSurvey పొడిగింపు.
- ఫీల్డ్ నిర్వచనం పాక్షికంగా ఫారంలో మరియు పాక్షికంగా API ప్రతిస్పందనలో ఉన్నందున డీబగ్ లోపాలు గుర్తించడం కష్టం.