diff --git a/public/js/components/Vertraege/List/Unassigned.js b/public/js/components/Vertraege/List/Unassigned.js
index 1ea7d9b3b..d0ed49f49 100644
--- a/public/js/components/Vertraege/List/Unassigned.js
+++ b/public/js/components/Vertraege/List/Unassigned.js
@@ -57,9 +57,11 @@ export default {
],
layout: 'fitColumns',
layoutColumnsOnNewData: false,
- height: '200',
+ height: 200,
selectableRowsRangeMode: 'click',
selectableRows: true,
+ selectableRowsRollingSelection: false, //only allow multiselect with STRG
+ index: "lehreinheit_id",
persistenceID: 'core-contracts-unassigned'
},
tabulatorEvents: [
@@ -67,7 +69,9 @@ export default {
event: 'rowClick',
handler: (e, row) => {
const data = row.getData();
- this.toggleRowClick(data);
+
+ //this.toggleRowClick(e, data);
+ this.toggleSelect(e, data);
}
},
{
@@ -125,18 +129,18 @@ export default {
}
},
watch: {
- //TODO(Manu) check if still working
+ //TODO(Manu) check
person_id() {
this.$refs.table.reloadTable();
//this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/' + this.person_id);
},
- clickedRows() {
+/* clickedRows() {
this.$refs.table.reloadTable();
//this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/' + this.person_id);
- },
+ },*/
},
methods: {
- toggleRowClick(rowData){
+/* toggleRowClick(rowData){
// check row
const exists = this.clickedRows.some(row => JSON.stringify(row) === JSON.stringify(rowData));
@@ -147,10 +151,48 @@ export default {
} else {
this.clickedRows.push(rowData);
this.sumBetragLehrauftraege += Number(rowData.betrag1);
- //console.log(rowData.betrag1);
this.handleSumUp();
}
+ },*/
+ toggleSelect(event, rowData) {
+
+ const isCtrlPressed = event.ctrlKey;
+
+ if (!isCtrlPressed) {
+
+ const isSameSingleSelection =
+ this.clickedRows.length === 1 &&
+ this.clickedRows[0].lehreinheit_id === rowData.lehreinheit_id;
+
+ if (isSameSingleSelection) {
+ this.clickedRows = [];
+ this.sumBetragLehrauftraege = 0;
+ } else {
+ this.clickedRows = [rowData];
+ this.sumBetragLehrauftraege = Number(rowData.betrag1);
+ }
+ }
+
+ // Multiselect
+ else {
+
+ const exists = this.clickedRows.some(
+ row => row.lehreinheit_id === rowData.lehreinheit_id
+ );
+
+ if (exists) {
+ this.clickedRows = this.clickedRows.filter(
+ row => row.lehreinheit_id !== rowData.lehreinheit_id
+ );
+ this.sumBetragLehrauftraege -= Number(rowData.betrag1);
+ } else {
+ this.clickedRows.push(rowData);
+ this.sumBetragLehrauftraege += Number(rowData.betrag1);
+ }
+ }
+
+ this.handleSumUp();
},
emitSaveEvent() {
this.$emit('saveClickedRows', this.clickedRows);
@@ -164,6 +206,21 @@ export default {
this.$emit("sum-updated", this.sumBetragLehrauftraege);
},
},
+ /*
+
{{$p.t('vertrag', 'text_addLehrauftrag')}}
+
+
+ */
template: `
{{$p.t('vertrag', 'text_explainLehrauftrag')}}
@@ -176,18 +233,5 @@ export default {
>
-
{{$p.t('vertrag', 'text_addLehrauftrag')}}
-
-
`
}
\ No newline at end of file
diff --git a/public/js/components/Vertraege/Vertraege.js b/public/js/components/Vertraege/Vertraege.js
index f980d8117..1f891ae8a 100644
--- a/public/js/components/Vertraege/Vertraege.js
+++ b/public/js/components/Vertraege/Vertraege.js
@@ -132,6 +132,7 @@ export default {
height: '250',
selectableRowsRangeMode: 'click',
selectableRows: true,
+ selectableRowsRollingSelection: false, //only allow multiselect with STRG
index: "vertrag_id",
persistence: {
sort: true,
@@ -179,7 +180,7 @@ export default {
});*/
}
},
- {
+/* {
//is just enabled for ADDON Injection KU: MultiprintHonorarvertrag
//(maybe enable also for ADDON FH Burgenland: MultiAccept later)
event: 'rowClick',
@@ -192,6 +193,16 @@ export default {
this.toggleRowClick(selectedContract, status, bezeichnung);
}
}
+ },*/
+ {
+ event: 'rowClick',
+ handler: (e, row) => {
+ if (!this.dataPrintHonorar?.multiselect) return;
+
+ const { vertrag_id, status, bezeichnung, vertragstyp_bezeichnung } = row.getData();
+
+ this.toggleRowClick(e, vertrag_id, status, bezeichnung, vertragstyp_bezeichnung);
+ }
},
{
event: "dataProcessed",
@@ -234,6 +245,8 @@ export default {
person_id() {
this.$refs.table.reloadTable();
this.arraySelectedContracts = [];
+/* if(this.dataPrintHonorar?.multiselect)
+ this.dataPrintHonorar.multiselect = [];*/
},
},
methods: {
@@ -350,11 +363,12 @@ export default {
return this.$refs.contractstati.$refs.statusData
.call(this.endpoint.insertContractStatus(params))
.then(response => {
- //this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
+ this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.contractstati.closeModal();
this.$refs.contractstati.reload();
- //this.reload(); //focus get lost with reload
+ this.pendingSelectId = params.vertrag_id;
+ this.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
@@ -395,7 +409,8 @@ export default {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.contractstati.closeModal();
this.$refs.contractstati.reload();
- //this.reload(); //focus gets lost with reload
+ this.pendingSelectId = params.vertrag_id;
+ this.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
@@ -489,7 +504,7 @@ export default {
}
//check if status=="Genehmigt"
- const statusNotGenehmigtExists = this.arraySelectedContracts.some(([_, status]) => status !== 'Genehmigt');
+ const statusNotGenehmigtExists = this.arraySelectedContracts.some(v => v.status !== 'Genehmigt');
if(statusNotGenehmigtExists) {
this.$fhcAlert.alertError(this.$p.t('vertrag', 'alertOnlyApprovedContracts'));
return;
@@ -499,14 +514,14 @@ export default {
let vertragString = '';
this.arraySelectedContracts.forEach(element => {
- vertragString += '&vertrag_id[]=' + element[0].toString();
+ vertragString += '&vertrag_id[]=' + element.vertrag_id.toString();
});
let linkToPdf = this.dataPrintHonorar.link +
'content/pdfExport.php?xml=' + this.dataPrintHonorar.xml + '&xsl=' + this.dataPrintHonorar.xsl + '&mitarbeiter_uid=' + this.mitarbeiter_uid + vertragString + '&output=pdf&uid=' + this.mitarbeiter_uid;
window.open(linkToPdf, '_blank');
},
- toggleRowClick(contractId, status, bezeichnung) {
+/* toggleRowClick(contractId, status, bezeichnung) {
const index = this.arraySelectedContracts.findIndex(
([id]) => id === contractId
);
@@ -515,10 +530,41 @@ export default {
} else {
this.arraySelectedContracts.push([contractId, status, bezeichnung]);
}
+ },*/
+ toggleRowClick(event, vertrag_id, status, bezeichnung, vertragstyp_bezeichnung) {
+ if (!this.dataPrintHonorar?.multiselect) return;
+
+ const isCtrl = event.ctrlKey || event.metaKey;
+
+ const entry = {
+ vertrag_id,
+ status,
+ bezeichnung,
+ vertragstyp_bezeichnung
+ };
+
+ // Single click
+ if (!isCtrl) {
+ this.arraySelectedContracts = [entry];
+ return;
+ }
+
+ // CTRL / CMD → toggle
+ const index = this.arraySelectedContracts.findIndex(
+ e => e.vertrag_id === vertrag_id
+ );
+
+ if (index === -1) {
+ this.arraySelectedContracts.push(entry);
+ //this.arraySelectedContracts.push([entry.vertrag_id, entry.status, entry.bezeichnung, entry.vertragstyp_bezeichnung]);
+ } else {
+ this.arraySelectedContracts.splice(index, 1);
+ }
},
- clearSelection(){
+/* clearSelection(){
this.arraySelectedContracts = [];
- }
+ this.$refs.table.tabulator.deselectRow();
+ }*/
},
created() {
Promise.all([
@@ -544,33 +590,28 @@ export default {
});
this.getFormattedDate();
},
- template: `
-
+ /*
+
-
-
-
-
+
-
-
-
-
-
-
+ {{arraySelectedContracts}} || {{dataPrintHonorar}}
-
+
+ */
+ template: `
+
-
+
+
+
+
+
+
+
+