From 3a32a3ee88cc9f8552f6b020270d5c76c1a58cb0 Mon Sep 17 00:00:00 2001 From: Tim Wheeler <63284593+TimWheeler-SQUP@users.noreply.github.com> Date: Sun, 5 Apr 2026 14:31:44 +0100 Subject: [PATCH 1/5] Updated validation of manager ID and robust naming conventions --- .../v1/configValidation.json | 11 ++ plugins/FantasyPremierLeague/v1/cspell.json | 4 +- .../FantasyPremierLeague/v1/custom_types.json | 23 +++ .../v1/dataStreams/classicLeagues.json | 63 ++++++++ .../v1/dataStreams/gameweekData.json | 24 ++-- .../v1/dataStreams/h2hLeagueSummary.json | 134 ++++++++++++++++++ .../v1/dataStreams/h2hLeagues.json | 59 ++++++++ .../v1/dataStreams/leagueSummary.json | 18 ++- .../v1/dataStreams/managerHistory.json | 14 +- .../v1/dataStreams/managerInformation.json | 16 +-- .../v1/dataStreams/managerSummary.json | 13 +- .../v1/dataStreams/scripts/gameweekData.js | 7 + .../v1/indexDefinitions/default.json | 59 ++++++++ plugins/FantasyPremierLeague/v1/metadata.json | 5 +- plugins/FantasyPremierLeague/v1/ui.json | 12 +- 15 files changed, 400 insertions(+), 62 deletions(-) create mode 100644 plugins/FantasyPremierLeague/v1/configValidation.json create mode 100644 plugins/FantasyPremierLeague/v1/custom_types.json create mode 100644 plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json create mode 100644 plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagueSummary.json create mode 100644 plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json create mode 100644 plugins/FantasyPremierLeague/v1/dataStreams/scripts/gameweekData.js create mode 100644 plugins/FantasyPremierLeague/v1/indexDefinitions/default.json 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..b07e497 --- /dev/null +++ b/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json @@ -0,0 +1,63 @@ +{ + "name": "classicLeagues", + "displayName": "Classic Leagues", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "expandInnerObjects": false, + "endpointPath": "entry/{{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" +} diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json b/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json index 9955ff1..c7ca1e3 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", diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagueSummary.json b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagueSummary.json new file mode 100644 index 0000000..683cf82 --- /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", + "ui": [ + { + "name": "leagueID", + "label": "H2H League", + "placeholder": "Select an H2H league", + "title": "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..6c5566e --- /dev/null +++ b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json @@ -0,0 +1,59 @@ +{ + "name": "h2hLeagues", + "displayName": "H2H Leagues", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "expandInnerObjects": false, + "endpointPath": "entry/{{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" +} diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json b/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json index 1329c0a..33ea7fd 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json @@ -84,12 +84,20 @@ "ui": [ { "name": "leagueID", - "label": "League ID", - "placeholder": "123456", - "title": "League ID", - "type": "text", + "label": "Classic League", + "placeholder": "Select a classic league", + "title": "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..97f6527 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json @@ -46,17 +46,5 @@ }, "displayName": "Manager History", "baseDataSourceName": "httpRequestUnscoped", - "matches": "none", - "ui": [ - { - "name": "userID", - "label": "Manager ID", - "placeholder": "123456", - "title": "Manager ID", - "type": "text", - "validation": { - "required": true - } - } - ] + "matches": "none" } \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json b/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json index 79ff644..ba31e08 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json @@ -105,7 +105,7 @@ "shape": [ "number", { - "decimalPlaces": 2 + "decimalPlaces": 0 } ], "name": "leagues.classic.0.id", @@ -122,17 +122,5 @@ "timeframes": false, "displayName": "Manager Information", "baseDataSourceName": "httpRequestUnscoped", - "matches": "none", - "ui": [ - { - "name": "userID", - "label": "Manager ID", - "placeholder": "123456", - "title": "Manager ID", - "type": "text", - "validation": { - "required": true - } - } - ] + "matches": "none" } \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json b/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json index cafdc5c..72c30c7 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json @@ -99,16 +99,5 @@ ], "displayName": "Manager Summary", "baseDataSourceName": "httpRequestUnscoped", - "matches": "none", - "ui": [ - { - "name": "userID", - "label": "Manager ID", - "placeholder": "123456", - "type": "text", - "validation": { - "required": true - } - } - ] + "matches": "none" } 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..b37cd64 100644 --- a/plugins/FantasyPremierLeague/v1/ui.json +++ b/plugins/FantasyPremierLeague/v1/ui.json @@ -1 +1,11 @@ -[] \ 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 + } + } +] From 43348d153a7fb8154d6a5d29fcf85714a5eef5da Mon Sep 17 00:00:00 2001 From: Tim Wheeler <63284593+TimWheeler-SQUP@users.noreply.github.com> Date: Sun, 5 Apr 2026 17:32:21 +0100 Subject: [PATCH 2/5] Claude feedback updates --- .../FantasyPremierLeague/v1/dataStreams/classicLeagues.json | 3 ++- plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json | 3 ++- .../FantasyPremierLeague/v1/dataStreams/h2hLeagueSummary.json | 2 +- plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json | 3 ++- plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json | 2 +- .../FantasyPremierLeague/v1/dataStreams/managerHistory.json | 3 ++- .../v1/dataStreams/managerInformation.json | 3 ++- .../FantasyPremierLeague/v1/dataStreams/managerSummary.json | 3 ++- plugins/FantasyPremierLeague/v1/ui.json | 3 ++- 9 files changed, 16 insertions(+), 9 deletions(-) diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json b/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json index b07e497..9f02ad8 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json @@ -59,5 +59,6 @@ } ], "timeframes": false, - "matches": "none" + "matches": "none", + "tags": ["Leagues"] } diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json b/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json index c7ca1e3..3af8eb5 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/gameweekData.json @@ -131,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 index 683cf82..6d07bde 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagueSummary.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagueSummary.json @@ -111,12 +111,12 @@ }, "displayName": "H2H League Summary", "matches": "none", + "tags": ["Leagues"], "ui": [ { "name": "leagueID", "label": "H2H League", "placeholder": "Select an H2H league", - "title": "H2H League", "type": "autocomplete", "allowCustomValues": false, "isMulti": false, diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json index 6c5566e..4992e69 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json @@ -55,5 +55,6 @@ } ], "timeframes": false, - "matches": "none" + "matches": "none", + "tags": ["Leagues"] } diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json b/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json index 33ea7fd..0a57f6b 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/leagueSummary.json @@ -81,12 +81,12 @@ }, "displayName": "League Summary", "matches": "none", + "tags": ["Leagues"], "ui": [ { "name": "leagueID", "label": "Classic League", "placeholder": "Select a classic league", - "title": "Classic League", "type": "autocomplete", "allowCustomValues": false, "isMulti": false, diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json b/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json index 97f6527..b3ccb67 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json @@ -46,5 +46,6 @@ }, "displayName": "Manager History", "baseDataSourceName": "httpRequestUnscoped", - "matches": "none" + "matches": "none", + "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 ba31e08..393bba9 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json @@ -122,5 +122,6 @@ "timeframes": false, "displayName": "Manager Information", "baseDataSourceName": "httpRequestUnscoped", - "matches": "none" + "matches": "none", + "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 72c30c7..733e70d 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json @@ -99,5 +99,6 @@ ], "displayName": "Manager Summary", "baseDataSourceName": "httpRequestUnscoped", - "matches": "none" + "matches": "none", + "tags": ["Manager"] } diff --git a/plugins/FantasyPremierLeague/v1/ui.json b/plugins/FantasyPremierLeague/v1/ui.json index b37cd64..c754759 100644 --- a/plugins/FantasyPremierLeague/v1/ui.json +++ b/plugins/FantasyPremierLeague/v1/ui.json @@ -6,6 +6,7 @@ "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" } ] From c42d7e813d78262c550c4a1bd90397aed3b6926b Mon Sep 17 00:00:00 2001 From: Tim Wheeler <63284593+TimWheeler-SQUP@users.noreply.github.com> Date: Thu, 23 Apr 2026 09:11:15 +0100 Subject: [PATCH 3/5] Update import --- .claude/settings.json | 8 ++++++++ .../v1/dataStreams/classicLeagues.json | 8 +++++--- .../v1/dataStreams/h2hLeagues.json | 8 +++++--- .../v1/dataStreams/managerHistory.json | 2 +- .../v1/dataStreams/managerInformation.json | 4 ++-- .../v1/dataStreams/managerSummary.json | 13 ++++++++++++- 6 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 .claude/settings.json 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/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json b/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json index 9f02ad8..5815c50 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/classicLeagues.json @@ -5,12 +5,11 @@ "config": { "httpMethod": "get", "expandInnerObjects": false, - "endpointPath": "entry/{{userID}}", + "endpointPath": "entry/{{datasource.userID}}", "pathToData": "leagues.classic", "getArgs": [], "headers": [] }, - "manualConfigApply": true, "rowPath": [], "metadata": [ { @@ -60,5 +59,8 @@ ], "timeframes": false, "matches": "none", - "tags": ["Leagues"] + "tags": ["Leagues"], + "visibility": { + "type": "hidden" + } } diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json index 4992e69..12c6b7e 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/h2hLeagues.json @@ -5,12 +5,11 @@ "config": { "httpMethod": "get", "expandInnerObjects": false, - "endpointPath": "entry/{{userID}}", + "endpointPath": "entry/{{datasource.userID}}", "pathToData": "leagues.h2h", "getArgs": [], "headers": [] }, - "manualConfigApply": true, "rowPath": [], "metadata": [ { @@ -56,5 +55,8 @@ ], "timeframes": false, "matches": "none", - "tags": ["Leagues"] + "tags": ["Leagues"], + "visibility": { + "type": "hidden" + } } diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json b/plugins/FantasyPremierLeague/v1/dataStreams/managerHistory.json index b3ccb67..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": [] diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json b/plugins/FantasyPremierLeague/v1/dataStreams/managerInformation.json index 393bba9..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": [ { diff --git a/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json b/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json index 733e70d..a53032e 100644 --- a/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json +++ b/plugins/FantasyPremierLeague/v1/dataStreams/managerSummary.json @@ -100,5 +100,16 @@ "displayName": "Manager Summary", "baseDataSourceName": "httpRequestUnscoped", "matches": "none", - "tags": ["Manager"] + "tags": ["Manager"], + "ui": [ + { + "name": "userID", + "label": "Manager ID", + "type": "text", + "placeholder": "Enter manager ID e.g. 1234567", + "validation": { + "required": true + } + } + ] } From 11af2325a8d6a4e3416a72aed293f77dda5e9068 Mon Sep 17 00:00:00 2001 From: Tim Wheeler <63284593+TimWheeler-SQUP@users.noreply.github.com> Date: Thu, 23 Apr 2026 15:00:31 +0100 Subject: [PATCH 4/5] Move plugin to v2 folder --- .../v2/configValidation.json | 11 + plugins/FantasyPremierLeague/v2/cspell.json | 8 + .../FantasyPremierLeague/v2/custom_types.json | 23 + .../v2/dataStreams/classicLeagues.json | 64 + .../v2/dataStreams/gameweekData.json | 136 ++ .../v2/dataStreams/h2hLeagueSummary.json | 134 ++ .../v2/dataStreams/h2hLeagues.json | 60 + .../v2/dataStreams/leagueSummary.json | 104 ++ .../v2/dataStreams/managerHistory.json | 51 + .../v2/dataStreams/managerInformation.json | 127 ++ .../v2/dataStreams/managerSummary.json | 104 ++ .../v2/dataStreams/scripts/gameweekData.js | 7 + .../v2/defaultContent/fplSummary.dash.json | 1094 +++++++++++++++++ .../v2/defaultContent/manifest.json | 8 + .../v2/defaultContent/scopes.json | 1 + plugins/FantasyPremierLeague/v2/icon.svg | 1 + .../v2/indexDefinitions/default.json | 59 + plugins/FantasyPremierLeague/v2/metadata.json | 31 + plugins/FantasyPremierLeague/v2/ui.json | 12 + 19 files changed, 2035 insertions(+) create mode 100644 plugins/FantasyPremierLeague/v2/configValidation.json create mode 100644 plugins/FantasyPremierLeague/v2/cspell.json create mode 100644 plugins/FantasyPremierLeague/v2/custom_types.json create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/classicLeagues.json create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/gameweekData.json create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/h2hLeagueSummary.json create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/h2hLeagues.json create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/leagueSummary.json create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/managerHistory.json create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/managerInformation.json create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/managerSummary.json create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/scripts/gameweekData.js create mode 100644 plugins/FantasyPremierLeague/v2/defaultContent/fplSummary.dash.json create mode 100644 plugins/FantasyPremierLeague/v2/defaultContent/manifest.json create mode 100644 plugins/FantasyPremierLeague/v2/defaultContent/scopes.json create mode 100644 plugins/FantasyPremierLeague/v2/icon.svg create mode 100644 plugins/FantasyPremierLeague/v2/indexDefinitions/default.json create mode 100644 plugins/FantasyPremierLeague/v2/metadata.json create mode 100644 plugins/FantasyPremierLeague/v2/ui.json 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..ff77acf --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/cspell.json @@ -0,0 +1,8 @@ +{ + "words": [ + "FPL", + "Gameweek", + "bboost", + "freehit" + ] +} 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..13ffeef --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/classicLeagues.json @@ -0,0 +1,64 @@ +{ + "name": "classicLeagues", + "displayName": "Classic Leagues", + "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..0a57f6b --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/leagueSummary.json @@ -0,0 +1,104 @@ +{ + "timeframes": false, + "name": "leagueSummary", + "config": { + "httpMethod": "get", + "expandInnerObjects": true, + "endpointPath": "leagues-classic/{{leagueID}}/standings/", + "pathToData": "standings.results", + "getArgs": [], + "headers": [] + }, + "baseDataSourceName": "httpRequestUnscoped", + "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" + } + ], + "defaultShaping": { + "sort": { + "by": [ + [ + "rank", + "asc" + ] + ] + } + }, + "displayName": "League Summary", + "matches": "none", + "tags": ["Leagues"], + "ui": [ + { + "name": "leagueID", + "label": "Classic League", + "placeholder": "Select a classic league", + "type": "autocomplete", + "allowCustomValues": false, + "isMulti": false, + "validation": { + "required": true, + "message": "You must select a classic league" + }, + "data": { + "source": "dataStream", + "dataStreamName": "classicLeagues", + "dataSourceConfig": {} + } + } + ] +} \ 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..1b727d2 --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/dataStreams/managerInformation.json @@ -0,0 +1,127 @@ +{ + "name": "managerInformation", + "config": { + "httpMethod": "get", + "expandInnerObjects": true, + "endpointPath": "entry/{{dataSource.userID}}", + "pathToData": "", + "getArgs": [], + "headers": [] + }, + "manualConfigApply": true, + "rowPath": [], + "metadata": [ + { + "shape": "string", + "name": "id", + "displayName": "Manager ID" + }, + { + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ], + "name": "joined_time", + "displayName": "Joined Date" + }, + { + "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": "years_active" + }, + { + "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": "Current Gameweek Points" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "summary_event_rank", + "displayName": "Current Gameweek Rank" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "current_event", + "displayName": "Current Gameweek" + }, + { + "name": "leagues.classic.0.name", + "displayName": "Favourite Team" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "leagues.classic.0.id", + "displayName": "Classic 0 Id" + }, + { + "name": "leagues.classic.0.short_name", + "displayName": "Classic 0 Short Name" + }, + { + "pattern": ".*" + } + ], + "timeframes": false, + "displayName": "Manager Information", + "baseDataSourceName": "httpRequestUnscoped", + "matches": "none", + "tags": ["Manager"] +} \ No newline at end of file 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/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..1d7c37c --- /dev/null +++ b/plugins/FantasyPremierLeague/v2/metadata.json @@ -0,0 +1,31 @@ +{ + "name": "fantasy-premier-league", + "displayName": "Fantasy Premier League", + "version": "1.0.3", + "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/v1", + "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" + } +] From 3e75e2844256f7c7000e7b8f057590a9f800cc17 Mon Sep 17 00:00:00 2001 From: Tim Wheeler <63284593+TimWheeler-SQUP@users.noreply.github.com> Date: Tue, 28 Apr 2026 11:09:19 +0100 Subject: [PATCH 5/5] Clean-up of names and values --- .gitignore | 1 + plugins/FantasyPremierLeague/v2/cspell.json | 3 +- .../v2/dataStreams/classicLeagues.json | 1 + .../v2/dataStreams/leagueSummary.json | 33 +++------ .../v2/dataStreams/managerInformation.json | 73 +++++++++++-------- .../dataStreams/scripts/managerInformation.js | 4 + plugins/FantasyPremierLeague/v2/metadata.json | 4 +- 7 files changed, 64 insertions(+), 55 deletions(-) create mode 100644 plugins/FantasyPremierLeague/v2/dataStreams/scripts/managerInformation.js 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/v2/cspell.json b/plugins/FantasyPremierLeague/v2/cspell.json index ff77acf..c2cec06 100644 --- a/plugins/FantasyPremierLeague/v2/cspell.json +++ b/plugins/FantasyPremierLeague/v2/cspell.json @@ -3,6 +3,7 @@ "FPL", "Gameweek", "bboost", - "freehit" + "freehit", + "favourite" ] } diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/classicLeagues.json b/plugins/FantasyPremierLeague/v2/dataStreams/classicLeagues.json index 13ffeef..9dd619f 100644 --- a/plugins/FantasyPremierLeague/v2/dataStreams/classicLeagues.json +++ b/plugins/FantasyPremierLeague/v2/dataStreams/classicLeagues.json @@ -1,6 +1,7 @@ { "name": "classicLeagues", "displayName": "Classic Leagues", + "hidden": true, "baseDataSourceName": "httpRequestUnscoped", "config": { "httpMethod": "get", diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/leagueSummary.json b/plugins/FantasyPremierLeague/v2/dataStreams/leagueSummary.json index 0a57f6b..3b32481 100644 --- a/plugins/FantasyPremierLeague/v2/dataStreams/leagueSummary.json +++ b/plugins/FantasyPremierLeague/v2/dataStreams/leagueSummary.json @@ -4,12 +4,12 @@ "config": { "httpMethod": "get", "expandInnerObjects": true, - "endpointPath": "leagues-classic/{{leagueID}}/standings/", + "endpointPath": "leagues-classic/{{objects[0].leagueId}}/standings/", "pathToData": "standings.results", "getArgs": [], "headers": [] }, - "baseDataSourceName": "httpRequestUnscoped", + "baseDataSourceName": "httpRequestScopedSingle", "manualConfigApply": true, "rowPath": [], "metadata": [ @@ -67,6 +67,12 @@ { "displayName": "Player Name", "name": "player_name" + }, + { + "name": "sourceId", + "displayName": "Object ID", + "shape": "string", + "visible": false } ], "defaultShaping": { @@ -80,25 +86,6 @@ } }, "displayName": "League Summary", - "matches": "none", - "tags": ["Leagues"], - "ui": [ - { - "name": "leagueID", - "label": "Classic League", - "placeholder": "Select a classic league", - "type": "autocomplete", - "allowCustomValues": false, - "isMulti": false, - "validation": { - "required": true, - "message": "You must select a classic league" - }, - "data": { - "source": "dataStream", - "dataStreamName": "classicLeagues", - "dataSourceConfig": {} - } - } - ] + "matches": { "sourceType": "fpl-classic-league" }, + "tags": ["Leagues"] } \ No newline at end of file diff --git a/plugins/FantasyPremierLeague/v2/dataStreams/managerInformation.json b/plugins/FantasyPremierLeague/v2/dataStreams/managerInformation.json index 1b727d2..c084da2 100644 --- a/plugins/FantasyPremierLeague/v2/dataStreams/managerInformation.json +++ b/plugins/FantasyPremierLeague/v2/dataStreams/managerInformation.json @@ -5,6 +5,7 @@ "expandInnerObjects": true, "endpointPath": "entry/{{dataSource.userID}}", "pathToData": "", + "postRequestScript": "managerInformation.js", "getArgs": [], "headers": [] }, @@ -17,14 +18,8 @@ "displayName": "Manager ID" }, { - "shape": [ - "date", - { - "timeZone": "Etc/UTC" - } - ], - "name": "joined_time", - "displayName": "Joined Date" + "name": "name", + "displayName": "Team Name" }, { "name": "player_first_name", @@ -45,17 +40,18 @@ "decimalPlaces": 0 } ], - "name": "years_active" + "name": "favourite_team", + "displayName": "Favourite Team" }, { "shape": [ - "number", + "date", { - "decimalPlaces": 0 + "timeZone": "Etc/UTC" } ], - "name": "summary_overall_points", - "displayName": "Overall Points" + "name": "joined_time", + "displayName": "Joined Date" }, { "shape": [ @@ -64,8 +60,8 @@ "decimalPlaces": 0 } ], - "name": "summary_overall_rank", - "displayName": "Overall Rank" + "name": "years_active", + "displayName": "Years Playing" }, { "shape": [ @@ -74,8 +70,8 @@ "decimalPlaces": 0 } ], - "name": "summary_event_points", - "displayName": "Current Gameweek Points" + "name": "current_event", + "displayName": "Current Gameweek" }, { "shape": [ @@ -84,8 +80,8 @@ "decimalPlaces": 0 } ], - "name": "summary_event_rank", - "displayName": "Current Gameweek Rank" + "name": "summary_overall_points", + "displayName": "Overall Points" }, { "shape": [ @@ -94,12 +90,18 @@ "decimalPlaces": 0 } ], - "name": "current_event", - "displayName": "Current Gameweek" + "name": "summary_overall_rank", + "displayName": "Overall Rank" }, { - "name": "leagues.classic.0.name", - "displayName": "Favourite Team" + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "summary_event_points", + "displayName": "GW Points" }, { "shape": [ @@ -108,15 +110,28 @@ "decimalPlaces": 0 } ], - "name": "leagues.classic.0.id", - "displayName": "Classic 0 Id" + "name": "summary_event_rank", + "displayName": "GW Rank" + }, + { + "shape": "string", + "name": "bank", + "displayName": "Transfer Budget" }, { - "name": "leagues.classic.0.short_name", - "displayName": "Classic 0 Short Name" + "shape": "string", + "name": "value", + "displayName": "Squad Value" }, { - "pattern": ".*" + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "total_transfers", + "displayName": "Total Transfers" } ], "timeframes": false, @@ -124,4 +139,4 @@ "baseDataSourceName": "httpRequestUnscoped", "matches": "none", "tags": ["Manager"] -} \ No newline at end of file +} 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/metadata.json b/plugins/FantasyPremierLeague/v2/metadata.json index 1d7c37c..2e12e09 100644 --- a/plugins/FantasyPremierLeague/v2/metadata.json +++ b/plugins/FantasyPremierLeague/v2/metadata.json @@ -1,7 +1,7 @@ { "name": "fantasy-premier-league", "displayName": "Fantasy Premier League", - "version": "1.0.3", + "version": "2.0.1", "author": { "name": "@TimWheeler-SQUP", "type": "community" @@ -24,7 +24,7 @@ "links": [ { "category": "source", - "url": "https://github.com/squaredup/plugins/tree/main/plugins/FantasyPremierLeague/v1", + "url": "https://github.com/squaredup/plugins/tree/main/plugins/FantasyPremierLeague/v2", "label": "Repository" } ]