ট্রানজিট পাস টেমপ্লেট

ট্রানজিট পাসের ক্ষেত্রে টেমপ্লেট রেন্ডারিং কাজ করে। কোনও টেমপ্লেট নির্দিষ্ট না করা হলে, ডিফল্ট টেমপ্লেট ব্যবহার করা হয়।

টেমপ্লেটের সংজ্ঞা

ক্লাস লেভেলে পাস টেমপ্লেট নির্ধারণ করা হয় এবং ক্লাসের সাথে যুক্ত যেকোনও অবজেক্ট দেখানোর জন্য এটি ব্যবহার করা হয়। টেমপ্লেটটি পাসটির বিভিন্ন বিভাগে কোন কোন ফিল্ড দেখাতে হবে তা নির্ধারণ করে।

টেমপ্লেটটি নিম্নলিখিত বিভাগে বিভক্ত:

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']"
                            }]
                        }
                    },
                }
            }]
        }
    }
}
    

জাভা

// 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"
                        }
                    ]
                }
            }
        }
    }
}
    

জাভা

//... 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
    

জাভা

 //... 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
    বা নির্দিষ্ট কোনও সিট নেই
  9. object.hexBackgroundColor
    বা class.hexBackgroundColor
  10. object.ticketLegs[i].destinationName
    বা object.ticketLegs[i].destinationStationCode
  11. object.ticketLegs[i].arrivalDateTime (শুধু সময়)
  12. ট্রান্সফার করুন: প্ল্যাটফর্ম
    বা ট্রান্সফার করুন: class.customPlatformLabel
    বা ট্রান্সফার করুন (কোনও প্ল্যাটফর্ম উল্লেখ করা না থাকলে)
  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> (গ্রুপ করা)

Google Wallet অ্যাপের "পাস" ভিউতে কোন ফিল্ড দেখানো হবে তা বেছে নিতে তালিকা টেমপ্লেট বিভাগ ব্যবহার করা হয়। পাসটি তালিকায় লোগো, ব্যাকগ্রাউন্ডের রঙ এবং তিনটি সারির মাধ্যমে দেখানো হয়।

নিম্নলিখিত কোড স্যাম্পেল থেকে জানা যায় যে কীভাবে একটি পাসের তালিকা টেমপ্লেট ওভাররাইড করে তালিকা টেমপ্লেটের প্রথম সারিতে একটি পাসের অবজেক্টের মেয়াদ শেষ হওয়ার তারিখের ফিল্ড দেখানো যায়:

Python

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

জাভা

//... 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. পৌঁছানোর সময় বা বৈধতার মেয়াদ
  7. object.ticketLeg.arrivalDateTime (শুধু সময়)
    অথবা object.validTimeInterval.end.date
  8. PASSENGER
  9. object.passengerNames
  10. কামরা বা 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. ছাড়ার সময়
  25. object.ticketLeg.departureDateTime
  26. পৌঁছানো
  27. object.ticketLeg.arrivalDateTime
  28. ভাড়ার নাম বা class.customFareNameLabel
  29. object.ticketLeg.fareName
  30. প্ল্যাটফর্ম বা class.customPlatformLabel
  31. object.ticketLeg.platform
  32. ZONE বা class.customZoneLabel
  33. object.ticketLeg.zone
  34. ফেয়ার ক্লাস বা class.customFareClassLabel
  35. object.ticketLeg.ticketSeat.fareClass
    বা object.ticketLeg.ticketSeat.customFareClass
  36. ছাড়ের বিভাগ
    বা 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. রসিদ নম্বর
    অথবা 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. ডিসকাউন্ট মেসেজ
    বা 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. পৌঁছানোর সময় বা বৈধতার মেয়াদ
  7. object.ticketLeg.arrivalDateTime (শুধু সময়)
    অথবা object.validTimeInterval.end.date
  8. PASSENGER
  9. object.passengerNames
  10. কামরা বা 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. ছাড়ার সময়
  25. object.ticketLeg.departureDateTime
  26. পৌঁছানো
  27. object.ticketLeg.arrivalDateTime
  28. ভাড়ার নাম বা class.customFareNameLabel
  29. object.ticketLeg.fareName
  30. প্ল্যাটফর্ম বা class.customPlatformLabel
  31. object.ticketLeg.platform
  32. ZONE বা class.customZoneLabel
  33. object.ticketLeg.zone
  34. ফেয়ার ক্লাস বা class.customFareClassLabel
  35. object.ticketLeg.ticketSeat.fareClass
    বা object.ticketLeg.ticketSeat.customFareClass
  36. ছাড়ের বিভাগ
    বা 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. রসিদ নম্বর
    অথবা 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. ডিসকাউন্ট মেসেজ
    বা 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

ছবি মডিউল ফিল্ডের জন্য, আমরা ক্লাস থেকে একটি এবং শুধুমাত্র একটি ছবি মডিউল ফিল্ড এবং অবজেক্ট থেকে একটি এবং শুধুমাত্র একটি ছবি মডিউল ফিল্ড দেখাই। কোনও লেভেলে আপনার একাধিক ইমেজ মডিউল ফিল্ডের প্রয়োজন হলে, ডিফল্ট টেমপ্লেট ওভাররাইড করুন।

টেক্সট মডিউল ফিল্ডের জন্য, আমরা ক্লাস থেকে সর্বাধিক ২০টি টেক্সট মডিউল ফিল্ড এবং অবজেক্ট থেকে ২০টি টেক্সট মডিউল ফিল্ড দেখাই। অ্যারেতে যেভাবে ফিল্ডগুলি সংজ্ঞায়িত করা হয়েছে, সেই একই ক্রমে সেগুলি দেখানো হয়। যেকোনও লেভেলে ২০টির বেশি টেক্সট মডিউল ফিল্ডের প্রয়োজন হলে, ডিফল্ট টেমপ্লেট ওভাররাইড করুন।

মেসেজের ক্ষেত্রে, আমরা ক্লাস থেকে সর্বাধিক ২০টি মেসেজ এবং অবজেক্ট থেকে ২০টি মেসেজ দেখাই। মেসেজের ক্রমের ব্যাপারে আমরা কোনও গ্যারেন্টি দিই না। কোনও লেভেলে ২০টির বেশি মেসেজ প্রয়োজন হলে অথবা কোনও অর্ডারের জন্য গ্যারান্টি চাইলে, ডিফল্ট টেমপ্লেট ওভাররাইড করুন।

লিঙ্ক মডিউল ফিল্ডের জন্য, আপনি যতগুলি খুশি URI উল্লেখ করতে পারেন। প্রতিটি লেভেলের (ক্লাস বা অবজেক্ট) জন্য নিম্নলিখিত ক্রমে গ্রুপ করা URI দেখানো হয়:

  1. ম্যাপের স্থানাঙ্ক
  2. টেলিফোন নম্বর
  3. ইমেল আইডি
  4. ওয়েব পৃষ্ঠাসমূহ

প্রতিটি গ্রুপের জন্য, URI-গুলি একই ক্রমে প্রদর্শিত হয় যেভাবে সেগুলি অ্যারেতে সংজ্ঞায়িত করা হয়। আপনার অন্য কোনও ক্রমের প্রয়োজন হলে, ডিফল্ট টেমপ্লেট ওভাররাইড করুন।

ডিফল্ট তালিকা টেমপ্লেট লেআউট এলিমেন্ট ও পজিশন
  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> (গ্রুপ করা)