Har du noen gang kommet over et komplekst sorterings- og filtreringskrav, og ikke aner hvor du skal begynne? Forhåpentligvis kan denne artikkelen hjelpe deg!
Mendix er en plattform som gjør det enklere for bedrifter å bygge og administrere egendefinerte applikasjoner.
Tenk på det som en verktøykasse som lar deg bygge en applikasjon uten å måtte være en erfaren programvareutvikler eller ha teknisk kunnskap. Mendix gir brukere muligheten til å lage egendefinerte applikasjoner ved hjelp av dra-og-slipp-verktøy, i stedet for å måtte skrive kode fra bunnen av.
Enkel sortering av lister i Mendix kan oppnås ved bruk av handlingen List Operation og funksjonen Sort. Da kan man sortere basert på en eller flere attributter, enten etter stigende eller synkende verdi. Dette kan fungere fint for enkle listehandlinger med enkle sorteringskrav, men det kan bli vanskelig når du implementerer komplekse filtrerings- og sorteringsmekanismer i koden din.
Mitt problem oppsto da jeg prøvde å konsolidere en liste med rundt 500 alternativer, kjøre den gjennom over 15 filtre og sortere den både underveis, og etter filtreringen. Jeg prøvde alt; la til tall på hvert element på listen, som økte eller ble redusert når filtre ble brukt, la til løkker i løkker for å filtrere og sortere samtidig, osv. Dette ga meg hodepine!
Hodepinen varte helt til jeg fant ut at dette kunne løses mye enklere enn jeg først trodde. Problemet ble løst ganske enkelt ved å dele listene basert på attributter, og deretter slå dem sammen igjen. Så, hvordan fungerer dette?
La oss si at jeg har følgende eksempel for filtrering/sortering:
Husk at dette er et eksempel på assigment, og sannsynligvis ikke en veldig relevant eller effektiv måte å filtrere denne typen liste på. Dette brukes kun for å gi tips om hvordan du kan bruke listeoperasjonene for å få filtrering og sortering gjennomført.
Eksempel: Databasemodell
Dette gjøres veldig ofte i Mendix, og det er ikke noe vi vil gjøre annerledes her. Vi henter bare en liste over denne enheten fra databasen vår, uten å sortere eller utføre andre operasjoner.
I trinn 2 ville vi delt ut de bilene som ikke slippes i Norge. Dette gjør vi ved å bruke List Operation kalt Filter, hvor vi filtrerer ut alt som gjelder for en bestemt begrensning og plasserer dette i en annen liste. Vi filtrerer ut alle biler som har attributtet «releasedInNorway» satt til «TRUE», og plasserer dem i listen ListOfCars_ReleasedInNorway.
For trinn 3 ønsker vi å sortere listen over biler utgitt i Norge, med bilene med høyest rekkevidde på toppen og bilene med lavest rekkevidde nederst. Til dette bruker vi List Operation – Sort og sorter etter «range», «descending».
I trinn 4 ønsker vi å plassere alle elbiler på toppen av listen. For å gjøre dette, bruker vi filtrer- og sammenslåingstrikset! Først filtrerer vi ut alle elbiler og plasserer dem i en ny liste.
Vi bruker List Operation – Filter igjen, og filtrerer nå ut alle biler som har attributtet «fuelType» satt til «electric». Vi plasserer disse i en ny liste kalt ListOfCars_ElectricOnly.
Deretter må vi fjerne disse bilene fra den opprinnelige listen over biler, så vi trekker de fra igjen. Bruk List Operation - Subtract og plasser ListOfCars_ReleasedInNorway_Sorted øverst, og ListOfCars_ElectricOnly nederst. Dette vil fjerne elbilene fra den opprinnelige listen over biler som ble sluppet i Norge. Vi kaller denne nye listen ListOfCars_NotElectric. For å få elbilene på toppen av den listen gjør vi følgende, og det er her magien kommer inn.
Ved sammenslåing av 2 lister vil elementene i den første listen bli plassert på toppen av elementene i den andre listen!
Så når vi slår sammen listene, velger vi først listen ListOfCars_Electric, og deretter listen ListOfCars_NotElectric som andre. Dette plasserer alle elbiler på toppen i denne listen. Som magi! Dette er magien! Vi kaller denne nye listen ListOfCars_ElectricOnTop.
Når vi ser på trinn 5, må vi plassere hybridbiler mellom elbiler og biler med andre drivstofftyper. Her vil vi gjøre det samme trikset, men vi må først sørge for å ha 3 lister.
Vi vil nå ha 3 lister, ListOfCars_ElectricOnly, ListOfCars_Hybrid og ListOfCars_NoElectricNoHybrid. Vi kan nå starte sammenslåing av listene våre.
Først slår vi sammen ListOfCars_ElectricOnly og ListOfCars_Hybrid og kaller det ListOfCars_ElectricAndHybrid. Ved å gjøre dette i akkurat den rekkefølgen har vi nå en liste der elbilene er plassert over hybridbilene.
Vi forener så denne nye ListOfCars_ElectricAndHybrid med listen ListOfCars_NoElectricNoHybrid, og vips så har vi nå en ListOfCars_ElectricOnTopHybridSecond med elbiler øverst, etterfulgt av hybridbiler og til slutt biler med annet drivstoff.
Vi har nå en liste medr alle kjøretøy som er sluppet i Norge, de er sortert etter rekkevidde, elbiler er plassert på toppen, etterfulgt av hybridbiler og til slutt biler med andre drivstoff.
Fortsett med denne praksisen til du har kommet deg gjennom alle filtrene og sorteringene dine, og bli forbløffet av magien.
Dette enkle trikset hjalp meg tonnevis mens jeg jobbet med kompleks filtrerings- og sorteringslogikk, og jeg er sikker på at det vil hjelpe meg tonnevis i fremtiden.
Hvis du vil vite mer om Mendix, eller vil høre om flere Mendix tips og triks, ikke nøl med å ta kontakt.