کارتهای بلیت از پرداز الگو پشتیبانی میکنند. اگر الگویی تعریف نشده باشد، از الگوی پیشفرض استفاده میشود.
تعریف الگو
الگوی مجوز در سطح کلاس تعریف میشود و برای نمایش هر شیء مرتبط با کلاس استفاده میشود. الگو تعیین میکند کدام فیلدها در بخشهای مختلف مجوز نمایش داده شود.
الگو به بخشهای زیر تقسیم شده است:
Android
وب
عنوان کارت
Android
|
|
عنوان کارت پیشفرض
عنوان کارت نشانواره عریض
|
وب
|
|
عنوان کارت پیشفرض
عنوان کارت نشانواره عریض
|
بخش عنوان کارت، نشانواره، نام اپراتور حملونقل عمومی، و خلاصه سفر را نمایش میدهد. هر سه این عناصر الزامی هستند و نه ارجاعهای فیلد استفادهشده برای پر کردن آنها و نه موقعیتشان قابلتغییر نیست.
بااینحال، منطق پردازش امکان انعطافپذیری برای ردیف بالا را فراهم میکند. ردیف بالای مجوز که خلاصه سفر را نشان میدهد، توسط فیلدهای زیر در TransitObject برای سفر تکمسیره کنترل میشود:
object.tripTypeobject.ticketLeg.originNameobject.ticketLeg.destinationNameobject.ticketLeg.originStationCodeobject.ticketLeg.destinationStationCode
نحوه ارائه مجوز به این بستگی دارد که کدام فیلدها خالی نباشند. این مورد را میتوان به روشهای زیر ارائه کرد:
- فقط نام مبدأ: نام مبدأ تنها اطلاعاتی است که نمایش داده میشود. این بهویژه برای بلیتهایی مفید است که بهجای سفر خاصی، منطقهای را پوشش میدهند.
- مبدأ و مقصد: مبدأ در سمت چپ و مقصد در سمت راست قرار دارد. نماد بین این دو به نوع سفر بستگی دارد. مبدأ و
مقصد بهصورت یکی از موارد زیر نشان داده میشود:
- نامها و کدهای ایستگاه: کدهای ایستگاه را با نامها بهصورت نوشتار کوچکتر در بالا نشان میدهیم.
- فقط نامها: نامها را نشان میدهیم.
- فقط کدهای ایستگاه: کدهای ایستگاه را نشان میدهیم.
اشیاء چندمرحلهای TransitObject عملکرد بسیار مشابهی دارند. در این مورد، از object.ticketLeg استفاده نکنید. درعوض، باید از فهرست object.ticketLegs[]
استفاده کنید. هم مبدأ و هم مقصد باید تعریف شود. نامها یا کدهای ایستگاه، یا هر دو، باید
بهطور یکسان در هر بخش استفاده شود. مبدأ نمایشدادهشده مبدأ اولین عنصر در
آرایه است، درحالیکه مقصد نمایشدادهشده مقصد آخرین عنصر در آرایه است.
رنگ پسزمینه مجوز فیلد الزامی نیست و میتوان آن را هم در سطح کلاس و هم در سطح شیء تعریف کرد. فیلد شیء اولویت بالاتری دارد و میتوان از آن برای لغو فیلد کلاس استفاده کرد.
وقتی فیلد نشانواره عریض تنظیم شود، در دستگاههای Android، سرصفحه الگوی پیشفرض با نشانواره و نام صادرکننده با نشانواره عریض جایگزین میشود.
هنگام ایجاد نشانواره سرصفحه عریض، دستورالعملهای تصویر نشانواره عریض را دنبال کنید تا تصویرتان بهطور بهینه در مجوزهایتان نمایش داده شود.
الگوی کارت
Android
وب
بخش الگوی کارت برای نمایش ردیفهای اضافی استفاده میشود. این ردیفها میتوانند حاوی فیلدهای داده ساختاریافته مبتنی بر نوشتار یا فیلدهای واحد نوشتاری باشند.
میتوانید تعداد ردیفهایی را که تعداد اشیاء را در فهرست
class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[]
تعریف میکنند مشخص کنید. این فهرست حداقل به یک عنصر نیاز دارد و توصیه میکنیم حداکثر از دو عنصر استفاده کنید. هر عنصر باید یکی از انواع زیر باشد:
-
oneItem، که یک مورد را میپذیرد:item
-
twoItemsکه دو مورد را میپذیرد:startItemendItem
-
threeItemsکه سه مورد را میپذیرد:startItemmiddleItemendItem
هر مورد را میتوان بهعنوان انتخابگر فیلد تکی
(.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
|
|
|
وب
|
|
|
از بخش رمزینه کارت برای نمایش نوشتار یا تصاویر اضافی قبل و بعداز رمزینه استفاده میشود. هیچکدام از فیلدهای این بخش الزامی نیست.
سه انتخابگر فیلد وجود دارد که میتوان از آنها برای تعریف دو فیلد کنارهم قبلاز رمزینه و یک فیلد بعداز رمزینه استفاده کرد. این فیلدها بدون برچسب نمایش داده میشوند و میتوانند فیلدهای داده ساختاریافته نوشتارمحور، فیلدهای واحد نوشتار، یا فیلدهای واحد تصویر باشند. اگر از تصویر استفاده میکنید، این تصاویر باید از رهنمودهای نمانام پیروی کنند.
رمزینه با نوع و مقدار تعریف میشود. برای مشاهده فهرست انواع رمزینههای پشتیبانیشده، مرجع را ببینید. علاوهبراین، میتوان نوشتاری را درست زیر رمزینه نشان داد. این نوشتار میتواند اسکن کردن رمزینهها را آسانتر کند، ازجمله کاربردهای دیگر.
نمونه کد زیر نحوه لغو بخش رمزینه مجوز را برای نمایش تصویر بالای رمزینه نشان میدهد:
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[]. این موارد میتوانند
حاوی هر نوع فیلد داده ساختاریافته، فیلد واحد نوشتاری، فیلد واحد پیوند، فیلد واحد تصویر،
یا پیام باشند.
هر مورد را میتوان بهعنوان انتخابگر فیلد تکی (.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، برنامه سفر سادهای را نشان داد.
|
|
|
الگوی فهرست
|
|
|
از بخش الگوی فهرست برای انتخاب فیلدی که در نمای «مجوزها» در برنامه «کیف پول Google» نمایش داده میشود استفاده میشود. مجوز در فهرست با نشانواره، رنگ پسزمینه، و سه ردیف نشان داده میشود.
نمونه کد زیر نحوه لغو کردن الگوی فهرست مجوز را برای نشان دادن فیلد تاریخ انقضای شیء مجوزهای تکی در ردیف اول الگوی فهرست نشان میدهد:
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
این کد مجوزی با تفسیر الگوی فهرست زیر ایجاد میکند:
ردیف اول را میتوان با انتخابگر فیلد تعریف کرد یا خلاصه نقشه کاوش را نشان میدهد. قالب خلاصه میتواند یکی از موارد زیر باشد:
originAndDestinationCodesoriginAndDestinationNamesoriginName
ردیف دوم و سوم را فقط میتوان با انتخابگر فیلد تعریف کرد. فیلدها بدون برچسب نمایش داده میشوند. برای مجوزهای گروهبندیشده، ردیف دوم همیشه تاریخ حرکت و ردیف سوم همیشه تعداد مجوزهای گروهبندیشده را نشان میدهد.
برچسبها
همه فیلدهای دادههای ساختاریافته برچسبی دارند که Google ارائه کرده است. Google مسئول ارائه ترجمه برای هریک از این برچسبها به همه زبانهای پشتیبانیشده است.
میتوانید برخیاز این برچسبها را بااستفاده از یکی از
فیلدهای class.custom<name_of_the_field>Label سفارشیسازی کنید. وقتی برچسبی را سفارشیسازی میکنید،
مسئولیت ارائه ترجمه برای آن برچسب خاص به همه زبانهایی که میخواهید پشتیبانی کنید
برعهده شما خواهد بود.
مرجعهای فیلد
ارجاعهای فیلد در بخشهای مختلف الگو با فرم class.classTemplateInfo.*.fields[] استفاده میشوند. مرجع فیلد حاوی فهرستی از مسیرها به فیلدهای داده ساختاریافته، فیلدهای ماژول نوشتار، فیلدهای ماژول پیوند، فیلدهای ماژول تصویر، یا پیامها است.
همه انواع مسیرها در هر مرجع فیلد مجاز نیستند. برای مثال، برخیاز ارجاعهای فیلد فقط مسیرهای منتهی به فیلدهای داده ساختاریافته مبتنی بر نوشتار یا فیلدهای واحد نوشتار را مجاز میکنند. فیلدهای ساختاریافته مبتنی بر نوشتار فیلدهای داده ساختاریافته از نوع رشته، رشته بومیسازیشده، تاریخ، یا پول هستند.
از این فهرست میتوان برای پیادهسازی منطق بازگشت استفاده کرد. این یعنی اگر اولین مسیر در فهرست به فیلد خالی منتهی شود، مسیر بعدی ارزیابی میشود. منطق بازگشت عمدتاً فیلدهای داده ساختاریافته مبتنی بر نوشتار یا فیلدهای واحد نوشتار را هدف قرار میدهد. انواع مختلف فیلدها را در یک فهرست ترکیب نکنید. از منطق بازگشت با احتیاط و فقط در شرایط خاصی استفاده کنید که انتظار الگوی ثابتی از فیلدها را دارید که در برخی اشیا وجود دارند اما در برخی دیگر وجود ندارند. در بیشتر مواقع، ایجاد کلاسهای جداگانه برای موارد استفاده جداگانه آسانتر است.
اگر همه مسیرها در فهرست مرجع فیلد به فیلدهای خالی منتهی شوند، موردی که از مرجع فیلد استفاده میکند نمایش داده نمیشود. اگر میخواهید موردی که از ارجاع فیلد استفاده میکند همیشه وجود داشته باشد، مطمئن شوید که حداقل یک مسیر خالی نباشد. توصیه میکنیم فیلدی را روی نویسه خاصی مثل «-» تنظیم کنید تا نشاندهنده مقدار تهی باشد، حتی اگر برخی فیلدها رشتههایی را که فقط فاصله دارند مجاز کنند.
برای ارجاع به فیلدی که در فهرست قرار دارد، میتوانید از نمایه فیلد در فهرست استفاده کنید یا در بیشتر موارد میتوانید از شناسه مرجع استفاده کنید. موارد فهرستی که میتوان با شناسه به آنها ارجاع داد
دارای فیلد .id هستند. توصیه میکنیم درصورت دردسترس بودن، از شناسه مرجع بهجای نمایه فیلد در فهرست استفاده کنید.
در اینجا مثالی از نحوه ارجاع به فیلدهای موجود در فهرست آورده شده است.
object.imageModulesData[0].id = my-first-idobject.imageModulesData[1].id = my-second-idclass.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
|
|
|
وب
|
|
|
برای فیلدهای واحد تصویر، فقط یک فیلد واحد تصویر از کلاس و فقط یک فیلد واحد تصویر از شیء نشان میدهیم. اگر در هریک از سطوح به بیشاز یک فیلد واحد تصویر نیاز دارید، الگوی پیشفرض را لغو کنید.
برای فیلدهای واحد نوشتار، حداکثر ۲۰ فیلد واحد نوشتار از کلاس و ۲۰ فیلد واحد نوشتار از شیء را نشان میدهیم. فیلدها به همان ترتیبی که در آرایه تعریف شدهاند نمایش داده میشوند. اگر به بیشاز ۲۰ فیلد پیمانه نوشتاری در هریک از سطوح نیاز دارید، الگوی پیشفرض را لغو کنید.
برای پیامها، حداکثر ۲۰ پیام از کلاس و ۲۰ پیام از شیء را نشان میدهیم. ترتیب پیامها را تضمین نمیکنیم. اگر در هریک از سطوح به بیش از ۲۰ پیام نیاز دارید، یا برای هر سفارشی تضمین میخواهید، الگوی پیشفرض را لغو کنید.
برای فیلد ماژول پیوندها، محدودیتی برای تعداد شناسه منابع یکسانی که میتوانید تعریف کنید وجود ندارد. شناسههای منبع یکسان بهترتیب زیر برای هر سطح (کلاس یا شیء) گروهبندی و نمایش داده میشوند:
- مختصات نقشه
- شمارههای تلفن
- نشانیهای ایمیل
- صفحه وب
برای هر گروه، URIها به همان ترتیبی که در آرایه تعریف شدهاند نمایش داده میشوند. اگر به ترتیب دیگری نیاز دارید، الگوی پیشفرض را لغو کنید.
|
|
|