/*!
 *
 * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved.
 * \copyright
 * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN
 * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER.
 *
 * \file    PreTreatmentPatientConnectionStack.qml
 * \author  (last)      Behrouz NematiPour
 * \date    (last)      18-Mar-2021
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  18-Mar-2021
 *
 */

// Qt
import QtQuick 2.12

// Project
//  Qml imports
import "qrc:/globals"
import "qrc:/components"
import "qrc:/compounds"
import "qrc:/pages/pretreatment"
import "qrc:/pages/pretreatment/connection"

/*!
 * \brief   the pre-treatment consumbles stack screen
 */
StackItem { id: _root
    objectName: "_PreTreatmentConsumblesStack"

    stackView.initialItem   : null

    property int stackStepIndex : 7

    PreTreatmentUltrafiltration { id: _preTreatmentUltrafiltration
        header.stepIndex        : 5
        header.confirmVisible   : true
        title.text              : qsTr("Ultrafiltration Setup")
    }

    PreTreatmentBase { id: _preTreatmentVitals // BP/HR Entry
        header.stepIndex        : 6
        header.confirmText.text : _bphrEntry.isValid ? qsTr("CONFIRM") : qsTr("SKIP")
        header.confirmVisible   : true
        title.text              : qsTr("BP/HR")
        BPHREntry { id: _bphrEntry
            topMarginContent    : 250
            contentRectHeight   : _root.height
        }
        onConfirmClicked: {
            if ( _bphrEntry.isValid ) {
                vTreatmentVitals.doConfirm(
                            _bphrEntry.systolic ,
                            _bphrEntry.diastolic,
                            _bphrEntry.heartRate
                            )
            }
            else {
                vTreatmentVitals.doSkip() // only for logging

            }
        }
        onVisibleChanged: {
            if ( visible )
                vTreatmentVitals.doReset(true)
        }
    }

    PreTreatmentBase { id: _preTreatmentPatientConnection
        header.stepIndex        : 7
        header.backVisible      : true
        header.confirmVisible   : true
        title.text              : qsTr("Patient Connection")
        header.confirmText.text : qsTr("CONTINUE")
        instructionBased        : true
    }

    PreTreatmentBase { id: _preTreatmentStartTreatment
        header.stepIndex        : 8
        header.confirmVisible   : true
        title.text              : qsTr("Start Treatment")
        header.confirmText.text : qsTr("START")
        instructionBased        : true
    }

    Connections { target: vPreTreatmentStates
        onPatientConnectionChanged  : { page( _preTreatmentUltrafiltration      , vpatientConnection   )}
    }

    Connections { target: vPreTreatmentAdjustmentUltrafiltrationInit
        onAdjustmentTriggered   : {
            // the maximum ultrafiltration volume has to be set/revert regardless
            vTreatmentUltrafiltration.maximum      = vPreTreatmentAdjustmentUltrafiltrationInit.volume
            _preTreatmentUltrafiltration.ufVolume  = vPreTreatmentAdjustmentUltrafiltrationInit.volume
            // but only if it has been accepted it will navigate
            if ( vPreTreatmentAdjustmentUltrafiltrationInit.adjustment_Accepted ) {
                page( _preTreatmentVitals )
            }
            else {
                _preTreatmentUltrafiltration.reasonText = vPreTreatmentAdjustmentUltrafiltrationInit.text()
            }
        }
    }

    Connections { target: _preTreatmentUltrafiltration
        onConfirmClicked    : { vPreTreatmentAdjustmentUltrafiltrationInit.doAdjustment(_preTreatmentUltrafiltration.ufVolume)}
    }

    Connections { target: _preTreatmentVitals
        onBackClicked       : { page( _preTreatmentUltrafiltration      )}
        onConfirmClicked    : { page( _preTreatmentPatientConnection      )
        }
    }

    Connections { target: _preTreatmentPatientConnection
        onBackClicked       : { page( _preTreatmentVitals               )}
        onConfirmClicked    : { vPreTreatmentAdjustmentPatientConnectionConfirm.doConfirm()}
    }

    Connections { target: _preTreatmentStartTreatment
        onBackClicked       : { page( _preTreatmentPatientConnection    )}
        onConfirmClicked    : { vPreTreatmentAdjustmentStartTreatment.doStart() }
    }

    Connections { target: vPreTreatmentAdjustmentPatientConnectionConfirm
        onAdjustmentTriggered   : {
            if ( vPreTreatmentAdjustmentPatientConnectionConfirm.adjustment_Accepted ) {
                page( _preTreatmentStartTreatment )
                _preTreatmentPatientConnection.reasonText = ""
            } else {
                _preTreatmentPatientConnection.reasonText = vPreTreatmentAdjustmentPatientConnectionConfirm.text()
            }
        }
    }

    Connections { target: vPreTreatmentAdjustmentStartTreatment
        onAdjustmentTriggered   : {
            if ( vPreTreatmentAdjustmentStartTreatment.adjustment_Accepted ) {
                _preTreatmentStartTreatment.reasonText = ""
            } else {
                _preTreatmentStartTreatment.reasonText = vPreTreatmentAdjustmentStartTreatment.text()
            }
        }
    }

    onVisibleChanged: {
        if (visible) {
            _mainMenu.hidden = true
        }
        else {
            stackView.initialItem = null
        }
    }
}
