Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save soham2008xyz/27504dd70907e47d5bbf to your computer and use it in GitHub Desktop.
Save soham2008xyz/27504dd70907e47d5bbf to your computer and use it in GitHub Desktop.
Ionic Intro Tutorial with Splashscreen
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title>Ionic App</title>
<link href="http://code.ionicframework.com/0.9.26/css/ionic.min.css" rel="stylesheet">
<script src="http://code.ionicframework.com/0.9.26/js/ionic.bundle.min.js"></script>
</head>
<body ng-app="ionicApp" animation="slide-left-right-ios7">
<ion-nav-bar class="nav-title-slide-ios7" type="bar-default" back-button-type="button-icon" back-button-icon="icon ion-arrow-left-c"></ion-nav-bar>
<ion-nav-view></ion-nav-view>
<script id="intro.html" type="text/ng-template">
<ion-view left-buttons="leftButtons" right-buttons="rightButtons">
<ion-slide-box on-slide-changed="slideChanged(index)">
<ion-slide>
<h3>Thank you for choosing the Awesome App!</h3>
<div id="logo">
<img src="http://code.ionicframework.com/assets/img/app_icon.png">
</div>
<p>
We've worked super hard to make you happy.
</p>
<p>
But if you are angry, too bad.
</p>
</ion-slide>
<ion-slide>
<h3>Using Awesome</h3>
<div id="list">
<h5>Just three steps:</h5>
<ol>
<li>Be awesome</li>
<li>Stay awesome</li>
<li>There is no step 3</li>
</ol>
</div>
</ion-slide>
<ion-slide>
<h3>Any questions?</h3>
<p>
Too bad!
</p>
</ion-slide>
</ion-slide-box>
</ion-view>
</script>
<script id="main.html" type="text/ng-template">
<ion-view left-buttons="leftButtons" right-buttons="rightButtons" hide-back-button="true" title="'Awesome'">
<ion-content padding="true" has-header="true">
<h1>Main app here</h1>
<button class="button" ng-click="toIntro()">Do Tutorial Again</button>
</ion-content>
</ion-view>
</script>
</body>
</html>
angular.module('ionicApp', ['ionic'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('intro', {
url: '/',
templateUrl: 'intro.html',
controller: 'IntroCtrl'
})
.state('main', {
url: '/main',
templateUrl: 'main.html',
controller: 'MainCtrl'
});
$urlRouterProvider.otherwise("/");
})
.controller('IntroCtrl', function($scope, $state) {
// Called to navigate to the main app
var startApp = function() {
$state.go('main');
// Set a flag that we finished the tutorial
window.localStorage['didTutorial'] = true;
};
//No this is silly
// Check if the user already did the tutorial and skip it if so
if(window.localStorage['didTutorial'] === "true") {
console.log('Skip intro');
startApp();
}
else{
setTimeout(function () {
navigator.splashscreen.hide();
}, 750);
}
// Move to the next slide
$scope.next = function() {
$scope.$broadcast('slideBox.nextSlide');
};
// Our initial right buttons
var rightButtons = [
{
content: 'Next',
type: 'button-positive button-clear',
tap: function(e) {
// Go to the next slide on tap
$scope.next();
}
}
];
// Our initial left buttons
var leftButtons = [
{
content: 'Skip',
type: 'button-positive button-clear',
tap: function(e) {
// Start the app on tap
startApp();
}
}
];
// Bind the left and right buttons to the scope
$scope.leftButtons = leftButtons;
$scope.rightButtons = rightButtons;
// Called each time the slide changes
$scope.slideChanged = function(index) {
// Check if we should update the left buttons
if(index > 0) {
// If this is not the first slide, give it a back button
$scope.leftButtons = [
{
content: 'Back',
type: 'button-positive button-clear',
tap: function(e) {
// Move to the previous slide
$scope.$broadcast('slideBox.prevSlide');
}
}
];
} else {
// This is the first slide, use the default left buttons
$scope.leftButtons = leftButtons;
}
// If this is the last slide, set the right button to
// move to the app
if(index == 2) {
$scope.rightButtons = [
{
content: 'Start using MyApp',
type: 'button-positive button-clear',
tap: function(e) {
startApp();
}
}
];
} else {
// Otherwise, use the default buttons
$scope.rightButtons = rightButtons;
}
};
})
.controller('MainCtrl', function($scope, $state) {
console.log('MainCtrl');
setTimeout(function () {
navigator.splashscreen.hide();
}, 750);
$scope.toIntro = function(){
window.localStorage['didTutorial'] = "false";
$state.go('intro');
}
});
body {
cursor: url('http://ionicframework.com/img/finger.png'), auto;
}
.slider {
height: 100%;
}
.slider-slide {
padding-top: 80px;
color: #000;
background-color: #fff;
text-align: center;
font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
font-weight: 300;
}
#logo {
margin: 30px 0px;
}
#list {
width: 170px;
margin: 30px auto;
font-size: 20px;
}
#list ol {
margin-top: 30px;
}
#list ol li {
text-align: left;
list-style: decimal;
margin: 10px 0px;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment