IGNITE-2612 WIP Rework to Angular directives.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/acc99a7a Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/acc99a7a Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/acc99a7a Branch: refs/heads/ignite-2612 Commit: acc99a7a4c40369a9aad6b045a27d6b2d3ac8d82 Parents: 3b84bd0 Author: AKuznetsov <[email protected]> Authored: Mon Feb 29 10:56:13 2016 +0700 Committer: AKuznetsov <[email protected]> Committed: Mon Feb 29 21:26:03 2016 +0700 ---------------------------------------------------------------------- .../control-center-web/src/main/js/.eslintrc | 2 +- .../configuration/caches/concurrency.jade | 89 ++++++----- .../states/configuration/caches/memory.jade | 21 +++ .../states/configuration/caches/query.jade | 2 + .../states/configuration/caches/rebalance.jade | 153 ++++++++++++------- .../configuration/caches/server-near-cache.jade | 6 +- .../states/configuration/caches/statistics.jade | 75 +++------ .../states/configuration/caches/store.jade | 71 ++------- 8 files changed, 201 insertions(+), 218 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/acc99a7a/modules/control-center-web/src/main/js/.eslintrc ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/.eslintrc b/modules/control-center-web/src/main/js/.eslintrc index 0341ed7..5b1d475 100644 --- a/modules/control-center-web/src/main/js/.eslintrc +++ b/modules/control-center-web/src/main/js/.eslintrc @@ -57,7 +57,7 @@ rules: generator-star-spacing: 0 guard-for-in: 1 handle-callback-err: 0 - id-length: [2, {"min": 1, "max": 50}] + id-length: [2, {"min": 1, "max": 60}] indent: [2, 4, {"SwitchCase": 1}] key-spacing: [2, { "beforeColon": false, "afterColon": true }] lines-around-comment: 0 http://git-wip-us.apache.org/repos/asf/ignite/blob/acc99a7a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/concurrency.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/concurrency.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/concurrency.jade index f1a58d1..4c437d3 100644 --- a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/concurrency.jade +++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/concurrency.jade @@ -20,6 +20,8 @@ form.panel.panel-default(name='concurrency' novalidate) .panel-heading(bs-collapse-toggle) ignite-form-panel-chevron label Concurrency control + ignite-form-field-tooltip.tipLabel + | Cache concurrent usage settings ignite-form-revert .panel-collapse(role='tabpanel' bs-collapse-target id='concurrency') .panel-body @@ -27,65 +29,68 @@ form.panel.panel-default(name='concurrency' novalidate) .settings-row ignite-form-field ignite-form-field-label - | Name: + | Max async operations: ignite-form-field-tooltip - | Cache name - ignite-form-field-input-text( - data-id='cacheName' - data-name='cacheName' - data-ng-model='#{model}.name' - data-ng-required='true' - data-placeholder='Input name' + | Maximum number of allowed concurrent asynchronous operations#[br] + | If 0 then number of concurrent asynchronous operations is unlimited + ignite-form-field-input-number( + data-id='maxConcurrentAsyncOperations' + data-name='maxConcurrentAsyncOperations' + data-ng-model='#{model}.maxConcurrentAsyncOperations' + data-placeholder='500' + data-min='0' ) .settings-row ignite-form-field ignite-form-field-label - | Clusters: #[a(ui-sref='base.configuration.clusters({id: #{model}._id})') (add)] + | Default lock timeout: ignite-form-field-tooltip - | Associate clusters with the current cache - ignite-form-field-dropdown( - data-id='clusters' - data-name='clusters' - data-options='clusters' - data-multiple='true' - data-ng-model='#{model}.clusters' - data-ng-disabled='!clusters.length' - data-placeholder='{{ clusters.length ? "Choose clusters": "No clusters configured" }}' + | Default lock acquisition timeout + | If 0 then lock acquisition will never timeout + ignite-form-field-input-number( + data-id='defaultLockTimeout' + data-name='defaultLockTimeout' + data-ng-model='#{model}.defaultLockTimeout' + data-placeholder='0' + data-min='0' ) - .settings-row + .settings-row(ng-hide='#{model}.atomicityMode === "TRANSACTIONAL"') ignite-form-field ignite-form-field-label - | Domain models: #[a(ui-sref='base.configuration.domains({id: #{model}._id})') (add)] + | Entry versioning: ignite-form-field-tooltip - | Associate clusters with the current cache + | Write ordering mode determines which node assigns the write version, sender or the primary node: + ul: li CLOCK - in this mode write versions are assigned on a sender node which generally leads to better performance + li PRIMARY - in this mode version is assigned only on primary node. This means that sender will only send write request to primary node, which in turn will assign write version and forward it to backups ignite-form-field-dropdown( - data-id='domains' - data-name='domains' - data-options='domains' - data-multiple='true' - data-ng-model='#{model}.domains' - data-ng-disabled='!domains.length' - data-placeholder='{{ domains.length ? "Choose domain models": "No domain models configured" }}' + data-id='atomicWriteOrderMode' + data-name='atomicWriteOrderMode' + data-options='[\ + {value: "CLOCK", label: "CLOCK"},\ + {value: "PRIMARY", label: "PRIMARY"}\ + ]' + data-ng-model='#{model}.atomicWriteOrderMode' + data-placeholder='Choose versioning' ) .settings-row ignite-form-field ignite-form-field-label - | Cache mode: + | Write synchronization mode: ignite-form-field-tooltip - | Cache modes: - ul: li Partitioned - in this mode the overall key set will be divided into partitions and all partitions will be split equally between participating nodes - li Replicated - in this mode all the keys are distributed to all participating nodes - li Local - in this mode caches residing on different grid nodes will not know about each other + | Write synchronization mode: + ul: li FULL_SYNC - Ignite will wait for write or commit replies from all nodes + li FULL_ASYNC - Ignite will not wait for write or commit responses from participating nodes + li PRIMARY_SYNC - Makes sense for PARTITIONED mode. Ignite will wait for write or commit to complete on primary node ignite-form-field-dropdown( - data-id='cacheMode' - data-name='cacheMode' - data-options='[\ - {value: "LOCAL", label: "LOCAL"},\ - {value: "REPLICATED", label: "REPLICATED"},\ - {value: "PARTITIONED", label: "PARTITIONED"}\ - ]' - data-ng-model='#{model}.cacheMode' - data-placeholder='PARTITIONED' + data-id='writeSynchronizationMode' + data-name='writeSynchronizationMode' + data-options='[\ + {value: "FULL_SYNC", label: "FULL_SYNC"},\ + {value: "FULL_ASYNC", label: "FULL_ASYNC"},\ + {value: "PRIMARY_SYNC", label: "PRIMARY_SYNC"}\ + ]' + data-ng-model='#{model}.writeSynchronizationMode' + data-placeholder='PRIMARY_SYNC' ) ignite-ui-ace.col-sm-6 .preview-panel(ng-init='mode = false') http://git-wip-us.apache.org/repos/asf/ignite/blob/acc99a7a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/memory.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/memory.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/memory.jade index f7b4473..533a6ad 100644 --- a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/memory.jade +++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/memory.jade @@ -72,6 +72,27 @@ form.panel.panel-default(name='memory' novalidate) .settings-row ignite-form-field ignite-form-field-label + | Eviction policy: + ignite-form-field-tooltip + | Optional cache eviction policy#[br] + | Must be set for entries to be evicted from on-heap to off-heap or swap + ignite-form-field-dropdown( + data-id='kind' + data-name='kind' + data-options='[\ + {value: "LRU", label: "LRU"},\ + {value: "FIFO", label: "FIFO"},\ + {value: "SORTED", label: "Sorted"},\ + {value: undefined, label: "Not set"}\ + ]' + data-ng-model='#{model}.evictionPolicy.kind' + ) + span(ng-if='#{model}.evictionPolicy.kind') + a.customize(ng-show='__.expanded' ng-click='__.expanded = false') Hide settings + a.customize(ng-hide='__.expanded' ng-click='__.expanded = true') Show settings + .settings-row + ignite-form-field + ignite-form-field-label | Start size: ignite-form-field-tooltip | Initial cache size which will be used to pre-create internal hash table after start http://git-wip-us.apache.org/repos/asf/ignite/blob/acc99a7a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/query.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/query.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/query.jade index 943fe48..13bb53c 100644 --- a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/query.jade +++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/query.jade @@ -57,6 +57,8 @@ form.panel.panel-default(name='query' novalidate) .panel-heading(bs-collapse-toggle) ignite-form-panel-chevron label Queries & Indexing + ignite-form-field-tooltip.tipLabel + | Cache queries settings ignite-form-revert .panel-collapse(role='tabpanel' bs-collapse-target id='query') .panel-body http://git-wip-us.apache.org/repos/asf/ignite/blob/acc99a7a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/rebalance.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/rebalance.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/rebalance.jade index 9016235..d6ad8f1 100644 --- a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/rebalance.jade +++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/rebalance.jade @@ -16,10 +16,12 @@ - var model = 'backupItem' -form.panel.panel-default(name='rebalance' novalidate) +form.panel.panel-default(name='rebalance' novalidate ng-hide='#{model}.cacheMode == "LOCAL"') .panel-heading(bs-collapse-toggle) ignite-form-panel-chevron label Rebalance + ignite-form-field-tooltip.tipLabel + | Cache rebalance settings ignite-form-revert .panel-collapse(role='tabpanel' bs-collapse-target id='rebalance') .panel-body @@ -27,66 +29,101 @@ form.panel.panel-default(name='rebalance' novalidate) .settings-row ignite-form-field ignite-form-field-label - | Name: + | Mode: ignite-form-field-tooltip - | Cache name - ignite-form-field-input-text( - data-id='cacheName' - data-name='cacheName' - data-ng-model='#{model}.name' - data-ng-required='true' - data-placeholder='Input name' - ) - .settings-row - ignite-form-field - ignite-form-field-label - | Clusters: #[a(ui-sref='base.configuration.clusters({id: #{model}._id})') (add)] - ignite-form-field-tooltip - | Associate clusters with the current cache - ignite-form-field-dropdown( - data-id='clusters' - data-name='clusters' - data-options='clusters' - data-multiple='true' - data-ng-model='#{model}.clusters' - data-ng-disabled='!clusters.length' - data-placeholder='{{ clusters.length ? "Choose clusters": "No clusters configured" }}' - ) - .settings-row - ignite-form-field - ignite-form-field-label - | Domain models: #[a(ui-sref='base.configuration.domains({id: #{model}._id})') (add)] - ignite-form-field-tooltip - | Associate clusters with the current cache - ignite-form-field-dropdown( - data-id='domains' - data-name='domains' - data-options='domains' - data-multiple='true' - data-ng-model='#{model}.domains' - data-ng-disabled='!domains.length' - data-placeholder='{{ domains.length ? "Choose domain models": "No domain models configured" }}' - ) - .settings-row - ignite-form-field - ignite-form-field-label - | Cache mode: - ignite-form-field-tooltip - | Cache modes: - ul: li Partitioned - in this mode the overall key set will be divided into partitions and all partitions will be split equally between participating nodes - li Replicated - in this mode all the keys are distributed to all participating nodes - li Local - in this mode caches residing on different grid nodes will not know about each other + | Rebalance modes: + ul: li Synchronous - in this mode distributed caches will not start until all necessary data is loaded from other available grid nodes + li Asynchronous - in this mode distributed caches will start immediately and will load all necessary data from other available grid nodes in the background + li None - in this mode no rebalancing will take place which means that caches will be either loaded on demand from persistent store whenever data is accessed, or will be populated explicitly ignite-form-field-dropdown( - data-id='cacheMode' - data-name='cacheMode' - data-options='[\ - {value: "LOCAL", label: "LOCAL"},\ - {value: "REPLICATED", label: "REPLICATED"},\ - {value: "PARTITIONED", label: "PARTITIONED"}\ - ]' - data-ng-model='#{model}.cacheMode' - data-placeholder='PARTITIONED' + data-id='rebalanceModes' + data-name='rebalanceModes' + data-options='[\ + {value: "SYNC", label: "SYNC"},\ + {value: "ASYNC", label: "ASYNC"},\ + {value: "NONE", label: "NONE"}\ + ]' + data-ng-model='#{model}.rebalanceModes' + data-placeholder='ASYNC' ) + .settings-row + ignite-form-field + ignite-form-field-label + | Batch size: + ignite-form-field-tooltip + | Size (in bytes) to be loaded within a single rebalance message#[br] + | Rebalancing algorithm will split total data set on every node into multiple batches prior to sending data + ignite-form-field-input-number( + data-id='rebalanceBatchSize' + data-name='rebalanceBatchSize' + data-ng-model='#{model}.rebalanceBatchSize' + data-placeholder='512 * 1024' + data-min='1' + ) + .settings-row + ignite-form-field + ignite-form-field-label + | Batches prefetch count: + ignite-form-field-tooltip + | Number of batches generated by supply node at rebalancing start + ignite-form-field-input-number( + data-id='rebalanceBatchesPrefetchCount' + data-name='rebalanceBatchesPrefetchCount' + data-ng-model='#{model}.rebalanceBatchesPrefetchCount' + data-placeholder='2' + data-min='1' + ) + .settings-row + ignite-form-field + ignite-form-field-label + | Order: + ignite-form-field-tooltip + | If cache rebalance order is positive, rebalancing for this cache will be started only when rebalancing for all caches with smaller rebalance order (except caches with rebalance order 0) will be completed + ignite-form-field-input-number( + data-id='rebalanceOrder' + data-name='rebalanceOrder' + data-ng-model='#{model}.rebalanceOrder' + data-placeholder='0' + ) + .settings-row + ignite-form-field + ignite-form-field-label + | Delay: + ignite-form-field-tooltip + | Delay in milliseconds upon a node joining or leaving topology (or crash) after which rebalancing should be started automatically + ignite-form-field-input-number( + data-id='rebalanceDelay' + data-name='rebalanceDelay' + data-ng-model='#{model}.rebalanceDelay' + data-placeholder='0' + data-min='0' + ) + .settings-row + ignite-form-field + ignite-form-field-label + | Timeout: + ignite-form-field-tooltip + | Rebalance timeout in milliseconds + ignite-form-field-input-number( + data-id='rebalanceTimeout' + data-name='rebalanceTimeout' + data-ng-model='#{model}.rebalanceTimeout' + data-placeholder='10000' + data-min='0' + ) + .settings-row + ignite-form-field + ignite-form-field-label + | Throttle: + ignite-form-field-tooltip + | Time in milliseconds to wait between rebalance messages to avoid overloading of CPU or network + ignite-form-field-input-number( + data-id='rebalanceThrottle' + data-name='rebalanceThrottle' + data-ng-model='#{model}.rebalanceThrottle' + data-placeholder='0' + data-min='0' + ) ignite-ui-ace.col-sm-6 .preview-panel(ng-init='mode = false') .preview-legend http://git-wip-us.apache.org/repos/asf/ignite/blob/acc99a7a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/server-near-cache.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/server-near-cache.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/server-near-cache.jade index 2b89823..c08e4b5 100644 --- a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/server-near-cache.jade +++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/server-near-cache.jade @@ -19,7 +19,11 @@ form.panel.panel-default(name='server-near-cache' novalidate) .panel-heading(bs-collapse-toggle) ignite-form-panel-chevron - label Store + label Server near cache + ignite-form-field-tooltip.tipLabel + | Near cache settings#[br] + | Near cache is a small local cache that stores most recently or most frequently accessed data#[br] + | Should be used in case when it is impossible to send computations to remote nodes ignite-form-revert .panel-collapse(role='tabpanel' bs-collapse-target id='server-near-cache') .panel-body http://git-wip-us.apache.org/repos/asf/ignite/blob/acc99a7a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/statistics.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/statistics.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/statistics.jade index 5fddfcb..e512cbf 100644 --- a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/statistics.jade +++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/statistics.jade @@ -19,74 +19,33 @@ form.panel.panel-default(name='store' novalidate) .panel-heading(bs-collapse-toggle) ignite-form-panel-chevron - label Store + label Statistics + ignite-form-field-tooltip.tipLabel + | Cache statistics and management settings ignite-form-revert .panel-collapse(role='tabpanel' bs-collapse-target id='store') .panel-body .col-sm-6 .settings-row - ignite-form-field - ignite-form-field-label - | Name: - ignite-form-field-tooltip - | Cache name - ignite-form-field-input-text( - data-id='cacheName' - data-name='cacheName' - data-ng-model='#{model}.name' - data-ng-required='true' - data-placeholder='Input name' + ignite-form-field.checkbox + ignite-form-field-input-checkbox( + data-id='statisticsEnabled' + data-name='statisticsEnabled' + data-ng-model='#{model}.statisticsEnabled' ) - .settings-row - ignite-form-field - ignite-form-field-label - | Clusters: #[a(ui-sref='base.configuration.clusters({id: #{model}._id})') (add)] + | Statistics enabled ignite-form-field-tooltip - | Associate clusters with the current cache - ignite-form-field-dropdown( - data-id='clusters' - data-name='clusters' - data-options='clusters' - data-multiple='true' - data-ng-model='#{model}.clusters' - data-ng-disabled='!clusters.length' - data-placeholder='{{ clusters.length ? "Choose clusters": "No clusters configured" }}' - ) + | Flag indicating whether statistics gathering is enabled on a cache .settings-row - ignite-form-field - ignite-form-field-label - | Domain models: #[a(ui-sref='base.configuration.domains({id: #{model}._id})') (add)] - ignite-form-field-tooltip - | Associate clusters with the current cache - ignite-form-field-dropdown( - data-id='domains' - data-name='domains' - data-options='domains' - data-multiple='true' - data-ng-model='#{model}.domains' - data-ng-disabled='!domains.length' - data-placeholder='{{ domains.length ? "Choose domain models": "No domain models configured" }}' + ignite-form-field.checkbox + ignite-form-field-input-checkbox( + data-id='managementEnabled' + data-name='managementEnabled' + data-ng-model='#{model}.managementEnabled' ) - .settings-row - ignite-form-field - ignite-form-field-label - | Cache mode: + | Management enabled ignite-form-field-tooltip - | Cache modes: - ul: li Partitioned - in this mode the overall key set will be divided into partitions and all partitions will be split equally between participating nodes - li Replicated - in this mode all the keys are distributed to all participating nodes - li Local - in this mode caches residing on different grid nodes will not know about each other - ignite-form-field-dropdown( - data-id='cacheMode' - data-name='cacheMode' - data-options='[\ - {value: "LOCAL", label: "LOCAL"},\ - {value: "REPLICATED", label: "REPLICATED"},\ - {value: "PARTITIONED", label: "PARTITIONED"}\ - ]' - data-ng-model='#{model}.cacheMode' - data-placeholder='PARTITIONED' - ) + | Flag indicating whether management is enabled on this cache ignite-ui-ace.col-sm-6 .preview-panel(ng-init='mode = false') .preview-legend http://git-wip-us.apache.org/repos/asf/ignite/blob/acc99a7a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/store.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/store.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/store.jade index 5fddfcb..380c108 100644 --- a/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/store.jade +++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/caches/store.jade @@ -20,73 +20,28 @@ form.panel.panel-default(name='store' novalidate) .panel-heading(bs-collapse-toggle) ignite-form-panel-chevron label Store + ignite-form-field-tooltip.tipLabel + | Cache store settings ignite-form-revert .panel-collapse(role='tabpanel' bs-collapse-target id='store') .panel-body .col-sm-6 .settings-row - ignite-form-field - ignite-form-field-label - | Name: - ignite-form-field-tooltip - | Cache name - ignite-form-field-input-text( - data-id='cacheName' - data-name='cacheName' - data-ng-model='#{model}.name' - data-ng-required='true' - data-placeholder='Input name' + ignite-form-field.checkbox + ignite-form-field-input-checkbox( + data-id='storeKeepBinary' + data-name='storeKeepBinary' + data-ng-model='#{model}.storeKeepBinary' ) - .settings-row - ignite-form-field - ignite-form-field-label - | Clusters: #[a(ui-sref='base.configuration.clusters({id: #{model}._id})') (add)] + | Keep binary in store ignite-form-field-tooltip - | Associate clusters with the current cache - ignite-form-field-dropdown( - data-id='clusters' - data-name='clusters' - data-options='clusters' - data-multiple='true' - data-ng-model='#{model}.clusters' - data-ng-disabled='!clusters.length' - data-placeholder='{{ clusters.length ? "Choose clusters": "No clusters configured" }}' - ) + | Flag indicating that CacheStore implementation is working with binary objects instead of Java objects .settings-row - ignite-form-field - ignite-form-field-label - | Domain models: #[a(ui-sref='base.configuration.domains({id: #{model}._id})') (add)] - ignite-form-field-tooltip - | Associate clusters with the current cache - ignite-form-field-dropdown( - data-id='domains' - data-name='domains' - data-options='domains' - data-multiple='true' - data-ng-model='#{model}.domains' - data-ng-disabled='!domains.length' - data-placeholder='{{ domains.length ? "Choose domain models": "No domain models configured" }}' - ) + .settings-row - ignite-form-field - ignite-form-field-label - | Cache mode: - ignite-form-field-tooltip - | Cache modes: - ul: li Partitioned - in this mode the overall key set will be divided into partitions and all partitions will be split equally between participating nodes - li Replicated - in this mode all the keys are distributed to all participating nodes - li Local - in this mode caches residing on different grid nodes will not know about each other - ignite-form-field-dropdown( - data-id='cacheMode' - data-name='cacheMode' - data-options='[\ - {value: "LOCAL", label: "LOCAL"},\ - {value: "REPLICATED", label: "REPLICATED"},\ - {value: "PARTITIONED", label: "PARTITIONED"}\ - ]' - data-ng-model='#{model}.cacheMode' - data-placeholder='PARTITIONED' - ) + + .settings-row + ignite-ui-ace.col-sm-6 .preview-panel(ng-init='mode = false') .preview-legend
