You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2018/09/12 08:26:09 UTC

[2/8] ignite git commit: IGNITE-9508 Web Console: Refactored legacy pug mixins.

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug
index 2c32383..76633f3 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug
@@ -26,8 +26,14 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
     panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
         .pca-form-column-6.pc-form-grid-row
             .pc-form-grid-col-30
-                +number('Public:', model + '.publicThreadPoolSize', '"publicThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
-                    'Thread pool that is in charge of processing ComputeJob, GridJobs and user messages sent to node')
+                +form-field__number({
+                    label: 'Public:',
+                    model: model + '.publicThreadPoolSize',
+                    name: '"publicThreadPoolSize"',
+                    placeholder: 'max(8, availableProcessors) * 2',
+                    min: '1',
+                    tip: 'Thread pool that is in charge of processing ComputeJob, GridJobs and user messages sent to node'
+                })
             .pc-form-grid-col-30
                 +form-field__number({
                     label: 'System:',
@@ -38,14 +44,32 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
                     tip: 'Thread pool that is in charge of processing internal system messages'
                 })
             .pc-form-grid-col-30
-                +number('Service:', model + '.serviceThreadPoolSize', '"serviceThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
-                    'Thread pool that is in charge of processing proxy invocation')
+                +form-field__number({
+                    label: 'Service:',
+                    model: model + '.serviceThreadPoolSize',
+                    name: '"serviceThreadPoolSize"',
+                    placeholder: 'max(8, availableProcessors) * 2',
+                    min: '1',
+                    tip: 'Thread pool that is in charge of processing proxy invocation'
+                })
             .pc-form-grid-col-30
-                +number('Management:', model + '.managementThreadPoolSize', '"managementThreadPoolSize"', 'true', '4', '1',
-                    'Thread pool that is in charge of processing internal and Visor ComputeJob, GridJobs')
+                +form-field__number({
+                    label: 'Management:',
+                    model: model + '.managementThreadPoolSize',
+                    name: '"managementThreadPoolSize"',
+                    placeholder: '4',
+                    min: '1',
+                    tip: 'Thread pool that is in charge of processing internal and Visor ComputeJob, GridJobs'
+                })
             .pc-form-grid-col-30
-                +number('IGFS:', model + '.igfsThreadPoolSize', '"igfsThreadPoolSize"', 'true', 'availableProcessors', '1',
-                    'Thread pool that is in charge of processing outgoing IGFS messages')
+                +form-field__number({
+                    label: 'IGFS:',
+                    model: model + '.igfsThreadPoolSize',
+                    name: '"igfsThreadPoolSize"',
+                    placeholder: 'availableProcessors',
+                    min: '1',
+                    tip: 'Thread pool that is in charge of processing outgoing IGFS messages'
+                })
             .pc-form-grid-col-30
                 +form-field__number({
                     label: 'Rebalance:',
@@ -58,8 +82,14 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
                 })
                     +form-field__error({ error: 'max', message: 'Rebalance thread pool size should not exceed or be equal to System thread pool size' })
             .pc-form-grid-col-30
-                +number('Utility cache:', model + '.utilityCacheThreadPoolSize', '"utilityCacheThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1',
-                    'Default thread pool size that will be used to process utility cache messages')
+                +form-field__number({
+                    label: 'Utility cache:',
+                    model: model + '.utilityCacheThreadPoolSize',
+                    name: '"utilityCacheThreadPoolSize"',
+                    placeholder: 'max(8, availableProcessors)',
+                    min: '1',
+                    tip: 'Default thread pool size that will be used to process utility cache messages'
+                })
             .pc-form-grid-col-30
                 form-field-size(
                     label='Utility cache keep alive time:'
@@ -73,19 +103,43 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
                     on-scale-change='_s1 = $event'
                 )
             .pc-form-grid-col-30
-                +number('Async callback:', model + '.asyncCallbackPoolSize', '"asyncCallbackPoolSize"', 'true', 'max(8, availableProcessors)', '1',
-                    'Size of thread pool that is in charge of processing asynchronous callbacks')
+                +form-field__number({
+                    label:'Async callback:',
+                    model: model + '.asyncCallbackPoolSize',
+                    name: '"asyncCallbackPoolSize"',
+                    placeholder: 'max(8, availableProcessors)',
+                    min: '1',
+                    tip: 'Size of thread pool that is in charge of processing asynchronous callbacks'
+                })
             .pc-form-grid-col-30
-                +number('Striped:', model + '.stripedPoolSize', '"stripedPoolSize"', 'true', 'max(8, availableProcessors)', '1',
-                    'Striped pool size that should be used for cache requests processing')
+                +form-field__number({
+                    label: 'Striped:',
+                    model: model + '.stripedPoolSize',
+                    name: '"stripedPoolSize"',
+                    placeholder: 'max(8, availableProcessors)',
+                    min: '1',
+                    tip: 'Striped pool size that should be used for cache requests processing'
+                })
 
             //- Since ignite 2.0
             .pc-form-grid-col-30(ng-if-start='$ctrl.available("2.0.0")')
-                +number('Data streamer:', model + '.dataStreamerThreadPoolSize', '"dataStreamerThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1',
-                    'Size of thread pool that is in charge of processing data stream messages')
+                +form-field__number({
+                    label: 'Data streamer:',
+                    model: model + '.dataStreamerThreadPoolSize',
+                    name: '"dataStreamerThreadPoolSize"',
+                    placeholder: 'max(8, availableProcessors)',
+                    min: '1',
+                    tip: 'Size of thread pool that is in charge of processing data stream messages'
+                })
             .pc-form-grid-col-30
-                +number('Query:', model + '.queryThreadPoolSize', '"queryThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1',
-                    'Size of thread pool that is in charge of processing query messages')
+                +form-field__number({
+                    label: 'Query:',
+                    model: model + '.queryThreadPoolSize',
+                    name: '"queryThreadPoolSize"',
+                    placeholder: 'max(8, availableProcessors)',
+                    min: '1',
+                    tip: 'Size of thread pool that is in charge of processing query messages'
+                })
             .pc-form-grid-col-60(ng-if-end)
                 .ignite-form-field
                     +form-field__label({ label: 'Executor configurations:', name: '"executorConfigurations"' })
@@ -101,7 +155,7 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
                         }`
                     )
                         list-editable-item-view
-                            | {{ $item.name }} / 
+                            | {{ $item.name }} /
                             | {{ $item.size || 'max(8, availableProcessors)'}}
 
                         list-editable-item-edit
@@ -121,11 +175,18 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
                                         ui-validate-watch=`"${executors}"`
                                         ui-validate-watch-object-equality='true'
                                         ng-model-options='{allowInvalid: true}'
-                                        data-ignite-form-field-input-autofocus='true'
+                                        ignite-form-field-input-autofocus='true'
                                     )
                                         +form-field__error({ error: 'uniqueName', message: 'Service with that name is already configured' })
                                 .pc-form-grid-col-30
-                                    +number('Pool size:', '$item.size', '"ExecutorPoolSize"', 'true', 'max(8, availableProcessors)', '1', 'Thread pool size')
+                                    +form-field__number({
+                                        label: 'Pool size:',
+                                        model: '$item.size',
+                                        name: '"ExecutorPoolSize"',
+                                        placeholder: 'max(8, availableProcessors)',
+                                        min: '1',
+                                        tip: 'Thread pool size'
+                                    })
 
                         list-editable-no-items
                             list-editable-add-item-button(

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug
index fa85a5d..7cfff3c 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug
@@ -26,19 +26,46 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
         .pca-form-column-6.pc-form-grid-row
             //- Removed in ignite 2.0
             .pc-form-grid-col-30(ng-if-start='$ctrl.available(["1.0.0", "2.0.0"])')
-                +number('Samples size:', `${model}.clockSyncSamples`, '"clockSyncSamples"', 'true', '8', '0',
-                    'Number of samples used to synchronize clocks between different nodes<br/>\
-                    Clock synchronization is used for cache version assignment in CLOCK order mode')
+                +form-field__number({
+                    label: 'Samples size:',
+                    model: `${model}.clockSyncSamples`,
+                    name: '"clockSyncSamples"',
+                    placeholder: '8',
+                    min: '0',
+                    tip: 'Number of samples used to synchronize clocks between different nodes<br/>\
+                          Clock synchronization is used for cache version assignment in CLOCK order mode'
+                })
             .pc-form-grid-col-30(ng-if-end)
-                +number('Frequency:', `${model}.clockSyncFrequency`, '"clockSyncFrequency"', 'true', '120000', '0',
-                    'Frequency at which clock is synchronized between nodes, in milliseconds<br/>\
-                    Clock synchronization is used for cache version assignment in CLOCK order mode')
+                +form-field__number({
+                    label: 'Frequency:',
+                    model: `${model}.clockSyncFrequency`,
+                    name: '"clockSyncFrequency"',
+                    placeholder: '120000',
+                    min: '0',
+                    tip: 'Frequency at which clock is synchronized between nodes, in milliseconds<br/>\
+                          Clock synchronization is used for cache version assignment in CLOCK order mode'
+                })
 
             .pc-form-grid-col-30
-                +number-min-max('Port base:', `${model}.timeServerPortBase`, '"timeServerPortBase"', 'true', '31100', '0', '65535',
-                    'Time server provides clock synchronization between nodes<br/>\
-                    Base UPD port number for grid time server. Time server will be started on one of free ports in range')
+                +form-field__number({
+                    label: 'Port base:',
+                    model: `${model}.timeServerPortBase`,
+                    name: '"timeServerPortBase"',
+                    placeholder: '31100',
+                    min: '0',
+                    max: '65535',
+                    tip: 'Time server provides clock synchronization between nodes<br/>\
+                         Base UPD port number for grid time server. Time server will be started on one of free ports in range'
+                })
+
             .pc-form-grid-col-30
-                +number('Port range:', `${model}.timeServerPortRange`, '"timeServerPortRange"', 'true', '100', '1', 'Time server port range')
+                +form-field__number({
+                    label: 'Port range:',
+                    model: `${model}.timeServerPortRange`,
+                    name: '"timeServerPortRange"',
+                    placeholder: '100',
+                    min: '1',
+                    tip: 'Time server port range'
+                })
         .pca-form-column-6
             +preview-xml-java(model, 'clusterTime')

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug
index b5f80df..48c8391 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug
@@ -21,45 +21,78 @@ include /app/helpers/jade/mixins
 
 panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
     panel-title Transactions
-    panel-description 
-        | Settings for transactions. 
+    panel-description
+        | Settings for transactions.
         | #[a.link-success(href="https://apacheignite.readme.io/docs/transactions" target="_blank") More info]
     panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
         .pca-form-column-6.pc-form-grid-row
             .pc-form-grid-col-30
-                +dropdown('Concurrency:', `${model}.defaultTxConcurrency`, '"defaultTxConcurrency"', 'true', 'PESSIMISTIC',
-                    '[\
+                +form-field__dropdown({
+                    label: 'Concurrency:',
+                    model: `${model}.defaultTxConcurrency`,
+                    name: '"defaultTxConcurrency"',
+                    placeholder: 'PESSIMISTIC',
+                    options: '[\
                         {value: "OPTIMISTIC", label: "OPTIMISTIC"},\
                         {value: "PESSIMISTIC", label: "PESSIMISTIC"}\
                     ]',
-                    'Cache transaction concurrency to use when one is not explicitly specified\
-                    <ul>\
-                        <li>OPTIMISTIC - All cache operations are not distributed to other nodes until commit is called</li>\
-                        <li>PESSIMISTIC - A lock is acquired on all cache operations with exception of read operations in READ_COMMITTED mode</li>\
-                    </ul>')
+                    tip: 'Cache transaction concurrency to use when one is not explicitly specified\
+                        <ul>\
+                            <li>OPTIMISTIC - All cache operations are not distributed to other nodes until commit is called</li>\
+                            <li>PESSIMISTIC - A lock is acquired on all cache operations with exception of read operations in READ_COMMITTED mode</li>\
+                        </ul>'
+                })
             .pc-form-grid-col-30
-                +dropdown('Isolation:', `${model}.defaultTxIsolation`, '"defaultTxIsolation"', 'true', 'REPEATABLE_READ',
-                    '[\
+                +form-field__dropdown({
+                    label: 'Isolation:',
+                    model: `${model}.defaultTxIsolation`,
+                    name: '"defaultTxIsolation"',
+                    placeholder: 'REPEATABLE_READ',
+                    options: '[\
                         {value: "READ_COMMITTED", label: "READ_COMMITTED"},\
                         {value: "REPEATABLE_READ", label: "REPEATABLE_READ"},\
                         {value: "SERIALIZABLE", label: "SERIALIZABLE"}\
                     ]',
-                    'Default transaction isolation\
-                    <ul>\
-                        <li>READ_COMMITTED - Always a committed value will be provided for read operations</li>\
-                        <li>REPEATABLE_READ - If a value was read once within transaction, then all consecutive reads will provide the same in-transaction value</li>\
-                        <li>SERIALIZABLE - All transactions occur in a completely isolated fashion, as if all transactions in the system had executed serially, one after the other.</li>\
-                    </ul>')
+                    tip: 'Default transaction isolation\
+                        <ul>\
+                            <li>READ_COMMITTED - Always a committed value will be provided for read operations</li>\
+                            <li>REPEATABLE_READ - If a value was read once within transaction, then all consecutive reads will provide the same in-transaction value</li>\
+                            <li>SERIALIZABLE - All transactions occur in a completely isolated fashion, as if all transactions in the system had executed serially, one after the other.</li>\
+                        </ul>'
+                })
             .pc-form-grid-col-60
-                +number('Default timeout:', `${model}.defaultTxTimeout`, '"defaultTxTimeout"', 'true', '0', '0', 'Default transaction timeout')
+                +form-field__number({
+                    label: 'Default timeout:',
+                    model: `${model}.defaultTxTimeout`,
+                    name: '"defaultTxTimeout"',
+                    placeholder: '0',
+                    min: '0',
+                    tip: 'Default transaction timeout'
+                })
             .pc-form-grid-col-30
-                +number('Pessimistic log cleanup delay:', `${model}.pessimisticTxLogLinger`, '"pessimisticTxLogLinger"', 'true', '10000', '0',
-                    'Delay, in milliseconds, after which pessimistic recovery entries will be cleaned up for failed node')
+                +form-field__number({
+                    label: 'Pessimistic log cleanup delay:',
+                    model: `${model}.pessimisticTxLogLinger`,
+                    name: '"pessimisticTxLogLinger"',
+                    placeholder: '10000',
+                    min: '0',
+                    tip: 'Delay, in milliseconds, after which pessimistic recovery entries will be cleaned up for failed node'
+                })
             .pc-form-grid-col-30
-                +number('Pessimistic log size:', `${model}.pessimisticTxLogSize`, '"pessimisticTxLogSize"', 'true', '0', '0',
-                    'Size of pessimistic transactions log stored on node in order to recover transaction commit if originating node has left grid before it has sent all messages to transaction nodes')
+                +form-field__number({
+                    label: 'Pessimistic log size:',
+                    model: `${model}.pessimisticTxLogSize`,
+                    name: '"pessimisticTxLogSize"',
+                    placeholder: '0',
+                    min: '0',
+                    tip: 'Size of pessimistic transactions log stored on node in order to recover transaction commit if originating node has left grid before it has sent all messages to transaction nodes'
+                })
             .pc-form-grid-col-60
-                +java-class('Manager factory:', `${model}.txManagerFactory`, '"txManagerFactory"', 'true', 'false',
-                    'Class name of transaction manager factory for integration with JEE app servers')
+                +form-field__java-class({
+                    label: 'Manager factory:',
+                    model: `${model}.txManagerFactory`,
+                    name: '"txManagerFactory"',
+                    tip: 'Class name of transaction manager factory for integration with JEE app servers'
+                })
         .pca-form-column-6
             +preview-xml-java(model, 'clusterTransactions')

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug
index 67a37ad..67839e8 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug
@@ -31,12 +31,28 @@ panel-collapsible(
     panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
         .pca-form-column-6
             .settings-row
-                +number('Maximum pending puts size:', `${model}.dualModeMaxPendingPutsSize`, '"dualModeMaxPendingPutsSize"', 'true', '0', 'Number.MIN_SAFE_INTEGER',
-                    'Maximum amount of pending data read from the secondary file system and waiting to be written to data cache<br/>\
-                    Zero or negative value stands for unlimited size')
+                +form-field__number({
+                    label: 'Maximum pending puts size:',
+                    model: `${model}.dualModeMaxPendingPutsSize`,
+                    name: '"dualModeMaxPendingPutsSize"',
+                    placeholder: '0',
+                    min: 'Number.MIN_SAFE_INTEGER',
+                    tip: 'Maximum amount of pending data read from the secondary file system and waiting to be written to data cache<br/>\
+                         Zero or negative value stands for unlimited size'
+                })
             .settings-row
-                +java-class('Put executor service:', `${model}.dualModePutExecutorService`, '"dualModePutExecutorService"', 'true', 'false', 'DUAL mode put operation executor service')
+                +form-field__java-class({
+                    label: 'Put executor service:',
+                    model: `${model}.dualModePutExecutorService`,
+                    name: '"dualModePutExecutorService"',
+                    tip: 'DUAL mode put operation executor service'
+                })
             .settings-row
-                +checkbox('Put executor service shutdown', `${model}.dualModePutExecutorServiceShutdown`, '"dualModePutExecutorServiceShutdown"', 'DUAL mode put operation executor service shutdown flag')
+                +form-field__checkbox({
+                    label: 'Put executor service shutdown',
+                    model: `${model}.dualModePutExecutorServiceShutdown`,
+                    name: '"dualModePutExecutorServiceShutdown"',
+                    tip: 'DUAL mode put operation executor service shutdown flag'
+                })
         .pca-form-column-6
             +preview-xml-java(model, 'igfsDualMode')

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug
index a8194c2..d1fa76a 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug
@@ -26,12 +26,41 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
             -var enabled = `${model}.fragmentizerEnabled`
 
             .pc-form-grid-col-60
-                +checkbox('Enabled', enabled, '"fragmentizerEnabled"', 'Fragmentizer enabled flag')
+                +form-field__checkbox({
+                    label: 'Enabled',
+                    model: enabled,
+                    name: '"fragmentizerEnabled"',
+                    tip: 'Fragmentizer enabled flag'
+                })
             .pc-form-grid-col-30
-                +number('Concurrent files:', `${model}.fragmentizerConcurrentFiles`, '"fragmentizerConcurrentFiles"', enabled, '0', '0', 'Number of files to process concurrently by fragmentizer')
+                +form-field__number({
+                    label: 'Concurrent files:',
+                    model: `${model}.fragmentizerConcurrentFiles`,
+                    name: '"fragmentizerConcurrentFiles"',
+                    disabled: `!(${enabled})`,
+                    placeholder: '0',
+                    min: '0',
+                    tip: 'Number of files to process concurrently by fragmentizer'
+                })
             .pc-form-grid-col-30
-                +number('Throttling block length:', `${model}.fragmentizerThrottlingBlockLength`, '"fragmentizerThrottlingBlockLength"', enabled, '16777216', '1', 'Length of file chunk to transmit before throttling is delayed')
+                +form-field__number({
+                    label: 'Throttling block length:',
+                    model: `${model}.fragmentizerThrottlingBlockLength`,
+                    name: '"fragmentizerThrottlingBlockLength"',
+                    disabled: `!(${enabled})`,
+                    placeholder: '16777216',
+                    min: '1',
+                    tip: 'Length of file chunk to transmit before throttling is delayed'
+                })
             .pc-form-grid-col-60
-                +number('Throttling delay:', `${model}.fragmentizerThrottlingDelay`, '"fragmentizerThrottlingDelay"', enabled, '200', '0', 'Delay in milliseconds for which fragmentizer is paused')
+                +form-field__number({
+                    label: 'Throttling delay:',
+                    model: `${model}.fragmentizerThrottlingDelay`,
+                    name: '"fragmentizerThrottlingDelay"',
+                    disabled: `!(${enabled})`,
+                    placeholder: '200',
+                    min: '0',
+                    tip: 'Delay in milliseconds for which fragmentizer is paused'
+                })
         .pca-form-column-6
             +preview-xml-java(model, 'igfsFragmentizer')

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug
index 1ead726..777c123 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug
@@ -22,7 +22,7 @@ include /app/helpers/jade/mixins
 panel-collapsible(opened=`::true` ng-form=form)
     panel-title General
     panel-description
-        | General IGFS configuration. 
+        | General IGFS configuration.
         a.link-success(href="https://apacheignite-fs.readme.io/docs/in-memory-file-system" target="_blank") More info
     panel-content.pca-form-row
         .pca-form-column-6.pc-form-grid-row
@@ -38,7 +38,7 @@ panel-collapsible(opened=`::true` ng-form=form)
                     ignite-unique-property='name'
                     ignite-unique-skip=`["_id", ${model}]`
                 )
-                    +unique-feedback(`${model}.name`, 'IGFS name should be unique.')
+                    +form-field__error({ error: 'igniteUnique', message: 'IGFS name should be unique.' })
             .pc-form-grid-col-30
                 +form-field__dropdown({
                     label: 'IGFS mode:',

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug
index ef024b4..efae60c 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug
@@ -28,28 +28,77 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
             -var enabled = `${model}.ipcEndpointEnabled`
 
             .pc-form-grid-col-60
-                +checkbox('Enabled', enabled, '"ipcEndpointEnabled"', 'IPC endpoint enabled flag')
+                +form-field__checkbox({
+                    label: 'Enabled',
+                    model: enabled,
+                    name: '"ipcEndpointEnabled"',
+                    tip: 'IPC endpoint enabled flag'
+                })
             .pc-form-grid-col-60
-                +dropdown('Type:', `${ipcEndpointConfiguration}.type`, '"ipcEndpointConfigurationType"', enabled, 'TCP',
-                    '[\
+                +form-field__dropdown({
+                    label: 'Type:',
+                    model: `${ipcEndpointConfiguration}.type`,
+                    name: '"ipcEndpointConfigurationType"',
+                    disabled: `!(${enabled})`,
+                    placeholder: 'TCP',
+                    options: '[\
                         {value: "SHMEM", label: "SHMEM"},\
                         {value: "TCP", label: "TCP"}\
                     ]',
-                    'IPC endpoint type\
-                    <ul>\
-                        <li>SHMEM - shared memory endpoint</li>\
-                        <li>TCP - TCP endpoint</li>\
-                    </ul>')
+                    tip: 'IPC endpoint type\
+                        <ul>\
+                            <li>SHMEM - shared memory endpoint</li>\
+                            <li>TCP - TCP endpoint</li>\
+                        </ul>'
+                })
             .pc-form-grid-col-30
-                +text-ip-address('Host:', `${ipcEndpointConfiguration}.host`, '"ipcEndpointConfigurationHost"', enabled, '127.0.0.1', 'Host endpoint is bound to')
+                +form-field__ip-address({
+                    label: 'Host:',
+                    model: `${ipcEndpointConfiguration}.host`,
+                    name: '"ipcEndpointConfigurationHost"',
+                    enabled: enabled,
+                    placeholder: '127.0.0.1',
+                    tip: 'Host endpoint is bound to'
+                })
             .pc-form-grid-col-30
-                +number-min-max('Port:', `${ipcEndpointConfiguration}.port`, '"ipcEndpointConfigurationPort"', enabled, '10500', '1', '65535', 'Port endpoint is bound to')
+                +form-field__number({
+                    label: 'Port:',
+                    model: `${ipcEndpointConfiguration}.port`,
+                    name: '"ipcEndpointConfigurationPort"',
+                    disabled: `!(${enabled})`,
+                    placeholder: '10500',
+                    min: '1',
+                    max: '65535',
+                    tip: 'Port endpoint is bound to'
+                })
             .pc-form-grid-col-30
-                +number('Memory size:', `${ipcEndpointConfiguration}.memorySize`, '"ipcEndpointConfigurationMemorySize"', enabled, '262144', '1', 'Shared memory size in bytes allocated for endpoint communication')
+                +form-field__number({
+                    label: 'Memory size:',
+                    model: `${ipcEndpointConfiguration}.memorySize`,
+                    name: '"ipcEndpointConfigurationMemorySize"',
+                    disabled: `!(${enabled})`,
+                    placeholder: '262144',
+                    min: '1',
+                    tip: 'Shared memory size in bytes allocated for endpoint communication'
+                })
             .pc-form-grid-col-30
-                +number('Thread count:', `${ipcEndpointConfiguration}.threadCount`, '"ipcEndpointConfigurationThreadCount"', enabled, 'availableProcessors', '1',
-                    'Number of threads used by this endpoint to process incoming requests')
+                +form-field__number({
+                    label: 'Thread count:',
+                    model: `${ipcEndpointConfiguration}.threadCount`,
+                    name: '"ipcEndpointConfigurationThreadCount"',
+                    disabled: `!(${enabled})`,
+                    placeholder: 'availableProcessors',
+                    min: '1',
+                    tip: 'Number of threads used by this endpoint to process incoming requests'
+                })
             .pc-form-grid-col-60
-                +text-enabled('Token directory:', `${ipcEndpointConfiguration}.tokenDirectoryPath`, '"ipcEndpointConfigurationTokenDirectoryPath"', enabled, 'false', 'ipc/shmem', 'Directory where shared memory tokens are stored')
+                +form-field__text({
+                    label: 'Token directory:',
+                    model: `${ipcEndpointConfiguration}.tokenDirectoryPath`,
+                    name: '"ipcEndpointConfigurationTokenDirectoryPath"',
+                    disabled: `!(${enabled})`,
+                    placeholder: 'ipc/shmem',
+                    tip: 'Directory where shared memory tokens are stored'
+                })
         .pca-form-column-6
             +preview-xml-java(model, 'igfsIPC')

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug
index 78b2b55..cf68e72 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug
@@ -26,46 +26,138 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
     panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
         .pca-form-column-6.pc-form-grid-row
             .pc-form-grid-col-60
-                +number('Block size:', `${model}.blockSize`, '"blockSize"', 'true', '65536', '0', 'File data block size in bytes')
+                +form-field__number({
+                    label: 'Block size:',
+                    model: `${model}.blockSize`,
+                    name: '"blockSize"',
+                    placeholder: '65536',
+                    min: '0',
+                    tip: 'File data block size in bytes'
+                })
 
             //- Since ignite 2.0
             .pc-form-grid-col-60(ng-if='$ctrl.available("2.0.0")')
-                +number('Buffer size:', `${model}.streamBufferSize`, '"streamBufferSize"', 'true', '65536', '0', 'Read/write buffer size for IGFS stream operations in bytes')
+                +form-field__number({
+                    label: 'Buffer size:',
+                    model: `${model}.streamBufferSize`,
+                    name: '"streamBufferSize"',
+                    placeholder: '65536',
+                    min: '0',
+                    tip: 'Read/write buffer size for IGFS stream operations in bytes'
+                })
 
             //- Removed in ignite 2.0
             .pc-form-grid-col-60(ng-if-start='$ctrl.available(["1.0.0", "2.0.0"])')
-                +number('Stream buffer size:', `${model}.streamBufferSize`, '"streamBufferSize"', 'true', '65536', '0', 'Read/write buffer size for IGFS stream operations in bytes')
+                +form-field__number({
+                    label: 'Stream buffer size:',
+                    model: `${model}.streamBufferSize`,
+                    name: '"streamBufferSize"',
+                    placeholder: '65536',
+                    min: '0',
+                    tip: 'Read/write buffer size for IGFS stream operations in bytes'
+                })
             .pc-form-grid-col-60(ng-if-end)
-                +number('Maximum space size:', `${model}.maxSpaceSize`, '"maxSpaceSize"', 'true', '0', '0', 'Maximum space available for data cache to store file system entries')
+                +form-field__number({
+                    label: 'Maximum space size:',
+                    model: `${model}.maxSpaceSize`,
+                    name: '"maxSpaceSize"',
+                    placeholder: '0',
+                    min: '0',
+                    tip: 'Maximum space available for data cache to store file system entries'
+                })
 
             .pc-form-grid-col-30
-                +number('Maximum task range length:', `${model}.maximumTaskRangeLength`, '"maximumTaskRangeLength"', 'true', '0', '0', 'Maximum default range size of a file being split during IGFS task execution')
+                +form-field__number({
+                    label: 'Maximum task range length:',
+                    model: `${model}.maximumTaskRangeLength`,
+                    name: '"maximumTaskRangeLength"',
+                    placeholder: '0',
+                    min: '0',
+                    tip: 'Maximum default range size of a file being split during IGFS task execution'
+                })
             .pc-form-grid-col-30
-                +number-min-max('Management port:', `${model}.managementPort`, '"managementPort"', 'true', '11400', '0', '65535', 'Port number for management endpoint')
+                +form-field__number({
+                    label: 'Management port:',
+                    model: `${model}.managementPort`,
+                    name: '"managementPort"',
+                    placeholder: '11400',
+                    min: '0',
+                    max: '65535',
+                    tip: 'Port number for management endpoint'
+                })
             .pc-form-grid-col-30
-                +number('Per node batch size:', `${model}.perNodeBatchSize`, '"perNodeBatchSize"', 'true', '100', '0', 'Number of file blocks collected on local node before sending batch to remote node')
+                +form-field__number({
+                    label: 'Per node batch size:',
+                    model: `${model}.perNodeBatchSize`,
+                    name: '"perNodeBatchSize"',
+                    placeholder: '100',
+                    min: '0',
+                    tip: 'Number of file blocks collected on local node before sending batch to remote node'
+                })
             .pc-form-grid-col-30
-                +number('Per node parallel batch count:', `${model}.perNodeParallelBatchCount`, '"perNodeParallelBatchCount"', 'true', '8', '0', 'Number of file block batches that can be concurrently sent to remote node')
+                +form-field__number({
+                    label: 'Per node parallel batch count:',
+                    model: `${model}.perNodeParallelBatchCount`,
+                    name: '"perNodeParallelBatchCount"',
+                    placeholder: '8',
+                    min: '0',
+                    tip: 'Number of file block batches that can be concurrently sent to remote node'
+                })
             .pc-form-grid-col-60
-                +number('Prefetch blocks:', `${model}.prefetchBlocks`, '"prefetchBlocks"', 'true', '0', '0', 'Number of pre-fetched blocks if specific file chunk is requested')
+                +form-field__number({
+                    label: 'Prefetch blocks:',
+                    model: `${model}.prefetchBlocks`,
+                    name: '"prefetchBlocks"',
+                    placeholder: '8',
+                    min: '0',
+                    tip: 'Number of pre-fetched blocks if specific file chunk is requested'
+                })
             .pc-form-grid-col-60
-                +number('Sequential reads before prefetch:', `${model}.sequentialReadsBeforePrefetch`, '"sequentialReadsBeforePrefetch"', 'true', '0', '0', 'Amount of sequential block reads before prefetch is triggered')
+                +form-field__number({
+                    label: 'Sequential reads before prefetch:',
+                    model: `${model}.sequentialReadsBeforePrefetch`,
+                    name: '"sequentialReadsBeforePrefetch"',
+                    placeholder: '8',
+                    min: '0',
+                    tip: 'Amount of sequential block reads before prefetch is triggered'
+                })
 
             //- Removed in ignite 2.0
             .pc-form-grid-col-60(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
-                +number('Trash purge timeout:', `${model}.trashPurgeTimeout`, '"trashPurgeTimeout"', 'true', '1000', '0', 'Maximum timeout awaiting for trash purging in case data cache oversize is detected')
+                +form-field__number({
+                    label: 'Trash purge timeout:',
+                    model: `${model}.trashPurgeTimeout`,
+                    name: '"trashPurgeTimeout"',
+                    placeholder: '1000',
+                    min: '0',
+                    tip: 'Maximum timeout awaiting for trash purging in case data cache oversize is detected'
+                })
 
             .pc-form-grid-col-60
-                +checkbox('Colocate metadata', `${model}.colocateMetadata`, '"colocateMetadata"', 'Whether to co-locate metadata on a single node')
+                +form-field__checkbox({
+                    label: 'Colocate metadata',
+                    model: `${model}.colocateMetadata`,
+                    name: '"colocateMetadata"',
+                    tip: 'Whether to co-locate metadata on a single node'
+                })
             .pc-form-grid-col-60
-                +checkbox('Relaxed consistency', `${model}.relaxedConsistency`, '"relaxedConsistency"',
-                    'If value of this flag is <b>true</b>, IGFS will skip expensive consistency checks<br/>\
-                    It is recommended to set this flag to <b>false</b> if your application has conflicting\
-                    operations, or you do not know how exactly users will use your system')
+                +form-field__checkbox({
+                    label: 'Relaxed consistency',
+                    model: `${model}.relaxedConsistency`,
+                    name: '"relaxedConsistency"',
+                    tip: 'If value of this flag is <b>true</b>, IGFS will skip expensive consistency checks<br/>\
+                         It is recommended to set this flag to <b>false</b> if your application has conflicting\
+                         operations, or you do not know how exactly users will use your system'
+                })
 
             //- Since ignite 2.0
             .pc-form-grid-col-60(ng-if='$ctrl.available("2.0.0")')
-                +checkbox('Update file length on flush', model + '.updateFileLengthOnFlush', '"updateFileLengthOnFlush"', 'Update file length on flush flag')
+                +form-field__checkbox({
+                    label: 'Update file length on flush',
+                    model: model + '.updateFileLengthOnFlush',
+                    name: '"updateFileLengthOnFlush"',
+                    tip: 'Update file length on flush flag'
+                })
 
             .pc-form-grid-col-60
                 mixin igfs-misc-path-modes

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug
index f83b00e..4d779f1 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug
@@ -22,7 +22,7 @@ include /app/helpers/jade/mixins
 panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
     panel-title Secondary file system
     panel-description
-        | Secondary file system is provided for pass-through, write-through, and read-through purposes. 
+        | Secondary file system is provided for pass-through, write-through, and read-through purposes.
         a.link-success(href="https://apacheignite-fs.readme.io/docs/secondary-file-system" target="_blank") More info
     panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
         .pca-form-column-6.pc-form-grid-row
@@ -46,10 +46,31 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
                     +form-field__error({ error: 'requiredWhenIGFSProxyMode', message: 'Secondary file system should be configured for "PROXY" IGFS mode' })
                     +form-field__error({ error: 'requiredWhenPathModeProxyMode', message: 'Secondary file system should be configured for "PROXY" path mode' })
             .pc-form-grid-col-60
-                +text-enabled('URI:', `${secondaryFileSystem}.uri`, '"hadoopURI"', enabled, 'false', 'hdfs://[namenodehost]:[port]/[path]', 'URI of file system')
+                +form-field__text({
+                    label: 'URI:',
+                    model: `${secondaryFileSystem}.uri`,
+                    name: '"hadoopURI"',
+                    disabled: `!(${enabled})`,
+                    placeholder: 'hdfs://[namenodehost]:[port]/[path]',
+                    tip: 'URI of file system'
+                })
             .pc-form-grid-col-60
-                +text-enabled('Config path:', `${secondaryFileSystem}.cfgPath`, '"cfgPath"', enabled, 'false', 'Path to additional config', 'Additional path to Hadoop configuration')
+                +form-field__text({
+                    label: 'Config path:',
+                    model: `${secondaryFileSystem}.cfgPath`,
+                    name: '"cfgPath"',
+                    disabled: `!(${enabled})`,
+                    placeholder: 'Path to additional config',
+                    tip: 'Additional path to Hadoop configuration'
+                })
             .pc-form-grid-col-60
-                +text-enabled('User name:', `${secondaryFileSystem}.userName`, '"userName"', enabled, 'false', 'Input user name', 'User name')
+                +form-field__text({
+                    label: 'User name:',
+                    model: `${secondaryFileSystem}.userName`,
+                    name: '"userName"',
+                    disabled: `!(${enabled})`,
+                    placeholder: 'Input user name',
+                    tip: 'User name'
+                })
         .pca-form-column-6
             +preview-xml-java(model, 'igfsSecondFS')

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug
index 7b96584..589760e 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug
@@ -23,13 +23,18 @@ include /app/helpers/jade/mixins
 panel-collapsible(opened=`::true` ng-form=form)
     panel-title General
     panel-description
-        | Domain model properties common for Query and Store. 
-        a.link-success(href="https://apacheignite.readme.io/docs/cache-queries" target="_blank") More info about query configuration. 
+        | Domain model properties common for Query and Store.
+        a.link-success(href="https://apacheignite.readme.io/docs/cache-queries" target="_blank") More info about query configuration.
         a.link-success(href="https://apacheignite.readme.io/docs/3rd-party-store" target="_blank") More info about store.
     panel-content.pca-form-row
         .pca-form-column-6.pc-form-grid-row
             .pc-form-grid-col-60
-                +checkbox('Generate POJO classes', generatePojo, '"generatePojo"', 'If selected then POJO classes will be generated from database tables')
+                +form-field__checkbox({
+                    label: 'Generate POJO classes',
+                    model: generatePojo,
+                    name: '"generatePojo"',
+                    tip: 'If selected then POJO classes will be generated from database tables'
+                })
             .pc-form-grid-col-30
                 +form-field__dropdown({
                     label: 'Caches:',
@@ -42,16 +47,42 @@ panel-collapsible(opened=`::true` ng-form=form)
                     tip: 'Select caches to describe types in cache'
                 })
             .pc-form-grid-col-30
-                +dropdown-required('Query metadata:', `${model}.queryMetadata`, '"queryMetadata"', 'true', 'true', '', '::$ctrl.Models.queryMetadata.values',
-                    'Query metadata configured with:\
-                    <ul>\
-                        <li>Java annotations like @QuerySqlField</li>\
-                        <li>Configuration via QueryEntity class</li>\
-                    </ul>')
+                +form-field__dropdown({
+                    label: 'Query metadata:',
+                    model: `${model}.queryMetadata`,
+                    name: '"queryMetadata"',
+                    required: 'true',
+                    placeholder: '',
+                    options: '::$ctrl.Models.queryMetadata.values',
+                    tip: 'Query metadata configured with:\
+                          <ul>\
+                            <li>Java annotations like @QuerySqlField</li>\
+                            <li>Configuration via QueryEntity class</li>\
+                          </ul>'
+                })
+
             .pc-form-grid-col-60
-                +java-class-typeahead('Key type:', `${model}.keyType`, '"keyType"', '$ctrl.javaBuiltInClassesBase', 'true', 'true', '{{ ' + generatePojo + ' ? "Full class name for Key" : "Key type name" }}', 'Key class used to store key in cache', generatePojo)
+                +form-field__java-class--typeahead({
+                    label: 'Key type:',
+                    model: `${model}.keyType`,
+                    name: '"keyType"',
+                    options: '$ctrl.javaBuiltInClassesBase',
+                    required: 'true',
+                    placeholder: '{{ ' + generatePojo + ' ? "Full class name for Key" : "Key type name" }}',
+                    tip: 'Key class used to store key in cache',
+                    validationActive: generatePojo
+                })
             .pc-form-grid-col-60
-                +java-class-autofocus-placholder('Value type:', `${model}.valueType`, '"valueType"', 'true', 'true', 'false', '{{ ' + generatePojo +' ? "Enter fully qualified class name" : "Value type name" }}', 'Value class used to store value in cache', generatePojo)
+                +form-field__java-class({
+                    label: 'Value type:',
+                    model: `${model}.valueType`,
+                    name: '"valueType"',
+                    placeholder: '{{ ' + generatePojo +' ? "Enter fully qualified class name" : "Value type name" }}',
+                    tip: 'Value class used to store value in cache',
+                    validationActive: generatePojo
+                })(
+                    ignite-form-field-input-autofocus=autofocus
+                )
 
         .pca-form-column-6
             +preview-xml-java(model, 'domainModelGeneral')

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/query.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/query.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/query.pug
index 9df60c6..ec9f1d4 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/query.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/query.pug
@@ -26,7 +26,7 @@ include /app/helpers/jade/mixins
 panel-collapsible(ng-form=form opened=`!!${model}.queryMetadata`)
     panel-title#query-title Domain model for SQL query
     panel-description
-        | Domain model properties for fields queries. 
+        | Domain model properties for fields queries.
         a.link-success(href='https://apacheignite.readme.io/docs/cache-queries' target='_blank') More info
     panel-content.pca-form-row
         .pca-form-column-6.pc-form-grid-row
@@ -37,16 +37,31 @@ panel-collapsible(ng-form=form opened=`!!${model}.queryMetadata`)
                 label Not available for annotated types
 
             .pc-form-grid-col-60(ng-if-start=`${model}.queryMetadata === 'Configuration'`)
-                +text('Table name:', `${model}.tableName`, '"tableName"', 'false', 'Enter table name')
+                +form-field__text({
+                    label: 'Table name:',
+                    model: `${model}.tableName`,
+                    name: '"tableName"',
+                    placeholder: 'Enter table name'
+                })
 
             .pc-form-grid-col-30(ng-if-start='$ctrl.available("2.0.0")')
-                +text('Key field name:', `${model}.keyFieldName`, '"keyFieldName"', 'false', 'Enter key field name',
-                    'Key name.<br/>' +
-                    'Can be used in field list to denote the key as a whole')
+                +form-field__text({
+                    label: 'Key field name:',
+                    model: `${model}.keyFieldName`,
+                    name: '"keyFieldName"',
+                    placeholder: 'Enter key field name',
+                    tip: 'Key name.<br/>' +
+                        'Can be used in field list to denote the key as a whole'
+                })
             .pc-form-grid-col-30(ng-if-end)
-                +text('Value field name:', `${model}.valueFieldName`, '"valueFieldName"', 'false', 'Enter value field name',
-                    'Value name.<br/>' +
-                    'Can be used in field list to denote the entire value')
+                +form-field__text({
+                    label: 'Value field name:',
+                    model: `${model}.valueFieldName`,
+                    name: '"valueFieldName"',
+                    placeholder: 'Enter value field name',
+                    tip: 'Value name.<br/>' +
+                        'Can be used in field list to denote the entire value'
+                })
 
             .pc-form-grid-col-60
                 mixin domains-query-fields
@@ -70,17 +85,24 @@ panel-collapsible(ng-form=form opened=`!!${model}.queryMetadata`)
                                         +form-field__text({
                                             label: 'Field name:',
                                             model: '$item.name',
-                                            name: '"name"', 
+                                            name: '"name"',
                                             required: true,
                                             placeholder: 'Enter field name'
                                         })(
-                                            data-ignite-unique=items
-                                            data-ignite-unique-property='name'
+                                            ignite-unique=items
+                                            ignite-unique-property='name'
                                             ignite-auto-focus
                                         )
-                                            +unique-feedback('"name"', 'Property with such name already exists!')
+                                            +form-field__error({ error: 'igniteUnique', message: 'Property with such name already exists!' })
                                     .pc-form-grid-col-30
-                                        +java-class-typeahead('Field full class name:', `$item.className`, '"className"', '$ctrl.queryFieldTypes', true, true, 'Enter field full class name')(
+                                        +form-field__java-class--typeahead({
+                                            label: 'Field full class name:',
+                                            model: `$item.className`,
+                                            name: '"className"',
+                                            options: '$ctrl.queryFieldTypes',
+                                            required: 'true',
+                                            placeholder: 'Enter field full class name'
+                                        })(
                                             ng-model-options='{allowInvalid: true}'
                                             extra-valid-java-identifiers='$ctrl.queryFieldTypes'
                                         )
@@ -130,11 +152,11 @@ panel-collapsible(ng-form=form opened=`!!${model}.queryMetadata`)
                                             required: true,
                                             placeholder: 'Enter field name'
                                         })(
-                                            data-ignite-unique=items
-                                            data-ignite-unique-property='field'
+                                            ignite-unique=items
+                                            ignite-unique-property='field'
                                             ignite-auto-focus
                                         )
-                                            +unique-feedback('"field"', 'Such field already exists!')
+                                            +form-field__error({ error: 'igniteUnique', message: 'Such field already exists!' })
                                     .pc-form-grid-col-30
                                         +form-field__text({
                                             label: 'Field alias',
@@ -190,7 +212,7 @@ panel-collapsible(ng-form=form opened=`!!${model}.queryMetadata`)
                                         ignite-unique-property='name'
                                         ignite-form-field-input-autofocus='true'
                                     )
-                                        +unique-feedback(_, 'Such index already exists!')
+                                        +form-field__error({ error: 'igniteUnique', message: 'Such index already exists!' })
                                 .pc-form-grid-col-30
                                     +form-field__dropdown({
                                         label: 'Index type:',
@@ -211,7 +233,7 @@ panel-collapsible(ng-form=form opened=`!!${model}.queryMetadata`)
                                             ng-required='true'
                                         )
                                             list-editable-item-view(item-name='indexField')
-                                                | {{ indexField.name }} 
+                                                | {{ indexField.name }}
                                                 span(ng-if='queryIndex.indexType === "SORTED"')
                                                     |  / {{ indexField.direction ? "ASC" : "DESC" }}
 
@@ -232,7 +254,7 @@ panel-collapsible(ng-form=form opened=`!!${model}.queryMetadata`)
                                                             ignite-unique-property='name'
                                                             ignite-auto-focus
                                                         )
-                                                            +unique-feedback(_, 'Such field already exists!')
+                                                            +form-field__error({ error: 'igniteUnique', message: 'Such field already exists!' })
                                                     .pc-form-grid-col-60(
                                                         ng-if='queryIndex.indexType === "SORTED"'
                                                     )

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/store.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/store.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/store.pug
index 4d46a34..0e1a44d 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/store.pug
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/store.pug
@@ -49,9 +49,16 @@ mixin list-db-field-edit({ items, itemName, itemsName })
                         ignite-unique=items
                         ignite-unique-property='databaseFieldName'
                     )
-                        +unique-feedback(_, 'DB name should be unique')
+                        +form-field__error({ error: 'igniteUnique', message: 'DB name should be unique' })
                 .pc-form-grid-col-30
-                    +dropdown-required('DB type:', '$item.databaseFieldType', '"databaseFieldType"', true, true, 'Choose DB type', 'supportedJdbcTypes')
+                    +form-field__dropdown({
+                        label: 'DB type:',
+                        model:'$item.databaseFieldType',
+                        name: '"databaseFieldType"',
+                        required: 'true',
+                        placeholder: 'Choose DB type',
+                        options: 'supportedJdbcTypes'
+                    })
                 .pc-form-grid-col-30(divider='/')
                     +form-field__text({
                         label: 'Java name:',
@@ -64,9 +71,16 @@ mixin list-db-field-edit({ items, itemName, itemsName })
                         ignite-unique=items
                         ignite-unique-property='javaFieldName'
                     )
-                        +unique-feedback(_, 'Java name should be unique')
+                        +form-field__error({ error: 'igniteUnique', message: 'Java name should be unique' })
                 .pc-form-grid-col-30
-                    +dropdown-required('Java type:', '$item.javaFieldType', '"javaFieldType"', true, true, 'Choose Java type', 'supportedJavaTypes')
+                    +form-field__dropdown({
+                        label: 'Java type:',
+                        model: '$item.javaFieldType',
+                        name: '"javaFieldType"',
+                        required: 'true',
+                        placeholder: 'Choose Java type',
+                        options: 'supportedJavaTypes'
+                    })
 
         list-editable-no-items
             list-editable-add-item-button(
@@ -78,14 +92,26 @@ mixin list-db-field-edit({ items, itemName, itemsName })
 panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
     panel-title#store-title Domain model for cache store
     panel-description
-        | Domain model properties for binding database with cache via POJO cache store. 
+        | Domain model properties for binding database with cache via POJO cache store.
         a.link-success(href="https://apacheignite.readme.io/docs/3rd-party-store" target="_blank") More info
     panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
         .pca-form-column-6.pc-form-grid-row
             .pc-form-grid-col-30
-                +text('Database schema:', model + '.databaseSchema', '"databaseSchema"', 'false', 'Input DB schema name', 'Schema name in database')
+                +form-field__text({
+                    label: 'Database schema:',
+                    model: model + '.databaseSchema',
+                    name: '"databaseSchema"',
+                    placeholder: 'Input DB schema name',
+                    tip: 'Schema name in database'
+                })
             .pc-form-grid-col-30
-                +text('Database table:', model + '.databaseTable', '"databaseTable"', 'false', 'Input DB table name', 'Table name in database')
+                +form-field__text({
+                    label: 'Database table:',
+                    model: model + '.databaseTable',
+                    name: '"databaseTable"',
+                    placeholder: 'Input DB table name',
+                    tip: 'Table name in database'
+                })
             .pc-form-grid-col-60
                 .ignite-form-field
                     +form-field__label({ label: 'Key fields:', name: '"keyFields"' })

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/style.scss b/modules/web-console/frontend/app/components/page-configure-advanced/style.scss
index 9480486..40cd713 100644
--- a/modules/web-console/frontend/app/components/page-configure-advanced/style.scss
+++ b/modules/web-console/frontend/app/components/page-configure-advanced/style.scss
@@ -114,12 +114,6 @@ page-configure-advanced {
         user-select: none;
         cursor: pointer;
 
-        ignite-form-panel-chevron {
-            margin-right: 10px;
-            position: relative;
-            top: -3px;
-        }
-
         .pca-panel-heading-title {
             font-size: 16px;
             margin-right: 8px;

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-basic/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure-basic/template.pug b/modules/web-console/frontend/app/components/page-configure-basic/template.pug
index 6916f80..996ddcc 100644
--- a/modules/web-console/frontend/app/components/page-configure-basic/template.pug
+++ b/modules/web-console/frontend/app/components/page-configure-basic/template.pug
@@ -52,7 +52,7 @@ form(novalidate name=form)
                 ignite-unique-property='name'
                 ignite-unique-skip=`["_id", ${model}]`
             )
-                +unique-feedback(`${model}.name`, 'Cluster name should be unique.')
+                +form-field__error({ error: 'igniteUnique', message: 'Cluster name should be unique.' })
 
         .pc-form-grid__break
         .pc-form-grid-col-60
@@ -154,7 +154,7 @@ form(novalidate name=form)
                                 ignite-unique-property='name'
                                 ignite-form-field-input-autofocus='true'
                             )
-                                +unique-feedback('"name"', 'Cache name should be unqiue')
+                                +form-field__error({ error: 'igniteUnique', message: 'Cache name should be unqiue' })
                         div
                             +form-field__cache-modes({
                                 label: 'Mode:',
@@ -171,7 +171,7 @@ form(novalidate name=form)
                                 options: '::$ctrl.Caches.atomicityModes'
                             })
                         div(ng-show='$ctrl.Caches.shouldShowCacheBackupsCount($item)')
-                            +form-field__number({ 
+                            +form-field__number({
                                 label: 'Backups:',
                                 model: '$item.backups',
                                 name: '"backups"',
@@ -184,7 +184,7 @@ form(novalidate name=form)
                             label-single='cache'
                             label-multiple='caches'
                         )
-        
+
     .pc-form-actions-panel
         button-preview-project(ng-hide='$ctrl.isNew$|async:this' cluster=model)
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss
index a687d75..fe0ede1 100644
--- a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss
+++ b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss
@@ -142,3 +142,35 @@ queries-notebook {
         overflow-y: auto;
     }
 }
+
+.popover.settings.refresh-rate {
+    width: 244px;
+
+    [ignite-icon] {
+        height: 12px;
+    }
+
+    .popover-title {
+        padding: 10px;
+        font-size: 14px;
+    }
+
+    .actions {
+        width: 100%;
+        text-align: right;
+
+        button {
+            margin-top: 20px;
+            margin-right: 0;
+        }
+    }
+
+    .ignite-form-field {
+        display: flex;
+        padding: 5px;
+
+        input {
+            margin-right: 10px;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug
index 9ae56d0..781ce51 100644
--- a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug
+++ b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug
@@ -320,7 +320,13 @@ mixin paragraph-scan
     .panel-collapse(role='tabpanel' bs-collapse-target)
         .col-sm-12.sql-controls
             .col-sm-3
-                +dropdown-required('Cache:', 'paragraph.cacheName', '"cache"', 'true', 'false', 'Choose cache', 'caches')
+                +form-field__dropdown({
+                    label: 'Cache:',
+                    model: 'paragraph.cacheName',
+                    name: '"cache"',
+                    placeholder: 'Choose cache',
+                    options: 'caches'
+                })
             .col-sm-3
                 +form-field__sensitive({
                     label: 'Filter:',