Examples: query, "exact match", wildcard*, wild?ard, wild*rd
Fuzzy search: cake~ (finds cakes, bake)
Term boost: "red velvet"^4, chocolate^2
Field grouping: tags:(+work -"fun-stuff")
Escaping: Escape characters +-&|!(){}[]^"~*?:\ with \, e.g. \+
Range search: properties.timestamp:[1587729413488 TO *] (inclusive), properties.title:{A TO Z}(excluding A and Z)
Combinations: chocolate AND vanilla, chocolate OR vanilla, (chocolate OR vanilla) NOT "vanilla pudding"
Field search: properties.title:"The Title" AND text
Zurück zum Beitrag

Versionen 2

vor 5 Monaten
Aktualisierung einer Untertabellenansicht im Dialog nach Anpassung in einer Dialogfunktion
Aktualisierung einer Untertabellenansicht im Dialog nach Anpassung in einer Dialogfunktion
Ich lasse euch mal an meinem Lösungansatz teilhaben. Vielleicht hat ja noch jemand eine bessere Idee. Problematisch waren a) die fehlenden DatenbankIDs, da es sich hierbei nicht um die laufende Nummerierung im HTML Code / JS handelt. Diese ID lese ich direkt aus dem DOM-Objekt aus. Zudem muss der save-Aufruf sowohl im JS als auch im PHP erfolgen, sonst wird die Untertabellenansicht im Dialog nicht aktualisiert. ![file](https://yellowdevs.de/upload/files/1721026815881_image.png) Aufruf im JS mit Prüfung, ob überhaupt ausgewählte Daten vorhanden sind: ``` function verschiebeDateienZwischenUntertabellen($sourceTable, $targetTable) { $ausgewaehlteRows = erzeugeArrayMitAusgewaehltenEintraegen($sourceTable.replace('MATT', 'UT') , 'checkbox_auswahl'); if($ausgewaehlteRows.length>0) { var userParameters = {SOURCE: $sourceTable, TARGET: $targetTable, ROWS: JSON.stringify($ausgewaehlteRows)}; jr_execute_dialog_function('VERSCHIEBE_DATEIEN_ZWISCHEN_UNTERTABELLEN', userParameters, function (successReturnObject) { //console.log(successReturnObject.result) ; jr_execute('save'); }, function (errorReturnObject) { //console.log(errorReturnObject); } ); } } function erzeugeArrayMitAusgewaehltenEintraegen($untertabellenansicht, $feldname) { $ausgewaehlteRowIDs = []; jr_loop_table($untertabellenansicht, function ($subtable, $rowId) { if(jr_get_subtable_value($subtable, $rowId, $feldname) == 1) { $ausgewaehlteRowIDs.push(document.getElementById($untertabellenansicht.replace('MATT', 'UT')+'_row_id_'+$rowId).value); jr_set_subtable_value($subtable, $rowId, $feldname, 0); jr_remove_subtable_row($subtable, $rowId); } } ); return $ausgewaehlteRowIDs; } ``` Und dann das einfache PHP: ``` <?php class className extends JobRouter\Engine\Runtime\PhpFunction\DialogFunction { public function execute($rowId = null) { $sourceTable = $this->getParameter('SOURCE'); $targetTable = $this->getParameter('TARGET'); $rows = $this->getParameter('ROWS'); $rows = json_decode($rows, true); foreach ($rows as $row) { $rowData = array( 'DATEI' => $this->getSubtableValue($sourceTable, $row, 'DATEI', true), 'DATEINAME' => $this->getSubtableValue($sourceTable, $row, 'DATEINAME', true), 'DATEITYP' => $this->getSubtableValue($sourceTable, $row, 'DATEITYP', true) ); $this->insertSubtableRow($targetTable, 1, $rowData); $this->deleteSubtableRow($sourceTable, $row); } $this->save(); } } ?> ```
Ich lasse euch mal an meinem Lösungansatz teilhaben. Vielleicht hat ja noch jemand eine bessere Idee. Problematisch waren a) die fehlenden DatenbankIDs, da es sich hierbei nicht um die laufende Nummerierung im HTML Code / JS handelt. Diese ID lese ich direkt aus dem DOM-Objekt aus. Zudem muss der save-Aufruf sowohl im JS als auch im PHP erfolgen, sonst wird die Untertabellenansicht im Dialog nicht aktualisiert. ![file](https://yellowdevs.de/upload/files/1721026815881_image.png) Aufruf im JS mit Prüfung, ob überhaupt ausgewählte Daten vorhanden sind: function verschiebeDateienZwischenUntertabellen($sourceTable, $targetTable) { $ausgewaehlteRows = erzeugeArrayMitAusgewaehltenEintraegen($sourceTable.replace('MATT', 'UT') , 'checkbox_auswahl'); if($ausgewaehlteRows.length>0) { var userParameters = {SOURCE: $sourceTable, TARGET: $targetTable, ROWS: JSON.stringify($ausgewaehlteRows)}; jr_execute_dialog_function('VERSCHIEBE_DATEIEN_ZWISCHEN_UNTERTABELLEN', userParameters, function (successReturnObject) { //console.log(successReturnObject.result) ; jr_execute('save'); }, function (errorReturnObject) { //console.log(errorReturnObject); } ); } } function erzeugeArrayMitAusgewaehltenEintraegen($untertabellenansicht, $feldname) { $ausgewaehlteRowIDs = []; jr_loop_table($untertabellenansicht, function ($subtable, $rowId) { if(jr_get_subtable_value($subtable, $rowId, $feldname) == 1) { $ausgewaehlteRowIDs.push(document.getElementById($untertabellenansicht.replace('MATT', 'UT')+'_row_id_'+$rowId).value); jr_set_subtable_value($subtable, $rowId, $feldname, 0); jr_remove_subtable_row($subtable, $rowId); } } ); return $ausgewaehlteRowIDs; } Und dann das einfache PHP: <?php class className extends JobRouter\Engine\Runtime\PhpFunction\DialogFunction { public function execute($rowId = null) { $sourceTable = $this->getParameter('SOURCE'); $targetTable = $this->getParameter('TARGET'); $rows = $this->getParameter('ROWS'); $rows = json_decode($rows, true); foreach ($rows as $row) { $rowData = array( 'DATEI' => $this->getSubtableValue($sourceTable, $row, 'DATEI', true), 'DATEINAME' => $this->getSubtableValue($sourceTable, $row, 'DATEINAME', true), 'DATEITYP' => $this->getSubtableValue($sourceTable, $row, 'DATEITYP', true) ); $this->insertSubtableRow($targetTable, 1, $rowData); $this->deleteSubtableRow($sourceTable, $row); } $this->save(); } } ?>
vor 5 Monaten
Original
Aktualisierung einer Untertabellenansicht im Dialog nach Anpassung in einer Dialogfunktion

Ich lasse euch mal an meinem Lösungansatz teilhaben. Vielleicht hat ja noch jemand eine bessere Idee. Problematisch waren a) die fehlenden DatenbankIDs, da es sich hierbei nicht um die laufende Nummerierung im HTML Code / JS handelt. Diese ID lese ich direkt aus dem DOM-Objekt aus. Zudem muss der save-Aufruf sowohl im JS als auch im PHP erfolgen, sonst wird die Untertabellenansicht im Dialog nicht aktualisiert. ![file](https://yellowdevs.de/upload/files/1721026815881_image.png) Aufruf im JS mit Prüfung, ob überhaupt ausgewählte Daten vorhanden sind: function verschiebeDateienZwischenUntertabellen($sourceTable, $targetTable) { $ausgewaehlteRows = erzeugeArrayMitAusgewaehltenEintraegen($sourceTable.replace('MATT', 'UT') , 'checkbox_auswahl'); if($ausgewaehlteRows.length>0) { var userParameters = {SOURCE: $sourceTable, TARGET: $targetTable, ROWS: JSON.stringify($ausgewaehlteRows)}; jr_execute_dialog_function('VERSCHIEBE_DATEIEN_ZWISCHEN_UNTERTABELLEN', userParameters, function (successReturnObject) { //console.log(successReturnObject.result) ; jr_execute('save'); }, function (errorReturnObject) { //console.log(errorReturnObject); } ); } } function erzeugeArrayMitAusgewaehltenEintraegen($untertabellenansicht, $feldname) { $ausgewaehlteRowIDs = []; jr_loop_table($untertabellenansicht, function ($subtable, $rowId) { if(jr_get_subtable_value($subtable, $rowId, $feldname) == 1) { $ausgewaehlteRowIDs.push(document.getElementById($untertabellenansicht.replace('MATT', 'UT')+'_row_id_'+$rowId).value); jr_set_subtable_value($subtable, $rowId, $feldname, 0); jr_remove_subtable_row($subtable, $rowId); } } ); return $ausgewaehlteRowIDs; } Und dann das einfache PHP: <?php class className extends JobRouter\Engine\Runtime\PhpFunction\DialogFunction { public function execute($rowId = null) { $sourceTable = $this->getParameter('SOURCE'); $targetTable = $this->getParameter('TARGET'); $rows = $this->getParameter('ROWS'); $rows = json_decode($rows, true); foreach ($rows as $row) { $rowData = array( 'DATEI' => $this->getSubtableValue($sourceTable, $row, 'DATEI', true), 'DATEINAME' => $this->getSubtableValue($sourceTable, $row, 'DATEINAME', true), 'DATEITYP' => $this->getSubtableValue($sourceTable, $row, 'DATEITYP', true) ); $this->insertSubtableRow($targetTable, 1, $rowData); $this->deleteSubtableRow($sourceTable, $row); } $this->save(); } } ?>