From 480dd673c49896b214784d73cfd8ac7ab9393df7c9266b89cd3361ad9cefcedf Mon Sep 17 00:00:00 2001 From: Yuri Becker Date: Mon, 24 Mar 2025 10:53:46 +0100 Subject: [PATCH] Fix Mitarbeiter Table --- Gui/CustomerTable.qml | 1 - Gui/CustomersTable.qml | 12 +- Gui/EmployeeTable.qml | 10 +- Gui/EmployeesTable.qml | 309 +++++++++++++++++++---------------------- Gui/ObjectView.qml | 3 +- 5 files changed, 151 insertions(+), 184 deletions(-) diff --git a/Gui/CustomerTable.qml b/Gui/CustomerTable.qml index 48afca3..b2c8159 100644 --- a/Gui/CustomerTable.qml +++ b/Gui/CustomerTable.qml @@ -6,7 +6,6 @@ import Qt.labs.qmlmodels Item { anchors.fill: parent property var availableFilters: ["Name", "Adresse", "PLZ", "Ort"] - id: test StackView { diff --git a/Gui/CustomersTable.qml b/Gui/CustomersTable.qml index b88dafd..202babe 100644 --- a/Gui/CustomersTable.qml +++ b/Gui/CustomersTable.qml @@ -4,11 +4,9 @@ import QtQuick.Controls import Qt.labs.qmlmodels ColumnLayout { - function viewCriterion(criterion) { - business_model.viewCriterion(criterion.text); - } anchors.fill: parent + spacing: Dimensions.l Component.onCompleted: customersStack.pop() @@ -32,22 +30,22 @@ ColumnLayout { selected: true } ListElement { - name: "showProvider" + name: "Interessent" text: qsTr("Interessent") selected: false } ListElement { - name: "showClientele" + name: "Kunde" text: qsTr("Kunde") selected: false } ListElement { - name: "showProvider" + name: "Lieferant" text: qsTr("Lieferant") selected: false } ListElement { - name: "showFinished" + name: "Erledigt" text: qsTr("Erledigt") selected: false } diff --git a/Gui/EmployeeTable.qml b/Gui/EmployeeTable.qml index f10f85a..efd43e5 100644 --- a/Gui/EmployeeTable.qml +++ b/Gui/EmployeeTable.qml @@ -3,16 +3,14 @@ import QtQuick.Layouts import QtQuick.Controls import Qt.labs.qmlmodels +Item { + anchors.fill: parent -Item -{ - StackView - { + StackView { id: employeesStack + anchors.fill: parent initialItem: "EmployeesTable.qml" } } - - diff --git a/Gui/EmployeesTable.qml b/Gui/EmployeesTable.qml index aaffbec..a1eab72 100644 --- a/Gui/EmployeesTable.qml +++ b/Gui/EmployeesTable.qml @@ -3,222 +3,195 @@ import QtQuick.Layouts import QtQuick.Controls import Qt.labs.qmlmodels -Item -{ +ColumnLayout { property var availableFilters: ["Name", "Adresse", "PLZ", "Ort", "Status"] - SearchBar - { - id:searchBar - anchors.margins: 9 + function viewEmployees(criterion) { + employee_model.viewCriterion(criterion, showProcessed.checked, showFired.checked, showEveryone.checked); } - Button - { - id: addEmployeeBtn - text: qsTr("Mitarbeiter Hinzufügen") - icon.source: "qrc:/images/PlusCircle.svg" - anchors.right: parent.right - flat: true - onClicked: appLoader.source = "AddApplicant.qml" - } + anchors.fill: parent + spacing: Dimensions.s - ButtonGroup - { - id: criterion - // buttons: criterion.children - onClicked: - { - viewEmployees(criterion.checkedButton.text) + Component.onCompleted: employeesStack.pop() + + RowLayout { + Layout.fillWidth: true + Layout.horizontalStretchFactor: 1 + 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" + text: qsTr("Mitarbeiter") + } + } + + onSelectedChanged: name => { + viewEmployees(name); + } + } + Button { + id: addEmployeeBtn + + Layout.alignment: Qt.AlignRight + icon.source: "qrc:/images/PlusCircle.svg" + text: qsTr("Mitarbeiter Hinzufügen") + + onClicked: appLoader.source = "AddApplicant.qml" } } + RowLayout { + id: viewCriterion - ColumnLayout - { + CheckBox { + id: showEveryone + + checked: true + text: qsTr("Alle Stati") + + onCheckedChanged: { + showFired.checked = false; + showProcessed.checked = false; + } + onClicked: viewEmployees(criterion.checkedButton.text) + } + CheckBox { + id: showProcessed + + checked: false + enabled: !showEveryone.checked + text: qsTr("Erledigt") + + onClicked: { + showFired.checked = false; + viewEmployees(criterion.checkedButton.text); + } + } + CheckBox { + id: showFired + + checked: false + enabled: !showEveryone.checked + text: qsTr("Ausgeschieden") + + onClicked: { + showProcessed.checked = false; + viewEmployees(criterion.checkedButton.text); + } + } + } + ColumnLayout { id: tableParent + Layout.fillWidth: true + Layout.fillHeight: true + Layout.verticalStretchFactor: 1 + clip: true - anchors - { - top: searchBar.bottom - bottom: parent.bottom - left: parent.left - right: parent.right - } - - RowLayout - { - id: viewCriterion - - RadioButton - { - //id: showAll - checked: true - text: qsTr("Alle") - ButtonGroup.group: criterion - //onClicked: viewEmployees(showAll) - } - RadioButton - { - //id: showApplicant - text: qsTr("Bewerber") - ButtonGroup.group: criterion - //onClicked: viewEmployees(showApplicant) - } - RadioButton - { - //id: showEmployee - text: qsTr("Mitarbeiter") - ButtonGroup.group: criterion - //onClicked: viewEmployees(showEmployee) - } - - CheckBox - { - id: showEveryone - text: qsTr("Alle Stati") - checked: true - onClicked: viewEmployees(criterion.checkedButton.text) - onCheckedChanged: - { - showFired.checked = false - showProcessed.checked = false - } - } - CheckBox - { - id: showProcessed - text: qsTr("Erledigt") - enabled: !showEveryone.checked - checked: false - onClicked: - { - showFired.checked = false - viewEmployees(criterion.checkedButton.text) - } - } - CheckBox - { - id: showFired - text: qsTr("Ausgeschieden") - enabled: !showEveryone.checked - checked: false - onClicked: - { - showProcessed.checked = false - viewEmployees(criterion.checkedButton.text) - } - } - - } - - HorizontalHeaderView - { + HorizontalHeaderView { id: employeeTableHeader + Layout.fillWidth: true - syncView: appliEmpTable + width: tableParent.width implicitHeight: 40 movableColumns: true //@disable-check M16 - delegate: Rectangle - { - color: addEmployeeBtn.palette.alternateBase - border.color: palette.base - implicitHeight: 40 + syncView: appliEmpTable + + delegate: Rectangle { Layout.fillWidth: true + border.color: palette.base + color: addEmployeeBtn.palette.alternateBase + implicitHeight: 40 implicitWidth: 1 - Text - { - text: model.display + + Text { + color: palette.text elide: Text.ElideRight - width: parent.width height: parent.height horizontalAlignment: Text.AlignHCenter + text: model.display verticalAlignment: Text.AlignVCenter - color: palette.text + width: parent.width } } } - - TableView - { + TableView { id: appliEmpTable - //Layout.fillHeight: true - height: tableParent.height - (viewCriterion.height + employeeTableHeader.height) + Layout.fillWidth: true + Layout.fillHeight: true + Layout.verticalStretchFactor: 1 columnSpacing: 1 - rowSpacing: 2 - alternatingRows: true - resizableColumns: true + height: tableParent.height - employeeTableHeader.height model: employee_model + resizableColumns: true + rowSpacing: 2 selectionBehavior: TableView.SelectRows - ScrollBar.vertical: ScrollBar - { + ScrollBar.vertical: ScrollBar { policy: appliEmpTable.contentHeight > appliEmpTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff } - - selectionModel: ItemSelectionModel - { - id: selModel - model: appliEmpTable.model - } - - - delegate:Rectangle - { - required property bool selected + delegate: Rectangle { required property bool current - implicitWidth: appliEmpTable.width / appliEmpTable.columns + required property bool selected + + color: selected ? addEmployeeBtn.palette.highlight //palette.highlight + : (appliEmpTable.alternatingRows && row % 2 !== 0 ? addEmployeeBtn.palette.base // palette.base + : addEmployeeBtn.palette.alternateBase) //palette.alternateBase) + implicitHeight: 25 - color: selected - ? addEmployeeBtn.palette.highlight //palette.highlight - : (appliEmpTable.alternatingRows && row % 2 !== 0 - ? addEmployeeBtn.palette.base // palette.base - : addEmployeeBtn.palette.alternateBase) //palette.alternateBase) + implicitWidth: appliEmpTable.width / appliEmpTable.columns - Text - { - text: (model.display === null || model.display === undefined)? "": model.display - elide: Text.ElideRight - width: parent.width - height: parent.height - verticalAlignment: Text.AlignVCenter - leftPadding: 9 //@d isable-check M16 + Text { color: palette.text - + elide: Text.ElideRight + height: parent.height + leftPadding: 9 //@d isable-check M16 + text: (model.display === null || model.display === undefined) ? "" : model.display + verticalAlignment: Text.AlignVCenter + width: parent.width } - - MouseArea - { + MouseArea { id: mouseArea - property bool hovered:false + + property bool hovered: false anchors.fill: parent hoverEnabled: true - onDoubleClicked: - { - employeesStack.push("EmployeeDetails.qml", {selectedEmployee: row}); + onDoubleClicked: { + employeesStack.push("EmployeeDetails.qml", { + selectedEmployee: row + }); } - - onEntered: - { - appliEmpTable.selectionModel.select(appliEmpTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows) + onEntered: { + appliEmpTable.selectionModel.select(appliEmpTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows); } - } } - } + selectionModel: ItemSelectionModel { + id: selModel - Item - { + model: appliEmpTable.model + } + } + Item { Layout.fillWidth: true } } - - function viewEmployees(criterion) - { - employee_model.viewCriterion(criterion, showProcessed.checked, showFired.checked, showEveryone.checked) - } - Component.onCompleted: employeesStack.pop() } diff --git a/Gui/ObjectView.qml b/Gui/ObjectView.qml index 49bd751..1d85586 100644 --- a/Gui/ObjectView.qml +++ b/Gui/ObjectView.qml @@ -146,8 +146,7 @@ GridLayout } TextField - { - id: gesamtnetto + {id: gesamtnetto Layout.fillWidth: true Layout.columnSpan: 3 }