Datafilter er en modul som gir deg anledning til å opprette faste filtere og spørringer mot alle data i systemet (alle data som er tilgjengelig gjennom vårt offentlige API). Denne modulen er en avansert modul, som krever god teknisk kompetanse for å bruke. Foreløpig kan den brukes i gadget for avviksliste basert på filter, samt som et fast filter ved uttak av data gjennom API ("filterid"-parameter i URL).
Opprett et datafilter
1. Gå til Kontrollpanelet og klikk på Datafilter i kolonnen Generelt.
2. For å opprette ett nytt datafilter, klikk Opprett nytt filter. For å redigere et eksisterende, klikk på navnet til filteret i listen.
3. Skriv navn, velg datamodell og klikk Lagre.
Merk: Når du har lagret datafilteret er det ikke mulig å endre datamodell.
Info: Datamodellen er beskrevet til høyre på siden under Modell. Klikk på Utforsk APIet for å se alle modellene og utvidelser (hele APIet).
Utforming av datafilter
Kolonner, Utvid på og Sorter på påvirker forhåndsvisningen av Resultatet, men har ingen påvirkning på selve filteret. I feltet Filter skrives datafilteret.
Info: Alle data som hentes ut gjennom API er filtrert på rettighetene til innlogget bruker. Forhåndsvisning av resultatet oppdateres fortløpende ved endringer i feltene.
Kolonner
Dersom denne står tom, velges alle kolonner i modellen. For å kun se spesifikke kolonner i resultatet, skriv inn kolonnene og separer dem med komma.
Eksempel: "Subject, Description".
Utvid på
Her kan du velge hvilke relasjoner modellen skal utvides på. Dersom du utvider på en relasjon, kan du i feltet Kolonner skrive "RelasjonsNavn/KolonneNavn" for å velge kolonner fra utvidelsen.
Eksempel: "Responsible, Department".
Sorter på
Her kan du velge hvilke kolonner som utvalget skal sorteres på, og i hvilken retning de skal sorteres.
Eksempel: "Subject DESC, CreatedDateTime ASC"
Filter
Her skriver du filter-spørringen som skal filtrere utvalget.
- Filtrene må separeres med enten "and" eller "or".
- Likhet sjekkes med tegnet "=". Tegnene "<=", ">=", "<" og ">" støttes for å sammenlikne data. I tillegg støttes operatorene "contains" og "in".
- "contains" brukes på følgende måte: Subject contains "kjell"
- "in" brukes på denne måten: Id IN (1,2,3,4)
- Bruk gjerne parenteser for å skille filtrene fra hverandre, slik som i eksempelet. Dersom listen ikke viser det som er forventet, prøv å legg parenteser rundt ting for å tydeliggjøre hva du spør etter.
Eksempel: "(Subject contains "kjell" AND Cause contains "hei") OR (Id IN (1,2,3,4)) OR (IncidentDateTime <= '2013-12-31')"
Info: Ved filtrering på JSON-formatterte felt, vil ikke lagrede verdier alltid gjenspeile hva som vises i APIet. F. eks. kan en verdi være lagret som null (JSON-felt ikke fylt ut), men verdien i API er false (på grunn av standard-verdi). For å hente alle som er null eller false kan man da spørre etter Feltnavn != true i stedet for Feltnavn = false.
Funksjoner og variabler
Navn | Formål | Parametere | Eksempel |
---|---|---|---|
CurrentUserId() | Returnerer id for pålogget bruker, kan brukes på følgende måte: | Ingen | ResponsibleCoworkerId = CurrentUserId() |
CurrentDepartmentIds() | Returnerer ider på alle avdelingene til pålogget bruker, kan brukes på følgende måte: | Ingen | DepartmentId IN CurrentDepartmentIds() |
Now() | Nåværende tidspunkt, kan brukes på følgende måte: | Ingen | PlannedStartDate > Now() |
CurDate() | Datoen i dag, uten tidspunkt, kan brukes på følgende måte: | Ingen | PlannedStartDate > CurDate(). Forskjellen er at denne har tidspunkt 00:00:00 i motsetning til Now() som også har nåværende tidspunkt. |
CurrentUsername() | Nåværende brukernavn | Ingen |
|
CurrentFullName() | Nåværende brukers fulle navn | Ingen |
|
CurrentGroupIds() | Nåværende brukers grupper | Ingen | Finn medarbeidere som deler noen av mine grupper: GroupIds IN(CurrentGroupIds()) |
CurrentFunctionIds() | Nåværende brukers funksjoner/roller. | Ingen | Finn medarbeidere som deler noen av mine funksjoner: FunctionIds IN(CurrentFunctionIds()) |
CurrentCustomerIds() | Liste over kunder jeg er deltaker på. Kun for eksterne brukere. | CustomerId IN CurrentCustomerIds() | |
CurrentSupplierIds() | Liste over leverandører jeg er deltaker på. Kun for eksterne brukere. | SupplierId IN CurrentSupplierIds() | |
hasMember | Filtrer på data hvor en medarbeider er deltaker | Kommaseparert liste med medarbeider-ID | Finn data hvor jeg eller medarbeidere med ID 2 og 3 er deltakere: hasMember(currentUserId(), 2, 3) |
currentUserIsMember | Filtrer på data hvor jeg er deltaker. Hurtigfunksjon for hasMember(currentuserid()) | Ingen | currentUserIsMember() |
currentUserIsMemberWithFunctions | Filtrer på data hvor jeg jeg er deltaker med en viss rolle/funksjon | Kommaseparert liste over roller | currentUserIsMemberWithFunctions(1,2) |
currentCustomerIsMember | Filtrerer på data hvor kunde er deltaker, og jeg er deltaker på kunden. Kun for eksterne brukere. | currentCustomerIsMember() | |
currentSupplierIsMember | Filtrerer på data hvor leverandør er deltaker, og jeg er deltaker på leverandøren. Kun for eksterne brukere. | currentSupplierIsMember() | |
currentCompanyIsMember | Filtrerer på data hvor leverandør eller kunde er deltaker, og jeg er deltaker på en av de valgte leverandørenene/kundene. Kun for eksterne brukere. | currentCompanyIsMember() | |
empty | Filtrere på en verdi som verken er tom eller null | Tag2 is empty Tag2 is not empty | |
date | Formål beregn en dynamisk dato | 1: Tekst | For eksempel kan man skrive date(1. January), date(01.01.2016), date(now), date(first day of this year) osv. Eksempel for å hente registreringer i inneværende år: RegisteredDateTime >= date(first day of this year) and RegisteredDateTime < date(first day of next year). Merk at det brukes "mindre enn første dag neste år", fordi man også må regne med registreringer 31.12 kl. 23:59:59. |
datevalue | Bruk kun dato-verdien (ikke tid) av en dato for å sammenligne. | Datofelt | For å hente alle oppgaver planlagt i dag: DateValue(PlannedDoneDate) = CurDate() |
dateadd | Modifiser en dato for å sammenligne | 1: Datofelt 2: Heltall 3: Tidsenhet i entall eller flertall (Days, Hours, Minutes, Seconds, Weeks, Months, Quarters, Years) | For å hente alle oppgaver med varighet på over en uke: PlannedDoneDate > DateAdd(PlannedStartDate, 1, week) |
substringof | Tekst som inneholder | 1: Tekst, 2: Felt | Finn alle hvor enmet inneholder "Vindu": substringof('Vindu', Subject) |
endswith | Tekst som slutter på | 1: Tekst, 2: Felt | Finn alle hvor emnet slutter med punktum: endswith(Subject, '.') |
startswith | Tekst som starter med | 1: Felt, 2: Tekst | Finn alle hvor emnet starter med "Vindu": startswith(Subject, 'Vindu') |
length | Lengden på en tekst | 1: Felt | Finn alle hvor emnet er 5 tegn langt: length(Subject) = 5 |
indexof | Posisjon til første treff på tekst | 1: Felt, 2: Tekst | Finn alle hvor teksten 'vindu' er på karakter 8 i emnet: indexof(Subject, 'vindu') = 8 |
substring | Hent utdrag av en tekst basert på posisjon | 1. Felt, 2: Start, 3: Lengde | Finn alle hvor teksten 'vindu' er på posisjon 3-6: substring(Subject,3,4) = 'vindu' |
notin | Er ikke blant | Ubegrenset antall parametere | Finn alle som ikke er av type 5 og 7: TypeId NOTIN(5,7) |
in | Er blant | Ubegrenset antall parametere | Finn alle av type 1, 2 og 3: TypeId IN(1,2,3) |
search | Søker blant alle tekstfelter | 1: Tekst | Finn alle som inneholder teksten 'vindu' i noen tekstfelt: search(vindu) |
childrenof | Hent underobjekter til et objekt | 1: Felt, 2: ID | Finn alle som er registrert på DepartmentId 1 eller undertype: childrenof(DepartmentId, 1). Ikke støttet i alle moduler. |
hastags | Filtrer på markelapper | Ubegrenset antall ID-er | Finn alle som er registrert med merkelapp 1 eller 5: hastags(1,5) |
not | Negativt filter | Filter | Finn alle som ikke har merkelapp 4: NOT hastags(4) |
year | Hent ut år av en dato | 1: Dato | Finn alle registrert i et spesifikt år: YEAR(RegisteredDateTime) = 1972 |
month | Hent ut måned av en dato | 1: Dato | Finn alle registrert i januar måned (uavhengig av år): MONTH(RegisteredDateTime) = 1 |
day | Hent ut dag av en dato | 1: Dato | Finn alle registrert den første hver måned (uavhengig av dato): DAY(RegisteredDateTime) = 1 |
hour | Hent ut time av en dato | 1: Dato | HOUR(RegisteredDateTime) = 12 |
minute | Hent ut minutt av en dato | 1: Dato | MINUTE(RegisteredDateTime) = 59 |
second | Hent ut sekund av en dato | 1: Dato | SECOND(RegisteredDateTime) = 59 |
round | Avrund tall | 1: Tall | Finn timer som inneholder desimaler: ROUND(TotalHours) != TotalHours |
floor | Rund ned tall | 1: Tall | Finn alle timeregistreringer hvor antall timer rundes ned, og er 10: CEILING(TotalHours) = 10 |
ceiling | Rund opp tall | 1: Tall | Finn alle timeregistreringer hvor antall timer rundes opp, og er 10: CEILING(TotalHours) = 10 |
Info: Foreløpig er det ikke mulig å bruke funksjoner i kolonnedefinisjon, kun ved filtrering. Dersom du har behov for flere variabler eller funksjoner, registrer et forbedringsforslag i Kundeportalen.