http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/odbc.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/odbc.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/odbc.pug
new file mode 100644
index 0000000..74b1f02
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/odbc.pug
@@ -0,0 +1,70 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'odbcConfiguration'
+-var model = '$ctrl.clonedCluster.odbc'
+-var enabled = model + '.odbcEnabled'
+
+panel-collapsible(
+    ng-form=form
+    on-open=`ui.loadPanel('${form}')`
+    ng-show='$ctrl.available(["1.0.0", "2.1.0"])'
+)
+    panel-title ODBC configuration
+    panel-description
+        | ODBC server configuration. 
+        | 
#[a.link-success(href="https://apacheignite.readme.io/docs/odbc-driver"; 
target="_blank") More info]
+    panel-content.pca-form-row(ng-if=`$ctrl.available(["1.0.0", "2.1.0"]) && 
ui.isPanelLoaded('${form}')`)
+        .pca-form-column-6
+            .settings-row
+                +sane-form-field-checkbox({
+                    label: 'Enabled',
+                    model: enabled,
+                    name: '"odbcEnabled"',
+                    tip: 'Flag indicating whether to configure ODBC 
configuration'
+                })(
+                    ui-validate=`{
+                        correctMarshaller: 
'$ctrl.Clusters.odbc.odbcEnabled.correctMarshaller($ctrl.clonedCluster, $value)'
+                    }`
+                    
ui-validate-watch='$ctrl.Clusters.odbc.odbcEnabled.correctMarshallerWatch("$ctrl.clonedCluster")'
+                )
+                    +form-field-feedback(null, 'correctMarshaller', 'ODBC can 
only be used with BinaryMarshaller')
+            .settings-row
+                +text-ip-address-with-port-range('ODBC endpoint address:', 
`${model}.endpointAddress`, '"endpointAddress"', enabled, 
'0.0.0.0:10800..10810',
+                    'ODBC endpoint address. <br/>\
+                    The following address formats are permitted:\
+                    <ul>\
+                        <li>hostname - will use provided hostname and default 
port range</li>\
+                        <li>hostname:port - will use provided hostname and 
port</li>\
+                        <li>hostname:port_from..port_to - will use provided 
hostname and port range</li>\
+                    </ul>')
+            .settings-row
+                +number('Send buffer size:', `${model}.socketSendBufferSize`, 
'"ODBCSocketSendBufferSize"', enabled, '0', '0',
+                    'Socket send buffer size.<br/>\
+                    When set to <b>0</b>, operation system default will be 
used')
+            .settings-row
+                +number('Socket receive buffer size:', 
`${model}.socketReceiveBufferSize`, '"ODBCSocketReceiveBufferSize"', enabled, 
'0', '0',
+                    'Socket receive buffer size.<br/>\
+                    When set to <b>0</b>, operation system default will be 
used')
+            .settings-row
+                +number('Maximum open cursors', `${model}.maxOpenCursors`, 
'"maxOpenCursors"', enabled, '128', '1', 'Maximum number of opened cursors per 
connection')
+            .settings-row
+                +number('Pool size:', `${model}.threadPoolSize`, 
'"ODBCThreadPoolSize"', enabled, 'max(8, availableProcessors)', '1',
+                    'Size of thread pool that is in charge of processing ODBC 
tasks')
+        .pca-form-column-6
+            +preview-xml-java(model, 'clusterODBC')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/persistence.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/persistence.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/persistence.pug
new file mode 100644
index 0000000..2c8d10a
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/persistence.pug
@@ -0,0 +1,82 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'persistenceConfiguration'
+-var model = '$ctrl.clonedCluster.persistenceStoreConfiguration'
+-var enabled = model + '.enabled'
+
+panel-collapsible(
+    ng-form=form
+    on-open=`ui.loadPanel('${form}')`
+    ng-show='$ctrl.available(["2.1.0", "2.3.0"])'
+)
+    panel-title Persistence store
+    panel-description
+        | Configures Apache Ignite Native Persistence. 
+        
a.link-success(href='https://apacheignite.readme.io/docs/distributed-persistent-store'
 target='_blank') More info
+    panel-content.pca-form-row(ng-if=`$ctrl.available(["2.1.0", "2.3.0"]) && 
ui.isPanelLoaded('${form}')`)
+        .pca-form-column-6.pc-form-grid-row
+            .pc-form-grid-col-60
+                +checkbox('Enabled', enabled, '"PersistenceEnabled"', 'Flag 
indicating whether to configure persistent configuration')
+            .pc-form-grid-col-60
+                +text-enabled('Store path:', `${model}.persistentStorePath`, 
'"PersistenceStorePath"', enabled, 'false', 'Input store path',
+                'A path the root directory where the Persistent Store will 
persist data and indexes')
+            .pc-form-grid-col-60
+                +checkbox-enabled('Metrics enabled', 
`${model}.metricsEnabled`, '"PersistenceMetricsEnabled"', enabled, 'Flag 
indicating whether persistence metrics collection is enabled')
+            .pc-form-grid-col-60
+                +checkbox-enabled('Always write full pages', 
`${model}.alwaysWriteFullPages`, '"PersistenceAlwaysWriteFullPages"', enabled, 
'Flag indicating whether always write full pages')
+            .pc-form-grid-col-60
+                +number('Checkpointing frequency:', 
`${model}.checkpointingFrequency`, '"PersistenceCheckpointingFrequency"', 
enabled, '180000', '1',
+                'Frequency which is a minimal interval when the dirty pages 
will be written to the Persistent Store')
+            .pc-form-grid-col-60
+                +number('Checkpointing page buffer size:', 
`${model}.checkpointingPageBufferSize`, 
'"PersistenceCheckpointingPageBufferSize"', enabled, '268435456', '0',
+                'Amount of memory allocated for a checkpointing temporary 
buffer')
+            .pc-form-grid-col-60
+                +number('Checkpointing threads:', 
`${model}.checkpointingThreads`, '"PersistenceCheckpointingThreads"', enabled, 
'1', '1', 'A number of threads to use for the checkpointing purposes')
+            .pc-form-grid-col-60
+                +text-enabled('WAL store path:', `${model}.walStorePath`, 
'"PersistenceWalStorePath"', enabled, 'false', 'Input store path', 'A path to 
the directory where WAL is stored')
+            .pc-form-grid-col-60
+                +text-enabled('WAL archive path:', `${model}.walArchivePath`, 
'"PersistenceWalArchivePath"', enabled, 'false', 'Input archive path', 'A path 
to the WAL archive directory')
+            .pc-form-grid-col-30
+                +number('WAL segments:', `${model}.walSegments`, 
'"PersistenceWalSegments"', enabled, '10', '1', 'A number of WAL segments to 
work with')
+            .pc-form-grid-col-30
+                +number('WAL segment size:', `${model}.walSegmentSize`, 
'"PersistenceWalSegmentSize"', enabled, '67108864', '0', 'Size of a WAL 
segment')
+            .pc-form-grid-col-30
+                +number('WAL history size:', `${model}.walHistorySize`, 
'"PersistenceWalHistorySize"', enabled, '20', '1', 'A total number of 
checkpoints to keep in the WAL history')
+            .pc-form-grid-col-30
+                +number('WAL flush frequency:', `${model}.walFlushFrequency`, 
'"PersistenceWalFlushFrequency"', enabled, '2000', '1',
+                'How often will be fsync, in milliseconds. In background mode, 
exist thread which do fsync by timeout')
+            .pc-form-grid-col-30
+                +number('WAL fsync delay:', `${model}.walFsyncDelayNanos`, 
'"PersistenceWalFsyncDelay"', enabled, '1000', '1', 'WAL fsync delay, in 
nanoseconds')
+            .pc-form-grid-col-30
+                +number('WAL record iterator buffer size:', 
`${model}.walRecordIteratorBufferSize`, 
'"PersistenceWalRecordIteratorBufferSize"', enabled, '67108864', '1',
+                'How many bytes iterator read from disk(for one reading), 
during go ahead WAL')
+            .pc-form-grid-col-30
+                +number('Lock wait time:', `${model}.lockWaitTime`, 
'"PersistenceLockWaitTime"', enabled, '10000', '1',
+                'Time out in second, while wait and try get file lock for 
start persist manager')
+            .pc-form-grid-col-30
+                +number('Rate time interval:', `${model}.rateTimeInterval`, 
'"PersistenceRateTimeInterval"', enabled, '60000', '1000',
+                'The length of the time interval for rate - based metrics. 
This interval defines a window over which hits will be tracked.')
+            .pc-form-grid-col-30
+                +number('Thread local buffer size:', `${model}.tlbSize`, 
'"PersistenceTlbSize"', enabled, '131072', '1',
+                'Define size thread local buffer. Each thread which write to 
WAL have thread local buffer for serialize recode before write in WAL')
+            .pc-form-grid-col-30
+                +number('Sub intervals:', `${model}.subIntervals`, 
'"PersistenceSubIntervals"', enabled, '5', '1',
+                'Number of sub - intervals the whole rate time interval will 
be split into to calculate rate - based metrics')
+        .pca-form-column-6
+            +preview-xml-java(model, 'clusterPersistence')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/service.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/service.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/service.pug
new file mode 100644
index 0000000..a244602
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/service.pug
@@ -0,0 +1,89 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'serviceConfiguration'
+-var model = '$ctrl.clonedCluster.serviceConfigurations'
+
+panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
+    panel-title Service configuration
+    panel-description
+        | Service Grid allows for deployments of arbitrary user-defined 
services on the cluster. 
+        | 
#[a.link-success(href="https://apacheignite.readme.io/docs/fault-tolerance"; 
target="_blank") More info]
+    panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
+        .pca-form-column-6
+            mixin clusters-service-configurations
+                .ignite-form-field(ng-init='serviceConfigurationsTbl={type: 
"serviceConfigurations", model: "serviceConfigurations", focusId: "kind", ui: 
"failover-table"}')
+                    +ignite-form-field__label('Service configurations:', 
'"serviceConfigurations"')
+                    .ignite-form-field__control
+                        -let items = model
+
+                        list-editable(ng-model=items 
name='serviceConfigurations')
+                            list-editable-item-edit
+                                - form = '$parent.form'
+                    
+                                -var nodeFilter = '$item.nodeFilter';
+                                -var nodeFilterKind = nodeFilter + '.kind';
+                                -var customFilter = nodeFilterKind + ' === 
"Custom"'
+
+                                .settings-row
+                                    +sane-ignite-form-field-text({
+                                        label: 'Name:',
+                                        model: '$item.name',
+                                        name: '"serviceName"',
+                                        required: true,
+                                        placeholder: 'Input service name'
+                                    })(
+                                        ui-validate=`{
+                                            uniqueName: 
'$ctrl.Clusters.serviceConfigurations.serviceConfiguration.name.customValidators.uniqueName($item,
 ${items})'
+                                        }`
+                                        ui-validate-watch=`"${items}"`
+                                        
ui-validate-watch-object-equality='true'
+                                        ng-model-options='{allowInvalid: true}'
+                                    )
+                                        +form-field-feedback('"serviceName', 
'uniqueName', 'Service with that name is already configured')
+                                .settings-row
+                                    +java-class('Service class', 
'$item.service', '"serviceService"', 'true', 'true', 'Service implementation 
class name')
+                                .settings-row
+                                    +number('Max per node count:', 
'$item.maxPerNodeCount', '"ServiceMaxPerNodeCount"', 'true', 'Unlimited', '0',
+                                        'Maximum number of deployed service 
instances on each node.<br/>' +
+                                        'Zero for unlimited')
+                                .settings-row
+                                    +number('Total count:', 
'$item.totalCount', '"serviceTotalCount"', 'true', 'Unlimited', '0',
+                                        'Total number of deployed service 
instances in the cluster.<br/>' +
+                                        'Zero for unlimited')
+                                .settings-row
+                                    +dropdown-required-empty('Cache:', 
'$item.cache', '"serviceCache"', 'true', 'false',
+                                        'Choose cache', 'No caches configured 
for current cluster', '$ctrl.cachesMenu', 'Cache name used for key-to-node 
affinity calculation')(
+                                        
pc-is-in-collection='$ctrl.clonedCluster.caches'
+                                    ).settings-row
+                                        +form-field-feedback(form, 
'isInCollection', `Cluster doesn't have such a cache`)
+                                .settings-row
+                                    +text('Affinity key:', 
'$item.affinityKey', '"serviceAffinityKey"', 'false', 'Input affinity key',
+                                        'Affinity key used for key-to-node 
affinity calculation')
+
+                            list-editable-no-items
+                                list-editable-add-item-button(
+                                    
add-item=`$ctrl.Clusters.addServiceConfiguration($ctrl.clonedCluster)`
+                                    label-single='service configuration'
+                                    label-multiple='service configurations'
+                                )
+
+            +clusters-service-configurations
+
+        .pca-form-column-6
+            +preview-xml-java('$ctrl.clonedCluster', 
'clusterServiceConfiguration', '$ctrl.caches')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/sql-connector.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/sql-connector.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/sql-connector.pug
new file mode 100644
index 0000000..2e61fc2
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/sql-connector.pug
@@ -0,0 +1,58 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'query'
+-var model = '$ctrl.clonedCluster'
+-var connectionModel = model + '.sqlConnectorConfiguration'
+-var connectionEnabled = connectionModel + '.enabled'
+
+panel-collapsible(
+    ng-form=form
+    on-open=`ui.loadPanel('${form}')`
+    ng-show='$ctrl.available(["2.1.0", "2.3.0"])'
+)
+    panel-title Query configuration
+    //- TODO IGNITE-5415 Add link to documentation.
+    panel-content.pca-form-row(ng-if=`$ctrl.available(["2.1.0", "2.3.0"]) && 
ui.isPanelLoaded('${form}')`)
+        .pca-form-column-6.pc-form-grid-row
+            .pc-form-grid-col-60
+                +checkbox('Enabled', connectionEnabled, 
'"SqlConnectorEnabled"', 'Flag indicating whether to configure SQL connector 
configuration')
+            .pc-form-grid-col-40
+                +text-enabled('Host:', `${connectionModel}.host`, 
'"SqlConnectorHost"', connectionEnabled, 'false', 'localhost')
+            .pc-form-grid-col-20
+                +number('Port:', `${connectionModel}.port`, 
'"SqlConnectorPort"', connectionEnabled, '10800', '1025')
+            .pc-form-grid-col-20
+                +number('Port range:', `${connectionModel}.portRange`, 
'"SqlConnectorPortRange"', connectionEnabled, '100', '0')
+            .pc-form-grid-col-20
+                +number('Socket send buffer size:', 
`${connectionModel}.socketSendBufferSize`, 
'"SqlConnectorSocketSendBufferSize"', connectionEnabled, '0', '0',
+                    'Socket send buffer size.<br/>\
+                    When set to <b>0</b>, operation system default will be 
used')
+            .pc-form-grid-col-20
+                +number('Socket receive buffer size:', 
`${connectionModel}.socketReceiveBufferSize`, 
'"SqlConnectorSocketReceiveBufferSize"', connectionEnabled, '0', '0',
+                    'Socket receive buffer size.<br/>\
+                    When set to <b>0</b>, operation system default will be 
used')
+            .pc-form-grid-col-30
+                +number('Max connection cursors:', 
`${connectionModel}.maxOpenCursorsPerConnection`, 
'"SqlConnectorMaxOpenCursorsPerConnection"', connectionEnabled, '128', '0',
+                    'Max number of opened cursors per connection')
+            .pc-form-grid-col-30
+                +number('Pool size:', `${connectionModel}.threadPoolSize`, 
'"SqlConnectorThreadPoolSize"', connectionEnabled, 'max(8, 
availableProcessors)', '1',
+                    'Size of thread pool that is in charge of processing SQL 
requests')
+            .pc-form-grid-col-60
+                +checkbox-enabled('TCP_NODELAY option', 
`${connectionModel}.tcpNoDelay`, '"SqlConnectorTcpNoDelay"', connectionEnabled)
+        .pca-form-column-6
+            +preview-xml-java(model, 'clusterQuery')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/ssl.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/ssl.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/ssl.pug
new file mode 100644
index 0000000..2745f53
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/ssl.pug
@@ -0,0 +1,89 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'sslConfiguration'
+-var cluster = '$ctrl.clonedCluster'
+-var enabled = '$ctrl.clonedCluster.sslEnabled'
+-var model = cluster + '.sslContextFactory'
+-var trust = model + '.trustManagers'
+
+panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
+    panel-title SSL configuration
+    panel-description
+        | Settings for SSL configuration for creating a secure socket layer. 
+        | #[a.link-success(href="https://apacheignite.readme.io/docs/ssltls"; 
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-60
+                +checkbox('Enabled', enabled, '"sslEnabled"', 'Flag indicating 
whether to configure SSL configuration')
+            .pc-form-grid-col-60
+                +text-options('Algorithm to create a key manager:', 
`${model}.keyAlgorithm`, '"keyAlgorithm"', '["SumX509", "X509"]', enabled, 
'false', 'SumX509',
+                    'Sets key manager algorithm that will be used to create a 
key manager<br/>\
+                    Notice that in most cased default value suites well, 
however, on Android platform this value need to be set to X509')
+            .pc-form-grid-col-60
+                +text-enabled('Key store file:', `${model}.keyStoreFilePath`, 
'"keyStoreFilePath"', enabled, enabled, 'Path to the key store file',
+                    'Path to the key store file<br/>\
+                    This is a mandatory parameter since ssl context could not 
be initialized without key manager')
+            .pc-form-grid-col-30
+                +text-options('Key store type:', `${model}.keyStoreType`, 
'"keyStoreType"', '["JKS", "PCKS11", "PCKS12"]', enabled, 'false', 'JKS',
+                    'Key store type used in context initialization')
+            .pc-form-grid-col-30
+                +text-options('Protocol:', `${model}.protocol`, '"protocol"', 
'["TSL", "SSL"]', enabled, 'false', 'TSL', 'Protocol for secure transport')
+            .pc-form-grid-col-60
+                .ignite-form-field
+                    .ignite-form-field__control
+                        list-editable(
+                            ng-model=trust
+                            name='trustManagers'
+                            list-editable-cols=`::[{name: "Pre-configured 
trust managers:"}]`
+                            ng-disabled=enabledToDisabled(enabled)
+                            ng-required=`${enabled} && 
!${model}.trustStoreFilePath`
+                        )
+                            list-editable-item-view {{ $item }}
+
+                            list-editable-item-edit
+                                +list-java-class-field('Trust manager', 
'$item', '"trustManager"', trust)
+                                    +unique-feedback('"trustManager"', 'Such 
trust manager already exists!')
+
+                            list-editable-no-items
+                                list-editable-add-item-button(
+                                    add-item=`$editLast((${trust} = ${trust} 
|| []).push(''))`
+                                    label-single='trust manager'
+                                    label-multiple='trust managers'
+                                )
+                    .ignite-form-field__errors(
+                        ng-messages=`sslConfiguration.trustManagers.$error`
+                        ng-show=`sslConfiguration.trustManagers.$invalid`
+                    )
+                        +form-field-feedback(_, 'required', 'Trust managers or 
trust store file should be configured')
+
+            .pc-form-grid-col-30(ng-if-start=`!${trust}.length`)
+                +sane-ignite-form-field-text({
+                    label: 'Trust store file:',
+                    model: `${model}.trustStoreFilePath`,
+                    name: '"trustStoreFilePath"',
+                    required: `${enabled} && !${trust}.length`,
+                    disabled: enabledToDisabled(enabled),
+                    placeholder: 'Path to the trust store file',
+                    tip: 'Path to the trust store file'
+                })
+                    +form-field-feedback(_, 'required', 'Trust store file or 
trust managers should be configured')
+            .pc-form-grid-col-30(ng-if-end)
+                +text-options('Trust store type:', `${model}.trustStoreType`, 
'"trustStoreType"', '["JKS", "PCKS11", "PCKS12"]', enabled, 'false', 'JKS', 
'Trust store type used in context initialization')
+        .pca-form-column-6
+            +preview-xml-java(cluster, 'clusterSsl')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/swap.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/swap.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/swap.pug
new file mode 100644
index 0000000..ef73ab9
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/swap.pug
@@ -0,0 +1,74 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'swap'
+-var model = '$ctrl.clonedCluster'
+-var swapModel = model + '.swapSpaceSpi'
+-var fileSwapModel = swapModel + '.FileSwapSpaceSpi'
+
+panel-collapsible(
+    ng-form=form
+    on-open=`ui.loadPanel('${form}')`
+    ng-show='$ctrl.available(["1.0.0", "2.0.0"])'
+)
+    panel-title Swap
+    panel-description
+        | Settings for overflow data to disk if it cannot fit in memory. 
+        | 
#[a.link-success(href="https://apacheignite.readme.io/v1.9/docs/off-heap-memory#swap-space";
 target="_blank") More info]
+    panel-content.pca-form-row(ng-if=`$ctrl.available(["1.0.0", "2.0.0"]) && 
ui.isPanelLoaded('${form}')`)
+        .pca-form-column-6.pc-form-grid-row
+            .pc-form-grid-col-60
+                +dropdown('Swap space SPI:', `${swapModel}.kind`, 
'"swapSpaceSpi"', 'true', 'Choose swap SPI',
+                    '::$ctrl.Clusters.swapSpaceSpis',
+                    'Provides a mechanism in grid for storing data on 
disk<br/>\
+                    Ignite cache uses swap space to overflow data to disk if 
it cannot fit in memory\
+                    <ul>\
+                        <li>File-based swap - File-based swap space SPI 
implementation which holds keys in memory</li>\
+                        <li>Not set - File-based swap space SPI with default 
configuration when it needed</li>\
+                    </ul>')
+            .pc-form-group.pc-form-grid-row(ng-show=`${swapModel}.kind`)
+                .pc-form-grid-col-60
+                    +text('Base directory:', `${fileSwapModel}.baseDirectory`, 
'"baseDirectory"', 'false', 'swapspace',
+                        'Base directory where to write files')
+                .pc-form-grid-col-30
+                    +sane-ignite-form-field-number({
+                        label: 'Read stripe size:',
+                        model: `${fileSwapModel}.readStripesNumber`,
+                        name: '"readStripesNumber"',
+                        placeholder: '{{ 
::$ctrl.Clusters.swapSpaceSpi.readStripesNumber.default }}',
+                        tip: 'Read stripe size defines number of file channels 
to be used concurrently'
+                    })(
+                        ui-validate=`{
+                            powerOfTwo: 
'$ctrl.Clusters.swapSpaceSpi.readStripesNumber.customValidators.powerOfTwo($value)'
+                        }`
+                    )
+                        +form-field-feedback('"readStripesNumber"', 
'powerOfTwo', 'Read stripe size must be positive and power of two')
+                .pc-form-grid-col-30
+                    +number-min-max-step('Maximum sparsity:', 
`${fileSwapModel}.maximumSparsity`, '"maximumSparsity"', 'true', '0.5', '0', 
'0.999', '0.05',
+                        'This property defines maximum acceptable wasted file 
space to whole file size ratio<br/>\
+                        When this ratio becomes higher than specified number 
compacting thread starts working')
+                .pc-form-grid-col-30
+                    +number('Max write queue size:', 
`${fileSwapModel}.maxWriteQueueSize`, '"maxWriteQueueSize"', 'true', '1024 * 
1024', '0',
+                        'Max write queue size in bytes<br/>\
+                        If there are more values are waiting for being written 
to disk then specified size, SPI will block on store operation')
+                .pc-form-grid-col-30
+                    +number('Write buffer size:', 
`${fileSwapModel}.writeBufferSize`, '"writeBufferSize"', 'true', '64 * 1024', 
'0',
+                        'Write buffer size in bytes<br/>\
+                        Write to disk occurs only when this buffer is full')
+        .pca-form-column-6
+            +preview-xml-java(model, 'clusterSwap')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/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
new file mode 100644
index 0000000..ebe3bcd
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug
@@ -0,0 +1,144 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'pools'
+-var model = '$ctrl.clonedCluster'
+-var executors = model + '.executorConfiguration'
+
+panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
+    panel-title Thread pools size
+    panel-description Settings for node thread pools.
+    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')
+            .pc-form-grid-col-30
+                +sane-ignite-form-field-number({
+                    label: 'System:',
+                    model: `${model}.systemThreadPoolSize`,
+                    name: '"systemThreadPoolSize"',
+                    placeholder: '{{ 
::$ctrl.Clusters.systemThreadPoolSize.default }}',
+                    min: '{{ ::$ctrl.Clusters.systemThreadPoolSize.min }}',
+                    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')
+            .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')
+            .pc-form-grid-col-30
+                +number('IGFS:', model + '.igfsThreadPoolSize', 
'"igfsThreadPoolSize"', 'true', 'availableProcessors', '1',
+                    'Thread pool that is in charge of processing outgoing IGFS 
messages')
+            .pc-form-grid-col-30
+                +sane-ignite-form-field-number({
+                    label: 'Rebalance:',
+                    model: `${model}.rebalanceThreadPoolSize`,
+                    name: '"rebalanceThreadPoolSize"',
+                    placeholder: '{{ 
::$ctrl.Clusters.rebalanceThreadPoolSize.default }}',
+                    min: '{{ ::$ctrl.Clusters.rebalanceThreadPoolSize.min }}',
+                    max: `{{ 
$ctrl.Clusters.rebalanceThreadPoolSize.max(${model}) }}`,
+                    tip: 'Max count of threads can be used at rebalancing'
+                })
+                    +form-field-feedback('max', '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')
+            .pc-form-grid-col-30
+                pc-form-field-size(
+                    label='Utility cache keep alive time:'
+                    ng-model=`${model}.utilityCacheKeepAliveTime`
+                    name='utilityCacheKeepAliveTime'
+                    size-type='seconds'
+                    size-scale-label='s'
+                    tip='Keep alive time of thread pool size that will be used 
to process utility cache messages'
+                    min='0'
+                    placeholder='{{ 60000 / _s1.value }}'
+                    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')
+            .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')
+
+            //- 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')
+            .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')
+            .pc-form-grid-col-60(ng-if-end)
+                .ignite-form-field
+                    +ignite-form-field__label('Executor configurations:', 
'"executorConfigurations"')
+                        +tooltip(`Custom thread pool configurations for 
compute tasks`)
+                    .ignite-form-field__control
+                        list-editable(
+                            ng-model=executors
+                            ng-model-options='{allowInvalid: true}'
+                            name='executorConfigurations'
+                            ui-validate=`{
+                                allNamesExist: 
'$ctrl.Clusters.executorConfigurations.allNamesExist($value)',
+                                allNamesUnique: 
'$ctrl.Clusters.executorConfigurations.allNamesUnique($value)'
+                            }`
+                        )
+                            list-editable-item-view
+                                | {{ $item.name }} / 
+                                | {{ $item.size || 'max(8, 
availableProcessors)'}}
+
+                            list-editable-item-edit
+                                .pc-form-grid-row
+                                    .pc-form-grid-col-30
+                                        +sane-ignite-form-field-text({
+                                            label: 'Name:',
+                                            model: '$item.name',
+                                            name: '"ExecutorName"',
+                                            required: true,
+                                            placeholder: 'Input executor name',
+                                            tip: 'Thread pool name'
+                                        })(
+                                            ui-validate=`{
+                                                uniqueName: 
'$ctrl.Clusters.executorConfiguration.name.customValidators.uniqueName($item, 
${executors})'
+                                            }`
+                                            ui-validate-watch=`"${executors}"`
+                                            
ui-validate-watch-object-equality='true'
+                                            ng-model-options='{allowInvalid: 
true}'
+                                            
data-ignite-form-field-input-autofocus='true'
+                                        )
+                                            +form-field-feedback(null, 
'uniqueName', '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')
+
+                            list-editable-no-items
+                                list-editable-add-item-button(
+                                    
add-item=`$edit($ctrl.Clusters.addExecutorConfiguration(${model}))`
+                                    label-single='executor configuration'
+                                    label-multiple='executor configurations'
+                                )
+                    .ignite-form-field__errors(
+                        ng-messages=`pools.executorConfigurations.$error`
+                        ng-show=`pools.executorConfigurations.$invalid`
+                    )
+                        +form-field-feedback(_, 'allNamesExist', 'All executor 
configurations should have a name')
+                        +form-field-feedback(_, 'allNamesUnique', 'All 
executor configurations should have a unique name')
+
+        .pca-form-column-6
+            +preview-xml-java(model, 'clusterPools')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/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
new file mode 100644
index 0000000..fa85a5d
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug
@@ -0,0 +1,44 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'time'
+-var model = '$ctrl.clonedCluster'
+
+panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
+    panel-title Time configuration
+    panel-description Time settings for CLOCK write ordering mode.
+    panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${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')
+            .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')
+
+            .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')
+            .pc-form-grid-col-30
+                +number('Port range:', `${model}.timeServerPortRange`, 
'"timeServerPortRange"', 'true', '100', '1', 'Time server port range')
+        .pca-form-column-6
+            +preview-xml-java(model, 'clusterTime')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/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
new file mode 100644
index 0000000..b5f80df
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug
@@ -0,0 +1,65 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'transactions'
+-var model = '$ctrl.clonedCluster.transactionConfiguration'
+
+panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
+    panel-title 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',
+                    '[\
+                        {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>')
+            .pc-form-grid-col-30
+                +dropdown('Isolation:', `${model}.defaultTxIsolation`, 
'"defaultTxIsolation"', 'true', 'REPEATABLE_READ',
+                    '[\
+                        {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>')
+            .pc-form-grid-col-60
+                +number('Default timeout:', `${model}.defaultTxTimeout`, 
'"defaultTxTimeout"', 'true', '0', '0', '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')
+            .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')
+            .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')
+        .pca-form-column-6
+            +preview-xml-java(model, 'clusterTransactions')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug
index fe8b218..f505e58 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug
@@ -15,15 +15,15 @@
     limitations under the License.
 
 form(id='igfs' name='ui.inputForm' novalidate ng-submit='$ctrl.save()')
-    include /app/modules/states/configuration/igfs/general
+    include ./templates/general
 
-    include /app/modules/states/configuration/igfs/secondary
-    include /app/modules/states/configuration/igfs/ipc
-    include /app/modules/states/configuration/igfs/fragmentizer
+    include ./templates/secondary
+    include ./templates/ipc
+    include ./templates/fragmentizer
 
     //- Removed in ignite 2.0
-    include /app/modules/states/configuration/igfs/dual
-    include /app/modules/states/configuration/igfs/misc
+    include ./templates/dual
+    include ./templates/misc
 
 .pc-form-actions-panel
     .pc-form-actions-panel__right-after

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/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
new file mode 100644
index 0000000..67a37ad
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug
@@ -0,0 +1,42 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'dualMode'
+-var model = 'backupItem'
+
+panel-collapsible(
+    ng-form=form
+    on-open=`ui.loadPanel('${form}')`
+    ng-if='$ctrl.available(["1.0.0", "2.0.0"])'
+)
+    panel-title Dual mode
+    panel-description
+        | IGFS supports dual-mode that allows it to work as either a 
standalone file system in Hadoop cluster, or work in tandem with HDFS, 
providing a primary caching layer for the secondary HDFS.
+        | As a caching layer it provides highly configurable read-through and 
write-through behaviour.
+    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')
+            .settings-row
+                +java-class('Put executor service:', 
`${model}.dualModePutExecutorService`, '"dualModePutExecutorService"', 'true', 
'false', 'DUAL mode put operation executor service')
+            .settings-row
+                +checkbox('Put executor service shutdown', 
`${model}.dualModePutExecutorServiceShutdown`, 
'"dualModePutExecutorServiceShutdown"', '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/68719446/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
new file mode 100644
index 0000000..a8194c2
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug
@@ -0,0 +1,37 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'fragmentizer'
+-var model = 'backupItem'
+
+panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
+    panel-title Fragmentizer
+    panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
+        .pca-form-column-6.pc-form-grid-row
+            -var enabled = `${model}.fragmentizerEnabled`
+
+            .pc-form-grid-col-60
+                +checkbox('Enabled', enabled, '"fragmentizerEnabled"', 
'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')
+            .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')
+            .pc-form-grid-col-60
+                +number('Throttling delay:', 
`${model}.fragmentizerThrottlingDelay`, '"fragmentizerThrottlingDelay"', 
enabled, '200', '0', '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/68719446/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
new file mode 100644
index 0000000..b9eb8fc
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug
@@ -0,0 +1,72 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'general'
+-var model = 'backupItem'
+
+panel-collapsible(opened=`::true` ng-form=form)
+    panel-title General
+    panel-description
+        | 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
+            .pc-form-grid-col-60
+                +sane-ignite-form-field-text({
+                    label: 'Name:',
+                    model: `${model}.name`,
+                    name: '"igfsName"',
+                    placeholder: 'Input name',
+                    required: true
+                })(
+                    ignite-unique='$ctrl.igfss'
+                    ignite-unique-property='name'
+                    ignite-unique-skip=`["_id", ${model}]`
+                )
+                    +unique-feedback(`${model}.name`, 'IGFS name should be 
unique.')
+            .pc-form-grid-col-30
+                +sane-ignite-form-field-dropdown({
+                    label: 'IGFS mode:',
+                    model: `${model}.defaultMode`,
+                    name: '"defaultMode"',
+                    placeholder: '{{::$ctrl.IGFSs.defaultMode.default}}',
+                    options: '{{::$ctrl.IGFSs.defaultMode.values}}',
+                    tip: `
+                    Mode to specify how IGFS interacts with Hadoop file system
+                    <ul>
+                        <li>PRIMARY - in this mode IGFS will not delegate to 
secondary Hadoop file system and will cache all the files in memory only</li>
+                        <li>PROXY - in this mode IGFS will not cache any files 
in memory and will only pass them through to secondary file system</li>
+                        <li>DUAL_SYNC - in this mode IGFS will cache files 
locally and also <b>synchronously</b> write them through to secondary file 
system</li>
+                        <li>DUAL_ASYNC - in this mode IGFS will cache files 
locally and also <b> asynchronously </b> write them through to secondary file 
system</li>
+                    </ul>
+                    `
+                })
+            .pc-form-grid-col-30
+                +sane-ignite-form-field-number({
+                    label: 'Group size:',
+                    model: `${model}.affinnityGroupSize`,
+                    name: '"affinnityGroupSize"',
+                    placeholder: 
'{{::$ctrl.IGFSs.affinnityGroupSize.default}}',
+                    min: '{{::$ctrl.IGFSs.affinnityGroupSize.min}}',
+                    tip: `
+                        Size of the group in blocks<br/>
+                        Required for construction of affinity mapper in IGFS 
data cache
+                    `
+                })
+        .pca-form-column-6
+            +preview-xml-java(model, 'igfsGeneral')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/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
new file mode 100644
index 0000000..ef024b4
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug
@@ -0,0 +1,55 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'ipc'
+-var model = 'backupItem'
+
+panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
+    panel-title IPC
+    panel-description IGFS Inter-process communication properties.
+    panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`)
+        .pca-form-column-6.pc-form-grid-row
+            -var ipcEndpointConfiguration = `${model}.ipcEndpointConfiguration`
+            -var enabled = `${model}.ipcEndpointEnabled`
+
+            .pc-form-grid-col-60
+                +checkbox('Enabled', enabled, '"ipcEndpointEnabled"', 'IPC 
endpoint enabled flag')
+            .pc-form-grid-col-60
+                +dropdown('Type:', `${ipcEndpointConfiguration}.type`, 
'"ipcEndpointConfigurationType"', enabled, 'TCP',
+                    '[\
+                        {value: "SHMEM", label: "SHMEM"},\
+                        {value: "TCP", label: "TCP"}\
+                    ]',
+                    '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')
+            .pc-form-grid-col-30
+                +number-min-max('Port:', `${ipcEndpointConfiguration}.port`, 
'"ipcEndpointConfigurationPort"', enabled, '10500', '1', '65535', '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')
+            .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')
+            .pc-form-grid-col-60
+                +text-enabled('Token directory:', 
`${ipcEndpointConfiguration}.tokenDirectoryPath`, 
'"ipcEndpointConfigurationTokenDirectoryPath"', enabled, 'false', 'ipc/shmem', 
'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/68719446/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
new file mode 100644
index 0000000..9a39b3a
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug
@@ -0,0 +1,110 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'misc'
+-var model = 'backupItem'
+-var pathModes = `${model}.pathModes`
+
+panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
+    panel-title Miscellaneous
+    panel-description Various miscellaneous IGFS settings.
+    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')
+
+            //- 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')
+
+            //- 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')
+            .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')
+
+            .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')
+            .pc-form-grid-col-30
+                +number-min-max('Management port:', `${model}.managementPort`, 
'"managementPort"', 'true', '11400', '0', '65535', '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')
+            .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')
+            .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')
+            .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')
+
+            //- 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')
+
+            .pc-form-grid-col-60
+                +checkbox('Colocate metadata', `${model}.colocateMetadata`, 
'"colocateMetadata"', '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')
+
+            //- 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')
+
+            .pc-form-grid-col-60
+                mixin igfs-misc-path-modes
+                    .ignite-form-field
+                        +ignite-form-field__label('Path modes:', '"pathModes"')
+                            +tooltip(`Map of path prefixes to IGFS modes used 
for them`)
+                        .ignite-form-field__control
+                            -let items = pathModes
+
+                            list-editable(ng-model=items)
+                                list-editable-item-view
+                                    | {{ $item.path + " [" + $item.mode + "]"}}
+
+                                list-editable-item-edit
+                                    - form = '$parent.form'
+
+                                    .pc-form-grid-row
+                                        .pc-form-grid-col-30
+                                            +ignite-form-field-text('Path:', 
'$item.path', '"path"', false, true, 'Enter path')(ignite-auto-focus)
+                                        .pc-form-grid-col-30
+                                            +sane-ignite-form-field-dropdown({
+                                                label: 'Mode:',
+                                                model: `$item.mode`,
+                                                name: '"mode"',
+                                                required: true,
+                                                placeholder: 'Choose igfs 
mode',
+                                                options: 
'{{::$ctrl.IGFSs.defaultMode.values}}'
+                                            })(
+                                                
ng-model-options='{allowInvalid: true}'
+                                            )
+
+                                list-editable-no-items
+                                    list-editable-add-item-button(
+                                        add-item=`$editLast((${items} = 
${items} || []).push({}))`
+                                        label-single='path mode'
+                                        label-multiple='path modes'
+                                    )
+
+                +igfs-misc-path-modes
+
+        .pca-form-column-6
+            +preview-xml-java(model, 'igfsMisc')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/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
new file mode 100644
index 0000000..92c8210
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug
@@ -0,0 +1,55 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'secondaryFileSystem'
+-var model = 'backupItem'
+
+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. 
+        
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
+            -var enabled = `${model}.secondaryFileSystemEnabled`
+            -var secondaryFileSystem = `${model}.secondaryFileSystem`
+
+            .pc-form-grid-col-60
+                +sane-form-field-checkbox({
+                    label: 'Enabled',
+                    name: '"secondaryFileSystemEnabled"',
+                    model: enabled
+                })(
+                    ng-model-options='{allowInvalid: true}'
+                    ui-validate=`{
+                        requiredWhenIGFSProxyMode: 
'$ctrl.IGFSs.secondaryFileSystemEnabled.requiredWhenIGFSProxyMode(${model})',
+                        requiredWhenPathModeProxyMode: 
'$ctrl.IGFSs.secondaryFileSystemEnabled.requiredWhenPathModeProxyMode(${model})'
+                    }`
+                    ui-validate-watch-collection=`"[${model}.defaultMode, 
${model}.pathModes]"`
+                    ui-validate-watch-object-equality='true'
+                )
+                    +form-field-feedback(null, 'requiredWhenIGFSProxyMode', 
'Secondary file system should be configured for "PROXY" IGFS mode')
+                    +form-field-feedback(null, 
'requiredWhenPathModeProxyMode', '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')
+            .pc-form-grid-col-60
+                +text-enabled('Config path:', 
`${secondaryFileSystem}.cfgPath`, '"cfgPath"', enabled, 'false', 'Path to 
additional config', 'Additional path to Hadoop configuration')
+            .pc-form-grid-col-60
+                +text-enabled('User name:', `${secondaryFileSystem}.userName`, 
'"userName"', enabled, 'false', 'Input user name', 'User name')
+        .pca-form-column-6
+            +preview-xml-java(model, 'igfsSecondFS')

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug
index 8ebd11c..78ae769 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug
@@ -15,9 +15,9 @@
     limitations under the License.
 
 form(id='model' name='ui.inputForm' novalidate ng-submit='$ctrl.save()')
-    include /app/modules/states/configuration/domains/general
-    include /app/modules/states/configuration/domains/query
-    include /app/modules/states/configuration/domains/store
+    include ./templates/general
+    include ./templates/query
+    include ./templates/store
 
 .pc-form-actions-panel
     .pc-form-actions-panel__right-after

http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/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
new file mode 100644
index 0000000..a6c8194
--- /dev/null
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug
@@ -0,0 +1,57 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'general'
+-var model = 'backupItem'
+-var generatePojo = `${model}.generatePojo`
+
+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. 
+        
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')
+            .pc-form-grid-col-30
+                +sane-ignite-form-field-dropdown({
+                    label: 'Caches:',
+                    model: `${model}.caches`,
+                    name: '"caches"',
+                    multiple: true,
+                    placeholder: 'Choose caches',
+                    placeholderEmpty: 'No valid caches configured',
+                    options: '$ctrl.cachesMenu',
+                    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>')
+            .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)
+            .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)
+
+        .pca-form-column-6
+            +preview-xml-java(model, 'domainModelGeneral')

Reply via email to