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
Unbeantwortet
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

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();
	}
}
?>
  
  
Gepostet vor 5 Monaten
Bearbeitet vor 5 Monaten
220 Ansichten
0 Antworten
vor 5 Monaten
vor 5 Monaten