diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..d967053 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,8 @@ +{ + "permissions": { + "allow": [ + "mcp__claude_ai_Atlassian__getConfluencePage", + "Bash(squaredup status)" + ] + } +} diff --git a/.gitignore b/.gitignore index 43ec304..1586d9e 100644 --- a/.gitignore +++ b/.gitignore @@ -79,6 +79,7 @@ logs/ .env .env.* *.local.json +CLAUDE.local.md ############################################ diff --git a/plugins/FantasyPremierLeague/v1/configValidation.json b/plugins/FantasyPremierLeague/v1/configValidation.json new file mode 100644 index 0000000..b84ab41 --- /dev/null +++ b/plugins/FantasyPremierLeague/v1/configValidation.json @@ -0,0 +1,11 @@ +{ + "steps": [ + { + "displayName": "FPL Manager ID", + "dataStream": { "name": "managerInformation" }, + "success": "Successfully connected to FPL", + "error": "Can't find this FPL Manager ID — check the URL on the FPL website", + "required": true + } + ] +} diff --git a/plugins/FantasyPremierLeague/v1/cspell.json b/plugins/FantasyPremierLeague/v1/cspell.json index 831ea67..ff77acf 100644 --- a/plugins/FantasyPremierLeague/v1/cspell.json +++ b/plugins/FantasyPremierLeague/v1/cspell.json @@ -1,6 +1,8 @@ { "words": [ "FPL", - "Gameweek" + "Gameweek", + "bboost", + "freehit" ] } diff --git a/plugins/FantasyPremierLeague/v1/custom_types.json b/plugins/FantasyPremierLeague/v1/custom_types.json new file mode 100644 index 0000000..ec6bbfb --- /dev/null +++ b/plugins/FantasyPremierLeague/v1/custom_types.json @@ -0,0 +1,23 @@ +[ + { + "name": "FPL Gameweek", + "sourceType": "fpl-gameweek", + "icon": "calendar", + "singular": "Gameweek", + "plural": "Gameweeks" + }, + { + "name": "FPL Classic League", + "sourceType": "fpl-classic-league", + "icon": "trophy", + "singular": "Classic League", + "plural": "Classic Leagues" + }, + { + "name": "FPL H2H League", + "sourceType": "fpl-h2h-league", + "icon": "swords", + "singular": "H2H League", + "plural": "H2H Leagues" + } +] diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json b/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json new file mode 100644 index 0000000..5815c50 --- /dev/null +++ b/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json @@ -0,0 +1,66 @@ +{ + "name": "classicLeagues", + "displayName": "Classic Leagues", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "expandInnerObjects": false, + "endpointPath": "entry/{{datasource.userID}}", + "pathToData": "leagues.classic", + "getArgs": [], + "headers": [] + }, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "id", + "displayName": "League ID", + "role": "value" + }, + { + "name": "name", + "displayName": "League Name", + "role": "label" + }, + { + "name": "short_name", + "displayName": "Short Name" + }, + { + "name": "league_type", + "displayName": "League Type" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "entry_rank", + "displayName": "Current Rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "entry_last_rank", + "displayName": "Last Rank" + } + ], + "timeframes": false, + "matches": "none", + "tags": ["Leagues"], + "visibility": { + "type": "hidden" + } +} diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json b/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json index 9955ff1..3af8eb5 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json @@ -5,7 +5,7 @@ "httpMethod": "get", "expandInnerObjects": true, "endpointPath": "bootstrap-static", - "pathToData": "events", + "postRequestScript": "gameweekData.js", "getArgs": [], "headers": [] }, @@ -53,44 +53,44 @@ "name": "average_entry_score" }, { - "displayName": "BB chip played", + "displayName": "BB Chip Played", "shape": [ "number", { "decimalPlaces": 0 } ], - "name": "chip_plays.0.num_played" + "name": "chip_plays.bboost" }, { - "displayName": "TC chip played", + "displayName": "TC Chip Played", "shape": [ "number", { - "decimalPlaces": 2 + "decimalPlaces": 0 } ], - "name": "chip_plays.1.num_played" + "name": "chip_plays.3xc" }, { - "displayName": "Free Hit played", + "displayName": "Wildcard Chip Played", "shape": [ "number", { "decimalPlaces": 0 } ], - "name": "chip_plays.3.num_played" + "name": "chip_plays.wildcard" }, { - "displayName": "Wildcard chip played", + "displayName": "Free Hit Chip Played", "shape": [ "number", { "decimalPlaces": 0 } ], - "name": "chip_plays.2.num_played" + "name": "chip_plays.freehit" }, { "shape": [ @@ -119,10 +119,6 @@ ], "name": "most_vice_captained" }, - { - "displayName": "TC chip played", - "name": "chip_plays.3.chip_name" - }, { "shape": [ "number", @@ -135,5 +131,6 @@ ], "displayName": "Gameweek Data", "baseDataSourceName": "httpRequestUnscoped", - "matches": "none" + "matches": "none", + "tags": ["Game info"] } \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagueSummary.json b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagueSummary.json new file mode 100644 index 0000000..6d07bde --- /dev/null +++ b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagueSummary.json @@ -0,0 +1,134 @@ +{ + "timeframes": false, + "name": "h2hLeagueSummary", + "config": { + "httpMethod": "get", + "expandInnerObjects": true, + "endpointPath": "leagues-h2h/{{leagueID}}/standings/", + "pathToData": "standings.results", + "getArgs": [], + "headers": [] + }, + "baseDataSourceName": "httpRequestUnscoped", + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "points_for", + "displayName": "Points For" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "rank", + "expand": [ + { + "compareTo": "last_rank", + "shape": "number", + "comparisonName": "compare1", + "comparisonType": "absolute", + "displayName": "Rank Change" + } + ] + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "last_rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "matches_won", + "displayName": "Won" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "matches_drawn", + "displayName": "Drawn" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "matches_lost", + "displayName": "Lost" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "total", + "displayName": "Total Points" + }, + { + "displayName": "Team Name", + "name": "entry_name" + }, + { + "displayName": "Player Name", + "name": "player_name" + } + ], + "defaultShaping": { + "sort": { + "by": [ + [ + "rank", + "asc" + ] + ] + } + }, + "displayName": "H2H League Summary", + "matches": "none", + "tags": ["Leagues"], + "ui": [ + { + "name": "leagueID", + "label": "H2H League", + "placeholder": "Select an H2H league", + "type": "autocomplete", + "allowCustomValues": false, + "isMulti": false, + "validation": { + "required": true, + "message": "You must select an H2H league" + }, + "data": { + "source": "dataStream", + "dataStreamName": "h2hLeagues", + "dataSourceConfig": {} + } + } + ] +} diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json new file mode 100644 index 0000000..12c6b7e --- /dev/null +++ b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json @@ -0,0 +1,62 @@ +{ + "name": "h2hLeagues", + "displayName": "H2H Leagues", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "expandInnerObjects": false, + "endpointPath": "entry/{{datasource.userID}}", + "pathToData": "leagues.h2h", + "getArgs": [], + "headers": [] + }, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "id", + "displayName": "League ID", + "role": "value" + }, + { + "name": "name", + "displayName": "League Name", + "role": "label" + }, + { + "name": "short_name", + "displayName": "Short Name" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "entry_rank", + "displayName": "Current Rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "entry_last_rank", + "displayName": "Last Rank" + } + ], + "timeframes": false, + "matches": "none", + "tags": ["Leagues"], + "visibility": { + "type": "hidden" + } +} diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json b/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json index 1329c0a..0a57f6b 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json @@ -81,15 +81,23 @@ }, "displayName": "League Summary", "matches": "none", + "tags": ["Leagues"], "ui": [ { "name": "leagueID", - "label": "League ID", - "placeholder": "123456", - "title": "League ID", - "type": "text", + "label": "Classic League", + "placeholder": "Select a classic league", + "type": "autocomplete", + "allowCustomValues": false, + "isMulti": false, "validation": { - "required": true + "required": true, + "message": "You must select a classic league" + }, + "data": { + "source": "dataStream", + "dataStreamName": "classicLeagues", + "dataSourceConfig": {} } } ] diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json b/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json index 5a34150..059b7bd 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json @@ -4,7 +4,7 @@ "config": { "httpMethod": "get", "expandInnerObjects": true, - "endpointPath": "entry/{{userID}}/history", + "endpointPath": "entry/{{datasource.userID}}/history", "pathToData": "past", "getArgs": [], "headers": [] @@ -47,16 +47,5 @@ "displayName": "Manager History", "baseDataSourceName": "httpRequestUnscoped", "matches": "none", - "ui": [ - { - "name": "userID", - "label": "Manager ID", - "placeholder": "123456", - "title": "Manager ID", - "type": "text", - "validation": { - "required": true - } - } - ] + "tags": ["Manager"] } \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json b/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json index 79ff644..de4e7b4 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json @@ -3,12 +3,12 @@ "config": { "httpMethod": "get", "expandInnerObjects": true, - "endpointPath": "entry/{{userID}}", + "endpointPath": "entry/{{datasource.userID}}", "pathToData": "", "getArgs": [], "headers": [] }, - "manualConfigApply": true, + "rowPath": [], "metadata": [ { @@ -105,7 +105,7 @@ "shape": [ "number", { - "decimalPlaces": 2 + "decimalPlaces": 0 } ], "name": "leagues.classic.0.id", @@ -123,16 +123,5 @@ "displayName": "Manager Information", "baseDataSourceName": "httpRequestUnscoped", "matches": "none", - "ui": [ - { - "name": "userID", - "label": "Manager ID", - "placeholder": "123456", - "title": "Manager ID", - "type": "text", - "validation": { - "required": true - } - } - ] + "tags": ["Manager"] } \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json b/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json index cafdc5c..a53032e 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json @@ -100,12 +100,13 @@ "displayName": "Manager Summary", "baseDataSourceName": "httpRequestUnscoped", "matches": "none", + "tags": ["Manager"], "ui": [ { "name": "userID", "label": "Manager ID", - "placeholder": "123456", "type": "text", + "placeholder": "Enter manager ID e.g. 1234567", "validation": { "required": true } diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/scripts/gameweekData.js b/plugins/FantasyPremierLeague/v1/dataStreams/scripts/gameweekData.js new file mode 100644 index 0000000..83bef53 --- /dev/null +++ b/plugins/FantasyPremierLeague/v1/dataStreams/scripts/gameweekData.js @@ -0,0 +1,7 @@ +result = data.events.map(function (event) { + var chipMap = {}; + (event.chip_plays || []).forEach(function (chip) { + chipMap[chip.chip_name] = chip.num_played; + }); + return Object.assign({}, event, { chip_plays: chipMap }); +}); diff --git a/plugins/FantasyPremierLeague/v1/indexDefinitions/default.json b/plugins/FantasyPremierLeague/v1/indexDefinitions/default.json new file mode 100644 index 0000000..ea02b0e --- /dev/null +++ b/plugins/FantasyPremierLeague/v1/indexDefinitions/default.json @@ -0,0 +1,59 @@ +{ + "steps": [ + { + "name": "Gameweeks", + "dataStream": { + "name": "gameweekData" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "name", + "type": { "value": "fpl-gameweek" }, + "properties": [ + "deadline_time", + "highest_score", + "average_entry_score", + "transfers_made" + ] + } + }, + { + "name": "Classic Leagues", + "dataStream": { + "name": "classicLeagues" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "name", + "type": { "value": "fpl-classic-league" }, + "properties": [ + { "leagueId": "id" }, + "short_name", + "league_type", + { "currentRank": "entry_rank" }, + { "lastRank": "entry_last_rank" } + ] + } + }, + { + "name": "H2H Leagues", + "dataStream": { + "name": "h2hLeagues" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "name", + "type": { "value": "fpl-h2h-league" }, + "properties": [ + { "leagueId": "id" }, + "short_name", + { "currentRank": "entry_rank" }, + { "lastRank": "entry_last_rank" } + ] + } + } + ] +} diff --git a/plugins/FantasyPremierLeague/v1/metadata.json b/plugins/FantasyPremierLeague/v1/metadata.json index 4f2031c..1d7c37c 100644 --- a/plugins/FantasyPremierLeague/v1/metadata.json +++ b/plugins/FantasyPremierLeague/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "fantasy-premier-league", "displayName": "Fantasy Premier League", - "version": "1.0.2", + "version": "1.0.3", "author": { "name": "@TimWheeler-SQUP", "type": "community" @@ -10,7 +10,7 @@ "category": "Fun", "type": "cloud", "restrictedToPlatforms": [], - "importNotSupported": true, + "importNotSupported": false, "schemaVersion": "2.0", "base": { "plugin": "WebAPI", @@ -20,6 +20,7 @@ "baseUrl": "https://fantasy.premierleague.com/api" } }, + "keywords": ["FPL", "Fantasy", "Premier League", "Football"], "links": [ { "category": "source", diff --git a/plugins/FantasyPremierLeague/v1/ui.json b/plugins/FantasyPremierLeague/v1/ui.json index 0637a08..c754759 100644 --- a/plugins/FantasyPremierLeague/v1/ui.json +++ b/plugins/FantasyPremierLeague/v1/ui.json @@ -1 +1,12 @@ -[] \ No newline at end of file +[ + { + "type": "text", + "name": "userID", + "label": "FPL Manager ID", + "help": "Your FPL Manager ID — found in the URL when viewing your team on the FPL website (e.g. https://fantasy.premierleague.com/entry/**123456**/event/1)", + "validation": { + "required": true + }, + "placeholder": "Enter manager ID e.g. 1234567" + } +] diff --git a/plugins/FantasyPremierLeague/v2/configValidation.json b/plugins/FantasyPremierLeague/v2/configValidation.json new file mode 100644 index 0000000..b84ab41 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/configValidation.json @@ -0,0 +1,11 @@ +{ + "steps": [ + { + "displayName": "FPL Manager ID", + "dataStream": { "name": "managerInformation" }, + "success": "Successfully connected to FPL", + "error": "Can't find this FPL Manager ID — check the URL on the FPL website", + "required": true + } + ] +} diff --git a/plugins/FantasyPremierLeague/v2/cspell.json b/plugins/FantasyPremierLeague/v2/cspell.json new file mode 100644 index 0000000..c2cec06 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/cspell.json @@ -0,0 +1,9 @@ +{ + "words": [ + "FPL", + "Gameweek", + "bboost", + "freehit", + "favourite" + ] +} diff --git a/plugins/FantasyPremierLeague/v2/custom_types.json b/plugins/FantasyPremierLeague/v2/custom_types.json new file mode 100644 index 0000000..ec6bbfb --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/custom_types.json @@ -0,0 +1,23 @@ +[ + { + "name": "FPL Gameweek", + "sourceType": "fpl-gameweek", + "icon": "calendar", + "singular": "Gameweek", + "plural": "Gameweeks" + }, + { + "name": "FPL Classic League", + "sourceType": "fpl-classic-league", + "icon": "trophy", + "singular": "Classic League", + "plural": "Classic Leagues" + }, + { + "name": "FPL H2H League", + "sourceType": "fpl-h2h-league", + "icon": "swords", + "singular": "H2H League", + "plural": "H2H Leagues" + } +] diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/classicLeagues.json b/plugins/FantasyPremierLeague/v2/dataStreams/classicLeagues.json new file mode 100644 index 0000000..9dd619f --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/classicLeagues.json @@ -0,0 +1,65 @@ +{ + "name": "classicLeagues", + "displayName": "Classic Leagues", + "hidden": true, + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "expandInnerObjects": false, + "endpointPath": "entry/{{dataSource.userID}}", + "pathToData": "leagues.classic", + "getArgs": [], + "headers": [] + }, + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "id", + "displayName": "League ID", + "role": "value" + }, + { + "name": "name", + "displayName": "League Name", + "role": "label" + }, + { + "name": "short_name", + "displayName": "Short Name" + }, + { + "name": "league_type", + "displayName": "League Type" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "entry_rank", + "displayName": "Current Rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "entry_last_rank", + "displayName": "Last Rank" + } + ], + "timeframes": false, + "matches": "none", + "tags": ["Leagues"] +} diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/gameweekData.json b/plugins/FantasyPremierLeague/v2/dataStreams/gameweekData.json new file mode 100644 index 0000000..3af8eb5 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/gameweekData.json @@ -0,0 +1,136 @@ +{ + "timeframes": false, + "name": "gameweekData", + "config": { + "httpMethod": "get", + "expandInnerObjects": true, + "endpointPath": "bootstrap-static", + "postRequestScript": "gameweekData.js", + "getArgs": [], + "headers": [] + }, + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "id" + }, + { + "displayName": "Gameweek", + "name": "name" + }, + { + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ], + "name": "deadline_time" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "highest_score" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "average_entry_score" + }, + { + "displayName": "BB Chip Played", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "chip_plays.bboost" + }, + { + "displayName": "TC Chip Played", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "chip_plays.3xc" + }, + { + "displayName": "Wildcard Chip Played", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "chip_plays.wildcard" + }, + { + "displayName": "Free Hit Chip Played", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "chip_plays.freehit" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "most_transferred_in" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "most_captained" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "most_vice_captained" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "transfers_made" + } + ], + "displayName": "Gameweek Data", + "baseDataSourceName": "httpRequestUnscoped", + "matches": "none", + "tags": ["Game info"] +} \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/h2hLeagueSummary.json b/plugins/FantasyPremierLeague/v2/dataStreams/h2hLeagueSummary.json new file mode 100644 index 0000000..6d07bde --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/h2hLeagueSummary.json @@ -0,0 +1,134 @@ +{ + "timeframes": false, + "name": "h2hLeagueSummary", + "config": { + "httpMethod": "get", + "expandInnerObjects": true, + "endpointPath": "leagues-h2h/{{leagueID}}/standings/", + "pathToData": "standings.results", + "getArgs": [], + "headers": [] + }, + "baseDataSourceName": "httpRequestUnscoped", + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "points_for", + "displayName": "Points For" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "rank", + "expand": [ + { + "compareTo": "last_rank", + "shape": "number", + "comparisonName": "compare1", + "comparisonType": "absolute", + "displayName": "Rank Change" + } + ] + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "last_rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "matches_won", + "displayName": "Won" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "matches_drawn", + "displayName": "Drawn" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "matches_lost", + "displayName": "Lost" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "total", + "displayName": "Total Points" + }, + { + "displayName": "Team Name", + "name": "entry_name" + }, + { + "displayName": "Player Name", + "name": "player_name" + } + ], + "defaultShaping": { + "sort": { + "by": [ + [ + "rank", + "asc" + ] + ] + } + }, + "displayName": "H2H League Summary", + "matches": "none", + "tags": ["Leagues"], + "ui": [ + { + "name": "leagueID", + "label": "H2H League", + "placeholder": "Select an H2H league", + "type": "autocomplete", + "allowCustomValues": false, + "isMulti": false, + "validation": { + "required": true, + "message": "You must select an H2H league" + }, + "data": { + "source": "dataStream", + "dataStreamName": "h2hLeagues", + "dataSourceConfig": {} + } + } + ] +} diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/h2hLeagues.json b/plugins/FantasyPremierLeague/v2/dataStreams/h2hLeagues.json new file mode 100644 index 0000000..ad228f8 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/h2hLeagues.json @@ -0,0 +1,60 @@ +{ + "name": "h2hLeagues", + "displayName": "H2H Leagues", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "expandInnerObjects": false, + "endpointPath": "entry/{{dataSource.userID}}", + "pathToData": "leagues.h2h", + "getArgs": [], + "headers": [] + }, + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "id", + "displayName": "League ID", + "role": "value" + }, + { + "name": "name", + "displayName": "League Name", + "role": "label" + }, + { + "name": "short_name", + "displayName": "Short Name" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "entry_rank", + "displayName": "Current Rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "entry_last_rank", + "displayName": "Last Rank" + } + ], + "timeframes": false, + "matches": "none", + "tags": ["Leagues"] +} diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/leagueSummary.json b/plugins/FantasyPremierLeague/v2/dataStreams/leagueSummary.json new file mode 100644 index 0000000..3b32481 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/leagueSummary.json @@ -0,0 +1,91 @@ +{ + "timeframes": false, + "name": "leagueSummary", + "config": { + "httpMethod": "get", + "expandInnerObjects": true, + "endpointPath": "leagues-classic/{{objects[0].leagueId}}/standings/", + "pathToData": "standings.results", + "getArgs": [], + "headers": [] + }, + "baseDataSourceName": "httpRequestScopedSingle", + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "event_total", + "displayName": "Weekly Points" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "rank", + "expand": [ + { + "compareTo": "last_rank", + "shape": "number", + "comparisonName": "compare1", + "comparisonType": "absolute", + "displayName": "Rank Change" + } + ] + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "last_rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "total", + "displayName": "Total Points" + }, + { + "displayName": "Team Name", + "name": "entry_name" + }, + { + "displayName": "Player Name", + "name": "player_name" + }, + { + "name": "sourceId", + "displayName": "Object ID", + "shape": "string", + "visible": false + } + ], + "defaultShaping": { + "sort": { + "by": [ + [ + "rank", + "asc" + ] + ] + } + }, + "displayName": "League Summary", + "matches": { "sourceType": "fpl-classic-league" }, + "tags": ["Leagues"] +} \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/managerHistory.json b/plugins/FantasyPremierLeague/v2/dataStreams/managerHistory.json new file mode 100644 index 0000000..bc9c85a --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/managerHistory.json @@ -0,0 +1,51 @@ +{ + "timeframes": false, + "name": "managerHistory", + "config": { + "httpMethod": "get", + "expandInnerObjects": true, + "endpointPath": "entry/{{dataSource.userID}}/history", + "pathToData": "past", + "getArgs": [], + "headers": [] + }, + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "total_points" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "rank" + }, + { + "pattern": ".*" + } + ], + "defaultShaping": { + "sort": { + "by": [ + [ + "season_name", + "asc" + ] + ] + } + }, + "displayName": "Manager History", + "baseDataSourceName": "httpRequestUnscoped", + "matches": "none", + "tags": ["Manager"] +} \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/managerInformation.json b/plugins/FantasyPremierLeague/v2/dataStreams/managerInformation.json new file mode 100644 index 0000000..c084da2 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/managerInformation.json @@ -0,0 +1,142 @@ +{ + "name": "managerInformation", + "config": { + "httpMethod": "get", + "expandInnerObjects": true, + "endpointPath": "entry/{{dataSource.userID}}", + "pathToData": "", + "postRequestScript": "managerInformation.js", + "getArgs": [], + "headers": [] + }, + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": "string", + "name": "id", + "displayName": "Manager ID" + }, + { + "name": "name", + "displayName": "Team Name" + }, + { + "name": "player_first_name", + "displayName": "First Name" + }, + { + "name": "player_last_name", + "displayName": "Last Name" + }, + { + "name": "player_region_name", + "displayName": "Country" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "favourite_team", + "displayName": "Favourite Team" + }, + { + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ], + "name": "joined_time", + "displayName": "Joined Date" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "years_active", + "displayName": "Years Playing" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "current_event", + "displayName": "Current Gameweek" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "summary_overall_points", + "displayName": "Overall Points" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "summary_overall_rank", + "displayName": "Overall Rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "summary_event_points", + "displayName": "GW Points" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "summary_event_rank", + "displayName": "GW Rank" + }, + { + "shape": "string", + "name": "bank", + "displayName": "Transfer Budget" + }, + { + "shape": "string", + "name": "value", + "displayName": "Squad Value" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "total_transfers", + "displayName": "Total Transfers" + } + ], + "timeframes": false, + "displayName": "Manager Information", + "baseDataSourceName": "httpRequestUnscoped", + "matches": "none", + "tags": ["Manager"] +} diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/managerSummary.json b/plugins/FantasyPremierLeague/v2/dataStreams/managerSummary.json new file mode 100644 index 0000000..a1060ee --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/managerSummary.json @@ -0,0 +1,104 @@ +{ + "timeframes": false, + "name": "managerSummary", + "config": { + "httpMethod": "get", + "expandInnerObjects": true, + "endpointPath": "entry/{{dataSource.userID}}/history/", + "pathToData": "current", + "getArgs": [], + "headers": [] + }, + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 2 + } + ], + "name": "bank" + }, + { + "displayName": "Transfers", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "event_transfers" + }, + { + "displayName": "Transfer Cost", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "event_transfers_cost" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "overall_rank" + }, + { + "shape": "percent", + "name": "percentile_rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "points_on_bench" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "total_points" + }, + { + "formatExpression": "{{ $['value']/10 }}", + "name": "value" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "points", + "displayName": "Weekly Points" + }, + { + "displayName": "Week", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "event" + } + ], + "displayName": "Manager Summary", + "baseDataSourceName": "httpRequestUnscoped", + "matches": "none", + "tags": ["Manager"] +} diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/scripts/gameweekData.js b/plugins/FantasyPremierLeague/v2/dataStreams/scripts/gameweekData.js new file mode 100644 index 0000000..83bef53 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/scripts/gameweekData.js @@ -0,0 +1,7 @@ +result = data.events.map(function (event) { + var chipMap = {}; + (event.chip_plays || []).forEach(function (chip) { + chipMap[chip.chip_name] = chip.num_played; + }); + return Object.assign({}, event, { chip_plays: chipMap }); +}); diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/scripts/managerInformation.js b/plugins/FantasyPremierLeague/v2/dataStreams/scripts/managerInformation.js new file mode 100644 index 0000000..b71ea47 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/scripts/managerInformation.js @@ -0,0 +1,4 @@ +result = [Object.assign({}, data, { + bank: typeof data.bank === 'number' ? '£' + (data.bank / 10).toFixed(1) + 'M' : data.bank, + value: typeof data.value === 'number' ? '£' + (data.value / 10).toFixed(1) + 'M' : data.value +})]; diff --git a/plugins/FantasyPremierLeague/v2/defaultContent/fplSummary.dash.json b/plugins/FantasyPremierLeague/v2/defaultContent/fplSummary.dash.json new file mode 100644 index 0000000..b414b4b --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/defaultContent/fplSummary.dash.json @@ -0,0 +1,1094 @@ +{ + "name": "FPL Summary", + "schemaVersion": "1.4", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 3, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "0269ec38-dc97-41b8-b060-4c2884721154", + "z": 0, + "config": { + "dataStream": { + "name": "managerInformation", + "dataSourceConfig": { + "userID": "3510322" + }, + "id": "{{dataStreams.managerInformation}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Manager Information", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "hiddenColumns": [ + "started_event", + "favourite_team", + "player_region_id", + "player_region_iso_code_short", + "player_region_iso_code_long", + "leagues.classic.0.id", + "leagues.classic.0.short_name", + "leagues.classic.0.created", + "leagues.classic.0.closed", + "leagues.classic.0.rank", + "leagues.classic.0.max_entries", + "leagues.classic.0.league_type", + "leagues.classic.0.scoring", + "leagues.classic.0.admin_entry", + "leagues.classic.0.start_event", + "leagues.classic.0.entry_can_leave", + "leagues.classic.0.entry_can_admin", + "leagues.classic.0.entry_can_invite", + "leagues.classic.0.has_cup", + "leagues.classic.0.cup_league", + "leagues.classic.0.cup_qualified", + "leagues.classic.0.rank_count", + "leagues.classic.0.entry_percentile_rank", + "leagues.classic.0.active_phases.0.phase", + "leagues.classic.0.active_phases.0.rank", + "leagues.classic.0.active_phases.0.last_rank", + "leagues.classic.0.active_phases.0.rank_sort", + "leagues.classic.0.active_phases.0.total", + "leagues.classic.0.active_phases.0.league_id", + "leagues.classic.0.active_phases.0.rank_count", + "leagues.classic.0.active_phases.0.entry_percentile_rank", + "leagues.classic.0.active_phases.1.phase", + "leagues.classic.0.active_phases.1.rank", + "leagues.classic.0.active_phases.1.last_rank", + "leagues.classic.0.active_phases.1.rank_sort", + "leagues.classic.0.active_phases.1.total", + "leagues.classic.0.active_phases.1.league_id", + "leagues.classic.0.active_phases.1.rank_count", + "leagues.classic.0.active_phases.1.entry_percentile_rank", + "leagues.classic.0.entry_rank", + "leagues.classic.0.entry_last_rank", + "leagues.classic.1.id", + "leagues.classic.1.name", + "leagues.classic.1.short_name", + "leagues.classic.1.created", + "leagues.classic.1.closed", + "leagues.classic.1.rank", + "leagues.classic.1.max_entries", + "leagues.classic.1.league_type", + "leagues.classic.1.scoring", + "leagues.classic.1.admin_entry", + "leagues.classic.1.start_event", + "leagues.classic.1.entry_can_leave", + "leagues.classic.1.entry_can_admin", + "leagues.classic.1.entry_can_invite", + "leagues.classic.1.has_cup", + "leagues.classic.1.cup_league", + "leagues.classic.1.cup_qualified", + "leagues.classic.1.rank_count", + "leagues.classic.1.entry_percentile_rank", + "leagues.classic.1.active_phases.0.phase", + "leagues.classic.1.active_phases.0.rank", + "leagues.classic.1.active_phases.0.last_rank", + "leagues.classic.1.active_phases.0.rank_sort", + "leagues.classic.1.active_phases.0.total", + "leagues.classic.1.active_phases.0.league_id", + "leagues.classic.1.active_phases.0.rank_count", + "leagues.classic.1.active_phases.0.entry_percentile_rank", + "leagues.classic.1.active_phases.1.phase", + "leagues.classic.1.active_phases.1.rank", + "leagues.classic.1.active_phases.1.last_rank", + "leagues.classic.1.active_phases.1.rank_sort", + "leagues.classic.1.active_phases.1.total", + "leagues.classic.1.active_phases.1.league_id", + "leagues.classic.1.active_phases.1.rank_count", + "leagues.classic.1.active_phases.1.entry_percentile_rank", + "leagues.classic.1.entry_rank", + "leagues.classic.1.entry_last_rank", + "leagues.classic.2.id", + "leagues.classic.2.name", + "leagues.classic.2.short_name", + "leagues.classic.2.created", + "leagues.classic.2.closed", + "leagues.classic.2.rank", + "leagues.classic.2.max_entries", + "leagues.classic.2.league_type", + "leagues.classic.2.scoring", + "leagues.classic.2.admin_entry", + "leagues.classic.2.start_event", + "leagues.classic.2.entry_can_leave", + "leagues.classic.2.entry_can_admin", + "leagues.classic.2.entry_can_invite", + "leagues.classic.2.has_cup", + "leagues.classic.2.cup_league", + "leagues.classic.2.cup_qualified", + "leagues.classic.2.rank_count", + "leagues.classic.2.entry_percentile_rank", + "leagues.classic.2.active_phases.0.phase", + "leagues.classic.2.active_phases.0.rank", + "leagues.classic.2.active_phases.0.last_rank", + "leagues.classic.2.active_phases.0.rank_sort", + "leagues.classic.2.active_phases.0.total", + "leagues.classic.2.active_phases.0.league_id", + "leagues.classic.2.active_phases.0.rank_count", + "leagues.classic.2.active_phases.0.entry_percentile_rank", + "leagues.classic.2.active_phases.1.phase", + "leagues.classic.2.active_phases.1.rank", + "leagues.classic.2.active_phases.1.last_rank", + "leagues.classic.2.active_phases.1.rank_sort", + "leagues.classic.2.active_phases.1.total", + "leagues.classic.2.active_phases.1.league_id", + "leagues.classic.2.active_phases.1.rank_count", + "leagues.classic.2.active_phases.1.entry_percentile_rank", + "leagues.classic.2.entry_rank", + "leagues.classic.2.entry_last_rank", + "leagues.classic.3.id", + "leagues.classic.3.name", + "leagues.classic.3.short_name", + "leagues.classic.3.created", + "leagues.classic.3.closed", + "leagues.classic.3.rank", + "leagues.classic.3.max_entries", + "leagues.classic.3.league_type", + "leagues.classic.3.scoring", + "leagues.classic.3.admin_entry", + "leagues.classic.3.start_event", + "leagues.classic.3.entry_can_leave", + "leagues.classic.3.entry_can_admin", + "leagues.classic.3.entry_can_invite", + "leagues.classic.3.has_cup", + "leagues.classic.3.cup_league", + "leagues.classic.3.cup_qualified", + "leagues.classic.3.rank_count", + "leagues.classic.3.entry_percentile_rank", + "leagues.classic.3.active_phases.0.phase", + "leagues.classic.3.active_phases.0.rank", + "leagues.classic.3.active_phases.0.last_rank", + "leagues.classic.3.active_phases.0.rank_sort", + "leagues.classic.3.active_phases.0.total", + "leagues.classic.3.active_phases.0.league_id", + "leagues.classic.3.active_phases.0.rank_count", + "leagues.classic.3.active_phases.0.entry_percentile_rank", + "leagues.classic.3.active_phases.1.phase", + "leagues.classic.3.active_phases.1.rank", + "leagues.classic.3.active_phases.1.last_rank", + "leagues.classic.3.active_phases.1.rank_sort", + "leagues.classic.3.active_phases.1.total", + "leagues.classic.3.active_phases.1.league_id", + "leagues.classic.3.active_phases.1.rank_count", + "leagues.classic.3.active_phases.1.entry_percentile_rank", + "leagues.classic.3.entry_rank", + "leagues.classic.3.entry_last_rank", + "leagues.classic.4.id", + "leagues.classic.4.name", + "leagues.classic.4.short_name", + "leagues.classic.4.created", + "leagues.classic.4.closed", + "leagues.classic.4.rank", + "leagues.classic.4.max_entries", + "leagues.classic.4.league_type", + "leagues.classic.4.scoring", + "leagues.classic.4.admin_entry", + "leagues.classic.4.start_event", + "leagues.classic.4.entry_can_leave", + "leagues.classic.4.entry_can_admin", + "leagues.classic.4.entry_can_invite", + "leagues.classic.4.has_cup", + "leagues.classic.4.cup_league", + "leagues.classic.4.cup_qualified", + "leagues.classic.4.rank_count", + "leagues.classic.4.entry_percentile_rank", + "leagues.classic.4.active_phases.0.phase", + "leagues.classic.4.active_phases.0.rank", + "leagues.classic.4.active_phases.0.last_rank", + "leagues.classic.4.active_phases.0.rank_sort", + "leagues.classic.4.active_phases.0.total", + "leagues.classic.4.active_phases.0.league_id", + "leagues.classic.4.active_phases.0.rank_count", + "leagues.classic.4.active_phases.0.entry_percentile_rank", + "leagues.classic.4.active_phases.1.phase", + "leagues.classic.4.active_phases.1.rank", + "leagues.classic.4.active_phases.1.last_rank", + "leagues.classic.4.active_phases.1.rank_sort", + "leagues.classic.4.active_phases.1.total", + "leagues.classic.4.active_phases.1.league_id", + "leagues.classic.4.active_phases.1.rank_count", + "leagues.classic.4.active_phases.1.entry_percentile_rank", + "leagues.classic.4.entry_rank", + "leagues.classic.4.entry_last_rank", + "leagues.classic.5.id", + "leagues.classic.5.name", + "leagues.classic.5.short_name", + "leagues.classic.5.created", + "leagues.classic.5.closed", + "leagues.classic.5.rank", + "leagues.classic.5.max_entries", + "leagues.classic.5.league_type", + "leagues.classic.5.scoring", + "leagues.classic.5.admin_entry", + "leagues.classic.5.start_event", + "leagues.classic.5.entry_can_leave", + "leagues.classic.5.entry_can_admin", + "leagues.classic.5.entry_can_invite", + "leagues.classic.5.has_cup", + "leagues.classic.5.cup_league", + "leagues.classic.5.cup_qualified", + "leagues.classic.5.rank_count", + "leagues.classic.5.entry_percentile_rank", + "leagues.classic.5.active_phases.0.phase", + "leagues.classic.5.active_phases.0.rank", + "leagues.classic.5.active_phases.0.last_rank", + "leagues.classic.5.active_phases.0.rank_sort", + "leagues.classic.5.active_phases.0.total", + "leagues.classic.5.active_phases.0.league_id", + "leagues.classic.5.active_phases.0.rank_count", + "leagues.classic.5.active_phases.0.entry_percentile_rank", + "leagues.classic.5.active_phases.1.phase", + "leagues.classic.5.active_phases.1.rank", + "leagues.classic.5.active_phases.1.last_rank", + "leagues.classic.5.active_phases.1.rank_sort", + "leagues.classic.5.active_phases.1.total", + "leagues.classic.5.active_phases.1.league_id", + "leagues.classic.5.active_phases.1.rank_count", + "leagues.classic.5.active_phases.1.entry_percentile_rank", + "leagues.classic.5.entry_rank", + "leagues.classic.5.entry_last_rank", + "leagues.classic.6.id", + "leagues.classic.6.name", + "leagues.classic.6.short_name", + "leagues.classic.6.created", + "leagues.classic.6.closed", + "leagues.classic.6.rank", + "leagues.classic.6.max_entries", + "leagues.classic.6.league_type", + "leagues.classic.6.scoring", + "leagues.classic.6.admin_entry", + "leagues.classic.6.start_event", + "leagues.classic.6.entry_can_leave", + "leagues.classic.6.entry_can_admin", + "leagues.classic.6.entry_can_invite", + "leagues.classic.6.has_cup", + "leagues.classic.6.cup_league", + "leagues.classic.6.cup_qualified", + "leagues.classic.6.rank_count", + "leagues.classic.6.entry_percentile_rank", + "leagues.classic.6.active_phases.0.phase", + "leagues.classic.6.active_phases.0.rank", + "leagues.classic.6.active_phases.0.last_rank", + "leagues.classic.6.active_phases.0.rank_sort", + "leagues.classic.6.active_phases.0.total", + "leagues.classic.6.active_phases.0.league_id", + "leagues.classic.6.active_phases.0.rank_count", + "leagues.classic.6.active_phases.0.entry_percentile_rank", + "leagues.classic.6.active_phases.1.phase", + "leagues.classic.6.active_phases.1.rank", + "leagues.classic.6.active_phases.1.last_rank", + "leagues.classic.6.active_phases.1.rank_sort", + "leagues.classic.6.active_phases.1.total", + "leagues.classic.6.active_phases.1.league_id", + "leagues.classic.6.active_phases.1.rank_count", + "leagues.classic.6.active_phases.1.entry_percentile_rank", + "leagues.classic.6.entry_rank", + "leagues.classic.6.entry_last_rank", + "leagues.classic.7.id", + "leagues.classic.7.name", + "leagues.classic.7.short_name", + "leagues.classic.7.created", + "leagues.classic.7.closed", + "leagues.classic.7.rank", + "leagues.classic.7.max_entries", + "leagues.classic.7.league_type", + "leagues.classic.7.scoring", + "leagues.classic.7.admin_entry", + "leagues.classic.7.start_event", + "leagues.classic.7.entry_can_leave", + "leagues.classic.7.entry_can_admin", + "leagues.classic.7.entry_can_invite", + "leagues.classic.7.has_cup", + "leagues.classic.7.cup_league", + "leagues.classic.7.cup_qualified", + "leagues.classic.7.rank_count", + "leagues.classic.7.entry_percentile_rank", + "leagues.classic.7.active_phases.0.phase", + "leagues.classic.7.active_phases.0.rank", + "leagues.classic.7.active_phases.0.last_rank", + "leagues.classic.7.active_phases.0.rank_sort", + "leagues.classic.7.active_phases.0.total", + "leagues.classic.7.active_phases.0.league_id", + "leagues.classic.7.active_phases.0.rank_count", + "leagues.classic.7.active_phases.0.entry_percentile_rank", + "leagues.classic.7.active_phases.1.phase", + "leagues.classic.7.active_phases.1.rank", + "leagues.classic.7.active_phases.1.last_rank", + "leagues.classic.7.active_phases.1.rank_sort", + "leagues.classic.7.active_phases.1.total", + "leagues.classic.7.active_phases.1.league_id", + "leagues.classic.7.active_phases.1.rank_count", + "leagues.classic.7.active_phases.1.entry_percentile_rank", + "leagues.classic.7.entry_rank", + "leagues.classic.7.entry_last_rank", + "leagues.classic.8.id", + "leagues.classic.8.name", + "leagues.classic.8.short_name", + "leagues.classic.8.created", + "leagues.classic.8.closed", + "leagues.classic.8.rank", + "leagues.classic.8.max_entries", + "leagues.classic.8.league_type", + "leagues.classic.8.scoring", + "leagues.classic.8.admin_entry", + "leagues.classic.8.start_event", + "leagues.classic.8.entry_can_leave", + "leagues.classic.8.entry_can_admin", + "leagues.classic.8.entry_can_invite", + "leagues.classic.8.has_cup", + "leagues.classic.8.cup_league", + "leagues.classic.8.cup_qualified", + "leagues.classic.8.rank_count", + "leagues.classic.8.entry_percentile_rank", + "leagues.classic.8.active_phases.0.phase", + "leagues.classic.8.active_phases.0.rank", + "leagues.classic.8.active_phases.0.last_rank", + "leagues.classic.8.active_phases.0.rank_sort", + "leagues.classic.8.active_phases.0.total", + "leagues.classic.8.active_phases.0.league_id", + "leagues.classic.8.active_phases.0.rank_count", + "leagues.classic.8.active_phases.0.entry_percentile_rank", + "leagues.classic.8.active_phases.1.phase", + "leagues.classic.8.active_phases.1.rank", + "leagues.classic.8.active_phases.1.last_rank", + "leagues.classic.8.active_phases.1.rank_sort", + "leagues.classic.8.active_phases.1.total", + "leagues.classic.8.active_phases.1.league_id", + "leagues.classic.8.active_phases.1.rank_count", + "leagues.classic.8.active_phases.1.entry_percentile_rank", + "leagues.classic.8.entry_rank", + "leagues.classic.8.entry_last_rank", + "leagues.classic.9.id", + "leagues.classic.9.name", + "leagues.classic.9.short_name", + "leagues.classic.9.created", + "leagues.classic.9.closed", + "leagues.classic.9.rank", + "leagues.classic.9.max_entries", + "leagues.classic.9.league_type", + "leagues.classic.9.scoring", + "leagues.classic.9.admin_entry", + "leagues.classic.9.start_event", + "leagues.classic.9.entry_can_leave", + "leagues.classic.9.entry_can_admin", + "leagues.classic.9.entry_can_invite", + "leagues.classic.9.has_cup", + "leagues.classic.9.cup_league", + "leagues.classic.9.cup_qualified", + "leagues.classic.9.rank_count", + "leagues.classic.9.entry_percentile_rank", + "leagues.classic.9.active_phases.0.phase", + "leagues.classic.9.active_phases.0.rank", + "leagues.classic.9.active_phases.0.last_rank", + "leagues.classic.9.active_phases.0.rank_sort", + "leagues.classic.9.active_phases.0.total", + "leagues.classic.9.active_phases.0.league_id", + "leagues.classic.9.active_phases.0.rank_count", + "leagues.classic.9.active_phases.0.entry_percentile_rank", + "leagues.classic.9.active_phases.1.phase", + "leagues.classic.9.active_phases.1.rank", + "leagues.classic.9.active_phases.1.last_rank", + "leagues.classic.9.active_phases.1.rank_sort", + "leagues.classic.9.active_phases.1.total", + "leagues.classic.9.active_phases.1.league_id", + "leagues.classic.9.active_phases.1.rank_count", + "leagues.classic.9.active_phases.1.entry_percentile_rank", + "leagues.classic.9.entry_rank", + "leagues.classic.9.entry_last_rank", + "leagues.classic.10.id", + "leagues.classic.10.name", + "leagues.classic.10.short_name", + "leagues.classic.10.created", + "leagues.classic.10.closed", + "leagues.classic.10.rank", + "leagues.classic.10.max_entries", + "leagues.classic.10.league_type", + "leagues.classic.10.scoring", + "leagues.classic.10.admin_entry", + "leagues.classic.10.start_event", + "leagues.classic.10.entry_can_leave", + "leagues.classic.10.entry_can_admin", + "leagues.classic.10.entry_can_invite", + "leagues.classic.10.has_cup", + "leagues.classic.10.cup_league", + "leagues.classic.10.cup_qualified", + "leagues.classic.10.rank_count", + "leagues.classic.10.entry_percentile_rank", + "leagues.classic.10.active_phases.0.phase", + "leagues.classic.10.active_phases.0.rank", + "leagues.classic.10.active_phases.0.last_rank", + "leagues.classic.10.active_phases.0.rank_sort", + "leagues.classic.10.active_phases.0.total", + "leagues.classic.10.active_phases.0.league_id", + "leagues.classic.10.active_phases.0.rank_count", + "leagues.classic.10.active_phases.0.entry_percentile_rank", + "leagues.classic.10.active_phases.1.phase", + "leagues.classic.10.active_phases.1.rank", + "leagues.classic.10.active_phases.1.last_rank", + "leagues.classic.10.active_phases.1.rank_sort", + "leagues.classic.10.active_phases.1.total", + "leagues.classic.10.active_phases.1.league_id", + "leagues.classic.10.active_phases.1.rank_count", + "leagues.classic.10.active_phases.1.entry_percentile_rank", + "leagues.classic.10.entry_rank", + "leagues.classic.10.entry_last_rank", + "leagues.classic.11.id", + "leagues.classic.11.name", + "leagues.classic.11.short_name", + "leagues.classic.11.created", + "leagues.classic.11.closed", + "leagues.classic.11.rank", + "leagues.classic.11.max_entries", + "leagues.classic.11.league_type", + "leagues.classic.11.scoring", + "leagues.classic.11.admin_entry", + "leagues.classic.11.start_event", + "leagues.classic.11.entry_can_leave", + "leagues.classic.11.entry_can_admin", + "leagues.classic.11.entry_can_invite", + "leagues.classic.11.has_cup", + "leagues.classic.11.cup_league", + "leagues.classic.11.cup_qualified", + "leagues.classic.11.rank_count", + "leagues.classic.11.entry_percentile_rank", + "leagues.classic.11.active_phases.0.phase", + "leagues.classic.11.active_phases.0.rank", + "leagues.classic.11.active_phases.0.last_rank", + "leagues.classic.11.active_phases.0.rank_sort", + "leagues.classic.11.active_phases.0.total", + "leagues.classic.11.active_phases.0.league_id", + "leagues.classic.11.active_phases.0.rank_count", + "leagues.classic.11.active_phases.0.entry_percentile_rank", + "leagues.classic.11.active_phases.1.phase", + "leagues.classic.11.active_phases.1.rank", + "leagues.classic.11.active_phases.1.last_rank", + "leagues.classic.11.active_phases.1.rank_sort", + "leagues.classic.11.active_phases.1.total", + "leagues.classic.11.active_phases.1.league_id", + "leagues.classic.11.active_phases.1.rank_count", + "leagues.classic.11.active_phases.1.entry_percentile_rank", + "leagues.classic.11.entry_rank", + "leagues.classic.11.entry_last_rank", + "leagues.classic.12.id", + "leagues.classic.12.name", + "leagues.classic.12.short_name", + "leagues.classic.12.created", + "leagues.classic.12.closed", + "leagues.classic.12.rank", + "leagues.classic.12.max_entries", + "leagues.classic.12.league_type", + "leagues.classic.12.scoring", + "leagues.classic.12.admin_entry", + "leagues.classic.12.start_event", + "leagues.classic.12.entry_can_leave", + "leagues.classic.12.entry_can_admin", + "leagues.classic.12.entry_can_invite", + "leagues.classic.12.has_cup", + "leagues.classic.12.cup_league", + "leagues.classic.12.cup_qualified", + "leagues.classic.12.rank_count", + "leagues.classic.12.entry_percentile_rank", + "leagues.classic.12.active_phases.0.phase", + "leagues.classic.12.active_phases.0.rank", + "leagues.classic.12.active_phases.0.last_rank", + "leagues.classic.12.active_phases.0.rank_sort", + "leagues.classic.12.active_phases.0.total", + "leagues.classic.12.active_phases.0.league_id", + "leagues.classic.12.active_phases.0.rank_count", + "leagues.classic.12.active_phases.0.entry_percentile_rank", + "leagues.classic.12.active_phases.1.phase", + "leagues.classic.12.active_phases.1.rank", + "leagues.classic.12.active_phases.1.last_rank", + "leagues.classic.12.active_phases.1.rank_sort", + "leagues.classic.12.active_phases.1.total", + "leagues.classic.12.active_phases.1.league_id", + "leagues.classic.12.active_phases.1.rank_count", + "leagues.classic.12.active_phases.1.entry_percentile_rank", + "leagues.classic.12.entry_rank", + "leagues.classic.12.entry_last_rank", + "leagues.classic.13.id", + "leagues.classic.13.name", + "leagues.classic.13.short_name", + "leagues.classic.13.created", + "leagues.classic.13.closed", + "leagues.classic.13.rank", + "leagues.classic.13.max_entries", + "leagues.classic.13.league_type", + "leagues.classic.13.scoring", + "leagues.classic.13.admin_entry", + "leagues.classic.13.start_event", + "leagues.classic.13.entry_can_leave", + "leagues.classic.13.entry_can_admin", + "leagues.classic.13.entry_can_invite", + "leagues.classic.13.has_cup", + "leagues.classic.13.cup_league", + "leagues.classic.13.cup_qualified", + "leagues.classic.13.rank_count", + "leagues.classic.13.entry_percentile_rank", + "leagues.classic.13.active_phases.0.phase", + "leagues.classic.13.active_phases.0.rank", + "leagues.classic.13.active_phases.0.last_rank", + "leagues.classic.13.active_phases.0.rank_sort", + "leagues.classic.13.active_phases.0.total", + "leagues.classic.13.active_phases.0.league_id", + "leagues.classic.13.active_phases.0.rank_count", + "leagues.classic.13.active_phases.0.entry_percentile_rank", + "leagues.classic.13.active_phases.1.phase", + "leagues.classic.13.active_phases.1.rank", + "leagues.classic.13.active_phases.1.last_rank", + "leagues.classic.13.active_phases.1.rank_sort", + "leagues.classic.13.active_phases.1.total", + "leagues.classic.13.active_phases.1.league_id", + "leagues.classic.13.active_phases.1.rank_count", + "leagues.classic.13.active_phases.1.entry_percentile_rank", + "leagues.classic.13.entry_rank", + "leagues.classic.13.entry_last_rank", + "leagues.classic.14.id", + "leagues.classic.14.name", + "leagues.classic.14.short_name", + "leagues.classic.14.created", + "leagues.classic.14.closed", + "leagues.classic.14.rank", + "leagues.classic.14.max_entries", + "leagues.classic.14.league_type", + "leagues.classic.14.scoring", + "leagues.classic.14.admin_entry", + "leagues.classic.14.start_event", + "leagues.classic.14.entry_can_leave", + "leagues.classic.14.entry_can_admin", + "leagues.classic.14.entry_can_invite", + "leagues.classic.14.has_cup", + "leagues.classic.14.cup_league", + "leagues.classic.14.cup_qualified", + "leagues.classic.14.rank_count", + "leagues.classic.14.entry_percentile_rank", + "leagues.classic.14.active_phases.0.phase", + "leagues.classic.14.active_phases.0.rank", + "leagues.classic.14.active_phases.0.last_rank", + "leagues.classic.14.active_phases.0.rank_sort", + "leagues.classic.14.active_phases.0.total", + "leagues.classic.14.active_phases.0.league_id", + "leagues.classic.14.active_phases.0.rank_count", + "leagues.classic.14.active_phases.0.entry_percentile_rank", + "leagues.classic.14.active_phases.1.phase", + "leagues.classic.14.active_phases.1.rank", + "leagues.classic.14.active_phases.1.last_rank", + "leagues.classic.14.active_phases.1.rank_sort", + "leagues.classic.14.active_phases.1.total", + "leagues.classic.14.active_phases.1.league_id", + "leagues.classic.14.active_phases.1.rank_count", + "leagues.classic.14.active_phases.1.entry_percentile_rank", + "leagues.classic.14.entry_rank", + "leagues.classic.14.entry_last_rank", + "leagues.classic.15.id", + "leagues.classic.15.name", + "leagues.classic.15.short_name", + "leagues.classic.15.created", + "leagues.classic.15.closed", + "leagues.classic.15.rank", + "leagues.classic.15.max_entries", + "leagues.classic.15.league_type", + "leagues.classic.15.scoring", + "leagues.classic.15.admin_entry", + "leagues.classic.15.start_event", + "leagues.classic.15.entry_can_leave", + "leagues.classic.15.entry_can_admin", + "leagues.classic.15.entry_can_invite", + "leagues.classic.15.has_cup", + "leagues.classic.15.cup_league", + "leagues.classic.15.cup_qualified", + "leagues.classic.15.rank_count", + "leagues.classic.15.entry_percentile_rank", + "leagues.classic.15.active_phases.0.phase", + "leagues.classic.15.active_phases.0.rank", + "leagues.classic.15.active_phases.0.last_rank", + "leagues.classic.15.active_phases.0.rank_sort", + "leagues.classic.15.active_phases.0.total", + "leagues.classic.15.active_phases.0.league_id", + "leagues.classic.15.active_phases.0.rank_count", + "leagues.classic.15.active_phases.0.entry_percentile_rank", + "leagues.classic.15.active_phases.1.phase", + "leagues.classic.15.active_phases.1.rank", + "leagues.classic.15.active_phases.1.last_rank", + "leagues.classic.15.active_phases.1.rank_sort", + "leagues.classic.15.active_phases.1.total", + "leagues.classic.15.active_phases.1.league_id", + "leagues.classic.15.active_phases.1.rank_count", + "leagues.classic.15.active_phases.1.entry_percentile_rank", + "leagues.classic.15.entry_rank", + "leagues.classic.15.entry_last_rank", + "leagues.h2h.0.id", + "leagues.h2h.0.name", + "leagues.h2h.0.short_name", + "leagues.h2h.0.created", + "leagues.h2h.0.closed", + "leagues.h2h.0.rank", + "leagues.h2h.0.max_entries", + "leagues.h2h.0.league_type", + "leagues.h2h.0.scoring", + "leagues.h2h.0.admin_entry", + "leagues.h2h.0.start_event", + "leagues.h2h.0.entry_can_leave", + "leagues.h2h.0.entry_can_admin", + "leagues.h2h.0.entry_can_invite", + "leagues.h2h.0.has_cup", + "leagues.h2h.0.cup_league", + "leagues.h2h.0.cup_qualified", + "leagues.h2h.0.rank_count", + "leagues.h2h.0.entry_percentile_rank", + "leagues.h2h.0.entry_rank", + "leagues.h2h.0.entry_last_rank", + "leagues.h2h.1.id", + "leagues.h2h.1.name", + "leagues.h2h.1.short_name", + "leagues.h2h.1.created", + "leagues.h2h.1.closed", + "leagues.h2h.1.rank", + "leagues.h2h.1.max_entries", + "leagues.h2h.1.league_type", + "leagues.h2h.1.scoring", + "leagues.h2h.1.admin_entry", + "leagues.h2h.1.start_event", + "leagues.h2h.1.entry_can_leave", + "leagues.h2h.1.entry_can_admin", + "leagues.h2h.1.entry_can_invite", + "leagues.h2h.1.has_cup", + "leagues.h2h.1.cup_league", + "leagues.h2h.1.cup_qualified", + "leagues.h2h.1.rank_count", + "leagues.h2h.1.entry_percentile_rank", + "leagues.h2h.1.entry_rank", + "leagues.h2h.1.entry_last_rank", + "leagues.cup.status.qualification_event", + "leagues.cup.status.qualification_numbers", + "leagues.cup.status.qualification_rank", + "leagues.cup.status.qualification_state", + "leagues.cup.cup_league", + "leagues.cup_matches.0.id", + "leagues.cup_matches.0.entry_1_entry", + "leagues.cup_matches.0.entry_1_name", + "leagues.cup_matches.0.entry_1_player_name", + "leagues.cup_matches.0.entry_1_points", + "leagues.cup_matches.0.entry_1_win", + "leagues.cup_matches.0.entry_1_draw", + "leagues.cup_matches.0.entry_1_loss", + "leagues.cup_matches.0.entry_1_total", + "leagues.cup_matches.0.entry_2_entry", + "leagues.cup_matches.0.entry_2_name", + "leagues.cup_matches.0.entry_2_player_name", + "leagues.cup_matches.0.entry_2_points", + "leagues.cup_matches.0.entry_2_win", + "leagues.cup_matches.0.entry_2_draw", + "leagues.cup_matches.0.entry_2_loss", + "leagues.cup_matches.0.entry_2_total", + "leagues.cup_matches.0.is_knockout", + "leagues.cup_matches.0.league", + "leagues.cup_matches.0.winner", + "leagues.cup_matches.0.seed_value", + "leagues.cup_matches.0.event", + "leagues.cup_matches.0.tiebreak", + "leagues.cup_matches.0.is_bye", + "leagues.cup_matches.0.knockout_name", + "leagues.cup_matches.1.id", + "leagues.cup_matches.1.entry_1_entry", + "leagues.cup_matches.1.entry_1_name", + "leagues.cup_matches.1.entry_1_player_name", + "leagues.cup_matches.1.entry_1_points", + "leagues.cup_matches.1.entry_1_win", + "leagues.cup_matches.1.entry_1_draw", + "leagues.cup_matches.1.entry_1_loss", + "leagues.cup_matches.1.entry_1_total", + "leagues.cup_matches.1.entry_2_entry", + "leagues.cup_matches.1.entry_2_name", + "leagues.cup_matches.1.entry_2_player_name", + "leagues.cup_matches.1.entry_2_points", + "leagues.cup_matches.1.entry_2_win", + "leagues.cup_matches.1.entry_2_draw", + "leagues.cup_matches.1.entry_2_loss", + "leagues.cup_matches.1.entry_2_total", + "leagues.cup_matches.1.is_knockout", + "leagues.cup_matches.1.league", + "leagues.cup_matches.1.winner", + "leagues.cup_matches.1.seed_value", + "leagues.cup_matches.1.event", + "leagues.cup_matches.1.tiebreak", + "leagues.cup_matches.1.is_bye", + "leagues.cup_matches.1.knockout_name", + "leagues.cup_matches.2.id", + "leagues.cup_matches.2.entry_1_entry", + "leagues.cup_matches.2.entry_1_name", + "leagues.cup_matches.2.entry_1_player_name", + "leagues.cup_matches.2.entry_1_points", + "leagues.cup_matches.2.entry_1_win", + "leagues.cup_matches.2.entry_1_draw", + "leagues.cup_matches.2.entry_1_loss", + "leagues.cup_matches.2.entry_1_total", + "leagues.cup_matches.2.entry_2_entry", + "leagues.cup_matches.2.entry_2_name", + "leagues.cup_matches.2.entry_2_player_name", + "leagues.cup_matches.2.entry_2_points", + "leagues.cup_matches.2.entry_2_win", + "leagues.cup_matches.2.entry_2_draw", + "leagues.cup_matches.2.entry_2_loss", + "leagues.cup_matches.2.entry_2_total", + "leagues.cup_matches.2.is_knockout", + "leagues.cup_matches.2.league", + "leagues.cup_matches.2.winner", + "leagues.cup_matches.2.seed_value", + "leagues.cup_matches.2.event", + "leagues.cup_matches.2.tiebreak", + "leagues.cup_matches.2.is_bye", + "leagues.cup_matches.2.knockout_name", + "name", + "name_change_blocked", + "entered_events.0", + "entered_events.1", + "entered_events.2", + "entered_events.3", + "entered_events.4", + "entered_events.5", + "entered_events.6", + "entered_events.7", + "entered_events.8", + "entered_events.9", + "entered_events.10", + "entered_events.11", + "entered_events.12", + "entered_events.13", + "entered_events.14", + "entered_events.15", + "entered_events.16", + "kit", + "last_deadline_bank", + "last_deadline_value", + "last_deadline_total_transfers", + "club_badge_src" + ], + "transpose": true, + "columnOrder": [ + "id", + "player_first_name", + "player_last_name", + "leagues.classic.0.name", + "player_region_name", + "joined_time", + "years_active", + "summary_overall_points", + "summary_overall_rank", + "current_event", + "summary_event_points", + "summary_event_rank" + ], + "columnDisplayNames": {} + } + } + } + } + }, + { + "static": false, + "w": 3, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "f82014ea-6c39-49d8-85bb-09c759d0b98c", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "managerHistory", + "dataSourceConfig": { + "userID": "3510322" + }, + "id": "{{dataStreams.managerHistory}}", + "sort": { + "by": [ + [ + "season_name", + "desc" + ] + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "All previous seasons", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Manager History", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "season_name", + "total_points", + "rank" + ], + "hiddenColumns": [] + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 2, + "x": 6, + "y": 0, + "i": "1", + "z": 0, + "config": { + "_type": "tile/image", + "description": "", + "title": "", + "visualisation": { + "config": { + "title": "", + "src": "https://resources.premierleague.com/photos/2020/08/11/0d811107-6d08-4e1c-b9ee-17dab9d065e7/FPL-Statement-Lead.png?width=930&height=620" + } + } + } + }, + { + "static": false, + "w": 5, + "moved": false, + "h": 2, + "x": 3, + "y": 2, + "i": "e8c567cf-74a6-480a-a028-1e2b654e5f89", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "gameweekData", + "id": "{{dataStreams.gameweekData}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "Static data about the current season", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Gameweek Data", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "id", + "deadline_time", + "average_entry_score", + "chip_plays.0.num_played", + "chip_plays.1.chip_name", + "chip_plays.1.num_played", + "most_transferred_in", + "top_element_info.points", + "transfers_made", + "most_captained", + "most_vice_captained", + "chip_plays.2.num_played", + "chip_plays.3.chip_name", + "chip_plays.3.num_played", + "can_enter", + "can_manage", + "chip_plays.0.chip_name", + "chip_plays.2.chip_name", + "cup_leagues_created", + "data_checked", + "deadline_time_epoch", + "deadline_time_game_offset", + "finished", + "h2h_ko_matches_created", + "highest_score", + "highest_scoring_entry", + "is_current", + "is_next", + "is_previous", + "most_selected", + "name", + "overrides.pick_multiplier", + "ranked_count", + "release_time", + "released", + "top_element", + "top_element_info", + "top_element_info.id" + ], + "hiddenColumns": [] + } + } + } + } + }, + { + "static": false, + "w": 3, + "moved": false, + "h": 2, + "x": 0, + "y": 2, + "i": "ec44d240-6ac6-49f3-90c0-fd88ba75c2e7", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "leagueSummary", + "dataSourceConfig": { + "leagueID": "708036" + }, + "id": "{{dataStreams.leagueSummary}}", + "sort": { + "by": [ + [ + "rank", + "asc" + ] + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "Saved data stream", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "League Summary", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "rank", + "entry_name", + "event_total", + "total", + "rank[Expanded].comparedTo[last_rank].compare1" + ], + "hiddenColumns": [ + "rank_sort", + "last_rank", + "entry" + ] + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 3, + "x": 0, + "y": 4, + "i": "121a65b8-b410-40df-9208-770ae5fa1262", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "managerSummary", + "dataSourceConfig": { + "userID": "3510322" + }, + "id": "{{dataStreams.managerSummary}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "This season", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Weekly Points", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisGroup": "none", + "showLegend": false, + "range": { + "type": "auto" + }, + "showGrid": true, + "grouping": false, + "xAxisData": "event", + "displayMode": "actual", + "showTotals": false, + "yAxisLabel": "", + "horizontalLayout": "vertical", + "showValue": false, + "yAxisData": [ + "points" + ], + "showYAxisLabel": true, + "xAxisLabel": "", + "legendPosition": "bottom", + "showXAxisLabel": true + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 3, + "x": 4, + "y": 4, + "i": "1808f062-623d-458a-a755-84cb9a00d23f", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "managerSummary", + "dataSourceConfig": { + "userID": "3510322" + }, + "id": "{{dataStreams.managerSummary}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "This season", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Overall Rank", + "visualisation": { + "type": "data-stream-line-graph", + "config": { + "data-stream-line-graph": { + "xAxisColumn": "event", + "yAxisColumn": [ + "overall_rank" + ], + "seriesColumn": "none" + } + } + } + } + } + ], + "version": 98, + "columns": 8 + }, + "path": "fpl-summary", + "folderPath": [] +} \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v2/defaultContent/manifest.json b/plugins/FantasyPremierLeague/v2/defaultContent/manifest.json new file mode 100644 index 0000000..df08b63 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/defaultContent/manifest.json @@ -0,0 +1,8 @@ +{ + "items": [ + { + "name": "fplSummary", + "type": "dashboard" + } + ] +} \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v2/defaultContent/scopes.json b/plugins/FantasyPremierLeague/v2/defaultContent/scopes.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/defaultContent/scopes.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v2/icon.svg b/plugins/FantasyPremierLeague/v2/icon.svg new file mode 100644 index 0000000..71ea572 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v2/indexDefinitions/default.json b/plugins/FantasyPremierLeague/v2/indexDefinitions/default.json new file mode 100644 index 0000000..ea02b0e --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/indexDefinitions/default.json @@ -0,0 +1,59 @@ +{ + "steps": [ + { + "name": "Gameweeks", + "dataStream": { + "name": "gameweekData" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "name", + "type": { "value": "fpl-gameweek" }, + "properties": [ + "deadline_time", + "highest_score", + "average_entry_score", + "transfers_made" + ] + } + }, + { + "name": "Classic Leagues", + "dataStream": { + "name": "classicLeagues" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "name", + "type": { "value": "fpl-classic-league" }, + "properties": [ + { "leagueId": "id" }, + "short_name", + "league_type", + { "currentRank": "entry_rank" }, + { "lastRank": "entry_last_rank" } + ] + } + }, + { + "name": "H2H Leagues", + "dataStream": { + "name": "h2hLeagues" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "name", + "type": { "value": "fpl-h2h-league" }, + "properties": [ + { "leagueId": "id" }, + "short_name", + { "currentRank": "entry_rank" }, + { "lastRank": "entry_last_rank" } + ] + } + } + ] +} diff --git a/plugins/FantasyPremierLeague/v2/metadata.json b/plugins/FantasyPremierLeague/v2/metadata.json new file mode 100644 index 0000000..2e12e09 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/metadata.json @@ -0,0 +1,31 @@ +{ + "name": "fantasy-premier-league", + "displayName": "Fantasy Premier League", + "version": "2.0.1", + "author": { + "name": "@TimWheeler-SQUP", + "type": "community" + }, + "description": "FPL data source to display manager information, season's points, leagues and previous seasons results.", + "category": "Fun", + "type": "cloud", + "restrictedToPlatforms": [], + "importNotSupported": false, + "schemaVersion": "2.0", + "base": { + "plugin": "WebAPI", + "majorVersion": "1", + "config": { + "authMode": "none", + "baseUrl": "https://fantasy.premierleague.com/api" + } + }, + "keywords": ["FPL", "Fantasy", "Premier League", "Football"], + "links": [ + { + "category": "source", + "url": "https://github.com/squaredup/plugins/tree/main/plugins/FantasyPremierLeague/v2", + "label": "Repository" + } + ] +} \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v2/ui.json b/plugins/FantasyPremierLeague/v2/ui.json new file mode 100644 index 0000000..c754759 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/ui.json @@ -0,0 +1,12 @@ +[ + { + "type": "text", + "name": "userID", + "label": "FPL Manager ID", + "help": "Your FPL Manager ID — found in the URL when viewing your team on the FPL website (e.g. https://fantasy.premierleague.com/entry/**123456**/event/1)", + "validation": { + "required": true + }, + "placeholder": "Enter manager ID e.g. 1234567" + } +]