import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import Qt.labs.qmlmodels

ColumnLayout {
    anchors.fill: parent
    spacing: Dimensions.l

    RowLayout {
        Layout.fillWidth: true
        spacing: Dimensions.l

        SearchBar {
        }
        QuickFilter {
            model: ListModel {
                ListElement {
                    name: "Alle"
                    selected: true
                    text: qsTr("Alle")
                }
                ListElement {
                    name: "Bewerber"
                    selected: false
                    text: qsTr("Bewerber")
                }
                ListElement {
                    name: "Mitarbeiter"
                    selected: false
                    text: qsTr("Kunde")
                }
                ListElement {
                    name: "Erledigt"
                    selected: false
                    text: qsTr("Erledigt")
                }
            }

            onSelectedChanged: name => {
                employee_model.viewCriterion(name);
            }
        }
        Button {
            Layout.alignment: Qt.AlignRight
            flat: true
            icon.source: "qrc:/images/PlusCircle.svg"
            text: qsTr("Bewerber Hinzufügen")

            onClicked: contentStack.push("AddApplicant.qml")
        }
        Button {
            Layout.alignment: Qt.AlignRight
            flat: true
            icon.source: "qrc:/images/PlusCircle.svg"
            text: qsTr("Mitarbeiter Hinzufügen")

            onClicked: contentStack.push("AddEmployee.qml")
        }
    }
    ColumnLayout {
        Layout.fillHeight: true
        Layout.fillWidth: true
        spacing: 2

        HorizontalHeaderView {
            movableColumns: true
            syncView: employeesTable

            delegate: Rectangle {
                Layout.fillWidth: true
                color: Colors.primary
                implicitHeight: 33
                implicitWidth: 1

                Text {
                    color: Colors.primaryContrast
                    elide: Text.ElideRight
                    font: Typography.smallBold
                    height: parent.height
                    horizontalAlignment: Text.AlignLeft
                    padding: Dimensions.s
                    text: model.display
                    verticalAlignment: Text.AlignVCenter
                    width: parent.width
                }
            }
        }
        TableView {
            id: employeesTable

            Layout.fillHeight: true
            Layout.fillWidth: true
            columnSpacing: 2
            model: applicantModel
            resizableColumns: true
            rowSpacing: 2
            selectionBehavior: TableView.SelectRows
            z: 1

            ScrollBar.vertical: ScrollBar {
                policy: ScrollBar.AsNeeded
            }
            delegate: Rectangle {
                required property bool selected

                color: selected ? Colors.primaryHighlight : Colors.transparent
                implicitHeight: 33
                implicitWidth: employeesTable.width / employeesTable.columns

                Text {
                    color: Colors.foreground
                    elide: Text.ElideRight
                    font: Typography.small
                    height: parent.height
                    padding: Dimensions.s
                    text: (model.display === null || model.display === undefined) ? "" : model.display
                    verticalAlignment: Text.AlignVCenter
                    width: parent.width
                }
                MouseArea {
                    anchors.fill: parent
                    cursorShape: Qt.PointingHandCursor
                    hoverEnabled: true

                    onClicked: {
                        contentStack.push("EmployeeDetails.qml", { row });
                    }
                    onEntered: {
                        employeesTable.selectionModel.select(employeesTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows);
                    }
                }
            }
            selectionModel: ItemSelectionModel {
                model: employeesTable.model
            }
        }
    }
}

