diff --git a/config.xml b/config.xml index 7d32e1039369974f56b8079029194eecbd2c8f46..52f2ad6b107c50a39ebd4a0982867adac9f2ae79 100644 --- a/config.xml +++ b/config.xml @@ -3,7 +3,7 @@ xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" id="fr.duniter.cesium" - version="0.1.13" + version="0.1.14" android-versionCode="2" > <name>Cesium</name> diff --git a/package.json b/package.json index 468229f419eae5909b84ef62660f979fb026abd0..425709cd0c2087d1bcdfaab9391bd8cbdc9243a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cesium", - "version": "0.1.13", + "version": "0.1.14", "description": "A webapp client for Duniter network", "dependencies": { "gulp": "^3.9.1", diff --git a/www/i18n/locale-en.json b/www/i18n/locale-en.json index 533b7b618a5dd04c86656449acf136bc916b25bd..530787287142245da55e26e16925ef4857f00ae5 100644 --- a/www/i18n/locale-en.json +++ b/www/i18n/locale-en.json @@ -92,7 +92,9 @@ "TIME": "Current time", "POW_MIN": "Common difficulty", "RULES_DIVIDER": "Rules", - "C_RULE": "c" + "C_RULE": "c", + "UD_RULE": "Universal dividend (formula)", + "SIG_QTY_RULE": "Required certifications" } }, "PEER": { diff --git a/www/i18n/locale-fr-FR.json b/www/i18n/locale-fr-FR.json index 773d5f1342bc5a76fbf512db02cfa25819c317be..8c84ceef710160f527092a6dcd499ec886ccffac 100644 --- a/www/i18n/locale-fr-FR.json +++ b/www/i18n/locale-fr-FR.json @@ -23,7 +23,7 @@ "LANGUAGE": "Langue", "BTN_PICTURE_DELETE": "Supprimer", "BTN_PICTURE_FAVORISE": "Principale", - "UNIVERSAL_DIVIDEND": "Dividende universel", + "UNIVERSAL_DIVIDEND": "Dividend universel", "UD": "DU" }, "SYSTEM": { @@ -92,7 +92,9 @@ "TIME": "Heure de la blockchain", "POW_MIN": "Niveau de difficulté", "RULES_DIVIDER": "Règles", - "C_RULE": "c" + "C_RULE": "c", + "UD_RULE": "Dividend universel (formule)", + "SIG_QTY_RULE": "Certifications requises" } }, "PEER": { diff --git a/www/js/app.js b/www/js/app.js index 89f1b61e9e8077d20d6a3c00be7c05088ad13503..36c6aa4c6c381d2eedeb6c6d10eea33589405254 100644 --- a/www/js/app.js +++ b/www/js/app.js @@ -39,6 +39,14 @@ angular.module('cesium', ['ionic', 'ngCordova', 'ionic-material', 'ngMessages', }; }) + .filter('formatPeriod', function() { + return function(input) { + if (!input) {return null;} + var duration = moment(0).startOf('minute').from(moment(parseInt(input)*1000), true); + return duration.split(" ").slice(-1)[0]; // keep only the last word (e.g. remove "un" "a"...) + }; + }) + .filter('abbreviate', function() { return function(input) { var unit = '', sepChars = ['-', '_', ' '], currency = input || ''; diff --git a/www/js/config.js b/www/js/config.js index 5fe2d22f6daedaa79884f132433d88a2f0a9f0ef..b5ccd9cfc7ff5d13e7044fcf7c63f134eca9db2c 100644 --- a/www/js/config.js +++ b/www/js/config.js @@ -14,8 +14,8 @@ angular.module("cesium.config", []) "TIMEOUT": 4000, "DEBUG": false, "NATIVE_TRANSITION": false, - "VERSION": "0.1.13", - "BUILD_DATE": "2016-06-09T11:59:47.439Z" + "VERSION": "0.1.14", + "BUILD_DATE": "2016-06-09T12:48:28.564Z" }) ; \ No newline at end of file diff --git a/www/js/controllers/currency-controllers.js b/www/js/controllers/currency-controllers.js index 525b4d0fb1354a225059ba3ad172eabaaa206c98..c2b8c6abb4deaee41619f602c486f063f82b6d2f 100644 --- a/www/js/controllers/currency-controllers.js +++ b/www/js/controllers/currency-controllers.js @@ -201,6 +201,8 @@ function CurrencyViewController($scope, $rootScope, $state, BMA, $q, UIUtils, $i $scope.c = json.c; $scope.baseUnit = json.currency; $scope.unit = json.currency; + $scope.dt = json.dt; + $scope.sigQty = json.sigQty; }), // Get the current block informations diff --git a/www/js/controllers/transfer-controllers.js b/www/js/controllers/transfer-controllers.js index 0f736cec0201d349a38b4e1a1cc45a9482c90927..05daf01e0c9aaf7defae12e663e361b71c0a98da 100644 --- a/www/js/controllers/transfer-controllers.js +++ b/www/js/controllers/transfer-controllers.js @@ -186,6 +186,14 @@ function TransferModalController($scope, $rootScope, $ionicModal, $state, BMA, W $scope.$watch('formData.useRelative', $scope.onUseRelativeChanged, true); $scope.$watch('walletData.balance', $scope.onUseRelativeChanged, true); + // When changing use comment + $scope.onUseCommentChanged = function() { + if (!$scope.formData.useComment) { + $scope.formData.comment = null; // reset comment only when disable + } + } + $scope.$watch('formData.useComment', $scope.onUseCommentChanged, true); + $scope.openWotLookup = function() { $scope.lookupModal.show(); }; @@ -204,8 +212,7 @@ function TransferModalController($scope, $rootScope, $ionicModal, $state, BMA, W amount = $scope.walletData.currentUD * amount.replace(new RegExp('[.,]'), '.'); } - var comment = $scope.formData.useComment ? $scope.formData.comment : null; - Wallet.transfer($scope.formData.destPub, amount, comment) + Wallet.transfer($scope.formData.destPub, amount, $scope.formData.comment) .then(function() { var callback = $scope.formData.callback; $scope.formData = {}; // Reset form data diff --git a/www/templates/currency/tabs/view_parameters.html b/www/templates/currency/tabs/view_parameters.html index 42b52af7e454f44c7fef19ae8425136a505894f6..68dfcf10da589fd1d1ad17fcc02f9f0f92024d0a 100644 --- a/www/templates/currency/tabs/view_parameters.html +++ b/www/templates/currency/tabs/view_parameters.html @@ -40,13 +40,13 @@ <a class="item item-icon-left" ui-sref="app.currency_ud"> <i class="icon ion-load-c"></i> <span translate>CURRENCY.VIEW.UD</span> - <span class="badge badge-royal">{{UD | formatInteger}} {{unit | abbreviate}}<sub>{{udUnit | abbreviate}}</span> + <span class="badge badge-royal">{{UD | formatInteger}} {{unit | abbreviate}}<sub>{{udUnit | abbreviate}}</sub> / {{dt | formatPeriod}}</span> </a> <a class="item item-icon-left" href="#"> <i class="icon ion-arrow-graph-up-right"></i> <span translate>CURRENCY.VIEW.C_ACTUAL</span> - <span class="badge badge-stable">{{cactual | formatInteger}} %</span> + <span class="badge badge-stable">{{cactual | formatInteger}}% / {{dt | formatPeriod}}</span> </a> <div class="item item-toggle dark"> @@ -79,15 +79,21 @@ <span translate>CURRENCY.VIEW.RULES_DIVIDER</span> </div> - <a class="item item-icon-left" href="#"> + <ion-item class="item item-icon-left"> <i class="icon ion-arrow-graph-up-right"></i> <span translate>CURRENCY.VIEW.C_RULE</span> - <span class="badge badge-stable">{{c*100 | formatInteger}}%</span> - </a> + <span class="badge badge-stable">{{c*100 | formatInteger}}% / {{dt | formatPeriod}}</span> + </ion-item> - <a class="item item-icon-left" href="#"> + <ion-item class="item item-icon-left"> <i class="icon ion-load-c"></i> - <span translate>CURRENCY.VIEW.UD</span> + <span translate>CURRENCY.VIEW.UD_RULE</span> <span class="item-note">MAX(UD<sub>t-1</sub>, c*M/N)</span> - </a> + </ion-item> + + <ion-item class="item-icon-left"> + <i class="icon ion-ribbon-b"></i> + <span translate>CURRENCY.VIEW.SIG_QTY_RULE</span> + <span class="badge badge-stable">{{sigQty}}</span> + </ion-item> </div> diff --git a/www/templates/wallet/transfer_form.html b/www/templates/wallet/transfer_form.html index 2f8370ad1f05ea747cdf4b03b110366071c86967..541acc2328af2ae86a1362dcf5fa105f3ca0fa9a 100644 --- a/www/templates/wallet/transfer_form.html +++ b/www/templates/wallet/transfer_form.html @@ -20,13 +20,14 @@ ng-class="{'badge-assertive': (convertedBalance <= 0 || (formData.amount && convertedBalance < formData.amount)), 'badge-balanced': (convertedBalance > 0 && (!formData.amount || convertedBalance >= formData.amount)) }"> <ion-spinner icon="android" ng-if="!walletData.pubkey"></ion-spinner> <span ng-if="walletData.pubkey && !walletData.isMember"> - {{walletData.pubkey| formatPubkey}} / + {{walletData.pubkey| formatPubkey}} ( </span> <span ng-if="walletData.isMember"> - {{walletData.uid}} / + {{walletData.uid}} ( </span> <span ng-if="walletData.pubkey && !formData.useRelative">{{convertedBalance | formatInteger}} {{unit | abbreviate}}</span> <span ng-if="walletData.pubkey && formData.useRelative">{{convertedBalance | formatDecimal}} {{'COMMON.UD' | translate}}<sub>{{unit | abbreviate}}</sub></span> + ) </span> </span> @@ -42,7 +43,7 @@ <span class="input-label">{{'TRANSFER.AMOUNT' | translate}} ({{'COMMON.UD' | translate}}<sub>{{unit | abbreviate}}</sub>)</span> <input type="text" name="amount" placeholder="{{'TRANSFER.AMOUNT_HELP' | translate}} ({{'COMMON.UD' | translate}} {{unit | abbreviate}})" ng-model="formData.amount" required> - <i class="icon ion-android-more-vertical"ng-click="unitPopover.show($event)" > + <i class="gray icon ion-android-more-vertical"ng-click="unitPopover.show($event)" > </i> </div> <div class="form-errors" @@ -54,7 +55,7 @@ </div> <!-- Enable comment ? --> - <div class="item item-content item-toggle dark"> + <div class="item item-content item-toggle dark visible-xs visible-sm"> <span class="input-label gray">{{'TRANSFER.BTN_ADD_COMMENT' | translate}}</span> <label class="toggle toggle-royal"> <input type="checkbox" ng-model="formData.useComment"> @@ -65,7 +66,17 @@ </div> <!-- Comment --> - <label class="item item-input item-floating-label" + <label class="item item-input item-floating-label hidden-xs hidden-sm" + ng-class="{'item-input-error': transferForm.$submitted && transferForm.comment.$invalid}"> + <span class="input-label">{{'TRANSFER.COMMENT' | translate}}</span> + <textarea placeholder="{{'TRANSFER.COMMENT_HELP' | translate}}" + name="comment" + ng-model="formData.comment" + ng-maxlength="255" + ng-pattern="commentPattern"> + </textarea> + </label> + <label class="item item-input item-floating-label visible-xs visible-sm" ng-if="formData.useComment" ng-class="{'item-input-error': transferForm.$submitted && transferForm.comment.$invalid}"> <span class="input-label">{{'TRANSFER.COMMENT' | translate}}</span> @@ -73,9 +84,8 @@ name="comment" ng-model="formData.comment" ng-maxlength="255" - ng-pattern="commentPattern" - > - </textarea> + ng-pattern="commentPattern"> + </textarea> </label> <div class="form-errors" ng-show="transferForm.$submitted && transferForm.comment.$error"