//-
    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
include /app/configuration/mixins

-var form = 'discovery'
-var model = '$ctrl.clonedCluster.discovery'

panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`)
    panel-title Discovery
    panel-description
        | TCP/IP discovery configuration.
        | #[a.link-success(href="https://apacheignite.readme.io/docs/cluster-discovery" 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-20
                +form-field__ip-address({
                    label: 'Local address:',
                    model: `${model}.localAddress`,
                    name: '"discoLocalAddress"',
                    enabled: 'true',
                    placeholder: '228.1.2.4',
                    tip: 'Local host IP address that discovery SPI uses<br/>\
                         If not provided a first found non-loopback address will be used'
                })
            .pc-form-grid-col-20
                +form-field__number({
                    label: 'Local port:',
                    model: `${model}.localPort`,
                    name: '"discoLocalPort"',
                    placeholder: '47500',
                    min: '1024',
                    max: '65535',
                    tip: 'Local port which node uses'
                })
            .pc-form-grid-col-20
                +form-field__number({
                    label: 'Local port range:',
                    model: `${model}.localPortRange`,
                    name: '"discoLocalPortRange"',
                    placeholder: '100',
                    min: '1',
                    tip: 'Local port range'
                })
            .pc-form-grid-col-60
                +form-field__java-class({
                    label:'Address resolver:',
                    model: `${model}.addressResolver`,
                    name: '"discoAddressResolver"',
                    tip: 'Provides resolution between external and internal addresses'
                })
            .pc-form-grid-col-30
                +form-field__number({
                    label: 'Socket timeout:',
                    model: `${model}.socketTimeout`,
                    name: '"socketTimeout"',
                    placeholder: '5000',
                    min: '0',
                    tip: 'Socket operations timeout'
                })
            .pc-form-grid-col-30
                +form-field__number({
                    label: 'Acknowledgement timeout:',
                    model: `${model}.ackTimeout`,
                    name: '"ackTimeout"',
                    placeholder: '5000',
                    min: '0',
                    max: `{{ ${model}.maxAckTimeout || 600000 }}`,
                    tip: 'Message acknowledgement timeout'
                })
                    +form-field__error({ error: 'max', message: `Acknowledgement timeout should be less than max acknowledgement timeout ({{ ${model}.maxAckTimeout || 60000 }}).` })
            .pc-form-grid-col-30
                +form-field__number({
                    label: 'Max acknowledgement timeout:',
                    model: `${model}.maxAckTimeout`,
                    name: '"maxAckTimeout"',
                    placeholder: '600000',
                    min: '0',
                    tip: 'Maximum message acknowledgement timeout'
                })
            .pc-form-grid-col-30
                +form-field__number({
                    label: 'Network timeout:',
                    model: `${model}.networkTimeout`,
                    name: '"discoNetworkTimeout"',
                    placeholder: '5000',
                    min: '1',
                    tip: 'Timeout to use for network operations'
                })
            .pc-form-grid-col-30
                +form-field__number({
                    label: 'Join timeout:',
                    model: `${model}.joinTimeout`,
                    name: '"joinTimeout"',
                    placeholder: '0',
                    min: '0',
                    tip: 'Join timeout<br/>' +
                          '0 means wait forever'
                })
            .pc-form-grid-col-30
                +form-field__number({
                    label: 'Thread priority:',
                    model: `${model}.threadPriority`,
                    name: '"threadPriority"',
                    placeholder: '10',
                    min: '1',
                    tip: 'Thread priority for all threads started by SPI'
                })

            //- Removed in ignite 2.0
            .pc-form-grid-col-60(ng-if-start='$ctrl.available(["1.0.0", "2.0.0"])')
                +form-field__number({
                    label: 'Heartbeat frequency:',
                    model: `${model}.heartbeatFrequency`,
                    name: '"heartbeatFrequency"',
                    placeholder: '2000',
                    min: '1',
                    tip: 'Heartbeat messages issuing frequency'
                })
            .pc-form-grid-col-30
                +form-field__number({
                    label: 'Max heartbeats miss w/o init:',
                    model: `${model}.maxMissedHeartbeats`,
                    name: '"maxMissedHeartbeats"',
                    placeholder: '1',
                    min: '1',
                    tip: 'Max heartbeats count node can miss without initiating status check'
                })
            .pc-form-grid-col-30(ng-if-end)
                +form-field__number({
                    label: 'Max missed client heartbeats:',
                    model: `${model}.maxMissedClientHeartbeats`,
                    name: '"maxMissedClientHeartbeats"',
                    placeholder: '5',
                    min: '1',
                    tip: 'Max heartbeats count node can miss without failing client node'
                })

            .pc-form-grid-col-60
                +form-field__number({
                    label: 'Topology history:',
                    model: `${model}.topHistorySize`,
                    name: '"topHistorySize"',
                    placeholder: '1000',
                    min: '0',
                    tip: 'Size of topology snapshots history'
                })
            .pc-form-grid-col-60
                +form-field__java-class({
                    label: 'Discovery listener:',
                    model: `${model}.listener`,
                    name: '"discoListener"',
                    tip: 'Listener for grid node discovery events'
                })
            .pc-form-grid-col-60
                +form-field__java-class({
                    label: 'Data exchange:',
                    model: `${model}.dataExchange`,
                    name: '"dataExchange"',
                    tip: 'Class name of handler for initial data exchange between Ignite nodes'
                })
            .pc-form-grid-col-60
                +form-field__java-class({
                    label: 'Metrics provider:',
                    model: `${model}.metricsProvider`,
                    name: '"metricsProvider"',
                    tip: 'Class name of metric provider to discovery SPI'
                })
            .pc-form-grid-col-30
                +form-field__number({
                    label: 'Reconnect count:',
                    model: `${model}.reconnectCount`,
                    name: '"discoReconnectCount"',
                    placeholder: '10',
                    min: '1',
                    tip: 'Reconnect attempts count'
                })
            .pc-form-grid-col-30
                +form-field__number({
                    label: 'Statistics frequency:',
                    model: `${model}.statisticsPrintFrequency`,
                    name: '"statisticsPrintFrequency"',
                    placeholder: '0',
                    min: '1',
                    tip: 'Statistics print frequency'
                })
            .pc-form-grid-col-60
                +form-field__number({
                    label: 'IP finder clean frequency:',
                    model: `${model}.ipFinderCleanFrequency`,
                    name: '"ipFinderCleanFrequency"',
                    placeholder: '60000',
                    min: '1',
                    tip: 'IP finder clean frequency'
                })
            .pc-form-grid-col-60
                +form-field__java-class({
                    label: 'Node authenticator:',
                    model: `${model}.authenticator`,
                    name: '"authenticator"',
                    tip: 'Class name of node authenticator implementation'
                })
            .pc-form-grid-col-60(ng-if='$ctrl.available("2.4.0")')
                +form-field__number({
                    label: 'Reconnect delay:',
                    model: `${model}.reconnectDelay`,
                    name: '"reconnectDelay"',
                    placeholder: '2000',
                    min: '0',
                    tip: 'Amount of time in milliseconds that node waits before retrying to (re)connect to the cluster'
                })
            .pc-form-grid-col-60(ng-if='$ctrl.available("2.7.0")')
                +form-field__number({
                    label: 'Connection recovery timeout:',
                    model: `${model}.connectionRecoveryTimeout`,
                    name: '"connectionRecoveryTimeout"',
                    placeholder: '10000',
                    min: '0',
                    tip: 'Defines how long server node would try to recovery connection'
                })
            .pc-form-grid-col-60(ng-if='$ctrl.available("2.8.0")')
                +form-field__number({
                    label: 'SO Linger timeout:',
                    model: `${model}.soLinger`,
                    name: '"soLinger"',
                    placeholder: '5',
                    min: '-1',
                    tip: 'SO_LINGER timeout for socket'
                })
            .pc-form-grid-col-60
                +form-field__checkbox({
                    label: 'Force server mode',
                    model: `${model}.forceServerMode`,
                    name: '"forceServerMode"',
                    tip: 'Force start TCP/IP discovery in server mode'
                })
            .pc-form-grid-col-60
                +form-field__checkbox({
                    label: 'Client reconnect disabled',
                    model: `${model}.clientReconnectDisabled`,
                    name: '"clientReconnectDisabled"',
                    tip: 'Disable try of client to reconnect after server detected client node failure'
                })
        .pca-form-column-6
            +preview-xml-java(model, 'clusterDiscovery')
