fix form binding

This commit is contained in:
Matias Alejo Garcia 2014-12-04 23:32:02 -03:00 committed by bechi
commit d719697c30
2 changed files with 146 additions and 80 deletions

View file

@ -8,6 +8,9 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun
identityService.goWalletHome(); identityService.goWalletHome();
$scope.isMobile = isMobile.any(); $scope.isMobile = isMobile.any();
$scope.createStep = 'storage';
$scope.useLocalstorage = false;
pinService.makePinInput($scope, 'newpin', function(newValue) { pinService.makePinInput($scope, 'newpin', function(newValue) {
_firstpin = newValue; _firstpin = newValue;
$scope.askForPin = 2; $scope.askForPin = 2;
@ -47,10 +50,37 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun
}); });
}; };
$scope.setStorage = function(useLocalstorage) {
console.log('[createProfile.js.53:useLocalstorage:]', useLocalstorage); //TODO
console.log('[createProfile.js.53:useLocalstorage:]', $scope.useLocalstorage); //TODO
//settingsService.save({...})
$scope.createStep = 'email';
$scope.useEmail = !useLocalstorage;
$scope.useLocalstorage = useLocalstorage;
$timeout(function() {
$scope.$digest();
}, 1);
};
$scope.setEmailOrUsername = function(form) {
console.log('[createProfile.js.53:useLocalstorage:]', $scope.useLocalstorage); //TODO
$scope.userOrEmail = $scope.useLocalstorage ? form.username.$modelValue : form.email.$modelValue;
preconditions.checkState($scope.userOrEmail);
$scope.createStep = 'pass';
$timeout(function() {
$scope.$digest();
}, 1);
};
$scope.createDefaultWallet = function() { $scope.createDefaultWallet = function() {
$rootScope.hideNavigation = false; $rootScope.hideNavigation = false;
identityService.createDefaultWallet(function(err) { identityService.createDefaultWallet(function(err) {
$scope.askForPin =0 ; $scope.askForPin = 0;
$scope.loading = false; $scope.loading = false;
if (err) { if (err) {
@ -67,7 +97,7 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun
return; return;
} }
$scope.loading = true; $scope.loading = true;
identityService.create(form.email.$modelValue, form.password.$modelValue, function(err) { identityService.create( $scope.userOrEmail, form.password.$modelValue, function(err) {
$scope.loading = false; $scope.loading = false;
if (err) { if (err) {
@ -76,15 +106,13 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun
msg = 'This profile already exists' msg = 'This profile already exists'
} }
$timeout(function() { $timeout(function() {
form.email.$setViewValue(''); form.password.$setViewValue('');
form.email.$render(); form.password.$render();
form.password.$setViewValue(''); form.repeatpassword.$setViewValue('');
form.password.$render(); form.repeatpassword.$render();
form.repeatpassword.$setViewValue(''); form.$setPristine();
form.repeatpassword.$render(); $scope.error = msg;
form.$setPristine(); }, 1);
$scope.error = msg;
},1);
$scope.error = msg; $scope.error = msg;
} else { } else {
$scope.error = null; $scope.error = null;

View file

@ -36,109 +36,148 @@
</div> </div>
<form ng-show="0" name="profileForm" ng-submit="createProfile(profileForm)" novalidate> <form ng-show="createStep == 'storage' " novalidate>
<tabset> <tabset>
<tab heading="In the cloud" style="width: 50%;"> <tab heading="In the cloud" style="width: 50%;" ng-click="useLocalstorage=false">
<div ng-if="!useLocalstorage">
<div class="line-b"> <div class="line-b">
<div class="bg-circle"><i class="icon-wallet"></i></div> <div class="bg-circle"><i class="icon-wallet"></i>
</div>
<span class="text-gray">Access your wallets anywhere</span> <span class="text-gray">Access your wallets anywhere</span>
</div> </div>
<div class="line-b"> <div class="line-b">
<div class="bg-circle"><i class="icon-download"></i></div> <div class="bg-circle"><i class="icon-download"></i>
</div>
<span class="text-gray">Backups managed by the server</span> <span class="text-gray">Backups managed by the server</span>
</div> </div>
<div class=""> <div class="">
<div class="bg-circle"><i class="icon-email"></i></div> <div class="bg-circle"><i class="icon-email"></i>
</div>
<span class="text-gray">Email address confirmation needed</span> <span class="text-gray">Email address confirmation needed</span>
</div> </div>
</tab> </div>
<tab heading="In your device" style="width: 50%;"> <button translate class="button primary radius expand m0" ng-click="setStorage(useLocalstorage)">
Create in the cloud
</button>
</tab>
<tab heading="In your device" style="width: 50%;" ng-click="useLocalstorage=true">
<div ng-if="useLocalstorage">
<div class="line-b"> <div class="line-b">
<div class="bg-circle"><i class="icon-wallet"></i></div> <div class="bg-circle"><i class="icon-wallet"></i>
<span class="text-gray">Access your wallets anywhere</span> </div>
<span class="text-gray">Todo1</span>
</div> </div>
<div class="line-b"> <div class="line-b">
<div class="bg-circle"><i class="icon-download"></i></div> <div class="bg-circle"><i class="icon-download"></i>
<span class="text-gray">Backups managed by the server</span> </div>
<span class="text-gray">Todo2</span>
</div> </div>
<div class=""> <div class="">
<div class="bg-circle"><i class="icon-email"></i></div> <div class="bg-circle"><i class="icon-email"></i>
<span class="text-gray">Email address confirmation needed</span> </div>
<span class="text-gray">Todo3</span>
</div> </div>
</tab> </div>
</tabset> <button translate class="button primary radius expand m0" ng-click="setStorage(useLocalstorage)">
<button translate type="submit" class="button primary radius expand m0" ng-disabled="profileForm.$invalid || loading"> Create in this device
Create </button>
</button> </tab>
</tabset>
<div class="box-setup-footer">
<div class="left">
<a class="text-gray" href="#!/">
<i class="icon-arrow-left4"></i>
<span translate>Back</span>
</a>
</div>
</div>
</form> </form>
<form ng-show="0" name="profileForm" ng-submit="createProfile(profileForm)" novalidate> <form ng-show="createStep == 'email'" name="emailForm" ng-submit="setEmailOrUsername(emailForm)" novalidate>
<div class="box-setup"> <div class="box-setup">
<div class="m5b text-right">
<span translate class="has-error size-12" ng-show="profileForm.email.$invalid &&
!profileForm.email.$pristine"> <div ng-if="useLocalstorage"> [x] Creating in this device </div>
<span class="icon-input"><i class="fi-x"></i></span> <div ng-if="!useLocalstorage"> [x] Creating in the cloud </div>
Not valid
</span> <div class="m5b text-right" ng-if="useEmail">
<span class="icon-input" ng-show="!profileForm.email.$invalid && <span translate class="has-error size-12" ng-show="emailForm.email.$invalid &&
!profileForm.email.$pristine"><i class="fi-check"></i></span> !emailForm.email.$pristine">
</div> <span class="icon-input"><i class="fi-x"></i></span>
Not valid
<div class="input"> </span>
<input type="email" ng-model="email" class="form-control fi-email" name="email" placeholder="Email" <span class="icon-input" ng-show="!emailForm.email.$invalid &&
show-focus="!isMobile" required> !emailForm.email.$pristine"><i class="fi-check"></i></span>
<i class="icon-email"></i> </div>
</div>
<div class="input" ng-if="useEmail">
<input type="email" ng-model="email" class="form-control fi-email" name="email" placeholder="Email" required auto-focus="!isMobile">
<i class="icon-email"></i>
</div>
<div class="input" ng-if="!useEmail">
<input type="text" ng-model="username" class="form-control fi-user" name="username" placeholder="Username" required auto-focus>
<i class="icon-user"></i>
</div>
</div> </div>
<button translate type="submit" class="button primary radius expand m0" ng-disabled="profileForm.$invalid || loading"> <button translate type="submit" class="button primary radius expand m0" ng-disabled="(useEmail && emailForm.email.$invalid) || (!useEmail && emailForm.username.$invalid)">
Create Next
</button> </button
</form>
<form ng-show="1" name="profileForm" ng-submit="createProfile(profileForm)" novalidate> >
<div class="input"> <div class="box-setup-footer">
<input id="password" type="password" ng-model="$parent.password" <div class="left">
class="form-control" name="password" placeholder="{{'Choose a password'|translate}}" check-strength="passwordStrength" <a class="text-gray" ng-click="createStep='storage'">
tooltip-html-unsafe="Password strength: <b>{{passwordStrength}}</b><br/><span class='size-12'>Tip: Use lower and uppercase, numbers and symbols</span>" tooltip-trigger="focus" required tooltip-placement="top"> <i class="icon-arrow-left4"></i>
<i class="icon-locked"></i> <span translate>Back</span>
</a>
</div>
</div> </div>
</form>
<form ng-show="createStep == 'pass'" name="passForm" ng-submit="createProfile(passForm)" novalidate>
<div ng-if="useLocalstorage"> [x] Creating in this device </div>
<div ng-if="!useLocalstorage"> [x] Creating in the cloud </div>
<div > -&gt; {{userOrEmail}} </div>
<div class="input">
<input id="password" type="password" ng-model="$parent.password" class="form-control" name="password" placeholder="{{'Choose a password'|translate}}" check-strength="passwordStrength" tooltip-html-unsafe="Password strength: <b>{{passwordStrength}}</b><br/><span class='size-12'>Tip: Use lower and uppercase, numbers and symbols</span>" tooltip-trigger="focus" required tooltip-placement="top">
<i class="icon-locked"></i>
</div>
<div class="m5b text-right"> <div class="m5b text-right">
<span translate class="has-error size-12" ng-show="profileForm.repeatpassword.$dirty && <span translate class="has-error size-12" ng-show="passForm.repeatpassword.$dirty &&
profileForm.repeatpassword.$invalid"> passForm.repeatpassword.$invalid">
<span class="icon-input"><i class="fi-x"></i></span> <span class="icon-input"><i class="fi-x"></i></span>
{{'Passwords must match'|translate}} {{'Passwords must match'|translate}}
</span> </span>
<span class="icon-input" ng-show="profileForm.repeatpassword.$dirty && <span class="icon-input" ng-show="passForm.repeatpassword.$dirty &&
!profileForm.repeatpassword.$invalid"><i class="fi-check"></i></span> !passForm.repeatpassword.$invalid"><i class="fi-check"></i></span>
</div> </div>
<div class="input"> <div class="input">
<input type="password" ng-model="repeatpassword" class="input form-control" name="repeatpassword" placeholder="{{'Repeat password'|translate}}" match="password" required> <input type="password" ng-model="repeatpassword" class="input form-control" name="repeatpassword" placeholder="{{'Repeat password'|translate}}" match="password" required>
<i class="icon-locked"></i> <i class="icon-locked"></i>
</div> </div>
<button translate type="submit" class="button primary radius expand m0" ng-disabled="profileForm.$invalid || loading"> <button translate type="submit" class="button primary radius expand m0" ng-disabled="passForm.$invalid || loading">
Create Create Profile
</button> </button>
<div class="box-setup-footer">
<div class="left">
<a class="text-gray" ng-click="createStep='email'">
<i class="icon-arrow-left4"></i>
<span translate>Back</span>
</a>
</div>
</div>
</form> </form>
<div class="box-setup-footer">
<div class="left">
<a class="text-gray" href="#!/">
<i class="icon-arrow-left4"></i>
<span translate>Back</span>
</a>
</div>
<div class="right">
<a class="right size-12 text-gray" href="#!/settings">
<i class="icon-wrench"></i>
<span translate>Settings</span>
</a>
</div>
</div>
</div> </div>
</div> </div>
@ -173,15 +212,14 @@
</a> </a>
</div> </div>
<div class="large-6 medium-6 small-6 columns text-right"> <div class="large-6 medium-6 small-6 columns text-right">
<button translate type="submit" class="button primary radius expand m0" <button translate type="submit" class="button primary radius expand m0" ng-disabled="setPinForm.$invalid || error">
ng-disabled="setPinForm.$invalid || error"> OK
OK
</button> </button>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>