From 19fa292973ffca3679a2d3f7496cd1b51268f1e6 Mon Sep 17 00:00:00 2001 From: Kasra Bigdeli Date: Sun, 23 Dec 2018 10:57:16 -0800 Subject: [PATCH] Save and Update config is working --- app-frontend/src/api/ApiManager.ts | 32 +++++++++++++++++++ .../containers/apps/appDetails/AppConfigs.tsx | 7 ++++ .../containers/apps/appDetails/AppDetails.tsx | 15 +++++++++ .../apps/appDetails/HttpSettings.tsx | 1 + 4 files changed, 55 insertions(+) diff --git a/app-frontend/src/api/ApiManager.ts b/app-frontend/src/api/ApiManager.ts index d5677e54..ab134cd0 100644 --- a/app-frontend/src/api/ApiManager.ts +++ b/app-frontend/src/api/ApiManager.ts @@ -1,5 +1,6 @@ import HttpClient from "./HttpClient"; import Logger from "../utils/Logger"; +import { IAppDef } from "../containers/apps/AppDefinition"; const URL = process.env.REACT_APP_API_URL + "/api/v2"; Logger.dev("API URL: " + URL); @@ -91,6 +92,37 @@ export default class ApiManager { ); } + updateConfigAndSave(appName: string, appDefinition: IAppDef) { + var instanceCount = appDefinition.instanceCount; + var envVars = appDefinition.envVars; + var notExposeAsWebApp = appDefinition.notExposeAsWebApp; + var forceSsl = appDefinition.forceSsl; + var volumes = appDefinition.volumes; + var ports = appDefinition.ports; + var nodeId = appDefinition.nodeId; + var appPushWebhook = appDefinition.appPushWebhook; + var customNginxConfig = appDefinition.customNginxConfig; + var preDeployFunction = appDefinition.preDeployFunction; + const http = this.http; + + return Promise.resolve() // + .then( + http.fetch(http.POST, "/user/apps/appDefinitions/update", { + appName: appName, + instanceCount: instanceCount, + notExposeAsWebApp: notExposeAsWebApp, + forceSsl: forceSsl, + volumes: volumes, + ports: ports, + customNginxConfig: customNginxConfig, + appPushWebhook: appPushWebhook, + nodeId: nodeId, + preDeployFunction: preDeployFunction, + envVars: envVars + }) + ); + } + registerNewApp(appName: string, hasPersistentData: boolean) { const http = this.http; diff --git a/app-frontend/src/containers/apps/appDetails/AppConfigs.tsx b/app-frontend/src/containers/apps/appDetails/AppConfigs.tsx index a8ba5c78..18907760 100644 --- a/app-frontend/src/containers/apps/appDetails/AppConfigs.tsx +++ b/app-frontend/src/containers/apps/appDetails/AppConfigs.tsx @@ -331,6 +331,13 @@ export default class AppConfigs extends Component< app.hasPersistentData && !this.state.forceEditableInstanceCount } + onChange={e => { + const newApiData = Utils.copyObject(this.props.apiData); + newApiData.appDefinition.instanceCount = Number( + e.target.value + ); + this.props.updateApiData(newApiData); + }} /> diff --git a/app-frontend/src/containers/apps/appDetails/AppDetails.tsx b/app-frontend/src/containers/apps/appDetails/AppDetails.tsx index cbbb1915..e8c050f3 100644 --- a/app-frontend/src/containers/apps/appDetails/AppDetails.tsx +++ b/app-frontend/src/containers/apps/appDetails/AppDetails.tsx @@ -23,6 +23,7 @@ import ApiManager from "../../../api/ApiManager"; import AppConfigs from "./AppConfigs"; import Deployment from "./Deployment"; import { BasicProps } from "antd/lib/layout/layout"; +import Utils from "../../../utils/Utils"; const TabPane = Tabs.TabPane; const WEB_SETTINGS = "WEB_SETTINGS"; @@ -73,6 +74,18 @@ export default class AppDetails extends ApiComponent< this.props.history.push("/apps"); } + onUpdateConfigAndSave() { + const self = this; + const appDef = Utils.copyObject(self.state.apiData!.appDefinition); + self.setState({ isLoading: true }); + this.apiManager + .updateConfigAndSave(appDef.appName!, appDef) + .then(function(data: any) { + self.reFetchData(); + }) + .catch(Toaster.createCatcher()); + } + render() { const self = this; @@ -155,6 +168,7 @@ export default class AppDetails extends ApiComponent< /> +
self.onUpdateConfigAndSave()} > Save & Update diff --git a/app-frontend/src/containers/apps/appDetails/HttpSettings.tsx b/app-frontend/src/containers/apps/appDetails/HttpSettings.tsx index 94aba201..fc2db5a6 100644 --- a/app-frontend/src/containers/apps/appDetails/HttpSettings.tsx +++ b/app-frontend/src/containers/apps/appDetails/HttpSettings.tsx @@ -311,6 +311,7 @@ export default class HttpSettings extends Component<
{ const newApiData = Utils.copyObject(this.props.apiData!); newApiData.appDefinition.notExposeAsWebApp = !!e.target.checked;