Merge branch 'windows' of github.com:kitematic/kitematic into windows

Conflicts:
	package.json
	src/components/ContainerSettingsVolumes.react.js
	src/stores/SetupStore.js
This commit is contained in:
Jeffrey Morgan 2015-06-15 09:15:57 -07:00
commit 407fd508d9
14 changed files with 47 additions and 37 deletions

View File

@ -11,13 +11,12 @@
}, },
"bugs": "https://github.com/kitematic/kitematic/issues", "bugs": "https://github.com/kitematic/kitematic/issues",
"scripts": { "scripts": {
"start": "gulp", "start": "grunt",
"test": "jest -c jest-unit.json", "test": "jest -c jest-unit.json",
"integration": "jest -c jest-integration.json", "integration": "jest -c jest-integration.json",
"release": "grunt release", "release": "grunt release",
"release:beta": "grunt release --beta=true", "release:beta": "grunt release --beta=true",
"lint": "jsxhint src", "lint": "jsxhint src"
"reset": "gulp reset"
}, },
"licenses": [ "licenses": [
{ {

View File

@ -1,3 +1,4 @@
var $ = require('jquery');
var _ = require('underscore'); var _ = require('underscore');
var React = require('react'); var React = require('react');
var exec = require('exec'); var exec = require('exec');
@ -6,8 +7,10 @@ var metrics = require('../utils/MetricsUtil');
var ContainerUtil = require('../utils/ContainerUtil'); var ContainerUtil = require('../utils/ContainerUtil');
var util = require('../utils/Util'); var util = require('../utils/Util');
var machine = require('../utils/DockerMachineUtil'); var machine = require('../utils/DockerMachineUtil');
var RetinaImage = require('react-retina-image');
var classNames = require('classnames'); var classNames = require('classnames');
var resources = require('../utils/ResourcesUtil'); var resources = require('../utils/ResourcesUtil');
var dockerUtil = require('../utils/DockerUtil');
var containerActions = require('../actions/ContainerActions'); var containerActions = require('../actions/ContainerActions');
var dockerMachineUtil = require('../utils/DockerMachineUtil'); var dockerMachineUtil = require('../utils/DockerMachineUtil');

View File

@ -62,6 +62,7 @@ var ContainerHomePreview = React.createClass({
</div> </div>
</div> </div>
{frame} {frame}
<div className="frame-overlay"></div>
</div> </div>
</div> </div>
); );

View File

@ -6,6 +6,7 @@ var containerStore = require('../stores/ContainerStore');
var ContainerList = require('./ContainerList.react'); var ContainerList = require('./ContainerList.react');
var Header = require('./Header.react'); var Header = require('./Header.react');
var metrics = require('../utils/MetricsUtil'); var metrics = require('../utils/MetricsUtil');
var RetinaImage = require('react-retina-image');
var shell = require('shell'); var shell = require('shell');
var machine = require('../utils/DockerMachineUtil'); var machine = require('../utils/DockerMachineUtil');

View File

@ -139,7 +139,12 @@ var Header = React.createClass({
username = ( username = (
<div className="login-wrapper"> <div className="login-wrapper">
<div className="login no-drag" onClick={this.handleUserClick}> <div className="login no-drag" onClick={this.handleUserClick}>
<span className="icon icon-user"></span> {this.state.username} {this.state.verified ? null : '(Unverified)'} <RetinaImage src="userdropdown.png"/> <span className="icon icon-user"></span>
<span className="text">
{this.state.username}
{this.state.verified ? null : '(Unverified)'}
</span>
<RetinaImage src="userdropdown.png"/>
</div> </div>
</div> </div>
); );

View File

@ -126,7 +126,7 @@ module.exports = React.createClass({
<div className="no-results"> <div className="no-results">
<h2>Please verify your Docker Hub account email address</h2> <h2>Please verify your Docker Hub account email address</h2>
<div className="verify"> <div className="verify">
<button className="btn btn-primary btn-lg" onClick={this.handleCheckVerification}>{'I\'ve Verified My Email Address'}</button> {spinner} <button className="btn btn-primary" onClick={this.handleCheckVerification}>{'I\'ve Verified My Email Address'}</button> {spinner}
</div> </div>
<RetinaImage src="inspection.png" checkIfRetinaImgExists={false}/> <RetinaImage src="inspection.png" checkIfRetinaImgExists={false}/>
</div> </div>

View File

@ -3,6 +3,7 @@ import deepExtend from 'deep-extend';
import alt from '../alt'; import alt from '../alt';
import containerServerActions from '../actions/ContainerServerActions'; import containerServerActions from '../actions/ContainerServerActions';
import containerActions from '../actions/ContainerActions'; import containerActions from '../actions/ContainerActions';
var LogStore = require('./LogStore');
class ContainerStore { class ContainerStore {
constructor () { constructor () {
@ -87,6 +88,8 @@ class ContainerStore {
if (!containers[container.Name] || containers[container.Name].State.Updating) { if (!containers[container.Name] || containers[container.Name].State.Updating) {
return; return;
} }
// Trigger log update
LogStore.fetch(container.Name);
containers[container.Name] = container; containers[container.Name] = container;

View File

@ -149,7 +149,7 @@ var SetupStore = assign(Object.create(EventEmitter.prototype), {
var vboxNeedsInstall = !virtualBox.installed(); var vboxNeedsInstall = !virtualBox.installed();
required.download = vboxNeedsInstall && (!fs.existsSync(vboxfile) || setupUtil.checksum(vboxfile) !== virtualBox.checksum()); required.download = vboxNeedsInstall && (!fs.existsSync(vboxfile) || setupUtil.checksum(vboxfile) !== virtualBox.checksum());
required.install = vboxNeedsInstall || !virtualBox.active(); required.install = vboxNeedsInstall || (util.isWindows() && !virtualBox.active());
required.init = required.install || !(yield machine.exists()) || (yield machine.state()) !== 'Running' || !isoversion || util.compareVersions(isoversion, packagejson['docker-version']) < 0; required.init = required.install || !(yield machine.exists()) || (yield machine.state()) !== 'Running' || !isoversion || util.compareVersions(isoversion, packagejson['docker-version']) < 0;
var exists = yield machine.exists(); var exists = yield machine.exists();

View File

@ -5,6 +5,7 @@ var util = require('../utils/Util');
var hubUtil = require('../utils/HubUtil'); var hubUtil = require('../utils/HubUtil');
var repositoryServerActions = require('../actions/RepositoryServerActions'); var repositoryServerActions = require('../actions/RepositoryServerActions');
var tagServerActions = require('../actions/TagServerActions'); var tagServerActions = require('../actions/TagServerActions');
var Promise = require('bluebird');
let REGHUB2_ENDPOINT = process.env.REGHUB2_ENDPOINT || 'https://registry.hub.docker.com/v2'; let REGHUB2_ENDPOINT = process.env.REGHUB2_ENDPOINT || 'https://registry.hub.docker.com/v2';
let searchReq = null; let searchReq = null;
@ -61,7 +62,7 @@ module.exports = {
let data = JSON.parse(body); let data = JSON.parse(body);
let repos = data.repos; let repos = data.repos;
async.map(repos, (repo, cb) => { async.map(repos, (repo, cb) => {
var name = repo.repo; let name = repo.repo;
if (util.isOfficialRepo(name)) { if (util.isOfficialRepo(name)) {
name = 'library/' + name; name = 'library/' + name;
} }

View File

@ -15,7 +15,7 @@ module.exports = {
fn(args, options, (stderr, stdout, code) => { fn(args, options, (stderr, stdout, code) => {
if (code) { if (code) {
var cmd = Array.isArray(args) ? args.join(' ') : args; var cmd = Array.isArray(args) ? args.join(' ') : args;
reject(new Error(cmd + ' returned non zero exit code.\n===== Stderr =====\n ' + stderr + '\n===== Stdout =====\n' + stdout)); reject(new Error(cmd + ' returned non zero exit code. Stderr: ' + stderr));
} else { } else {
resolve(stdout); resolve(stdout);
} }

View File

@ -82,22 +82,6 @@
height: 100%; height: 100%;
z-index: 100; z-index: 100;
color: transparent; color: transparent;
transition: background-color 0.25s;
.icon {
margin-top: 40%;
display: block;
font-size: 60px;
text-align: center;
}
.text {
font-size: 20px;
text-align: center;
}
&:hover {
color: white;
background-color: @gray-darkest;
opacity: 0.75;
}
} }
} }
} }

View File

@ -17,6 +17,12 @@
display: flex; display: flex;
min-width: @sidebar-width + 1px; min-width: @sidebar-width + 1px;
} }
.right-header {
display: flex;
justify-content: flex-end;
flex: 1 0;
}
.updates { .updates {
flex: 1 auto; flex: 1 auto;
@ -27,9 +33,7 @@
} }
.logo { .logo {
position: absolute; padding: 0.9rem 1rem 0 0;
right: 1rem;
top: 0.8rem;
} }
.login-wrapper { .login-wrapper {
@ -46,15 +50,18 @@
border-right: 1px solid @color-divider; border-right: 1px solid @color-divider;
padding: 0 1rem 0 1rem; padding: 0 1rem 0 1rem;
.box-button(); .box-button();
.text {
&:active { max-width: 70px;
img, span { overflow: hidden;
-webkit-filter: brightness(0.9); text-overflow: ellipsis;
} white-space: nowrap;
} }
img { img {
margin: 0 5px; position: relative;
top: 0.1rem;
margin: 0 0rem 0 0.4rem;
width: 8px;
height: 5px;
} }
} }

View File

@ -55,7 +55,7 @@
} }
.verify { .verify {
margin: 15px 0; margin: 0.5rem 0 3rem 0;
position: relative; position: relative;
.spinner { .spinner {
@ -405,6 +405,12 @@
color: white; color: white;
border: 1px solid darken(@brand-primary, 10%); border: 1px solid darken(@brand-primary, 10%);
} }
&:active {
box-shadow: 0 0 15px fade(@brand-action, 25%);
background-color: darken(@brand-action, 5%);
border: 1px solid darken(@brand-primary, 10%);
color: white;
}
} }
} }
} }

View File

@ -203,8 +203,8 @@ input[type="text"] {
} }
&.small { &.small {
font-size: 11px; font-size: 10px;
padding: 3px 8px 3px 8px; padding: 0.3rem 0.7rem;
height: 22px; height: 22px;
.icon { .icon {
font-size: 10px; font-size: 10px;