| //- |
| 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/primitives/btn-group/index |
| include /app/primitives/datepicker/index |
| include /app/primitives/timepicker/index |
| include /app/primitives/dropdown/index |
| include /app/primitives/switcher/index |
| include /app/primitives/form-field/index |
| |
| //- Function that convert enabled state to corresponding disabled state. |
| -var enabledToDisabled = function (enabled) { |
| - return (enabled === false || enabled === true) ? !enabled : '!(' + enabled + ')'; |
| -} |
| |
| //- Mixin for XML and Java preview. |
| mixin preview-xml-java(master, generator, detail) |
| ignite-ui-ace-tabs |
| .preview-panel(ng-init='mode = "spring"') |
| .preview-legend |
| a(ng-class='{active: mode === "spring"}' ng-click='mode = "spring"') Spring |
| a(ng-class='{active: mode === "java"}' ng-click='mode = "java"') Java |
| //a(ng-class='{active: mode === "app.config"}' ng-click='mode = "app.config"') app.config |
| .preview-content(ng-switch='mode') |
| ignite-ui-ace-spring(ng-switch-when='spring' data-master=master data-generator=generator ng-model='$parent.data' data-detail=detail) |
| ignite-ui-ace-java(ng-switch-when='java' data-master=master data-generator=generator ng-model='$parent.data' data-detail=detail) |
| .preview-content-empty(ng-if='!data') |
| label All Defaults |
| |
| mixin form-field__java-class({ label, model, name, disabled, required, tip, placeholder, validationActive }) |
| -var errLbl = label.substring(0, label.length - 1) |
| |
| +form-field__text({ |
| label, |
| model, |
| name, |
| disabled, |
| required, |
| placeholder: placeholder || 'Enter fully qualified class name', |
| tip |
| })( |
| data-java-identifier='true' |
| data-java-package-specified='true' |
| data-java-keywords='true' |
| data-java-built-in-class='true' |
| data-validation-active=validationActive ? `{{ ${validationActive} }}` : `'always'` |
| )&attributes(attributes) |
| if block |
| block |
| |
| +form-field__error({ error: 'javaBuiltInClass', message: `${ errLbl } should not be the Java built-in class!` }) |
| +form-field__error({ error: 'javaKeywords', message: `${ errLbl } could not contains reserved Java keyword!` }) |
| +form-field__error({ error: 'javaPackageSpecified', message: `${ errLbl } does not have package specified!` }) |
| +form-field__error({ error: 'javaIdentifier', message: `${ errLbl } is invalid Java identifier!` }) |
| |
| //- Mixin for text field with enabled condition with options. |
| mixin form-field__java-class--typeahead({ label, model, name, options, disabled, required, placeholder, tip, validationActive }) |
| -var errLbl = label.substring(0, label.length - 1) |
| |
| +form-field__typeahead({ |
| label, |
| model, |
| name, |
| disabled, |
| required, |
| placeholder, |
| options, |
| tip |
| })&attributes(attributes)( |
| data-java-identifier='true' |
| data-java-package-specified='allow-built-in' |
| data-java-keywords='true' |
| data-validation-active=validationActive ? `{{ ${validationActive} }}` : `'always'` |
| ) |
| +form-field__error({ error: 'javaKeywords', message: `${ errLbl } could not contains reserved Java keyword!` }) |
| +form-field__error({ error: 'javaPackageSpecified', message: `${ errLbl } does not have package specified!` }) |
| +form-field__error({ error: 'javaIdentifier', message: `${ errLbl } is invalid Java identifier!` }) |
| |
| mixin form-field__java-package({ label, model, name, disabled, required, tip, tipOpts, placeholder }) |
| +form-field__text({ |
| label, |
| model, |
| name, |
| disabled, |
| required, |
| tip, |
| tipOpts, |
| placeholder |
| })( |
| data-java-keywords='true' |
| data-java-package-name='package-only' |
| )&attributes(attributes) |
| if block |
| block |
| |
| +form-field__error({ error: 'javaPackageName', message: 'Package name is invalid!' }) |
| +form-field__error({ error: 'javaKeywords', message: 'Package name could not contains reserved java keyword!' }) |
| |
| //- Mixin for text field with IP address check. |
| mixin form-field__ip-address({ label, model, name, enabled, placeholder, tip }) |
| +form-field__text({ |
| label, |
| model, |
| name, |
| disabled: enabledToDisabled(enabled), |
| placeholder, |
| tip |
| })(data-ipaddress='true') |
| +form-field__error({ error: 'ipaddress', message: 'Invalid address!' }) |
| |
| //- Mixin for text field with IP address and port range check. |
| mixin form-field__ip-address-with-port-range({ label, model, name, enabled, placeholder, tip }) |
| +form-field__text({ |
| label, |
| model, |
| name, |
| disabled: enabledToDisabled(enabled), |
| placeholder, |
| tip |
| })( |
| data-ipaddress='true' |
| data-ipaddress-with-port='true' |
| data-ipaddress-with-port-range='true' |
| ) |
| +form-field__error({ error: 'ipaddress', message: 'Invalid address!' }) |
| +form-field__error({ error: 'ipaddressPort', message: 'Invalid port!' }) |
| +form-field__error({ error: 'ipaddressPortRange', message: 'Invalid port range!' }) |
| |
| //- Mixin for url field. |
| mixin form-field__url({ label, model, name, enabled, required, placeholder, tip }) |
| -var errLbl = label.substring(0, label.length - 1) |
| |
| +form-field__text({ |
| label, |
| model, |
| name, |
| disabled: enabledToDisabled(enabled), |
| required, |
| placeholder, |
| tip |
| })( |
| type='url' |
| ) |
| if block |
| block |
| |
| +form-field__error({ error: 'url', message: `${ errLbl } should be a valid URL!` }) |
| |
| mixin list-text-field({ items, lbl, name, itemName, itemsName }) |
| list-editable(ng-model=items)&attributes(attributes) |
| list-editable-item-view |
| | {{ $item }} |
| |
| list-editable-item-edit |
| +form-field__text({ |
| label: lbl, |
| model: '$item', |
| name: `"${name}"`, |
| required: true, |
| placeholder: `Enter ${lbl.toLowerCase()}` |
| })( |
| ignite-unique=items |
| ignite-form-field-input-autofocus='true' |
| ) |
| if block |
| block |
| |
| list-editable-no-items |
| list-editable-add-item-button( |
| add-item=`$editLast((${items} = ${items} || []).push(''))` |
| label-single=itemName |
| label-multiple=itemsName |
| ) |
| |
| mixin list-java-class-field(label, model, name, items) |
| +form-field__text({ |
| label, |
| model, |
| name, |
| required: true, |
| placeholder: 'Enter fully qualified class name' |
| })( |
| java-identifier='true' |
| java-package-specified='true' |
| java-keywords='true' |
| java-built-in-class='true' |
| |
| ignite-unique=items |
| ignite-form-field-input-autofocus='true' |
| ) |
| +form-field__error({ error: 'javaBuiltInClass', message: `${ label } should not be the Java built-in class!` }) |
| +form-field__error({ error: 'javaKeywords', message: `${ label } could not contains reserved Java keyword!` }) |
| +form-field__error({ error: 'javaPackageSpecified', message: `${ label } does not have package specified!` }) |
| +form-field__error({ error: 'javaIdentifier', message: `${ label } is invalid Java identifier!` }) |
| |
| if block |
| block |
| |
| mixin list-java-identifier-field(label, model, name, placeholder, items) |
| +form-field__text({ |
| label, |
| model, |
| name, |
| required: true, |
| placeholder |
| })( |
| java-identifier='true' |
| |
| ignite-unique=items |
| ignite-form-field-input-autofocus='true' |
| ) |
| +form-field__error({ error: 'javaIdentifier', message: `${ label } is invalid Java identifier!` }) |
| |
| if block |
| block |
| |
| mixin list-url-field(label, model, name, items) |
| +form-field__text({ |
| label, |
| model, |
| name, |
| required: true, |
| placeholder: 'Enter URL' |
| })( |
| type='url' |
| |
| ignite-unique=items |
| ignite-form-field-input-autofocus='true' |
| ) |
| +form-field__error({ error: 'url', message: 'URL should be valid!' }) |
| |
| if block |
| block |
| |
| mixin list-addresses({ items, name, tip, withPortRange = true }) |
| list-editable( |
| ng-model=items |
| name=name |
| list-editable-cols=`::[{name: "Addresses:", tip: "${tip}"}]` |
| )&attributes(attributes) |
| list-editable-item-view {{ $item }} |
| list-editable-item-edit(item-name='address') |
| +form-field__text({ |
| label: 'Address', |
| model: 'address', |
| name: '"address"', |
| required: true, |
| placeholder: 'IP address:port' |
| })( |
| ipaddress='true' |
| ipaddress-with-port='true' |
| ipaddress-with-port-range=withPortRange |
| ignite-unique=items |
| ignite-form-field-input-autofocus='true' |
| ) |
| +form-field__error({ error: 'igniteUnique', message: 'Such IP address already exists!' }) |
| +form-field__error({ error: 'ipaddress', message: 'Invalid address!' }) |
| +form-field__error({ error: 'ipaddressPort', message: 'Invalid port!' }) |
| +form-field__error({ error: 'ipaddressPortRange', message: 'Invalid port range!' }) |
| +form-field__error({ error: 'required', message: 'IP address:port could not be empty!' }) |
| |
| list-editable-no-items |
| list-editable-add-item-button( |
| add-item=`$editLast((${items} = ${items} || []).push(""))` |
| label-multiple='addresses' |
| label-single='address' |
| ) |
| |
| mixin form-field__cache-modes({ label, model, name, placeholder }) |
| +form-field__dropdown({ |
| label, model, name, placeholder, |
| options: '[\ |
| {value: "LOCAL", label: "LOCAL"},\ |
| {value: "REPLICATED", label: "REPLICATED"},\ |
| {value: "PARTITIONED", label: "PARTITIONED"}\ |
| ]', |
| tip: '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>\ |
| <li>REPLICATED - in this mode all the keys are distributed to all participating nodes</li>\ |
| <li>LOCAL - in this mode caches residing on different grid nodes will not know about each other</li>\ |
| </ul>' |
| })&attributes(attributes) |
| if block |
| block |
| |
| //- Mixin for eviction policy. |
| mixin form-field__eviction-policy({ model, name, enabled, required, tip }) |
| -var kind = model + '.kind' |
| -var policy = model + '[' + kind + ']' |
| |
| .pc-form-grid-col-60 |
| +form-field__dropdown({ |
| label: 'Eviction policy:', |
| model: kind, |
| name: `${name}+"Kind"`, |
| disabled: enabledToDisabled(enabled), |
| required: required, |
| placeholder: '{{ ::$ctrl.Caches.evictionPolicy.kind.default }}', |
| options: '::$ctrl.Caches.evictionPolicy.values', |
| tip: tip |
| }) |
| .pc-form-group.pc-form-grid-row(ng-if=kind) |
| .pc-form-grid-col-30 |
| +form-field__number({ |
| label: 'Batch size', |
| model: policy + '.batchSize', |
| name: name + '+ "batchSize"', |
| disabled: enabledToDisabled(enabled), |
| placeholder: '1', |
| min: '1', |
| tip: 'Number of entries to remove on shrink' |
| }) |
| .pc-form-grid-col-30 |
| form-field-size( |
| label='Max memory size:' |
| ng-model=`${policy}.maxMemorySize` |
| ng-model-options='{allowInvalid: true}' |
| name=`${name}.maxMemorySize` |
| ng-disabled=enabledToDisabled(enabled) |
| tip='Maximum allowed cache size' |
| placeholder='{{ ::$ctrl.Caches.evictionPolicy.maxMemorySize.default }}' |
| min=`{{ $ctrl.Caches.evictionPolicy.maxMemorySize.min(${model}) }}` |
| size-scale-label='mb' |
| size-type='bytes' |
| ) |
| +form-field__error({ error: 'min', message: 'Either maximum memory size or maximum size should be greater than 0' }) |
| .pc-form-grid-col-60 |
| +form-field__number({ |
| label: 'Max size:', |
| model: policy + '.maxSize', |
| name: name + '+ "maxSize"', |
| disabled: enabledToDisabled(enabled), |
| placeholder: '{{ ::$ctrl.Caches.evictionPolicy.maxSize.default }}', |
| min: `{{ $ctrl.Caches.evictionPolicy.maxSize.min(${model}) }}`, |
| tip: 'Maximum allowed size of cache before entry will start getting evicted' |
| })( |
| ng-model-options='{allowInvalid: true}' |
| ) |
| +form-field__error({ error: 'min', message: 'Either maximum memory size or maximum size should be greater than 0' }) |
| |
| mixin list-pair-edit({ items, keyLbl, valLbl, itemName, itemsName }) |
| list-editable(ng-model=items) |
| list-editable-item-view |
| | {{ $item.name }} = {{ $item.value }} |
| |
| list-editable-item-edit |
| - form = '$parent.form' |
| .pc-form-grid-row |
| .pc-form-grid-col-30(divider='=') |
| +form-field__text({ |
| label: keyLbl, |
| model: '$item.name', |
| name: '"name"', |
| required: true, |
| placeholder: keyLbl |
| })( |
| ignite-unique=items |
| ignite-unique-property='name' |
| ignite-auto-focus |
| ) |
| +form-field__error({ error: 'igniteUnique', message: 'Property with such name already exists!' }) |
| .pc-form-grid-col-30 |
| +form-field__text({ |
| label: valLbl, |
| model: '$item.value', |
| name: '"value"', |
| required: true, |
| placeholder: valLbl |
| }) |
| |
| list-editable-no-items |
| list-editable-add-item-button( |
| add-item=`$editLast((${items} = ${items} || []).push({}))` |
| label-single=itemName |
| label-multiple=itemsName |
| ) |
| |
| mixin form-field__dialect({ label, model, name, required, tip, genericDialectName, placeholder, change }) |
| +form-field__dropdown({ |
| label, |
| model, |
| name, |
| required, |
| placeholder, |
| change, |
| options: '[\ |
| {value: "Generic", label: "' + genericDialectName + '"},\ |
| {value: "Oracle", label: "Oracle"},\ |
| {value: "DB2", label: "IBM DB2"},\ |
| {value: "SQLServer", label: "Microsoft SQL Server"},\ |
| {value: "MySQL", label: "MySQL"},\ |
| {value: "PostgreSQL", label: "PostgreSQL"},\ |
| {value: "H2", label: "H2 database"}\ |
| ]', |
| tip: `${ tip } |
| <ul> |
| <li>${ genericDialectName }</li> |
| <li>Oracle database</li> |
| <li>IBM DB2</li> |
| <li>Microsoft SQL Server</li> |
| <li>MySQL</li> |
| <li>PostgreSQL</li> |
| <li>H2 database</li> |
| </ul>` |
| }) |