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

NavnFormålParametereEksempel

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)

currentCustomerIsMemberFiltrerer på data hvor kunde er deltaker, og jeg er deltaker på kunden. Kun for eksterne brukere.
currentCustomerIsMember()
currentSupplierIsMemberFiltrerer på data hvor leverandør er deltaker, og jeg er deltaker på leverandøren. Kun for eksterne brukere.
currentSupplierIsMember()
currentCompanyIsMemberFiltrerer 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()
emptyFiltrere 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.

datevalueBruk kun dato-verdien (ikke tid) av en dato for å sammenligne.DatofeltFor å hente alle oppgaver planlagt i dag:
DateValue(PlannedDoneDate) = CurDate()
dateaddModifiser 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.



  • No labels