ट्रांज़िट पास टेंप्लेट

ट्रांज़िट पास में, टेंप्लेट रेंडरिंग की सुविधा काम करती है. अगर कोई टेंप्लेट तय नहीं किया गया है, तो डिफ़ॉल्ट टेंप्लेट का इस्तेमाल किया जाता है.

टेंप्लेट की परिभाषा

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

इस टेंप्लेट को इन सेक्शन में बांटा गया है:

Android

पास के टेंप्लेट लेआउट के सेक्शन और उनकी पोज़िशन के बारे में खास जानकारी

वेब

पास के टेंप्लेट लेआउट के सेक्शन और उनकी पोज़िशन के बारे में खास जानकारी

कार्ड शीर्षक

Android

कार्ड के टाइटल के लेआउट एलिमेंट और फ़ील्ड की जगहें डिफ़ॉल्ट रूप से इस्तेमाल होने वाला कार्ड का टाइटल
  1. class.logo
  2. class.localizedIssuerName
    या class.issuerName
  3. object.ticketLeg.originName
  4. object.ticketLeg.destinationName
  5. object.ticketLeg.originStationCode
  6. object.ticketLeg.destinationStationCode
  7. object.tripType
  8. object.hexBackgroundColor
    या class.hexBackgroundColor

वाइड-लोगो कार्ड का टाइटल
  1. class.wideLogo
  2. object.ticketLeg.originName
  3. object.ticketLeg.destinationName
  4. object.ticketLeg.originStationCode
  5. object.ticketLeg.destinationStationCode
  6. object.tripType
  7. object.hexBackgroundColor
    या class.hexBackgroundColor

वेब

कार्ड के टाइटल के लेआउट एलिमेंट और फ़ील्ड की जगहें डिफ़ॉल्ट रूप से इस्तेमाल होने वाला कार्ड का टाइटल
  1. class.logo
  2. class.localizedIssuerName
    या class.issuerName
  3. object.ticketLeg.originName
  4. object.ticketLeg.destinationName
  5. object.ticketLeg.originStationCode
  6. object.ticketLeg.destinationStationCode
  7. object.tripType
  8. object.hexBackgroundColor
    या class.hexBackgroundColor

वाइड-लोगो कार्ड का टाइटल
  1. class.wideLogo
  2. object.ticketLeg.originName
  3. object.ticketLeg.destinationName
  4. object.ticketLeg.originStationCode
  5. object.ticketLeg.destinationStationCode
  6. object.tripType
  7. object.hexBackgroundColor
    या class.hexBackgroundColor

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

हालांकि, रेंडरिंग लॉजिक की वजह से, सबसे ऊपर वाली लाइन में कुछ बदलाव किए जा सकते हैं. पास की सबसे ऊपर वाली लाइन में यात्रा की खास जानकारी दिखती है. इसे एक लेग वाली यात्रा के लिए, TransitObject में मौजूद इन फ़ील्ड से कंट्रोल किया जाता है:

  • object.tripType
  • object.ticketLeg.originName
  • object.ticketLeg.destinationName
  • object.ticketLeg.originStationCode
  • object.ticketLeg.destinationStationCode

पास को कैसे रेंडर किया जाता है, यह इस बात पर निर्भर करता है कि कौनसे फ़ील्ड खाली नहीं हैं. इसे इन तरीकों से रेंडर किया जा सकता है:

  • सिर्फ़ ऑरिजिन का नाम: इसमें सिर्फ़ ऑरिजिन का नाम दिखता है. यह खास तौर पर उन टिकटों के लिए काम आता है जो किसी खास यात्रा के बजाय किसी इलाके के लिए मान्य होते हैं.
  • शुरुआत और मंज़िल: शुरुआत बाईं ओर और मंज़िल दाईं ओर है. इन दोनों के बीच का सिंबल, यात्रा के टाइप पर निर्भर करता है. शुरुआत की जगह और मंज़िल को इनमें से किसी एक के तौर पर दिखाया जाता है:
    • नाम और स्टेशन कोड: हम स्टेशन कोड को नाम के साथ दिखाते हैं. नाम, स्टेशन कोड के मुकाबले छोटे टेक्स्ट में होता है और सबसे ऊपर दिखता है.
    • सिर्फ़ नाम: हम सिर्फ़ नाम दिखाते हैं.
    • सिर्फ़ स्टेशन कोड: हम स्टेशन कोड दिखाते हैं.

मल्टी-लेग TransitObject ऑब्जेक्ट भी इसी तरह काम करते हैं. इस मामले में, object.ticketLeg का इस्तेमाल न करें. इसके बजाय, आपको object.ticketLegs[] सूची का इस्तेमाल करना होगा. यात्रा की शुरुआत और मंज़िल, दोनों की जानकारी देना ज़रूरी है. हर लेग में, स्टेशन के नाम या कोड या दोनों का इस्तेमाल एक जैसा होना चाहिए. दिखाया गया ऑरिजिन, कलेक्शन में मौजूद पहले एलिमेंट का ऑरिजिन होता है. वहीं, दिखाया गया डेस्टिनेशन, कलेक्शन में मौजूद आखिरी एलिमेंट का डेस्टिनेशन होता है.

पास के बैकग्राउंड का रंग, ज़रूरी फ़ील्ड नहीं है. इसे क्लास लेवल और ऑब्जेक्ट लेवल, दोनों पर सेट किया जा सकता है. ऑब्जेक्ट फ़ील्ड की प्राथमिकता ज़्यादा होती है. इसका इस्तेमाल, क्लास फ़ील्ड को बदलने के लिए किया जा सकता है.

वाइड लोगो फ़ील्ड सेट होने पर, Android डिवाइसों पर लोगो और जारी करने वाले का नाम दिखाने वाले डिफ़ॉल्ट टेंप्लेट हेडर की जगह वाइड लोगो दिखता है.

चौड़ा हेडर लोगो बनाते समय, चौड़े लोगो वाली इमेज से जुड़े दिशा-निर्देशों का पालन करें, ताकि आपके पास पर आपकी इमेज सबसे सही तरीके से दिखे.

कार्ड टेंप्लेट

Android

कार्ड टेंप्लेट की लाइन के लेआउट के एलिमेंट और फ़ील्ड की जगहें

वेब

कार्ड टेंप्लेट की लाइन के लेआउट के एलिमेंट और फ़ील्ड की जगहें

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

आपके पास यह तय करने का विकल्प होता है कि class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[] लिस्ट में मौजूद ऑब्जेक्ट की संख्या कितनी हो. इसके लिए, आपको लाइनों की संख्या तय करनी होगी. इस सूची में कम से कम एक एलिमेंट होना चाहिए. हमारा सुझाव है कि ज़्यादा से ज़्यादा दो एलिमेंट इस्तेमाल करें. हर एलिमेंट, इनमें से किसी एक टाइप का होना चाहिए:

  • oneItem, जो एक आइटम स्वीकार करता है:
    • item
  • twoItems, जो दो आइटम स्वीकार करता है:
    • startItem
    • endItem
  • threeItems, जिसमें तीन आइटम शामिल किए जा सकते हैं:
    • startItem
    • middleItem
    • endItem

हर आइटम को सिंगल फ़ील्ड सिलेक्टर (.firstValue), दो फ़ील्ड सिलेक्टर (.firstValue और .secondValue) या पहले से तय आइटम (.predefinedItem) के तौर पर तय किया जा सकता है. चुने गए फ़ील्ड की वैल्यू और उनके लेबल, दोनों दिखाए जाते हैं. दो फ़ील्ड सिलेक्टर तय करने पर, चुने गए फ़ील्ड की वैल्यू "/" सेपरेटर के साथ दिखती हैं. चुने गए फ़ील्ड के लेबल के लिए भी यही तरीका अपनाया जाता है. पहले से तय किए गए आइटम का इस्तेमाल, ज़्यादा जटिल रेंडरिंग तय करने के लिए किया जाता है.

यहां दिए गए कोड सैंपल में, कार्ड टेंप्लेट की कार्ड लाइन के सेक्शन को दो लाइनें तय करने के लिए बदलने का तरीका दिखाया गया है. हर लाइन में तीन आइटम शामिल होते हैं. इनमें से हर आइटम, क्लास-लेवल के छह textModuleData कस्टम फ़ील्ड और उनके हेडर को लेबल के तौर पर रेफ़रंस देता है:

Python

 {
   ... //Rest of class
   "textModulesData": [
        {
            "header": "Label 1",
            "body": "Some info 1",
            "id": "myfield1"
        },
        {
            "header": "Label 2",
            "body": "Some info 2",
            "id": "myfield2"
        },
        {
            "header": "Label 3",
            "body": "Some info 3",
            "id": "myfield3"
        },
        {
            "header": "Label 4",
            "body": "Some info 4",
            "id": "myfield4"
        },
        {
            "header": "Label 5",
            "body": "Some info 5",
            "id": "myfield5"
        },
        {
            "header": "Label 6",
            "body": "Some info 6",
            "id": "myfield6"
        }
    ],
   "classTemplateInfo": {
        "cardTemplateOverride": {
            "cardRowTemplateInfos": [{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield1']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield2']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield3']"
                            }]
                        }
                    },
                }
            },{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield4']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield5']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield6']"
                            }]
                        }
                    },
                }
            }]
        }
    }
}
    

Java

// Rest of class
  .setTextModulesData((new ArrayList<TextModuleData>() {
    {
      add((new TextModuleData()).setHeader("Label 1")
        .setBody("Some info 1")
        .setId("myfield1"));
      add((new TextModuleData()).setHeader("Label 2")
        .setBody("Some info 1")
        .setId("myfield2"));
      add((new TextModuleData()).setHeader("Label 3")
        .setBody("Some info 3")
        .setId("myfield3"));
      add((new TextModuleData()).setHeader("Label 4")
        .setBody("Some info 4")
        .setId("myfield4"));
      add((new TextModuleData()).setHeader("Label 5")
        .setBody("Some info 5")
        .setId("myfield5"));
      add((new TextModuleData()).setHeader("Label 6")
        .setBody("Some info 5")
        .setId("myfield6"));
    }
  }))
  .setClassTemplateInfo((new ClassTemplateInfo())
    .setCardTemplateOverride((new CardTemplateOverride())
      .setCardRowTemplateInfos(new ArrayList<CardRowTemplateInfo>() {
        {
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield1']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield2']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield3']"));
              }
            })))
          ));
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield4']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield5']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield6']"));
              }
            })))
          ));
          }
  })))
    

PHP

// Rest of class
    $textModulesData1 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData1->setBody("Some info 1");
    $textModulesData1->setHeader("Label 1");
    $textModulesData1->setId("myfield1");

    $textModulesData2 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData2->setBody("Some info 2");
    $textModulesData2->setHeader("Label 2");
    $textModulesData2->setId("myfield2");

    $textModulesData3 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData3->setBody("Some info 3");
    $textModulesData3->setHeader("Label 3");
    $textModulesData3->setId("myfield3");

    $textModulesData4 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData4->setBody("Some info 4");
    $textModulesData4->setHeader("Label 4");
    $textModulesData4->setId("myfield4");

    $textModulesData5 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData5->setBody("Some info 5");
    $textModulesData5->setHeader("Label 5");
    $textModulesData5->setId("myfield5");

    $textModulesData6 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData6->setBody("Some info 6");
    $textModulesData6->setHeader("Label 6");
    $textModulesData6->setId("myfield6");

    $textModulesDatas = array($textModulesData1, $textModulesData2, $textModulesData3,
                  $textModulesData4, $textModulesData5, $textModulesData6);

    $startItemField = new Google_Service_Walletobjects_FieldReference();
    $startItemField->setFieldPath("class.textModulesData['myfield1']");

    $startItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue->setFields(array($startItemField));

    $startItem = new Google_Service_Walletobjects_TemplateItem();
    $startItem->setFirstValue($startItemFirstValue);

    $middleItemField = new Google_Service_Walletobjects_FieldReference();
    $middleItemField->setFieldPath("class.textModulesData['myfield2']");

    $middleItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue->setFields(array($middleItemField));

    $middleItem = new Google_Service_Walletobjects_TemplateItem();
    $middleItem->setFirstValue($middleItemFirstValue);

    $endItemField = new Google_Service_Walletobjects_FieldReference();
    $endItemField->setFieldPath("class.textModulesData['myfield3']");

    $endItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue->setFields(array($endItemField));

    $endItem = new Google_Service_Walletobjects_TemplateItem();
    $endItem->setFirstValue($endItemFirstValue);

    $cardRowTemplate = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate->setStartItem($startItem);
    $cardRowTemplate->setMiddleItem($middleItem);
    $cardRowTemplate->setEndItem($endItem);

    $cardRowTemplateInfo1 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo1->setThreeItems($cardRowTemplate);

    $startItemField2 = new Google_Service_Walletobjects_FieldReference();
    $startItemField2->setFieldPath("class.textModulesData['myfield4']");

    $startItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue2->setFields(array($startItemField2));

    $startItem2 = new Google_Service_Walletobjects_TemplateItem();
    $startItem2->setFirstValue($startItemFirstValue2);

    $middleItemField2 = new Google_Service_Walletobjects_FieldReference();
    $middleItemField2->setFieldPath("class.textModulesData['myfield5']");

    $middleItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue2->setFields(array($middleItemField2));

    $middleItem2 = new Google_Service_Walletobjects_TemplateItem();
    $middleItem2->setFirstValue($middleItemFirstValue2);

    $endItemField2 = new Google_Service_Walletobjects_FieldReference();
    $endItemField2->setFieldPath("class.textModulesData['myfield6']");

    $endItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue2->setFields(array($endItemField2));

    $endItem2 = new Google_Service_Walletobjects_TemplateItem();
    $endItem2->setFirstValue($endItemFirstValue2);

    $cardRowTemplate2 = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate2->setStartItem($startItem2);
    $cardRowTemplate2->setMiddleItem($middleItem2);
    $cardRowTemplate2->setEndItem($endItem2);

    $cardRowTemplateInfo2 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo2->setThreeItems($cardRowTemplate2);

    $cardTemplateOverride = new Google_Service_Walletobjects_CardTemplateOverride();
    $cardTemplateOverride->setCardRowTemplateInfos(array($cardRowTemplateInfo1,
                  $cardRowTemplateInfo2));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setCardTemplateOverride($cardTemplateOverride);

    $payload->setTextModulesData($textModulesDatas);
    $payload->setClassTemplateInfo($classTemplateInfo);
    

यह कोड, पास बनाता है. इसमें कोड टेंप्लेट सेक्शन का फ़ॉर्मैट यह होता है:

लेबल ओवरराइड का उदाहरण.

अगर कोई आइटम खाली है, तो उसे नहीं दिखाया जाता. ज़्यादा जानकारी के लिए, फ़ील्ड के रेफ़रंस देखें. अगर किसी लाइन में मौजूद सभी आइटम खाली हैं, तो वह लाइन नहीं दिखती. अगर किसी लाइन में कुछ आइटम खाली हैं, लेकिन सभी नहीं, तो खाली नहीं हैं उन आइटम को फिर से व्यवस्थित किया जाता है और कम आइटम वाली लाइन के तौर पर दिखाया जाता है.

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

मुख्य इमेज तय करने के बाद, यह पहली लाइन के बाद दिख सकती है. ऐसा तब होता है, जब cardRowTemplateInfos सूची में एक से ज़्यादा लाइनें हों. इसके अलावा, यह लाइन के ऊपर भी दिख सकती है. ऐसा तब होता है, जब सूची में सिर्फ़ एक लाइन हो.

कार्ड का बारकोड

Android

कार्ड के बारकोड लेआउट के एलिमेंट और उनकी जगहें
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type और object.barcode.value
    या object.ticketNumber
  4. object.barcode.alternateText
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

वेब

कार्ड के बारकोड लेआउट के एलिमेंट और उनकी जगहें
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type और object.barcode.value
    या object.ticketNumber
  4. object.barcode.alternateText
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

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

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

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

नीचे दिए गए कोड सैंपल में, पास के बारकोड सेक्शन को बदलने का तरीका बताया गया है. इससे बारकोड के ऊपर एक इमेज दिखेगी:

Python

#... rest of class
    "imageModulesData": [
        {
            "mainImage": {
                "sourceUri": {
                    "uri":  "http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg",
                    "description": "Coffee"
                }
            },
            "id": "myimage"
        }
    ],
    "classTemplateInfo": {
        "cardBarcodeSectionDetails": {
            "firstTopDetail": {
                "fieldSelector": {
                    "fields": [
                        {
                        "fieldPath": "class.imageModulesData['myimage'].mainImage"
                        }
                    ]
                }
            }
        }
    }
}
    

Java

//... rest of class
  .setImageModulesData((new ArrayList<ImageModuleData>() {
    {
      add((new ImageModuleData())
        .setId("myimage")
        .setMainImage((new Image()).setSourceUri((new ImageUri()).setDescription("Coffee beans")
          .setUri("http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg"))));
        }
      }))
      .setClassTemplateInfo((new ClassTemplateInfo())
        .setCardBarcodeSectionDetails((new CardBarcodeSectionDetails())
          .setFirstTopDetail((new BarcodeSectionDetail())
            .setFieldSelector((new FieldSelector())
              .setFields((new ArrayList<FieldReference>(){
                {
                  add((new FieldReference()).setFieldPath("class.imageModulesData['myimage'].mainImage"));
                }
            })))))
      }
    

PHP

//... rest of class
    $imageUri = new Google_Service_Walletobjects_ImageUri();
    $imageUri->setUri("https://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg");
    $imageUri->setDescription("Baconrista flights image");
    $image = new Google_Service_Walletobjects_Image();
    $image->setSourceUri($imageUri);
    $imageModulesData = new Google_Service_Walletobjects_ImageModuleData();
    $imageModulesData->setMainImage($image);
            $imageModulesData->setId("myimage");

    $cardBarcodeFieldReference = new Google_Service_Walletobjects_FieldReference();
    $cardBarcodeFieldReference->setFieldPath("class.imageModulesData['myimage'].mainImage");

    $cardBarcodeFieldSelector = new Google_Service_Walletobjects_FieldSelector();
    $cardBarcodeFieldSelector->setFields(array($cardBarcodeFieldReference));

    $cardBarcodeDetail = new Google_Service_Walletobjects_BarcodeSectionDetail();
    $cardBarcodeDetail->setFieldSelector($cardBarcodeFieldSelector);

    $cardBarcodeSectionDetails = new Google_Service_Walletobjects_CardBarcodeSectionDetails();
    $cardBarcodeSectionDetails->setFirstTopDetail($cardBarcodeDetail);

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setCardBarcodeSectionDetails($cardBarcodeSectionDetails);

    $payload->setClassTemplateInfo($classTemplateInfo);
            $payload->setImageModuleData($imageModulesData);
    

यह कोड, बारकोड सेक्शन के इस फ़ॉर्मैट वाला पास बनाता है:

कार्ड के बारकोड को बदलने का उदाहरण.

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

सबसे नीचे वाला सेक्शन

Android

बॉटम सेक्शन और आइटम के बारे में जानकारी देने वाला टेंप्लेट
  • एक से ज़्यादा जगहों की यात्रा
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • ...

वेब

बॉटम सेक्शन और आइटम के बारे में जानकारी देने वाला टेंप्लेट
  • एक से ज़्यादा जगहों की यात्रा
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • ...

सबसे नीचे वाले सेक्शन में, आइटम की सूची class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[] दी गई है. इन आइटम में किसी भी तरह के स्ट्रक्चर्ड डेटा फ़ील्ड, टेक्स्ट मॉड्यूल फ़ील्ड, लिंक मॉड्यूल फ़ील्ड, इमेज मॉड्यूल फ़ील्ड या मैसेज शामिल हो सकते हैं.

हर आइटम को एक फ़ील्ड सिलेक्टर (.firstValue), दो फ़ील्ड सिलेक्टर (.firstValue और .secondValue) या पहले से तय किया गया आइटम (.predefinedItem) के तौर पर तय किया जा सकता है. चुने गए फ़ील्ड की वैल्यू और उनके लेबल, दोनों दिखाए जाते हैं. दो फ़ील्ड सिलेक्टर तय करने पर, चुने गए फ़ील्ड की वैल्यू "/" सेपरेटर के साथ दिखती हैं. चुने गए फ़ील्ड के लेबल के लिए भी यही तरीका अपनाएं. पहले से तय किए गए आइटम का इस्तेमाल, ज़्यादा जटिल रेंडरिंग तय करने के लिए किया जाता है. इमेज मॉड्यूल फ़ील्ड, बिना लेबल के पूरी चौड़ाई में रेंडर किए जाते हैं.

यहां दिए गए कोड सैंपल में, पास के सबसे नीचे वाले सेक्शन को बदलने का तरीका बताया गया है. इससे, लेबल के साथ एक linksModuleData फ़ील्ड दिखेगा:

Python

//... rest of class
   "linksModuleData": {
        "uris": [
            {
                "uri": "http://maps.google.com/",
                "description": "Nearby Locations",
                "id":"mylink"
            }
        ]
    },
   "classTemplateInfo": {
        "detailsTemplateOverride": {
            "detailsItemInfos": [
                {
                    "item":{
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.linksModuleData.uris['mylink']"
                            }]
                        }
                    }
                }
            ]
        }
     }
//... rest of class
    

Java

 //... rest of class
  .setLinksModuleData((new ArrayList<LinksModuleData>() {
    {
      add((new LinksModuleData()).setDescription("Nearby Locations")
        .setUri("http://maps.google.com/")
        .setId("mylink"));
      }))
      .setClassTemplateInfo((new ClassTemplateInfo())
        .setDetailsTemplateOverride((new DetailsTemplateOverride())
          .setDetailsItemInfos(new ArrayList<DetailsItemInfo>(){
            {
              add((new DetailsItemInfo())
                .setItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
                  {
                    add((new FieldReference()).setFieldPath("class.linksModuleData.uris['mylink']"));
                  }
                }))));
              }
            }))
//... rest of class
    

PHP

    //... rest of class building
    $locationUri = new Google_Service_Walletobjects_Uri();
    $locationUri->setUri("http://maps.google.com/");
    $locationUri->setDescription("Nearby Locations");
    $locationUri->setId("mylink");

    $linksModuleData = new Google_Service_Walletobjects_LinksModuleData();
    $linksModuleData->setUris(array($locationUri));

    $detailItemFieldReference = new Google_Service_Walletobjects_FieldReference();
    $detailItemFieldReference->setFieldPath("class.linksModuleData.uris['mylink']");
    $detailItemFieldSelector = new Google_Service_Walletobjects_FieldSelector();
    $detailItemFieldSelector->setFields(array($detailItemFieldReference));

    $detailItem = new Google_Service_Walletobjects_TemplateItem();
    $detailItem->setFirstValue($detailItemFieldSelector);

    $detailsItemInfo = new Google_Service_Walletobjects_DetailsItemInfo();
    $detailsItemInfo->setItem($detailItem);

    $cardDetailsTemplateOverride = new Google_Service_Walletobjects_DetailsTemplateOverride();
    $cardDetailsTemplateOverride->setDetailsItemInfos(array($detailsItemInfo));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setDetailsTemplateOverride($cardDetailsTemplateOverride);

    $payload->setClassTemplateInfo($classTemplateInfo);
    $payload->setLinksModuleData($linksModuleData);
    //... rest of class
    

इस कोड से, पास का बॉटम सेक्शन इस फ़ॉर्मैट में दिखता है:

बॉटम सेक्शन को बदलने का उदाहरण.

अगर कोई आइटम खाली है, तो उसे नहीं दिखाया जाता. ज़्यादा जानकारी के लिए, फ़ील्ड के रेफ़रंस देखें.

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

अगर यात्रा में कई चरण शामिल हैं, तो सेक्शन के सबसे ऊपर यात्रा की सामान्य जानकारी दिखती है. इसे हटाया नहीं जा सकता. अगर यात्रा में सिर्फ़ एक लेग शामिल है, तो class.enableSingleLegItinerary सेट करके यात्रा की सामान्य योजना दिखाई जा सकती है.

एक से ज़्यादा लेग वाली यात्रा की योजना
  1. class.tranistType
  2. object.ticketLegs[i].originName
    या object.ticketLegs[i].originStationCode
  3. object.ticketLegs[i].departureDateTime (सिर्फ़ समय)
  4. object.ticketLegs[i].transitOperatorName
  5. COACH या class.customCoachLabel
  6. object.ticketLegs[i].ticketSeat.coach
    या object.ticketLegs[i].ticketSeats[*].coach
  7. SEAT या class.customSeatLabel
  8. object.ticketLegs[i].ticketSeat.seat
    या object.ticketLegs[i].ticketSeat.seatAssignment
    या object.ticketLegs[i].ticketSeats[*].seat
    या object.ticketLegs[i].ticketSeats[*].seatAssignment
    या NO SPECIFIC SEAT
  9. object.hexBackgroundColor
    या class.hexBackgroundColor
  10. object.ticketLegs[i].destinationName
    या object.ticketLegs[i].destinationStationCode
  11. object.ticketLegs[i].arrivalDateTime (सिर्फ़ समय)
  12. TRANSFER TO: PLATFORM
    या TRANSFER TO: class.customPlatformLabel
    या TRANSFER (अगर कोई प्लैटफ़ॉर्म तय नहीं किया गया है)
  13. object.ticketLegs[i+1].platform

सूची वाला टेंप्लेट

टेंप्लेट एलिमेंट की सूची बनाना
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. object.ticketLeg.departureDateTime (ग्रुप किया गया)
    या class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.logo
  4. object.hexBackgroundColor
    या class.hexBackgroundColor
  5. <# passes> (grouped)

सूची वाले टेंप्लेट सेक्शन का इस्तेमाल यह चुनने के लिए किया जाता है कि Google Wallet ऐप्लिकेशन के "पास" व्यू में कौनसे फ़ील्ड दिखाने हैं. सूची में पास को लोगो, बैकग्राउंड कलर, और तीन लाइनों के साथ दिखाया जाता है.

यहां दिए गए कोड सैंपल में बताया गया है कि पास के लिस्ट टेंप्लेट को कैसे बदला जाता है, ताकि लिस्ट टेंप्लेट की पहली लाइन में पास के ऑब्जेक्ट की समयसीमा खत्म होने की तारीख का फ़ील्ड दिखाया जा सके:

Python

#... rest of class definition
   "classTemplateInfo": {
        "listTemplateOverride":{
            "firstRowOption": {
                "fieldOption":{
                    "fields": [{
                        "fieldPath": "object.validTimeInterval.end"
                    }]
                }
            }
        }
   }
}
    

Java

//... rest of class
  .setClassTemplateInfo((new ClassTemplateInfo())
    .setListTemplateOverride((new ListTemplateOverride())
      .setFirstRowOption((new FirstRowOption())
        .setFieldOption((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
          {
            add((new FieldReference()).setFieldPath("object.validTimeInterval.end"));
          }
        }))))
//... rest of class
    

PHP

    //... rest of class
    $fieldReference = new Google_Service_Walletobjects_FieldReference();
    $fieldReference->setFieldPath("object.validTimeInterval.end");

    $fieldOption = new Google_Service_Walletobjects_FieldSelector();
    $fieldOption->setFields(array($fieldReference));

    $firstRowOption = new Google_Service_Walletobjects_FirstRowOption();
    $firstRowOption->setFieldOption($fieldOption);

    $listTemplateOverride = new Google_Service_Walletobjects_ListTemplateOverride();
    $listTemplateOverride->setFirstRowOption($firstRowOption);

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setListTemplateOverride($listTemplateOverride);

    $payload->setClassTemplateInfo($classTemplateInfo);
    //... rest of class
    

यह कोड, पास बनाता है. इसमें सूची वाले टेंप्लेट का यह रेंडरेशन होता है:

सूची में शामिल किसी आइटम की कीमत में बदलाव करने का उदाहरण.

पहली लाइन को फ़ील्ड सिलेक्टर के साथ तय किया जा सकता है. इसके अलावा, इसमें यात्रा की खास जानकारी भी दिखती है. जवाब का फ़ॉर्मैट इनमें से कोई एक हो सकता है:

  • originAndDestinationCodes
  • originAndDestinationNames
  • originName

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

लेबल

स्ट्रक्चर्ड डेटा के सभी फ़ील्ड में, Google की ओर से दिया गया लेबल होता है. Google की यह ज़िम्मेदारी है कि वह इन सभी लेबल का अनुवाद, उन सभी भाषाओं में उपलब्ध कराए जिनमें ये लेबल काम करते हैं.

class.custom<name_of_the_field>Label फ़ील्ड में से किसी एक का इस्तेमाल करके, इनमें से कुछ लेबल को अपनी पसंद के मुताबिक बनाया जा सकता है. किसी लेबल को पसंद के मुताबिक बनाने पर, आपको उस लेबल का अनुवाद उन सभी भाषाओं में उपलब्ध कराना होगा जिनमें आपको उसे इस्तेमाल करना है.

फ़ील्ड के रेफ़रंस

फ़ील्ड रेफ़रंस का इस्तेमाल, टेंप्लेट के अलग-अलग हिस्सों में class.classTemplateInfo.*.fields[] फ़ॉर्म के साथ किया जाता है. फ़ील्ड रेफ़रंस में, स्ट्रक्चर्ड डेटा फ़ील्ड, टेक्स्ट मॉड्यूल फ़ील्ड, लिंक मॉड्यूल फ़ील्ड, इमेज मॉड्यूल फ़ील्ड या मैसेज के पाथ की सूची होती है.

हर फ़ील्ड रेफ़रंस में, सभी तरह के पाथ इस्तेमाल करने की अनुमति नहीं है. उदाहरण के लिए, कुछ फ़ील्ड रेफ़रंस सिर्फ़ टेक्स्ट पर आधारित स्ट्रक्चर्ड डेटा फ़ील्ड या टेक्स्ट मॉड्यूल फ़ील्ड के पाथ की अनुमति देते हैं. टेक्स्ट पर आधारित स्ट्रक्चर्ड फ़ील्ड, स्ट्रक्चर्ड डेटा फ़ील्ड होते हैं. ये स्ट्रिंग, स्थानीय भाषा में स्ट्रिंग, तारीख या पैसे के टाइप के होते हैं.

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

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

किसी सूची में मौजूद फ़ील्ड का रेफ़रंस देने के लिए, सूची में फ़ील्ड के इंडेक्स का इस्तेमाल किया जा सकता है. इसके अलावा, ज़्यादातर मामलों में रेफ़रंस आईडी का इस्तेमाल किया जा सकता है. सूची के जिन आइटम का रेफ़रंस आईडी के हिसाब से दिया जा सकता है उनमें .id फ़ील्ड होता है. हमारा सुझाव है कि जब सूची में फ़ील्ड का इंडेक्स उपलब्ध हो, तब इंडेक्स के बजाय रेफ़रंस आईडी का इस्तेमाल करें.

यहां सूची में मौजूद फ़ील्ड को रेफ़रंस करने का उदाहरण दिया गया है.

  • object.imageModulesData[0].id = my-first-id
  • object.imageModulesData[1].id = my-second-id
  • class.detailsTemplateOverride.detailsItemInfos[0].item.firstValue.fields[0].fieldPath = object.imageModulesData[‘my-second-id’]
  • class.detailsTemplateOverride.detailsItemInfos[1].item.firstValue.fields[0].fieldPath = object.imageModulesData[0]

इस मामले में, पास के 'जानकारी' सेक्शन में मौजूद पहला आइटम, ऑब्जेक्ट में बताई गई दूसरी इमेज है. वहीं, पास के 'जानकारी' सेक्शन में मौजूद दूसरा आइटम, ऑब्जेक्ट में बताई गई पहली इमेज है.

डिफ़ॉल्ट टेंप्लेट

Android

पास के टेंप्लेट के लेआउट के डिफ़ॉल्ट एलिमेंट और उनकी जगहें
  1. class.logo
  2. class.localizedIssuerName
    या class.issuerName
  3. कार्ड का टाइटल देखें
  4. रवानगी की तारीख या मान्य होने की तारीख
  5. object.ticketLeg.departureDateTime (तारीख और समय)
    या object.validTimeInterval.start.date
  6. ARRIVING AT या VALID UNTIL
  7. object.ticketLeg.arrivalDateTime (सिर्फ़ समय)
    या object.validTimeInterval.end.date
  8. PASSENGER
  9. object.passengerNames
  10. CARRIAGE या class.customCarriageLabel
  11. object.ticketLeg.carriage
  12. COACH या class.customCoachLabel
  13. object.ticketLeg.ticketSeat.coach
  14. SEAT या class.customSeatLabel
  15. object.ticketLeg.ticketSeat.seat
    या object.ticketLeg.ticketSeat.seatAssignment
  16. object.barcode.type और object.barcode.value
    या object.ticketNumber
  17. object.barcode.alternateText
  18. object.hexBackgroundColor
    या class.hexBackgroundColor
  19. एक से ज़्यादा जगहों की यात्रा
  20. टिकट नंबर या class.customTicketNumberLabel
  21. object.ticketNumber
  22. टिकट की स्थिति
  23. object.ticketStatus या object.customTicketStatus
  24. DEPARTURE
  25. object.ticketLeg.departureDateTime
  26. ARRIVAL
  27. object.ticketLeg.arrivalDateTime
  28. FARE NAME या class.customFareNameLabel
  29. object.ticketLeg.fareName
  30. PLATFORM या class.customPlatformLabel
  31. object.ticketLeg.platform
  32. ZONE या class.customZoneLabel
  33. object.ticketLeg.zone
  34. FARE CLASS या class.customFareClassLabel
  35. object.ticketLeg.ticketSeat.fareClass
    या object.ticketLeg.ticketSeat.customFareClass
  36. CONCESSION CATEGORY
    या class.customConcessionCategoryLabel
  37. object.concessionCategory
    या object.customConcessionCategory
  38. रास्ते से जुड़ी पाबंदियां
    या class.customRouteRestrictionsLabel
  39. object.ticketRestrictions.routeRestrictions
  40. रास्ते की पाबंदियों की जानकारी
    या class.customRouteRestrictionsDetailsLabel
  41. object.ticketRestrictions.routeRestrictionsDetails
  42. समय से जुड़ी पाबंदियां
    या class.customTimeRestrictionsLabel
  43. object.ticketRestrictions.timeRestrictions
  44. अन्य पाबंदियां
    या class.customOtherRestrictionsLabel
  45. object.ticketRestrictions.otherRestrictions
  46. RECEIPT NUMBER
    या class.customPurchaseReceiptNumberLabel
  47. object.purchaseDetails.purchaseReceiptNumber
  48. खरीदारी की तारीख
  49. object.purchaseDetails.purchaseDateTime
  50. खाता आईडी
  51. object.purchaseDetails.accountId
  52. पुष्टि करने का कोड
    या class.customConfirmationCodeLabel
  53. object.purchaseDetails.confirmationCode
  54. फेस वैल्यू या class.customPurchaseFaceValueLabel
  55. object.purchaseDetails.ticketCost.faceValue
  56. PRICE या class.customPurchasePriceLabel
  57. object.purchaseDetails.ticketCost.purchasePrice
  58. DISCOUNT MESSAGE
    या class.customDiscountMessageLabel
  59. object.purchaseDetails.ticketCost.discountMessage
  60. class.imageModulesData[0].mainImage
  61. object.imageModulesData[0].mainImage
  62. class.messages[].header
  63. class.messages[].body
  64. object.messages[].header
  65. object.messages[].body
  66. class.textModulesData[0..9].header
  67. class.textModulesData[0..9].body
  68. object.textModulesData[0..9].header
  69. object.textModulesData[0..9].body
  70. class.linksModuleData.uris[].description
  71. object.linksModuleData.uris[].description

वेब

पास के टेंप्लेट के लेआउट के डिफ़ॉल्ट एलिमेंट और उनकी जगहें
  1. class.logo
  2. class.localizedIssuerName
    या class.issuerName
  3. कार्ड का टाइटल देखें
  4. रवानगी की तारीख या मान्य होने की तारीख
  5. object.ticketLeg.departureDateTime (तारीख और समय)
    या object.validTimeInterval.start.date
  6. ARRIVING AT या VALID UNTIL
  7. object.ticketLeg.arrivalDateTime (सिर्फ़ समय)
    या object.validTimeInterval.end.date
  8. PASSENGER
  9. object.passengerNames
  10. CARRIAGE या class.customCarriageLabel
  11. object.ticketLeg.carriage
  12. COACH या class.customCoachLabel
  13. object.ticketLeg.ticketSeat.coach
  14. SEAT या class.customSeatLabel
  15. object.ticketLeg.ticketSeat.seat
    या object.ticketLeg.ticketSeat.seatAssignment
  16. object.barcode.type और object.barcode.value
    या object.ticketNumber
  17. object.barcode.alternateText
  18. object.hexBackgroundColor
    या class.hexBackgroundColor
  19. एक से ज़्यादा जगहों की यात्रा
  20. टिकट नंबर या class.customTicketNumberLabel
  21. object.ticketNumber
  22. टिकट की स्थिति
  23. object.ticketStatus या object.customTicketStatus
  24. DEPARTURE
  25. object.ticketLeg.departureDateTime
  26. ARRIVAL
  27. object.ticketLeg.arrivalDateTime
  28. FARE NAME या class.customFareNameLabel
  29. object.ticketLeg.fareName
  30. PLATFORM या class.customPlatformLabel
  31. object.ticketLeg.platform
  32. ZONE या class.customZoneLabel
  33. object.ticketLeg.zone
  34. FARE CLASS या class.customFareClassLabel
  35. object.ticketLeg.ticketSeat.fareClass
    या object.ticketLeg.ticketSeat.customFareClass
  36. CONCESSION CATEGORY
    या class.customConcessionCategoryLabel
  37. object.concessionCategory
    या object.customConcessionCategory
  38. रास्ते से जुड़ी पाबंदियां
    या class.customRouteRestrictionsLabel
  39. object.ticketRestrictions.routeRestrictions
  40. रास्ते की पाबंदियों की जानकारी
    या class.customRouteRestrictionsDetailsLabel
  41. object.ticketRestrictions.routeRestrictionsDetails
  42. समय से जुड़ी पाबंदियां
    या class.customTimeRestrictionsLabel
  43. object.ticketRestrictions.timeRestrictions
  44. अन्य पाबंदियां
    या class.customOtherRestrictionsLabel
  45. object.ticketRestrictions.otherRestrictions
  46. RECEIPT NUMBER
    या class.customPurchaseReceiptNumberLabel
  47. object.purchaseDetails.purchaseReceiptNumber
  48. खरीदारी की तारीख
  49. object.purchaseDetails.purchaseDateTime
  50. खाता आईडी
  51. object.purchaseDetails.accountId
  52. पुष्टि करने का कोड
    या class.customConfirmationCodeLabel
  53. object.purchaseDetails.confirmationCode
  54. फेस वैल्यू या class.customPurchaseFaceValueLabel
  55. object.purchaseDetails.ticketCost.faceValue
  56. PRICE या class.customPurchasePriceLabel
  57. object.purchaseDetails.ticketCost.purchasePrice
  58. DISCOUNT MESSAGE
    या class.customDiscountMessageLabel
  59. object.purchaseDetails.ticketCost.discountMessage
  60. class.imageModulesData[0].mainImage
  61. object.imageModulesData[0].mainImage
  62. class.messages[].header
  63. class.messages[].body
  64. object.messages[].header
  65. object.messages[].body
  66. class.textModulesData[0..9].header
  67. class.textModulesData[0..9].body
  68. object.textModulesData[0..9].header
  69. object.textModulesData[0..9].body
  70. class.linksModuleData.uris[].description
  71. object.linksModuleData.uris[].description

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

टेक्स्ट मॉड्यूल फ़ील्ड के लिए, हम क्लास से ज़्यादा से ज़्यादा 20 टेक्स्ट मॉड्यूल फ़ील्ड और ऑब्जेक्ट से 20 टेक्स्ट मॉड्यूल फ़ील्ड दिखाते हैं. फ़ील्ड उसी क्रम में दिखते हैं जिस क्रम में उन्हें ऐरे में तय किया गया है. अगर आपको किसी भी लेवल पर 20 से ज़्यादा टेक्स्ट मॉड्यूल फ़ील्ड की ज़रूरत है, तो डिफ़ॉल्ट टेंप्लेट को बदलें.

मैसेज के लिए, हम क्लास से ज़्यादा से ज़्यादा 20 मैसेज और ऑब्जेक्ट से 20 मैसेज ही दिखाते हैं. हम मैसेज के क्रम की गारंटी नहीं देते. अगर आपको किसी भी लेवल पर 20 से ज़्यादा मैसेज चाहिए या किसी भी ऑर्डर के लिए गारंटी चाहिए, तो डिफ़ॉल्ट टेंप्लेट को बदलें.

लिंक मॉड्यूल फ़ील्ड के लिए, तय किए जा सकने वाले यूआरआई की संख्या पर कोई पाबंदी नहीं है. हर लेवल (क्लास या ऑब्जेक्ट) के लिए, यूआरआई को इस क्रम में ग्रुप करके दिखाया जाता है:

  1. मैप के कोऑर्डिनेट
  2. टेलीफ़ोन नंबर
  3. ईमेल पते
  4. वेब पेज

हर ग्रुप के लिए, यूआरआई उसी क्रम में दिखाए जाते हैं जिस क्रम में उन्हें ऐरे में तय किया गया है. अगर आपको किसी और क्रम में जानकारी चाहिए, तो डिफ़ॉल्ट टेंप्लेट को बदलें.

सूची के टेंप्लेट के लेआउट के डिफ़ॉल्ट एलिमेंट और उनकी जगहें
  1. (object.ticketLeg.originName
      और object.ticketLeg.destinationName)
    या (object.ticketLeg.originStationCode
      और object.ticketLeg.destinationStationCode)
    या object.ticketLeg.originName
  2. object.ticketLeg.departureDateTime
    या object.validTimeInterval.end.date
  3. class.logo
  4. object.hexBackgroundColor
    या class.hexBackgroundColor
  5. <# passes> (grouped)