Ero sivun ”Kohdistamo” versioiden välillä
Ei muokkausyhteenvetoa |
(uusi rakenne ja sen mukaiset ovariablet) |
||
Rivi 3: | Rivi 3: | ||
<rcode name="answer" embed=1 showcode=0 label="Tallenna kirjaus" variables=" | <rcode name="answer" embed=1 showcode=0 label="Tallenna kirjaus" variables=" | ||
name:työ|description:Minkä työn haluat kirjata?|type:selection|options: | |||
'Näkemysverkko';Näkemysverkko; | |||
'Maahanmuutto';Maahanmuutto; | |||
'Yhtäköyttä';Yhtäköyttä; | |||
'Vesiapina';Vesiapina; | |||
'Videoblogi';Videoblogi; | |||
'Helsingin energiaratkaisu';Helsingin energiaratkaisu; | |||
'Yleiset Opasnet-työt';Yleiset Opasnet-työt; | |||
'Helsingin ilmastokartta 2';Helsingin ilmastokartta 2; | |||
'Oletus';Oletus; | |||
'Ulos';Ulos; | |||
'Muu';Muu | |||
|default:'Näkemysverkko'| | |||
category:Työjakson tiedot| | |||
name:jaksoko|description:Mitä haluat kirjata?|type:selection|options: | |||
FALSE;Annan nykyhetken aloitusajaksi; | |||
TRUE;Annan työn alku- ja loppuhetken käsin| | |||
default:FALSE| | |||
name:muutyö|description:Muu työ, mikä?|type:text| | |||
category:Listalta puuttuva työ|category_conditions:työ;'Muu'| | |||
name:alku|description:Milloin aloitit?|type:datetime| | |||
category:Jakson ajoitus|category_conditions:jaksoko;TRUE| | |||
name:loppu|description:Mihin asti tämä työ jatkui?|type:datetime | |||
"> | "> | ||
library(OpasnetUtils) | library(OpasnetUtils) | ||
alkutyo <- ifelse(työ == 'Muu', muutyö, työ) | |||
if(jaksoko) { | if(jaksoko) { | ||
alku <- as.numeric(alku) | |||
loppu <- as.numeric(loppu) | |||
lopputyo <- "Ulos" | |||
} else { | } else { | ||
alku <- as.numeric(Sys.time()) | |||
loppu <- NULL | |||
lopputyo <- NULL | |||
} | } | ||
out <- data.frame( | out <- data.frame( | ||
Timestamp = Sys.time(), | |||
Work = c(alkutyo, lopputyo), | |||
Person = wiki_username, | |||
Result = c(alku, loppu) | |||
) | ) | ||
opbase.upload(input = out, ident = "Op_fi3948", name = "Kohdistamo", subset = "Kirjaukset2", | |||
obj_type = "variable", act_type = "append", language = "fin", who = wiki_username) | |||
cat("Kirjaus onnistui. Nämä tiedot tallennettiin.\n") | |||
#} | |||
out$Result <- as.character(as.POSIXct(out$Result, origin="1970-01-01 00:00:00")) | |||
oprint(out) | |||
</rcode> | </rcode> | ||
<rcode graphics=0 name="output" embed=0 showcode=0 label="Hae kirjauksia" variables=" | <rcode graphics=0 name="output" embed=0 showcode=0 label="Hae kirjauksia" variables=" | ||
category:Hae kirjauksia| | |||
name:alku|description:Seurantajakson alku|type:date|default:2018-06-01| | |||
name:loppu|description:Seurantajakson loppu|type:date| | |||
name:tekija|description:Työntekijän käyttäjätunnus|type:text|default:Kaikki| | |||
name:projekti|description:Projekti|type:selection|options: | |||
'Kaikki';Kaikki; | |||
'Näkemysverkko';Näkemysverkko: | 'Näkemysverkko';Näkemysverkko: | ||
'STM raportointi ja laskutus';STM raportointi ja laskutus; | |||
'EU raportointi ja laskutus';EU raportointi ja laskutus; | |||
'TEKES raportointi ja laskutus';TEKES raportointi ja laskutus; | |||
'SA raportointi ja laskutus';SA raportointi ja laskutus; | |||
'ESR/EAKR raportointi ja laskutus';ESR/EAKR raportointi ja laskutus; | |||
'MUUT raportointi ja laskutus';MUUT raportointi ja laskutus; | |||
'Budjettirahoitus';Budjettirahoitus; | |||
'Tilintarkastus';Tilintarkastus; | |||
'Yleinen projektinhallinta ja neuvonta';Yleinen projektinhallinta ja neuvonta; | |||
'Kehittäminen';Kehittäminen; | |||
'Koulutus';Koulutus; | |||
'Sisäiset palaverit';Sisäiset palaverit; | |||
'Vuosibudjetointi';Vuosibudjetointi; | |||
'Tilinpäätös';Tilinpäätös; | |||
'Pneumokokkirokote';Pneumokokkirokote; | |||
'LVM-tulevaisuuskatsaus';LVM-tulevaisuuskatsaus; | |||
'H2O';H2O; | |||
'Helsingin ilmastokartta';Helsingin ilmastokartta; | |||
'Helsingin ilmastokartta 2';Helsingin ilmastokartta 2; | |||
'Hyvinvointi kestävän kasvun perustana';Hyvinvointi kestävä kasvun perustana; | |||
'IEHIAS';IEHIAS; | |||
'Avoimen tieteen tiekartta';Avoimen tieteen tiekartta; | |||
'Helsingin energiaratkaisu';Helsingin energiaratkaisu; | |||
'Yleiset Opasnet-työt';Yleiset Opasnet-työt; | |||
'Yhtäköyttä';Yhtäköyttä; | |||
'Maahanmuutto';Maahanmuutto; | |||
'Vesiapina';Vesiapina; | |||
'Oletus';Oletus; | |||
'Muu';Muu | |||
|default:'Kaikki' | |||
"> | "> | ||
library(OpasnetUtils) | library(OpasnetUtils) | ||
Rivi 102: | Rivi 101: | ||
objects.latest("Op_en6007", code_name = "answer") # We need timing | objects.latest("Op_en6007", code_name = "answer") # We need timing | ||
kirjaukset <- Ovariable( | |||
"kirjaukset", | |||
ddata = "Op_fi3948", subset="Kirjaukset2",getddata=FALSE | |||
) | |||
kirjauspoistot <- Ovariable( | |||
"kirjauspoistot", | |||
ddata="Op_fi3948", subset="Kirjauspoistot2", getddata=FALSE | |||
) | |||
kirjausajat <- Ovariable( | |||
"kirjausajat", | |||
dependencies = data.frame( | |||
Name=c( | |||
"kirjaukset", | |||
"kirjauspoistot", | |||
"alku", | |||
"loppu", | |||
"tekija", | |||
"projekti" | |||
), | |||
Ident=c( | |||
"Op_fi3948/alusta", # [[Kohdistamo]] | |||
"Op_fi3948/alusta", # [[Kohdistamo]] | |||
NA,NA,NA,NA | |||
) | |||
), | |||
formula = function(...) { | |||
dat <- kirjaukset[-na.omit(result(kirjauspoistot)) , ] | |||
if(is.character(alku)) alku <- as.numeric(as.POSIXct(alku)) | |||
if(is.character(loppu)) loppu <- as.numeric(as.POSIXct(loppu)) | |||
#tuntikirjaus <- opbase.data("Op_fi3950.tuntikirjaus") | |||
#työtehtävät <- opbase.data("Op_fi3950.tyotehtavat") | |||
#työsuunnitelma <- opbase.data("Op_fi3950.tyosuunnitelma") | |||
#tuntikirjaus <- tuntikirjaus[colnames(tuntikirjaus) != "Obs"] | |||
#työtehtävät <- työtehtävät[colnames(työtehtävät) != "Obs"] | |||
#työsuunnitelma <- työsuunnitelma[colnames(työsuunnitelma) != "Obs"] | |||
#colnames(työsuunnitelma)[colnames(työsuunnitelma) == "Result"] <- "Loppu" | |||
#työsuunnitelma <- data.frame(työsuunnitelma, Henkilö = "Jouni") | |||
if(tekija!='Kaikki') { | |||
tekija <- gsub("\\s", "", unlist(strsplit(tekija, ","))) | |||
dat <- dat[dat$Person %in% tekija , ] | |||
} | |||
#oprint(työ) | res <- result(dat) | ||
#oprint(ulos) | dat <- dat[order(dat$Person, res),] | ||
dat$Duration <- c(res[2:length(res)] - res[1:(length(res)-1)], 0) # Tämä pitää tehdä joka henkilölle erikseen. | |||
if(projekti!="Kaikki") dat <- dat[dat$Work == projekti , ] | |||
dat <- dat[result(dat) >= alku & result(dat) <= loppu +3600*24 , ] | |||
# molemmat <- dat[dat$Loppu != "NA" , ] | |||
# työ <- dat[dat$Loppu == "NA" , ] | |||
# ulos <- työ[työ$Työ == "Ulos" , ] | |||
# työ <- työ[työ$Työ != "Ulos" , ] | |||
#oprint(työ) | |||
#oprint(ulos) | |||
# if (length(työ$Työ) > length(ulos$Työ)) {työ <- työ[-((nrow(ulos)+1):nrow(työ)), ] | |||
# työ$Loppu <- ulos$Aika | |||
# } else työ$Loppu <- ulos$Alku | |||
# työ <- rbind(työ, molemmat) | |||
# työaika <- (sum(as.numeric(työ$Loppu))-sum(as.numeric(työ$Alku))) | |||
tyoaika <- aggregate(dat["Duration"], dat["Person"], sum) | |||
# työaika <- (round(työaika/3600, digits = 2)) | |||
cat("Valitulla välillä tehty työaika on yhteensä ", tyoaika, " tuntia. \n") | |||
result(dat) <- as.POSIXct(result(dat), origin = "1970-01-01 00:00:00") | |||
oprint(dat) | |||
#oprint(työsuunnitelma) | |||
#oprint(työtehtävät) | |||
#out <- poistot | |||
#oprint(out) | |||
#tuntikirjaus <- timing(tuntikirjaus, timecol = c("Aika", "Loppu"), weeks = 6) | |||
#timeline <- makeTimeline(tuntikirjaus) | |||
#timeline <- timeline[order(timeline$Time) , ] | |||
#timeline$Time[nrow(timeline)] <- max(timeline$Time, na.rm = TRUE) | |||
#for(i in 1:(nrow(timeline)-1)) {timeline$end[i] <- timeline$Time[i+1]} | |||
#timeline[nrow(timeline), "end"] <- NA | |||
#timeline$end <- as.POSIXct(timeline$end, origin = "1970-01-01") | |||
#ggplot(timeline, aes( | |||
# xmin = Time, # as.Date(as.character(Start)) | |||
# xmax = end, # as.Date(as.character(End)) + 2 | |||
# ymin = as.numeric(Henkilö), | |||
# ymax = as.numeric(Henkilö) + 1, | |||
# fill = Työ)) + geom_rect() | |||
# | |||
return(dat) | |||
} | |||
) | |||
kirjausajat <- EvalOutput(kirjausajat) | |||
result(kirjausajat) <- as.character(as.POSIXct(result(kirjausajat), origin="1970-01-01 00:00:00")) | |||
oprint(kirjausajat@output) | |||
#kirjausajat(alku, loppu, tekija, projekti) | |||
kirjausajat(alku, loppu, | |||
Rivi 202: | Rivi 216: | ||
# olisi yleispätevä, ja parametrin arvo kerrotaan projektikohtaisessa koodissa. | # olisi yleispätevä, ja parametrin arvo kerrotaan projektikohtaisessa koodissa. | ||
</rcode> | </rcode> | ||
<rcode name="answer" embed=1 showcode=0 label="Poista kirjaus" variables=" | <rcode name="answer" embed=1 showcode=0 label="Poista kirjaus" variables=" | ||
name:nro|description:Poistettavan kirjauksen rivinumero (Obs)|type:text| | |||
category:Kirjauksen poisto| | |||
name:syy|description:Poiston syy|type:text | |||
"> | "> | ||
library(OpasnetUtils) | library(OpasnetUtils) | ||
nro <- gsub("\\s", "", unlist(strsplit(nro, ","))) # Pilkotaan pilkusta ja poistetaan alku- ja loppuvälilyönnit | nro <- gsub("\\s", "", unlist(strsplit(nro, ","))) # Pilkotaan pilkusta ja poistetaan alku- ja loppuvälilyönnit | ||
dat <- data.frame( | dat <- data.frame( | ||
Timestamp = Sys.time(), | |||
User = wiki_username, | |||
Syy = syy, | |||
Result = nro | |||
) | |||
opbase.upload(input = dat, ident = "Op_fi3948", name = "Kohdistamo", subset = " | opbase.upload(input = dat, ident = "Op_fi3948", name = "Kohdistamo", subset = "Kirjauspoistot2", | ||
act_type = "append", language = "fin", who = wiki_username | |||
) | ) | ||
Rivi 227: | Rivi 246: | ||
</rcode> | </rcode> | ||
* Katso ohjeita sivulta [[Kohdistamo/Ohje]] | * Katso ohjeita sivulta [[Kohdistamo/Ohje]] |
Versio 29. kesäkuuta 2018 kello 13.37
Moderaattori:Ei ole (katso kaikki) Kuinka ryhtyä moderaattoriksi? Sivun edistymistä ei ole arvioitu. Arvostuksen määrää ei ole arvioitu (ks. peer review). |
Lisää dataa
|
- Katso ohjeita sivulta Kohdistamo/Ohje
- {{#opasnet_base_link:Op_fi3948}}
Aikakoneen laskenta
Tässä on siistitty ja dokumentoitu versio Aikakoneen makeTimeline-funktiosta, joka ottaa sisäänsä työajan alku- ja loppuaikoja ja tuottaa aikajanan. Funktion olennainen lisäarvo on siinä, että sille voi antaa päällekkäisiä ajanjaksoja, ja se korvaa vanhemmat kirjaukset (eli ylempänä taulukossa olevat) uudemmilla, jos niiissä on päällekkäisyyksiä. Toinen lisäarvo on se, että se automaattisesti käsittelee jokaisen henkilön ajankäyttöä erikseen, mutta muiden indeksien suhteen se vain periyttää tiedot aikajanalle. Muita indeksejä voi siis käyttää tarpeen mukaan.
----#: . Kehityskohteita: tarvitaanko koskaan tilannetta, jossa henkilösarakkeita onkin useita? Ei liene tärkeä, vaan tarvittaessa tämä toteutetaan luomalla tämmöinen sarake etukäteen. --Jouni Tuomisto (keskustelu) 15. heinäkuuta 2014 kello 08.28 (UTC) (type: truth; paradigms: science: comment)