From a7b513142dc7649e608dd978a38474845fd9b60f Mon Sep 17 00:00:00 2001 From: Yet Another Account <33345431+yaaccount@users.noreply.github.com> Date: Thu, 1 Nov 2018 12:12:51 +0100 Subject: [PATCH 1/2] Allow levy to be specified in the new mosaic being just created --- src/app/modules/languages/cn.js | 1 + src/app/modules/languages/de.js | 1 + src/app/modules/languages/en.js | 1 + src/app/modules/languages/es.js | 1 + src/app/modules/languages/it.js | 1 + src/app/modules/languages/jp.js | 1 + src/app/modules/languages/nl.js | 1 + src/app/modules/languages/pl.js | 1 + src/app/modules/languages/ptbr.js | 1 + src/app/modules/languages/ru.js | 1 + src/app/modules/languages/uk.js | 1 + .../mosaics/create/createMosaic.controller.js | 40 ++++++++++++--- .../modules/mosaics/create/createMosaic.html | 51 ++++++++++++++++--- 13 files changed, 88 insertions(+), 14 deletions(-) diff --git a/src/app/modules/languages/cn.js b/src/app/modules/languages/cn.js index 932c7b99..69f6bf0c 100644 --- a/src/app/modules/languages/cn.js +++ b/src/app/modules/languages/cn.js @@ -260,6 +260,7 @@ function ChineseProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: '需要征费', MOSAIC_DEFINITION_LEVY_LIMITATION: 'UI限制: 当前仅允许已拥有的马赛克作为征费。', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: '选择征费马赛克', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: '征费地址', MOSAIC_DEFINITION_LEVY_FEE_TYPE: '征费类型', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: '绝对值', diff --git a/src/app/modules/languages/de.js b/src/app/modules/languages/de.js index 895d6c72..3f68e0d9 100644 --- a/src/app/modules/languages/de.js +++ b/src/app/modules/languages/de.js @@ -263,6 +263,7 @@ function GermanProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: 'Benötigt Levy', MOSAIC_DEFINITION_LEVY_LIMITATION: 'Einschränkung der UI: Momentan können nur Mosaike als Levy verwendet werden die sich im eigenen Besitz befinden.', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: 'Levy Mosaik auswählen', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: 'Levy Adresse', MOSAIC_DEFINITION_LEVY_FEE_TYPE: 'Gebührentyp', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: 'Absolut', diff --git a/src/app/modules/languages/en.js b/src/app/modules/languages/en.js index b7748e01..ddae5d65 100644 --- a/src/app/modules/languages/en.js +++ b/src/app/modules/languages/en.js @@ -262,6 +262,7 @@ function EnglishProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: 'Requires levy', MOSAIC_DEFINITION_LEVY_LIMITATION: 'UI-limitation: right now, only owned mosaics can be used as a levy.', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: 'Select levy mosaic', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: 'Levy address', MOSAIC_DEFINITION_LEVY_FEE_TYPE: 'Fee type', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: 'Absolute', diff --git a/src/app/modules/languages/es.js b/src/app/modules/languages/es.js index e768ffcc..ba6d7bca 100644 --- a/src/app/modules/languages/es.js +++ b/src/app/modules/languages/es.js @@ -259,6 +259,7 @@ function SpanishProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: 'Impuesto requerido', MOSAIC_DEFINITION_LEVY_LIMITATION: 'Limitación de la interfaz de usuario: en este momento, solo los mosaicos en propiedad pueden ser usados como un impuesto.', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: 'Seleccionar el mosaico del impuesto', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: 'Dirección de impuesto', MOSAIC_DEFINITION_LEVY_FEE_TYPE: 'Tipo de tarifa', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: 'Fija', diff --git a/src/app/modules/languages/it.js b/src/app/modules/languages/it.js index b904b953..8d85a58a 100644 --- a/src/app/modules/languages/it.js +++ b/src/app/modules/languages/it.js @@ -259,6 +259,7 @@ function ItalianProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: 'Richiede tasse', MOSAIC_DEFINITION_LEVY_LIMITATION: 'Limitazione dell"interfaccia: per ora, solo i mosaici già creati possono essere utilizzati come tasse.', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: 'Seleziona una tessera per le tasse', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: 'Indirizzo account di destinazione fiscale', MOSAIC_DEFINITION_LEVY_FEE_TYPE: 'Tipo di tariffa', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: 'Assoluto', diff --git a/src/app/modules/languages/jp.js b/src/app/modules/languages/jp.js index f6bd3f53..4ff37195 100644 --- a/src/app/modules/languages/jp.js +++ b/src/app/modules/languages/jp.js @@ -266,6 +266,7 @@ function JapaneseProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: "徴収を要求", MOSAIC_DEFINITION_LEVY_LIMITATION: "UI制限:現在はモザイク作成者のみ徴収設定が可能です。", MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: "徴収するモザイクを選択", + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: "徴収モザイク送信先アドレス", MOSAIC_DEFINITION_LEVY_FEE_TYPE: "手数料タイプ", MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: "固定徴収方式", diff --git a/src/app/modules/languages/nl.js b/src/app/modules/languages/nl.js index 613de5e7..af63d38f 100644 --- a/src/app/modules/languages/nl.js +++ b/src/app/modules/languages/nl.js @@ -262,6 +262,7 @@ function DutchProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: 'Vereist heffing', MOSAIC_DEFINITION_LEVY_LIMITATION: 'UI-beperking: voor nu, alleen eigen mozaïeks kunnen als heffing worden gebruikt.', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: 'Selecteer een heffingsmozaïek', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: 'Heffingsadres', MOSAIC_DEFINITION_LEVY_FEE_TYPE: 'Heffingstype', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: 'Constant', diff --git a/src/app/modules/languages/pl.js b/src/app/modules/languages/pl.js index 73ef6470..e9deaa4c 100644 --- a/src/app/modules/languages/pl.js +++ b/src/app/modules/languages/pl.js @@ -263,6 +263,7 @@ function PolishProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: 'Wymaga specjalnej opłaty', MOSAIC_DEFINITION_LEVY_LIMITATION: 'Ogranieczenie UI: obecnie tylko posiadane mozaiki mogą zostać użyte do specjalnej opłaty.', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: 'Wybierz mozaikę do specjalnej opłaty', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: 'Adres specjalej opłaty', MOSAIC_DEFINITION_LEVY_FEE_TYPE: 'Typ opłaty', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: 'Stała', diff --git a/src/app/modules/languages/ptbr.js b/src/app/modules/languages/ptbr.js index c2ba3b25..35285c25 100644 --- a/src/app/modules/languages/ptbr.js +++ b/src/app/modules/languages/ptbr.js @@ -259,6 +259,7 @@ function PortugueseBRProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: 'Requer imposto', MOSAIC_DEFINITION_LEVY_LIMITATION: 'Limitação da interface: por enquanto, apenas mosaicos já criados podem ser usados como imposto.', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: 'Selecione um mosaico para imposto', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: 'Endereço da conta destino de impostos', MOSAIC_DEFINITION_LEVY_FEE_TYPE: 'Tipo de taxa', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: 'Absoluta', diff --git a/src/app/modules/languages/ru.js b/src/app/modules/languages/ru.js index 6a81b173..f3133d08 100644 --- a/src/app/modules/languages/ru.js +++ b/src/app/modules/languages/ru.js @@ -263,6 +263,7 @@ function RussianProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: 'Требовать налог', MOSAIC_DEFINITION_LEVY_LIMITATION: 'UI-ограничение: в настоящее время в качестве налога допускается только мозайка.', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: 'Выберите облагаемую налогом мозайку', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: 'Номер счёта налоговой', MOSAIC_DEFINITION_LEVY_FEE_TYPE: 'Тип сбора', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: 'Фиксированный', diff --git a/src/app/modules/languages/uk.js b/src/app/modules/languages/uk.js index ab0d5604..13537b89 100644 --- a/src/app/modules/languages/uk.js +++ b/src/app/modules/languages/uk.js @@ -262,6 +262,7 @@ function UkrainianProvider($translateProvider) { MOSAIC_DEFINITION_REQUIRES_LEVY: 'Потребує оподаткування', MOSAIC_DEFINITION_LEVY_LIMITATION: 'Обмеження інтерфейсу користувача: на даний час у якості податку дозволяється використовувати тільки власні мозаїки', MOSAIC_DEFINITION_LEVY_SELECT_MOSAIC: 'Вибрати мозаїку для оподаткування', + MOSAIC_DEFINITION_LEVY_IS_NEW_MOSAIC: 'Use the new mosaic for levy', MOSAIC_DEFINITION_LEVY_ADDRESS: 'Рахунок для податку', MOSAIC_DEFINITION_LEVY_FEE_TYPE: 'Тип комісії', MOSAIC_DEFINITION_LEVY_FEE_TYPE_1: 'Абсолютна', diff --git a/src/app/modules/mosaics/create/createMosaic.controller.js b/src/app/modules/mosaics/create/createMosaic.controller.js index 5b96902d..6294547c 100644 --- a/src/app/modules/mosaics/create/createMosaic.controller.js +++ b/src/app/modules/mosaics/create/createMosaic.controller.js @@ -40,6 +40,8 @@ class createMosaicCtrl { this.formData.multisigAccount = this._DataStore.account.metaData.meta.cosignatoryOf.length == 0 ? '' : this._DataStore.account.metaData.meta.cosignatoryOf[0]; // Has no levy by default this.hasLevy = false; + // Levy will be in the newly created mosaic + this.levyInNewlyCreatedMosaic = false; // Mosaics owned names for current account this.currentAccountMosaicNames = ''; // Selected mosaic from view @@ -65,7 +67,7 @@ class createMosaicCtrl { /** * Set name to lowercase and check it */ - processMosaicName(){ + processMosaicName() { // Lowercase mosaic name this.formData.mosaicName = this._$filter('lowercase')(this.formData.mosaicName); // Check mosaic name validity @@ -73,6 +75,7 @@ class createMosaicCtrl { this._Alert.invalidMosaicName(); return; } + this.updateLevyMosaic(this.hasLevy, this.levyInNewlyCreatedMosaic); this.prepareTransaction(); } @@ -99,18 +102,43 @@ class createMosaicCtrl { /** * Update levy mosaic data * - * @note: Used in view (ng-update) on hasLevy and selectedMosaic changes + * @note: Used in view (ng-update) on hasLevy, selectedMosaic and levyInNewlyCreatedMosaic changes * - * @param {boolean} val - true or false + * @param {boolean} _hasLevy - true or false + * @param {boolean} _levyInNewlyCreatedMosaic - true or false */ - updateLevyMosaic(val) { - if (val) { - this.formData.levy.mosaic = this.mosaicOwned[this.selectedMosaic].mosaicId; + updateLevyMosaic(_hasLevy, _levyInNewlyCreatedMosaic) { + if (_hasLevy) { + if (_levyInNewlyCreatedMosaic) { + this.formData.levy.mosaic = { + // create mosaicId structure by hand + "namespaceId": this.formData.namespaceParent.fqn, + "name": this.formData.mosaicName + }; + } else { + this.formData.levy.mosaic = this.mosaicOwned[this.selectedMosaic].mosaicId; + } } else { this.formData.levy.mosaic = null; } } + /** + * Gets divisibility of selectedMosaic + * + * @note: used in view in output formatting and calculations for levy examples + */ + selectedMosaicDivisibility() { + var props = this._DataStore.mosaic.metaData[this.selectedMosaic].mosaicDefinition.properties; + var proplen = props.length; + for(var i=0;i - @@ -144,7 +144,7 @@

{{ 'MOSAIC_DEFINITION_MOSAIC_PROPERTIES' | translate }}

- + @@ -190,13 +190,21 @@

{{ 'GENERAL_LEVY' | translate }}

+ +
+
+ + +
+
- + {{ $ctrl.formData.namespaceParent.fqn }}:{{ $ctrl.formData.mosaicName }} +
@@ -220,7 +228,16 @@

{{ 'GENERAL_LEVY' | translate }}

- + + + + + + + + + +
@@ -245,22 +262,40 @@

{{ 'GENERAL_LEVY' | translate }}

@@ -270,18 +270,18 @@

{{ 'GENERAL_LEVY' | translate }}

{{ 'MOSAIC_DEFINITION_LEVY_FEE_TYPE_1_NOTE' | translate }} {{($ctrl.formData.levy.fee | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[0]}} - .{{($ctrl.formData.levy.fee | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[1]}} {{ $ctrl.formData.namespaceParent.fqn }}:{{ $ctrl.formData.mosaicName }} + .{{ ($ctrl.formData.levy.fee | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[1]}} {{$ctrl.formData.namespaceParent.fqn}}:{{$ctrl.formData.mosaicName}}
{{ 'MOSAIC_DEFINITION_LEVY_FEE_TYPE_2_NOTE' | translate }}
  • {{ 'MOSAIC_DEFINITION_LEVY_FEE_TYPE_2_NOTE_2' | translate }} - {{(amountSend | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[0]}} - .{{(amountSend | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[1]}} + {{(amountSend*$ctrl.Math.pow(10, $ctrl.selectedMosaicDivisibility()) | fmtSupplyRaw:$ctrl.selectedMosaicDivisibility())[0]}} + .{{(amountSend*$ctrl.Math.pow(10, $ctrl.selectedMosaicDivisibility()) | fmtSupplyRaw:$ctrl.selectedMosaicDivisibility())[1]}} {{$ctrl.formData.namespaceParent.fqn}}:{{$ctrl.formData.mosaicName}} {{ 'MOSAIC_DEFINITION_LEVY_FEE_TYPE_2_NOTE_3' | translate }} - {{( (amountSend * $ctrl.formData.levy.fee / 10000) | fmtSupply:$ctrl.mosaicOwned[$ctrl.selectedMosaic].mosaicId:$ctrl._DataStore.mosaic.metaData)[0]}} - .{{( (amountSend * $ctrl.formData.levy.fee / 10000) | fmtSupply:$ctrl.mosaicOwned[$ctrl.selectedMosaic].mosaicId:$ctrl._DataStore.mosaic.metaData)[1]}} {{$ctrl.selectedMosaic}} + {{( (amountSend * $ctrl.Math.pow(10, $ctrl.selectedMosaicDivisibility()) * $ctrl.formData.levy.fee / 10000) | fmtSupply:$ctrl.mosaicOwned[$ctrl.selectedMosaic].mosaicId:$ctrl._DataStore.mosaic.metaData)[0]}} + .{{((amountSend * $ctrl.Math.pow(10, $ctrl.selectedMosaicDivisibility()) * $ctrl.formData.levy.fee / 10000) | fmtSupply:$ctrl.mosaicOwned[$ctrl.selectedMosaic].mosaicId:$ctrl._DataStore.mosaic.metaData)[1]}} {{$ctrl.selectedMosaic}}
@@ -290,11 +290,11 @@

{{ 'GENERAL_LEVY' | translate }}

  • {{ 'MOSAIC_DEFINITION_LEVY_FEE_TYPE_2_NOTE_2' | translate }} - {{(amountSend | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[0]}} - .{{(amountSend | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[1]}} + {{(amountSend*$ctrl.Math.pow(10, $ctrl.formData.properties.divisibility) | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[0]}} + .{{(amountSend*$ctrl.Math.pow(10, $ctrl.formData.properties.divisibility) | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[1]}} {{$ctrl.formData.namespaceParent.fqn}}:{{$ctrl.formData.mosaicName}} {{ 'MOSAIC_DEFINITION_LEVY_FEE_TYPE_2_NOTE_3' | translate }} - {{( (amountSend * $ctrl.formData.levy.fee / 10000) | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[0]}} - .{{( (amountSend * $ctrl.formData.levy.fee / 10000) | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[1]}} {{ $ctrl.formData.namespaceParent.fqn }}:{{ $ctrl.formData.mosaicName }} + {{( (amountSend * $ctrl.Math.pow(10, $ctrl.formData.properties.divisibility) * $ctrl.formData.levy.fee / 10000) | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[0]}} + .{{((amountSend * $ctrl.Math.pow(10, $ctrl.formData.properties.divisibility) * $ctrl.formData.levy.fee / 10000) | fmtSupplyRaw:$ctrl.formData.properties.divisibility)[1]}} {{$ctrl.formData.namespaceParent.fqn}}:{{$ctrl.formData.mosaicName}}