From 861c81703538d777ad61daef97df7377c6cda01e Mon Sep 17 00:00:00 2001 From: Pavel Tiunov Date: Sun, 5 May 2019 21:58:58 +0300 Subject: [PATCH] feat: Replace codesandbox by running dashboard react-app directly --- .../cubejs-playground/src/DashboardPage.js | 59 +++++++++++-- .../cubejs-playground/src/DashboardSource.js | 2 +- packages/cubejs-server-core/core/DevServer.js | 88 ++++++++++++++----- 3 files changed, 121 insertions(+), 28 deletions(-) diff --git a/packages/cubejs-playground/src/DashboardPage.js b/packages/cubejs-playground/src/DashboardPage.js index c647920ee6940..0f720feb4f8e9 100644 --- a/packages/cubejs-playground/src/DashboardPage.js +++ b/packages/cubejs-playground/src/DashboardPage.js @@ -1,7 +1,8 @@ +/* globals window */ import React, { Component } from 'react'; import { Spin, Button } from 'antd'; import DashboardSource from "./DashboardSource"; -import DashboardRenderer from './DashboardRenderer'; +import fetch from './playgroundFetch'; class DashboardPage extends Component { constructor(props) { @@ -17,19 +18,33 @@ class DashboardPage extends Component { async loadDashboard(createApp) { this.setState({ appCode: null, - sourceFiles: null, loadError: null }); await this.dashboardSource.load(createApp); this.setState({ + dashboardStarting: false, appCode: !this.dashboardSource.loadError && this.dashboardSource.dashboardAppCode(), - sourceFiles: this.dashboardSource.sourceFiles, loadError: this.dashboardSource.loadError }); + const dashboardStatus = await (await fetch('/playground/dashboard-app-status')).json(); + this.setState({ + dashboardRunning: dashboardStatus.running, + dashboardPort: dashboardStatus.dashboardPort + }); + } + + async startDashboardApp() { + this.setState({ + dashboardStarting: true + }); + await fetch('/playground/start-dashboard-app'); + await this.loadDashboard(); } render() { - const { appCode, sourceFiles, loadError } = this.state; + const { + appCode, dashboardPort, loadError, dashboardRunning, dashboardStarting + } = this.state; if (loadError) { return (
@@ -48,13 +63,45 @@ class DashboardPage extends Component {
); } - return appCode && - || ( + if (!appCode) { + return (

 Creating dashboard react-app. It may take several minutes...

); + } + if (!dashboardRunning) { + return ( +
+

+ Dashboard App is not running. +
+ Please start dashboard app or run it manually using `$ npm run start` in dashboard-app directory. +

+

+ +

+
+ ); + } + return ( +