1
mirror of https://github.com/thepeacockproject/Peacock synced 2024-11-29 09:15:11 +01:00
Peacock/static/ContractSearchPaginateTemplate.json
moonysolari 4a08faeec0
Implement "Contract search", "Trending", and "Most played last week" tiles for contracts menu (#117)
* Refactor: use function for lookupContractPublicId

* Trending and Mostplayed now display stuff

* Add call to contract-preserving backend

* Actually download contract data from official

* add getRemoteService function

* implement "contract search" tile

* Change variable naming

* Run prettier

* Change naming to hitmaps

* officialSearchContract -> contractsModeRouting.ts

* Fix imports
2023-03-06 13:17:22 -05:00

2015 lines
198 KiB
JSON

{
"$if $gt ($.Data.TotalCount,0)": {
"$then": {
"id": "search_results_container",
"controller": "group",
"view": "menu3.containers.ScrollingListContainer",
"row": 0,
"col": 2,
"ncols": 8,
"nrows": 3,
"pages": true,
"direction": "horizontal",
"data": {
"direction": "horizontal",
"forceMask": true,
"maskwidthoffset": 400,
"maskstartleftoffset": 40,
"masktopoffset": 100,
"maskheightoffset": 200,
"overflowscrolling": "0.3",
"outsidemaskscrolling": true
},
"children": {
"$merge": [
{
"$if $.Data.HasPrevious": {
"$then": {
"$setup": {
"$set Title": "UI_MENU_PAGE_CHALLENGES_PREVIOUS",
"$set Icon": "arrowleft",
"$set PageDirection": -1,
"$in": {
"view": "menu3.basic.MenuTileSmall",
"nrows": 1.5,
"ncols": 2,
"data": {
"title": "$loc $.Title",
"icon": "$.Icon"
},
"id": "PrevNextTile",
"selectable": true,
"pressable": true,
"actions": {
"accept": {
"sm:submit-search-request": {
"restore-last-filterset": true,
"load-async": {
"from": {
"url": "contractsearchpaginate",
"args": {
"page": "0",
"sorting": ""
}
},
"post-load-action": {
"set-child-selected": {
"target": "search_results_container",
"selectdirection": "$.PageDirection"
}
},
"target": "search_results_container",
"page": "$.Data.Page",
"pagedirection": "$.PageDirection",
"showloadingindicator": true,
"blocksinput": true
}
}
}
}
}
}
},
"$else": {
"selectable": false,
"pressable": false,
"nrows": 0,
"ncols": 0
}
}
},
{
"$each $.Data.Contracts": {
"$setup": {
"$set TileSize": "small",
"$in": {
"view": {
"$switch $.TileSize": [
{
"case": "small",
"return": "menu3.basic.MenuTileSmall"
},
{
"case": "large",
"return": "menu3.basic.MenuTileLarge"
},
{
"case": "tall",
"return": "menu3.basic.MenuTileTall"
}
]
},
"nrows": {
"$switch $.TileSize": [
{
"case": "small",
"return": 1.5
},
{
"case": "large",
"return": 3
},
{ "case": "tall", "return": 3 }
]
},
"ncols": {
"$switch $.TileSize": [
{
"case": "small",
"return": 2
},
{
"case": "large",
"return": 4
},
{ "case": "tall", "return": 2 }
]
},
"buttons": [
{
"$switch $.UserCentricContract.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $not $($arg _ugcrestricted)": {
"$then": {
"actiontype": "action-y",
"actionlabel": "$loc UI_BUTTON_PROMPTS_ACTION_REPORT_CONTRACT"
}
}
}
}
]
},
{
"$switch $.UserCentricContract.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $not $($arg _ugcrestricted)": {
"$then": {
"$if $eqs ($($arg HitsCategory),MyPlaylist)": {
"$then": {
"actiontype": "action-x",
"actionlabel": {
"$if": {
"$condition": "$favrem:ismarkedforplaylistremoval $.UserCentricContract.Contract.Metadata.Id",
"$then": "$loc UI_BUTTON_PROMPTS_ACTION_UNMARK_FOR_REMOVAL",
"$else": "$loc UI_BUTTON_PROMPTS_ACTION_MARK_FOR_REMOVAL"
}
}
},
"$else": {
"$if $.UserCentricContract.Data.PlaylistData.IsAdded": {
"$then": {
"actiontype": "action-x",
"actionlabel": "$loc UI_BUTTON_PROMPTS_ACTION_REMOVE_FROM_PLAYLIST"
},
"$else": {
"actiontype": "action-x",
"actionlabel": "$loc UI_BUTTON_PROMPTS_ACTION_ADD_TO_PLAYLIST"
}
}
}
}
}
}
}
}
]
},
{
"$if $stringvalid $arg NextSubType": {
"$then": {
"actiontype": "r",
"actionlabel": {
"$switch $arg NextSubType": [
{
"case": "MyHistory_failed",
"return": "$loc UI_CONTRACT_FILTER_SHOW_FAILED"
},
{
"case": "MyHistory_completed",
"return": "$loc UI_CONTRACT_FILTER_SHOW_COMPLETED"
},
{
"case": "MyHistory_all",
"return": "$loc UI_CONTRACT_FILTER_SHOW_ALL"
},
{
"case": "MyPlaylist_failed",
"return": "$loc UI_CONTRACT_FILTER_SHOW_FAILED"
},
{
"case": "MyPlaylist_completed",
"return": "$loc UI_CONTRACT_FILTER_SHOW_COMPLETED"
},
{
"case": "MyPlaylist_all",
"return": "$loc UI_CONTRACT_FILTER_SHOW_ALL"
},
{
"case": "MyContracts_failed",
"return": "$loc UI_CONTRACT_FILTER_SHOW_FAILED"
},
{
"case": "MyContracts_completed",
"return": "$loc UI_CONTRACT_FILTER_SHOW_COMPLETED"
},
{
"case": "MyContracts_all",
"return": "$loc UI_CONTRACT_FILTER_SHOW_ALL"
}
]
}
}
}
}
],
"id": {
"$if $stringvalid $.CustomId": {
"$then": "$.CustomId",
"$else": "$formatstring {$.UserCentricContract.Contract.Metadata.Id}_contractTile"
}
},
"pressable": {
"$use $.UserCentricContract": {
"$switch $.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $($arg _ugcrestricted)": {
"$then": false,
"$else": true
}
}
},
{ "default": true }
]
}
},
"stateproviders": [
{
"type": "contractavailability",
"contract": "$.UserCentricContract.Contract"
},
{
"$switch $.UserCentricContract.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $not $($arg _ugcrestricted)": {
"$then": {
"type": "contractplaylist",
"callback-id": "reload-contract-tiles",
"contract-id": "$.UserCentricContract.Contract.Metadata.Id"
}
}
}
}
]
}
],
"data": {
"$setup": {
"$set Data": "$.UserCentricContract.Data",
"$set Contract": "$.UserCentricContract.Contract",
"$in": {
"$mergeobjects": [
{
"$switch $.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $($arg _ugcrestricted)": {
"$then": {
"header": {
"$setup": {
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$in": "$formatstring {$.Type} / {$.City}"
}
},
"title": {
"$switch $.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $($arg _ugcrestricted)": {
"$then": "$loc UI_CONTRACT_NO_ACCESS_UGC",
"$else": "$.Contract.Metadata.Title"
}
}
},
{
"case": "featured",
"return": "$.Contract.Metadata.Title"
},
{
"default": "$loc $.Contract.Metadata.Title"
}
]
},
"locked": true,
"lockedreason": "$loc UI_CONTRACT_NO_ACCESS_UGC_DESCRIPTION",
"icon": "locked",
"isMarkedForDeletion": false
},
"$else": {
"header": {
"$setup": {
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$in": "$formatstring {$.Type} / {$.City}"
}
},
"title": "$.Contract.Metadata.Title",
"icon": "$.Contract.Metadata.Type",
"locked": "$.Data.IsLocked",
"lockedreason": "$loc $.Data.LockedReason",
"isMarkedForDeletion": {
"$if $eqs ($($arg HitsCategory),MyPlaylist)": {
"$then": "$favrem:ismarkedforplaylistremoval $.Contract.Metadata.Id",
"$else": false
}
}
}
}
}
},
{
"case": "featured",
"return": {
"header": {
"$setup": {
"$set Type": "$loc UI_MENU_PAGE_HUB_FEATURED",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$in": "$formatstring {$.Type} / {$.City}"
}
},
"title": "$.Contract.Metadata.Title",
"icon": "$.Contract.Metadata.Type",
"locked": "$.Data.IsLocked",
"lockedreason": "$loc $.Data.LockedReason"
}
},
{
"default": {
"header": {
"$if $not $isnull $.headeroverride": {
"$then": "$.headeroverride",
"$else": {
"$if": {
"$condition": {
"$or": [
"$eqs ($.EngineMode,singleplayer)",
"$eqs ($.EngineMode,multiplayer)"
]
},
"$then": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": "$loc UI_MENU_GAME_MODE_MULTIPLAYER",
"$else": "$loc UI_MENU_GAME_MODE_SINGLE_PLAYER"
}
},
"$else": {
"$switch $.Contract.Metadata.Type": [
{
"case": "campaign",
"return": "$loc $.Contract.Metadata.GroupTitle"
},
{
"case": "flashback",
"return": {
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,flashback)",
"$not $.Data.IsFreeDLC"
]
},
"$then": {
"$if $not $stringvalid $.Contract.Metadata.Subtype": {
"$then": "$loc UI_CONTRACT_HEADER_SEASONAL",
"$else": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Subtype}"
}
},
"$else": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}"
}
}
},
{
"default": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}"
}
]
}
}
}
}
},
"title": {
"$if $isnull $.titleoverride": {
"$then": "$loc $.Contract.Metadata.Title",
"$else": "$.titleoverride"
}
},
"icon": {
"$if $isnull $.iconoverride": {
"$then": {
"$switch $.Contract.Metadata.Type": [
{
"case": "dummy",
"return": {
"_dynamicPackerOverride": [
"SniperChallenge"
]
}
},
{
"case": "orbis",
"return": "ica"
},
{
"case": "campaign",
"return": "mission"
},
{
"case": "sniper",
"return": "sniperrifle"
},
{
"default": {
"$if $.Contract.Metadata.IsVersus": {
"$then": "versus",
"$else": "$.Contract.Metadata.Type"
}
}
}
]
},
"$else": "$.iconoverride"
}
},
"locked": {
"$if": {
"$condition": "$isnull $.lockoverride",
"$then": "$.Data.IsLocked",
"$else": "$.lockoverride"
}
},
"lockedreason": {
"$switch $.Contract.Metadata.Type": [
{
"case": "orbis",
"return": {
"$loc": {
"key": "UI_LOCKED_CONTENT_INFO_TEXT",
"data": "$loc $.Data.LockedReason"
}
}
},
{
"default": "$loc $.Data.LockedReason"
}
]
},
"elusivecontractstate": "$.Data.ElusiveContractState",
"completedlevels": "$.Data.EscalationCompletedLevels",
"totallevels": "$.Data.EscalationTotalLevels"
}
}
]
},
{
"playableSince": "$as3date $.Contract.Metadata.PlayableSince",
"playableUntil": "$as3date $.Contract.Metadata.PlayableUntil",
"lastPlayedAt": {
"$if $.Data.LastPlayedAt": {
"$then": "$as3date $.Data.LastPlayedAt",
"$else": null
}
},
"barcodeHeader": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"barcodeTitle": "$loc $formatstring UI_{$.Contract.Metadata.Location}_COUNTRY",
"image": {
"$if $.tileimageoverride": {
"$then": "$res $.tileimageoverride",
"$else": {
"$if $.Contract.Metadata.TileImage": {
"$then": {
"$if $gt ($arraysize $.Contract.Metadata.TileImage,0)": {
"$then": {
"$setup": {
"$set EngineMode": {
"$if $isnull $.EngineMode": {
"$then": {
"$if $isnull $arg EngineMode": {
"$then": "singleplayer",
"$else": "$arg EngineMode"
}
},
"$else": "$.EngineMode"
}
},
"$set TileImageOrdered": {
"$orderby": {
"from": "$expand $.Contract.Metadata.TileImage",
"by": "Mode",
"order": [
"$.EngineMode"
]
}
},
"$in": "$res $.TileImageOrdered[0].Image"
}
},
"$else": "$res $expand $.Contract.Metadata.TileImage"
}
},
"$else": "$res images/ui/tiles/defaultmenutilesmall.jpg"
}
}
}
},
"completionstate": {
"$switch $.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $.Data.LastPlayedAt": {
"$then": {
"$if $.Data.Completed": {
"$then": "completed",
"$else": "failed"
}
}
}
}
},
{
"case": "featured",
"return": {
"$if $.Data.LastPlayedAt": {
"$then": {
"$if $.Data.Completed": {
"$then": "completed",
"$else": "failed"
}
}
}
}
},
{
"case": "escalation",
"return": {
"$if $.Data.LastPlayedAt": {
"$then": {
"$if $.Data.EscalationCompleted": {
"$then": "completed"
}
}
}
}
},
{
"case": "placeholder",
"return": {
"$if $.Data.LastPlayedAt": {
"$then": {
"$if $.Data.EscalationCompleted": {
"$then": "completed"
}
}
}
}
}
]
},
"isInPlaylist": "$.Data.PlaylistData.IsAdded"
}
]
}
}
},
"actions": {
"$setup": {
"$set Data": "$.UserCentricContract.Data",
"$set Contract": "$.UserCentricContract.Contract",
"$in": {
"$mergeobjects": [
{
"select": {
"replace-children": {
"target": "headline_container",
"children": [
{
"$switch $.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $($arg _ugcrestricted)": {
"$then": {
"view": "menu3.basic.HeadlineElement",
"selectable": false,
"pressable": false,
"data": {
"header": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
"title": "$loc UI_CONTRACT_NO_ACCESS_UGC_DESCRIPTION",
"typeicon": "contract"
}
},
"$else": {
"$setup": {
"$set Tags": {
"$sm:createtags": {
"id": "$.Contract.Metadata.Id",
"tags": "$.Data.MatchingTags"
}
},
"$in": {
"view": {
"$if $($arraysize $.Tags)": {
"$then": "menu3.basic.HeadlineWithTags",
"$else": "menu3.basic.HeadlineElement"
}
},
"selectable": false,
"pressable": false,
"data": {
"header": {
"$setup": {
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$set Mission": "$loc $formatstring UI_{$.Contract.Metadata.Location}_TITLE",
"$in": "$formatstring {$.Type} / {$.City} / {$.Mission}"
}
},
"creatorname": "$($user $.Contract.Metadata.CreatorUserId).name",
"publicid": "$formatpublicid $.Contract.Metadata.PublicId",
"title": "$.Contract.Metadata.Title",
"typeicon": "$.Contract.Metadata.Type",
"tags": "$.Tags"
},
"stateproviders": [
{
"type": "userresolution",
"target": "creatorname",
"profileid": "$.Contract.Metadata.CreatorUserId"
}
]
}
}
}
}
}
},
{
"case": "featured",
"return": {
"view": "menu3.basic.HeadlineElement",
"selectable": false,
"pressable": false,
"data": {
"header": {
"$setup": {
"$set Type": "$loc UI_MENU_PAGE_HUB_FEATURED",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$set Mission": "$loc $formatstring UI_{$.Contract.Metadata.Location}_TITLE",
"$in": "$formatstring {$.Type} / {$.City} / {$.Mission}"
}
},
"creatorname": "$loc UI_CATEGORY_MESSAGE_CENTER_COMMUNITY",
"title": "$.Contract.Metadata.Title",
"typeicon": "$.Contract.Metadata.Type"
}
}
},
{
"case": "tutorial",
"return": {
"view": "menu3.basic.HeadlineElement",
"selectable": false,
"pressable": false,
"data": {
"header": {
"$setup": {
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$in": "$formatstring {$.Type} / {$.City} "
}
},
"title": "$loc $.Contract.Metadata.Title",
"typeicon": {
"$switch $.Contract.Metadata.Type": [
{
"case": "dummy",
"return": {
"_dynamicPackerOverride": [
"SniperChallenge"
]
}
},
{
"case": "orbis",
"return": "ica"
},
{
"case": "campaign",
"return": "mission"
},
{
"case": "sniper",
"return": "sniperrifle"
},
{
"default": {
"$if $.Contract.Metadata.IsVersus": {
"$then": "versus",
"$else": "$.Contract.Metadata.Type"
}
}
}
]
}
}
}
},
{
"case": "mission",
"return": {
"view": "menu3.basic.HeadlineElement",
"selectable": false,
"pressable": false,
"data": {
"header": {
"$setup": {
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$in": "$formatstring {$.Type} / {$.City}"
}
},
"title": "$loc $.Contract.Metadata.Title",
"typeicon": {
"$switch $.Contract.Metadata.Type": [
{
"case": "dummy",
"return": {
"_dynamicPackerOverride": [
"SniperChallenge"
]
}
},
{
"case": "orbis",
"return": "ica"
},
{
"case": "campaign",
"return": "mission"
},
{
"case": "sniper",
"return": "sniperrifle"
},
{
"default": {
"$if $.Contract.Metadata.IsVersus": {
"$then": "versus",
"$else": "$.Contract.Metadata.Type"
}
}
}
]
}
}
}
},
{
"case": "flashback",
"return": {
"view": "menu3.basic.HeadlineElement",
"selectable": false,
"pressable": false,
"data": {
"header": {
"$setup": {
"$set Type": {
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,flashback)",
"$not $.Data.IsFreeDLC"
]
},
"$then": {
"$if $not $stringvalid $.Contract.Metadata.Subtype": {
"$then": "$loc UI_CONTRACT_HEADER_SEASONAL",
"$else": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Subtype}"
}
},
"$else": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}"
}
},
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$in": "$formatstring {$.Type} / {$.City}"
}
},
"title": "$loc $.Contract.Metadata.Title",
"typeicon": {
"$switch $.Contract.Metadata.Type": [
{
"case": "dummy",
"return": {
"_dynamicPackerOverride": [
"SniperChallenge"
]
}
},
{
"case": "orbis",
"return": "ica"
},
{
"case": "campaign",
"return": "mission"
},
{
"case": "sniper",
"return": "sniperrifle"
},
{
"default": {
"$if $.Contract.Metadata.IsVersus": {
"$then": "versus",
"$else": "$.Contract.Metadata.Type"
}
}
}
]
}
}
}
},
{
"case": "campaign",
"return": {
"view": "menu3.basic.HeadlineElement",
"selectable": false,
"pressable": false,
"data": {
"header": {
"$setup": {
"$set Type": "$loc $.Contract.Metadata.GroupTitle",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$in": "$formatstring {$.Type} / {$.City}"
}
},
"title": "$loc $.Contract.Metadata.Title",
"typeicon": {
"$switch $.Contract.Metadata.Type": [
{
"case": "dummy",
"return": {
"_dynamicPackerOverride": [
"SniperChallenge"
]
}
},
{
"case": "orbis",
"return": "ica"
},
{
"case": "campaign",
"return": "mission"
},
{
"case": "sniper",
"return": "sniperrifle"
},
{
"default": {
"$if $.Contract.Metadata.IsVersus": {
"$then": "versus",
"$else": "$.Contract.Metadata.Type"
}
}
}
]
}
}
}
},
{
"case": "sniper",
"return": {
"view": "menu3.basic.HeadlineElement",
"selectable": false,
"pressable": false,
"data": {
"header": {
"$setup": {
"$set EngineMode": {
"$if $isnull $.EngineMode": {
"$then": {
"$if $isnull $arg EngineMode": {
"$then": "singleplayer",
"$else": "$arg EngineMode"
}
},
"$else": "$.EngineMode"
}
},
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$set EngineModeName": {
"$if": {
"$condition": {
"$or": [
"$eqs ($.EngineMode,singleplayer)",
"$eqs ($.EngineMode,multiplayer)"
]
},
"$then": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": "$formatstring / {$loc UI_MENU_GAME_MODE_MULTIPLAYER}",
"$else": "$formatstring / {$loc UI_MENU_GAME_MODE_SINGLE_PLAYER}"
}
},
"$else": ""
}
},
"$in": "$formatstring {$.City}{$.EngineModeName}"
}
},
"title": "$loc $.Contract.Metadata.Title",
"typeicon": {
"$switch $.Contract.Metadata.Type": [
{
"case": "dummy",
"return": {
"_dynamicPackerOverride": [
"SniperChallenge"
]
}
},
{
"case": "orbis",
"return": "ica"
},
{
"case": "campaign",
"return": "mission"
},
{
"case": "sniper",
"return": "sniperrifle"
},
{
"default": {
"$if $.Contract.Metadata.IsVersus": {
"$then": "versus",
"$else": "$.Contract.Metadata.Type"
}
}
}
]
}
}
}
},
{
"case": "placeholder",
"return": {
"view": "menu3.basic.HeadlineElement",
"selectable": false,
"pressable": false,
"data": {
"header": {
"$setup": {
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$in": "$formatstring {$.Type} / {$.City}"
}
},
"title": "$loc $.Contract.Metadata.Title",
"typeicon": {
"$switch $.Contract.Metadata.Type": [
{
"case": "dummy",
"return": {
"_dynamicPackerOverride": [
"SniperChallenge"
]
}
},
{
"case": "orbis",
"return": "ica"
},
{
"case": "campaign",
"return": "mission"
},
{
"case": "sniper",
"return": "sniperrifle"
},
{
"default": {
"$if $.Contract.Metadata.IsVersus": {
"$then": "versus",
"$else": "$.Contract.Metadata.Type"
}
}
}
]
}
}
}
},
{
"default": {
"view": "menu3.basic.HeadlineElement",
"selectable": false,
"pressable": false,
"data": {
"header": {
"$setup": {
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
"$set Mission": "$loc $formatstring UI_{$.Contract.Metadata.Location}_TITLE",
"$in": "$formatstring {$.Type} / {$.City} / {$.Mission}"
}
},
"title": "$loc $.Contract.Metadata.Title",
"typeicon": {
"$switch $.Contract.Metadata.Type": [
{
"case": "dummy",
"return": {
"_dynamicPackerOverride": [
"SniperChallenge"
]
}
},
{
"case": "orbis",
"return": "ica"
},
{
"case": "campaign",
"return": "mission"
},
{
"case": "sniper",
"return": "sniperrifle"
},
{
"default": {
"$if $.Contract.Metadata.IsVersus": {
"$then": "versus",
"$else": "$.Contract.Metadata.Type"
}
}
}
]
}
}
}
}
]
}
]
},
"set-mastery-data": {
"$setup": {
"$set ValidContractType": {
"$if $isnull $.Contract": {
"$then": true,
"$else": {
"$switch $.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": false
},
{
"case": "featured",
"return": false
},
{
"default": true
}
]
}
}
},
"$set HideProgression": {
"$if $isnull $.CompletionData": {
"$then": "$.Data.LocationHideProgression",
"$else": "$.CompletionData.HideProgression"
}
},
"$set MasteryTitle": {
"$if $isnull $.CompletionData": {
"$then": "$formatstring {$.Data.LocationLevel,.0f}/{$.Data.LocationMaxLevel,.0f}",
"$else": "$formatstring {$.CompletionData.Level,.0f}/{$.CompletionData.MaxLevel,.0f}"
}
},
"$set MasteryCompletion": {
"$if $isnull $.CompletionData": {
"$then": "$.Data.LocationCompletion",
"$else": "$.CompletionData.Completion"
}
},
"$set MasteryXpLeft": {
"$if $isnull $.CompletionData": {
"$then": "$.Data.LocationXpLeft",
"$else": "$.CompletionData.XpLeft"
}
},
"$set NameLocalized": {
"$if $isnull $.CompletionData.Name": {
"$then": "$loc UI_MENU_PAGE_MASTERY_TITLE",
"$else": "$loc $.CompletionData.Name"
}
},
"$set IsLocationProgression": {
"$if": {
"$condition": {
"$or": [
"$isnull $.CompletionData",
"$.CompletionData.IsLocationProgression"
]
},
"$then": true,
"$else": false
}
},
"$set ShowUnit": {
"$if $.IsLocationProgression": {
"$then": true,
"$else": false
}
},
"$in": {
"$if": {
"$condition": {
"$and": [
"$arg _isonline",
"$not $.HideProgression",
"$.ValidContractType"
]
},
"$then": {
"masteryheader": "$.NameLocalized",
"masterytitle": "$.MasteryTitle",
"masterycompletion": "$.MasteryCompletion",
"masteryxpleft": "$.MasteryXpLeft",
"showUnit": "$.ShowUnit"
},
"$else": {}
}
}
}
}
},
"deselect": {
"replace-children": {
"target": "headline_container",
"children": []
},
"set-mastery-data": {}
},
"action-y": {
"$switch $.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $not $($arg _ugcrestricted)": {
"$then": {
"link": {
"page": "report",
"args": {
"url": "report",
"args": {
"contractid": "$.Contract.Metadata.Id"
},
"contractid": "$.Contract.Metadata.Id",
"contracttitle": "$.Contract.Metadata.Title"
}
}
}
}
}
}
]
},
"action-x": {
"$switch $.Contract.Metadata.Type": [
{
"case": "usercreated",
"return": {
"$if $not $($arg _ugcrestricted)": {
"$then": {
"$if $eqs ($($arg HitsCategory),MyPlaylist)": {
"$then": {
"favrem:mark-for-playlist-removal": {
"contractId": "$.Contract.Metadata.Id",
"newActionLabels": {
"actiontype": "action-x",
"unmarklabel": "$loc UI_BUTTON_PROMPTS_ACTION_UNMARK_FOR_REMOVAL",
"marklabel": "$loc UI_BUTTON_PROMPTS_ACTION_MARK_FOR_REMOVAL"
}
}
},
"$else": {
"load-async": {
"from": {
"url": "$formatstring contractplaylist/addordelete/{$.Contract.Metadata.Id}"
},
"reloadTarget": true,
"target": "$formatstring {$.Contract.Metadata.Id}_contractTile",
"showloadingindicator": true,
"blocksinput": true,
"post-load-action": [
{
"stateprovider-callback": {
"callback-id": "reload-contract-tiles",
"data": {
"contract-id": "$.Contract.Metadata.Id",
"reloadTarget": "$not $eqs ($($arg HitsCategory),MyPlaylist)"
}
}
}
]
}
}
}
}
}
}
}
]
}
},
{
"$mergeobjects": [
{
"on-content-unknown": {
"_comment": "No DLC could be found containing contract",
"alter-actions": {
"path": "accept",
"value": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
"$loc UI_DIALOG_OK"
],
"data": {
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
}
},
"onbutton": []
}
}
}
},
"on-content-not-owned": {
"_comment": "DLC is not owned",
"alter-actions": {
"path": "accept",
"value": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
"$loc UI_DIALOG_OK"
],
"data": {
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
}
},
"onbutton": []
}
}
}
},
"on-content-not-installed": {
"_comment": "DLC owned but not installed",
"alter-actions": {
"path": "accept",
"value": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
"$loc UI_DIALOG_OK"
],
"data": {
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
}
},
"onbutton": []
}
}
}
},
"on-content-downloading": {
"_comment": "DLC owned and currently downloading",
"alter-actions": {
"path": "accept",
"value": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
"$loc UI_DIALOG_OK"
],
"data": {
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
}
},
"onbutton": []
}
}
}
},
"on-content-update-required": {
"_comment": "DLC owned and update is required",
"alter-actions": {
"path": "accept",
"value": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
"$loc UI_DIALOG_OK"
],
"data": {
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
}
},
"onbutton": []
}
}
}
},
"on-content-installing": {
"_comment": "DLC owned and currently installing",
"alter-actions": {
"path": "accept",
"value": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
"$loc UI_DIALOG_OK"
],
"data": {
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
}
},
"onbutton": []
}
}
}
},
"on-entitlement-missing": {
"_comment": "Entitlement missing",
"alter-actions": {
"path": "accept",
"value": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
"$loc UI_DIALOG_OK"
],
"data": {
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
}
},
"onbutton": []
}
}
}
}
},
{
"on-content-available": {
"_comment": "Contract is ready to be played",
"alter-actions": {
"path": "accept",
"value": {
"$if": {
"$condition": {
"$and": [
"$.Data.IsLocked",
{
"$or": [
"$isnull $.lockoverride",
"$.lockoverride"
]
}
]
},
"$then": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
"$loc UI_DIALOG_CONFIRM",
{
"label": "$loc UI_DIALOG_CANCEL",
"type": "cancel"
}
],
"data": {
"title": "$loc UI_LOCKED_CONTENT_DIALOGUE_TITLE",
"description": {
"$switch $.Contract.Metadata.Type": [
{
"case": "orbis",
"return": "$loc UI_LOCKED_CONTENT_DIALOGUE_TEXT_SARAJEVO6"
},
{
"default": "$loc UI_LOCKED_CONTENT_DIALOGUE_TEXT"
}
]
}
}
},
"onbutton": [
{
"trigger-action": {
"name": "on-goto-planning"
}
}
]
}
},
"$else": {
"trigger-action": {
"name": "on-goto-planning"
}
}
}
}
}
},
"on-goto-planning": {
"$switch $.Contract.Metadata.Type": [
{
"case": "creation",
"return": {
"link": {
"page": "contractcreation_planning",
"args": {
"url": "contractcreation/planning",
"args": {
"location": "$.Contract.Metadata.Location",
"contractCreationIdOverwrite": "$.Contract.Metadata.Id"
},
"contractid": "$.Contract.Metadata.Id"
}
}
}
},
{
"default": {
"$if": {
"$condition": {
"$isfreeprologueuser": ""
},
"$then": {
"$if $.fspdashboardcontract": {
"$then": {
"clear-contract-menu-context": {},
"set-contract-loading-screen-data": {
"contract": "$.Contract"
},
"start-contract": {
"contractid": "$.fspdashboardcontract.contractid"
}
},
"$else": {
"is-playable": {
"playableSince": "$.Contract.Metadata.PlayableSince",
"on-success": {
"$merge": [
{
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,placeholder)",
"$.Data.LastPlayedAt",
"$.Data.EscalationCompleted"
]
},
"$then": [
{
"alter-history": {
"target": "destination",
"force-no-cache": true
}
},
{
"alter-history": {
"target": "hub",
"force-no-cache": true
}
}
],
"$else": null
}
},
{
"$switch $.Contract.Metadata.BriefingVideo": [
{
"case": null,
"return": {
"link": {
"page": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": "planning_multiplayer",
"$else": "planning"
}
},
"isMultiplayer": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": true,
"$else": false
}
},
"args": {
"url": "planning",
"args": {
"contractid": "$.Contract.Metadata.Id",
"resetescalation": {
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,placeholder)",
"$.Data.LastPlayedAt",
"$.Data.EscalationCompleted"
]
},
"$then": true,
"$else": false
}
}
},
"contractid": "$.Contract.Metadata.Id"
}
}
}
},
{
"default": {
"link": {
"page": "video",
"addtohistory": false,
"args": {
"videoid": "$.Contract.Metadata.BriefingVideo",
"mountrootresources": "$formatstring [{$.Contract.Metadata.ScenePath}].entitytemplate",
"skipifshown": true,
"EngineMode": "$.EngineMode",
"link": {
"page": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": "planning_multiplayer",
"$else": "planning"
}
},
"isMultiplayer": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": true,
"$else": false
}
},
"args": {
"url": "planning",
"args": {
"contractid": "$.Contract.Metadata.Id",
"resetescalation": {
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,placeholder)",
"$.Data.LastPlayedAt",
"$.Data.EscalationCompleted"
]
},
"$then": true,
"$else": false
}
}
},
"contractid": "$.Contract.Metadata.Id"
}
}
}
}
}
}
]
}
]
},
"on-failure-too-early": {
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,elusive)",
"$stringvalid $.Data.ElusiveContractState",
"$stringvalid $.Data.LastPlayedAt",
"$lt ($converttimetonumber $.Data.LastPlayedAt,$converttimetonumber $.Contract.Metadata.PlayableSince)"
]
},
"$then": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
{
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
"type": "cancel"
}
],
"data": {
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
"description": "$loc UI_MENU_ERROR_STARTING_ELUSIVE_CONTRACT_NOT_PLAYABLE_YET_PREVIOUSLY_PLAYED_DESCRIPTION"
}
}
}
},
"$else": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
{
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
"type": "cancel"
}
],
"data": {
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
"description": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_NOT_PLAYABLE_YET_DESCRIPTION_ET",
"_comment": "HACK: use typeoverride to make the buttons work",
"typeoverride": "online"
}
}
}
}
}
},
"on-failure-too-late": {
"_comment": "this is never reached, because we don't set playabelUntil above - by design",
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
{
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
"type": "cancel"
}
],
"data": {
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
"description": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_NOT_PLAYABLE_ANYMORE_DESCRIPTION_ET"
}
}
}
}
}
}
}
},
"$else": {
"is-playable": {
"playableSince": "$.Contract.Metadata.PlayableSince",
"on-success": {
"$merge": [
{
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,placeholder)",
"$.Data.LastPlayedAt",
"$.Data.EscalationCompleted"
]
},
"$then": [
{
"alter-history": {
"target": "destination",
"force-no-cache": true
}
},
{
"alter-history": {
"target": "hub",
"force-no-cache": true
}
}
],
"$else": null
}
},
{
"$switch $.Contract.Metadata.BriefingVideo": [
{
"case": null,
"return": {
"link": {
"page": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": "planning_multiplayer",
"$else": "planning"
}
},
"isMultiplayer": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": true,
"$else": false
}
},
"args": {
"url": "planning",
"args": {
"contractid": "$.Contract.Metadata.Id",
"resetescalation": {
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,placeholder)",
"$.Data.LastPlayedAt",
"$.Data.EscalationCompleted"
]
},
"$then": true,
"$else": false
}
}
},
"contractid": "$.Contract.Metadata.Id"
}
}
}
},
{
"default": {
"link": {
"page": "video",
"addtohistory": false,
"args": {
"videoid": "$.Contract.Metadata.BriefingVideo",
"mountrootresources": "$formatstring [{$.Contract.Metadata.ScenePath}].entitytemplate",
"skipifshown": true,
"EngineMode": "$.EngineMode",
"link": {
"page": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": "planning_multiplayer",
"$else": "planning"
}
},
"isMultiplayer": {
"$if $eqs ($.EngineMode,multiplayer)": {
"$then": true,
"$else": false
}
},
"args": {
"url": "planning",
"args": {
"contractid": "$.Contract.Metadata.Id",
"resetescalation": {
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,placeholder)",
"$.Data.LastPlayedAt",
"$.Data.EscalationCompleted"
]
},
"$then": true,
"$else": false
}
}
},
"contractid": "$.Contract.Metadata.Id"
}
}
}
}
}
}
]
}
]
},
"on-failure-too-early": {
"$if": {
"$condition": {
"$and": [
"$eqs ($.Contract.Metadata.Type,elusive)",
"$stringvalid $.Data.ElusiveContractState",
"$stringvalid $.Data.LastPlayedAt",
"$lt ($converttimetonumber $.Data.LastPlayedAt,$converttimetonumber $.Contract.Metadata.PlayableSince)"
]
},
"$then": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
{
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
"type": "cancel"
}
],
"data": {
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
"description": "$loc UI_MENU_ERROR_STARTING_ELUSIVE_CONTRACT_NOT_PLAYABLE_YET_PREVIOUSLY_PLAYED_DESCRIPTION"
}
}
}
},
"$else": {
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
{
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
"type": "cancel"
}
],
"data": {
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
"description": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_NOT_PLAYABLE_YET_DESCRIPTION_ET",
"_comment": "HACK: use typeoverride to make the buttons work",
"typeoverride": "online"
}
}
}
}
}
},
"on-failure-too-late": {
"_comment": "this is never reached, because we don't set playabelUntil above - by design",
"show-modal": {
"config": {
"view": "menu3.modal.ModalDialogGeneric",
"buttons": [
{
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
"type": "cancel"
}
],
"data": {
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
"description": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_NOT_PLAYABLE_ANYMORE_DESCRIPTION_ET"
}
}
}
}
}
}
}
}
}
]
}
}
]
}
]
}
}
}
}
}
}
},
{
"$if $.Data.HasMore": {
"$then": {
"$setup": {
"$set Title": "UI_MENU_PAGE_CHALLENGES_NEXT",
"$set Icon": "arrowright",
"$set PageDirection": 1,
"$in": {
"view": "menu3.basic.MenuTileSmall",
"nrows": 1.5,
"ncols": 2,
"data": {
"title": "$loc $.Title",
"icon": "$.Icon"
},
"id": "PrevNextTile",
"selectable": true,
"pressable": true,
"actions": {
"accept": {
"sm:submit-search-request": {
"restore-last-filterset": true,
"load-async": {
"from": {
"url": "contractsearchpaginate",
"args": {
"page": "0",
"sorting": ""
}
},
"post-load-action": {
"set-child-selected": {
"target": "search_results_container",
"selectdirection": "$.PageDirection"
}
},
"target": "search_results_container",
"page": "$.Data.Page",
"pagedirection": "$.PageDirection",
"showloadingindicator": true,
"blocksinput": true
}
}
}
}
}
}
},
"$else": {
"selectable": false,
"pressable": false,
"nrows": 0,
"ncols": 0
}
}
}
]
}
},
"$else": {
"id": "search_results_container",
"view": "menu3.basic.DefaultNoContentHeader",
"selectable": true,
"pressable": false,
"data": {
"header": "",
"title": {
"$switch $.Data.ErrorReason": [
{
"case": "privacyrestricted",
"return": "$loc UI_DIALOG_CONTRACT_SEARCH_PRIVACY_RESTRICTED"
},
{
"default": "$loc UI_SEARCH_PAGE_NO_CONTRACTS_FOUND"
}
]
},
"multilinetitle": false,
"typeicon": {
"$if $.Icon": { "$then": "$.Icon", "$else": "info" }
}
},
"actions": {
"select": [
{
"set-selected": {
"target": "returned_filter_container"
},
"set-selectable": {
"target": "search_results_container",
"value": false
}
},
{
"$if": {
"$condition": {
"$or": [
"$eqs ($.Data.ErrorReason,privacyrestricted)",
"$eqs ($.Data.ErrorReason,privacyrestrictedcreator)"
]
},
"$then": { "show-platform-ugc-dialog": {} }
}
}
]
}
}
}
}