Dit keer een leuk voorbeeld van portaalsorteren, daarvan zijn er al meerdere op internet te vinden, maar geeneen is zo eenvoudig als deze. Het voorbeeld geeft een “alles in één bestand oplossing”, maar er staat ook bij hoe je dit kunt omkatten naar een meer-bestanden oplossing. Voor de zichtbaarheid van de sortering hebben alle rijen een eigen kleur, maar die kleuren zijn verder niet belangrijk voor de werking.
Sleep van een willekeurige portaalrij het Drag&Drop-ikoon op die van een andere rij en dan wordt die rij daar naartoe verplaatst, de tussenliggende rijen schuiven dan vanzelf op.
Zo ziet het er in realtime uit (filmpje van 8 seconden): FMT_DragAndDrop
De werking is in principe erg eenvoudig. Je begint met een portaalrij te activeren en met het laten vallen van het ikoon wordt een auto-enter berekening getriggerd die de id van de doelregel in een $$variabele zet.
De trigger krijgt een scriptparameter mee, met daarin het nummer van de startrij (dat is de actieve portaalrij) en de veldnamen van de regelid en het sorteerveld. Het triggerscript berekent dan mbv die parameters en de $$variabele (in de velddefintie van het D&D-veld) welke van de records er middels de lus moeten worden gewijzigd.
De objectnaam van het D&D-veld in de scriptparameter is nodig wanneer je meer dan één portaal op de lay-out hebt staan. Alleen dan weet je zeker dat de juiste portaal wordt bijgewerkt.
Mocht je de portaalrecords van een extern bestand gebruiken, dan moet de uuid van het doelrecord worden opgehaald. Daarvoor zit er een voorbeeldscriptje (met effectief slechts één regel) in, maar dat scriptje is nu gedéactiveerd in het hoofdscript. Activeren maakt nu voor de werking met moeder- en portaal-records in één bestand echter niks uit, het werkt dan nog steeds.
Tenslotte nog een opmerking over het D&D-veld, dat is in dit voorbeeld een globaal-veld. Als je dit multiuser gaat gebruiken, dus vanaf een FMServer, dan moet je zorgen dat er een startwaarde in staat. Indien je dat niet zou doen, is het veld leeg, valt er daarom niets te slepen zolang je niet eerst een record toevoegt en dat is natuurlijk niet handig 🙂
Dat is alles, download het voorbeeld en probeer het zelf.
Simple_DragDrop_PortalSort