Polished installation steps.

This commit is contained in:
Sean Li 2015-02-09 15:29:04 -08:00
parent ae665d4a44
commit 60fa865bc6
9 changed files with 48 additions and 13 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 83 KiB

BIN
images/install-error.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
images/install-error@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 91 KiB

View File

@ -3,6 +3,7 @@ var Router = require('react-router');
var Radial = require('./Radial.react.js'); var Radial = require('./Radial.react.js');
var SetupStore = require('./SetupStore'); var SetupStore = require('./SetupStore');
var RetinaImage = require('react-retina-image'); var RetinaImage = require('react-retina-image');
var Header = require('./Header.react');
var Setup = React.createClass({ var Setup = React.createClass({
mixins: [ Router.Navigation ], mixins: [ Router.Navigation ],
@ -28,9 +29,10 @@ var Setup = React.createClass({
}); });
}, },
renderDownloadingVirtualboxStep: function () { renderDownloadingVirtualboxStep: function () {
var message = 'Kitematic needs VirtualBox to run containers. VirtualBox is being downloaded from Oracle\'s website.'; var message = "VirtualBox is being downloaded from Oracle's servers. Kitematic requires VirtualBox to run.";
return ( return (
<div className="setup"> <div className="setup">
<Header />
<div className="image"> <div className="image">
<div className="contents"> <div className="contents">
<RetinaImage img src="virtualbox.png"/> <RetinaImage img src="virtualbox.png"/>
@ -41,6 +43,7 @@ var Setup = React.createClass({
</div> </div>
<div className="desc"> <div className="desc">
<div className="content"> <div className="content">
<h4>Step 1 out of 4</h4>
<h1>Downloading VirtualBox</h1> <h1>Downloading VirtualBox</h1>
<p>{message}</p> <p>{message}</p>
</div> </div>
@ -49,9 +52,10 @@ var Setup = React.createClass({
); );
}, },
renderInstallingVirtualboxStep: function () { renderInstallingVirtualboxStep: function () {
var message = 'VirtualBox is being installed. Administrative privileges are required.'; var message = 'VirtualBox is being installed in the background. We may need you to type in your password to continue.';
return ( return (
<div className="setup"> <div className="setup">
<Header />
<div className="image"> <div className="image">
<div className="contents"> <div className="contents">
<RetinaImage img src="virtualbox.png"/> <RetinaImage img src="virtualbox.png"/>
@ -62,6 +66,7 @@ var Setup = React.createClass({
</div> </div>
<div className="desc"> <div className="desc">
<div className="content"> <div className="content">
<h4>Step 2 out of 4</h4>
<h1>Installing VirtualBox</h1> <h1>Installing VirtualBox</h1>
<p>{message}</p> <p>{message}</p>
</div> </div>
@ -70,9 +75,10 @@ var Setup = React.createClass({
); );
}, },
renderInitBoot2DockerStep: function () { renderInitBoot2DockerStep: function () {
var message = 'Containers run in a virtual machine provided by Boot2Docker. Kitematic is setting up that Linux VM.'; var message = 'To run Docker containers on your computer, we are setting up a Linux virtual machine provided by boot2docker.';
return ( return (
<div className="setup"> <div className="setup">
<Header />
<div className="image"> <div className="image">
<div className="contents"> <div className="contents">
<RetinaImage img src="boot2docker.png"/> <RetinaImage img src="boot2docker.png"/>
@ -83,7 +89,8 @@ var Setup = React.createClass({
</div> </div>
<div className="desc"> <div className="desc">
<div className="content"> <div className="content">
<h1>Setting up the Docker VM</h1> <h4>Step 3 out of 4</h4>
<h1>Setting up Docker VM</h1>
<p>{message}</p> <p>{message}</p>
</div> </div>
</div> </div>
@ -91,9 +98,10 @@ var Setup = React.createClass({
); );
}, },
renderStartBoot2DockerStep: function () { renderStartBoot2DockerStep: function () {
var message = 'Kitematic is starting the Boot2Docker Linux VM.'; var message = 'Kitematic is starting the boot2docker VM. This may take about a minute.';
return ( return (
<div className="setup"> <div className="setup">
<Header />
<div className="image"> <div className="image">
<div className="contents"> <div className="contents">
<RetinaImage img src="boot2docker.png"/> <RetinaImage img src="boot2docker.png"/>
@ -104,7 +112,8 @@ var Setup = React.createClass({
</div> </div>
<div className="desc"> <div className="desc">
<div className="content"> <div className="content">
<h1>Starting the Docker VM</h1> <h4>Step 4 out of 4</h4>
<h1>Starting Docker VM</h1>
<p>{message}</p> <p>{message}</p>
</div> </div>
</div> </div>
@ -132,8 +141,22 @@ var Setup = React.createClass({
if (this.state.error) { if (this.state.error) {
return ( return (
<div className="setup"> <div className="setup">
<Radial error={true} spin="true" progress="100"/>; <Header />
<p className="error">Error: {this.state.error}</p> <div className="image">
<div className="contents">
<RetinaImage img src="install-error.png"/>
<div className="detail">
</div>
</div>
</div>
<div className="desc">
<div className="content">
<h4>Installation Error</h4>
<h1>We&#39;re Sorry!</h1>
<p>There seem to be an unexpected error with Kitematic:</p>
<p className="error">{this.state.error}</p>
</div>
</div>
</div> </div>
); );
} else { } else {

View File

@ -3,7 +3,7 @@
height: 100%; height: 100%;
width: 100%; width: 100%;
flex-direction: row; flex-direction: row;
-webkit-app-region: drag; //-webkit-app-region: drag;
.image { .image {
display: flex; display: flex;
@ -13,12 +13,13 @@
align-items: center; align-items: center;
justify-content: flex-end; justify-content: flex-end;
padding-right: 40px; padding-right: 40px;
padding-left: 80px;
.contents { .contents {
position: relative; position: relative;
.detail { .detail {
position: absolute; position: absolute;
right: 0; right: -20px;
bottom: 0; bottom: 0;
} }
} }
@ -36,13 +37,24 @@
max-width: 320px; max-width: 320px;
h1 { h1 {
margin-top: -30px; color: @gray-darkest;
font-size: 24px; font-size: 24px;
} }
h4 {
color: @gray-lightest;
font-size: 13px;
margin-top: -30px;
}
p { p {
font-size: 13px; font-size: 13px;
color: @gray-normal; color: @gray-normal;
&.error {
color: @brand-negative;
background-color: lighten(@brand-negative, 32%);
padding: 10px;
border-radius: 4px;
-webkit-user-select: text;
}
} }
} }