import QtQuick 2.13
import QtQuick.Layouts 1.13

import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1

import utils 1.0
import shared.panels 1.0

import "../controls"

ColumnLayout {
    id: root

    property bool error: false
    property bool pending: false

    property int outNetworkLayer: 0
    property int inNetworkLayer: 0

    property double outNetworkTimestamp: 0
    property double inNetworkTimestamp: 0

    property string outChainName
    property string inChainName

    property int outNetworkConfirmations: 0
    property int inNetworkConfirmations: 0

    spacing: 32

    StatusTxProgressBar {
        id: progressBarOut
        Layout.topMargin: 8
        Layout.fillWidth: true
        error: root.error
        networkLayer: root.outNetworkLayer
        confirmations: root.outNetworkConfirmations
        timestamp: root.outNetworkTimestamp
        chainName: root.outChainName
    }

    TextColumn {
        visible: progressBarOut.isValid && progressBarOut.error
        text: qsTr("Failed on %1").arg(progressBarOut.chainName)
        timestamp: progressBarOut.timestamp
    }

    StatusTxProgressBar {
        id: progressBarIn
        Layout.topMargin: 8
        Layout.fillWidth: true
        error: root.error
        networkLayer: root.inNetworkLayer
        confirmations: root.inNetworkConfirmations
        timestamp: root.inNetworkTimestamp
        chainName: root.inChainName
    }

    TextColumn {
        visible: progressBarOut.isValid && progressBarOut.confirmed
        text: qsTr("Confirmed on %1").arg(progressBarOut.chainName)
        timestamp: progressBarOut.confirmationTimeStamp
    }

    TextColumn {
        visible: progressBarIn.isValid && progressBarIn.confirmed
        text: qsTr("Confirmed on %1").arg(progressBarIn.chainName)
        timestamp: progressBarIn.confirmationTimeStamp
    }

    TextColumn {
        visible: progressBarOut.isValid && progressBarOut.finalized
        text: qsTr("Finalised on %1").arg(progressBarOut.chainName)
        timestamp: progressBarOut.finalisationTimeStamp
    }

    TextColumn {
        visible: progressBarIn.isValid && progressBarIn.finalized
        text: qsTr("Finalised on %1").arg(progressBarIn.chainName)
        timestamp: progressBarIn.finalisationTimeStamp
    }

    TextColumn {
        visible: progressBarIn.isValid && progressBarIn.error
        text: qsTr("Failed on %1").arg(progressBarIn.chainName)
        timestamp: progressBarIn.timestamp
    }

    component TextColumn: Column {
        id: textColumn

        property string text
        property int timestamp

        spacing: 4
        StatusBaseText {
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
            font.pixelSize: 13
            color: Theme.palette.baseColor1
            lineHeight: 18
            lineHeightMode: Text.FixedHeight
            text: textColumn.text
        }
        StatusBaseText {
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
            font.pixelSize: 13
            color: Theme.palette.directColor1
            lineHeight: 18
            lineHeightMode: Text.FixedHeight
            text: textColumn.timestamp > 0 ? LocaleUtils.formatDateTime(textColumn.timestamp * 1000, Locale.LongFormat) : ""
        }
    }
}