/*!
 *
 * Copyright (c) 2021-2024 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    BPHREntry.qml
 * \author  (last)      Vy
 * \date    (last)      02-Jun-2023
 * \author  (original)  Behrouz NematiPour
 * \date    (original)  21-Jun-2021
 *
 */

// Qt
import QtQuick 2.12

// Project
//  Qml imports
import "qrc:/globals"
import "qrc:/components"

/*!
 * \brief   The Check list view is a dynamic check list items which gets list of strings as model
 * \details and dynamically creates list of items which can be later set as started/done to have
 *          bussy circle or check mark as done.
 */
 Item { id: _root
    property alias systolic         : _bloodPressureSystolic.text
    property alias diastolic        : _bloodPressureDiastolic.text
    property alias heartRate        : _heartRate.text

    readonly property int contentPadding    : Variables.defaultMargin * 7
    readonly property bool isValid          :
        _bloodPressureSystolic  .isValid
    &&  _bloodPressureDiastolic .isValid
    &&  _heartRate              .isValid
    &&  _private.isBloodPressureCompareValid

    width       : _container.width
    height      : _container.height

    QtObject { id: _private
        property bool isBloodPressureCompareValid : (parseInt(_bloodPressureDiastolic.text) <= parseInt(_bloodPressureSystolic.text))
    }

    Column { id: _container
        spacing         : 15
        leftPadding     : _root.contentPadding
        anchors.fill    : parent

        LabelUnitContainer { id: _bpContainer
            text        : qsTr("Blood Pressure")
            unitText    : Variables.unitTextBloodPressure
            width       : Variables.adjustmentLabelUnitContainerWidth
            height      : Variables.adjustmentLabelUnitContainerHeight

            contentItem : Row {
                spacing     : 10
                anchors.centerIn: parent

                TextEntry { id  : _bloodPressureSystolic
                    text                    :  Variables.notSetVariable(vTreatmentVitals.systolic, 0)
                    textInput.font.pixelSize: Fonts.fontPixelValueControl
                    line.visible            : false
                    validator               : IntValidator { bottom: vTreatmentVitals.systolicMin;  top : vTreatmentVitals.systolicMax }
                    nextInput               : _bloodPressureDiastolic
                    textInput.color         : (textInput.acceptableInput && _private.isBloodPressureCompareValid) ? Colors.textMain : Colors.red
                    useQtNumPad             : false
                    showPlaceHolderText     : true

                    onClicked: numPad.open ( _bloodPressureSystolic,
                                                qsTr("Systolic"),
                                                vTreatmentVitals.systolicMin,
                                                vTreatmentVitals.systolicMax,
                                                Variables.unitTextBloodPressure)
                }
                Label {
                    text    : "/"
                    width   : 10
                }
                TextEntry { id  : _bloodPressureDiastolic
                    text                    :  Variables.notSetVariable(vTreatmentVitals.diastolic, 0)
                    textInput.font.pixelSize: Fonts.fontPixelValueControl
                    line.visible            : false
                    validator               : IntValidator { bottom: vTreatmentVitals.diastolicMin;  top : vTreatmentVitals.diastolicMax }
                    nextInput               : _heartRate
                    textInput.color         : (textInput.acceptableInput && _private.isBloodPressureCompareValid) ? Colors.textMain : Colors.red
                    useQtNumPad             : false
                    showPlaceHolderText     : true

                    onClicked : numPad.open ( _bloodPressureDiastolic,
                                               qsTr("Diastolic"),
                                                vTreatmentVitals.diastolicMin,
                                                _bloodPressureSystolic.textInput.acceptableInput &&
                                                _bloodPressureSystolic.text < vTreatmentVitals.diastolicMax ? _bloodPressureSystolic.text :
                                                                                                           vTreatmentVitals.diastolicMax,
                                             Variables.unitTextBloodPressure)
                }
            }
        }

        LabelUnitContainer { id: _heartRateContainer
            text        : qsTr("Heart Rate")
            unitText    : Variables.unitTextHeartBeat
            width       : Variables.adjustmentLabelUnitContainerWidth
            height      : Variables.adjustmentLabelUnitContainerHeight

            contentItem : TextEntry { id: _heartRate
                text                        :  Variables.notSetVariable(vTreatmentVitals.heartRate, 0)
                anchors.centerIn            : parent
                textInput.font.pixelSize    : Fonts.fontPixelValueControl
                line.visible                : false
                validator                   : IntValidator { bottom: vTreatmentVitals.heartRateMin;  top : vTreatmentVitals.heartRateMax }
                nextInput                   : _bloodPressureSystolic
                useQtNumPad                 : false
                showPlaceHolderText         : true

                onClicked   : numPad.open ( _heartRate,
                                           qsTr("Heart Rate"),
                                            vTreatmentVitals.heartRateMin,
                                            vTreatmentVitals.heartRateMax,
                                            Variables.unitTextHeartBeat)
            }
        }
    }
}
