Added a feature to recover Kitematic setup.

This commit is contained in:
Sean Li 2014-09-12 22:44:04 -07:00
parent aff459f1d3
commit 8e91ce11fc
8 changed files with 37 additions and 29 deletions

View File

@ -131,6 +131,7 @@ Installer.steps = [
},
pastMessage: 'Started the Kitematic VM',
message: 'Starting the Kitematic VM',
subMessage: '(This may take a few minutes)',
futureMessage: 'Start the Kitematic VM'
},
@ -164,6 +165,7 @@ Installer.steps = [
];
Installer.run = function (callback) {
Session.set('installing', true);
var currentStep = 0;
Session.set('currentInstallStep', currentStep);
Session.set('numberOfInstallSteps', this.steps.length);
@ -191,6 +193,7 @@ Installer.run = function (callback) {
callback(err);
} else {
// Setup Finished
Session.set('installing', false);
console.log('Setup finished.');
callback();
}

View File

@ -63,7 +63,7 @@ Handlebars.registerHelper('timeSince', function (date) {
return moment(date).fromNow();
});
Handlebars.registerHelper('isUpdating', function (date) {
Handlebars.registerHelper('isUpdating', function () {
return Session.get('isUpdating');
});
@ -145,7 +145,7 @@ Meteor.setInterval(function () {
}, 5000);
Meteor.setInterval(function () {
if (Installer.isUpToDate()) {
if (!Session.get('installing')) {
Sync.resolveWatchers(function () {});
if (!Session.get('boot2dockerOff')) {
fixBoot2DockerVM(function (err) {

View File

@ -52,4 +52,13 @@
{{/if}}
</div>
</div>
<div class="section dashboard-settings">
<div class="left-section">
<h4>Repair Kitematic</h4>
<p class="help-block">You can repair Kitematic installation if the app stops working properly.</p>
</div>
<div class="right-section">
<a onclick="trackLink('repair kitematic')" class="btn btn-negative btn-repair">Repair Kitematic</a>
</div>
</div>
</template>

View File

@ -1,3 +1,6 @@
var remote = require('remote');
var dialog = remote.require('dialog');
Template.dashboard_settings.events({
'click .btn-start-boot2docker': function (e) {
var $btn = $(e.currentTarget);
@ -36,6 +39,17 @@ Template.dashboard_settings.events({
tracking: false
}
});
},
'click .btn-repair': function () {
dialog.showMessageBox({
message: 'Repairing Kitematic will clear your current Docker VM and the state of the app. Please make sure your work is backed up. Do you wish to continue?',
buttons: ['Repair', 'Cancel']
}, function (index) {
if (index !== 0) {
return;
}
Router.go('setup_intro');
});
}
});

View File

@ -1,6 +1,6 @@
Template.setup_finish.events({
'click .finish-button': function (e) {
var enableDiagnostics = $('.install-diagonistics input').attr('checked') ? true : false;
var enableDiagnostics = $('.install-diagonistics input').prop('checked');
var status = enableDiagnostics ? 'on' : 'off';
ga('send', 'event', 'link', 'click', 'turn ' + status + ' usage analytics');
Installs.insert({version: Installer.CURRENT_VERSION});

View File

@ -52,12 +52,5 @@
</div>
{{/each}}
</div>
<div class="install-finish text-center">
{{#if installComplete}}
<a onclick="trackLink('finish install')" class="btn btn-action" href="/apps">
Start Using Kitematic
</a>
{{/if}}
</div>
</div>
</template>

View File

@ -1,18 +1,3 @@
var installStarted = false;
Template.setup_install.rendered = function() {
if(!installStarted) {
installStarted = true;
Installer.run(function (err) {
if (err) {
console.log('Setup failed.');
console.log(err);
} else {
Router.go('setup_finish');
}
});
}
};
Template.setup_install.steps = function () {
return Installer.steps.map(function (step, index) {
step.index = index;
@ -27,9 +12,6 @@ Template.setup_install.helpers({
currentInstallStepProgress: function () {
return Session.get('currentInstallStepProgress');
},
installComplete: function () {
return Session.get('currentInstallStep') === Installer.steps.length;
},
failedStep: function () {
return Session.get('failedStep');
},

View File

@ -1,9 +1,16 @@
Template.setup_intro.events({
'click .continue-button': function (e) {
Router.go('setup_install');
Installer.run(function (err) {
if (err) {
console.log('Setup failed.');
console.log(err);
} else {
Router.go('setup_finish');
}
});
e.preventDefault();
e.stopPropagation();
return false;
}
});