diff --git a/server/src/airtable-interface.js b/server/src/airtable-interface.js
index 606d6310..8256c8fd 100644
--- a/server/src/airtable-interface.js
+++ b/server/src/airtable-interface.js
@@ -12,7 +12,7 @@ const logUpdates = false;
// Starting with syncing Matches
// const tables = ["Matches", "Teams", "Themes", "Events", "Players", "Player Relationships"];
-const tables = ["Event Series", "News", "Matches", "Teams", "Themes", "Events", "Players", "Socials", "Accolades", "Player Relationships", "Broadcasts", "Brackets", "Live Guests", "Headlines"];
+const tables = ["Event Series", "News", "Matches", "Teams", "Themes", "Events", "Players", "Socials", "Accolades", "Player Relationships", "Broadcasts", "Brackets", "Live Guests", "Headlines", "Clients"];
function deAirtable(obj) {
const data = {};
@@ -43,6 +43,7 @@ async function getAllTableData(tableName, options = {}) {
function customUpdater(tableName, item) {
if (tableName === "Broadcasts" && item.key && item.active) Cache.set(`broadcast-${item.key}`, item);
+ if (tableName === "Clients" && item.key) Cache.set(`client-${item.key}`, item);
if (tableName === "Events" && item.subdomain) Cache.set(`event-${item.subdomain}`, item);
}
diff --git a/website/src/apps/BroadcastApp.vue b/website/src/apps/BroadcastApp.vue
index 3080c317..44dee09b 100644
--- a/website/src/apps/BroadcastApp.vue
+++ b/website/src/apps/BroadcastApp.vue
@@ -12,10 +12,10 @@ import { ReactiveArray, ReactiveRoot, ReactiveThing } from "@/utils/reactive";
export default {
name: "BroadcastApp",
- props: ["id", "title", "top"],
+ props: ["id", "title", "top", "code"],
computed: {
broadcast() {
- return ReactiveRoot(`broadcast-${this.id}`, {
+ return ReactiveRoot(this.id || `broadcast-${this.code}`, {
event: ReactiveThing("event", {
theme: ReactiveThing("theme")
}),
diff --git a/website/src/apps/ClientApp.vue b/website/src/apps/ClientApp.vue
new file mode 100644
index 00000000..44c5759a
--- /dev/null
+++ b/website/src/apps/ClientApp.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/website/src/router/broadcast.js b/website/src/router/broadcast.js
new file mode 100644
index 00000000..9da5a585
--- /dev/null
+++ b/website/src/router/broadcast.js
@@ -0,0 +1,26 @@
+import IngameOverlay from "@/components/broadcast/IngameOverlay";
+import BreakOverlay from "@/components/broadcast/BreakOverlay";
+import BracketOverlay from "@/components/broadcast/BracketOverlay";
+import ScheduleOverlay from "@/components/broadcast/ScheduleOverlay";
+import StandingsOverlay from "@/components/broadcast/StandingsOverlay";
+import RosterOverlay from "@/components/broadcast/RosterOverlay";
+import EventThumbnailCreator from "@/components/broadcast/EventThumbnailCreator";
+import DraftOverlay from "@/components/broadcast/DraftOverlay";
+import DeskOverlay from "@/components/broadcast/DeskOverlay";
+import CustomOverlay from "@/components/broadcast/CustomOverlay";
+import InfoOverlay from "@/components/broadcast/InfoOverlay";
+
+export default [
+ { path: "ingame", component: IngameOverlay },
+ { path: "break", component: BreakOverlay },
+ { path: "bracket", component: BracketOverlay, props: route => ({ bracketKey: route.query.key, extended: !!route.query.extended, scale: route.query.scale }) },
+ { path: "schedule", component: ScheduleOverlay },
+ { path: "standings", component: StandingsOverlay },
+ { path: "roster", redirect: "rosters" },
+ { path: "rosters", component: RosterOverlay },
+ { path: "thumbnail", component: EventThumbnailCreator },
+ { path: "draft", component: DraftOverlay },
+ { path: "casters", component: DeskOverlay, props: route => ({ group: "casters" }) },
+ { path: "custom", component: CustomOverlay },
+ { path: "info", component: InfoOverlay }
+];
diff --git a/website/src/router/index.js b/website/src/router/index.js
index 20323315..3ec3016a 100644
--- a/website/src/router/index.js
+++ b/website/src/router/index.js
@@ -17,26 +17,16 @@ import TeamMain from "@/views/sub-views/TeamMain";
import TeamMatches from "@/views/sub-views/TeamMatches";
import PlayerPlayedMatches from "@/views/sub-views/PlayerPlayedMatches";
import Match from "@/views/Match";
-import IngameOverlay from "@/components/broadcast/IngameOverlay";
-import BreakOverlay from "@/components/broadcast/BreakOverlay";
-import ScheduleOverlay from "@/components/broadcast/ScheduleOverlay";
-import StandingsOverlay from "@/components/broadcast/StandingsOverlay";
-import CustomOverlay from "@/components/broadcast/CustomOverlay";
-import RosterOverlay from "@/components/broadcast/RosterOverlay";
-import EventThumbnailCreator from "@/components/broadcast/EventThumbnailCreator";
import EventMain from "@/views/sub-views/EventMain";
import EventRosters from "@/views/sub-views/EventRosters";
import EventBrackets from "@/views/sub-views/EventBrackets";
import TeamTheme from "@/views/sub-views/TeamTheme";
import EventSchedule from "@/views/sub-views/EventSchedule";
import EventScenarios from "@/components/website/EventScenarios";
-import BracketOverlay from "@/components/broadcast/BracketOverlay";
-import DraftOverlay from "@/components/broadcast/DraftOverlay";
import EventDraft from "@/views/sub-views/EventDraft";
import TeamDetails from "@/views/sub-views/TeamDetails";
-import DeskOverlay from "@/components/broadcast/DeskOverlay";
-import InfoOverlay from "@/components/broadcast/InfoOverlay";
-// import EventScenarios2 from "@/components/website/EventScenarios2";
+import BroadcastRoutes from "@/router/broadcast";
+import ClientApp from "@/apps/ClientApp";
Vue.use(VueRouter);
@@ -106,23 +96,16 @@ const routes = [
]
},
{
- path: "/broadcast/:broadcastID",
+ path: "/broadcast/:broadcastCode",
component: OverlayApp,
- props: route => ({ id: route.params.broadcastID, title: route.query.title, top: route.query.top }),
- children: [
- { path: "ingame", component: IngameOverlay },
- { path: "break", component: BreakOverlay },
- { path: "bracket", component: BracketOverlay, props: route => ({ bracketKey: route.query.key, extended: !!route.query.extended, scale: route.query.scale }) },
- { path: "schedule", component: ScheduleOverlay },
- { path: "standings", component: StandingsOverlay },
- { path: "roster", redirect: "rosters" },
- { path: "rosters", component: RosterOverlay },
- { path: "thumbnail", component: EventThumbnailCreator },
- { path: "draft", component: DraftOverlay },
- { path: "casters", component: DeskOverlay, props: route => ({ group: "casters" }) },
- { path: "custom", component: CustomOverlay },
- { path: "info", component: InfoOverlay }
- ]
+ props: route => ({ code: route.params.broadcastCode, title: route.query.title, top: route.query.top }),
+ children: BroadcastRoutes
+ },
+ {
+ path: "/client/:clientID",
+ component: ClientApp,
+ props: route => ({ client: route.params.clientID }),
+ children: BroadcastRoutes
}
];