diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/client/views/Main.tsx | 4 | ||||
-rw-r--r-- | src/server/authentication/controllers/WorkspacesMenu.css | 3 | ||||
-rw-r--r-- | src/server/authentication/controllers/WorkspacesMenu.tsx | 55 | ||||
-rw-r--r-- | src/server/index.ts | 2 |
4 files changed, 48 insertions, 16 deletions
diff --git a/src/client/views/Main.tsx b/src/client/views/Main.tsx index e55bc693e..90ce8be1a 100644 --- a/src/client/views/Main.tsx +++ b/src/client/views/Main.tsx @@ -187,8 +187,8 @@ function init() { }} onClick={() => window.location.pathname = "/logout"}>Logout</button> <button style={{ position: 'absolute', - top: '50px', - right: '0px', + top: '24px', + left: '4px', width: '150px' }} onClick={() => WorkspacesMenu.Instance.toggle()}>Workspaces</button> <WorkspacesMenu /> diff --git a/src/server/authentication/controllers/WorkspacesMenu.css b/src/server/authentication/controllers/WorkspacesMenu.css new file mode 100644 index 000000000..b89039965 --- /dev/null +++ b/src/server/authentication/controllers/WorkspacesMenu.css @@ -0,0 +1,3 @@ +.ids:hover { + color: darkblue; +}
\ No newline at end of file diff --git a/src/server/authentication/controllers/WorkspacesMenu.tsx b/src/server/authentication/controllers/WorkspacesMenu.tsx index 77e3a9778..23a3d35da 100644 --- a/src/server/authentication/controllers/WorkspacesMenu.tsx +++ b/src/server/authentication/controllers/WorkspacesMenu.tsx @@ -3,6 +3,7 @@ import * as ReactDOM from 'react-dom'; import { observable, action, configure, reaction, computed } from 'mobx'; import { observer } from "mobx-react"; import * as request from 'request' +import './WorkspacesMenu.css' @observer export class WorkspacesMenu extends React.Component { @@ -15,33 +16,61 @@ export class WorkspacesMenu extends React.Component { WorkspacesMenu.Instance = this; } + @action toggle() { - action(() => { - if (!this.workspacesExposed) { - request.get(window.location.origin + "/getAllWorkspaceIds", (error, response, body) => { - this.workspaceIds = body; - console.log(this.workspaceIds); - }) + if (this.workspacesExposed) { + this.workspacesExposed = !this.workspacesExposed; + } else { + request.get(window.location.origin + "/getAllWorkspaceIds", this.idCallback) + } + } + + @action.bound + idCallback: request.RequestCallback = (error, response, body) => { + this.workspaceIds = []; + let ids: Array<string> = JSON.parse(body) as Array<string>; + if (ids) { + for (let i = 0; i < ids.length; i++) { + this.workspaceIds.push(ids[i]); } + console.log(this.workspaceIds); this.workspacesExposed = !this.workspacesExposed; - }); + } + } + + setWorkspaceId = (e: React.MouseEvent) => { + } render() { return ( <div style={{ - width: "150px", - height: "150px", + width: "auto", + height: "auto", + borderRadius: 5, position: "absolute", - top: 75, - right: 0, - background: "grey", + top: 50, + left: 8, + background: "white", + border: "black solid 2px", + transition: "all 0.3s ease", zIndex: 15, + padding: 10, visibility: this.workspacesExposed ? "visible" : "hidden" }} > - {this.workspaceIds.map(s => <li key={s} >${s}</li>)} + {this.workspaceIds.map(s => + <li className={"ids"} + key={s} + style={{ + listStyleType: "none", + paddingTop: 3, + paddingBottom: 3 + }} + onClick={this.setWorkspaceId} + >{s}</li> + )} </div> ); } diff --git a/src/server/index.ts b/src/server/index.ts index 8f740b1d7..1d16f65ed 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -110,7 +110,7 @@ app.get("/getAllWorkspaceIds", (req, res) => { if (!dashUser) { return; } - res.send(dashUser.allWorkspaceIds); + res.send(JSON.stringify(dashUser.allWorkspaceIds as Array<String>)); }) app.post("/setActiveWorkspaceId", (req, res) => { |