Nadaljevanje varnostnih zadev.

This commit is contained in:
May Doušak 2023-01-23 18:44:48 +01:00
parent bb920c4356
commit 455056db2c
242 changed files with 21 additions and 87058 deletions

View File

@ -24,7 +24,10 @@ if (!$config->enableBuilder) {
die('This application is not enabled. See https://github.com/mrclay/minify/blob/master/docs/BuilderApp.wiki.md');
}
if ($config->builderPassword && $config->builderPassword !== '') {
require( dirname(__FILE__) .'/../../../../settings.php' );
if ($minify_builder_password !== '') {
$auth = new Intervention\Httpauth\Httpauth(array(
'username' => 'admin',
'password' => $config->builderPassword,

View File

@ -30,7 +30,7 @@ $min_concatOnly = false;
* If non-empty, the Builder will be protected with HTTP Digest auth.
* The username is "admin".
*/
$min_builderPassword = 'admin';
$min_builderPassword = $minify_builder_password;
/**

View File

@ -1,42 +0,0 @@
## 1KA strežnik ##
# Del, ki ga potrebuje Peter, da generira ustrezno poroèilo za posamezno fakulteto na strežniku
# Tega ne poganjamo
params <- commandArgs(trailingOnly = TRUE)
ID <- params[1]
## //1KA strežnik// ##
# Dodatni sklop pripisemo v spodnji kodi
# Zaenkrat imata dodatni sklop FDV in FGG.
#ID <- 3000021
IDs <- ID
choose.dir("C:/Miha/sisplet2/admin/survey/modules/Evalvacija/Evalvacija_splosna_anketa")
library(knitr)
# Delovna mapa mora biti tista, kjer sta obe .r skripti
# nastavimo mapo, kjer bodo ustvarjene pomozne datoteke, potrebne
# za pretvorbo iz v latex in nato v pdf.
# Kodo pretvorimo v pdf.
# Pri kodi, ki je ne testiras torej ponovno omogoci imenaTabel in ID-je
# Spremembe, ki pridejo v postev, da pozene vsa stiri porocila
# Dolocimo ID-je in imenaTabel
for (zaporednaBaza in c(1:1)){
owd = setwd('temp')
imenaTabel <- c(paste0(owd, "/temp/podatki_",IDs,".csv"))
ID <- IDs[zaporednaBaza]
imenaTabel <- imenaTabel[zaporednaBaza]
knit2pdf('../splosnaPorocilo.Rnw', encoding = 'UTF-8')
# Porocilo iz mape 'temp' prekopiramo v mapo /rezultati/ID
novaMapa <- paste0("../rezultati/", ID, "/", fakulteta, "_",
format(Sys.time(), "%Y"), "_splosna",".pdf")
file.copy("splosnaPorocilo.pdf", novaMapa, overwrite =T)
# Delovno pot spremenimo v prvotno.
setwd(owd)
# Pobrisemo elemente iz 'environment-a'
# Ne za zadnjo porocilo, da lahko testiramo spremenljivke
if (zaporednaBaza != 4){
#remove(list = ls())
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

View File

@ -1,42 +0,0 @@
%
% slovene.sty - prilagoditev zvrsti ARTICLE, BOOK in REPORT slovenscini
%
\@ifundefined{slovensko}{\def\slovensko{}}{\endinput}
\typeout{Document Style Option 'Sloven2e' ver 0.1. / 11-Nov-95 / V.B.}
% naslovi
\def\abstractname{Povzetek}
\def\appendixname{Dodatek}
\def\bibname{Literatura}
\def\ccname{cc}
\def\chaptername{Poglavje}
\def\contentsname{Kazalo}
\def\enclname{Priloge}
\def\figurename{Slika\ }
\def\headpagename{Stran}
\def\headtoname{Komu}
\def\indexname{Stvarno kazalo}
\def\listfigurename{Slike}
\def\listtablename{Tabele}
\def\partname{Del}
\def\prefacename{Predgovor}
\def\seename{glej}
\def\alsoseename{glej tudi}
\def\refname{Viri}
\def\tablename{Tabela\ }
% tekoci datum
\def\today{\number\day. \ifcase\month\or
januar\or februar\or marec\or april\or maj\or junij\or
julij\or avgust\or september\or oktober\or november\or december\fi
\space\number\year}
% slovenski narekovaji
\def\lqlq{\leavevmode\hbox{,\kern-.1em,}}
\def\rqrq{\leavevmode\hbox{`\kern-.1em`}}
\endinput

View File

@ -1,2 +0,0 @@
*
!.gitignore

View File

@ -1,42 +0,0 @@
%
% slovene.sty - prilagoditev zvrsti ARTICLE, BOOK in REPORT slovenscini
%
\@ifundefined{slovensko}{\def\slovensko{}}{\endinput}
\typeout{Document Style Option 'Sloven2e' ver 0.1. / 11-Nov-95 / V.B.}
% naslovi
\def\abstractname{Povzetek}
\def\appendixname{Dodatek}
\def\bibname{Literatura}
\def\ccname{cc}
\def\chaptername{Poglavje}
\def\contentsname{Kazalo}
\def\enclname{Priloge}
\def\figurename{Slika\ }
\def\headpagename{Stran}
\def\headtoname{Komu}
\def\indexname{Stvarno kazalo}
\def\listfigurename{Slike}
\def\listtablename{Tabele}
\def\partname{Del}
\def\prefacename{Predgovor}
\def\seename{glej}
\def\alsoseename{glej tudi}
\def\refname{Viri}
\def\tablename{Tabela\ }
% tekoci datum
\def\today{\number\day. \ifcase\month\or
januar\or februar\or marec\or april\or maj\or junij\or
julij\or avgust\or september\or oktober\or november\or december\fi
\space\number\year}
% slovenski narekovaji
\def\lqlq{\leavevmode\hbox{,\kern-.1em,}}
\def\rqrq{\leavevmode\hbox{`\kern-.1em`}}
\endinput

View File

@ -1,2 +0,0 @@
*
!.gitignore

View File

@ -1,149 +0,0 @@
Bag Attributes
Microsoft Local Key set: <No Values>
localKeyID: 01 00 00 00
Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
friendlyName: te-Univerzawebstre!017enikiskritikal-cfdf38cd-38ba-444d-a34c-269ac64d2fc1
Key Attributes
X509v3 Key Usage: 10
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3ixOVt/lzi/50
K6UoRb66gAhtpnSEKYjwlrSSHUNjdi0pL87W7jIQD3Mleqo6ljCLwoR9y9L5+9PP
7/sjcEs1G/1r9A3r1PEb5IMcShUxvnTpaEfCeX23tTic2F5MtQn8Gy4zZ6ARiwk6
7SbKbyOyAkB51RBcm5xGhKtfmuW2tvV03svXBzRq9yRekAtXkI1D+o4nQJE+4TYW
dN42j+grinloPJdipiYrIkanbmipwWyx8lRykklZnWV/ivcIeKbT6Ii2XOhYbAb6
yFOsSnuQcL7aBWGvZOTu1oY8j4eilJcPWJjXi+Mw+elpu+qxCIBCSTYpyY4J4qxT
ma2qQ6RNAgMBAAECggEAdG9m6ji+p71sm3fAmy67kwZ70kuhaOIMfEuum26y/FrQ
xWsNtS2AVs3mRyVs7iOvAkpQ0JjH60wFD8l2sQGgxD1QY/Z8ClqY5g/t2LlqfpcL
BbLgqw91YGA3XNCp6dGDVwpLIdMgKWDhZx9g11Tv+RISovc2HPmehuHM8aaLCYAt
M5xTpdmf5Hdt2MI3ZTzeiA34padu3Rk/nLJFpAeLMZN1N3NFcnC+kQ0pVyqT33AX
wvPOk0/dC/LeGJmsPHtQ85Pku2TfekiKVQFk43sNLt3zhynKdJGyjhFnUTH94Ju1
Bzp07PvwS1DrcQdAATe4niyIZpbLHSGlkLTfmsdChQKBgQDuGxmf+m0TUiHYi82J
Rcf8DLsujLG7YE8UjW5ifVBpvWfBHOyH0kSLj+OaI3ww+bHDZmn+EC9PR2d4ec/r
2u1RW4ZOUJPa2ivrxj7E4Lvz+4zvsfFTSIj9W2uiPabB/2UInF1Q0SQBQOwd3ODt
50xMjPsZSVMnRTVHKi6LEgSubwKBgQDFVkBAwNFKSMYcGFCncvqMqnVT5PcaqINW
EMzI9kfOIGk7MrKxaSTqRJKnfSR/895IX/8rLqeFO5u9mak0zU34o8VOqp3p6fVG
pkZqo4h3bLkvKhC1entu/OcZKAPgiTv46Ek3alf2rlCJy0nnM/RcHVxO/gk3uAsj
t5sZuuB3AwKBgDh5RQKkqupCOLTbs8wzONOXUW4hAKaomRkO0neZsVDjE5DCA3fT
b16KqjkM4Y/cKUVnLQyNWis7jFcOzTnrmw4I3zoD8o2d4XzycEDR7MJZj3vqgIp4
UcWFwWmhpcOth5EbRSa99AQ4Gcibct36ViZx6bx9n7NYvuI6Jv/lLicRAoGBAJxi
4x6t7+6fx6iCOIDLZPXPLJYk0RNmUlcFj1T/oB4hn2OTpPtl6SRi3ZowWZmxSQow
UYcGPSof+CeEvAylW1Jdb0MNgYHbsE6h/RILsV17YzKWcpFvlJx7fiV4icIK3+U9
KLDq7PUIZbkdyt6YVOIfPoU3W1S13NYcbqUwbSzDAoGBAJntq/m7bhvkClf29kDh
pEl8opjV+HUKsqKscczjNA3/NPxWzTLUaCjH1RZSMda4x4Bv4looiMwZe+ve50Yy
t5t48rrv1iWBrGWwz4SkqAiibfuS+V0BilJX3txUZOUYrgxF0cUzoOhL8PcbZ8O2
JrqTlYriW623+DHQfDa4S2dv
-----END PRIVATE KEY-----
Bag Attributes
localKeyID: 01 00 00 00
friendlyName: Anketni sistem
subject=C = SI, ST = Slovenia, L = Ljubljana, OU = USI UL, CN = anketnisistem.uni-lj.si, emailAddress = helpdesk@uni-lj.si
issuer=DC = si, DC = uni-lj, CN = Univerza v Ljubljani CA1
-----BEGIN CERTIFICATE-----
MIIGOTCCBSGgAwIBAgITRgAAH083kx/WP4Z5LAADAAAfTzANBgkqhkiG9w0BAQsF
ADBPMRIwEAYKCZImiZPyLGQBGRYCc2kxFjAUBgoJkiaJk/IsZAEZFgZ1bmktbGox
ITAfBgNVBAMTGFVuaXZlcnphIHYgTGp1YmxqYW5pIENBMTAeFw0yMTEwMjcxMzUx
MzVaFw0yNDEwMjYxMzUxMzVaMIGKMQswCQYDVQQGEwJTSTERMA8GA1UECBMIU2xv
dmVuaWExEjAQBgNVBAcTCUxqdWJsamFuYTEPMA0GA1UECxMGVVNJIFVMMSAwHgYD
VQQDExdhbmtldG5pc2lzdGVtLnVuaS1sai5zaTEhMB8GCSqGSIb3DQEJARYSaGVs
cGRlc2tAdW5pLWxqLnNpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
t4sTlbf5c4v+dCulKEW+uoAIbaZ0hCmI8Ja0kh1DY3YtKS/O1u4yEA9zJXqqOpYw
i8KEfcvS+fvTz+/7I3BLNRv9a/QN69TxG+SDHEoVMb506WhHwnl9t7U4nNheTLUJ
/BsuM2egEYsJOu0mym8jsgJAedUQXJucRoSrX5rltrb1dN7L1wc0avckXpALV5CN
Q/qOJ0CRPuE2FnTeNo/oK4p5aDyXYqYmKyJGp25oqcFssfJUcpJJWZ1lf4r3CHim
0+iItlzoWGwG+shTrEp7kHC+2gVhr2Tk7taGPI+HopSXD1iY14vjMPnpabvqsQiA
Qkk2KcmOCeKsU5mtqkOkTQIDAQABo4IC0DCCAswwPQYJKwYBBAGCNxUHBDAwLgYm
KwYBBAGCNxUIwMJIh8CBcITBkxuDzc5HgsCcU4ETgZDnKoX47ToCAWQCAQwwDgYD
VR0PAQH/BAQDAgUgMB0GA1UdDgQWBBTeMKGyDYKB3X4tkd9MH/5Odw0jkTAfBgNV
HSMEGDAWgBTvvya5O5rw4dn3swQpt5iORUmKqDCCAR0GA1UdHwSCARQwggEQMIIB
DKCCAQigggEEhjpodHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUyMHYlMjBM
anVibGphbmklMjBDQTEoMykuY3JshoHFbGRhcDovLy9DTj1Vbml2ZXJ6YSUyMHYl
MjBManVibGphbmklMjBDQTEoMyksQ049RENWMlVMLENOPUNEUCxDTj1QdWJsaWMl
MjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERD
PXVuaS1saixEQz1zaT9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2Jq
ZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwggEYBggrBgEFBQcBAQSCAQow
ggEGMEYGCCsGAQUFBzAChjpodHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUy
MHYlMjBManVibGphbmklMjBDQTEoMykuY3J0MIG7BggrBgEFBQcwAoaBrmxkYXA6
Ly8vQ049VW5pdmVyemElMjB2JTIwTGp1YmxqYW5pJTIwQ0ExLENOPUFJQSxDTj1Q
dWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0
aW9uLERDPXVuaS1saixEQz1zaT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xh
c3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAQEAPAdA
l4QLoJf3OqaqAUEUQdQ0Wgv0PYoWJp/pEWDf7WzZRtBdyT31F9oANIfNUMQO7j4+
CCJfXmwBze+AYZtAOg/jtxi7ZeS7UwXMoFnA2FDUENnVBl16+Tu37Apl2Mn8XJE0
q3FLZ6yPLAAs+nBnGXunBNyEvmf6y9xOccnwa3Alo0YdVw2hpHW94NETNqmMGGOZ
KZjhWYM9M9zl0uwK4oKdhFA3eo2W1So7B28/t5LlEg5kFPZEdgt6p7NWp1fCl0Ul
Ss9T8zonZGpGo4cm2m6KRNUCdHuzXpsfqTwDtjUJLli+qtsG6LadFu8Fuxz2tB+8
12hIOuGDsrSPmvUOpg==
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=CN = Univerza v Ljubljani root CA
issuer=CN = Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIQEoYALbJIqr1ErYgV3dRtUTANBgkqhkiG9w0BAQsFADAn
MSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTA3MDkx
NzExMTM0MFoXDTM3MDIyMjA4MTgyOVowJzElMCMGA1UEAxMcVW5pdmVyemEgdiBM
anVibGphbmkgcm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AMzkadWMUGjOQvgZY0lYcJpgSIqBS2OkNOz9dG4BCNd4wBlofCm/T1ITnzzCwcAi
U7XH74Vh4WGi06vz29ZkAJUPUS2SORQ6odDQZaM/bBXm781IkHvTdzEPS+g6T0h3
TlUPJ799RiIatN4BmbVYIgPLZjDMSvCiIIITgVOa6SWny1TcugB29oYEHwYTjOvy
lFLgX+xUDPZQPMliCa06ESf0RvLsCyV12YPVV2xcE7PQKjYfAh1vq1lhQRK55xS9
+DO1G0M5ORE8Vo/nJJYJ40yPDVLz14aQv/Ymf4ShQ6n+4eaS2zVrUMcQARhqUCe9
np5yqxs5e4Sw12tGq6k4/fUCAwEAAaN5MHcwCwYDVR0PBAQDAgGGMBIGA1UdEwEB
/wQIMAYBAf8CAQIwHQYDVR0OBBYEFKW3NpfvTtWqo6IRkz6Qy0HOJTN5MBAGCSsG
AQQBgjcVAQQDAgEBMCMGCSsGAQQBgjcVAgQWBBRfQzahJmMh4ePIvbWg/we6LNhv
tjANBgkqhkiG9w0BAQsFAAOCAQEACJDMsNOV1uu/PsSUoyst0kUZK40tb5nWkVB5
ViIDTymfNQnuL71L7W8WkoDLEmqOEQg8deElO6L6ArM/ChYWGskEPZmVHiMr4hhs
qJWIlb3gIxjBJpRojzBez/gc6GS0JlXl75VdcR7Vyy9FVIrggn2QTPaVXVZhtfYs
jowxRAA3qmzIdtcJwflq5P8V345DR2xL3IbiR1JucesDE0WF5fCHwL5qE4P69xar
UqmbrbbpmLn41CVyQ8kN+0vqqZzkBXsHUm7D59PMtN8vcbuUaQc2F94r5Vt4mvl5
otS9eMOoIlk5lVR8/rkIUK1egWdV/vDTNIkXPtx+sDfCMI3m/A==
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=DC = si, DC = uni-lj, CN = Univerza v Ljubljani CA1
issuer=CN = Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIHMDCCBhigAwIBAgITaQAAABapNxW/pNipaQABAAAAFjANBgkqhkiG9w0BAQsF
ADAnMSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTE3
MDIyMjExMjAwMloXDTI3MDIyMjExMzAwMlowTzESMBAGCgmSJomT8ixkARkWAnNp
MRYwFAYKCZImiZPyLGQBGRYGdW5pLWxqMSEwHwYDVQQDExhVbml2ZXJ6YSB2IExq
dWJsamFuaSBDQTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbaPNm
ESIDHezcWlwggjhmplQ6fFGqIyycPTKG7z1+p1cab4recx+nucyakKQu7Ky2dkf/
/musjNpv3548EAfNyL7o6GsxV8iCDk+CtKA8Dol7bs0jgIxGP258pMixYfj92M3D
i6pkYkArEIM16DGRPPXmujpDQnFxXfj3OYrHs/CeHwkrWADKK+D8hBJhfd4r8Hdj
5xofyAM30hcvdcBcFz9EVX2mi0RYYXRnnsJ34e+T8h8vymN3ViEmFqQAZYXXrmIp
H/KonhQpAH88z4K7qX7Ff0BLzlw5B7WZgQdwpyF+qMJfiqAEsIuyE+peB+iUY2F7
OPP1HiIepJQkO/7ZAgMBAAGjggQrMIIEJzASBgkrBgEEAYI3FQEEBQIDAwADMCMG
CSsGAQQBgjcVAgQWBBRtWAAl/z/lTl9BYlSPJ0KLGR0g+TAdBgNVHQ4EFgQU778m
uTua8OHZ97MEKbeYjkVJiqgwggLABgNVHSABAf8EggK0MIICsDCBkgYLKwYBBAGC
j0aDfQEwgYIwWAYIKwYBBQUHAgIwTB5KAFUATAAgAC0AIABDAGUAcgB0AGkAZgBp
AGMAYQB0AGkAbwBuACAAUAByAGEAYwB0AGkAYwBlACAAUwB0AGEAdABlAG0AZQBu
AHQwJgYIKwYBBQUHAgEWGmh0dHBzOi8vcGtpLnVuaS1sai5zaS9DUFMvMIGuBgsr
BgEEAYKPRoN9CjCBnjB0BggrBgEFBQcCAjBoHmYAVQBMACAALQAgAEwAbwB3ACAA
QQBzAHMAdQByAGEAbgBjAGUAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGkAbwBuACAA
UAByAGEAYwB0AGkAYwBlACAAUwB0AGEAdABlAG0AZQBuAHQwJgYIKwYBBQUHAgEW
Gmh0dHBzOi8vcGtpLnVuaS1sai5zaS9DUFMvMIG0BgsrBgEEAYKPRoN9FDCBpDB6
BggrBgEFBQcCAjBuHmwAVQBMACAALQAgAE0AZQBkAGkAdQBtACAAQQBzAHMAdQBy
AGEAbgBjAGUAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGkAbwBuACAAUAByAGEAYwB0
AGkAYwBlACAAUwB0AGEAdABlAG0AZQBuAHQwJgYIKwYBBQUHAgEWGmh0dHBzOi8v
cGtpLnVuaS1sai5zaS9DUFMvMIGwBgsrBgEEAYKPRoN9HjCBoDB2BggrBgEFBQcC
AjBqHmgAVQBMACAALQAgAEgAaQBnAGgAIABBAHMAcwB1AHIAYQBuAGMAZQAgAEMA
ZQByAHQAaQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQA
YQB0AGUAbQBlAG4AdDAmBggrBgEFBQcCARYaaHR0cHM6Ly9wa2kudW5pLWxqLnNp
L0NQUy8wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMBIG
A1UdEwEB/wQIMAYBAf8CAQEwHwYDVR0jBBgwFoAUpbc2l+9O1aqjohGTPpDLQc4l
M3kwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL3BraS51bmktbGouc2kvVW5pdmVy
emElMjB2JTIwTGp1YmxqYW5pJTIwcm9vdCUyMENBLmNybDBcBggrBgEFBQcBAQRQ
ME4wTAYIKwYBBQUHMAKGQGh0dHA6Ly9wa2kudW5pLWxqLnNpL1VuaXZlcnphJTIw
diUyMExqdWJsamFuaSUyMHJvb3QlMjBDQSgxKS5jcnQwDQYJKoZIhvcNAQELBQAD
ggEBALKDbKSZ67R0iWMHoLnupjE4acMWyBorvL598Yd3R8Uek/7KZSe6kot5a38Z
gnAlp4BwEvbWtSDKg/Z1ZWP8LCxWNl6+ahSf2PHr0qLzMAdESh4L6o1biyl1WFFB
NZVQYi6lRXvMQr9SU9CFzJa2S7z9LxRT3nvYTe1YIe3mzHC+ihDojhMSGAnUMP9Q
81Um4rHmG/1uHZ2tIEjf2QrLAOVsHli5O5AQT22pIItEeeMgqePm+rQfL3weLDaM
RyGqlIzbMMllxtrRskXTk5FL1aOKIz6uMu3mvQq5wiJf55zSNt9HZa7/yiBYWg3T
aip1SuTYt6m2lXhkrYyh4pM+vA4=
-----END CERTIFICATE-----

View File

@ -1,43 +0,0 @@
Bag Attributes
localKeyID: 01 00 00 00
friendlyName: Anketni sistem
subject=C = SI, ST = Slovenia, L = Ljubljana, OU = USI UL, CN = anketnisistem.uni-lj.si, emailAddress = helpdesk@uni-lj.si
issuer=DC = si, DC = uni-lj, CN = Univerza v Ljubljani CA1
-----BEGIN CERTIFICATE-----
MIIGOTCCBSGgAwIBAgITRgAAH083kx/WP4Z5LAADAAAfTzANBgkqhkiG9w0BAQsF
ADBPMRIwEAYKCZImiZPyLGQBGRYCc2kxFjAUBgoJkiaJk/IsZAEZFgZ1bmktbGox
ITAfBgNVBAMTGFVuaXZlcnphIHYgTGp1YmxqYW5pIENBMTAeFw0yMTEwMjcxMzUx
MzVaFw0yNDEwMjYxMzUxMzVaMIGKMQswCQYDVQQGEwJTSTERMA8GA1UECBMIU2xv
dmVuaWExEjAQBgNVBAcTCUxqdWJsamFuYTEPMA0GA1UECxMGVVNJIFVMMSAwHgYD
VQQDExdhbmtldG5pc2lzdGVtLnVuaS1sai5zaTEhMB8GCSqGSIb3DQEJARYSaGVs
cGRlc2tAdW5pLWxqLnNpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
t4sTlbf5c4v+dCulKEW+uoAIbaZ0hCmI8Ja0kh1DY3YtKS/O1u4yEA9zJXqqOpYw
i8KEfcvS+fvTz+/7I3BLNRv9a/QN69TxG+SDHEoVMb506WhHwnl9t7U4nNheTLUJ
/BsuM2egEYsJOu0mym8jsgJAedUQXJucRoSrX5rltrb1dN7L1wc0avckXpALV5CN
Q/qOJ0CRPuE2FnTeNo/oK4p5aDyXYqYmKyJGp25oqcFssfJUcpJJWZ1lf4r3CHim
0+iItlzoWGwG+shTrEp7kHC+2gVhr2Tk7taGPI+HopSXD1iY14vjMPnpabvqsQiA
Qkk2KcmOCeKsU5mtqkOkTQIDAQABo4IC0DCCAswwPQYJKwYBBAGCNxUHBDAwLgYm
KwYBBAGCNxUIwMJIh8CBcITBkxuDzc5HgsCcU4ETgZDnKoX47ToCAWQCAQwwDgYD
VR0PAQH/BAQDAgUgMB0GA1UdDgQWBBTeMKGyDYKB3X4tkd9MH/5Odw0jkTAfBgNV
HSMEGDAWgBTvvya5O5rw4dn3swQpt5iORUmKqDCCAR0GA1UdHwSCARQwggEQMIIB
DKCCAQigggEEhjpodHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUyMHYlMjBM
anVibGphbmklMjBDQTEoMykuY3JshoHFbGRhcDovLy9DTj1Vbml2ZXJ6YSUyMHYl
MjBManVibGphbmklMjBDQTEoMyksQ049RENWMlVMLENOPUNEUCxDTj1QdWJsaWMl
MjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERD
PXVuaS1saixEQz1zaT9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2Jq
ZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwggEYBggrBgEFBQcBAQSCAQow
ggEGMEYGCCsGAQUFBzAChjpodHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUy
MHYlMjBManVibGphbmklMjBDQTEoMykuY3J0MIG7BggrBgEFBQcwAoaBrmxkYXA6
Ly8vQ049VW5pdmVyemElMjB2JTIwTGp1YmxqYW5pJTIwQ0ExLENOPUFJQSxDTj1Q
dWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0
aW9uLERDPXVuaS1saixEQz1zaT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xh
c3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAQEAPAdA
l4QLoJf3OqaqAUEUQdQ0Wgv0PYoWJp/pEWDf7WzZRtBdyT31F9oANIfNUMQO7j4+
CCJfXmwBze+AYZtAOg/jtxi7ZeS7UwXMoFnA2FDUENnVBl16+Tu37Apl2Mn8XJE0
q3FLZ6yPLAAs+nBnGXunBNyEvmf6y9xOccnwa3Alo0YdVw2hpHW94NETNqmMGGOZ
KZjhWYM9M9zl0uwK4oKdhFA3eo2W1So7B28/t5LlEg5kFPZEdgt6p7NWp1fCl0Ul
Ss9T8zonZGpGo4cm2m6KRNUCdHuzXpsfqTwDtjUJLli+qtsG6LadFu8Fuxz2tB+8
12hIOuGDsrSPmvUOpg==
-----END CERTIFICATE-----

View File

@ -1,149 +0,0 @@
Bag Attributes
Microsoft Local Key set: <No Values>
localKeyID: 01 00 00 00
Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
friendlyName: te-Univerzawebstre!017enikiskritikal-cfdf38cd-38ba-444d-a34c-269ac64d2fc1
Key Attributes
X509v3 Key Usage: 10
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3ixOVt/lzi/50
K6UoRb66gAhtpnSEKYjwlrSSHUNjdi0pL87W7jIQD3Mleqo6ljCLwoR9y9L5+9PP
7/sjcEs1G/1r9A3r1PEb5IMcShUxvnTpaEfCeX23tTic2F5MtQn8Gy4zZ6ARiwk6
7SbKbyOyAkB51RBcm5xGhKtfmuW2tvV03svXBzRq9yRekAtXkI1D+o4nQJE+4TYW
dN42j+grinloPJdipiYrIkanbmipwWyx8lRykklZnWV/ivcIeKbT6Ii2XOhYbAb6
yFOsSnuQcL7aBWGvZOTu1oY8j4eilJcPWJjXi+Mw+elpu+qxCIBCSTYpyY4J4qxT
ma2qQ6RNAgMBAAECggEAdG9m6ji+p71sm3fAmy67kwZ70kuhaOIMfEuum26y/FrQ
xWsNtS2AVs3mRyVs7iOvAkpQ0JjH60wFD8l2sQGgxD1QY/Z8ClqY5g/t2LlqfpcL
BbLgqw91YGA3XNCp6dGDVwpLIdMgKWDhZx9g11Tv+RISovc2HPmehuHM8aaLCYAt
M5xTpdmf5Hdt2MI3ZTzeiA34padu3Rk/nLJFpAeLMZN1N3NFcnC+kQ0pVyqT33AX
wvPOk0/dC/LeGJmsPHtQ85Pku2TfekiKVQFk43sNLt3zhynKdJGyjhFnUTH94Ju1
Bzp07PvwS1DrcQdAATe4niyIZpbLHSGlkLTfmsdChQKBgQDuGxmf+m0TUiHYi82J
Rcf8DLsujLG7YE8UjW5ifVBpvWfBHOyH0kSLj+OaI3ww+bHDZmn+EC9PR2d4ec/r
2u1RW4ZOUJPa2ivrxj7E4Lvz+4zvsfFTSIj9W2uiPabB/2UInF1Q0SQBQOwd3ODt
50xMjPsZSVMnRTVHKi6LEgSubwKBgQDFVkBAwNFKSMYcGFCncvqMqnVT5PcaqINW
EMzI9kfOIGk7MrKxaSTqRJKnfSR/895IX/8rLqeFO5u9mak0zU34o8VOqp3p6fVG
pkZqo4h3bLkvKhC1entu/OcZKAPgiTv46Ek3alf2rlCJy0nnM/RcHVxO/gk3uAsj
t5sZuuB3AwKBgDh5RQKkqupCOLTbs8wzONOXUW4hAKaomRkO0neZsVDjE5DCA3fT
b16KqjkM4Y/cKUVnLQyNWis7jFcOzTnrmw4I3zoD8o2d4XzycEDR7MJZj3vqgIp4
UcWFwWmhpcOth5EbRSa99AQ4Gcibct36ViZx6bx9n7NYvuI6Jv/lLicRAoGBAJxi
4x6t7+6fx6iCOIDLZPXPLJYk0RNmUlcFj1T/oB4hn2OTpPtl6SRi3ZowWZmxSQow
UYcGPSof+CeEvAylW1Jdb0MNgYHbsE6h/RILsV17YzKWcpFvlJx7fiV4icIK3+U9
KLDq7PUIZbkdyt6YVOIfPoU3W1S13NYcbqUwbSzDAoGBAJntq/m7bhvkClf29kDh
pEl8opjV+HUKsqKscczjNA3/NPxWzTLUaCjH1RZSMda4x4Bv4looiMwZe+ve50Yy
t5t48rrv1iWBrGWwz4SkqAiibfuS+V0BilJX3txUZOUYrgxF0cUzoOhL8PcbZ8O2
JrqTlYriW623+DHQfDa4S2dv
-----END PRIVATE KEY-----
Bag Attributes
localKeyID: 01 00 00 00
friendlyName: Anketni sistem
subject=C = SI, ST = Slovenia, L = Ljubljana, OU = USI UL, CN = anketnisistem.uni-lj.si, emailAddress = helpdesk@uni-lj.si
issuer=DC = si, DC = uni-lj, CN = Univerza v Ljubljani CA1
-----BEGIN CERTIFICATE-----
MIIGOTCCBSGgAwIBAgITRgAAH083kx/WP4Z5LAADAAAfTzANBgkqhkiG9w0BAQsF
ADBPMRIwEAYKCZImiZPyLGQBGRYCc2kxFjAUBgoJkiaJk/IsZAEZFgZ1bmktbGox
ITAfBgNVBAMTGFVuaXZlcnphIHYgTGp1YmxqYW5pIENBMTAeFw0yMTEwMjcxMzUx
MzVaFw0yNDEwMjYxMzUxMzVaMIGKMQswCQYDVQQGEwJTSTERMA8GA1UECBMIU2xv
dmVuaWExEjAQBgNVBAcTCUxqdWJsamFuYTEPMA0GA1UECxMGVVNJIFVMMSAwHgYD
VQQDExdhbmtldG5pc2lzdGVtLnVuaS1sai5zaTEhMB8GCSqGSIb3DQEJARYSaGVs
cGRlc2tAdW5pLWxqLnNpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
t4sTlbf5c4v+dCulKEW+uoAIbaZ0hCmI8Ja0kh1DY3YtKS/O1u4yEA9zJXqqOpYw
i8KEfcvS+fvTz+/7I3BLNRv9a/QN69TxG+SDHEoVMb506WhHwnl9t7U4nNheTLUJ
/BsuM2egEYsJOu0mym8jsgJAedUQXJucRoSrX5rltrb1dN7L1wc0avckXpALV5CN
Q/qOJ0CRPuE2FnTeNo/oK4p5aDyXYqYmKyJGp25oqcFssfJUcpJJWZ1lf4r3CHim
0+iItlzoWGwG+shTrEp7kHC+2gVhr2Tk7taGPI+HopSXD1iY14vjMPnpabvqsQiA
Qkk2KcmOCeKsU5mtqkOkTQIDAQABo4IC0DCCAswwPQYJKwYBBAGCNxUHBDAwLgYm
KwYBBAGCNxUIwMJIh8CBcITBkxuDzc5HgsCcU4ETgZDnKoX47ToCAWQCAQwwDgYD
VR0PAQH/BAQDAgUgMB0GA1UdDgQWBBTeMKGyDYKB3X4tkd9MH/5Odw0jkTAfBgNV
HSMEGDAWgBTvvya5O5rw4dn3swQpt5iORUmKqDCCAR0GA1UdHwSCARQwggEQMIIB
DKCCAQigggEEhjpodHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUyMHYlMjBM
anVibGphbmklMjBDQTEoMykuY3JshoHFbGRhcDovLy9DTj1Vbml2ZXJ6YSUyMHYl
MjBManVibGphbmklMjBDQTEoMyksQ049RENWMlVMLENOPUNEUCxDTj1QdWJsaWMl
MjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERD
PXVuaS1saixEQz1zaT9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2Jq
ZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwggEYBggrBgEFBQcBAQSCAQow
ggEGMEYGCCsGAQUFBzAChjpodHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUy
MHYlMjBManVibGphbmklMjBDQTEoMykuY3J0MIG7BggrBgEFBQcwAoaBrmxkYXA6
Ly8vQ049VW5pdmVyemElMjB2JTIwTGp1YmxqYW5pJTIwQ0ExLENOPUFJQSxDTj1Q
dWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0
aW9uLERDPXVuaS1saixEQz1zaT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xh
c3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAQEAPAdA
l4QLoJf3OqaqAUEUQdQ0Wgv0PYoWJp/pEWDf7WzZRtBdyT31F9oANIfNUMQO7j4+
CCJfXmwBze+AYZtAOg/jtxi7ZeS7UwXMoFnA2FDUENnVBl16+Tu37Apl2Mn8XJE0
q3FLZ6yPLAAs+nBnGXunBNyEvmf6y9xOccnwa3Alo0YdVw2hpHW94NETNqmMGGOZ
KZjhWYM9M9zl0uwK4oKdhFA3eo2W1So7B28/t5LlEg5kFPZEdgt6p7NWp1fCl0Ul
Ss9T8zonZGpGo4cm2m6KRNUCdHuzXpsfqTwDtjUJLli+qtsG6LadFu8Fuxz2tB+8
12hIOuGDsrSPmvUOpg==
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=CN = Univerza v Ljubljani root CA
issuer=CN = Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIQEoYALbJIqr1ErYgV3dRtUTANBgkqhkiG9w0BAQsFADAn
MSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTA3MDkx
NzExMTM0MFoXDTM3MDIyMjA4MTgyOVowJzElMCMGA1UEAxMcVW5pdmVyemEgdiBM
anVibGphbmkgcm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AMzkadWMUGjOQvgZY0lYcJpgSIqBS2OkNOz9dG4BCNd4wBlofCm/T1ITnzzCwcAi
U7XH74Vh4WGi06vz29ZkAJUPUS2SORQ6odDQZaM/bBXm781IkHvTdzEPS+g6T0h3
TlUPJ799RiIatN4BmbVYIgPLZjDMSvCiIIITgVOa6SWny1TcugB29oYEHwYTjOvy
lFLgX+xUDPZQPMliCa06ESf0RvLsCyV12YPVV2xcE7PQKjYfAh1vq1lhQRK55xS9
+DO1G0M5ORE8Vo/nJJYJ40yPDVLz14aQv/Ymf4ShQ6n+4eaS2zVrUMcQARhqUCe9
np5yqxs5e4Sw12tGq6k4/fUCAwEAAaN5MHcwCwYDVR0PBAQDAgGGMBIGA1UdEwEB
/wQIMAYBAf8CAQIwHQYDVR0OBBYEFKW3NpfvTtWqo6IRkz6Qy0HOJTN5MBAGCSsG
AQQBgjcVAQQDAgEBMCMGCSsGAQQBgjcVAgQWBBRfQzahJmMh4ePIvbWg/we6LNhv
tjANBgkqhkiG9w0BAQsFAAOCAQEACJDMsNOV1uu/PsSUoyst0kUZK40tb5nWkVB5
ViIDTymfNQnuL71L7W8WkoDLEmqOEQg8deElO6L6ArM/ChYWGskEPZmVHiMr4hhs
qJWIlb3gIxjBJpRojzBez/gc6GS0JlXl75VdcR7Vyy9FVIrggn2QTPaVXVZhtfYs
jowxRAA3qmzIdtcJwflq5P8V345DR2xL3IbiR1JucesDE0WF5fCHwL5qE4P69xar
UqmbrbbpmLn41CVyQ8kN+0vqqZzkBXsHUm7D59PMtN8vcbuUaQc2F94r5Vt4mvl5
otS9eMOoIlk5lVR8/rkIUK1egWdV/vDTNIkXPtx+sDfCMI3m/A==
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=DC = si, DC = uni-lj, CN = Univerza v Ljubljani CA1
issuer=CN = Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIHMDCCBhigAwIBAgITaQAAABapNxW/pNipaQABAAAAFjANBgkqhkiG9w0BAQsF
ADAnMSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTE3
MDIyMjExMjAwMloXDTI3MDIyMjExMzAwMlowTzESMBAGCgmSJomT8ixkARkWAnNp
MRYwFAYKCZImiZPyLGQBGRYGdW5pLWxqMSEwHwYDVQQDExhVbml2ZXJ6YSB2IExq
dWJsamFuaSBDQTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbaPNm
ESIDHezcWlwggjhmplQ6fFGqIyycPTKG7z1+p1cab4recx+nucyakKQu7Ky2dkf/
/musjNpv3548EAfNyL7o6GsxV8iCDk+CtKA8Dol7bs0jgIxGP258pMixYfj92M3D
i6pkYkArEIM16DGRPPXmujpDQnFxXfj3OYrHs/CeHwkrWADKK+D8hBJhfd4r8Hdj
5xofyAM30hcvdcBcFz9EVX2mi0RYYXRnnsJ34e+T8h8vymN3ViEmFqQAZYXXrmIp
H/KonhQpAH88z4K7qX7Ff0BLzlw5B7WZgQdwpyF+qMJfiqAEsIuyE+peB+iUY2F7
OPP1HiIepJQkO/7ZAgMBAAGjggQrMIIEJzASBgkrBgEEAYI3FQEEBQIDAwADMCMG
CSsGAQQBgjcVAgQWBBRtWAAl/z/lTl9BYlSPJ0KLGR0g+TAdBgNVHQ4EFgQU778m
uTua8OHZ97MEKbeYjkVJiqgwggLABgNVHSABAf8EggK0MIICsDCBkgYLKwYBBAGC
j0aDfQEwgYIwWAYIKwYBBQUHAgIwTB5KAFUATAAgAC0AIABDAGUAcgB0AGkAZgBp
AGMAYQB0AGkAbwBuACAAUAByAGEAYwB0AGkAYwBlACAAUwB0AGEAdABlAG0AZQBu
AHQwJgYIKwYBBQUHAgEWGmh0dHBzOi8vcGtpLnVuaS1sai5zaS9DUFMvMIGuBgsr
BgEEAYKPRoN9CjCBnjB0BggrBgEFBQcCAjBoHmYAVQBMACAALQAgAEwAbwB3ACAA
QQBzAHMAdQByAGEAbgBjAGUAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGkAbwBuACAA
UAByAGEAYwB0AGkAYwBlACAAUwB0AGEAdABlAG0AZQBuAHQwJgYIKwYBBQUHAgEW
Gmh0dHBzOi8vcGtpLnVuaS1sai5zaS9DUFMvMIG0BgsrBgEEAYKPRoN9FDCBpDB6
BggrBgEFBQcCAjBuHmwAVQBMACAALQAgAE0AZQBkAGkAdQBtACAAQQBzAHMAdQBy
AGEAbgBjAGUAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGkAbwBuACAAUAByAGEAYwB0
AGkAYwBlACAAUwB0AGEAdABlAG0AZQBuAHQwJgYIKwYBBQUHAgEWGmh0dHBzOi8v
cGtpLnVuaS1sai5zaS9DUFMvMIGwBgsrBgEEAYKPRoN9HjCBoDB2BggrBgEFBQcC
AjBqHmgAVQBMACAALQAgAEgAaQBnAGgAIABBAHMAcwB1AHIAYQBuAGMAZQAgAEMA
ZQByAHQAaQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQA
YQB0AGUAbQBlAG4AdDAmBggrBgEFBQcCARYaaHR0cHM6Ly9wa2kudW5pLWxqLnNp
L0NQUy8wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMBIG
A1UdEwEB/wQIMAYBAf8CAQEwHwYDVR0jBBgwFoAUpbc2l+9O1aqjohGTPpDLQc4l
M3kwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL3BraS51bmktbGouc2kvVW5pdmVy
emElMjB2JTIwTGp1YmxqYW5pJTIwcm9vdCUyMENBLmNybDBcBggrBgEFBQcBAQRQ
ME4wTAYIKwYBBQUHMAKGQGh0dHA6Ly9wa2kudW5pLWxqLnNpL1VuaXZlcnphJTIw
diUyMExqdWJsamFuaSUyMHJvb3QlMjBDQSgxKS5jcnQwDQYJKoZIhvcNAQELBQAD
ggEBALKDbKSZ67R0iWMHoLnupjE4acMWyBorvL598Yd3R8Uek/7KZSe6kot5a38Z
gnAlp4BwEvbWtSDKg/Z1ZWP8LCxWNl6+ahSf2PHr0qLzMAdESh4L6o1biyl1WFFB
NZVQYi6lRXvMQr9SU9CFzJa2S7z9LxRT3nvYTe1YIe3mzHC+ihDojhMSGAnUMP9Q
81Um4rHmG/1uHZ2tIEjf2QrLAOVsHli5O5AQT22pIItEeeMgqePm+rQfL3weLDaM
RyGqlIzbMMllxtrRskXTk5FL1aOKIz6uMu3mvQq5wiJf55zSNt9HZa7/yiBYWg3T
aip1SuTYt6m2lXhkrYyh4pM+vA4=
-----END CERTIFICATE-----

View File

@ -1,151 +0,0 @@
Bag Attributes
Microsoft Local Key set: <No Values>
localKeyID: 01 00 00 00
Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
friendlyName: te-Univerzawebstre!017enikiskritikal-cfdf38cd-38ba-444d-a34c-269ac64d2fc1
Key Attributes
X509v3 Key Usage: 10
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIQ4f9qDW94KcCAggA
MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECH1csk3aBpcZBIIEyPu4CkaXvpAS
M5KbduIWhrI6WujgZ6wXVmDWaEY74l8CivxAUQ0MErbaK7jXOLFNPJYKOxaQwdRM
/Z7dXcvqsdbGMuzy0Hs10sUUnh1M5lYaVMDZvkwAXeceBcJlhVXe/kNo/3UxvFnh
UeqWTBTPK1/BjnqqMPXgLDNugoILYPS84VIOx/onijlw8t1efN/+vVut3devkJ1y
EA6g1b5DXqWzdojmY1ucAMOBG0KVEz+Lii86DUburCK552wRl99XFCE9VVXd4RaU
VaxDo6fLVnDhzGUimP2RcD2I0RBGewekzSrUAM6DR3zUZ537tncTmeWwC2mv+fK2
zODMjI2EjQB1oYryoAl4DsMxlxYGK0Me1vIWjWkWb0B6rel4j2AWmyEPSplR/PKz
gBP4m+PaUdOV57CPz74Y33NVYRCQIPr/C5yVdg54p01kTj/nAxO5c70zxS2Xe3X5
sjwSdiMa90dO+bfYRYz6qgbhMk0vUK4erjCdxtISuunXbjws39JTfltXbE4RVtvR
FRNCVpvJfapZpOP9F4H/unB3xixXQnmV6uSeDf3dma36Czd18FF5Mc6NA8R6pCtk
fzB/bqQC+8lAcrwsgfr4KK0cR6RmJdfzGpWVKRakey7FJPBpKSbNz7XV0SeCSa/R
18CQlpZ4ZhJUKl33RL3eNjSY7lHGwUfFtVBjuTQ+06HT7d3VqbWsCGpuxUwXsqFf
hZLEVFOvi+ZE7+Yo6Xh8hm9KkFAyz2gP0lm5Zby6Wh+MsFEiARS3g/yVdrDkSaa6
soooe7fVNtQAyL0gIYKLIbiMW0fhPks91EsKantAEjRnf7eO6fmsE/Gsjk6EDmab
ZKdKhjFFIFL4TmEnGlcUsuVxH3/2YnlMsMcbvOonh2KpbLZrld1MEVBJcP0OozfT
yaaGQhqFE9zt+pkdayCAD/Lqylvn+DuFCVYKzIbJot3OYBo2jLv9BHkPuPVP6v57
bXCQrE1PNtMyCdfeeZpkXA42GLdC0rmvlOEd4TyBff6Lrwy7KFJNSJINRh1Ar3LV
jdxMSdnTdQQNTMrMy6LDiZZNHXi0wB14vBwwPFLaCC2++5sEaStE5aN1u4s43gKg
Mc2hLqFsT8sn7aJoJRT5kLHLiQENrsHrue42vXtOZEVjkREyVhlCw1+62Pa61W2x
vXDNnoO+laNb/3tRgO7zDwSWDFoo7++BlEM2O1GTV19zP+qeGtP4FuhkZm1bO1P2
SjvEZzj093wPayHlzxrYdby/YJeOqHtsCicAZBcXZsB6knp7j7Lg+xuGefAKNnnU
fpZ+IrufFKU5/SDoC/mhVNEufmrsF5kZuuwlbWTtWe5IGWkvyi3WBsYcgsZxxgzt
42fGA6hluOzzZPpTIXVnWlyZEIyb/JcPxfWh2lV/bL7kDobZQhFKFi53TWx9MmOI
UnIftwnMt0ALDM/T+Q7qoRwWfi6jN0qubw4pE6g1uwq5L9rwh6irRUk0uZvfasOj
ivuBe2PNEXxKxo3eK2a2+NKBhTQAe9xaDLP4vWCHUeefqIKFZCK/f1YJPgIB+QY9
a4lBbTTcvZFj4ptZoKA761zaUaa77AHHUJeO7KLR7o9bOBqwpkSQBeNFWgoXJK9c
h/RdN9iOJ/JBOqZ/a0waeA==
-----END ENCRYPTED PRIVATE KEY-----
Bag Attributes
localKeyID: 01 00 00 00
friendlyName: Anketni sistem
subject=C = SI, ST = Slovenia, L = Ljubljana, OU = USI UL, CN = anketnisistem.uni-lj.si, emailAddress = helpdesk@uni-lj.si
issuer=DC = si, DC = uni-lj, CN = Univerza v Ljubljani CA1
-----BEGIN CERTIFICATE-----
MIIGOTCCBSGgAwIBAgITRgAAH083kx/WP4Z5LAADAAAfTzANBgkqhkiG9w0BAQsF
ADBPMRIwEAYKCZImiZPyLGQBGRYCc2kxFjAUBgoJkiaJk/IsZAEZFgZ1bmktbGox
ITAfBgNVBAMTGFVuaXZlcnphIHYgTGp1YmxqYW5pIENBMTAeFw0yMTEwMjcxMzUx
MzVaFw0yNDEwMjYxMzUxMzVaMIGKMQswCQYDVQQGEwJTSTERMA8GA1UECBMIU2xv
dmVuaWExEjAQBgNVBAcTCUxqdWJsamFuYTEPMA0GA1UECxMGVVNJIFVMMSAwHgYD
VQQDExdhbmtldG5pc2lzdGVtLnVuaS1sai5zaTEhMB8GCSqGSIb3DQEJARYSaGVs
cGRlc2tAdW5pLWxqLnNpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
t4sTlbf5c4v+dCulKEW+uoAIbaZ0hCmI8Ja0kh1DY3YtKS/O1u4yEA9zJXqqOpYw
i8KEfcvS+fvTz+/7I3BLNRv9a/QN69TxG+SDHEoVMb506WhHwnl9t7U4nNheTLUJ
/BsuM2egEYsJOu0mym8jsgJAedUQXJucRoSrX5rltrb1dN7L1wc0avckXpALV5CN
Q/qOJ0CRPuE2FnTeNo/oK4p5aDyXYqYmKyJGp25oqcFssfJUcpJJWZ1lf4r3CHim
0+iItlzoWGwG+shTrEp7kHC+2gVhr2Tk7taGPI+HopSXD1iY14vjMPnpabvqsQiA
Qkk2KcmOCeKsU5mtqkOkTQIDAQABo4IC0DCCAswwPQYJKwYBBAGCNxUHBDAwLgYm
KwYBBAGCNxUIwMJIh8CBcITBkxuDzc5HgsCcU4ETgZDnKoX47ToCAWQCAQwwDgYD
VR0PAQH/BAQDAgUgMB0GA1UdDgQWBBTeMKGyDYKB3X4tkd9MH/5Odw0jkTAfBgNV
HSMEGDAWgBTvvya5O5rw4dn3swQpt5iORUmKqDCCAR0GA1UdHwSCARQwggEQMIIB
DKCCAQigggEEhjpodHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUyMHYlMjBM
anVibGphbmklMjBDQTEoMykuY3JshoHFbGRhcDovLy9DTj1Vbml2ZXJ6YSUyMHYl
MjBManVibGphbmklMjBDQTEoMyksQ049RENWMlVMLENOPUNEUCxDTj1QdWJsaWMl
MjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERD
PXVuaS1saixEQz1zaT9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2Jq
ZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwggEYBggrBgEFBQcBAQSCAQow
ggEGMEYGCCsGAQUFBzAChjpodHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUy
MHYlMjBManVibGphbmklMjBDQTEoMykuY3J0MIG7BggrBgEFBQcwAoaBrmxkYXA6
Ly8vQ049VW5pdmVyemElMjB2JTIwTGp1YmxqYW5pJTIwQ0ExLENOPUFJQSxDTj1Q
dWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0
aW9uLERDPXVuaS1saixEQz1zaT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xh
c3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAQEAPAdA
l4QLoJf3OqaqAUEUQdQ0Wgv0PYoWJp/pEWDf7WzZRtBdyT31F9oANIfNUMQO7j4+
CCJfXmwBze+AYZtAOg/jtxi7ZeS7UwXMoFnA2FDUENnVBl16+Tu37Apl2Mn8XJE0
q3FLZ6yPLAAs+nBnGXunBNyEvmf6y9xOccnwa3Alo0YdVw2hpHW94NETNqmMGGOZ
KZjhWYM9M9zl0uwK4oKdhFA3eo2W1So7B28/t5LlEg5kFPZEdgt6p7NWp1fCl0Ul
Ss9T8zonZGpGo4cm2m6KRNUCdHuzXpsfqTwDtjUJLli+qtsG6LadFu8Fuxz2tB+8
12hIOuGDsrSPmvUOpg==
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=CN = Univerza v Ljubljani root CA
issuer=CN = Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIQEoYALbJIqr1ErYgV3dRtUTANBgkqhkiG9w0BAQsFADAn
MSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTA3MDkx
NzExMTM0MFoXDTM3MDIyMjA4MTgyOVowJzElMCMGA1UEAxMcVW5pdmVyemEgdiBM
anVibGphbmkgcm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AMzkadWMUGjOQvgZY0lYcJpgSIqBS2OkNOz9dG4BCNd4wBlofCm/T1ITnzzCwcAi
U7XH74Vh4WGi06vz29ZkAJUPUS2SORQ6odDQZaM/bBXm781IkHvTdzEPS+g6T0h3
TlUPJ799RiIatN4BmbVYIgPLZjDMSvCiIIITgVOa6SWny1TcugB29oYEHwYTjOvy
lFLgX+xUDPZQPMliCa06ESf0RvLsCyV12YPVV2xcE7PQKjYfAh1vq1lhQRK55xS9
+DO1G0M5ORE8Vo/nJJYJ40yPDVLz14aQv/Ymf4ShQ6n+4eaS2zVrUMcQARhqUCe9
np5yqxs5e4Sw12tGq6k4/fUCAwEAAaN5MHcwCwYDVR0PBAQDAgGGMBIGA1UdEwEB
/wQIMAYBAf8CAQIwHQYDVR0OBBYEFKW3NpfvTtWqo6IRkz6Qy0HOJTN5MBAGCSsG
AQQBgjcVAQQDAgEBMCMGCSsGAQQBgjcVAgQWBBRfQzahJmMh4ePIvbWg/we6LNhv
tjANBgkqhkiG9w0BAQsFAAOCAQEACJDMsNOV1uu/PsSUoyst0kUZK40tb5nWkVB5
ViIDTymfNQnuL71L7W8WkoDLEmqOEQg8deElO6L6ArM/ChYWGskEPZmVHiMr4hhs
qJWIlb3gIxjBJpRojzBez/gc6GS0JlXl75VdcR7Vyy9FVIrggn2QTPaVXVZhtfYs
jowxRAA3qmzIdtcJwflq5P8V345DR2xL3IbiR1JucesDE0WF5fCHwL5qE4P69xar
UqmbrbbpmLn41CVyQ8kN+0vqqZzkBXsHUm7D59PMtN8vcbuUaQc2F94r5Vt4mvl5
otS9eMOoIlk5lVR8/rkIUK1egWdV/vDTNIkXPtx+sDfCMI3m/A==
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=DC = si, DC = uni-lj, CN = Univerza v Ljubljani CA1
issuer=CN = Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIHMDCCBhigAwIBAgITaQAAABapNxW/pNipaQABAAAAFjANBgkqhkiG9w0BAQsF
ADAnMSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTE3
MDIyMjExMjAwMloXDTI3MDIyMjExMzAwMlowTzESMBAGCgmSJomT8ixkARkWAnNp
MRYwFAYKCZImiZPyLGQBGRYGdW5pLWxqMSEwHwYDVQQDExhVbml2ZXJ6YSB2IExq
dWJsamFuaSBDQTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbaPNm
ESIDHezcWlwggjhmplQ6fFGqIyycPTKG7z1+p1cab4recx+nucyakKQu7Ky2dkf/
/musjNpv3548EAfNyL7o6GsxV8iCDk+CtKA8Dol7bs0jgIxGP258pMixYfj92M3D
i6pkYkArEIM16DGRPPXmujpDQnFxXfj3OYrHs/CeHwkrWADKK+D8hBJhfd4r8Hdj
5xofyAM30hcvdcBcFz9EVX2mi0RYYXRnnsJ34e+T8h8vymN3ViEmFqQAZYXXrmIp
H/KonhQpAH88z4K7qX7Ff0BLzlw5B7WZgQdwpyF+qMJfiqAEsIuyE+peB+iUY2F7
OPP1HiIepJQkO/7ZAgMBAAGjggQrMIIEJzASBgkrBgEEAYI3FQEEBQIDAwADMCMG
CSsGAQQBgjcVAgQWBBRtWAAl/z/lTl9BYlSPJ0KLGR0g+TAdBgNVHQ4EFgQU778m
uTua8OHZ97MEKbeYjkVJiqgwggLABgNVHSABAf8EggK0MIICsDCBkgYLKwYBBAGC
j0aDfQEwgYIwWAYIKwYBBQUHAgIwTB5KAFUATAAgAC0AIABDAGUAcgB0AGkAZgBp
AGMAYQB0AGkAbwBuACAAUAByAGEAYwB0AGkAYwBlACAAUwB0AGEAdABlAG0AZQBu
AHQwJgYIKwYBBQUHAgEWGmh0dHBzOi8vcGtpLnVuaS1sai5zaS9DUFMvMIGuBgsr
BgEEAYKPRoN9CjCBnjB0BggrBgEFBQcCAjBoHmYAVQBMACAALQAgAEwAbwB3ACAA
QQBzAHMAdQByAGEAbgBjAGUAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGkAbwBuACAA
UAByAGEAYwB0AGkAYwBlACAAUwB0AGEAdABlAG0AZQBuAHQwJgYIKwYBBQUHAgEW
Gmh0dHBzOi8vcGtpLnVuaS1sai5zaS9DUFMvMIG0BgsrBgEEAYKPRoN9FDCBpDB6
BggrBgEFBQcCAjBuHmwAVQBMACAALQAgAE0AZQBkAGkAdQBtACAAQQBzAHMAdQBy
AGEAbgBjAGUAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGkAbwBuACAAUAByAGEAYwB0
AGkAYwBlACAAUwB0AGEAdABlAG0AZQBuAHQwJgYIKwYBBQUHAgEWGmh0dHBzOi8v
cGtpLnVuaS1sai5zaS9DUFMvMIGwBgsrBgEEAYKPRoN9HjCBoDB2BggrBgEFBQcC
AjBqHmgAVQBMACAALQAgAEgAaQBnAGgAIABBAHMAcwB1AHIAYQBuAGMAZQAgAEMA
ZQByAHQAaQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQA
YQB0AGUAbQBlAG4AdDAmBggrBgEFBQcCARYaaHR0cHM6Ly9wa2kudW5pLWxqLnNp
L0NQUy8wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMBIG
A1UdEwEB/wQIMAYBAf8CAQEwHwYDVR0jBBgwFoAUpbc2l+9O1aqjohGTPpDLQc4l
M3kwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL3BraS51bmktbGouc2kvVW5pdmVy
emElMjB2JTIwTGp1YmxqYW5pJTIwcm9vdCUyMENBLmNybDBcBggrBgEFBQcBAQRQ
ME4wTAYIKwYBBQUHMAKGQGh0dHA6Ly9wa2kudW5pLWxqLnNpL1VuaXZlcnphJTIw
diUyMExqdWJsamFuaSUyMHJvb3QlMjBDQSgxKS5jcnQwDQYJKoZIhvcNAQELBQAD
ggEBALKDbKSZ67R0iWMHoLnupjE4acMWyBorvL598Yd3R8Uek/7KZSe6kot5a38Z
gnAlp4BwEvbWtSDKg/Z1ZWP8LCxWNl6+ahSf2PHr0qLzMAdESh4L6o1biyl1WFFB
NZVQYi6lRXvMQr9SU9CFzJa2S7z9LxRT3nvYTe1YIe3mzHC+ihDojhMSGAnUMP9Q
81Um4rHmG/1uHZ2tIEjf2QrLAOVsHli5O5AQT22pIItEeeMgqePm+rQfL3weLDaM
RyGqlIzbMMllxtrRskXTk5FL1aOKIz6uMu3mvQq5wiJf55zSNt9HZa7/yiBYWg3T
aip1SuTYt6m2lXhkrYyh4pM+vA4=
-----END CERTIFICATE-----

View File

@ -1,893 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.marg.si/GovernmentConnect/ULJ/V1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://www.marg.si/GovernmentConnect/ULJ/V1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.marg.si/GovernmentConnect/ULJ/V1">
<s:element name="CreateFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="folderData" type="tns:Folder" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="Folder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Title" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ClassificationCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="StorageUntil" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackendId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Responsible" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackupResponsibleList" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="Shourtcut" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="BackendSystemData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SystemId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ReturnWebServiceUrl" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="CreateFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CreateFolderResult" type="tns:CreateFolderResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="CreateFolderResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="DocumentID" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="Classification" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Response">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="IsError" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="ErrorDescription" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="CreateDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="documentData" type="tns:FullDocument" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="FullDocument">
<s:complexContent mixed="false">
<s:extension base="tns:Document">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FolderId" type="tns:RequestFolder" />
<s:element minOccurs="0" maxOccurs="1" name="BackendId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Responsible" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackupResponsibleList" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="SubjectId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="DocumentType" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="DocumentSubType" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="MainContent" type="tns:FileData" />
<s:element minOccurs="0" maxOccurs="1" name="Attachments" type="tns:ArrayOfFileData" />
<s:element minOccurs="0" maxOccurs="1" name="ReturnWebServiceUrl" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ActionList" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="Signers" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="Approvers" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="CustomMetaData" type="tns:ArrayOfTCustomMetaData" />
<s:element minOccurs="0" maxOccurs="1" name="NewDocumentRelations" type="tns:ArrayOfDocumentRelation" />
<s:element minOccurs="1" maxOccurs="1" name="IsLimitedVisibility" nillable="true" type="s:boolean" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Document">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DocumentTitle" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="DocumentDate" nillable="true" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="Classification" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ProcessId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Status" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="GcId" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="RequestFolder">
<s:complexContent mixed="false">
<s:extension base="tns:Identification">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="UserId" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Identification">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="GcId" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="BackendIdData" type="tns:BackendId" />
<s:element minOccurs="0" maxOccurs="1" name="ClassificationId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="BackendId">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SystemId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ItemId" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="FileData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Content" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="FileName" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfFileData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="FileData" nillable="true" type="tns:FileData" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfTCustomMetaData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="TCustomMetaData" nillable="true" type="tns:TCustomMetaData" />
</s:sequence>
</s:complexType>
<s:complexType name="TCustomMetaData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:TCustomFieldValue" />
<s:element minOccurs="1" maxOccurs="1" name="AddValue" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="FieldName" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="CanBeUpdated" type="s:boolean" />
</s:sequence>
</s:complexType>
<s:complexType name="ExtensionDataObject" />
<s:complexType name="TCustomFieldValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="StringValue" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="IntegerValue" nillable="true" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="DecimalValue" nillable="true" type="s:decimal" />
<s:element minOccurs="1" maxOccurs="1" name="DateValue" nillable="true" type="s:dateTime" />
<s:element minOccurs="1" maxOccurs="1" name="DateTimeValue" nillable="true" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="UserValue" type="tns:TUser" />
<s:element minOccurs="0" maxOccurs="1" name="RegisterValues" type="tns:ArrayOfTRegisterValue" />
<s:element minOccurs="0" maxOccurs="1" name="SubjectValue" type="tns:TSubject" />
<s:element minOccurs="1" maxOccurs="1" name="BooleanValue" nillable="true" type="s:boolean" />
<s:element minOccurs="1" maxOccurs="1" name="LongValue" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="CountryValue" type="tns:TCountryValue" />
<s:element minOccurs="0" maxOccurs="1" name="ReminderValue" type="tns:TReminderValue" />
<s:element minOccurs="0" maxOccurs="1" name="ExternalRegisterValue" type="tns:ArrayOfExternalRegisterValue" />
</s:sequence>
</s:complexType>
<s:complexType name="TUser">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="1" maxOccurs="1" name="UserSID" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="UserName" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationUnitCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrgPosCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationUnitBackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="UserEmail" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FullName" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="InternalUserID" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="GroupID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrgPosBackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CompanyBackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrgPosName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrgPosDescription" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="OrganizationUnitID" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="ReservedBy" type="tns:TUserProfile" />
<s:element minOccurs="1" maxOccurs="1" name="GenderID" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Prefix1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Prefix2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Postfix" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="IsExternal" nillable="true" type="s:boolean" />
<s:element minOccurs="1" maxOccurs="1" name="GroupSID" nillable="true" type="s:long" />
<s:element minOccurs="1" maxOccurs="1" name="IsBlocked" nillable="true" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="TUserProfile">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="1" maxOccurs="1" name="UserSID" nillable="true" type="s:long" />
<s:element minOccurs="1" maxOccurs="1" name="SecurityIdentityID" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="BackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="UserName" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfTRegisterValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="TRegisterValue" nillable="true" type="tns:TRegisterValue" />
</s:sequence>
</s:complexType>
<s:complexType name="TRegisterValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="1" maxOccurs="1" name="RegisterInstanceID" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="RegisterValue" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="RegisterText" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="TSubject">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="TaxID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="RegistrationID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FullName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="EmailAddress" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="PersonID" nillable="true" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="PersonType" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Fax" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Address" type="tns:TAddress" />
<s:element minOccurs="1" maxOccurs="1" name="PersonAddressID" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="PersonAddressBackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="AccountingID" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="CreateEmptySubject" nillable="true" type="s:boolean" />
<s:element minOccurs="1" maxOccurs="1" name="FillOnlyBaseDataForEmployees" nillable="true" type="s:boolean" />
</s:sequence>
</s:complexType>
<s:complexType name="TAddress">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="Address1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Address2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="City" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="PostCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryA2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryN3" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="PostOfficeName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryName" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="TCountryValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="CountryName" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="CountryID" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="CountryCodeN3" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryCodeISO2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryCodeISO3" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="TReminderValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="1" maxOccurs="1" name="ReminderDate" nillable="true" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="ReminderMessage" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfExternalRegisterValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="ExternalRegisterValue" nillable="true" type="tns:ExternalRegisterValue" />
</s:sequence>
</s:complexType>
<s:complexType name="ExternalRegisterValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="Code" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Value" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfDocumentRelation">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="DocumentRelation" nillable="true" type="tns:DocumentRelation" />
</s:sequence>
</s:complexType>
<s:complexType name="DocumentRelation">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RelatedDocument" type="tns:Identification" />
<s:element minOccurs="1" maxOccurs="1" name="TypeOfRelation" type="tns:RelationType" />
</s:sequence>
</s:complexType>
<s:simpleType name="RelationType">
<s:restriction base="s:string">
<s:enumeration value="Attached" />
<s:enumeration value="Related" />
</s:restriction>
</s:simpleType>
<s:element name="CreateDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CreateDocumentResult" type="tns:CreateDocumentResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="CreateDocumentResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="DocumentID" type="s:long" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="ReadFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestFolderData" type="tns:RequestFolder" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ReadFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ReadFolderResult" type="tns:ReadFolderResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ReadFolderResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FolderData" type="tns:OutFolder" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="OutFolder">
<s:complexContent mixed="false">
<s:extension base="tns:Folder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Classification" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="GcId" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="FolderDocuments" type="tns:ArrayOfDocument" />
<s:element minOccurs="0" maxOccurs="1" name="StatusUri" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOfDocument">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Document" nillable="true" type="tns:Document" />
</s:sequence>
</s:complexType>
<s:element name="ReadDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestDocumentData" type="tns:RequestDocument" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="RequestDocument">
<s:complexContent mixed="false">
<s:extension base="tns:Identification" />
</s:complexContent>
</s:complexType>
<s:element name="ReadDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ReadDocumentResult" type="tns:ReadDocumentResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ReadDocumentResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DocumentData" type="tns:FullDocument" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="EditFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="editFolderData" type="tns:EditFolder" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="EditFolder">
<s:complexContent mixed="false">
<s:extension base="tns:RequestFolder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="NewResponsible" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="EditFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="EditFolderResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="DoActionOnFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="doActionOnFolderData" type="tns:DoActionOnFolder" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="DoActionOnFolder">
<s:complexContent mixed="false">
<s:extension base="tns:RequestFolder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ActionList" type="tns:ArrayOfString" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="DoActionOnFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DoActionOnFolderResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddAttachmentToDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestDocumentData" type="tns:RequestDocument" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
<s:element minOccurs="0" maxOccurs="1" name="attachmentList" type="tns:ArrayOfFileData" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddAttachmentToDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AddAttachmentToDocumentResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="EditDocumentData">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestDocumentData" type="tns:RequestDocument" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
<s:element minOccurs="0" maxOccurs="1" name="documentData" type="tns:FileData" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="EditDocumentDataResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="EditDocumentDataResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="DoActionOnDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="doActionOnDocumentData" type="tns:DoActionOnDocument" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="DoActionOnDocument">
<s:complexContent mixed="false">
<s:extension base="tns:RequestDocument">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ActionList" type="tns:ArrayOfString" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="DoActionOnDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DoActionOnDocumentResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetGcUsers">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="adIdentificator" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetGcUsersResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetGcUsersResult" type="tns:GetUsersResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="GetUsersResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="UserList" type="tns:ArrayOfGcUser" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOfGcUser">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="GcUser" nillable="true" type="tns:GcUser" />
</s:sequence>
</s:complexType>
<s:complexType name="GcUser">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Code" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="AdIdentificatorList" type="tns:ArrayOfString" />
</s:sequence>
</s:complexType>
<s:element name="SendAndSaveEmail">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="emailData" type="tns:EmailData" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="EmailData">
<s:complexContent mixed="false">
<s:extension base="tns:Document">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FolderId" type="tns:RequestFolder" />
<s:element minOccurs="0" maxOccurs="1" name="BackendId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Responsible" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="SubjectId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="DocumentType" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="MainContent" type="tns:FileData" />
<s:element minOccurs="0" maxOccurs="1" name="Attachments" type="tns:ArrayOfFileData" />
<s:element minOccurs="0" maxOccurs="1" name="Subject" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="EmailBody" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="EmailTo" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="EmailCC" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="EmailBCC" type="tns:ArrayOfString" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="SendAndSaveEmailResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SendAndSaveEmailResult" type="tns:CreateDocumentResponse" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="CreateFolderSoapIn">
<wsdl:part name="parameters" element="tns:CreateFolder" />
</wsdl:message>
<wsdl:message name="CreateFolderSoapOut">
<wsdl:part name="parameters" element="tns:CreateFolderResponse" />
</wsdl:message>
<wsdl:message name="CreateDocumentSoapIn">
<wsdl:part name="parameters" element="tns:CreateDocument" />
</wsdl:message>
<wsdl:message name="CreateDocumentSoapOut">
<wsdl:part name="parameters" element="tns:CreateDocumentResponse" />
</wsdl:message>
<wsdl:message name="ReadFolderSoapIn">
<wsdl:part name="parameters" element="tns:ReadFolder" />
</wsdl:message>
<wsdl:message name="ReadFolderSoapOut">
<wsdl:part name="parameters" element="tns:ReadFolderResponse" />
</wsdl:message>
<wsdl:message name="ReadDocumentSoapIn">
<wsdl:part name="parameters" element="tns:ReadDocument" />
</wsdl:message>
<wsdl:message name="ReadDocumentSoapOut">
<wsdl:part name="parameters" element="tns:ReadDocumentResponse" />
</wsdl:message>
<wsdl:message name="EditFolderSoapIn">
<wsdl:part name="parameters" element="tns:EditFolder" />
</wsdl:message>
<wsdl:message name="EditFolderSoapOut">
<wsdl:part name="parameters" element="tns:EditFolderResponse" />
</wsdl:message>
<wsdl:message name="DoActionOnFolderSoapIn">
<wsdl:part name="parameters" element="tns:DoActionOnFolder" />
</wsdl:message>
<wsdl:message name="DoActionOnFolderSoapOut">
<wsdl:part name="parameters" element="tns:DoActionOnFolderResponse" />
</wsdl:message>
<wsdl:message name="AddAttachmentToDocumentSoapIn">
<wsdl:part name="parameters" element="tns:AddAttachmentToDocument" />
</wsdl:message>
<wsdl:message name="AddAttachmentToDocumentSoapOut">
<wsdl:part name="parameters" element="tns:AddAttachmentToDocumentResponse" />
</wsdl:message>
<wsdl:message name="EditDocumentDataSoapIn">
<wsdl:part name="parameters" element="tns:EditDocumentData" />
</wsdl:message>
<wsdl:message name="EditDocumentDataSoapOut">
<wsdl:part name="parameters" element="tns:EditDocumentDataResponse" />
</wsdl:message>
<wsdl:message name="DoActionOnDocumentSoapIn">
<wsdl:part name="parameters" element="tns:DoActionOnDocument" />
</wsdl:message>
<wsdl:message name="DoActionOnDocumentSoapOut">
<wsdl:part name="parameters" element="tns:DoActionOnDocumentResponse" />
</wsdl:message>
<wsdl:message name="GetGcUsersSoapIn">
<wsdl:part name="parameters" element="tns:GetGcUsers" />
</wsdl:message>
<wsdl:message name="GetGcUsersSoapOut">
<wsdl:part name="parameters" element="tns:GetGcUsersResponse" />
</wsdl:message>
<wsdl:message name="SendAndSaveEmailSoapIn">
<wsdl:part name="parameters" element="tns:SendAndSaveEmail" />
</wsdl:message>
<wsdl:message name="SendAndSaveEmailSoapOut">
<wsdl:part name="parameters" element="tns:SendAndSaveEmailResponse" />
</wsdl:message>
<wsdl:portType name="GcServiceSoap">
<wsdl:operation name="CreateFolder">
<wsdl:input message="tns:CreateFolderSoapIn" />
<wsdl:output message="tns:CreateFolderSoapOut" />
</wsdl:operation>
<wsdl:operation name="CreateDocument">
<wsdl:input message="tns:CreateDocumentSoapIn" />
<wsdl:output message="tns:CreateDocumentSoapOut" />
</wsdl:operation>
<wsdl:operation name="ReadFolder">
<wsdl:input message="tns:ReadFolderSoapIn" />
<wsdl:output message="tns:ReadFolderSoapOut" />
</wsdl:operation>
<wsdl:operation name="ReadDocument">
<wsdl:input message="tns:ReadDocumentSoapIn" />
<wsdl:output message="tns:ReadDocumentSoapOut" />
</wsdl:operation>
<wsdl:operation name="EditFolder">
<wsdl:input message="tns:EditFolderSoapIn" />
<wsdl:output message="tns:EditFolderSoapOut" />
</wsdl:operation>
<wsdl:operation name="DoActionOnFolder">
<wsdl:input message="tns:DoActionOnFolderSoapIn" />
<wsdl:output message="tns:DoActionOnFolderSoapOut" />
</wsdl:operation>
<wsdl:operation name="AddAttachmentToDocument">
<wsdl:input message="tns:AddAttachmentToDocumentSoapIn" />
<wsdl:output message="tns:AddAttachmentToDocumentSoapOut" />
</wsdl:operation>
<wsdl:operation name="EditDocumentData">
<wsdl:input message="tns:EditDocumentDataSoapIn" />
<wsdl:output message="tns:EditDocumentDataSoapOut" />
</wsdl:operation>
<wsdl:operation name="DoActionOnDocument">
<wsdl:input message="tns:DoActionOnDocumentSoapIn" />
<wsdl:output message="tns:DoActionOnDocumentSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetGcUsers">
<wsdl:input message="tns:GetGcUsersSoapIn" />
<wsdl:output message="tns:GetGcUsersSoapOut" />
</wsdl:operation>
<wsdl:operation name="SendAndSaveEmail">
<wsdl:input message="tns:SendAndSaveEmailSoapIn" />
<wsdl:output message="tns:SendAndSaveEmailSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="GcServiceSoap" type="tns:GcServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="CreateFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateFolder" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CreateDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateDocument" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadFolder" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadDocument" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditFolder" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnFolder" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AddAttachmentToDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/AddAttachmentToDocument" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditDocumentData">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditDocumentData" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnDocument" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetGcUsers">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/GetGcUsers" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SendAndSaveEmail">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/SendAndSaveEmail" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="GcServiceSoap12" type="tns:GcServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="CreateFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateFolder" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CreateDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateDocument" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadFolder" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadDocument" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditFolder" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnFolder" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AddAttachmentToDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/AddAttachmentToDocument" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditDocumentData">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditDocumentData" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnDocument" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetGcUsers">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/GetGcUsers" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SendAndSaveEmail">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/SendAndSaveEmail" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="GcService">
<wsdl:port name="GcServiceSoap" binding="tns:GcServiceSoap">
<soap:address location="https://gcwserac.uni-lj.si/IntegrationUL/Services/GcService.asmx" />
</wsdl:port>
<wsdl:port name="GcServiceSoap12" binding="tns:GcServiceSoap12">
<soap12:address location="https://gcwserac.uni-lj.si/IntegrationUL/Services/GcService.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@ -1,879 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.marg.si/GovernmentConnect/ULJ/V1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://www.marg.si/GovernmentConnect/ULJ/V1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.marg.si/GovernmentConnect/ULJ/V1">
<s:element name="CreateFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="folderData" type="tns:Folder"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="Folder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Title" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="ClassificationCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="StorageUntil" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="BackendId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Responsible" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="BackupResponsibleList" type="tns:ArrayOfString"/>
<s:element minOccurs="0" maxOccurs="1" name="Shourtcut" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="BackendSystemData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SystemId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="ReturnWebServiceUrl" type="s:string"/>
</s:sequence>
</s:complexType>
<s:element name="CreateFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CreateFolderResult" type="tns:CreateFolderResponse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="CreateFolderResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="DocumentID" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="Classification" type="s:string"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Response">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="IsError" type="s:boolean"/>
<s:element minOccurs="0" maxOccurs="1" name="ErrorDescription" type="s:string"/>
</s:sequence>
</s:complexType>
<s:element name="CreateDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="documentData" type="tns:FullDocument"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="FullDocument">
<s:complexContent mixed="false">
<s:extension base="tns:Document">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FolderId" type="tns:RequestFolder"/>
<s:element minOccurs="0" maxOccurs="1" name="BackendId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Responsible" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="BackupResponsibleList" type="tns:ArrayOfString"/>
<s:element minOccurs="0" maxOccurs="1" name="SubjectId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="DocumentType" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="DocumentSubType" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MainContent" type="tns:FileData"/>
<s:element minOccurs="0" maxOccurs="1" name="Attachments" type="tns:ArrayOfFileData"/>
<s:element minOccurs="0" maxOccurs="1" name="ReturnWebServiceUrl" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="ActionList" type="tns:ArrayOfString"/>
<s:element minOccurs="0" maxOccurs="1" name="Signers" type="tns:ArrayOfString"/>
<s:element minOccurs="0" maxOccurs="1" name="Approvers" type="tns:ArrayOfString"/>
<s:element minOccurs="0" maxOccurs="1" name="CustomMetaData" type="tns:ArrayOfTCustomMetaData"/>
<s:element minOccurs="0" maxOccurs="1" name="NewDocumentRelations" type="tns:ArrayOfDocumentRelation"/>
<s:element minOccurs="1" maxOccurs="1" name="IsLimitedVisibility" nillable="true" type="s:boolean"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Document">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DocumentTitle" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="DocumentDate" nillable="true" type="s:dateTime"/>
<s:element minOccurs="0" maxOccurs="1" name="Classification" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="ProcessId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Status" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="GcId" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="RequestFolder">
<s:complexContent mixed="false">
<s:extension base="tns:Identification">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="UserId" type="s:string"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Identification">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="GcId" nillable="true" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="BackendIdData" type="tns:BackendId"/>
<s:element minOccurs="0" maxOccurs="1" name="ClassificationId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="BackendId">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SystemId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="ItemId" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="FileData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Content" type="s:base64Binary"/>
<s:element minOccurs="0" maxOccurs="1" name="FileName" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfFileData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="FileData" nillable="true" type="tns:FileData"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfTCustomMetaData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="TCustomMetaData" nillable="true" type="tns:TCustomMetaData"/>
</s:sequence>
</s:complexType>
<s:complexType name="TCustomMetaData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject"/>
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:TCustomFieldValue"/>
<s:element minOccurs="1" maxOccurs="1" name="AddValue" type="s:boolean"/>
<s:element minOccurs="0" maxOccurs="1" name="FieldName" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="CanBeUpdated" type="s:boolean"/>
</s:sequence>
</s:complexType>
<s:complexType name="ExtensionDataObject"/>
<s:complexType name="TCustomFieldValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject"/>
<s:element minOccurs="0" maxOccurs="1" name="StringValue" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="IntegerValue" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="DecimalValue" nillable="true" type="s:decimal"/>
<s:element minOccurs="1" maxOccurs="1" name="DateValue" nillable="true" type="s:dateTime"/>
<s:element minOccurs="1" maxOccurs="1" name="DateTimeValue" nillable="true" type="s:dateTime"/>
<s:element minOccurs="0" maxOccurs="1" name="UserValue" type="tns:TUser"/>
<s:element minOccurs="0" maxOccurs="1" name="RegisterValues" type="tns:ArrayOfTRegisterValue"/>
<s:element minOccurs="0" maxOccurs="1" name="SubjectValue" type="tns:TSubject"/>
<s:element minOccurs="1" maxOccurs="1" name="BooleanValue" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="LongValue" nillable="true" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="CountryValue" type="tns:TCountryValue"/>
<s:element minOccurs="0" maxOccurs="1" name="ReminderValue" type="tns:TReminderValue"/>
</s:sequence>
</s:complexType>
<s:complexType name="TUser">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject"/>
<s:element minOccurs="1" maxOccurs="1" name="UserSID" nillable="true" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="UserName" type="tns:ArrayOfString"/>
<s:element minOccurs="0" maxOccurs="1" name="OrganizationUnitCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="OrgPosCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="OrganizationUnitBackendID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="UserEmail" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="BackendID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="FullName" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="InternalUserID" nillable="true" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="GroupID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="OrgPosBackendID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="CompanyBackendID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="OrgPosName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="OrgPosDescription" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="OrganizationUnitID" nillable="true" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="ReservedBy" type="tns:TUserProfile"/>
<s:element minOccurs="1" maxOccurs="1" name="GenderID" nillable="true" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="Prefix1" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Prefix2" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Postfix" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="IsExternal" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="GroupSID" nillable="true" type="s:long"/>
<s:element minOccurs="1" maxOccurs="1" name="IsBlocked" nillable="true" type="s:boolean"/>
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="TUserProfile">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject"/>
<s:element minOccurs="1" maxOccurs="1" name="UserSID" nillable="true" type="s:long"/>
<s:element minOccurs="1" maxOccurs="1" name="SecurityIdentityID" nillable="true" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="BackendID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="UserName" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfTRegisterValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="TRegisterValue" nillable="true" type="tns:TRegisterValue"/>
</s:sequence>
</s:complexType>
<s:complexType name="TRegisterValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject"/>
<s:element minOccurs="1" maxOccurs="1" name="RegisterInstanceID" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="RegisterValue" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="RegisterText" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="TSubject">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject"/>
<s:element minOccurs="0" maxOccurs="1" name="TaxID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="RegistrationID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="FullName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="BackendID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="EmailAddress" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="PersonID" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="PersonType" nillable="true" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="Fax" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Address" type="tns:TAddress"/>
<s:element minOccurs="1" maxOccurs="1" name="PersonAddressID" nillable="true" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="PersonAddressBackendID" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="AccountingID" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="CreateEmptySubject" nillable="true" type="s:boolean"/>
</s:sequence>
</s:complexType>
<s:complexType name="TAddress">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject"/>
<s:element minOccurs="0" maxOccurs="1" name="Address1" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Address2" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="City" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PostCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="CountryA2" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="CountryN3" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PostOfficeName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="CountryName" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="TCountryValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject"/>
<s:element minOccurs="0" maxOccurs="1" name="CountryName" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="CountryID" nillable="true" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="CountryCodeN3" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="CountryCodeISO2" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="CountryCodeISO3" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="TReminderValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject"/>
<s:element minOccurs="1" maxOccurs="1" name="ReminderDate" nillable="true" type="s:dateTime"/>
<s:element minOccurs="0" maxOccurs="1" name="ReminderMessage" type="s:string"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfDocumentRelation">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="DocumentRelation" nillable="true" type="tns:DocumentRelation"/>
</s:sequence>
</s:complexType>
<s:complexType name="DocumentRelation">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RelatedDocument" type="tns:Identification"/>
<s:element minOccurs="1" maxOccurs="1" name="TypeOfRelation" type="tns:RelationType"/>
</s:sequence>
</s:complexType>
<s:simpleType name="RelationType">
<s:restriction base="s:string">
<s:enumeration value="Attached"/>
<s:enumeration value="Related"/>
</s:restriction>
</s:simpleType>
<s:element name="CreateDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CreateDocumentResult" type="tns:CreateDocumentResponse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="CreateDocumentResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="DocumentID" type="s:long"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="ReadFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestFolderData" type="tns:RequestFolder"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ReadFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ReadFolderResult" type="tns:ReadFolderResponse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ReadFolderResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FolderData" type="tns:OutFolder"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="OutFolder">
<s:complexContent mixed="false">
<s:extension base="tns:Folder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Classification" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="GcId" type="s:long"/>
<s:element minOccurs="0" maxOccurs="1" name="FolderDocuments" type="tns:ArrayOfDocument"/>
<s:element minOccurs="0" maxOccurs="1" name="StatusUri" type="s:string"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOfDocument">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Document" nillable="true" type="tns:Document"/>
</s:sequence>
</s:complexType>
<s:element name="ReadDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestDocumentData" type="tns:RequestDocument"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="RequestDocument">
<s:complexContent mixed="false">
<s:extension base="tns:Identification"/>
</s:complexContent>
</s:complexType>
<s:element name="ReadDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ReadDocumentResult" type="tns:ReadDocumentResponse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ReadDocumentResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DocumentData" type="tns:FullDocument"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="EditFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="editFolderData" type="tns:EditFolder"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="EditFolder">
<s:complexContent mixed="false">
<s:extension base="tns:RequestFolder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="NewResponsible" type="s:string"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="EditFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="EditFolderResult" type="tns:Response"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="DoActionOnFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="doActionOnFolderData" type="tns:DoActionOnFolder"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="DoActionOnFolder">
<s:complexContent mixed="false">
<s:extension base="tns:RequestFolder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ActionList" type="tns:ArrayOfString"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="DoActionOnFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DoActionOnFolderResult" type="tns:Response"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddAttachmentToDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestDocumentData" type="tns:RequestDocument"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
<s:element minOccurs="0" maxOccurs="1" name="attachmentList" type="tns:ArrayOfFileData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddAttachmentToDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AddAttachmentToDocumentResult" type="tns:Response"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="EditDocumentData">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestDocumentData" type="tns:RequestDocument"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
<s:element minOccurs="0" maxOccurs="1" name="documentData" type="tns:FileData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="EditDocumentDataResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="EditDocumentDataResult" type="tns:Response"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="DoActionOnDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="doActionOnDocumentData" type="tns:DoActionOnDocument"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="DoActionOnDocument">
<s:complexContent mixed="false">
<s:extension base="tns:RequestDocument">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ActionList" type="tns:ArrayOfString"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="DoActionOnDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DoActionOnDocumentResult" type="tns:Response"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetGcUsers">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="adIdentificator" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetGcUsersResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetGcUsersResult" type="tns:GetUsersResponse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="GetUsersResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="UserList" type="tns:ArrayOfGcUser"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOfGcUser">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="GcUser" nillable="true" type="tns:GcUser"/>
</s:sequence>
</s:complexType>
<s:complexType name="GcUser">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Code" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="AdIdentificatorList" type="tns:ArrayOfString"/>
</s:sequence>
</s:complexType>
<s:element name="SendAndSaveEmail">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="emailData" type="tns:EmailData"/>
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="EmailData">
<s:complexContent mixed="false">
<s:extension base="tns:Document">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FolderId" type="tns:RequestFolder"/>
<s:element minOccurs="0" maxOccurs="1" name="BackendId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Responsible" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="SubjectId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="DocumentType" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MainContent" type="tns:FileData"/>
<s:element minOccurs="0" maxOccurs="1" name="Attachments" type="tns:ArrayOfFileData"/>
<s:element minOccurs="0" maxOccurs="1" name="Subject" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="EmailBody" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="EmailTo" type="tns:ArrayOfString"/>
<s:element minOccurs="0" maxOccurs="1" name="EmailCC" type="tns:ArrayOfString"/>
<s:element minOccurs="0" maxOccurs="1" name="EmailBCC" type="tns:ArrayOfString"/>
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="SendAndSaveEmailResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SendAndSaveEmailResult" type="tns:CreateDocumentResponse"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="CreateFolderSoapIn">
<wsdl:part name="parameters" element="tns:CreateFolder"/>
</wsdl:message>
<wsdl:message name="CreateFolderSoapOut">
<wsdl:part name="parameters" element="tns:CreateFolderResponse"/>
</wsdl:message>
<wsdl:message name="CreateDocumentSoapIn">
<wsdl:part name="parameters" element="tns:CreateDocument"/>
</wsdl:message>
<wsdl:message name="CreateDocumentSoapOut">
<wsdl:part name="parameters" element="tns:CreateDocumentResponse"/>
</wsdl:message>
<wsdl:message name="ReadFolderSoapIn">
<wsdl:part name="parameters" element="tns:ReadFolder"/>
</wsdl:message>
<wsdl:message name="ReadFolderSoapOut">
<wsdl:part name="parameters" element="tns:ReadFolderResponse"/>
</wsdl:message>
<wsdl:message name="ReadDocumentSoapIn">
<wsdl:part name="parameters" element="tns:ReadDocument"/>
</wsdl:message>
<wsdl:message name="ReadDocumentSoapOut">
<wsdl:part name="parameters" element="tns:ReadDocumentResponse"/>
</wsdl:message>
<wsdl:message name="EditFolderSoapIn">
<wsdl:part name="parameters" element="tns:EditFolder"/>
</wsdl:message>
<wsdl:message name="EditFolderSoapOut">
<wsdl:part name="parameters" element="tns:EditFolderResponse"/>
</wsdl:message>
<wsdl:message name="DoActionOnFolderSoapIn">
<wsdl:part name="parameters" element="tns:DoActionOnFolder"/>
</wsdl:message>
<wsdl:message name="DoActionOnFolderSoapOut">
<wsdl:part name="parameters" element="tns:DoActionOnFolderResponse"/>
</wsdl:message>
<wsdl:message name="AddAttachmentToDocumentSoapIn">
<wsdl:part name="parameters" element="tns:AddAttachmentToDocument"/>
</wsdl:message>
<wsdl:message name="AddAttachmentToDocumentSoapOut">
<wsdl:part name="parameters" element="tns:AddAttachmentToDocumentResponse"/>
</wsdl:message>
<wsdl:message name="EditDocumentDataSoapIn">
<wsdl:part name="parameters" element="tns:EditDocumentData"/>
</wsdl:message>
<wsdl:message name="EditDocumentDataSoapOut">
<wsdl:part name="parameters" element="tns:EditDocumentDataResponse"/>
</wsdl:message>
<wsdl:message name="DoActionOnDocumentSoapIn">
<wsdl:part name="parameters" element="tns:DoActionOnDocument"/>
</wsdl:message>
<wsdl:message name="DoActionOnDocumentSoapOut">
<wsdl:part name="parameters" element="tns:DoActionOnDocumentResponse"/>
</wsdl:message>
<wsdl:message name="GetGcUsersSoapIn">
<wsdl:part name="parameters" element="tns:GetGcUsers"/>
</wsdl:message>
<wsdl:message name="GetGcUsersSoapOut">
<wsdl:part name="parameters" element="tns:GetGcUsersResponse"/>
</wsdl:message>
<wsdl:message name="SendAndSaveEmailSoapIn">
<wsdl:part name="parameters" element="tns:SendAndSaveEmail"/>
</wsdl:message>
<wsdl:message name="SendAndSaveEmailSoapOut">
<wsdl:part name="parameters" element="tns:SendAndSaveEmailResponse"/>
</wsdl:message>
<wsdl:portType name="GcServiceSoap">
<wsdl:operation name="CreateFolder">
<wsdl:input message="tns:CreateFolderSoapIn"/>
<wsdl:output message="tns:CreateFolderSoapOut"/>
</wsdl:operation>
<wsdl:operation name="CreateDocument">
<wsdl:input message="tns:CreateDocumentSoapIn"/>
<wsdl:output message="tns:CreateDocumentSoapOut"/>
</wsdl:operation>
<wsdl:operation name="ReadFolder">
<wsdl:input message="tns:ReadFolderSoapIn"/>
<wsdl:output message="tns:ReadFolderSoapOut"/>
</wsdl:operation>
<wsdl:operation name="ReadDocument">
<wsdl:input message="tns:ReadDocumentSoapIn"/>
<wsdl:output message="tns:ReadDocumentSoapOut"/>
</wsdl:operation>
<wsdl:operation name="EditFolder">
<wsdl:input message="tns:EditFolderSoapIn"/>
<wsdl:output message="tns:EditFolderSoapOut"/>
</wsdl:operation>
<wsdl:operation name="DoActionOnFolder">
<wsdl:input message="tns:DoActionOnFolderSoapIn"/>
<wsdl:output message="tns:DoActionOnFolderSoapOut"/>
</wsdl:operation>
<wsdl:operation name="AddAttachmentToDocument">
<wsdl:input message="tns:AddAttachmentToDocumentSoapIn"/>
<wsdl:output message="tns:AddAttachmentToDocumentSoapOut"/>
</wsdl:operation>
<wsdl:operation name="EditDocumentData">
<wsdl:input message="tns:EditDocumentDataSoapIn"/>
<wsdl:output message="tns:EditDocumentDataSoapOut"/>
</wsdl:operation>
<wsdl:operation name="DoActionOnDocument">
<wsdl:input message="tns:DoActionOnDocumentSoapIn"/>
<wsdl:output message="tns:DoActionOnDocumentSoapOut"/>
</wsdl:operation>
<wsdl:operation name="GetGcUsers">
<wsdl:input message="tns:GetGcUsersSoapIn"/>
<wsdl:output message="tns:GetGcUsersSoapOut"/>
</wsdl:operation>
<wsdl:operation name="SendAndSaveEmail">
<wsdl:input message="tns:SendAndSaveEmailSoapIn"/>
<wsdl:output message="tns:SendAndSaveEmailSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="GcServiceSoap" type="tns:GcServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="CreateFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateFolder" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CreateDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateDocument" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadFolder" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadDocument" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditFolder" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnFolder" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AddAttachmentToDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/AddAttachmentToDocument" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditDocumentData">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditDocumentData" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnDocument" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetGcUsers">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/GetGcUsers" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SendAndSaveEmail">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/SendAndSaveEmail" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="GcServiceSoap12" type="tns:GcServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="CreateFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateFolder" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CreateDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateDocument" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadFolder" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadDocument" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditFolder" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnFolder" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AddAttachmentToDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/AddAttachmentToDocument" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditDocumentData">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditDocumentData" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnDocument" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetGcUsers">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/GetGcUsers" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="SendAndSaveEmail">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/SendAndSaveEmail" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="GcService">
<wsdl:port name="GcServiceSoap" binding="tns:GcServiceSoap">
<soap:address location="https://gcwserac.uni-lj.si/IntegrationUL/Services/GcService.asmx"/>
</wsdl:port>
<wsdl:port name="GcServiceSoap12" binding="tns:GcServiceSoap12">
<soap12:address location="https://gcwserac.uni-lj.si/IntegrationUL/Services/GcService.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@ -1,733 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.marg.si/GovernmentConnect/ULJ/V1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.marg.si/GovernmentConnect/ULJ/V1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.marg.si/GovernmentConnect/ULJ/V1">
<s:element name="CreateFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="folderData" type="tns:Folder" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="Folder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Title" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ClassificationCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="StorageUntil" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackendId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Responsible" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackupResponsibleList" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="Shourtcut" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="BackendSystemData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SystemId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ReturnWebServiceUrl" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="CreateFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CreateFolderResult" type="tns:CreateFolderResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="CreateFolderResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="DocumentID" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="Classification" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Response">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="IsError" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="ErrorDescription" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="CreateDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="documentData" type="tns:FullDocument" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="FullDocument">
<s:complexContent mixed="false">
<s:extension base="tns:Document">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FolderId" type="tns:RequestFolder" />
<s:element minOccurs="0" maxOccurs="1" name="BackendId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Responsible" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackupResponsibleList" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="SubjectId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="DocumentType" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="MainContent" type="tns:FileData" />
<s:element minOccurs="0" maxOccurs="1" name="Attachments" type="tns:ArrayOfFileData" />
<s:element minOccurs="0" maxOccurs="1" name="ReturnWebServiceUrl" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ActionList" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="Signers" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="Approvers" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="CustomMetaData" type="tns:ArrayOfTCustomMetaData" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Document">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DocumentTitle" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="DocumentDate" nillable="true" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="Classification" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ProcessId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Status" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="RequestFolder">
<s:complexContent mixed="false">
<s:extension base="tns:Identification">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="UserId" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Identification">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="GcId" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="BackendIdData" type="tns:BackendId" />
<s:element minOccurs="0" maxOccurs="1" name="ClassificationId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="BackendId">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="SystemId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ItemId" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="FileData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Content" type="s:base64Binary" />
<s:element minOccurs="0" maxOccurs="1" name="FileName" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfFileData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="FileData" nillable="true" type="tns:FileData" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfTCustomMetaData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="TCustomMetaData" nillable="true" type="tns:TCustomMetaData" />
</s:sequence>
</s:complexType>
<s:complexType name="TCustomMetaData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:TCustomFieldValue" />
<s:element minOccurs="1" maxOccurs="1" name="AddValue" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="FieldName" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="CanBeUpdated" type="s:boolean" />
</s:sequence>
</s:complexType>
<s:complexType name="ExtensionDataObject" />
<s:complexType name="TCustomFieldValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="StringValue" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="IntegerValue" nillable="true" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="DecimalValue" nillable="true" type="s:decimal" />
<s:element minOccurs="1" maxOccurs="1" name="DateValue" nillable="true" type="s:dateTime" />
<s:element minOccurs="1" maxOccurs="1" name="DateTimeValue" nillable="true" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="UserValue" type="tns:TUser" />
<s:element minOccurs="0" maxOccurs="1" name="RegisterValues" type="tns:ArrayOfTRegisterValue" />
<s:element minOccurs="0" maxOccurs="1" name="SubjectValue" type="tns:TSubject" />
<s:element minOccurs="1" maxOccurs="1" name="BooleanValue" nillable="true" type="s:boolean" />
<s:element minOccurs="1" maxOccurs="1" name="LongValue" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="CountryValue" type="tns:TCountryValue" />
</s:sequence>
</s:complexType>
<s:complexType name="TUser">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="1" maxOccurs="1" name="UserSID" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="UserName" type="tns:ArrayOfString" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationUnitCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrgPosCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationUnitBackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="UserEmail" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FullName" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="InternalUserID" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="GroupID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrgPosBackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CompanyBackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrgPosName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrgPosDescription" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="OrganizationUnitID" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="ReservedBy" type="tns:TUserProfile" />
<s:element minOccurs="1" maxOccurs="1" name="GenderID" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Prefix1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Prefix2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Postfix" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="IsExternal" nillable="true" type="s:boolean" />
<s:element minOccurs="1" maxOccurs="1" name="GroupSID" nillable="true" type="s:long" />
<s:element minOccurs="1" maxOccurs="1" name="IsBlocked" nillable="true" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="TUserProfile">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="1" maxOccurs="1" name="UserSID" nillable="true" type="s:long" />
<s:element minOccurs="1" maxOccurs="1" name="SecurityIdentityID" nillable="true" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="BackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="UserName" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfTRegisterValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="TRegisterValue" nillable="true" type="tns:TRegisterValue" />
</s:sequence>
</s:complexType>
<s:complexType name="TRegisterValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="1" maxOccurs="1" name="RegisterInstanceID" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="RegisterValue" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="RegisterText" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="TSubject">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="TaxID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="RegistrationID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FullName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="BackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="EmailAddress" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="PersonID" nillable="true" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="PersonType" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Fax" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Address" type="tns:TAddress" />
<s:element minOccurs="1" maxOccurs="1" name="PersonAddressID" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="PersonAddressBackendID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="AccountingID" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="TAddress">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="Address1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Address2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="City" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="PostCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Country" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryA2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryN3" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="PostOfficeName" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="TCountryValue">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExtensionData" type="tns:ExtensionDataObject" />
<s:element minOccurs="0" maxOccurs="1" name="CountryName" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="CountryID" nillable="true" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="CountryCodeN3" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryCodeISO2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="CountryCodeISO3" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="CreateDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CreateDocumentResult" type="tns:CreateDocumentResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="CreateDocumentResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="DocumentID" type="s:long" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="ReadFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestFolderData" type="tns:RequestFolder" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ReadFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ReadFolderResult" type="tns:ReadFolderResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ReadFolderResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FolderData" type="tns:OutFolder" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="OutFolder">
<s:complexContent mixed="false">
<s:extension base="tns:Folder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Classification" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="GcId" type="s:long" />
<s:element minOccurs="0" maxOccurs="1" name="FolderDocuments" type="tns:ArrayOfDocument" />
<s:element minOccurs="0" maxOccurs="1" name="StatusUri" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOfDocument">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Document" nillable="true" type="tns:Document" />
</s:sequence>
</s:complexType>
<s:element name="EditFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="editFolderData" type="tns:EditFolder" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="EditFolder">
<s:complexContent mixed="false">
<s:extension base="tns:RequestFolder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="NewResponsible" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="EditFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="EditFolderResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="DoActionOnFolder">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="doActionOnFolderData" type="tns:DoActionOnFolder" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="DoActionOnFolder">
<s:complexContent mixed="false">
<s:extension base="tns:RequestFolder">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ActionList" type="tns:ArrayOfString" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="DoActionOnFolderResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DoActionOnFolderResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddAttachmentToDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestDocumentData" type="tns:RequestDocument" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
<s:element minOccurs="0" maxOccurs="1" name="attachmentList" type="tns:ArrayOfFileData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="RequestDocument">
<s:complexContent mixed="false">
<s:extension base="tns:Identification" />
</s:complexContent>
</s:complexType>
<s:element name="AddAttachmentToDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AddAttachmentToDocumentResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="EditDocumentData">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="requestDocumentData" type="tns:RequestDocument" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
<s:element minOccurs="0" maxOccurs="1" name="documentData" type="tns:FileData" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="EditDocumentDataResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="EditDocumentDataResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="DoActionOnDocument">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="doActionOnDocumentData" type="tns:DoActionOnDocument" />
<s:element minOccurs="0" maxOccurs="1" name="backendSystemData" type="tns:BackendSystemData" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="DoActionOnDocument">
<s:complexContent mixed="false">
<s:extension base="tns:RequestDocument">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ActionList" type="tns:ArrayOfString" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="DoActionOnDocumentResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="DoActionOnDocumentResult" type="tns:Response" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetGcUsers">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="adIdentificator" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="OrganizationId" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetGcUsersResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetGcUsersResult" type="tns:GetUsersResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="GetUsersResponse">
<s:complexContent mixed="false">
<s:extension base="tns:Response">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="UserList" type="tns:ArrayOfGcUser" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOfGcUser">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="GcUser" nillable="true" type="tns:GcUser" />
</s:sequence>
</s:complexType>
<s:complexType name="GcUser">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Code" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="AdIdentificatorList" type="tns:ArrayOfString" />
</s:sequence>
</s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name="CreateFolderSoapIn">
<wsdl:part name="parameters" element="tns:CreateFolder" />
</wsdl:message>
<wsdl:message name="CreateFolderSoapOut">
<wsdl:part name="parameters" element="tns:CreateFolderResponse" />
</wsdl:message>
<wsdl:message name="CreateDocumentSoapIn">
<wsdl:part name="parameters" element="tns:CreateDocument" />
</wsdl:message>
<wsdl:message name="CreateDocumentSoapOut">
<wsdl:part name="parameters" element="tns:CreateDocumentResponse" />
</wsdl:message>
<wsdl:message name="ReadFolderSoapIn">
<wsdl:part name="parameters" element="tns:ReadFolder" />
</wsdl:message>
<wsdl:message name="ReadFolderSoapOut">
<wsdl:part name="parameters" element="tns:ReadFolderResponse" />
</wsdl:message>
<wsdl:message name="EditFolderSoapIn">
<wsdl:part name="parameters" element="tns:EditFolder" />
</wsdl:message>
<wsdl:message name="EditFolderSoapOut">
<wsdl:part name="parameters" element="tns:EditFolderResponse" />
</wsdl:message>
<wsdl:message name="DoActionOnFolderSoapIn">
<wsdl:part name="parameters" element="tns:DoActionOnFolder" />
</wsdl:message>
<wsdl:message name="DoActionOnFolderSoapOut">
<wsdl:part name="parameters" element="tns:DoActionOnFolderResponse" />
</wsdl:message>
<wsdl:message name="AddAttachmentToDocumentSoapIn">
<wsdl:part name="parameters" element="tns:AddAttachmentToDocument" />
</wsdl:message>
<wsdl:message name="AddAttachmentToDocumentSoapOut">
<wsdl:part name="parameters" element="tns:AddAttachmentToDocumentResponse" />
</wsdl:message>
<wsdl:message name="EditDocumentDataSoapIn">
<wsdl:part name="parameters" element="tns:EditDocumentData" />
</wsdl:message>
<wsdl:message name="EditDocumentDataSoapOut">
<wsdl:part name="parameters" element="tns:EditDocumentDataResponse" />
</wsdl:message>
<wsdl:message name="DoActionOnDocumentSoapIn">
<wsdl:part name="parameters" element="tns:DoActionOnDocument" />
</wsdl:message>
<wsdl:message name="DoActionOnDocumentSoapOut">
<wsdl:part name="parameters" element="tns:DoActionOnDocumentResponse" />
</wsdl:message>
<wsdl:message name="GetGcUsersSoapIn">
<wsdl:part name="parameters" element="tns:GetGcUsers" />
</wsdl:message>
<wsdl:message name="GetGcUsersSoapOut">
<wsdl:part name="parameters" element="tns:GetGcUsersResponse" />
</wsdl:message>
<wsdl:portType name="GcServiceSoap">
<wsdl:operation name="CreateFolder">
<wsdl:input message="tns:CreateFolderSoapIn" />
<wsdl:output message="tns:CreateFolderSoapOut" />
</wsdl:operation>
<wsdl:operation name="CreateDocument">
<wsdl:input message="tns:CreateDocumentSoapIn" />
<wsdl:output message="tns:CreateDocumentSoapOut" />
</wsdl:operation>
<wsdl:operation name="ReadFolder">
<wsdl:input message="tns:ReadFolderSoapIn" />
<wsdl:output message="tns:ReadFolderSoapOut" />
</wsdl:operation>
<wsdl:operation name="EditFolder">
<wsdl:input message="tns:EditFolderSoapIn" />
<wsdl:output message="tns:EditFolderSoapOut" />
</wsdl:operation>
<wsdl:operation name="DoActionOnFolder">
<wsdl:input message="tns:DoActionOnFolderSoapIn" />
<wsdl:output message="tns:DoActionOnFolderSoapOut" />
</wsdl:operation>
<wsdl:operation name="AddAttachmentToDocument">
<wsdl:input message="tns:AddAttachmentToDocumentSoapIn" />
<wsdl:output message="tns:AddAttachmentToDocumentSoapOut" />
</wsdl:operation>
<wsdl:operation name="EditDocumentData">
<wsdl:input message="tns:EditDocumentDataSoapIn" />
<wsdl:output message="tns:EditDocumentDataSoapOut" />
</wsdl:operation>
<wsdl:operation name="DoActionOnDocument">
<wsdl:input message="tns:DoActionOnDocumentSoapIn" />
<wsdl:output message="tns:DoActionOnDocumentSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetGcUsers">
<wsdl:input message="tns:GetGcUsersSoapIn" />
<wsdl:output message="tns:GetGcUsersSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="GcServiceSoap" type="tns:GcServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="CreateFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateFolder" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CreateDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateDocument" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadFolder" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditFolder" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnFolder">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnFolder" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AddAttachmentToDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/AddAttachmentToDocument" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditDocumentData">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditDocumentData" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnDocument">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnDocument" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetGcUsers">
<soap:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/GetGcUsers" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="GcServiceSoap12" type="tns:GcServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="CreateFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateFolder" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="CreateDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/CreateDocument" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ReadFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/ReadFolder" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditFolder" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnFolder">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnFolder" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AddAttachmentToDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/AddAttachmentToDocument" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EditDocumentData">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/EditDocumentData" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DoActionOnDocument">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/DoActionOnDocument" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetGcUsers">
<soap12:operation soapAction="http://www.marg.si/GovernmentConnect/ULJ/V1/GetGcUsers" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="GcService">
<wsdl:port name="GcServiceSoap" binding="tns:GcServiceSoap">
<soap:address location="http://localhost/IntegrationUL/Services/GcService.asmx" />
</wsdl:port>
<wsdl:port name="GcServiceSoap12" binding="tns:GcServiceSoap12">
<soap12:address location="http://localhost/IntegrationUL/Services/GcService.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@ -1,143 +0,0 @@
Bag Attributes
Microsoft Local Key set: <No Values>
localKeyID: 01 00 00 00
Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
friendlyName: te-Univerzawebstre!017enikiskritikal-b4bd8b4e-e47f-49f0-8dc8-61abe9198e17
Key Attributes
X509v3 Key Usage: 10
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCgt1nSPr0D2BP1
f0G55rrTtH+rfrKNoniq2rGQshUL/n0oTLadMrbUoN79Qy8KLHbBCxnqfNZ4pCjI
c2xZL6fTj6+TZnOn3zWEhEfWqXatoDUCOW5MJIhyjHHau0CcuBKbOCNaqQpq1iCe
zuemGovOU4bdBou8Y5o1TgLSQvJhqbB54Wy3UKQjO1mHFa0xx6wsDR/sU5EJRNFT
JB1qO/LYE9uqdhQ2guaJRx8BKM5YyM8cbba+4QsZ+AUKEGNco7rJ3S34GtMjM9ru
1wA3fRLHDio6kS/gJs16+B2vue7e6UrBbXwJ8k9HksLrHp3wiAJKbLe6SzsLgJWx
U2g5SZMBAgMBAAECggEASdQwhO6hMdTfRlWRQe8GQB6Yz5VCPOI4AHS6QTgthvb/
U7X55bjYWFEWXs2wHEJUw1VwMFHszDrNKVgsm8PSmtNU2qej1agqE5gY0DnE9Pm1
oDH1wzC9JbHy04JVqii9E2T0iL9Cs9Vt4sY1kA59zuh7+aj6JC61NmuBzElIwyfQ
MXehQXJLaO3RrotSTjyLkQcSVWYtm3FZrS4iJ0sCbyLe2C+qIxDDQIiqP17JZBXt
cbKBJynSzhlzUkfUC2VkGUA+TJvuC4dCazhh3QqoG8Yduu5whvbxUcMoskbmc3uo
TvHG7SerU5+lgEt9jipK5L1qEPrCnxrCql2hLdd8aQKBgQDOL+ZF/x/iea939v8L
0cFwQnUbKbDk6sr1r1UuXcwAAuUkEpk93vOAA/L1YV9gst7cxMSHhbFO7FtDGBjc
GjKo2BUAvRGp/rZnlhmo2NqUu0K70gIUnXH9KQ0Bn1Q+5lxCP5qlRoKPtW4/lXhe
l8NBPAzaNvg3RQnVbAJNuaSxTwKBgQDHizPpveQ4OMPt+XyT287YZMRcNECE0fAy
fOp5HOPIXbeab1lBMCpPiK4EyaGXqfebX71Lx76KIOOlXAKYzMcpZB0/Vdpry8Fx
fSTVh4Odm0tTMGKFFJ98LrXxc0s8aG+ugNHJHcDdl+8AMoW7bf57geofNL8ybOmZ
MnQ52KJCrwKBgA/g4nPrhNIVGu07KUMIwUPa6lfQKx5F8qFfAklS0d4CWxEfGYwJ
OmlWZIR/HjA9Nip8QMJLCm+QhiqxlWCF5/bWxS9MYCreQb/ScGFvac3gafA66Qwb
X+bmHWlNkthRNzOm4ErwFifpCfd9lEp8l33TmQ3JA+6Fs48rBTZlIIjDAoGAFaXu
fd9SER9ncjvs3gWszSExhGdO0JoOGwweTAFsXOJ99s05u67ECFjluDM/yrpv2HVs
jfofm9CxodD3nygoOz9XRPXFeohidjODeX74MnMUmvPW3GU+YDSZHJbLhMQ3yZDE
MbN+pwvCrBzPEWR/hVq00anhTFEwjqRAo73y7JUCgYEAgX3Rb8a5nyB+RNwgo+cv
C9yUz3thVdtrWVYWyOa/SfjqB38xc90WjpJxzaa5382U99Y155QsHHuLPBnHgXg0
lTrPKCXqCC+1RI6JKiUiBtSRPLtspWBSr+neIgkaLMeGgWM8sfOtprKMXxy4zP6z
ViOaYM18wMyCL+bGE+iZOH8=
-----END PRIVATE KEY-----
Bag Attributes
localKeyID: 01 00 00 00
friendlyName: Anketni sistem
subject=/C=SI/ST=Slovenia/L=Ljubljana/O=Univerza v Ljubljani/OU=USI/CN=anketnisistem.uni-lj.si/emailAddress=helpdesk@uni-lj.si
issuer=/DC=si/DC=uni-lj/CN=Univerza v Ljubljani CA1
-----BEGIN CERTIFICATE-----
MIIGVTCCBT2gAwIBAgITRgAAHN/OrnRwho0zcgADAAAc3zANBgkqhkiG9w0BAQsF
ADBPMRIwEAYKCZImiZPyLGQBGRYCc2kxFjAUBgoJkiaJk/IsZAEZFgZ1bmktbGox
ITAfBgNVBAMTGFVuaXZlcnphIHYgTGp1YmxqYW5pIENBMTAeFw0xODEwMDgwODIw
MTBaFw0yMTEwMDcwODIwMTBaMIGmMQswCQYDVQQGEwJTSTERMA8GA1UECBMIU2xv
dmVuaWExEjAQBgNVBAcTCUxqdWJsamFuYTEdMBsGA1UEChMUVW5pdmVyemEgdiBM
anVibGphbmkxDDAKBgNVBAsTA1VTSTEgMB4GA1UEAxMXYW5rZXRuaXNpc3RlbS51
bmktbGouc2kxITAfBgkqhkiG9w0BCQEWEmhlbHBkZXNrQHVuaS1sai5zaTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKC3WdI+vQPYE/V/QbnmutO0f6t+
so2ieKrasZCyFQv+fShMtp0yttSg3v1DLwosdsELGep81nikKMhzbFkvp9OPr5Nm
c6ffNYSER9apdq2gNQI5bkwkiHKMcdq7QJy4Eps4I1qpCmrWIJ7O56Yai85Tht0G
i7xjmjVOAtJC8mGpsHnhbLdQpCM7WYcVrTHHrCwNH+xTkQlE0VMkHWo78tgT26p2
FDaC5olHHwEozljIzxxttr7hCxn4BQoQY1yjusndLfga0yMz2u7XADd9EscOKjqR
L+AmzXr4Ha+57t7pSsFtfAnyT0eSwusenfCIAkpst7pLOwuAlbFTaDlJkwECAwEA
AaOCAtAwggLMMD0GCSsGAQQBgjcVBwQwMC4GJisGAQQBgjcVCMDCSIfAgXCEwZMb
g83OR4LAnFOBE4GQ5yqF+O06AgFkAgEMMA4GA1UdDwEB/wQEAwIFIDAdBgNVHQ4E
FgQUD1ZQmAwsAUaQakP37pkFpTXawWowHwYDVR0jBBgwFoAU778muTua8OHZ97ME
KbeYjkVJiqgwggEdBgNVHR8EggEUMIIBEDCCAQygggEIoIIBBIY6aHR0cDovL3Br
aS51bmktbGouc2kvVW5pdmVyemElMjB2JTIwTGp1YmxqYW5pJTIwQ0ExKDMpLmNy
bIaBxWxkYXA6Ly8vQ049VW5pdmVyemElMjB2JTIwTGp1YmxqYW5pJTIwQ0ExKDMp
LENOPURDVjJVTCxDTj1DRFAsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049
U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz11bmktbGosREM9c2k/Y2VydGlm
aWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1
dGlvblBvaW50MIIBGAYIKwYBBQUHAQEEggEKMIIBBjBGBggrBgEFBQcwAoY6aHR0
cDovL3BraS51bmktbGouc2kvVW5pdmVyemElMjB2JTIwTGp1YmxqYW5pJTIwQ0Ex
KDMpLmNydDCBuwYIKwYBBQUHMAKGga5sZGFwOi8vL0NOPVVuaXZlcnphJTIwdiUy
MExqdWJsamFuaSUyMENBMSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2Vydmlj
ZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz11bmktbGosREM9c2k/
Y0FDZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmljYXRpb25BdXRo
b3JpdHkwDQYJKoZIhvcNAQELBQADggEBAFov1HbNVmLzbrsQzsevdwC0uRCwmfJX
mndiKICecINjpD9NfQzr7n0ApqULGzpJAOS+BEdSJvFFRSiW3yyAn3d8tVqYzCTO
fpcEv+SRPByiTxc6NZY8+H3Tr8+QTBcJ8mTynrAKEfQ+MLohcSQ3o1IlCBIMPgI6
l0fMA7jZ1fhbcHCZmCItfMGgVDgSOJFEVvHdAkJ8uRaVf3tjhtcYfmC9sOdMPo+X
XDcYV6z/wJZjTLMWOBl7Zi+QZPRH+LD9F3lX8LBdksYnxYGwLOdHBdOGaQOhdpDn
BX/2++cbgc8WLVeKkG2llDh5wFynYpHEw3b9W1Hq77BEDulTvCDtJCY=
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=/CN=Univerza v Ljubljani root CA
issuer=/CN=Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIQEoYALbJIqr1ErYgV3dRtUTANBgkqhkiG9w0BAQsFADAn
MSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTA3MDkx
NzExMTM0MFoXDTM3MDIyMjA4MTgyOVowJzElMCMGA1UEAxMcVW5pdmVyemEgdiBM
anVibGphbmkgcm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AMzkadWMUGjOQvgZY0lYcJpgSIqBS2OkNOz9dG4BCNd4wBlofCm/T1ITnzzCwcAi
U7XH74Vh4WGi06vz29ZkAJUPUS2SORQ6odDQZaM/bBXm781IkHvTdzEPS+g6T0h3
TlUPJ799RiIatN4BmbVYIgPLZjDMSvCiIIITgVOa6SWny1TcugB29oYEHwYTjOvy
lFLgX+xUDPZQPMliCa06ESf0RvLsCyV12YPVV2xcE7PQKjYfAh1vq1lhQRK55xS9
+DO1G0M5ORE8Vo/nJJYJ40yPDVLz14aQv/Ymf4ShQ6n+4eaS2zVrUMcQARhqUCe9
np5yqxs5e4Sw12tGq6k4/fUCAwEAAaN5MHcwCwYDVR0PBAQDAgGGMBIGA1UdEwEB
/wQIMAYBAf8CAQIwHQYDVR0OBBYEFKW3NpfvTtWqo6IRkz6Qy0HOJTN5MBAGCSsG
AQQBgjcVAQQDAgEBMCMGCSsGAQQBgjcVAgQWBBRfQzahJmMh4ePIvbWg/we6LNhv
tjANBgkqhkiG9w0BAQsFAAOCAQEACJDMsNOV1uu/PsSUoyst0kUZK40tb5nWkVB5
ViIDTymfNQnuL71L7W8WkoDLEmqOEQg8deElO6L6ArM/ChYWGskEPZmVHiMr4hhs
qJWIlb3gIxjBJpRojzBez/gc6GS0JlXl75VdcR7Vyy9FVIrggn2QTPaVXVZhtfYs
jowxRAA3qmzIdtcJwflq5P8V345DR2xL3IbiR1JucesDE0WF5fCHwL5qE4P69xar
UqmbrbbpmLn41CVyQ8kN+0vqqZzkBXsHUm7D59PMtN8vcbuUaQc2F94r5Vt4mvl5
otS9eMOoIlk5lVR8/rkIUK1egWdV/vDTNIkXPtx+sDfCMI3m/A==
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=/DC=si/DC=uni-lj/CN=Univerza v Ljubljani CA1
issuer=/CN=Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIHMDCCBhigAwIBAgITaQAAABapNxW/pNipaQABAAAAFjANBgkqhkiG9w0BAQsF
ADAnMSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTE3
MDIyMjExMjAwMloXDTI3MDIyMjExMzAwMlowTzESMBAGCgmSJomT8ixkARkWAnNp
MRYwFAYKCZImiZPyLGQBGRYGdW5pLWxqMSEwHwYDVQQDExhVbml2ZXJ6YSB2IExq
dWJsamFuaSBDQTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbaPNm
ESIDHezcWlwggjhmplQ6fFGqIyycPTKG7z1+p1cab4recx+nucyakKQu7Ky2dkf/
/musjNpv3548EAfNyL7o6GsxV8iCDk+CtKA8Dol7bs0jgIxGP258pMixYfj92M3D
i6pkYkArEIM16DGRPPXmujpDQnFxXfj3OYrHs/CeHwkrWADKK+D8hBJhfd4r8Hdj
5xofyAM30hcvdcBcFz9EVX2mi0RYYXRnnsJ34e+T8h8vymN3ViEmFqQAZYXXrmIp
H/KonhQpAH88z4K7qX7Ff0BLzlw5B7WZgQdwpyF+qMJfiqAEsIuyE+peB+iUY2F7
OPP1HiIepJQkO/7ZAgMBAAGjggQrMIIEJzASBgkrBgEEAYI3FQEEBQIDAwADMCMG
CSsGAQQBgjcVAgQWBBRtWAAl/z/lTl9BYlSPJ0KLGR0g+TAdBgNVHQ4EFgQU778m
uTua8OHZ97MEKbeYjkVJiqgwggLABgNVHSABAf8EggK0MIICsDCBkgYLKwYBBAGC
j0aDfQEwgYIwWAYIKwYBBQUHAgIwTB5KAFUATAAgAC0AIABDAGUAcgB0AGkAZgBp
AGMAYQB0AGkAbwBuACAAUAByAGEAYwB0AGkAYwBlACAAUwB0AGEAdABlAG0AZQBu
AHQwJgYIKwYBBQUHAgEWGmh0dHBzOi8vcGtpLnVuaS1sai5zaS9DUFMvMIGuBgsr
BgEEAYKPRoN9CjCBnjB0BggrBgEFBQcCAjBoHmYAVQBMACAALQAgAEwAbwB3ACAA
QQBzAHMAdQByAGEAbgBjAGUAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGkAbwBuACAA
UAByAGEAYwB0AGkAYwBlACAAUwB0AGEAdABlAG0AZQBuAHQwJgYIKwYBBQUHAgEW
Gmh0dHBzOi8vcGtpLnVuaS1sai5zaS9DUFMvMIG0BgsrBgEEAYKPRoN9FDCBpDB6
BggrBgEFBQcCAjBuHmwAVQBMACAALQAgAE0AZQBkAGkAdQBtACAAQQBzAHMAdQBy
AGEAbgBjAGUAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGkAbwBuACAAUAByAGEAYwB0
AGkAYwBlACAAUwB0AGEAdABlAG0AZQBuAHQwJgYIKwYBBQUHAgEWGmh0dHBzOi8v
cGtpLnVuaS1sai5zaS9DUFMvMIGwBgsrBgEEAYKPRoN9HjCBoDB2BggrBgEFBQcC
AjBqHmgAVQBMACAALQAgAEgAaQBnAGgAIABBAHMAcwB1AHIAYQBuAGMAZQAgAEMA
ZQByAHQAaQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQA
YQB0AGUAbQBlAG4AdDAmBggrBgEFBQcCARYaaHR0cHM6Ly9wa2kudW5pLWxqLnNp
L0NQUy8wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMBIG
A1UdEwEB/wQIMAYBAf8CAQEwHwYDVR0jBBgwFoAUpbc2l+9O1aqjohGTPpDLQc4l
M3kwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL3BraS51bmktbGouc2kvVW5pdmVy
emElMjB2JTIwTGp1YmxqYW5pJTIwcm9vdCUyMENBLmNybDBcBggrBgEFBQcBAQRQ
ME4wTAYIKwYBBQUHMAKGQGh0dHA6Ly9wa2kudW5pLWxqLnNpL1VuaXZlcnphJTIw
diUyMExqdWJsamFuaSUyMHJvb3QlMjBDQSgxKS5jcnQwDQYJKoZIhvcNAQELBQAD
ggEBALKDbKSZ67R0iWMHoLnupjE4acMWyBorvL598Yd3R8Uek/7KZSe6kot5a38Z
gnAlp4BwEvbWtSDKg/Z1ZWP8LCxWNl6+ahSf2PHr0qLzMAdESh4L6o1biyl1WFFB
NZVQYi6lRXvMQr9SU9CFzJa2S7z9LxRT3nvYTe1YIe3mzHC+ihDojhMSGAnUMP9Q
81Um4rHmG/1uHZ2tIEjf2QrLAOVsHli5O5AQT22pIItEeeMgqePm+rQfL3weLDaM
RyGqlIzbMMllxtrRskXTk5FL1aOKIz6uMu3mvQq5wiJf55zSNt9HZa7/yiBYWg3T
aip1SuTYt6m2lXhkrYyh4pM+vA4=
-----END CERTIFICATE-----

View File

@ -1,129 +0,0 @@
Bag Attributes
localKeyID: 01 00 00 00
Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
friendlyName: 11d916833353d4e6a0e3e0223469ef0e_63111073-f7cf-4958-98c2-f3cbe4c2691e
Key Attributes
X509v3 Key Usage: 10
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIsIAKFfvzkQ8CAggA
MBQGCCqGSIb3DQMHBAiiJuHiB+1AIQSCBMj5Kxp7qHNASWuw9+4Oq3S9GalUk+Zy
eawfgVyzdiZS3Hgn/6HkEYzlS/UNUDFO5x2dmXwlwNBx922+aFtniCxlXJOia3mM
9Vcc7A31Gj35+FlZRFkvgb6arAx/Kpkhzdh2pqy/uOXJ9ivZl25/k0onJEwLwyN9
l/E6scLCppryFr2qb3jElh5ysq2hUVrjr9jAZMeMSWzoefxsEqIh6wBkCmqmFpN0
HJOKaQxT43ocVYgQ/Wk8d5AdYp+ggKNjDYpyysZAhiNSL+RszogV0eZUNqc2YKoN
F7qZ+pgKp0+pWoEb2IEZVWmG0J54ed2elfxj02Q06PKkMGtbwZ+mN9ssAx3lYR6b
fdK6opfCKRceUOSjKvmDqzRXV5O5a15d957cNL/pDDecHQkDWM6Anufabe4uwSHb
owrbTXKVP8fwcI14WE+ovEJKruiFN2omV9uBM0tqsq3MQvCDSj+zuHVc1PSu03a2
H/Mlq9zzOwYVCVtyrv2iOVdtUyU3UPkReXuWsrGre+JbMpBsg9UFt4NVky1iaxnp
HTnVSRzSFAb3xMNQC66WDSA5OYDXqeW51zx01DDbORm5JB5oX8JQzVui3CW/Bey2
zyxf+1mVyk1hXjFN6ywiLquCn2XHJwKKet0sw0BLx1mPWBSxPhu6pDua3PsnZgqZ
DuzgP4zQ1CJsmmp4E6aw/h9E3167JBUBIjIH7hEeBE9V6Lolry4EyMETQwc4h/Mw
34yIbuDy9gO4tAFQrdH/FWCkZUy4TZ2kbkbTeQwiub4i4ZQ7B8stPtxp5kcMcPoq
hFTx/psC/fJ0qNsrTH06i24PyA7RFs5OX6re7XbHzz7NIzP1COgAMbS8fFnVn70B
1JVfDTFM/WITPxnyDv6GXjWwoEkz5sRp1VMZceFKTmQkv9OP9zA8MJzEshwrrsGa
0CAx3ePE3/X6dLwUpPVwHmoaGozthzVoU1F3kvom7X9oQ5rk2liWtsrzCB4GDe4Y
eEiS3mfeX4l6CyxV64PPiKDqhuN9nwiDVPGaUken9FRx+nLkGGaWY+h3GOhiuJvF
yAaF+hbIPNlXXuCFxZyntViEIS9sToqV9YH/s6n+MUBlQz5nhJFk/r0bl49Wtb3H
8CXqwoeXBdAuXGWj5n2TtAo3O9BTEIAj1kLO8dZqP0/j9Jiir7F8mJostr0PI6J7
3nXYGl0wVh+F+y1z8BNwriEdyYY1tE50MGPn4nI+iMHg3LD6o7qbtjGYvZs+qsYY
hcnNsrSjiSOLta4VBhwb9NR5g7p2qIUsyU1wLTB0m7Qrgfp2DrPZUVVoNjTGsEUz
QVIl4rSu63/GdFUqzL6ewFtnLewTB15zOv18VU4ySK9rjoXy/8eEgsAoXtL1/nMw
uhRUyErhkByrE0FLXbrjStFRtH95BEcdHuDg3dsmGAtnAfDet3xW5yjafU/c3K5o
rZmXGkkYLL0l/20Ony+0r3S6iD+cj/kfkP8MjCSSR1HUAwj0tM2ryfRyA6sdGdTy
jMEjxU0bF6NQywultEZgj3PTveRDOaALvcjAdeoz1jMQokcNldQBcvqlFe+Sm/LB
/60BOryGhyT3O3tD7s0ZBK3Pe93MQ2pap9K8AMWsCXccH7IwV6JSegKcLN6+6Cwq
ZnI=
-----END ENCRYPTED PRIVATE KEY-----
Bag Attributes
localKeyID: 01 00 00 00
friendlyName: Anketni sistem
subject=/C=SI/ST=Slovenija/L=Ljubljana/O=Univerza v Ljubljani/OU=USI UL/CN=Anketni sistem
issuer=/DC=si/DC=uni-lj/CN=Univerza v Ljubljani CA1
-----BEGIN CERTIFICATE-----
MIIGHDCCBQSgAwIBAgIKKrB/tgABAAAZnDANBgkqhkiG9w0BAQUFADBPMRIwEAYK
CZImiZPyLGQBGRYCc2kxFjAUBgoJkiaJk/IsZAEZFgZ1bmktbGoxITAfBgNVBAMT
GFVuaXZlcnphIHYgTGp1YmxqYW5pIENBMTAeFw0xNjAzMDQxMDI0MTFaFw0xNjA5
MTgxMzEwMzlaMH4xCzAJBgNVBAYTAlNJMRIwEAYDVQQIEwlTbG92ZW5pamExEjAQ
BgNVBAcTCUxqdWJsamFuYTEdMBsGA1UEChMUVW5pdmVyemEgdiBManVibGphbmkx
DzANBgNVBAsTBlVTSSBVTDEXMBUGA1UEAxMOQW5rZXRuaSBzaXN0ZW0wggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGMOIEuNGZCPOFiJ9zABUMXHdJqjxw
YH57iP1sL0oxnF5kKwar8aXQa390CVgz2QVdgy+9xIBi4Ar6VMafEX4o0fiLIbfj
Y5JMwO2szbhCFz7jZ6K4I3HJSLGTSDgkWpYdALvQh/VkB88WxE7Mrke6RDWFIBj3
d1T3vAnIs/6LDkGZFQWvo3kCuZ2ZOQAhz+OgMRrMApY+7yyT7xX34OfsqahGiEgm
J3fZz4UcsYMh+5H5/FNUwoWLlVea2MUTuZvHozJ36xX810hN0iZY9JdSIQNLvnns
RcNTsaIRBLY0zDFJCOhRATro1MIMNVUf7ki8MRMcPrTPvrBo75LnK5zrAgMBAAGj
ggLJMIICxTAOBgNVHQ8BAf8EBAMCBSAwHQYDVR0OBBYEFDYeEmDKCXDeyfVu9U1+
RiObob0UMD0GCSsGAQQBgjcVBwQwMC4GJisGAQQBgjcVCMDCSIfAgXCEwZMbg83O
R4LAnFOBE4GQ5yqF+O06AgFkAgEKMB8GA1UdIwQYMBaAFH2Q/3VZsyWUEyy6BWE8
XYZHJAuOMIIBFgYDVR0fBIIBDTCCAQkwggEFoIIBAaCB/oaBwmxkYXA6Ly8vQ049
VW5pdmVyemElMjB2JTIwTGp1YmxqYW5pJTIwQ0ExLENOPURDVjJVTCxDTj1DRFAs
Q049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmln
dXJhdGlvbixEQz11bmktbGosREM9c2k/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlz
dD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50hjdodHRwOi8v
cGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUyMHYlMjBManVibGphbmklMjBDQTEuY3Js
MIIBGAYIKwYBBQUHAQEEggEKMIIBBjCBuwYIKwYBBQUHMAKGga5sZGFwOi8vL0NO
PVVuaXZlcnphJTIwdiUyMExqdWJsamFuaSUyMENBMSxDTj1BSUEsQ049UHVibGlj
JTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixE
Qz11bmktbGosREM9c2k/Y0FDZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNl
cnRpZmljYXRpb25BdXRob3JpdHkwRgYIKwYBBQUHMAKGOmh0dHA6Ly9wa2kudW5p
LWxqLnNpL1VuaXZlcnphJTIwdiUyMExqdWJsamFuaSUyMENBMSgxKS5jcnQwDQYJ
KoZIhvcNAQEFBQADggEBAHAXeCr0YrSsDky25rW5coh3pydWyM+KRkNBoQyPEMCw
O5j9IzfZPsvC+MoCbnOFh5zm7/HXq/Y/gK3lIJgDFH6+AQyb+1dSSP1sROgVUBii
HtbSqeFxrZfhKRyfSmiFE5sBUify2/Uu/gh1O+v7Vqkf3GAIBvpZgPSKRR96LmRk
wtYNR8QnaUfULFD5+pl/7rsHri/vA+QhhticBgWHS14DphvVxGsmPXEJTDKSrMix
xdmV9V43azFNTe2oHR4kKAum8U3jNrCDQnQEvfHLgDPArC8gpx4hi5mM11vI702b
y3+5RblKV8dPJPepTseJnEN3gAenLAyLNBh5+iuQY70=
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=/CN=Univerza v Ljubljani root CA
issuer=/CN=Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIDLDCCAhSgAwIBAgIQZW6UqG+5n4NGQP8po52VbTANBgkqhkiG9w0BAQUFADAn
MSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTA3MDkx
NzExMTM0MFoXDTIzMDkxNzExMTM0MFowJzElMCMGA1UEAxMcVW5pdmVyemEgdiBM
anVibGphbmkgcm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AMzkadWMUGjOQvgZY0lYcJpgSIqBS2OkNOz9dG4BCNd4wBlofCm/T1ITnzzCwcAi
U7XH74Vh4WGi06vz29ZkAJUPUS2SORQ6odDQZaM/bBXm781IkHvTdzEPS+g6T0h3
TlUPJ799RiIatN4BmbVYIgPLZjDMSvCiIIITgVOa6SWny1TcugB29oYEHwYTjOvy
lFLgX+xUDPZQPMliCa06ESf0RvLsCyV12YPVV2xcE7PQKjYfAh1vq1lhQRK55xS9
+DO1G0M5ORE8Vo/nJJYJ40yPDVLz14aQv/Ymf4ShQ6n+4eaS2zVrUMcQARhqUCe9
np5yqxs5e4Sw12tGq6k4/fUCAwEAAaNUMFIwCwYDVR0PBAQDAgGGMBIGA1UdEwEB
/wQIMAYBAf8CAQIwHQYDVR0OBBYEFKW3NpfvTtWqo6IRkz6Qy0HOJTN5MBAGCSsG
AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBWqUMSqXIeTSgPLQ4CGQPr
2KxM0DOcJzOH0qHCO394HXpHEqIvhAZFM+G6/uNRLHSMwjWagqhPOKLKasQ1vIho
JBSHNTNTuceZv4aPV3ZOfkFw/Iuw9wmZZOEH6CkJz19K3h35akFK7ywOJFZKcP8N
4zkcGBo4OjIXVrKumeC5weEfSG4JEy5QjHaEZUxnFqmCoNgjbVaYavzgGfpHYnxX
JaUfRFB88LyWy1WslpJCEcrP/GopLpqLumeJQqaXpdJxbYPVhRT9U4F+8QlIhEP4
Q1h5QFCEDTuriKQw3PhrfU32u6pySzlpATKPe1teik6ND44QGapFqre8n1lpK4G3
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=/DC=si/DC=uni-lj/CN=Univerza v Ljubljani CA1
issuer=/CN=Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIExDCCA6ygAwIBAgIKYS95GQAAAAAAAzANBgkqhkiG9w0BAQUFADAnMSUwIwYD
VQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTA4MDkxODEzMDAz
OVoXDTE2MDkxODEzMTAzOVowTzESMBAGCgmSJomT8ixkARkWAnNpMRYwFAYKCZIm
iZPyLGQBGRYGdW5pLWxqMSEwHwYDVQQDExhVbml2ZXJ6YSB2IExqdWJsamFuaSBD
QTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+oaw3Bpw5MZIzeQk+
0qg90X/KjMNm9RQ0UPd2t4JBQG/vSD1moQXzFtGaKfInfmwoZ9Ty3+N96zbEcBc4
nTUj1cy66uuoD8vvZSBLyy4mMpgrsew9UTl4xwfT2vK5iidLEasrgXocDkJVHgJS
P+BOcBj3cNwzQ/VJcnG91F7SO84exR3ccmczYyDsyP0Guv7vJ3C9Ed4rxgd9qRjO
3ZBXQvGj9G9EWHE/TlMvem7K8jYTwExVDlLIw7v9dq4egRqWO+bDcyUNud9mRSna
kwHNLtyH9uxSfCaxta45q56Dh0OmliXp7GyH8KsyVbCYEf/mdB0Avg5AYjYB/pML
JTmVAgMBAAGjggHIMIIBxDASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBR9
kP91WbMllBMsugVhPF2GRyQLjjALBgNVHQ8EBAMCAYYwEAYJKwYBBAGCNxUBBAMC
AQEwIwYJKwYBBAGCNxUCBBYEFPfRJqs5+1zFn3LOydDjvuKD0/KmMBkGCSsGAQQB
gjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFKW3NpfvTtWqo6IRkz6Qy0HO
JTN5ME4GA1UdHwRHMEUwQ6BBoD+GPWh0dHA6Ly9wa2kudW5pLWxqLnNpL1VuaXZl
cnphJTIwdiUyMExqdWJsamFuaSUyMHJvb3QlMjBDQS5jcmwwWQYIKwYBBQUHAQEE
TTBLMEkGCCsGAQUFBzAChj1odHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUy
MHYlMjBManVibGphbmklMjByb290JTIwQ0EuY3J0MGQGA1UdIARdMFswWQYlKwYB
BAGCNxUIhIP5YofUrRaG6YExsakfhpmjZjWB1/Q9gvP3RDAwMC4GCCsGAQUFBwIB
FiJodHRwOi8vcGtpLnVuaS1sai5zaS9wa2lwb2xpY3kuaHRtMA0GCSqGSIb3DQEB
BQUAA4IBAQAB76/dNmCyr2JUhBiL25ptD1Lvp6Lli9dXZawVQssOU98TQ7y2RwtV
b7cSHkKnLQaeQEPpKJKEg63Xw6twPQLbxw6oaDeobyjVoXfCXWLeAVHY0KljHc0Y
t57Oj8/+w1qwP+hZQwJVSCtKsESMt4I3hV9lPX4zpk4Ux002cpcqNwtDh6dUnBi0
ZBe/CL/gl7Q72W45jwOHO8wSqG4nA2dkJ3OqFDT4zsPSAVGcKC680hTEHuSleH/N
b1mXDC2WBfZrxSLKRWfbE9W3RLTaBeCbcfYNmSSS5yuOHrODGGeFEUBklDBxafCH
S8LZIZl8TsQsxSYKTM6MJdNcIvuiqeWb
-----END CERTIFICATE-----

View File

@ -1,128 +0,0 @@
Bag Attributes
localKeyID: 01 00 00 00
friendlyName: te-d166257a-9c5f-41a7-bb7b-1c993734e439
Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
Key Attributes
X509v3 Key Usage: 10
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIFWVqlH4k/CkCAggA
MBQGCCqGSIb3DQMHBAiQmgzuNpPipASCBMiW9CAnME4Q9xWznf5ntNT85PqllMzT
sAKvfvuWbTP4YEwDuuZNRIIDrZQjxs8k1Hd5P1WxIXvvpvkBHU+iVPq5AAvjaZnr
yt9pKOYZDu9StAom9ZbgRKHVLqn1HkHZEjS/6rlrcrha7nwRrAupvunvrGT/kYI/
B3N+R/muVedHWocTVP+wad5AjbHZiaIzMb6dAekCwj7QDfvj/sYhaXEUI5KfnKb/
l7Vc8pivjMlvHTX00UpqT9lRe1egkbj39GWxKMWkKpFyiPnPyurajFp8QrvR1pFJ
Mp96UDXb812QzNELLv1JiHYJzBbMMtYgjyyphKXt3entHbJUPjKELuAqnylVYe1K
WsbUK8afv84QJ60YnirGLr5H4IwXTeAlv7bPrbOPzTsTx8XCSW4wpiyElI4jOGQG
vtRmZerGA9X5C+8uRgf0XsZp9SivKJHnpCSIuAHe6GpUvWWvjCXrfHrsgTbG8+DX
O1aj+WmN9x0QprrkQia8QaL288zPA8V8xKbrE9S8XdDtulTbH6o1tTgvDiUQS6wo
4S+02cFTTbTbX8eSgXLB0JH7SzeaC6KBpICdN1bmTrQW9KVfA1pDpQhqna7UPwza
OhLAnYHdnUyVh/PE1FpOYKB2iyjDh8Vaoglpoh0pE/2QiDzR7DabyjnOfJmPCu4a
jghKdAFJ9BIv3VocrPeUApkqPNxmild4lhJQ4GG63w7wjiq08gcnELHhzQZQUnO3
3Ag7mfYwGNZcnrBrlo8OcWfg5GsraSSgljKgLhaaR6PFCvOR9A+w3ITc1+AdFkT1
rdkKHnd7QrmEty9qTWGTrpa3RDZ8p4aBcZZWTYZOiQfnT2qDcB/dlRcLkmrTwnYW
EHRF2YWvqrR6UkX9XEP+M1aLRk17VuodBYfT4zqMuLdRGXdttv3QPU4WZlPqxk9I
aoPgrmpQvVdwXIYuJRjWocseMN5ATAf43o7GMn9h6rai0fyZ2hN5tb5QqVaksImR
eOCXsOpVXHfThPC7OhRvo+jjj57fF6k2WNUNT5svw6GYCMWWTwmXVhjdAmBJVqGE
40eCfU4SMrmIjbNghhUGC1gUyL3qF/IM9WVNIv5hvQyWiittz8cwN5GKSnPy2cq8
8Z7xkdx7U7qJzzkOlF1i9i0/Adm9X9oM5F3lQ8w3lM0Tpt0K0z+nYd05O7s7KuPA
PIbvdR2beQWAX4eQcDE00NH9b45kWMlRcaMvZYiGJ2timdzOiKwLMtKV+NAhvVtZ
FGW85tTI4v+xXm8DQtP+XW6ILPBvISItN+OuLr8vlL52kyi9BHKwbizHNKSEBten
A3D4bOb+uYzvEVEhQqWAH7NIqlBFI6HDkE8rC/aDuhHTT0Wwj4DPgrYmJp/j+Gxc
Jef3lzHHYVpXKLtwGQW8yFtGmr3FZCkRQ1z7Zzn0CoROayK6a0TS+3KxRdiWFp/e
F6ep1QsYosnoeavXi2DpeRmr4TgfPFOIwLzWihImSkymboXThdasv9IKQ+DcKJC6
m2/LIgUQXo6wA9E8oVboHWDPdMU60NdLPOq7b2Wq6CAGowRj6iHfmwUIm1sV/MkG
zH+wakPl6q1q8mzytGn/Ynbbw4vFalq0rtvlfNo/5wGBvFQ5bxlLYq7gzENBgebw
K4U=
-----END ENCRYPTED PRIVATE KEY-----
Bag Attributes
localKeyID: 01 00 00 00
friendlyName: Anketni sistem
subject=/C=SI/ST=Slovenija/L=Ljubljana/O=Univerza v Ljubljani/OU=USI UL/CN=anketnisistem.uni-lj.si/emailAddress=helpdesk@uni-lj.si
issuer=/DC=si/DC=uni-lj/CN=Univerza v Ljubljani CA1
-----BEGIN CERTIFICATE-----
MIIGSTCCBTGgAwIBAgIKH5/KIQACAAAbDDANBgkqhkiG9w0BAQUFADBPMRIwEAYK
CZImiZPyLGQBGRYCc2kxFjAUBgoJkiaJk/IsZAEZFgZ1bmktbGoxITAfBgNVBAMT
GFVuaXZlcnphIHYgTGp1YmxqYW5pIENBMTAeFw0xNjA5MjAxNDM3NDlaFw0xODA5
MjAxNDQ3NDlaMIGqMQswCQYDVQQGEwJTSTESMBAGA1UECBMJU2xvdmVuaWphMRIw
EAYDVQQHEwlManVibGphbmExHTAbBgNVBAoTFFVuaXZlcnphIHYgTGp1YmxqYW5p
MQ8wDQYDVQQLEwZVU0kgVUwxIDAeBgNVBAMTF2Fua2V0bmlzaXN0ZW0udW5pLWxq
LnNpMSEwHwYJKoZIhvcNAQkBFhJoZWxwZGVza0B1bmktbGouc2kwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsYD67NJ2FAm2Zv1BI2jjbLngiLPlRhYEc
b6cF3dBntLpL93gucpge01x0vNj3Yt7biT97l1S7IVMMxM5GAkgVlBxrX7mletXF
enTcTE5R8TtTicPXi2U/Fh/BilECSEiRep6COYWMQELK+y82K7gvjM0RrOdR7U6L
eCDoCJy6GFbt8ZYOj16a9yiTyGKmu+kKFivL/mIYK+6rvVNVqLb/kQ2upukqYt+D
srDpNtV0e3i7may0U0HYIDUr2ZrJ+/4YR9jBHGaiFw9KehLU1NyraObeYgXZJax5
JNvnOxM0/zDCUaUWFRek6Fy0UEVjUjxuxyXvprF211eEUBqvWI9lAgMBAAGjggLJ
MIICxTAOBgNVHQ8BAf8EBAMCBSAwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUI
wMJIh8CBcITBkxuDzc5HgsCcU4ETgZDnKoX47ToCAWQCAQowHQYDVR0OBBYEFL+Z
D2g3oHTAcNsxcTPZt3XJTHCZMB8GA1UdIwQYMBaAFH2Q/3VZsyWUEyy6BWE8XYZH
JAuOMIIBFgYDVR0fBIIBDTCCAQkwggEFoIIBAaCB/oaBwmxkYXA6Ly8vQ049VW5p
dmVyemElMjB2JTIwTGp1YmxqYW5pJTIwQ0ExLENOPURDVjJVTCxDTj1DRFAsQ049
UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJh
dGlvbixEQz11bmktbGosREM9c2k/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdD9i
YXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50hjdodHRwOi8vcGtp
LnVuaS1sai5zaS9Vbml2ZXJ6YSUyMHYlMjBManVibGphbmklMjBDQTEuY3JsMIIB
GAYIKwYBBQUHAQEEggEKMIIBBjCBuwYIKwYBBQUHMAKGga5sZGFwOi8vL0NOPVVu
aXZlcnphJTIwdiUyMExqdWJsamFuaSUyMENBMSxDTj1BSUEsQ049UHVibGljJTIw
S2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz11
bmktbGosREM9c2k/Y0FDZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRp
ZmljYXRpb25BdXRob3JpdHkwRgYIKwYBBQUHMAKGOmh0dHA6Ly9wa2kudW5pLWxq
LnNpL1VuaXZlcnphJTIwdiUyMExqdWJsamFuaSUyMENBMSgyKS5jcnQwDQYJKoZI
hvcNAQEFBQADggEBAD/P6PxRaSsTI3/18x6MNLNsD+djNfb7Yy1D4NMVvKgbbKWc
O/jCX8i+GLMXMCQgfLL1sdDA9W4RwIN1ReKbJLN0531XBcU8Ukj9F5y3wFCZ+hcJ
79n/c3FEbwJXzLl2E0pavluuwcrxyoRRZIhR9JggObMdir8/b0CyGAeyKa4H3g53
hluWhGdjPs5h3p1F4C1o6U8rXllIzIn8/3lLyEk5DbuE0oR6F4QQccR/1irUyx12
QwbEHbLmfl6pphhuUTATkhgrMs2bLx9QJj4uwEeZR0r8Whs7lCD/lFRSok8KTd3G
kNPjJK2LDidzZW/WqBevi86+3i+poVRIPTcBcBg=
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=/CN=Univerza v Ljubljani root CA
issuer=/CN=Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIDLDCCAhSgAwIBAgIQZW6UqG+5n4NGQP8po52VbTANBgkqhkiG9w0BAQUFADAn
MSUwIwYDVQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTA3MDkx
NzExMTM0MFoXDTIzMDkxNzExMTM0MFowJzElMCMGA1UEAxMcVW5pdmVyemEgdiBM
anVibGphbmkgcm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AMzkadWMUGjOQvgZY0lYcJpgSIqBS2OkNOz9dG4BCNd4wBlofCm/T1ITnzzCwcAi
U7XH74Vh4WGi06vz29ZkAJUPUS2SORQ6odDQZaM/bBXm781IkHvTdzEPS+g6T0h3
TlUPJ799RiIatN4BmbVYIgPLZjDMSvCiIIITgVOa6SWny1TcugB29oYEHwYTjOvy
lFLgX+xUDPZQPMliCa06ESf0RvLsCyV12YPVV2xcE7PQKjYfAh1vq1lhQRK55xS9
+DO1G0M5ORE8Vo/nJJYJ40yPDVLz14aQv/Ymf4ShQ6n+4eaS2zVrUMcQARhqUCe9
np5yqxs5e4Sw12tGq6k4/fUCAwEAAaNUMFIwCwYDVR0PBAQDAgGGMBIGA1UdEwEB
/wQIMAYBAf8CAQIwHQYDVR0OBBYEFKW3NpfvTtWqo6IRkz6Qy0HOJTN5MBAGCSsG
AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBWqUMSqXIeTSgPLQ4CGQPr
2KxM0DOcJzOH0qHCO394HXpHEqIvhAZFM+G6/uNRLHSMwjWagqhPOKLKasQ1vIho
JBSHNTNTuceZv4aPV3ZOfkFw/Iuw9wmZZOEH6CkJz19K3h35akFK7ywOJFZKcP8N
4zkcGBo4OjIXVrKumeC5weEfSG4JEy5QjHaEZUxnFqmCoNgjbVaYavzgGfpHYnxX
JaUfRFB88LyWy1WslpJCEcrP/GopLpqLumeJQqaXpdJxbYPVhRT9U4F+8QlIhEP4
Q1h5QFCEDTuriKQw3PhrfU32u6pySzlpATKPe1teik6ND44QGapFqre8n1lpK4G3
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=/DC=si/DC=uni-lj/CN=Univerza v Ljubljani CA1
issuer=/CN=Univerza v Ljubljani root CA
-----BEGIN CERTIFICATE-----
MIIEXjCCA0agAwIBAgIKEcQlBgAAAAAAFDANBgkqhkiG9w0BAQUFADAnMSUwIwYD
VQQDExxVbml2ZXJ6YSB2IExqdWJsamFuaSByb290IENBMB4XDTE2MDkwMTE0MTc1
NloXDTIzMDkxNzExMTM0MFowTzESMBAGCgmSJomT8ixkARkWAnNpMRYwFAYKCZIm
iZPyLGQBGRYGdW5pLWxqMSEwHwYDVQQDExhVbml2ZXJ6YSB2IExqdWJsamFuaSBD
QTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+oaw3Bpw5MZIzeQk+
0qg90X/KjMNm9RQ0UPd2t4JBQG/vSD1moQXzFtGaKfInfmwoZ9Ty3+N96zbEcBc4
nTUj1cy66uuoD8vvZSBLyy4mMpgrsew9UTl4xwfT2vK5iidLEasrgXocDkJVHgJS
P+BOcBj3cNwzQ/VJcnG91F7SO84exR3ccmczYyDsyP0Guv7vJ3C9Ed4rxgd9qRjO
3ZBXQvGj9G9EWHE/TlMvem7K8jYTwExVDlLIw7v9dq4egRqWO+bDcyUNud9mRSna
kwHNLtyH9uxSfCaxta45q56Dh0OmliXp7GyH8KsyVbCYEf/mdB0Avg5AYjYB/pML
JTmVAgMBAAGjggFiMIIBXjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBR9
kP91WbMllBMsugVhPF2GRyQLjjALBgNVHQ8EBAMCAYYwEAYJKwYBBAGCNxUBBAMC
AQIwIwYJKwYBBAGCNxUCBBYEFKPNqFhEdzmJypggG2UpXthYZuWjMBkGCSsGAQQB
gjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFKW3NpfvTtWqo6IRkz6Qy0HO
JTN5ME4GA1UdHwRHMEUwQ6BBoD+GPWh0dHA6Ly9wa2kudW5pLWxqLnNpL1VuaXZl
cnphJTIwdiUyMExqdWJsamFuaSUyMHJvb3QlMjBDQS5jcmwwWQYIKwYBBQUHAQEE
TTBLMEkGCCsGAQUFBzAChj1odHRwOi8vcGtpLnVuaS1sai5zaS9Vbml2ZXJ6YSUy
MHYlMjBManVibGphbmklMjByb290JTIwQ0EuY3J0MA0GCSqGSIb3DQEBBQUAA4IB
AQC1e/YRYXA/I0xyHzD2QehR75ocsG8/keScVVUrqvnYBo0GDT6iK9bdss0uepOP
jzF+mK0uupJUWWl2vgeMbj8BTV7aOQv8WXoLBGtH7fj8/RifhJwv0MF6UfQiUAbr
QieYTbFJNMBdFZlUO0POiVt6kCWHjTBtVsltSLSV6Z3WWN4wvVZYI6itePjIHk4q
H/Y4dCKY39sn3kiBC/2wx81ggnJZOMnb0qw/tAcYKyIvrC+SCaQK1YaILPuLm9dN
lzz48uq2cCBd2a/p+O2BSAU9HvMo4SgnC7spWYxp+CDjRP1D2L8mgcB9OHgcMkpw
kVeOAJOXttvLoy84UGStT8Of
-----END CERTIFICATE-----

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -1,196 +0,0 @@
<?php
include( dirname(__FILE__) . '/../../../../function.php' );
include( dirname(__FILE__) . '/../../PHPmailer5.2/class.phpmailer.php' );
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
echo '<head>';
echo '<title>Pošiljanje rezultatov</title>';
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
echo '</head>';
echo '<body>';
$type = (isset($_GET['type'])) ? $_GET['type'] : 0;
$m = new Mailer();
if($type == 1)
$m->do_it_predmeti();
else
$m->do_it_izvajalci();
echo '</body>';
echo '</html>';
class Mailer {
// Posiljanje izvajalcem
function do_it_izvajalci () {
mysqli_set_charset($GLOBALS['connect_db'], "UTF8");
$start = microtime(true);
//$sql = sisplet_query("SELECT * FROM eval_pdf_mailer_izvajalci ORDER BY v1 ASC");
$sql = sisplet_query("SELECT * FROM eval_pdf_mailer_izvajalci WHERE v6 LIKE '%vasja.vehovar%' or v6 LIKE '%berce%' or v6 LIKE '%podnar%' ORDER BY v1 ASC");
if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
while ($row = mysqli_fetch_array($sql)) {
//$email = trim($row['v6']);
$email = 'peter@1ka.si';
$name = trim($row['v4']);
$attachment_name = trim($row['v5']);
$subject = 'Evalvacijsko Poročilo: '.$name.' 2015/2016';
if ($email != '') {
$this->send_mail($email, $name, $attachment_name, $subject);
$end = microtime(true);
echo 'POŠILJAM: na email '.$email.' za ime '.$name.' in priponko '.$attachment_name.', ' . $subject;
echo '<br />Čas pošiljanja: '.round($end - $start, 2).'s<br />';
}
}
}
// Posiljanje za predmete
function do_it_predmeti () {
$start = microtime(true);
$sql = sisplet_query("SELECT * FROM eval_pdf_mailer_predmeti ORDER BY v1 ASC");
//$sql = sisplet_query("SELECT * FROM eval_pdf_mailer_predmeti WHERE v8 LIKE '%vasja.vehovar%' ORDER BY v1 ASC");
if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
while ($row = mysqli_fetch_array($sql)) {
$email = trim($row['v8']);
//$email = 'peter@1ka.si';
$name = trim($row['v6']);
$predmet = trim($row['v4']);
$attachment_name = trim($row['v7']);
$subject = 'Poročilo';
if ($email != '') {
$this->send_mail($email, $name, $attachment_name, $subject);
$end = microtime(true);
echo "POŠILJAM: na email $email za ime $name in priponko $attachment_name, " . $subject;
echo '<br />Čas pošiljanja: '.round($end - $start, 2).'s<br />';
}
}
}
function send_mail($to, $to_name, $attachment, $subject) {
if (trim($to) == '') return;
$mail = new PHPMailer;
#$mail->IsSMTP(); // Set mailer to use SMTP
$mail->Host = 'mail.fdv.uni-lj.si'; // Specify main and backup server
#$mail->Host = 'mail.sisplet.org'; // Specify main and backup server
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'anketa'; // SMTP username
#$mail->Username = 'ul1kasi'; // SMTP username
$mail->Password = 'anketa2013fdv'; // SMTP password
#$mail->Password = 'masovka'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$mail->CharSet = 'UTF-8';
$mail->From = 'anketa@fdv.uni-lj.si';
#$mail->From = 'ul@1ka.si';
$mail->FromName = 'Anketa';
$mail->AddAddress($to, $to_name); // Add a recipient
#$mail->AddAddress('ellen@example.com'); // Name is optional
#$mail->AddReplyTo('peter@1ka.si', 'Peter Hrvatin');
#$mail->AddReplyTo('ul@1ka.si', 'Anketa');
$mail->AddReplyTo('anketa@fdv.uni-lj.si', 'Anketa');
#$mail->AddCC('cc@example.com');
#$mail->AddBCC('peter@1ka.si');
// Set word wrap to 50 characters
$mail->WordWrap = 50;
// Add attachments
if (file_exists(dirname(__FILE__) . '/pdf/' . $attachment))
$mail->AddAttachment( dirname(__FILE__) . '/pdf/' . $attachment );
else
echo ' -- no attachment ('.dirname(__FILE__) . '/pdf/' . $attachment.') ';
#$mail->AddAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
$mail->IsHTML(true); // Set email format to HTML
$mail->Subject = $subject;
/*$mail->AddEmbeddedImage('fgg_logo.jpg', 'logo', 'fgg_logo.jpg');
$mail->AddEmbeddedImage('okolje.jpg', 'okolje', 'okolje.jpg');*/
$mail->Body =
'<p>Spoštovana kolegica, spoštovani kolega!</p>
<p>Podobno kot lani smo tudi v študijskem letu 2014/2015 pripravili analizo študentske ankete. Kot veste, je vsebino in obliko te ankete predpisala Univerza v Ljubljani (pravilnik: https://www.uni-lj.si/o_univerzi_v_ljubljani/organizacija__pravilniki_in_porocila/predpisi_statut_ul_in_pravilniki/2014092609210542/). Sodelovanje v anketi je bilo prostovoljno.</p>
<p>Pošiljamo ocene vašega dela pri premetih, kjer ste bili (so)izvajalec. Ocene bodo prejeli tudi skrbniki programov z oznako poslovne tajnosti in s pravnim obvestilom o varovanju podatkov - vendar brez odprtih komentarjev in samo za ocene, ki temeljijo na vsaj 4. enotah. Del poročila so tudi metodološka pojasnila, kjer so opisane podrobnosti interpretacije rezultatov anket.</p>
<p>Ob koncu drugega semestra boste prejeli nove izpise, kjer bodo vključeni rezultati tako prvega kot tudi drugega semestra.</p>
<p>V primeru metodoloških vprašanj smo vam na voljo za pojasnila, vprašanja lahko posredujete kot odgovor na prejeto sporočilo.</p>
<p>red. prof. dr. Rado Bohinc</p>
<p>Dekan FDV</p>';
$mail->AltBody =
'<p>Spoštovana kolegica, spoštovani kolega!</p>
<p>Podobno kot lani smo tudi v študijskem letu 2014/2015 pripravili analizo študentske ankete. Kot veste, je vsebino in obliko te ankete predpisala Univerza v Ljubljani (pravilnik: https://www.uni-lj.si/o_univerzi_v_ljubljani/organizacija__pravilniki_in_porocila/predpisi_statut_ul_in_pravilniki/2014092609210542/). Sodelovanje v anketi je bilo prostovoljno.</p>
<p>Pošiljamo ocene vašega dela pri premetih, kjer ste bili (so)izvajalec. Ocene bodo prejeli tudi skrbniki programov z oznako poslovne tajnosti in s pravnim obvestilom o varovanju podatkov - vendar brez odprtih komentarjev in samo za ocene, ki temeljijo na vsaj 4. enotah. Del poročila so tudi metodološka pojasnila, kjer so opisane podrobnosti interpretacije rezultatov anket.</p>
<p>Ob koncu drugega semestra boste prejeli nove izpise, kjer bodo vključeni rezultati tako prvega kot tudi drugega semestra.</p>
<p>V primeru metodoloških vprašanj smo vam na voljo za pojasnila, vprašanja lahko posredujete kot odgovor na prejeto sporočilo.</p>
<p>red. prof. dr. Rado Bohinc</p>
<p>Dekan FDV</p>';
/*$mail->AltBody =
'<p>Spoštovani!</p>
<p>V priponki pošiljamo pilotne rezultate univerzitetne študentske ankete v zimskem semestru 2014/2015.</p>
<p>Vsebino in obliko ankete je predpisala Univerza v Ljubljani. Sodelovanje študentov v anketi je bilo prostovoljno; podrobnosti so v metodoloških pojasnilih.</p>
<p>Ker gre za pilotno izvedbo, prosimo, da z nami delite vaše mnenje. Predvsem nas zanima, ali so poročila dovolj razumljiva.</p>
<p>Vse metodološke pripombe, komentarje, predloge izboljšav ipd., sporočite neposredno na <a href="https://www.1ka.si/KUL">https://www.1ka.si/KUL</a>.</p>
<p>Za vprašanja v zvezi z anketo in študijskim procesom na FGG pa se obrnite na <a href="mailto:mojca.lorber@fgg.uni-lj.si">mojca.lorber@fgg.uni-lj.si</a>.</p>
<p>Hvala in lep pozdrav,</p>
<p>Referat za študijske zadeve UL FGG.</p>';*/
if(!$mail->Send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}
echo 'Message has been sent ('.$to.' '.$to_name.')<br>';
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -1,2 +0,0 @@
*
!.gitignore

View File

@ -1,854 +0,0 @@
# Created by Miha 2015. Updated by Miha 22.7.2019 in parts in progress!!!! #
# PREVERI!!!!!!!!!!!
#-------------------- SET WORKING DIREKTORY -----------------------#
# Check which PC we are working from: WORk OR HOME
fpath <- file.path("C:/MIHA DELO/FDV PROJEKT EVALVACIJE UL/EVLAVACIJE 2018_2019 UPDATED")
if (!dir.exists(fpath)){
output_dir <- "E:/Work/Vasja Vehovar/EVLAVACIJE 2018_2019 UPDATED"
setwd(output_dir)
} else {
setwd(fpath)
}
#------------------ //SET WORKING DIREKTORY// ---------------------#
#########################################
# KRATEK OPIS STRUKTURE POROÈIL IN KODE #
#########################################
# Poroèilo je sestavljeno na podlagi R kode (izraèuni) in latex kode (.tex, struktura poroèil)
# Vhodne datoteke se nahajajo v mapi "temp", kjer sta dve loèeni datoteki s podatki za +
# ANKETO PRED IZPITOM in ANKETO PO IZPITU
# V mapi se nahajajo tudi šifranti (ki služijo opredelitvi izvajalcev fakultete, predmetov, +
# naèina študija, študijskih programov), itd: +
# Podrobno preberi: http://ul.1ka.si/index.php?fl=2&lact=1&bid=40&parent=3
# V poroèilu so ocenjene, obarvane in v tabelah predstavljene vrednosti komponent za izvajalca, +
# vrednosti komponent predmetov PRED izpitom in vrednosti komponent PO izpitu.
#' @param Komponente za izvajalca so: Kakovost, Pripravljenost, Razumljivost, Zanimivost, Kritiènost, Korektnost
#' @param Komponente predmeta (ANKETA PRED): Zadovoljstvo, Usklajenost, Samostojnost, Literatura, Obvešèenost, Info. na spletu, Preverjanje
#' @param Komponente predmeta (ANKETA PO):Vsebine, naloge, Ocenjevanje, Kompetence, Ustreznost Kreditnih toèk
########
# OSNOVNA SKIPTA #
#================#
#' skripta: @name 00_dataanalysis.R je osnova (ki jo vedno najprej poženemo) in je namenjena opredelitvi +
# spremenljivk, vektorjev, podatkovnih okvirjev in izraèunu povpreèij, kvantilnih rangov, +
# obarvanju, itd.
# Obarvanja povpreèij komponent in kvantilnih rangov opredelimo v skkripti funkcije.R
# Skripto tabelaBy.r pa uporabimo samo pri izpisu PDF za izvajalca. Pri izpisu za programe, fakulteto tega ne uporabljamo.
# Ko smo pognali skrpto kodo.r, lahko generiramo poroèilo za izvajalce, tako da poženemo +
# skirpto koda-izvajalec_predmet.r.
# Skripta koda-fakulteta.r služi generiranju poroèila za fakulteto.
# Skripta koda-programi pa generira poroèila za študijske programe.
########
# Glavo dokumenta, obarvanje vrednosti, širino tabel, rotiranje stolpcev, +
# nove strani, poglavja, kazalo itd. generiramo s pomoèjo latex kode, ki je +
# prenesena v R.
# V mapi latexkosi so denifirane tex. datoteke, ki so namenjene generiranju +
# glave (prva stran, kazalo) in noge (zakljuèek) poroèila
### Poroèilo za izvajalca: glavno dokumenta definira tex datoteka a-glava.tex, +
#' ki jo preberemo v skripti @nam07_PDF_izvajalec.r
### Poroèilo za fakulteto: glavo dokumenta definira tex datoteka
# a-glava-program.tex (glej skripto koda-fakulteta.r)
### Excel datoteka "navodila" je narejena s strani programerja in +
# služi opredelitvi anketnih vprašanj za izvajalca, ter predmete (ANKETA PRED IN PO IZPITU) +
# oz. komponent, po katerih raèunamo povpreèja, kvantilne range, itd.
#----------------------- //KRATEK OPIS STRUKTURE POROÈIL// -----------------------------------#
#---------------------- 1KA strežnik -------------------------#
# Del, ki ga potrebuje Peter, da generira ustrezno poroèilo
# za posamezno fakulteto na strežniku
# Tega trenutno ne rabimo
#params <- commandArgs(trailingOnly = TRUE)
#ID <- params[1]
#---------------------- //1KA strežnik// ---------------------#
#------------- List packages we need -----------------#
# List packages we want
# install packages from CRAN
p_needed <-
c("tools",
"psych",
"Hmisc",
"reports",
"fmsb",
"car",
"Cairo",
"openxlsx",
"qpcR",
"rio",
"dplyr") # import data (trendi fakulteta)
## Install new packages
packages <- rownames(installed.packages())
p_to_install <- p_needed[!(p_needed %in% packages)]
if (length(p_to_install) > 0) {
install.packages(p_to_install)
}
# Load the packages
lapply(p_needed, require, character.only = TRUE)
#------------ //List packages we need// --------------#
#---------------------------- DEFINE FACULTY ID -------------------------------#
# Opredelimo ID fakultete, ki skrbi za to da se v poroèilu (kjer je dogovorjeno)
# izpiše kratice fakultete, ime fakultete ter izriše logo fakultete.
# (glej poroèilo za izvajalca, ki ga generira R. skripta koda-izvajalec_predmet)
# ID skrbi tudi, da preberemo ustrezne CSV datoteke za ustrezno Fakulteto.
# Ko se koda prenese na strežnik ID zakomentiramo, saj ga Peter ne Potrebuje
ID <- 3000025
fakulteta <- ""
ime.fakultete <- ""
source("Evalvacija/R/02_IDfaculty.R", encoding = "UTF-8")
#-------------------------- //DEFINE FACULTY ID// -----------------------------#
# ----------------------------- CUSTOM DEFINED FUNCTIONS ------------------------------#
# Naložimo dodatne funkcije (obarvanje povpreèja + generiranje tabel v
# poglavju Analiza predmeta po programih in letnikih:
# glej poroèilo za izvajalca )
#' Èe želimo spremeniti barvo, moramo novo barvo defnirati v:
#' skripti @name funkcije.r in v @name tex. datotekah (npr za izvajalca: @a-glava.tex )
#' @POMEMBNO!!! v 01_funkcije.r opredelimo minimalno število enot na podlagi katerega
#' prikažemo vrednosti povpreèij.
source('Evalvacija/R/funkcije/01_funkcije.r', encoding = "UTF-8")
#' Funkcije, ki vodo skrbele za @Agregate in Trende
source('Evalvacija/R/funkcije/agregati_funkcije.r', encoding = "UTF-8")
# --------------------------- //CUSTOM DEFINED FUNCTIONS// ----------------------------#
#--------- WARNINGS ----------#
options(nwarnings = 10000)
# ignore these warnings:
# "[DATA NOT ENOUGH] at 3 NA" <- fmsb::radarchart ne more naredit radar grafa predmeta ker ni vsaj 3 vrednosti za ocene komponent predmeta
# "In FUN(newX[, i], ...) : no non-missing arguments to min; returning Inf/-Inf" <- ne more izraèunat min in max ker je n=0
#------- //WARNINGS// --------#
# --------------------------------- FOLDERS FOR OUTPUT ---------------------------------------#
# Ustvarimo mapo, kjer se bodo shranjevale slike (grafi, histogrami, barploti)
# PDF Slike grafov izvajalca
dir.create(paste0("Evalvacija/results/",fakulteta), showWarnings = FALSE)
dir.create(paste0("Evalvacija/results/",fakulteta,"/part-izvajalec-slike"), showWarnings = FALSE)
# PDF Slike grafov za predmet
dir.create(paste0("Evalvacija/results/",fakulteta,"/part-predmet-slike"), showWarnings = FALSE)
# Mapa, kamor se bodo shranjevali PDF-ji Študijskih praks (praksa, trendi prakse za èlanico)
dir.create(paste0("Evalvacija/results/",fakulteta,"/praksa"), showWarnings = FALSE)
# Folder kamor bomo shranjevlai podatke za agregate, ki pridejo v upoštev pri poroèilu
# za fakulteto in program
dir.create(paste0("Evalvacija/results/",fakulteta,"/Agregati"), showWarnings = FALSE)
# Folder, kjer se bodo generirali Trendi za izvajalca
dir.create(paste0("Evalvacija/results/",fakulteta,"/Trendi"), showWarnings = FALSE)
# Trendi za habilitacijsko komisijo na nivoju izvaajalca
# Gre za enako poroèilo kot v primeru Trendov z aizvajalca, le, da so v tem poroèilu
# Še tabele IPP (ocene izvajalca pri predmetih) in odprti odgovori študentov za IPP
dir.create(paste0("Evalvacija/results/",fakulteta,"/Habilitacijska"), showWarnings = FALSE)
# Folder, kjer se bodo generirala poroèila za študijske programe
dir.create(paste0("Evalvacija/results/",fakulteta,"/Programi"), showWarnings = FALSE)
# ------------------------------- //FOLDERS FOR OUTPUT// -------------------------------------#
#---------------------------------------- IMPORT AND PREPARE DATA -----------------------------------------#
#!!!!!! OLD (vèasih somo to delali iz SPSS baze (2014) zato smo) ohranili datoteko "navodila.xlsx"
# V navodilih so opredeljene komponente in definirana imena vprašanj +
# ankete 1KA za izvajalca (npr. IZPOUC1) in za predmet (npr. IZPREDa)
# Vrstice predstavljajo komponente za izvajalca in za predmete.
# Definirana so tudi imena komponent, ki jih zapišemo v latex tabelah +
# (stolpec: ime.kratko) ter celotna imena komponent oz. anketnih vprašanj
# (glej stolpec: ime.dolgo)
# V navodilih so opredeljene spremenljivke, ki se nanašajo na spremenljivke v bazi
# (anketa pred in anketa po izpitu) ter dodana nova imena teh spremenljivk,
# ki smo jih generirali sami zaradi lažjega in hitrejšega pisanja nadalnje kode
# (klicanje teh spremenljivk, ki se raèunajo)
# Glej excel navodila!!!
navodila <-
openxlsx::read.xlsx(xlsxFile = "Evalvacija/temp/navodila.xlsx",
colNames = TRUE,
rowNames = TRUE)
# Preberemo vhodne datoteke Fakultete glede na ID, ki smo ga opredelili #
# Vse vhodne podatke pripravi Peter oziroma dobim na naslovu:
# https://anketa.uni-lj.si/student//index.php
# V študijskem letu 2016/2017 je prišlo do spremembe v šifrantih,
# in sicer v obeh bazah odgovorov študentov 1KA (anketa pred izpitom in anketa PO izpitu)
# ne sem biti veè ŠIFER ŠTUDENTOV, ki pa je v prejšnjih leti bila.
# Ker smo dve loèeni bazi (anketa pred in po izpitu)
# združevali na podlagi šifre študentov to veè ni mogoèe. Zato
# 1) Celotno kodo preuredimo tako, da bomo podatke "vlekli" iz dveh razliènih baz
# (data_pred_izpitom, data_po_izpitu)
#' Podatki za: @name Anketa PRED izpitom----------------------
data_pred_izpitom <-
read.csv2(
paste0("Evalvacija/temp/anketa_pred_izp_", fakulteta, ".csv"),
header = TRUE,
fill = TRUE,
stringsAsFactors = FALSE
)
# Read from second row (first rows are labels)
if (data_pred_izpitom[1, 1] == "Ustreznost") {
data_pred_izpitom <- data_pred_izpitom[2:nrow(data_pred_izpitom), ]
}
#' Podatki za: @name Anketa PO izpitu-----------------------
data_po_izpitu <-
read.csv2(
paste0("Evalvacija/temp/anketa_po_izpitu_", fakulteta, ".csv"),
header = TRUE,
fill = TRUE,
stringsAsFactors = FALSE
)
# Read from second row
if (data_po_izpitu[1, 1]=="Ustreznost") {
data_po_izpitu <- data_po_izpitu[2:nrow(data_po_izpitu),]
}
#' @name sifrantX1 -------------------------------------#
# Je edini obvezni šifrant, kjer se nahajajo vsi pomembni
# podatki za generiranje poroèil.
sifrant <-
read.csv2(
paste0("Evalvacija/temp/sifrant_", fakulteta, ".csv"),
header = TRUE,
fill = TRUE,
stringsAsFactors = FALSE
)
# TIDY DATA --------------------------#
# remove extra spaces # trim funkcija je definirana v funkcije.r
sifrant$PREDMET <- trim(sifrant$PREDMET)
# remove dots in front of course names (FDV!)
sifrant$PREDMET <- sub("^\\.", "", sifrant$PREDMET)
# remove extra spaces
sifrant$NAZIV.PEDAGOGA <- trim(sifrant$NAZIV.PEDAGOGA)
# Novi šifranti, ki smo jih prodobili s strani UL in ne Petra
# if (ID == 3000018) {
# sifrant$IDP <-
# ifelse(sifrant$NACIN_STUDIJA == "1",
# paste0(sifrant$IDP, "_1"),
# paste0(sifrant$IDP, "_2"))
# }
#------------------------ //TIDY DATA// ------------------------#
# Šifrant X3: STUDENT PROGRAM NAMES------------------------------
programi.imena <-
read.csv2(
paste0("Evalvacija/temp/programi_", fakulteta, ".csv"),
fill = TRUE,
header = TRUE,
stringsAsFactors = FALSE
)
# UPDATED 29.10.2019 #
# ZA POTREBE FDV DODAMO IMENA PRENOVLJENIH IN STARIH PROGRMOV---------
# Trenutno je namreè tako, da imamo za dva razlièna programa isto
# ime a razlièni šifri. Z imena programa pa izvajalec ne ve
# ali gre z anov ali star program.
# FDV je zato izrazil željo, da bi prenovljene in predhodne programe
# loèili tako, da bi k imenu dodali (prendovljeni) ali (predhodni)
# Torej to naredio le v primeru FDV, za druge fakultete pa po
# NAROÈILU
if (ID == 3000021) {
# Programe bomo poimenovali v vseh bazah in šifrantu programov
# Družboslovna informatika UNI stari program ima ID = 1000229
# Družboslovna informatika UNI prenovljeni program ima ID = 1001021
source("Evalvacija/R/funkcije/nova_imena_programov.R", encoding = "UTF-8")
# ANKETA PRED IZPITOM
data_pred_izpitom <- prenPredh(data_pred_izpitom, "program", "idprog")
# ANKETA PO IZPITU
data_po_izpitu <- prenPredh(data_po_izpitu, "program", "idprog")
# Šifrant vse programov:
programi.imena <- prenPredh(programi.imena, program = "Naziv", idprog = "ID")
}
# Dodatno pa še:
# Loèimo univerzitetne in visokošolske programe z vrsto študija,
# ker so drugaèe podvojena imena (npr. Družboslovna informatika (uni))
# Imenu programa prilepimo vrsto študija (npr. uni ali vs)
programi.imena$Naziv <-
paste0(programi.imena$Naziv, " (", programi.imena$Vrsta, ")")
# Èe so pokvarjeni ÈŽŠ-ji zaradi napaènega encodinga v šifrantih to ustrezno popravimo
#Encoding(programi.imena$Naziv) <- "UTF-8"
#------------------------------------ //IMPORT AND PREPARE DATA// --------------------------------------#
#------------------------- ERROR CHECK -------------------------#
# MOREBITNE NESKLADNOSTI Z 1KA BAZO podatkov IN
# ŠIFRANTOM X1, KI BI LAHKO VPLIVALE NA PRAVILNOST
# IZDELAVE PDF POROÈIL
source('Evalvacija/R/funkcije/errorCheck.r', encoding = "UTF-8")
#---------------------- //ERROR CHECK// ------------------------#
#--------------------------------------- AGREGAT SUMARNIH PREDMETOV -----------------------------------------#
# UPDATE 23.12.2019
# Zaèasno zakomenentiramo tale del, saj so bile neke napake v poroèilih. Se vrnemo kasneje k temu
# Èe je ID == Fakulteta za Glasbo združimo doloèene predmete iz šifranta x7 v meta predmet
# if (ID == 3000043){
# source('Evalvacija/R/zdruzevanje_predmetov_AG.R')
# source('Evalvacija/R/funkcije/errorCheck.r', encoding = "UTF-8")
# }
#------------------------------------ //AGREGAT SUMARNIH PREDMETOV// ----------------------------------------#
#------------------- DEFINE VARIABLES FOR CALUCLATIONS -------------------#
# We create list of variables which will be called for descriptive
# statistics and Latex tables purposes
source("Evalvacija/R/03_variables.R")
#------------------- DEFINE VARIABLES FOR CALUCLATIONS -------------------#
#------------------------------- MAIN PART -----------------------------------#
# V tem delu pripravimo vse potrebne izraèune, in sicer:
#' opisne statistike, kvantilne range in frekvence glede
#' na \predmet, \izvajalca, \program in \letnik študentov za:
#' sedem @komponent v anketi PRED
#' šest @komponent za izvajalca pri predemtih v anketi PRED
#' tri @komponente za predmet v anketi PO
#' @kompetence v anketi PO
#' @Utreznost KT v anketi PO
#' komponente @prakse v anketi PO
# PODATKI ZA PREDMETE (ANKETA PRED) ----------------------#
source("Evalvacija/R/04_Anketa_PRED.R", encoding = "UTF-8")
#---------------------------------------------------------#
# PODATKI ZA IZVAJALCE (ANKETA PRED) ---------------------#
source("Evalvacija/R/05_Izvajalci_PRED.R", encoding = "UTF-8")
#---------------------------------------------------------#
# PODATKI ZA PREDMETE (ANKETA PRED) ----------------------#
source("Evalvacija/R/06_Anketa_PO.R", encoding = "UTF-8")
#---------------------------------------------------------#
###################
# UPDATE 3.9.2018 #
###################
# TRENUTNO, bomo kasneje preuredili.
# Za potrebe Agregatov zapišemo vse ocene tudi za tiste predmete z manj kot
# štirimi odgovori.
# IZVAJALCI PRI PREDMETIH (ANKETA PRED)-------------
# Dodamo še študijsko leto
year <- strsplit(semester.leto, " ")[[1]]
year <- grep("/", year, value = TRUE) # dates
povprecja.izvajalci.programi.brez.cenzure$leto <- year
povprecja.predmeti.programi.PO.brez.cenzure.PO$leto <- year
povprecja.predmeti.programi.brez.cenzure$leto <- year
write.csv2(
povprecja.izvajalci.programi.brez.cenzure,
paste0(
"Evalvacija/results/",
fakulteta,
"/Agregati/izv_agregat_18_19.csv"
)
)
# PREDMETI (ANKETA PO)-----------------
write.csv2(
povprecja.predmeti.programi.PO.brez.cenzure.PO,
paste0(
"Evalvacija/results/",
fakulteta,
"/Agregati/po_agregat_18_19.csv"
)
)
# PREDMETI (ANKETA PRED) ---------------
write.csv2(
povprecja.predmeti.programi.brez.cenzure,
paste0(
"Evalvacija/results/",
fakulteta,
"/Agregati/pred_agregat_18_19.csv"
)
)
#----------------------------- //MAIN PART// ---------------------------------#
#--------------------------- FACULTY DESCRIPTIVE STATISTICS --------------------------------#
# Za potrebe Latex tabel, kjer primerjamo povpreèje posameznega izvajalca ali programa
# s povpreèjem celotne fakultete, za posamezne komponente izraèunamo še to.
# Povpreèje izvajalcev celotne fakultete-----------------------------------
F.avg.izv <-
colMeans(povprecja.izvajalci[c(paste0(vars.izvajalec$cont$vars, "_mean"),
"izvajalec.ocena.SKUPAJ")], na.rm = TRUE)
# For Latex table purposes
F.avg.izv <- round(F.avg.izv, 1)
#------------------------------------------------------------------------#
# Povpreèja izvajalcev pri vseh predmetih------------------------------------
# Povpreèje vsek izvajalcev fakultete in insert v tabelo 1.3 (zadnja vrstica)
# Predmeti, ki imajo dovolj ocen
predmeti.izbor <- povprecja.predmeti$predmet.sifra
# Preverimo kateri izvajalci vse sodelujejo pri doloèenem predmetu (IPP)
izvajalci.izbor <- unique(povprecja.izvajalci$izvajalec.sifra)
# Naredimo Podmnožico
izbor.izvajalci <-
subset(
povprecja.izvajalci,
predmet.sifra %in% predmeti.izbor &
izvajalec.sifra %in% izvajalci.izbor
)
# Izraèunamo povpreèje IPP
izbor.izvajalci.skupaj <-
aggregate(izbor.izvajalci[c(paste0(vars.izvajalec$cont$vars, "_mean"),
"izvajalec.ocena.SKUPAJ")],
by = izbor.izvajalci[c("izvajalec.sifra", "predmet.sifra")],
FUN = mean,
na.rm = TRUE)
# TOTAL Mean of all IPP (izvajalci pri predmetih)
F.avg.ipp <-
colMeans(izbor.izvajalci.skupaj[3:ncol(izbor.izvajalci.skupaj)], na.rm =
TRUE)
#---------------------------------------------------------------------------#
# Povpreèje predmetov (anketa PRED izpitom, anketa PO izpitu, študijska praksa) --------------------
F.avg.pred <-
colMeans(povprecja.predmeti[c(paste0(vars.cours, "_mean"), "predmet.ocena.SKUPAJ")], na.rm = TRUE)
F.avg.po <-
colMeans(povprecja.predmeti.po[c(paste0(vars.cours.po, "_mean"), "predmet.ocena.SKUPAJ")], na.rm = TRUE)
# For latex tabel purposes we wil change the order of components in F.avg.po
F.avg.po.tab <- F.avg.po[c(2:4,length(F.avg.po), 1, 5)]
# Povpreèje študijskih praks
F.avg.prak <-
colMeans(povprecja.predmeti.po[c(paste0(vars.predmet$cont$praksa, "_mean"),
"predmet.ocena.SKUPAJ.praksa")], na.rm = TRUE)
# Povpreèje Ustreznost KT
F.avg.KT <-
colMeans(povprecja.predmeti.po["predmet.ocena.krediti_mean"], na.rm = TRUE)
# Povpreèni Standardni odklon za ustreznost KT
F.avg.sd.KT <-
colMeans(povprecja.predmeti.po["predmet.ocena.krediti_sd"], na.rm = TRUE)
# Povpreèni odstotek odgovorov na lestvici od 1 do 5
F.avg.KT.likert <-
colMeans(povprecja.predmeti.po[paste0("krediti_razporejanje_pct_", 1:5)], na.rm = TRUE)
# Povpreèje kompetence
F.avg.kom <-
colMeans(povprecja.predmeti.po["predmet.ocena.kompetence_mean"], na.rm = TRUE)
# Povpreèni Standardni odklon za kompetence
F.avg.sd.kom <-
colMeans(povprecja.predmeti.po["predmet.ocena.kompetence_sd"], na.rm = TRUE)
F.avg.kom.likert <-
colMeans(povprecja.predmeti.po[paste0("kompetence1_razporejanje_pct_", 1:5)], na.rm = TRUE)
#--------------------------------------------------------------------------------------------#
# Skupna Povpreèja IZVAJLCEV fakultete glede na STOPNJO ------------------------#
Fizv <-
rbind(skupaj = colMeans(povprecja.izvajalci[c(
"ST_STUD",
"N_anket",
"N_anketTotal",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
"nipouceval.pct"
)], na.rm = T),
"1" = colMeans(povprecja.izvajalci[povprecja.izvajalci$STOPNJA == 1, c(
"ST_STUD",
"N_anket",
"N_anketTotal",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
"nipouceval.pct"
)], na.rm = T),
"2" = colMeans(povprecja.izvajalci[povprecja.izvajalci$STOPNJA == 2, c(
"ST_STUD",
"N_anket",
"N_anketTotal",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
"nipouceval.pct"
)], na.rm = T))
#-------------------------------------------------------------------------------------#
# Skupna Povpreèja PREDMETOV fakultete glede na STOPNJO in glede na SEMESTER IZVAJANJA---------
# Anketa PRED
Fpred <-
rbind(
skupaj = colMeans(povprecja.predmeti[c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")], na.rm = T),
"1" = colMeans(povprecja.predmeti[povprecja.predmeti$STOPNJA == 1,
c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")], na.rm = T),
"2" = colMeans(povprecja.predmeti[povprecja.predmeti$STOPNJA == 2,
c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")], na.rm = T),
"prvi_semester" = colMeans(
subset(povprecja.predmeti, SEMESTER_IZV %in% prvi_semester)
[c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")],
na.rm = T
),
"drugi_semester" = colMeans(
subset(povprecja.predmeti, SEMESTER_IZV %in% drugi_semester)
[c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")],
na.rm = T
)
)
# ANKETA PO
Fpo <-
rbind(
skupaj = colMeans(povprecja.predmeti.po[c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")], na.rm = T),
"1" = colMeans(povprecja.predmeti.po[povprecja.predmeti.po$STOPNJA == 1,
c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")], na.rm = T),
"2" = colMeans(povprecja.predmeti.po[povprecja.predmeti.po$STOPNJA == 2,
c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")], na.rm = T),
"prvi_semester" = colMeans(
subset(povprecja.predmeti.po, SEMESTER_IZV %in% prvi_semester)
[c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")],
na.rm = T
),
"drugi_semester" = colMeans(
subset(povprecja.predmeti.po, SEMESTER_IZV %in% drugi_semester)
[c("ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct")],
na.rm = T
)
)
#---------------------------------------------------------------------------------#
##################
# 1.8.2019 Se vrnemo k temu delu ####################################
##################
#------------------------------- Poglavje SPLOŠNA METODOLOGIJA -------------------------------------#
#Podatki, ki generirajo vrednosti v latex datoteki metodolosko.pojasnilo. Glej mapo latexkosi
# S funkcijo scan preberemo tex. datoteko metodolosko.pojasnilo.tex
# Gre za poglavje, ki se nahajaa na koncu (skoraj) vsakega PDF poroèila
tex.okvir <-
scan(
"Evalvacija/latexkosi/metodolosko.pojasnilo.tex",
character(0),
sep = "\n",
quiet = TRUE,
encoding = 'UTF-8'
)
tex.okvir.izv <-
scan(
"Evalvacija/latexkosi/metodolosko.pojasnilo.izv.tex",
character(0),
sep = "\n",
quiet = TRUE,
encoding = 'UTF-8'
)
#Številka oz povpreèji za dodiplomski in podpilomski študij za anketo PRED izpitom
## ZIMSKI SEMESTER ##
# število predmetov
metod_XXX <- length(unique(subset(sifrant, SEMESTER_IZV %in% prvi_semester)$IDP))
# število pedagogov
metod_YYY <- length(unique(subset(sifrant, SEMESTER_IZV %in% prvi_semester)$IDPEDAGOGA))
# število izvedb..
metod_UUU <- nrow(subset(sifrant, SEMESTER_IZV %in% prvi_semester))
# number of prepared evaluations for courses
metod_VVV <- metod_XXX
# number of prepared evaluations for lecturers
metod_RRR <- metod_UUU
tex.okvir <- gsub(pattern=":IME:", replacement=fakulteta, x=tex.okvir)
# Tekst v poglavju Metodološko pojasnilo
# da npr. v I. semestru vsak predmet izvaja 2.2 (:RRR:/:XXX:) pedagogov 266/123
method_IZR <- round(metod_RRR/metod_XXX, digits = 1)
#vsak pedagog pa v povpreèju izvaja 2.5 (266/105) predmetov.
method_IZR1 <- round(metod_RRR/metod_YYY, digits = 1)
#Trenutni datum oz stanje izvoza, ki se izpiše pod tabelo v poglavju: Metodološko pojasnilo
date <- format(Sys.time(), "%d.%m.%Y")
# Vprašanje komponente Kompetence
Kompetence.note <- "{\\footnotesize \\textit{* \\guillemotright Tekst vprašanja: V kolikšni meri
ste pri predmetu pridobili prièakovane \\textbf{kompetence}? \\guillemotleft }}"
# Kvantilni rangi
kvan.pojas <- "{\\footnotesize \\textit{* Vrednost za \\guillemotright št.odgovorov\\guillemotleft\\ je kvantilni rang
za odgovarjajoèe vrednosti, vendar ni obarvan, saj gre za administrativni podatek.}}"
kvan.pojas1 <- "{\\footnotesize \\textit{* Gre za vse predmete z vsaj 4 odgovori (tudi predmete drugih programov,
èe so bili izbirni), ki so jih vpisali študenti doloèenega programa. \\newline ** Vrednost za \\guillemotright št.odgovorov\\guillemotleft\\
je kvantilni rang za odgovarjajoèe vrednosti v tabeli 1.1 (položaj predmeta med vsemi predmeti doloèenega programa),
vendar ni obarvan, saj gre za administrativni podatek.}}"
kvan.pojas3 <- c(paste0("{\\footnotesize \\textit{* Vrednost za \\guillemotright št.odgovorov\\guillemotleft\\ je kvantilni rang
za odgovarjajoèe vrednosti v tabeli 1.3 (položaj IPP med vsemi IPP doloèenega programa v pogledu števila vpisanih študentov).
\\newline ** Gre za vse predmete z vsaj 4 odgovori
(vkljuèno s predmeti drugih programov, èe so bili izbirni), ki so jih vpisali študenti doloèenega programa.
\\newline *** \\guillemotright št. IPP\\guillemotleft \\ - število vseh izvajalcev pri predmetih na doloèenem programu
(v povpreèju ima vsak predmet ", method_IZR ," izvajalca).}}"))
##############################################################
# KOMENTARJI PRI POVPREÈJIH IZVAJALCEV HABILITACIJSKA KOMISIJA
# K povpreèni ocenam izvajalcev dodamo še komentarje študentov
# # Uporabimo le v pimeru, da delamo poroèila za habilitacijsko komisijo
# Habilitacijska <- TRUE
# if (Habilitacijska == TRUE) {
# povprecja.izvajalci.habili <-
# merge(
# povprecja.izvajalci,
# data.izvajalci[c(
# "izvajalec.sifra",
# "predmet.sifra",
# "izvajalec.komentar.dobro",
# "izvajalec.komentar.slabo"
# )],
# by = c("izvajalec.sifra", "predmet.sifra"),
# all = T,
# sort = F
# )
# # Ustvarimo csv datoteki, ki ju nato uporabimo za generiranje poroèil TRENDOV in HABILITACIJSKE KOMISIJE
# write.csv2(povprecja.izvajalci.habili,
# paste0("povprecja.izvajalci_",format(Sys.Date(), "%Y"),".csv"))
# write.csv2(povprecja.predmeti, paste0("povprecja.predmeti_",format(Sys.Date(), "%Y"),".csv"))
# }
#############################################################
povprecja.predmeti <- merge(povprecja.predmeti, poNLurkerji, by = "predmet.sifra", all = TRUE, sort = FALSE)
#----------------------------------- TRENDI ZA ŠTUDIJSKE PROGRAME PO PREMDETIH ------------------------------#
# Tredni študijskih programov èlanice po predmetih
# Za vsako leto želimo imeti podatke posebej, da jih zapišemo v skupno mapo
trendi.prog.predmeti <- TRUE
if (trendi.prog.predmeti == TRUE) {
# Dodamo še stolpec let po katerem bomo filtrirali trende
year <- strsplit(semester.leto, " ")[[1]]
year <- grep("/", year, value = TRUE) # dates
povprecja.predmeti.programi$leto <- year
povprecja.predmeti.programi.PO$leto <- year
# Anketa PRED------------------------------
#(dodamo letnico da bo razvidno
# za katero leto imamo podatke)
write.csv2(
povprecja.predmeti.programi,
paste0(
"povprecja.predmeti.programi.pred.",
as.numeric(format(Sys.Date(), "%Y")) - 1,
"_",
format(Sys.Date(), "%Y"),
".csv"
))
# Anketa PO-----------------------
write.csv2(
povprecja.predmeti.programi.PO,
paste0(
"povprecja.predmeti.programi.po.",
as.numeric(format(Sys.Date(), "%Y")) - 1,
"_",
format(Sys.Date(), "%Y"),
".csv"
))
# FAKULTETA-------------------------
# Zapisemo se povprecja za fakulteto,
# ki jjh bomo zapisali v latex tabelo
# Najprej pripravimo podatke
F.tr.df <- c(F.avg.pred, F.avg.po, F.avg.prak["predmet.ocena.SKUPAJ.praksa"])
names(F.tr.df)[8] <- "predmet.ocena.SKUPAJ.pred"
names(F.tr.df)[23] <- "predmet.ocena.SKUPAJ.po"
colnames(F.tr.df) <-
# Write
write.csv2(
F.tr.df,
row.names = names(F.tr.df),
paste0(
"povprecja.fakultete.",
as.numeric(format(Sys.Date(), "%Y")) - 1,
"_",
format(Sys.Date(), "%Y"),
".csv"
)
)
}
#--------------------------------- //TRENDI ZA ŠTUDIJSKE PROGRAME PO PREMDETIH// ----------------------------#
###############################################################################
# 19.1.2019
# trenutno bomo tu ustvarili funkcijo, ki bo služila za izrisovanje latex tabel pri
# IZDELAVI PDF POROÈIL ZA ŠTUDIJSKE PROGRAME in FAKULTETO
# Sicer je že tako ali tako preveè kode, ampak bomo naknadno vse preuredili
# ANKETA PRED
tb.lat <-
function(data,
tabname,
row.just,
namen = "PRED",
Agregati = FALSE,
agregatNote = FALSE) {
# Funkcija sprejme podatkovni okvir, ime tabele,
# velikost tabele in število stolpcev
# First check if we are doing latex table
# for the coruse or for the lecturer
# due to different columns in latex table
if (namen == "PRED") { # PRED
n.col = c("c|", rep_len("c", 7), "|c")
note <- paste("{\\footnotesize \\textit{}}")
} else if (namen == "PO") { # PO
n.col = c("c|", rep_len("c", 3), "|c", "|c", "c")
note <- paste(
"{\\footnotesize \\textit{* {\\color{Orange}Oranžno}
so oznaèena {\\color{Orange}opozorilna} odstopanja
({\\color{Orange}2.4-2.6}) in
({\\color{Orange}3.4-3.6}),
{\\color{BrickRed}rdeèe} pa
{\\color{BrickRed}kritièna}
odstopanja (pod {\\color{BrickRed}2.4})
in (nad {\\color{BrickRed}3.6}). }}"
)
} else if (namen == "IPP") { # Izvajalci pri predmetih
n.col = c("c|", rep_len("c", 6), "|c")
note <- paste(
"{\\footnotesize \\textit{*
št. IPP - število vseh
izvajalcev pri predmetih na
doloèenem programu.}}"
)
} else {
# If we are doing tables for Trends
n.col = c(rep_len("c", ncol(data)))
note <- NULL
}
# Preverimo ali delamo Latex tabelo za potrebe Agregatov
if (Agregati == TRUE) {
if ("Povp. a" %in% colnames(data) & "Povp. b" %in% colnames(data)) {
n.col = c(rep_len("c", ncol(data) - 2), "|c", "c")
} else if ("Povp. a" %in% colnames(data) & !"Povp. b" %in% colnames(data)) {
n.col = c(rep_len("c", ncol(data) - 1), "|c")
} else {
n.col = c(rep_len("c", ncol(data)))
}
note <- NULL
}
# Update 2.11.2019
# Pri agregatih PROGRAMOV bomo v tabeli
# kjer predstavljamo kreditne toèke
# Dodali še opombo pod tabelo glede
# barvanja
if (agregatNote == TRUE) {
note <- paste(
"{\\footnotesize \\textit{* {\\color{Orange}Oranžno}
so oznaèena {\\color{Orange}opozorilna} odstopanja
({\\color{Orange}2.4-2.6}) in
({\\color{Orange}3.4-3.6}),
{\\color{BrickRed}rdeèe} pa
{\\color{BrickRed}kritièna}
odstopanja (pod {\\color{BrickRed}2.4})
in (nad {\\color{BrickRed}3.6}). }}"
)
}
# Latex table
table <- capture.output(
Hmisc::latex(
data,
caption = tabname,
rowlabel = "",
file = "",
where = "H",
rowlabel.just = row.just,
multicol = FALSE,
longtable = TRUE,
lines.page = 1000, # table will be 1000 line long per page
insert.bottom = note,
col.just = n.col
)
)
return(table)
}
#----------------------#
# Update 22.12.2019
# Za potrebe poroèil habilitacijske komisije
# moramo k povpreèjem izvajalcev dodati še
# komentarje izvajalcev pri posameznem predmetu
# vse skupaj pa zapisati v bazo iz katere
# bomo nato v habilitacijskem poroèilu
# za posamezen predemt zapisali komentarje
izvajalci.komentarji <-
merge(
povprecja.izvajalci,
data.izvajalci[c(
"izvajalec.sifra",
"predmet.sifra",
"izvajalec.komentar.dobro",
"izvajalec.komentar.slabo"
)],
by = c("izvajalec.sifra", "predmet.sifra"),
all = T,
sort = F
)
year <- strsplit(semester.leto, " ")[[1]]
year <- grep("/", year, value = TRUE) # dates
year <- gsub("/", "-", year) # dates
izvajalci.komentarji$leto <- year
# Ustvarimo csv datoteki, ki ju nato uporabimo za generiranje poroèil TRENDOV in HABILITACIJSKE KOMISIJE
write.csv2(izvajalci.komentarji, paste0("Evalvacija/results/",fakulteta,"/Trendi/izvajalci.komentarji.csv"))

View File

@ -1,954 +0,0 @@
#-------------------- IMPORTANT!!!!!!!!!!!!!! -----------------------#
#' Ker v poročilo za fakulteto po novem zapisujemo tudi trende po
#' študijskih programih je OBVEZNO, da predno poženemo to skripto,
#' poženemo @010_0_agregati_trendi_prog_priprava.R in
#' @010_1_PDF_agregati_trendi_prog.R
#------------------ //IMPORTANT!!!!!!!!!!!!!!// ---------------------#
# Del, ki ga potrebuje Peter, da generira ustrezno poročilo za posamezno fakulteto na strežniku
# Tega ne poganjamo
# params <- commandArgs(trailingOnly=TRUE)
# ID <- params[1]
# #sesionID <- params[2] #Dodajanje števil na koncu pdf/tex datotek za Petra
# # //1KA strežnik// #
#
# # run first
# source("Evalvacija/R/koda.r")
sortByAverage <- TRUE # if true sort variable values and rownames in tables by average, else by lecturer's name
sortbykrediti <- TRUE # if true sort values in tables by values of komponent Ustreznost KT (izbor.predmeti.po.redni.krediti, izbor.predmeti.po.izredni.krediti)
# which lecturers and courses should be included (all from predmeti.izbor and those from izvajalci.izbor that are also in predmeti.izbor)
predmeti.izbor <- povprecja.predmeti$predmet.sifra
predmeti.izbor.po <- povprecja.predmeti.po$predmet.sifra
izvajalci.izbor <- unique(povprecja.izvajalci$izvajalec.sifra)
# V primeru, da ni dovolj podatkov, bomo to izpisali:
Niocen.pred <- paste0("\\subsection{Anketa PRED izpitom}", "Ni dovolj ocen za izpis tabele.")
Niocen.po <- paste0("\\subsection{Anketa PO izpitu}", "Ni dovolj ocen za izpis tabele.")
# making latex file
izbor.tex <- NULL # Uporabimo na koncu poročila za zapis tex vrednosti
## lecturer total averages ##
izbor.izvajalci <- subset(povprecja.izvajalci, predmet.sifra %in% predmeti.izbor & izvajalec.sifra %in% izvajalci.izbor)
izbor.izvajalci <- izbor.izvajalci[!is.na(izbor.izvajalci$predmet.sifra),]
izbor.izvajalci <- izbor.izvajalci[!is.na(izbor.izvajalci$NAZIV.PEDAGOGA),]
if (nrow(izbor.izvajalci) > 0) { # Tabelo naredi samo, če obstajajo vrednosti za izvajalca
# Vrednosti komponent izvajalcev agregiramo glede na šifro izvajalca in ime izvajalca in izračunamo povprečje
izbor.izvajalci.skupaj <-
aggregate(izbor.izvajalci[c(paste0(vars.izvajalec$cont$vars, "_mean"),
"izvajalec.ocena.SKUPAJ")],
by = izbor.izvajalci[c("izvajalec.sifra", "NAZIV.PEDAGOGA")],
FUN = mean,
na.rm = TRUE)
st.predmetov <- aggregate(izbor.izvajalci$N_anket >= minEnot,
by=izbor.izvajalci[c("izvajalec.sifra")], FUN=sum, na.rm=TRUE) # how many courses each lecturer has with enough answers
# Združimo število predmetov s povprečji komponent glede na šifro izvajalca
izbor.izvajalci.skupaj <- merge(st.predmetov, izbor.izvajalci.skupaj, by="izvajalec.sifra", all=TRUE, sort=FALSE)
if (sortByAverage) {# if true sort variable values and rownames in tables by average, else by name
rownames(izbor.izvajalci.skupaj) <- formatProgImena(izbor.izvajalci.skupaj$NAZIV.PEDAGOGA, izbor.izvajalci.skupaj$izvajalec.ocena.SKUPAJ)
izbor.izvajalci.skupaj <- izbor.izvajalci.skupaj[order(izbor.izvajalci.skupaj$izvajalec.ocena.SKUPAJ, decreasing=TRUE),
!(colnames(izbor.izvajalci.skupaj) %in% c("izvajalec.sifra", "NAZIV.PEDAGOGA"))] # sort and drop unneeded columns
} else { # sort by name
rownames(izbor.izvajalci.skupaj) <- izbor.izvajalci.skupaj$NAZIV.PEDAGOGA
izbor.izvajalci.skupaj <- izbor.izvajalci.skupaj[order(as.character(sapply(rownames(izbor.izvajalci.skupaj), titula.rm)),
decreasing=FALSE), !(colnames(izbor.izvajalci.skupaj) %in% c("izvajalec.sifra", "NAZIV.PEDAGOGA"))] # sort and drop unneeded columns
}
# Zružimo povprečne ocene posameznih komponent vseh izvajalcev z SKUPNIM povprečjem vseh komponent (colmeans)
izbor.izvajalci.skupaj <- rbind(izbor.izvajalci.skupaj, c(colMeans(izbor.izvajalci.skupaj[1:ncol(izbor.izvajalci.skupaj)], na.rm=TRUE)))
# Obarvanje mejnih vrednosti (formatNA)
izbor.izvajalci.skupaj <- formatval(izbor.izvajalci.skupaj)
izbor.izvajalci.skupaj$x <- round(izbor.izvajalci.skupaj$x)
# (-1 zato, ker na koncu dodamo še vrstico Povprečje fakultete in te ne štejemo zraven )
vsota_vseh.izvajalcev <- sum(izbor.izvajalci.skupaj$izvajalec.ocena.SKUPAJ != ".") - 1 # Število vseh izvajalcev fakultete
# Imena dodatne vrstice, ki jo dodamo na konec tabele (boldana vrstca z imenom Povprečje FDV), ki vsebuje skupno povprečje komponent izvajalcev fakultete
rownames(izbor.izvajalci.skupaj)[nrow(izbor.izvajalci.skupaj)] <- c(paste0("\\hline \\textbf{Povprečje ", fakulteta," (",vsota_vseh.izvajalcev," izvajalcev)}"))
# Imena stolpcev v tebelah + rotiranje imen v tabelah za 90 stopinj (latex.rotate)
colnames(izbor.izvajalci.skupaj) <- latex.rotate(c("Št. predmetov", Hmisc::latexTranslate(as.character(vars.izvajalec$cont$ime.kratko)),"\\textbf{Skupaj}"))
# Generiranje LATEX tabel (capture.output(Hmisc::latex)
izbor.izvajalci.skupaj.tex <- capture.output(Hmisc::latex(izbor.izvajalci.skupaj, # data frame
caption="Povprečja \\textbf{izvajalcev},
sortirana po \\textbf{Skupaj}", # naslov tabele
rowlabel="",
file="",
where="H",
rowlabel.just="A{12cm}", # širina vrstic tabele
multicol=FALSE,
longtable=TRUE, # splits a long table across pages
lines.page=1000, # table will be 1000 line long per page
insert.bottom=paste("{\\footnotesize \\textit{.
Podatek ni prikazan zaradi majhnega števila enot.}}"),
col.just=c("c|",rep_len("c", length(vars.izvajalec$cont$vars)),"|c"))) # Stolpci
## /lecturer total averages/ ##
rownames(izbor.izvajalci) <- make.unique(paste0(sapply(povprecja.izvajalci[rownames(izbor.izvajalci),"NAZIV.PEDAGOGA"], titula.rm),
" (", povprecja.izvajalci[rownames(izbor.izvajalci),"ime.predmeta"], ")"))
#IPP redni študij (NACIN_STUDIJA == "1")
izbor.izvajalci.redni <- izbor.izvajalci[izbor.izvajalci$NACIN_STUDIJA == "1",
c("ST_STUD","N_anket","sodelujocih.pct",
"zavrnjenih.pct","neodzivnih.pct",
"nipouceval.pct",
paste0(vars.izvajalec$cont$vars,"_mean"),
"izvajalec.ocena.SKUPAJ")]
#IPP izredni študij (NACIN_STUDIJA == "2")
# izbor.izvajalci.izredni <- izbor.izvajalci[izbor.izvajalci$NACIN_STUDIJA == "2",
# c("ST_STUD","N_anket","sodelujocih.pct",
# "zavrnjenih.pct","neodzivnih.pct",
# "nipouceval.pct",
# paste0(vars.izvajalec$cont$vars,"_mean"),
# "izvajalec.ocena.SKUPAJ")]
#
# redni študij
if (nrow(izbor.izvajalci.redni) > 0) {
# PRED - redni
if (any(is.na(izbor.izvajalci.redni)) &
any((!is.na(izbor.izvajalci.redni)) == "--")) {
opomba <- c(
". Podatek ni prikazan zaradi majhnega števila enot.",
"- Podatek je manj pomemben ali težko izračunljiv."
)
} else if (any(is.na(izbor.izvajalci.redni))) {
opomba <- ". Podatek ni prikazan zaradi majhnega števila enot."
} else {
opomba <- NULL
}
if (sortByAverage) {
izbor.izvajalci.redni <- izbor.izvajalci.redni[order(izbor.izvajalci.redni$izvajalec.ocena.SKUPAJ, decreasing=TRUE),]
rownames(izbor.izvajalci.redni) <- formatProgImena(rownames(izbor.izvajalci.redni), izbor.izvajalci.redni$izvajalec.ocena.SKUPAJ)
} else { # sort by name
izbor.izvajalci.redni <- izbor.izvajalci.redni[order(rownames(izbor.izvajalci.redni), decreasing=FALSE),]
}
# Združimo vrstice: povprečje komponent izvajalcev in skupno povprečje komponent izvajalcev
izbor.izvajalci.redni <- rbind(izbor.izvajalci.redni, colMeans(izbor.izvajalci.redni, na.rm=TRUE))
# Obarvanje in zaokroževanje vrednosti
# Združimo vrednosti (obarvanja in oklepaje)
izbor.izvajalci.redni <- formatval(izbor.izvajalci.redni)
# Število vseh IPP fakultete 1-, saj na koncu dodamo še vrstico Povprečje FDV, ki je ne štejemo k številu vseh IPP
vsota_IPP <- sum(izbor.izvajalci.redni$izvajalec.ocena.SKUPAJ != ".") - 1
# Dodamo vrstico z imenom Povprečje FDV
rownames(izbor.izvajalci.redni)[nrow(izbor.izvajalci.redni)] <- c(paste0("\\hline \\textbf{Povprečje ", fakulteta," (",vsota_IPP," IPP)}"))
# Poimenujemo stolpce in jih rotiramo za 90 stopinj
colnames(izbor.izvajalci.redni) <- latex.rotate(c("Št. vpisanih", "Št. odgovorov", "\\% odgovorov", "\\% zavrnitev",
"\\% nesodelujočih", "\\% ni poučeval", Hmisc::latexTranslate(as.character(vars.izvajalec$cont$ime.kratko)), "\\textbf{Skupaj}"))
# Generiranje Latex tabele
izbor.izvajalci.redni.tex <- c(capture.output(Hmisc::latex(izbor.izvajalci.redni,
caption="Povprečja \\textbf{izvajalcev pri predmetih} (anketa PRED izpitom),
sortirana po \\textbf{Skupaj}",
rowlabel="",
file="",
where="H",
multicol=FALSE,
longtable=TRUE,
lines.page=1000,
col.just=c("c","c|","c","c","c","c|",rep_len("c", length(vars.izvajalec$cont$vars)),"|c"),
rowlabel.just="A{6.7cm}",
insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
} else {
izbor.izvajalci.redni.tex <- "Ni ocen."
}
# ## izvajalci: izredni študij ##
# if (nrow(izbor.izvajalci.izredni) > 0) {
# # PRED - redni
# if (any(is.na(izbor.izvajalci.izredni)) &
# any((!is.na(izbor.izvajalci.izredni)) == "--")) {
# opombaIzvIzredni <- c(
# ". Podatek ni prikazan zaradi majhnega števila enot.",
# "- Podatek je manj pomemben ali težko izračunljiv."
# )
# } else if (any(is.na(izbor.izvajalci.izredni))) {
# opombaIzvIzredni <- ". Podatek ni prikazan zaradi majhnega števila enot."
# } else {
# opombaIzvIzredni <- NULL
# }
#
#
# if (sortByAverage) {
# izbor.izvajalci.izredni <- izbor.izvajalci.izredni[order(izbor.izvajalci.izredni$izvajalec.ocena.SKUPAJ, decreasing=TRUE),]
# rownames(izbor.izvajalci.izredni) <- formatProgImena(rownames(izbor.izvajalci.izredni), izbor.izvajalci.izredni$izvajalec.ocena.SKUPAJ)
# } else { # sort by name
# izbor.izvajalci.izredni <- izbor.izvajalci.izredni[order(rownames(izbor.izvajalci.izredni), decreasing=FALSE),]
# }
# izbor.izvajalci.izredni <- rbind(izbor.izvajalci.izredni, colMeans(izbor.izvajalci.izredni, na.rm=TRUE))
#
# izbor.izvajalci.izredni <- formatval(izbor.izvajalci.izredni)
# # Število vseh IPP fakultete
# vsota_IPP.izredni <- sum(izbor.izvajalci.izredni$izvajalec.ocena.SKUPAJ != ".") - 1
# rownames(izbor.izvajalci.izredni)[nrow(izbor.izvajalci.izredni)] <-
# c(paste0("\\hline \\textbf{Povprečje ", fakulteta," (",vsota_IPP.izredni," IPP)}"))
# colnames(izbor.izvajalci.izredni) <- latex.rotate(c("Št. vpisanih", "Št. odgovorov", "\\% odgovorov", "\\% zavrnitev",
# "\\% nesodelujočih","\\% ni poučeval", Hmisc::latexTranslate(as.character(vars.izvajalec$cont$ime.kratko)), "\\textbf{Skupaj}"))
# izbor.izvajalci.izredni.tex <- c(capture.output(Hmisc::latex(izbor.izvajalci.izredni,
# caption="Povprečja \\textbf{izvajalcev pri predmetih} (anketa PRED izpitom),
# sortirana po \\textbf{Skupaj}",
# rowlabel="",
# file="",
# where="H",
# multicol=FALSE,
# longtable=TRUE,
# lines.page=1000,
# col.just=c("c","c|","c","c","c","c|",rep_len("c", length(vars.izvajalec$cont$vars)),"|c"),
# rowlabel.just="A{6.7cm}",
# insert.bottom=paste0("{\\footnotesize \\textit{", opombaIzvIzredni, "}}"))))
# } else {
# izbor.izvajalci.izredni.tex <- "Ni ocen."
# }
} else {
izbor.izvajalci.skupaj.tex <- "Ni ocen."
izbor.izvajalci.redni.tex <- "Ni ocen."
izbor.izvajalci.izredni.tex <- "Ni ocen."
}
## /lecturer course averages/ ##
#######################
## course averages ##
#######################
izbor.predmeti <- subset(povprecja.predmeti, predmet.sifra %in% predmeti.izbor) # Izberemo predmete, ki so imeli dovolj enot
izbor.predmeti.po <- subset(povprecja.predmeti.po, predmet.sifra %in% predmeti.izbor.po) # Izberemo predmete, ki so imeli dovolj enot
if (nrow(izbor.predmeti) > 0) {
povprecja.predmeti <- povprecja.predmeti[!(is.na(povprecja.predmeti$ime.predmeta)), ]
rownames(izbor.predmeti) <- make.unique(povprecja.predmeti[rownames(izbor.predmeti), "ime.predmeta"])
povprecja.predmeti.po <- povprecja.predmeti.po[!(is.na(povprecja.predmeti.po$ime.predmeta)), ]
rownames(izbor.predmeti.po) <- make.unique(povprecja.predmeti.po[rownames(izbor.predmeti.po), "ime.predmeta"])
# Ločimo povprečje komponent predmetov PRED in PO izpitu na REDNI in IZREDNi ŠTUDIJ, na podalgi katerih nato delamo LATEX tabele
izbor.predmeti.pred.redni <-
izbor.predmeti[izbor.predmeti$NACIN_STUDIJA == "1", c(
"ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
paste0(vars.predmet$cont$pred, "_mean"),
"predmet.ocena.SKUPAJ"
)]
# izbor.predmeti.pred.izredni <-
# izbor.predmeti[izbor.predmeti$NACIN_STUDIJA == "2", c(
# "ST_STUD",
# "N_anket",
# "sodelujocih.pct",
# "zavrnjenih.pct",
# "neodzivnih.pct",
# paste0(vars.predmet$cont$pred, "_mean"),
# "predmet.ocena.SKUPAJ"
# )]
# V anketi PO ne bomo prikazali predmetov, ki so PRAKSE
# To prikažemo v ločeni tabeli
izbor.predmeti.po.redni <-
izbor.predmeti.po[c(izbor.predmeti.po$NACIN_STUDIJA == "1" &
izbor.predmeti.po$PRAKSA == 0), c(
"ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
paste0(vars.predmet$cont$po[-1], "_mean"),
"predmet.ocena.SKUPAJ",
"predmet.ocena.kompetence_mean",
"predmet.ocena.krediti_mean"
)]
# izbor.predmeti.po.izredni <-
# izbor.predmeti.po[c(izbor.predmeti.po$NACIN_STUDIJA == "2" &
# izbor.predmeti.po$PRAKSA == 0), c(
# "ST_STUD",
# "N_anket",
# "sodelujocih.pct",
# "zavrnjenih.pct",
# "neodzivnih.pct",
# paste0(vars.predmet$cont$po[-1], "_mean"),
# "predmet.ocena.SKUPAJ",
# "predmet.ocena.kompetence_mean",
# "predmet.ocena.krediti_mean"
# )]
#
# Oblikovanje podatkov in generiranje Latex tabele za anketno PRED izpitom: REDNI ŠTUDIJ
if (nrow(izbor.predmeti.pred.redni) > 0) {
# PRED - redni
if (any(is.na(izbor.predmeti.pred.redni)) &
any((!is.na(izbor.predmeti.pred.redni)) == "--")) {
opomba <- c(
". Podatek ni prikazan zaradi majhnega števila enot.",
"- Podatek je manj pomemben ali težko izračunljiv."
)
} else if (any(is.na(izbor.predmeti.pred.redni))) {
opomba <- ". Podatek ni prikazan zaradi majhnega števila enot."
} else {
opomba <- NULL
}
if (sortByAverage) {
izbor.predmeti.pred.redni <- izbor.predmeti.pred.redni[order(izbor.predmeti.pred.redni$predmet.ocena.SKUPAJ,
izbor.predmeti.pred.redni$N_anket, decreasing=TRUE),]
rownames(izbor.predmeti.pred.redni) <- formatProgImena(rownames(izbor.predmeti.pred.redni),
izbor.predmeti.pred.redni$predmet.ocena.SKUPAJ)
} else { # sort by name
izbor.predmeti.pred.redni <- izbor.predmeti.pred.redni[order(rownames(izbor.predmeti.pred.redni), decreasing=FALSE),]
}
izbor.predmeti.pred.redni <- rbind(izbor.predmeti.pred.redni, colMeans(izbor.predmeti.pred.redni, na.rm=TRUE))
#Sivo barvanje
izbor.predmeti.pred.redni <- formatval(izbor.predmeti.pred.redni)
# Število vseh predmetov rednega študija. Insert v tabelo
vsota_predmetov <- sum(izbor.predmeti.pred.redni$predmet.ocena.SKUPAJ != ".")-1
# Imena vrstic tabele
rownames(izbor.predmeti.pred.redni)[nrow(izbor.predmeti.pred.redni)] <- c(paste0("\\hline \\textbf{Povprečje fakultete (",vsota_predmetov, " predmetov)}"))
# Imena stolpcev tabele
colnames(izbor.predmeti.pred.redni) <- latex.rotate(c("Št. vpisanih", "Št. odgovorov", "\\% odgovorov", "\\% zavrnitev", "\\% nesodelujočih",
Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$pred])), "\\textbf{Skupaj}"))
# Latex tabela
izbor.predmeti.pred.redni.tex <- c(capture.output(Hmisc::latex(izbor.predmeti.pred.redni,
caption="Povprečja \\textbf{predmetov}
(anketa PRED izpitom),
sortirana po \\textbf{Skupaj}",
rowlabel="",
file="",
where="H",
multicol=FALSE,
longtable=TRUE,
lines.page=1000,
col.just=c("c","c|","c","c","c|",rep_len("c", length(vars.predmet$cont$pred)),"|c"),
rowlabel.just="A{6.5cm}",
insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
} else {
izbor.predmeti.pred.redni.tex <- "Ni ocen."
}
# # Oblikovanje podatkov in generiranje Latex tabele za anketno PRED izpitom: IZREDNI ŠTUDIJ
# if (nrow(izbor.predmeti.pred.izredni) > 0) {
# # PRED - redni
# if (any(is.na(izbor.predmeti.pred.izredni)) &
# any((!is.na(izbor.predmeti.pred.izredni)) == "--")) {
# opomba <- c(
# ". Podatek ni prikazan zaradi majhnega števila enot.",
# "- Podatek je manj pomemben ali težko izračunljiv."
# )
# } else if (any(is.na(izbor.predmeti.pred.izredni))) {
# opomba <- ". Podatek ni prikazan zaradi majhnega števila enot."
# } else {
# opomba <- NULL
# }
#
#
# if (sortByAverage) {
# izbor.predmeti.pred.izredni <- izbor.predmeti.pred.izredni[order(izbor.predmeti.pred.izredni$predmet.ocena.SKUPAJ,
# izbor.predmeti.pred.izredni$N_anket, decreasing=TRUE),]
# rownames(izbor.predmeti.pred.izredni) <- formatProgImena(rownames(izbor.predmeti.pred.izredni),
# izbor.predmeti.pred.izredni$predmet.ocena.SKUPAJ)
# } else { # sort by name
# izbor.predmeti.pred.izredni <- izbor.predmeti.pred.izredni[order(rownames(izbor.predmeti.pred.izredni), decreasing=FALSE),]
# }
# izbor.predmeti.pred.izredni <- rbind(izbor.predmeti.pred.izredni, colMeans(izbor.predmeti.pred.izredni, na.rm=TRUE))
#
# izbor.predmeti.pred.izredni <- formatval(izbor.predmeti.pred.izredni)
# # Število predmetov izrednega študija
# vsota_izredni <- sum(izbor.predmeti.pred.izredni$predmet.ocena.SKUPAJ != ".") - 1
# # Imena vrstic v tabelah
# rownames(izbor.predmeti.pred.izredni)[nrow(izbor.predmeti.pred.izredni)] <-
# c(paste0("\\hline \\textbf{Povprečje fakultete (",vsota_izredni, " predmetov)}"))
# # Imena stolpcev v tabelah
# colnames(izbor.predmeti.pred.izredni) <- latex.rotate(c("Št. vpisanih", "Št. odgovorov", "\\% odgovorov", "\\% zavrnitev", "\\% nesodelujočih",
# Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$pred])), "\\textbf{Skupaj}"))
# #Generiranje Latex tabele
# izbor.predmeti.pred.izredni.tex <- c(capture.output(Hmisc::latex(izbor.predmeti.pred.izredni,
# caption="Povprečja \\textbf{predmetov} (anketa PRED izpitom),
# sortirana po \\textbf{Skupaj}",
# rowlabel="",
# file="",
# where="H",
# multicol=FALSE,
# longtable=TRUE,
# lines.page=1000,
# col.just=c("c","c|","c","c","c|",rep_len("c", length(vars.predmet$cont$pred)),"|c"),
# rowlabel.just="A{6.5cm}",
# insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
# } else {
# izbor.predmeti.pred.izredni.tex <- "Ni ocen."
# }
# REDNI ŠTUDIJ
if (nrow(izbor.predmeti.po.redni) > 0) {
# PRED - redni
if (any(is.na(izbor.predmeti.po.redni)) &
any((!is.na(izbor.predmeti.po.redni)) == "--")) {
opomba <- c(
". Podatek ni prikazan zaradi majhnega števila enot.",
"- Podatek je manj pomemben ali težko izračunljiv.",
"* {\\color{Orange}\\textbf{Oranžno}} so označena
odstopanja
({\\color{Orange}\\textbf{2.4-2.6}}) in
({\\color{Orange}\\textbf{3.4-3.6}}),
{\\color{BrickRed}\\textbf{rdeče}} pa
odstopanja
(pod {\\color{BrickRed}\\textbf{2.4}}) in
(nad {\\color{BrickRed}\\textbf{3.6}}).")
} else if (any(is.na(izbor.predmeti.po.redni))) {
opomba <- c(". Podatek ni prikazan zaradi majhnega števila enot.",
"* {\\color{Orange}\\textbf{Oranžno}} so označena
odstopanja
({\\color{Orange}\\textbf{2.4-2.6}}) in
({\\color{Orange}\\textbf{3.4-3.6}}),
{\\color{BrickRed}\\textbf{rdeče}} pa
odstopanja
(pod {\\color{BrickRed}\\textbf{2.4}}) in
(nad {\\color{BrickRed}\\textbf{3.6}}).")
} else {
opomba <- c("* {\\color{Orange}\\textbf{Oranžno}} so označena
odstopanja
({\\color{Orange}\\textbf{2.4-2.6}}) in
({\\color{Orange}\\textbf{3.4-3.6}}),
{\\color{BrickRed}\\textbf{rdeče}} pa
odstopanja
(pod {\\color{BrickRed}\\textbf{2.4}}) in
(nad {\\color{BrickRed}\\textbf{3.6}}).")
}
if (sortByAverage) {
izbor.predmeti.po.redni <- izbor.predmeti.po.redni[order(izbor.predmeti.po.redni$predmet.ocena.SKUPAJ,
izbor.predmeti.po.redni$N_anket, decreasing=TRUE),]
rownames(izbor.predmeti.po.redni) <- formatProgImena(rownames(izbor.predmeti.po.redni),
izbor.predmeti.po.redni$predmet.ocena.SKUPAJ)
} else { # sort by name
izbor.predmeti.po.redni <- izbor.predmeti.po.redni[order(rownames(izbor.predmeti.po.redni), decreasing=FALSE),]
}
izbor.predmeti.po.redni <- rbind(izbor.predmeti.po.redni, colMeans(izbor.predmeti.po.redni, na.rm=TRUE))
izbor.predmeti.po.redni <- formatval(izbor.predmeti.po.redni, KT = TRUE)
vsota_predmeti.po <- sum(izbor.predmeti.po.redni$predmet.ocena.SKUPAJ != ".") - 1
rownames(izbor.predmeti.po.redni)[nrow(izbor.predmeti.po.redni)] <- c(paste0("\\hline \\textbf{Povprečje fakultete (",vsota_predmeti.po, " predmetov)}"))
colnames(izbor.predmeti.po.redni) <- latex.rotate(c("Št. vpisanih", "Št. odgovorov", "\\% odgovorov", "\\% zavrnitev", "\\% nesodelujočih",
Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$po[-1]])), "\\textbf{Skupaj}", "Kompetence",as.character(vars.predmet$krediti$ime.kratko)))
# Ker želimo da sta v tabelah komponenti UTREZNOST KT in KOMPETENCE prikazani na koncu pred generiranjem tabel spremenimo vrstni red
# Generiranje LATEX TABELE
izbor.predmeti.po.redni.tex <- c(capture.output(Hmisc::latex(izbor.predmeti.po.redni,
caption="Povprečja \\textbf{predmetov} (anketa PO izpitu),
sortirana po \\textbf{Skupaj}",
rowlabel="",
file="",
where="H",
multicol=FALSE,
longtable=TRUE,
lines.page=1000,
col.just=c("c","c|","c","c","c|",rep_len("c", length(vars.predmet$cont$po[-1])),"|c","|c","c"),
rowlabel.just="A{8cm}",
insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
} else {
izbor.predmeti.po.redni.tex <- "Ni ocen."
}
# # IZREDNI ŠTUDIJ
# if (nrow(izbor.predmeti.po.izredni) > 0) {
# # PRED - redni
# if (any(is.na(izbor.predmeti.po.izredni)) &
# any((!is.na(izbor.predmeti.po.izredni)) == "--")) {
# opomba <- c(
# ". Podatek ni prikazan zaradi majhnega števila enot.",
# "- Podatek je manj pomemben ali težko izračunljiv.",
# "* {\\color{Orange}\\textbf{Oranžno}} so označena
# odstopanja
# ({\\color{Orange}\\textbf{2.4-2.6}}) in
# ({\\color{Orange}\\textbf{3.4-3.6}}),
# {\\color{BrickRed}\\textbf{rdeče}} pa
# odstopanja
# (pod {\\color{BrickRed}\\textbf{2.4}}) in
# (nad {\\color{BrickRed}\\textbf{3.6}}).")
# } else if (any(is.na(izbor.predmeti.po.izredni))) {
# opomba <- c(". Podatek ni prikazan zaradi majhnega števila enot.",
# "* {\\color{Orange}\\textbf{Oranžno}} so označena
# odstopanja
# ({\\color{Orange}\\textbf{2.4-2.6}}) in
# ({\\color{Orange}\\textbf{3.4-3.6}}),
# {\\color{BrickRed}\\textbf{rdeče}} pa
# odstopanja
# (pod {\\color{BrickRed}\\textbf{2.4}}) in
# (nad {\\color{BrickRed}\\textbf{3.6}}).")
# } else {
# opomba <- c("* {\\color{Orange}\\textbf{Oranžno}} so označena
# odstopanja
# ({\\color{Orange}\\textbf{2.4-2.6}}) in
# ({\\color{Orange}\\textbf{3.4-3.6}}),
# {\\color{BrickRed}\\textbf{rdeče}} pa
# odstopanja
# (pod {\\color{BrickRed}\\textbf{2.4}}) in
# (nad {\\color{BrickRed}\\textbf{3.6}}).")
# }
#
# if (sortByAverage) {
# izbor.predmeti.po.izredni <- izbor.predmeti.po.izredni[order(izbor.predmeti.po.izredni$predmet.ocena.SKUPAJ,
# izbor.predmeti.po.izredni$N_anket, decreasing=TRUE),]
# rownames(izbor.predmeti.po.izredni) <- formatProgImena(rownames(izbor.predmeti.po.izredni),
# izbor.predmeti.po.izredni$predmet.ocena.SKUPAJ)
# } else { # sort by name
# izbor.predmeti.po.izredni <- izbor.predmeti.po.izredni[order(rownames(izbor.predmeti.po.izredni), decreasing=FALSE),]
# }
# izbor.predmeti.po.izredni <- rbind(izbor.predmeti.po.izredni, colMeans(izbor.predmeti.po.izredni, na.rm=TRUE))
#
# izbor.predmeti.po.izredni <- formatval(izbor.predmeti.po.izredni, KT = TRUE)
# # Število vshe predmetov v anketi PO
# vsota_predmeti.po.izr <- sum(izbor.predmeti.po.izredni$predmet.ocena.SKUPAJ != ".") - 1
# rownames(izbor.predmeti.po.izredni)[nrow(izbor.predmeti.po.izredni)] <- c(paste0("\\hline \\textbf{Povprečje fakultete (",vsota_predmeti.po.izr, " predmetov)}"))
# colnames(izbor.predmeti.po.izredni) <- latex.rotate(c("Št. vpisanih", "Št. odgovorov", "\\% odgovorov", "\\% zavrnitev", "\\% nesodelujočih",
# Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$po[-1]])),
# "\\textbf{Skupaj}", "Kompetence",as.character(vars.predmet$krediti$ime.kratko)))
#
# # Latex tabela
# izbor.predmeti.po.izredni.tex <- c(capture.output(Hmisc::latex(izbor.predmeti.po.izredni,
# caption="Povprečja \\textbf{predmetov} (anketa PO izpitu),
# sortirana po \\textbf{Skupaj}",
# rowlabel="",
# file="",
# where="H",
# multicol=FALSE,
# longtable=TRUE,
# lines.page=1000,
# col.just=c("c","c|","c","c","c|",rep_len("c", length(vars.predmet$cont$po[-1])),"|c","|c","c"),
# rowlabel.just="A{8.4cm}",
# insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
# } else {
# izbor.predmeti.po.izredni.tex <- NULL
# }
#################
#ŠTUDIJSKA PRAKSA
#################
# Zberemo predmete ki imajo študijsko prakso (izbor.predmeti$PRAKSA==1)
izbor.predmeti.praksa <- izbor.predmeti.po[izbor.predmeti.po$PRAKSA==1 ,
c("ST_STUD","N_anket","sodelujocih.pct",
"zavrnjenih.pct","neodzivnih.pct",
paste0(vars.predmet$cont$praksa,"_mean"),"predmet.ocena.SKUPAJ.praksa")]
if (all(!is.na(izbor.predmeti.praksa[1]))) {
if (nrow(izbor.predmeti.praksa) > 0) {
# PRED - redni
if (any(is.na(izbor.predmeti.praksa)) &
any((!is.na(izbor.predmeti.praksa)) == "--")) {
opomba <- c(
". Podatek ni prikazan zaradi majhnega števila enot.",
"- Podatek je manj pomemben ali težko izračunljiv."
)
} else if (any(is.na(izbor.predmeti.praksa))) {
opomba <- ". Podatek ni prikazan zaradi majhnega števila enot."
} else {
opomba <- NULL
}
if (sortByAverage) {
izbor.predmeti.praksa <- izbor.predmeti.praksa[order(izbor.predmeti.praksa$predmet.ocena.SKUPAJ.praksa,
izbor.predmeti.praksa$N_anket, decreasing=TRUE),]
rownames(izbor.predmeti.praksa) <- make.unique(formatProgImena(rownames(izbor.predmeti.praksa),
izbor.predmeti.praksa$predmet.ocena.SKUPAJ.praksa))
} else { # sort by name
izbor.predmeti.praksa <- izbor.predmeti.praksa[order(rownames(izbor.predmeti.praksa), decreasing=FALSE),]
}
izbor.predmeti.praksa <- rbind(izbor.predmeti.praksa,
colMeans(izbor.predmeti.praksa[c("ST_STUD","N_anket","sodelujocih.pct",
"zavrnjenih.pct","neodzivnih.pct",
paste0(vars.predmet$cont$praksa, "_mean"),
"predmet.ocena.SKUPAJ.praksa")], na.rm=TRUE))
izbor.predmeti.praksa<-formatval(izbor.predmeti.praksa)
# Število predmetov, ki imajo študijsko prakso
vsota_praks <- sum(izbor.predmeti.praksa$predmet.ocena.SKUPAJ.praksa != ".") - 1
rownames(izbor.predmeti.praksa)[nrow(izbor.predmeti.praksa)] <- c(paste0("\\hline \\textbf{Povprečje ", fakulteta," (",vsota_praks," študijskih praks)}"))
colnames(izbor.predmeti.praksa) <- latex.rotate(c("Št. vpisanih", "Št. odgovorov", "\\% odgovorov", "\\% zavrnitev", "\\% nesodelujočih",
Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa])), "\\textbf{Skupaj}"))
izbor.predmeti.praksa.tex <- c(capture.output(Hmisc::latex(izbor.predmeti.praksa,
caption="Povprečja \\textbf{študijskih praks} (anketa PO izpitu),
sortirana po \\textbf{Skupaj}",
rowlabel="",
file="",
where="H",
multicol=FALSE,
longtable=TRUE,
lines.page=1000,
col.just=c("c","c|","c","c","c|",rep_len("c", length(vars.predmet$cont$praksa)),"|c"),
rowlabel.just="A{6.1cm}",
insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
} else {
izbor.predmeti.praksa.tex <- c("\\newline","\\newline", "Ni ocen za študijsko prakso.")
}
} else {
izbor.predmeti.praksa.tex <- c("\\newline","\\newline", "Ni ocen za študijsko prakso.")
}
## //ŠTUDIJSKA PRAKSA// ##
# Naredimo še tabelo za anketo PO izpitu, kjer vrednosti v tabelah sortiramo glede na vrednost komponente USTREZNOST KT#
## DODATNO SORTIJANJE PO USTREZNOSTI KREDITNIH TOČK#
# REDNI ŠTUDIJ
izbor.predmeti.po.redni.krediti <- izbor.predmeti.po[izbor.predmeti.po$NACIN_STUDIJA=="1",
c("ST_STUD","N_anket","sodelujocih.pct",
"zavrnjenih.pct","neodzivnih.pct",
paste0(vars.predmet$cont$po[-1],"_mean"),"predmet.ocena.SKUPAJ",
"predmet.ocena.kompetence_mean",
"predmet.ocena.krediti_mean")]
if (nrow(izbor.predmeti.po.redni.krediti) > 0) {
# PRED - redni
if (any(is.na(izbor.predmeti.po.redni.krediti)) &
any((!is.na(izbor.predmeti.po.redni.krediti)) == "--")) {
opomba <- c(
". Podatek ni prikazan zaradi majhnega števila enot.",
"- Podatek je manj pomemben ali težko izračunljiv.",
"* {\\color{Orange}\\textbf{Oranžno}} so označena
odstopanja
({\\color{Orange}\\textbf{2.4-2.6}}) in
({\\color{Orange}\\textbf{3.4-3.6}}),
{\\color{BrickRed}\\textbf{rdeče}} pa
odstopanja
(pod {\\color{BrickRed}\\textbf{2.4}}) in
(nad {\\color{BrickRed}\\textbf{3.6}}).")
} else if (any(is.na(izbor.predmeti.po.redni.krediti))) {
opomba <- c(". Podatek ni prikazan zaradi majhnega števila enot.",
"* {\\color{Orange}\\textbf{Oranžno}} so označena
odstopanja
({\\color{Orange}\\textbf{2.4-2.6}}) in
({\\color{Orange}\\textbf{3.4-3.6}}),
{\\color{BrickRed}\\textbf{rdeče}} pa
odstopanja
(pod {\\color{BrickRed}\\textbf{2.4}}) in
(nad {\\color{BrickRed}\\textbf{3.6}}).")
} else {
opomba <- c("* {\\color{Orange}\\textbf{Oranžno}} so označena
odstopanja
({\\color{Orange}\\textbf{2.4-2.6}}) in
({\\color{Orange}\\textbf{3.4-3.6}}),
{\\color{BrickRed}\\textbf{rdeče}} pa
odstopanja
(pod {\\color{BrickRed}\\textbf{2.4}}) in
(nad {\\color{BrickRed}\\textbf{3.6}}).")
}
if (sortbykrediti) {
rownames(izbor.predmeti.po.redni.krediti) <- formatProgImena(rownames(izbor.predmeti.po.redni.krediti),
izbor.predmeti.po.redni.krediti$predmet.ocena.krediti_mean)
izbor.predmeti.po.redni.krediti <- izbor.predmeti.po.redni.krediti[order(izbor.predmeti.po.redni.krediti$predmet.ocena.krediti_mean,
decreasing=TRUE),]
} else { # sort by name
izbor.predmeti.po.redni.krediti <- izbor.predmeti.po.redni.krediti[order(rownames(izbor.predmeti.po.redni.krediti), decreasing=FALSE),]
}
izbor.predmeti.po.redni.krediti <- rbind(izbor.predmeti.po.redni.krediti, colMeans(izbor.predmeti.po.redni.krediti, na.rm=TRUE))
izbor.predmeti.po.redni.krediti <- formatval(izbor.predmeti.po.redni.krediti, KT = TRUE)
vsota_krediti <- sum(izbor.predmeti.po.redni.krediti$predmet.ocena.SKUPAJ != ".") - 1
rownames(izbor.predmeti.po.redni.krediti)[nrow(izbor.predmeti.po.redni.krediti)] <- c(paste0("\\hline \\textbf{Povprečje ", fakulteta," (",vsota_krediti," predmetov)}"))
colnames(izbor.predmeti.po.redni.krediti) <- latex.rotate(c("Št. vpisanih", "Št. odgovorov", "\\% odgovorov", "\\% zavrnitev", "\\% nesodelujočih",
Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$po[-1]])),
"\\textbf{Skupaj}","Kompetence", as.character(vars.predmet$krediti$ime.kratko)))
izbor.predmeti.po.redni.krediti.tex <- c(capture.output(Hmisc::latex(izbor.predmeti.po.redni.krediti,
caption="Povprečja \\textbf{predmetov} (anketa PO izpitu),
sortirana po \\textbf{Ustreznost KT}",
rowlabel="",
file="",
where="H",
multicol=FALSE,
longtable=TRUE,
lines.page=1000,
col.just=c("c","c|","c","c","c|",rep_len("c", length(vars.predmet$cont$po[-1])),"|c","|c","c"),
rowlabel.just="A{8cm}",
insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
} else {
izbor.predmeti.po.redni.krediti.tex <- "Ni ocen."
}
# # IZREDNI ŠTUDIJ
# izbor.predmeti.po.izredni.krediti <- izbor.predmeti.po[izbor.predmeti.po$NACIN_STUDIJA=="2",
# c("ST_STUD","N_anket","sodelujocih.pct",
# "zavrnjenih.pct","neodzivnih.pct",
# paste0(vars.predmet$cont$po[-1],"_mean"),
# "predmet.ocena.SKUPAJ",
# "predmet.ocena.kompetence_mean",
# "predmet.ocena.krediti_mean")]
#
# if (nrow(izbor.predmeti.po.izredni.krediti) > 0) {
# # PO - izredni
# if (any(is.na(izbor.predmeti.po.izredni.krediti)) &
# any((!is.na(izbor.predmeti.po.izredni.krediti)) == "--")) {
# opomba <- c(
# ". Podatek ni prikazan zaradi majhnega števila enot.",
# "- Podatek je manj pomemben ali težko izračunljiv.",
# "* {\\color{Orange}\\textbf{Oranžno}} so označena
# odstopanja
# ({\\color{Orange}\\textbf{2.4-2.6}}) in
# ({\\color{Orange}\\textbf{3.4-3.6}}),
# {\\color{BrickRed}\\textbf{rdeče}} pa
# odstopanja
# (pod {\\color{BrickRed}\\textbf{2.4}}) in
# (nad {\\color{BrickRed}\\textbf{3.6}}).")
# } else if (any(is.na(izbor.predmeti.po.izredni.krediti))) {
# opomba <- c(". Podatek ni prikazan zaradi majhnega števila enot.",
# "* {\\color{Orange}\\textbf{Oranžno}} so označena
# odstopanja
# ({\\color{Orange}\\textbf{2.4-2.6}}) in
# ({\\color{Orange}\\textbf{3.4-3.6}}),
# {\\color{BrickRed}\\textbf{rdeče}} pa
# odstopanja
# (pod {\\color{BrickRed}\\textbf{2.4}}) in
# (nad {\\color{BrickRed}\\textbf{3.6}}).")
# } else {
# opomba <- c("* {\\color{Orange}\\textbf{Oranžno}} so označena
# odstopanja
# ({\\color{Orange}\\textbf{2.4-2.6}}) in
# ({\\color{Orange}\\textbf{3.4-3.6}}),
# {\\color{BrickRed}\\textbf{rdeče}} pa
# odstopanja
# (pod {\\color{BrickRed}\\textbf{2.4}}) in
# (nad {\\color{BrickRed}\\textbf{3.6}}).")
# }
#
#
#
# if (sortByAverage) {
# izbor.predmeti.po.izredni.krediti <- izbor.predmeti.po.izredni.krediti[order(izbor.predmeti.po.izredni.krediti$predmet.ocena.krediti_mean,
# izbor.predmeti.po.izredni.krediti$N_anket, decreasing=TRUE),]
# rownames(izbor.predmeti.po.izredni.krediti) <- formatProgImena(rownames(izbor.predmeti.po.izredni.krediti),
# izbor.predmeti.po.izredni.krediti$predmet.ocena.krediti_mean)
# } else { # sort by name
# izbor.predmeti.po.izredni.krediti <- izbor.predmeti.po.izredni.krediti[order(rownames(izbor.predmeti.po.izredni.krediti),
# decreasing=FALSE),]
# }
# izbor.predmeti.po.izredni.krediti <- rbind(izbor.predmeti.po.izredni.krediti, colMeans(izbor.predmeti.po.izredni.krediti, na.rm=TRUE))
#
# izbor.predmeti.po.izredni.krediti <- formatval(izbor.predmeti.po.izredni.krediti, KT = TRUE)
# vsota_krediti.izr <- sum(izbor.predmeti.po.izredni.krediti[11] != ".") - 1
# rownames(izbor.predmeti.po.izredni.krediti)[nrow(izbor.predmeti.po.izredni.krediti)] <- c(paste0("\\hline \\textbf{Povprečje ", fakulteta," (",vsota_krediti.izr," predmetov)}"))
# colnames(izbor.predmeti.po.izredni.krediti) <- latex.rotate(c("Št. vpisanih", "Št. odgovorov", "\\% odgovorov", "\\% zavrnitev", "\\% nesodelujočih",
# Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$po[-1]])),
# "\\textbf{Skupaj}", "Kompetence", as.character(vars.predmet$krediti$ime.kratko)))
#
# izbor.predmeti.po.izredni.krediti.tex <- c(capture.output(Hmisc::latex(izbor.predmeti.po.izredni.krediti,
# caption="Povprečja \\textbf{predmetov} (anketa PO izpitu),
# sortirana po \\textbf{Ustreznost KT}",
# rowlabel="",
# file="",
# where="H",
# multicol=FALSE,
# longtable=TRUE,
# lines.page=1000,
# col.just=c("c","c|","c","c","c|",rep_len("c", length(vars.predmet$cont$po[-1])),"|c","|c","c"),
# rowlabel.just="A{8cm}",
# insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
# } else {
# izbor.predmeti.po.izredni.krediti.tex <- "Ni ocen."
# }
####################################################################################
# PREVERI!!!!!!!!!!!
#-------------------- SET WORKING DIREKTORY -----------------------#
# Check which PC we are working from: WORk OR HOME
fpath <- file.path("C:/MIHA DELO/FDV PROJEKT EVALVACIJE UL/EVLAVACIJE 2018_2019 UPDATED")
if (!dir.exists(fpath)){
output_dir <- "E:/Work/Vasja Vehovar/EVLAVACIJE 2018_2019 UPDATED"
setwd(output_dir)
} else {
setwd(fpath)
}
#--------------------------------------- TRENDI IN AGREGATI ---------------------------------------#
########################################################################################################
} else {
izbor.predmeti.pred.redni.tex <- Niocen.pred
izbor.predmeti.pred.izredni.tex <- Niocen.pred
izbor.predmeti.po.redni.tex <- Niocen.po
izbor.predmeti.po.izredni.tex <- NULL
izbor.predmeti.po.redni.krediti.tex<- Niocen.po
izbor.predmeti.po.izredni.krediti.tex <- Niocen.po
progMeanPO.fak.skupaj.tex <- "Ni ocen"
izbor.predmeti.praksa.tex <- "Ni ocen"
izv.predmet.skupaj.tex <- "Ni ocen"
prog.PRED.I.tex <- Niocen.pred
prog.PRED.II.tex<- Niocen.pred
prog.PO.I.tex <- Niocen.po
prog.PO.II.tex <- Niocen.po
prog.KT.I.tex<- Niocen.po
prog.KT.II.tex <- Niocen.po
prog.IPP.II <- Niocen.pred
prog.IPP.I <- Niocen.pred
}
## /course averages/ ##
##################
# GENERIRANJE PDF#
##################
# # PREVERI!!!!!!!!!!!
# #-------------------- SET WORKING DIREKTORY -----------------------#
# # Check which PC we are working from: WORk OR HOME
# fpath <- file.path("C:/MIHA DELO/FDV PROJEKT EVALVACIJE UL/EVLAVACIJE 2018_2019 UPDATED")
#
# if (!dir.exists(fpath)){
# output_dir <- "E:/Work/Vasja Vehovar/EVLAVACIJE 2018_2019 UPDATED"
# setwd(output_dir)
# } else {
# setwd(fpath)
# }
# #------------------ //SET WORKING DIREKTORY// ---------------------#
tex.glava <- scan("Evalvacija/latexkosi/a-glava-program.tex", character(0), sep="\n", quiet=TRUE, encoding='UTF-8')
tex.glava <- gsub(pattern='!logo!', replacement=Hmisc::latexTranslate(logo), x=tex.glava) # Logo fakultete
tex.glava <- gsub(pattern='!leto!', replacement=Hmisc::latexTranslate(semester.leto), x=tex.glava) # Študijsko leto
tex.glava <- gsub(pattern='!encoding_r!', tolower(gsub("-","",localeToCharset(locale=Sys.getlocale("LC_CTYPE")))), x=tex.glava)
tex.glava <- gsub(pattern='!naslov!', replacement=Hmisc::latexTranslate(ime.fakultete), x=tex.glava) # Naslov poročila na prvi strani
tex.noga <- scan("Evalvacija/latexkosi/z-noga.tex", character(0), sep="\n", quiet=TRUE)
Rdirektorij <- getwd()
# Povprečja izvajalcev fakultete, ki ga nato zapišemo v podatkovni okvir izbor.tex
izvajalci.tex<- c("\\chapter{Povprečja po izvajalcih}",
paste("Pri izračunu povprečij za izvajalce imajo vsi predmeti (redni in izredni) enako težo,
ne glede na število študentov. V stolpcu \\guillemotright Št. predmetov\\guillemotleft \\ je
število vseh predmetov izvajalca, kjer so na anketo odgovarjali vsaj", minEnot, "študenti.
Podrobnosti so v metodoloških navodilih na koncu
poročila in na \\url{http://ul.1ka.si/metodologija}."),
izbor.izvajalci.skupaj.tex)
## //Povprečja izvajalcev fakultete// ##
# Posamezne latex tabele sestavimo v celoto <- izbor.tex, na podalgi katere nastane PDF poročilo
izbor.tex <- c(
"\\chapter{Redni študij}",
"\\renewcommand{\\leftmark}{Predmeti - redni študij}",
paste(
"V tabelah so prikazana povprečja na lestvicah,
kjer so študenti označili strinjanje s trditvami,
ki se nanašajo na komponente pedagoške izvedbe
(1 - »sploh se ne strinjam«, 2 »se bolj ne strinjam kot strinjam«,
3 –»niti se ne strinjam niti se strinjam«, 4 »se bolj strinjam kot ne strinjam«,
5- »popolnoma se strinjam«). Vprašalniki so na povezavi
\\url{http://ul.1ka.si/q}.
\\newline \\newline
Povprečja, ki ne dosegajo standarda 4.0 (3.0-3.9), so obarvana {\\color{Orange}oranžno},
kritično nizka povprečja (1.02.9) pa so obarvana {\\color{BrickRed}rdeče}.
Visoka povprečja (4.54.7), kjer je večina študentov podala oceno
»popolnoma se strinjam« (5), so obarvana {\\color{Chateau Green}zeleno},
najvišja (4.85.0) pa {\\color{Blue Stone}temnozeleno}.
\\newline \\newline
V primeru, ko so odgovorile manj kot 4 enote, povprečje ni prikazano,
ampak je navedena pika ».«. Ocene za povprečja, ki temeljijo na nizkem
številu enot (od 4 do 9) ali pa jih spremlja nizka stopnja sodelovanja,
so manj kakovostne, zato so označene z enojnim () oziroma z dvojnim oklepajem (()).
Zaradi preglednosti so oklepaji navedeni le v prvih petih vrsticah, torej pri
odgovarjajočem številu enot oziroma deležu sodelovanja, čeprav se to seveda nanaša na vsa povprečja v vrstici.
Podrobne analize in podrobna metodološka pojasnila so v celotnem poročilu.
\\newline \\newline
Vključeni so vsi predmeti, ki so se izvajali na prvih dveh stopnjah,
oznake BD oziroma BP pa pomenijo bolonjski dodiplomski oziroma podiplomski študij.
Podobno se oznake B1 in B2 nanašajo na (morebitni) prenovljeni študij na prvi in drugi stopnji.
\\newline \\newline
Podrobne analize in podrobna metodološka pojasnila so v celotnem poročilu.
Osnovna metodološka pojasnila se nahajajo tudi na \\url{http://ul.1ka.si/metodologija}."
),
"\\section{Predmeti}",
"\\subsection{Anketa PRED izpitom}",
izbor.predmeti.pred.redni.tex,
"\\newpage",
"\\subsection{Anketa PO izpitu}",
izbor.predmeti.po.redni.tex,
"\\newpage",
izbor.predmeti.po.redni.krediti.tex,
"\\newpage",
"\\renewcommand{\\leftmark}{Izvajalci pri predmetih - redni študij}",
"\\section{Izvajalci pri predmetih}",
izbor.izvajalci.redni.tex,
#-----------------------------------------------------
# UPDATE 31.10.2019 #
# Če ni ocen za izredni študij
# tega v poročilu ne prikažemo več
# } else {
# "Ni ocen za izredni študij."
# },
"\\newpage",
"\\renewcommand{\\leftmark}{Povprečja po izvajalcih}",
izvajalci.tex,
"\\chapter{Študijska praksa}",
"\\renewcommand{\\leftmark}{Študijska praksa}",
paste(
"Za evalvacijo študijske prakse velja enaka metodologija kot za anketo
PO izpitu, le komponente (vprašanja) so bile specifične.
Vprašalnik se nahaja na \\url{http://ul.1ka.si/praksa}."
),
izbor.predmeti.praksa.tex,
"\\newpage",
"\\chapter{Povprečja po študijskih programih}",
"\\renewcommand{\\leftmark}{Študijski programi}",
paste(
"Izračunana so povprečja po vseh predmetih (oziroma po vseh izvedbah pri predmetih),
rednih in izrednih, ki so jih ocenjevali študenti določenega študijskega programa.
Predmeti z veliko in malo študenti imajo enako težo. V stolpcu \\guillemotright Št. predmetov\\guillemotleft \\ je
skupno število predmetov (oziroma izvajalcev pri predmetih), kjer so odgovarjali vsaj",
minEnot,
"študenti.
Med predmete določenega programa so vključeni tudi prosto izbirni predmeti (oziroma izvajalci pri predmetih)
drugih programov, če so jih študenti obravnavanega programa izbrali.
Opozorilo: V primeru, da je zaradi premajhnega (pod 4) števila enot pri predmetih v oceno
programa vključeno malo predmetov (npr. 1 ali 2), potem so take ocene programa manj natančne."
),
"\\section{Dodiplomski študij}"
)
# Posamezne latex tabele sestavimo v celoto
# Sestavimo LATEX DOKUMENT, KI GA NATO ZAPIŠEMO V PDF: GLAVA(tex.glava), NAŠE VREDNOSTI OZ LATEX TABELE S TEKSTOM (izbor.tex),
# METODOLOŠKO POJASNILO NA KONCU (tex.okvir) in zaključim dokument z tex.noga
tex.izbor <- c(
tex.glava,
"\\setlength{\\tabcolsep}{4pt}",
izbor.tex,
"\\newpage",
"\\renewcommand{\\leftmark}{Metodološko pojasnilo}",
tex.okvir,
tex.noga
)
# Ker uporabljamo ukaz LONGTABLE, se pri lomljenju tabel pojavlja
# angleška beseda continued, ki jo zamenjanjamo z besedo nadaljevanje.
tex.izbor <-
gsub('(continued)', '(nadaljevanje)', tex.izbor, fixed = TRUE)
cat(unlist(tex.izbor), file=paste0("Evalvacija/results/",fakulteta,"/Programi/Fakulteta_",fakulteta,".tex", sep=""), sep="\n")
setwd(paste(Rdirektorij, 'Evalvacija/results',fakulteta, "/Programi", sep = '/'))
tools::texi2pdf(file=paste("Fakulteta_",fakulteta,".tex", sep=""), quiet=TRUE, clean=TRUE)
setwd(Rdirektorij)

View File

@ -1,400 +0,0 @@
# Updated by Miha 10.9.2019 #
# Modified by Miha 17.10.2019 #
#######################################
# EXPORT STUDENT EVALUATIONS TO EXCEL #
#######################################
# Za potrebe UL in posamezne èlanice UL
# bomo za vsako leto, izraèunane ocene
# komponent za izvajalce, IPP, predmete
# v anketi PO in v anketi PRED zapisali
# v excel bazo
# TO datoteko vsako leto posredujemo
# èlanici. Prav tako pa bo ta datoteka
# služila tudi ko bomo delali trende
# na nivoju Èlanice in trende na
# nivoju izvajalca
######################################
#' @NOTE: PREDHODNO JE POTREBNO POGNATI SKRIPTO 00_dataanalysis.r!!! (v kolikor še ni bila pognana)
#' IMPORTANT: v študijskem letu 18/19 v septembru smo kodo predelali,
#' kar pomeni, da v novih bazah namesto stolpca "predmet.ocena.SKUPAJ.pred" nastopa
#' predmet.ocena.SKUPAJ, podobno velja za ankeot PO!
#' TO JE POTREBNO USTREZNO nadomestiti, ko PRIDOBIVAMO ZADNJE PODATKE
#' ZA PREJŠNJA LETA TO NI POTREBNO
letoizpisa <- as.numeric(gsub("\\/\\d*", "", year))
if(letoizpisa >= 2018) {
predmet.ocena.SKUPAJ.pred <- "predmet.ocena.SKUPAJ"
predmet.ocena.SKUPAJ.po <- "predmet.ocena.SKUPAJ"
N_anket_po_izpitu <- "N_anket"
sodelujocih.pct_po_izpitu <- "sodelujocih.pct"
zavrnjenih.pct_po_izpitu <- "zavrnjenih.pct"
neodzivnih.pct_po_izpitu <- "neodzivnih.pct"
} else{
predmet.ocena.SKUPAJ.pred <- "predmet.ocena.SKUPAJ.pred"
predmet.ocena.SKUPAJ.po <- "predmet.ocena.SKUPAJ.po"
N_anket_po_izpitu <- "N_anket_po_izpitu"
sodelujocih.pct_po_izpitu <- "sodelujocih.pct_po_izpitu"
zavrnjenih.pct_po_izpitu <- "zavrnjenih.pct_po_izpitu"
neodzivnih.pct_po_izpitu <- "neodzivnih.pct_po_izpitu"
}
#-------------- POVPREÈJA, ŠT. ODGOVOROV IN ŠT. PREDMETOV ZA IZVAJALCE ----------------#
# which lecturers and courses should be included
# (all from predmeti.izbor and those from izvajalci.izbor that are also in predmeti.izbor)
predmeti.izbor <- povprecja.predmeti$predmet.sifra
if(letoizpisa >= 2018) {
predmeti.izbor.po <- povprecja.predmeti.po$predmet.sifra
}
izvajalci.izbor <- unique(povprecja.izvajalci$izvajalec.sifra)
# Podatki za izvajalce
izbor.izvajalci <-
subset(
povprecja.izvajalci,
predmet.sifra %in% predmeti.izbor &
izvajalec.sifra %in% izvajalci.izbor
)
# Vrednosti komponent izvajalcev agregiramo glede na
# šifro izvajalca in ime izvajalca in izraèunamo povpreèje
izbor.izvajalci.skupaj <-
aggregate(izbor.izvajalci[c(paste0(vars.izvajalec$cont$vars, "_mean"),
"izvajalec.ocena.SKUPAJ")],
by = izbor.izvajalci[c("izvajalec.sifra", "NAZIV.PEDAGOGA")],
FUN = mean,
na.rm = TRUE)
# how many courses each lecturer has with enough answers
st.predmetov <- aggregate(
izbor.izvajalci$N_anket >= minEnot,
by = izbor.izvajalci[c("izvajalec.sifra")],
FUN = sum,
na.rm = TRUE
)
# Also calculate number of all answers (število vseh dogovorov pri predmetih izvajalca)
st.odg <- aggregate(
izbor.izvajalci$N_anket,
by = izbor.izvajalci[c("izvajalec.sifra")],
FUN = sum,
na.rm = TRUE
)
# Skupni podatki za izvajalce, ki jih bomo izvozili v excel zavihek
izbor.izvajalci.skupaj <-
Reduce(
function(x, y)
merge(
x,
y,
by = "izvajalec.sifra",
all = TRUE,
sort = FALSE
) ,
list(
st.predmetov,
st.odg,
izbor.izvajalci.skupaj)
)
# Sort by skupno povpreèje komponent izvajalca
izbor.izvajalci.skupaj <-
izbor.izvajalci.skupaj[order(izbor.izvajalci.skupaj$izvajalec.ocena.SKUPAJ, decreasing = TRUE), ]
# Zaokrožimo vrednosti
izbor.izvajalci.skupaj[5:ncol(izbor.izvajalci.skupaj)] <-
round(izbor.izvajalci.skupaj[5:ncol(izbor.izvajalci.skupaj)], 1)
# Preuredimo vrstni red zaradi zapisa v Excel
izbor.izvajalci.skupaj <- izbor.izvajalci.skupaj %>%
dplyr::select(-izvajalec.sifra,-everything(), NAZIV.PEDAGOGA, everything())
# Colnames
colnames(izbor.izvajalci.skupaj)[1:11] <-
c("Izvajalec",
"Izvajalec id",
"št. predmetov",
"št. odgovorov",
"Kakovost",
"Pripravljenost",
"Razumljivost",
"Zanimivost",
"Kritiènost",
"Korektnost",
"SKUPAJ")
rownames(izbor.izvajalci.skupaj) <- make.unique(izbor.izvajalci.skupaj$Izvajalec)
izbor.izvajalci.skupaj$Izvajalec <- NULL
#------------- //POVPREÈJA, ŠT. ODGOVOROV IN ŠT. PREDMETOV ZA IZVAJALCE// --------------#
#-------- POVPREÈJA, ŠT. ODGOVOROV IN ŠT. PREDMETOV ZA IZVAJALCE PRI PREDMETIH ---------#
# IPP: K imenom izvajalcem dodamo tudi predmete za katere imajo ocene
rownames(izbor.izvajalci) <-
make.unique(paste0(
sapply(povprecja.izvajalci[rownames(izbor.izvajalci), "NAZIV.PEDAGOGA"], titula.rm),
" (",
povprecja.izvajalci[rownames(izbor.izvajalci), "ime.predmeta"],
")"
))
# izbor.izvajalci$IPP <-
# paste0(izbor.izvajalci$NAZIV.PEDAGOGA, " (", izbor.izvajalci$ime.predmeta , ")")
# IPP redni študij (NACIN_STUDIJA == "1")
izbor.ipp <-
izbor.izvajalci[c(
"STOPNJA",
"ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
paste0(vars.izvajalec$cont$vars, "_mean"),
"izvajalec.ocena.SKUPAJ",
"izvajalec.sifra",
"predmet.sifra"
)]
# Sortiramo v padajoèem vrstnem redu glede na skupno povpreèje komponent IPP
izbor.ipp <-
izbor.ipp[order(izbor.ipp$izvajalec.ocena.SKUPAJ, decreasing = TRUE), ]
# Združimo vrstice: povpreèje komponent izvajalcev in skupno povpreèje komponent izvajalcev
izbor.ipp[4:6] <- round(izbor.ipp[4:6], 0)
izbor.ipp[7:13] <- round(izbor.ipp[7:13], 1)
colnames(izbor.ipp)[1:15] <-
c(
"stopnja (1=BD, 2=PB)",
"št. vpisanih",
"št. odgovorov",
"% odgovorov",
"% zavrnitev",
"% nesodelujoèih",
"Kakovost",
"Pripravljenost",
"Razumljivost",
"Zanimivost",
"Kritiènost",
"Korektnost",
"SKUPAJ",
"Izvajalec id",
"Predmet id"
)
#------ //POVPREÈJA, ŠT. ODGOVOROV IN ŠT. PREDMETOV ZA IZVAJALCE PRI PREDMETIH// -------#
#-------- POVPREÈJA, ŠT. ODGOVOROV IN ŠT. PREDMETOV ZA PREDMETE (ANKETA PRED) ---------#
# Izberemo predmete, ki so imeli dovolj enot
izbor.predmeti <- subset(povprecja.predmeti, predmet.sifra %in% predmeti.izbor)
povprecja.predmeti <- povprecja.predmeti[!(is.na(povprecja.predmeti$ime.predmeta)), ]
rownames(izbor.predmeti) <- make.unique(povprecja.predmeti[rownames(izbor.predmeti), "ime.predmeta"])
# Podatki potrebni za zapis v excel zavihek
izbor.predmeti.pred <-
izbor.predmeti[c(
"STOPNJA",
"ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
paste0(vars.predmet$cont$pred, "_mean"),
predmet.ocena.SKUPAJ.pred,
"predmet.sifra"
)]
# Sortiramo po skupnem povpreèju sedmih komponent predmeta
izbor.predmeti.pred <-
izbor.predmeti.pred[order(
izbor.predmeti.pred[predmet.ocena.SKUPAJ.pred],
decreasing = TRUE
), ]
# Round number
izbor.predmeti.pred[4:6] <- round(izbor.predmeti.pred[4:6], 0)
izbor.predmeti.pred[7:14] <- round(izbor.predmeti.pred[7:14], 1)
# Add colnames
colnames(izbor.predmeti.pred)[1:15] <-
c(
"stopnja (1=BD, 2=PB)",
"št. vpisanih",
"št. odgovorov",
"% odgovorov",
"% zavrnitev",
"% nesodelujoèih",
"Zadovoljstvo",
"Usklajenost",
"Samostojnost",
"Literatura",
"Obvešèenost",
"Informiranost",
"Preverjanje",
"SKUPAJ",
"Predmet id"
)
#------ //POVPREÈJA, ŠT. ODGOVOROV IN ŠT. PREDMETOV ZA PREDMETE (ANKETA PRED)// -------#
#-------- POVPREÈJA, ŠT. ODGOVOROV IN ŠT. PREDMETOV ZA PREDMETE (ANKETA PO) ---------#
if(letoizpisa >= 2018) {
izbor.predmeti.PO <- subset(povprecja.predmeti.po, predmet.sifra %in% predmeti.izbor.po)
povprecja.predmeti.po <- povprecja.predmeti.po[!(is.na(povprecja.predmeti.po$ime.predmeta)), ]
rownames(izbor.predmeti.PO) <- make.unique(povprecja.predmeti.po[rownames(izbor.predmeti.PO), "ime.predmeta"])
} else{
izbor.predmeti.PO <- izbor.predmeti
}
izbor.predmeti.po <-
izbor.predmeti.PO[c(
"STOPNJA",
"ST_STUD",
N_anket_po_izpitu,
sodelujocih.pct_po_izpitu,
zavrnjenih.pct_po_izpitu,
neodzivnih.pct_po_izpitu,
paste0(vars.predmet$cont$po, "_mean"),
predmet.ocena.SKUPAJ.po,
"predmet.ocena.krediti_mean",
"predmet.sifra"
)]
# Order by total mean of three components of anketa PO
izbor.predmeti.po <-
izbor.predmeti.po[order(izbor.predmeti.po[predmet.ocena.SKUPAJ.po],
decreasing = TRUE),]
# Round number
izbor.predmeti.po[4:6] <- round(izbor.predmeti.po[4:6], 0)
izbor.predmeti.po[7:12] <- round(izbor.predmeti.po[7:12], 1)
# Kompetence in Ustreznost kreditnih toèk prikažemo na koncu tabele
izbor.predmeti.po <- izbor.predmeti.po %>%
dplyr::select(
-predmet.ocena.kompetence_mean,
-predmet.ocena.krediti_mean,
-predmet.sifra,
everything()
)
# Add colnames
colnames(izbor.predmeti.po)[1:13] <-
c(
"stopnja (1=BD, 2=PB)",
"št. vpisanih",
"št. odgovorov",
"% odgovorov",
"% zavrnitev",
"% nesodelujoèih",
"Vsebine",
"Naloge",
"Kriteriji",
"SKUPAJ",
"Kompetence",
"Ustreznost KT",
"Predmet id"
)
#------ //POVPREÈJA, ŠT. ODGOVOROV IN ŠT. PREDMETOV ZA PREDMETE (ANKETA PO)// -------#
#======================#
# UPDATE 17. 10. 2019 #
#======================#
# Po novem bomo v Excel za èlanice
# zapisali tudi ocene za študijsko prakso
#------------------------------- ŠTUDIJSKA PRAKSA ---------------------------#
izbor.predmeti.praksa <-
izbor.predmeti.PO[izbor.predmeti.PO$PRAKSA == 1,c(
"STOPNJA",
"ST_STUD",
N_anket_po_izpitu,
sodelujocih.pct_po_izpitu,
zavrnjenih.pct_po_izpitu,
neodzivnih.pct_po_izpitu,
paste0(vars.predmet$cont$praksa, "_mean"),
"predmet.ocena.SKUPAJ.praksa",
"predmet.sifra",
"PRAKSA"
)]
# Order by total mean of three components of anketa PO
izbor.predmeti.praksa <-
izbor.predmeti.praksa[order(izbor.predmeti.praksa["predmet.ocena.SKUPAJ.praksa"],
decreasing = TRUE),]
# Round number
izbor.predmeti.praksa[4:6] <- round(izbor.predmeti.praksa[4:6], 0)
izbor.predmeti.praksa[7:16] <- round(izbor.predmeti.praksa[7:16], 1)
# Add colnames
colnames(izbor.predmeti.praksa)[1:18] <-
c(
"stopnja (1=BD, 2=PB)",
"št. vpisanih",
"št. odgovorov",
"% odgovorov",
"% zavrnitev",
"% nesodelujoèih",
"Ponudba",
"Pomoè",
"Navodila",
"Notranji mentor",
"Sodel. mentorjev",
"Strok. kompetence",
"Zunanji mentorji",
"Naèin izvajanja",
"Dolžina",
"SKUPAJ",
"Predmet id",
"PRAKSA"
)
#----------------------------- //ŠTUDIJSKA PRAKSA// -------------------------#
#----------------------- EXPORT TO EXCEL -------------------------#
library(xlsx)
# Data
files <-
list(izbor.izvajalci.skupaj,
izbor.ipp,
izbor.predmeti.pred,
izbor.predmeti.po,
if (nrow(izbor.predmeti.praksa) > 0) {
izbor.predmeti.praksa})
# Sheetnames
name <-
c(
"IZVAJALCI",
"IZVAJALCI PRI PREDMETIH",
"PREDMETI (ANKETA PRED)",
"PREDMETI (ANKETA PO)",
if (nrow(izbor.predmeti.praksa) > 0) {
"PRAKSA (ANKETA PO)"
}
)
# Create excel file with 4 or 5 sheets (PRAKSA)
for (i in seq_along(files[!sapply(files, is.null)])) {
# Write to excel
write.xlsx(
x = files[[i]],
#' spremenljivka @year je deklarirana v osnovni kodi
file = paste0("Excel rezultati_",fakulteta,"_",gsub("[/]", "_", year),".xlsx"),
sheetName = name[i],
row.names = TRUE,
append = TRUE
)
}
#---------------------- //EXPORT TO EXCEL// -----------------------#

View File

@ -1,478 +0,0 @@
# KODO JE POTEREBNO NUJNO PREDELTAI, KER GRE ZA KODO IZ 2016!!!!
# A se vrnemo nazaj konec leta
# PREVERI!!!!!!!!!!!
#-------------------- SET WORKING DIREKTORY -----------------------#
# Check which PC we are working from: WORk OR HOME
fpath <- file.path("C:/MIHA DELO/FDV PROJEKT EVALVACIJE UL/EVLAVACIJE 2018_2019 UPDATED")
if (!dir.exists(fpath)){
output_dir <- "E:/Work/Vasja Vehovar/EVLAVACIJE 2018_2019 UPDATED"
setwd(output_dir)
} else {
setwd(fpath)
}
#------------------ //SET WORKING DIREKTORY// ---------------------#
# run first
#params <- commandArgs(trailingOnly=TRUE)
#ID <- params[1]
#sesionID <- params[2] #Dodajanje števil na koncu pdf/tex datotek za Petra
#source("Evalvacija/R/koda.r")
sortByAverage <- TRUE # if true sort by average, else by name
sortbykrediti<-TRUE #if true sort by krediti (izbor.predmeti.po.redni.krediti, izbor.predmeti.po.izredni.krediti)
# which lecturers and courses should be included (all from predmeti.izbor)
predmeti.izbor <- povprecja.predmeti.po$predmet.sifra
# making latex file
izbor.tex <- NULL
## course averages ##
izbor.predmeti <- subset(povprecja.predmeti.po, predmet.sifra %in% predmeti.izbor)
completeFun <- function(data, desiredCols) {
completeVec <- complete.cases(data[, desiredCols])
return(data[completeVec, ])
}
izbor.predmeti <- completeFun(izbor.predmeti, "ime.predmeta")
if (nrow(izbor.predmeti) > 0) {
rownames(izbor.predmeti) <- make.unique(povprecja.predmeti.po[rownames(izbor.predmeti), "ime.predmeta"])
#POROÈILO ZA PREDMETE KI VSEBUJEJO PRAKSO
izbor.predmeti.praksa1 <- izbor.predmeti[c("ST_STUD","N_anket","sodelujocih.pct",
"zavrnjenih.pct","neodzivnih.pct",
paste0(vars.predmet$cont$praksa,"_mean"),
"predmet.ocena.SKUPAJ.praksa", "PRAKSA")]
izbor.predmeti.praksa1 <- izbor.predmeti[izbor.predmeti$PRAKSA==1 ,"predmet.sifra"]
part <- NULL
predmeti <- NULL
if (all(!is.na(izbor.predmeti.praksa1))) {
for (predmet in as.character(izbor.predmeti.praksa1)) {
povprecja.predmet.temp <- subset(povprecja.predmeti.po, predmet.sifra==predmet)
data.predmet.temp <- subset(data.predmeti.po, predmet.sifra==predmet & (veljavna))
## stopnja sodelovanja ##
sodelujocih <- povprecja.predmet.temp$N_anket
stopnjaPredmeta <- povprecja.predmet.temp$STOPNJA
if (stopnjaPredmeta==1) {
FDVstring <- c('dodiplomskih', paste(fakulteta, "povpreèje\n(dodiplomski)"))
} else if (stopnjaPredmeta==2) {
FDVstring <- c('podiplomskih', paste(fakulteta, "povpreèje\n(podiplomski)"))
} else {
warning(paste('predmet', povprecja.predmet.temp$ime.predmeta, 'ni ne 1. ne 2. stopnja'))
FDVstring <- ''
}
imepredmeta <- sub("^BD |^BP ", "", povprecja.predmet.temp$ime.predmeta) # ime brez BD/BP predpone
pdf(paste("Evalvacija/results/",fakulteta,"/part-predmet-slike/",predmet,"_dejmoprobat5.pdf", sep=''), family='sans', pointsize=9, width=6, height=3.25)
par(mar=(c(4, 4, 1, 13) + 0.1), mgp=c(3, 2, 0), xpd=TRUE)
## Make the matrix for barplot
mat.po <- cbind(c(povprecja.predmet.temp$sodelujocih.pct, povprecja.predmet.temp$zavrnjenih.pct, povprecja.predmet.temp$neodzivnih.pct),
c(Fpo[as.character(stopnjaPredmeta),"sodelujocih.pct"], Fpo[as.character(stopnjaPredmeta),"zavrnjenih.pct"],
Fpo[as.character(stopnjaPredmeta),"neodzivnih.pct"]))
## Get the y-values for text
ys.po <- apply(mat.po, 2, function(x) c(x[1]/2, head(cumsum(x),-1) + tail(x,-1)/2))
## Make barplot, store x data
xs.po <- barplot(mat.po, names.arg=c('Predmet\n', FDVstring[2]), col=c("firebrick3", "dodgerblue3", "mistyrose1"), ylim=c(0,100), space=c(0,1))
## Add text
text(rep(xs.po, each=nrow(ys.po)), c(ys.po), labels=paste0(round(c(mat.po), 0),"%"))
legend("topright", inset=c(-0.55, 0), legend=c("Ni pristopil", "Zavrnili sodelovanje", "Odgovarjal"), col=c("mistyrose1", "dodgerblue3", "firebrick3"), lty=1, lwd=2, bty='n')
dev.off()
# Tekst
tex.sodelovanje1 <- c(paste0("Na evalvacijski vprašalnik o študijski praksi za predmet \\guillemotright ",
imepredmeta, "\\guillemotleft \\ PO izpitu je (vsaj deloma) odgovarjalo ",
paste0(povprecja.predmet.temp$N_anket), " od skupno ",
povprecja.predmet.temp$ST_STUD,
" študentov, kar je \\textbf{", round(povprecja.predmet.temp$sodelujocih.pct),
"\\%} vseh vpisanih študentov. ",
"Povpreèje ", FDVstring[1], " predmetov ", fakulteta, " je sicer
znašalo \\textbf{", round(Fpo[as.character(stopnjaPredmeta),
"sodelujocih.pct"]), "\\%}."),
"\\begin{figure}[H]", "\\caption{Struktura študentov glede na odgovarjanje (\\%) - študijska praksa}",
paste0("\\centerline{\\includegraphics[width=0.85\\textwidth]{part-predmet-slike/",
predmet, "_dejmoprobat5.pdf}}"), "\\end{figure}")
# Generiranje tabel
tabela.praksa <- cbind.data.frame(
N=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_N")]),
mean=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_mean")]),
sd=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_sd")]),
min=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_min")]),
max=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_max")]))
povprecja.praksa <- tabela.praksa$mean
tabela.praksa[is.na(tabela.praksa)] <- "."
if (min(as.numeric(tabela.praksa$N)) < minEnot) {
opomba <- '{\\footnotesize { Podatek ni prikazan zaradi majhnega števila enot.}}'
} else {opomba <- "{\\footnotesize {}}"}
# Faculty mean for all courses
F.praksa <- data.frame(F.avg.po[paste0(vars.predmet$cont$praksa,"_mean")])
colnames(F.praksa) <- 'Fmean'
tabela.praksa <- cbind(tabela.praksa, F.praksa)
tabela.praksa <- rbind(tabela.praksa, c('', povprecja.predmet.temp$predmet.ocena.SKUPAJ.praksa, '', '', '', mean(tabela.praksa$Fmean, na.rm=TRUE)))
tabela.contR.praksa <- formatval(tabela.praksa)
rownames(tabela.contR.praksa) <- c(Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.dolgo[vars.predmet$cont$praksa])), '\\hline\n\\textbf{Skupaj}')
# rownames(tabela.contR)[length(vars.predmet$cont$ime.dolgo[vars.predmet$cont$pred]) + 1] <- paste0("\\hline\n", rownames(tabela.contR)[length(vars.predmet$cont$ime.dolgo[vars.predmet$cont$pred]) + 1]) # a line seperating questions before/after exam
colnames(tabela.contR.praksa) <- c('n', 'povpreèje', 'sd', 'min', 'max', 'povpreèje')
tabela.contR.praksa.tex1 <- capture.output(Hmisc::latex(toLatex(tabela.contR.praksa),
caption="Povpreèje komponent študijske prakse (lestvica 1-5)",
rowlabel='',
file='',
where='H',
cgroup=c("Predmet", fakulteta),
n.cgroup=c(5,1),
col.just=rep_len('c', ncol(tabela.contR.praksa)),
rowlabel.just='p{9.5cm}',
insert.bottom=opomba))
if (sum(!is.na(povprecja.praksa)) < 4) {povprecja.praksa <- povprecja.praksa[!is.na(povprecja.praksa)] <- NA} # èe so bile 3 zaporedne vrednosti je nastala èudna ærta zato reèeno da naj bodo najmanj 4
radar.cont <- data.frame(rbind(5, 1, t(cbind(F.praksa, as.numeric(povprecja.praksa)))), row.names=1:4, check.names=F)
colnames(radar.cont) <- sub(" ", "\n", as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa]))
radar.f <- radar.cont
star.radar2 <- as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa])
colnames(radar.f) <- sub(" ", "\n", star.radar2)
CairoPDF(paste0('Evalvacija/results/',fakulteta,'/part-predmet-slike/', predmet, '_radar.pdf'), family='sans', pointsize=9, width=6, height=4)
par(mar=(c(0, 4, 1, 6) + 0.1), xpd=TRUE)
fmsb::radarchart(radar.f, pcol=c('dodgerblue3','firebrick3'), cglcol='gray75', plwd=2, plty=1, cglwd=1, cglty=1, seg=4, axistype=1, caxislabels=c(1:5), axislabcol='gray25', centerzero=TRUE)
legend('topright', inset=c(-0.15, 0), legend=c("Predmet", paste(fakulteta, "povpreèje")), col=c('firebrick3', 'dodgerblue3'), lty=1, lwd=2, bty='n')
dev.off()
# Porazdelitev odgovorov
porazdelitev1 <- t(sapply(data.predmet.temp[,vars.predmet$cont$praksa], function(x) table(factor(x, levels=someMiss.po))))
# samo kjer je dovolj enot
porazdelitev1[rowSums(porazdelitev1) < minEnot,] <- NA
porazdelitev1 <- cbind(porazdelitev1, rowSums(porazdelitev1, na.rm=TRUE))
porazdelitev1[is.na(porazdelitev1)] <- "."
##
rownames(porazdelitev1) <- c(Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa])))
colnames(porazdelitev1) <- c("\\textbf{1}","\\textbf{2}","\\textbf{3}","\\textbf{4}","\\textbf{5}","\\textbf{Ne želim odgovoriti}","\\textbf{Nimam dovolj informacij}","\\textbf{Skupaj}")
porazdelitev1.tex <- capture.output(Hmisc::latex(porazdelitev1, caption='Podrobna porazdelitev odgovorov za ocene komponent \\textbf{študijske prakse}', rowlabel='\\textbf{Komponente}', file='', where='H', col.just=rep_len('c', ncol(porazdelitev1)), insert.bottom=opomba))
## /podrobna porazdelitev1 ocen/ ##
data.text1 <- lapply(data.predmet.temp[vars.predmet$text$vars[-c(1,2,3)]], trim)
for (textvar in names(data.text1)){
# odstranimo nezaželene stringe pri komentarjih
# backslashi v komentarjih so hudo nadležni amapk jih zaradi latexTranslate in LL ne moremo takoj zamenjat za \textbackslash
data.text1[[textvar]] <- gsub(pattern='\\\\', replacement='!backslash!', x=data.text1[[textvar]][!data.text1[[textvar]] %in% junk.komentar])
}
tex.text1 <- NULL
for (textvar in names(data.text1)) {
komentarji <- data.text1[[textvar]]
if (length(komentarji) > 0) { # èe je kakšen komentar
komentarji <- reports::LL(text=Hmisc::latexTranslate(komentarji), copy2clip=FALSE, enumerate=FALSE)
komentarji <- gsub(pattern='!backslash!', replacement='\\\\textbackslash ', x=komentarji)
komentarji <- gsub(pattern='€', replacement='e', x=komentarji)
komentarji <- gsub(pattern='…', replacement='...', x=komentarji)
tex.text1 <- append(tex.text1, append(paste('\\subsection{', vars.predmet$text$ime.dolgo[[textvar]], '}', sep=''), komentarji))
} else {
tex.text1 <- append(tex.text1, append(paste('\\subsection{', vars.predmet$text$ime.dolgo[[textvar]], '}', sep=''), '- Ni podanih komentarjev. -'))
}
}
# tex.sodelovanje2 <- c(paste0("Na evalvacijski vprašalnik o študijski praksi za predmet \\guillemotright ", imepredmeta, "\\guillemotleft \\ PO izpitu je (vsaj deloma) odgovarjalo ", paste0(povprecja.predmet.temp$N_anket), " od skupno ", povprecja.predmet.temp$ST_STUD, " študentov, kar je \\textbf{", round(povprecja.predmet.temp$sodelujocih.pct), "\\%} vseh vpisanih študentov. ",
# "Povpreèje ", FDVstring[1], " predmetov ", fakulteta, " je sicer znašalo \\textbf{", round(Fpo[as.character(stopnjaPredmeta),"sodelujocih.pct"]), "\\%}."),
# "\\begin{figure}[H]", "\\caption{Struktura študentov glede na odgovarjanje (\\%) - študijska praksa}", paste0("\\centerline{\\includegraphics[width=0.85\\textwidth]{part-predmet-slike/", predmet, "_dejmoprobat5.pdf}}"), "\\end{figure}")
part$predmet[[predmet]]<-c(paste0("\\chapter{", imepredmeta,"}", sep=""),
"\\section{Podrobne analize odgovorov}",tabela.contR.praksa.tex1,
"\\begin{figure}[H]", "\\caption{Povpreèja kategorij odgovorov za komponente \\textbf{prakse}}",
paste0('\\centerline{\\includegraphics[width=0.85\\textwidth]{../part-predmet-slike/', predmet, '_radar.pdf}}'), "\\end{figure}",
porazdelitev1.tex, tex.text1)
}
izbor.predmeti.praksa <- izbor.predmeti[c("ST_STUD","N_anket","sodelujocih.pct",
"zavrnjenih.pct","neodzivnih.pct",
paste0(vars.predmet$cont$praksa,"_mean"),"predmet.ocena.SKUPAJ.praksa",
"PRAKSA","predmet.sifra")]
izbor.predmeti.praksa <- izbor.predmeti[izbor.predmeti$PRAKSA==1 ,c("ST_STUD","N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
paste0(vars.predmet$cont$praksa,"_mean"),
"predmet.ocena.SKUPAJ.praksa","predmet.sifra")]
izbor.predmeti.praksa <- izbor.predmeti.praksa[,-which(names(izbor.predmeti.praksa) == "predmet.sifra")]
if (nrow(izbor.predmeti.praksa) > 0) {
# PRED - redni
if (any(is.na(izbor.predmeti.praksa)) &
any((!is.na(izbor.predmeti.praksa)) == "--")) {
opomba <- c(
". Podatek ni prikazan zaradi majhnega števila enot.",
"- Podatek je manj pomemben ali težko izraèunljiv."
)
} else if (any(is.na(izbor.predmeti.praksa))) {
opomba <- ". Podatek ni prikazan zaradi majhnega števila enot."
} else {
opomba <- NULL
}
if (sortByAverage) {
izbor.predmeti.praksa <- izbor.predmeti.praksa[order(izbor.predmeti.praksa$predmet.ocena.SKUPAJ.praksa, izbor.predmeti.praksa$N_anket, decreasing=TRUE),]
rownames(izbor.predmeti.praksa) <- make.unique(formatProgImena(rownames(izbor.predmeti.praksa), izbor.predmeti.praksa$predmet.ocena.SKUPAJ.praksa))
} else { # sort by name
izbor.predmeti.praksa <- izbor.predmeti.praksa[order(rownames(izbor.predmeti.praksa), decreasing=FALSE),]
}
izbor.predmeti.praksa <- rbind(izbor.predmeti.praksa, colMeans(izbor.predmeti.praksa, na.rm=TRUE))
izbor.predmeti.praksa <- formatval(izbor.predmeti.praksa)
rownames(izbor.predmeti.praksa)[nrow(izbor.predmeti.praksa)] <- "\\hline \\textbf{Povpreèje fakultete (študijska praksa)}"
colnames(izbor.predmeti.praksa) <- latex.rotate(c("št. vpisanih", "št. odgovorov", "\\% odgovorov", "\\% zavrnitev", "\\% nesodelujoèih", Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa])), "\\textbf{Skupaj}"))
izbor.predmeti.praksa.tex <- c(capture.output(Hmisc::latex(izbor.predmeti.praksa,
caption="Povpreèje komponent študijske prakse (sortirano po povpreèju \\textbf{Skupaj})",
rowlabel="",
file="",
where="H",
multicol=FALSE,
longtable=TRUE,
lines.page=1000,
col.just=c("c","c|","c","c","c|",rep_len("c", length(vars.predmet$cont$praksa)),"|c"),
rowlabel.just="p{4cm}",
insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
} else {
izbor.predmeti.praksa.tex <- "Ni ocen."
}
##############################
} else {
izbor.predmeti.praksa.tex <- "Ni ocen."
}
} else {
izbor.predmeti.praksa.tex <- "Ni ocen."
}
## /course averages/ ##
####################
# UPDAte 20.9.2019 #
####################
# Po novem bomo v poroèilo prakse zapisali tudi trende
# V ta namen smo zapisali podatke v
# C:\MIHA DELO\FDV PROJEKT EVALVACIJE UL\EVALVACIJE 2018_2019 PREDELAVA\AVGUST UPDATE KODE\Test Nove kode\FDV\Evalvacija\results\praksa\data
praksa.file <- list.files(path = paste0("Evalvacija/results/",fakulteta,"/praksa/data"), pattern = "povprecja.praks.")
# PO (inlcuding kompetence, praksa, KT) -----
# V zadnjem letu (2019) smo kodo predelali tako, da v
# Anketi PO, število v za posamezen predmet ali izvajalca ni poimenovano
# veè kot "N_anket_po_izpitu" ampak kot "N_anket". Zato to ustrezno
# preimenujemo, saj imamo pri prejšnjih letih
# N_anket_po_izpitu
imen.c <- function(x) {
ifelse(
!"N_anket_po_izpitu" %in% colnames(x),
colnames(x)[colnames(x) == "N_anket"] <-
"N_anket_po_izpitu",
colnames(x)
)
return(x)
}
# Import data
praksa.trend <-
lapply(praksa.file, function(x)
read.csv2(paste0("Evalvacija/results/",fakulteta,"/praksa/data/",x), stringsAsFactors = FALSE, header = TRUE))
# Neželjeni stolpci za potrebe latex tabele
stol.omit <-
c(
"sodelujocih.pct_po_izpitu",
"zavrnjenih.pct_po_izpitu",
"neodzivnih.pct_po_izpitu",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
"predmet.ocena.SKUPAJ.praksa"
)
praksa.tr <- praksa.trend %>%
lapply(., imen.c) %>%
lapply(., tidy.m) %>%
lapply(., function(x) x[!colnames(x) %in% stol.omit]) %>%
reduce(full_join, by = "X")
# Za potrebe latex tabelo potrebujemo še leta,
# za aktere imamo podatke
praksa.year <- praksa.trend %>%
lapply(., imen.c) %>%
lapply(., function(x) x[!colnames(x) %in% stol.omit])
#
leto.pr <- data.frame(leto = unique(do.call(rbind, praksa.year)$year))
#Združimo trende in morebitne agregate za otrebe latex tabele
praksa.tr <-
suppressWarnings(merge(
praksa.tr,
agregati.praksa,
by.x = "X",
by.y = "ime.predmeta",
all.x = TRUE
))
# Podatki, ki jih potrebujemo v latex tabeli
praksa.tr <-
praksa.tr[grepl("X|N_anket|SKUPAJ", colnames(praksa.tr))]
# Imena vrstic v latex tabeli bodo imena predmetov
rownames(praksa.tr) <- make.unique(praksa.tr$X)
# Ta potrebe latex tabele to odstranimo saj stolpca
# z imeni predmetov veè ne potrebujemo
praksa.tr$X <- NULL
# Preverimo ali se katero leto doloèen predmet na programu
# ni izvajal in to oznaèimo z "--"
praksa.tr <- agreg.prog(praksa.tr, dtLeto = leto.pr)
# Final data for latex table
praksa.tr <- praksa.tr[grepl("^SKUPAJ|stolpec", colnames(praksa.tr))]
# preserve base data frame rownames upon filtering in dplyr chain
library(tibble)
praksa.tr <- praksa.tr %>%
rownames_to_column('x') %>%
filter_at(vars(starts_with("SKUPAJ")), any_vars(!. %in% c(".", "--"))) %>%
column_to_rownames('x')
# trend.praksa.tex <- tb.lat(
# praksa.tr,
# tabname = "Povpreèja za agregirane ocene devetih komponent \\textbf{študijske prakse} (anketa PO izpitu)",
# "A{8cm}",
# namen = "TRENDI"
# )
trend.praksa.tex <- tabelaProg(
praksa.tr ,
imetabele = "Povpreèja za agregirane ocene devetih komponent \\textbf{študijske prakse} (anketa PO izpitu) sortirana po abecedi",
dtLeto = leto.pr
)
#################
# GENERIRANJE PDF
################
tex.glava <- scan("Evalvacija/latexkosi/a-glava-praksa.tex", character(0), sep="\n", quiet=TRUE, encoding="UTF-8")
tex.glava <- gsub(pattern='!leto!', replacement=Hmisc::latexTranslate(semester.leto), x=tex.glava)
tex.glava <- gsub(pattern='!logo!', replacement=Hmisc::latexTranslate(logo), x=tex.glava) # Logo fakultete
tex.glava <- gsub(pattern='!naslov!', replacement=Hmisc::latexTranslate(ime.fakultete), x=tex.glava)
tex.noga <- scan("Evalvacija/latexkosi/z-noga.tex", character(0), sep="\n", quiet=TRUE)
Rdirektorij <- getwd()
izbor.tex <-
c("\\chapter{Študijska praksa}", if (any(izbor.predmeti.praksa.tex != "Ni ocen.")) {
c(
"V tabelah so prikazana povpreèja na lestvicah,
kjer so študenti oznaèili strinjanje s trditvami,
ki se nanašajo na komponente pedagoške izvedbe (1 - »sploh se ne strinjam«,
2 »se bolj ne strinjam kot strinjam«, 3 –»niti se ne strinjam niti se strinjam«,
4 »se bolj strinjam kot ne strinjam«, 5- »popolnoma se strinjam«).
Vprašalniki so na povezavi \\url{http://ul.1ka.si/q}.
\\newline \\newline
Povpreèja, ki ne dosegajo standarda 4.0 (3.0-3.9), so obarvana {\\color{Orange}oranžno},
kritièno nizka povpreèja (1.0-2.9) pa so obarvana {\\color{BrickRed}rdeèe}.
Visoka povpreèja (4.5-4.7), kjer je veèina študentov podala oceno
»popolnoma se strinjam« (5), so obarvana {\\color{Chateau Green}zeleno},
najvišja (4.8-5.0) pa {\\color{Blue Stone}temnozeleno}.
\\newline \\newline
Ocene za povpreèja, ki temeljijo na nizkem številu enot (od 4 do 9), ali pa jih
spremlja nizka stopnja sodelovanja, so manj kakovostne, zato so oznaèene z
enojnim () oziroma z dvojnim oklepajem (()).
Natanèno število vpisanih in sodelujoèih študentov je navedeno v pregledu trendov po predmetih.
Oznaka »--« pomeni, da se predmet v doloèenem letu ni izvajal ali pa
odgovarjajoèi pedagog ni bil vkljuèen med izvajalce. Nadaljnje podrobnosti
so v Metodoloških pojasnilih na koncu poroèila.
Osnovna metodološka pojasnila se nahajajo tudi na
\\url{http://ul.1ka.si/metodologija}.",
izbor.predmeti.praksa.tex
)
} else {
"Za študijsko prakso ni ocen."
})
# Trendi
tr.pr <- c("\\chapter{Trendi za ocene komponent študijskih praks}",
"V primeru, ko so odgovarjale manj kot štiri enote,
izraèun povpreèje za odgovarjajoèe leto ni prikazan,
je pa pridružen izraèunu za agregirano povpreèje za veè let.
Pri tem so uporabljene naslednje oznake:
\\begin{itemize}
\\item » predmet se je izvajal, vendar so odgovorile manj kot štiri enote (0, 1, 2 ali 3);
\\item »--« predmet se ni izvajal ali pa odgovarjajoèi pedagog ni bil vkljuèen med izvajalce;
\\item »a« nadomešèa oznako », kadar je bilo v doloèenem letu premalo enot (manj kot štiri), hkrati pa skupno število enot v zaporedju celic s premajhnim številom enot doseže vsaj štiri (4), kar omogoèa izraèun agregiranega povpreèja, ki se nahaja v stolpcu »Povp. a«;
\\item »b« ima podoben pomen, kot »a« in se pojavi v primerih, ko je iz celic s premalo enotami mogoèe oblikovati dve zaporedji, vsako z vsaj štirimi enotami, kar omogoèa izraèun dveh agregiranih povpreèij v stolpcih »Povp. a« oziroma »Povp. b«;
\\item 3.6\\textsuperscript{a} oziroma 3.6\\textsuperscript{b} pomeni agregirano povpreèje za vse celice, ki so oznaèena z »a« ali »b«;
\\item (3.6), (3.6)\\textsuperscript{a} ali (3.6)\\textsuperscript{b} enojni oklepaj pomeni, da se povpreèje nanaša le na 5-9 enot;
\\item ((3.6)), ((3.6))\\textsuperscript{a} ali ((3.6))\\textsuperscript{b} dvojni oklepaj pomeni, da se povpreèje nanaša le na 4 enote.
\\end{itemize}
Podroben opis in ilustracija postopka se nahaja v
Metodoloških pojasnilih in tudi na \\url{http://ul.1ka.si/agregati/ul.1ka.si/agregati}.",
trend.praksa.tex)
izbor.tex <-
gsub('(continued)', '(nadaljevanje)', izbor.tex, fixed = TRUE)
tex.izbor <-
c(
tex.glava,
izbor.tex,
part$predmet,
"\\newpage",
tr.pr,
"\\newpage",
tex.okvir,
tex.noga
)
# Ker uporabljamo ukaz LONGTABLE, se pri lomljenju tabel pojavlja
if (sortByAverage) {sortiranjetext <- "po_povprecju"} else {sortiranjetext <- "po_imenih"}
#write.table(tex.izbor, file=paste0("Praksa_", sortiranjetext,"_", fakulteta, ".tex"), sep="\t",append=F)
cat(unlist(tex.izbor), file=paste0("Evalvacija/results/",fakulteta,"/praksa/Studijska_praksa_", fakulteta, ".tex"), sep="\n")
setwd(paste(Rdirektorij, 'Evalvacija/results',fakulteta, "/praksa", sep = '/'))
#lapply(unlist(tex.izbor), write, file=paste0("Praksa_", sortiranjetext,"_", fakulteta, ".tex"), append=TRUE, ncolumns=1000)
tools::texi2pdf(file=paste0("Studijska_praksa_", fakulteta, ".tex"), quiet=TRUE, clean=TRUE)
setwd(Rdirektorij)
# SAVE THE DATA
#source("Evalvacija/R/data_trendi_praksa_faculty.r")

View File

@ -1,158 +0,0 @@
# ------------------------- DEFINE FACULTY ID -------------------------------#
# Opredelimo ID fakultete, ki skrbi za to da se v poročilu (kjer je dogovorjeno) izpiše kratice fakultete,
# ime fakultete ter izriše logo fakultete.
# (glej poročilo za izvajalca, ki ga generira R. skripta koda-izvajalec_predmet)
# ID skrbi tudi, da preberemo ustrezne CSV datoteke za ustrezno Fakulteto.
# Ko se koda prenese na strežnik ID zakomentiramo, saj ga Peter ne Potrebuje
ID <- ID
fakulteta <- ""
ime.fakultete <- ""
if (ID == 3000001) {
# Purpose: Read CSV file which has "FDV" in the end of the file.
fakulteta <- "PEF"
# V primeru ko/če ima izvajalec študijsko prasko, se v izpisu za
# izvajalca ustvari poglavje: ŠTUDIJSKA PRAKSA,
# kjer se pri izrisu barplotov, namesto izpisa "Povprečje PEF", izpiše: "Prakse PEF"
studijska.praksa <- "Prakse PEF"
# na prvi strani PDF poročila pod sliko
ime.fakultete <- "Pedagoška fakulteta"
# na prvi strani PDF poročila doda usterzno sliko fakultete
# (logo uporabimo pri generiranju poročil glej koda-izvajalec_predmet.r)
logo <- "logo_PEF"
} else if (ID == 3000004) {
fakulteta <- "FU"
studijska.praksa <- "Prakse FU"
ime.fakultete <- "Fakulteta za upravo"
logo <- "logo_FU"
} else if (ID == 3000006) {
fakulteta <- "FSD"
studijska.praksa <- "Prakse FSD"
ime.fakultete <- "Fakulteta za socialno delo"
logo <- "logo_FSD"
} else if (ID == 3000009) {
fakulteta <- "FPP"
studijska.praksa <- "Prakse FPP"
ime.fakultete <- "Fakulteta za pomorstvo in promet"
logo <- "logo_FPP"
} else if (ID == 3000011) {
fakulteta <- "ZF"
studijska.praksa <- "Prakse ZF"
ime.fakultete <- "Zdravstvena fakulteta"
logo <- "logo_ZF"
} else if (ID == 3000018) {
fakulteta <- "FF"
studijska.praksa <- "Prakse FF"
ime.fakultete <- "Filozofska fakulteta"
logo <- "logo_FF"
} else if (ID == 3000019) {
fakulteta <- "EF"
studijska.praksa <- "Prakse EF"
ime.fakultete <- "Ekonomska fakulteta"
logo <- "logo_EF"
} else if (ID == 3000020) {
fakulteta <- "PF"
studijska.praksa <- "Prakse PF"
ime.fakultete <- "Pravna fakulteta"
logo <- "logo_PF"
} else if (ID == 3000021) {
fakulteta <- "FDV"
studijska.praksa <- "Prakse FDV"
ime.fakultete <- "Fakulteta za družbene vede"
logo <- "logo_FDV"
# Ustvarimo direktorij, kamor bomo zapisali
# poročila za članico
dir.create(paste0("Evalvacija/results/",fakulteta), showWarnings = FALSE)
# Še folder agregatov
dir.create(paste0("Evalvacija/results/",fakulteta,"/Agregati"), showWarnings = FALSE)
} else if (ID == 3000022) {
fakulteta <- "FSP"
studijska.praksa <- "Prakse FSP"
ime.fakultete <- "Fakulteta za šport"
logo <- "logo_FSP"
} else if (ID == 3000023) {
fakulteta <- "FS"
studijska.praksa <- "Prakse FSTR"
ime.fakultete <- "Fakulteta za strojništvo"
logo <- "logo_FSTR"
} else if (ID == 3000025) {
fakulteta <- "FA"
studijska.praksa <- "Prakse FA"
ime.fakultete <- "Fakulteta za arhitekturo"
logo <- "logo_FA"
} else if (ID == 3000026) {
fakulteta <- "FGG"
studijska.praksa <- "Prakse FGG"
ime.fakultete <- "Fakulteta za gradbeništvo in geodezijo"
logo <- "logo_FGG"
} else if (ID == 3000027) {
fakulteta <- "FMF"
studijska.praksa <- "Prakse FMF"
ime.fakultete <- "Fakulteta za matematiko in fiziko"
logo <- "logo_FMF"
} else if (ID == 3000029) {
fakulteta <- "NTF"
studijska.praksa <- "Prakse NTF"
ime.fakultete <- "Naravoslovnotehniška fakulteta"
logo <- "logo_NTF"
} else if (ID == 3000030) {
fakulteta <- "FKKT"
studijska.praksa <- "Prakse FKKT"
ime.fakultete <- "Fakulteta za kemijo in kemijsko tehnologijo"
logo <- "logo_FKKT"
} else if (ID == 3000031) {
fakulteta <- "FFA"
studijska.praksa <- "Prakse FFARM"
ime.fakultete <- "Fakulteta za farmacijo"
logo <- "logo_FFARM"
} else if (ID == 3000037) {
fakulteta <- "VF"
studijska.praksa <- "Prakse VF"
ime.fakultete <- "Veterinarska fakulteta"
logo <- "logo_VF"
} else if (ID == 3000041) {
fakulteta <- "MF"
studijska.praksa <- "Prakse MF"
ime.fakultete <- "Medicinska fakulteta"
logo <- "logo_MF"
} else if (ID == 3000042) {
fakulteta <- "ALUO"
studijska.praksa <- "Prakse ALUO"
ime.fakultete <- "Akademija za likovno umetnost in oblikovanje"
logo <- "logo_ALU"
} else if (ID == 3000043) {
fakulteta <- "AG"
studijska.praksa <- "Prakse AG"
ime.fakultete <- "Akademija za glasbo"
logo <- "logo_AG"
} else if (ID == 3000044) {
fakulteta <- "AGRFT"
studijska.praksa <- "Prakse AGRFT"
ime.fakultete <-
"Akademija za gledališče, radio, film in televizijo"
logo <- "logo_AGRFT"
} else if (ID == 3000050) {
fakulteta <- "TEOF"
studijska.praksa <- "Prakse TEOF"
ime.fakultete <- "Teološka fakulteta"
logo <- "logo_TEOF"
} else if (ID == 3000063) {
fakulteta <- "FRI"
studijska.praksa <- "Prakse FRI"
ime.fakultete <- "Fakulteta za računalništvo in informatiko"
logo <- "logo_FRI"
} else if (ID == 3000064) {
fakulteta <- "FE"
studijska.praksa <- "Prakse FE"
ime.fakultete <- "Fakulteta za elektrotehniko"
logo <- "logo_FE"
} else if (ID == 3000071) {
fakulteta <- "BF"
studijska.praksa <- "Prakse BF"
ime.fakultete <- "Biotehniška fakulteta"
logo <- "logo_BF"
} else {
fakulteta <- ""
studijska.praksa <- ""
ime.fakultete <- ""
}
#------------------------ //DEFINE FACULTY ID// -----------------------------#

View File

@ -1,82 +0,0 @@
# OLD (2014). Bi bilo potrebno preudrediti ampak zaradi časovne stiske pustimo
# Gre namreč zato, da v bazi "navodila.xlsx" opredelimo vsa imena spremenljivk
# ki s enahajajo b bati "anketa_pred_izp" in v bazi "anketa_po_izp".
# Baza navodila nam potem služi kot spremenljivke, albele, in odprta vprašanja
# ki jih kličemo iz obeh baz ANKETA PO in ANKETA PRED.
# V excel datoteki navodila poiščemo vzorec "izvajalec" in zajamemo vse vrstice,
# kjer se pojavlja. Enako naredimo še za predmet in študenta.
# saj gre za komponente, po katerih računamo povprečja, kvantile za izvajalce ali predmete.
# Kaj komponente? Glej excel datoteko navodila
navI <- navodila[grepl(pattern='izvajalec.*', rownames(navodila)), ]
navP <- navodila[grepl(pattern='predmet.*', rownames(navodila)), ]
navS <- navodila[grepl(pattern='student.*', rownames(navodila)), ]
lokacije.izvajalci <- navI[, grepl(pattern='izvajalec.\\d', colnames(navodila))]
lokacije.predmet <- navP[, 'lokacije.predmet', drop = FALSE] # drop = False, ker želimo ohraniti podatkovni okvir
lokacije.student <- navS[, 'lokacije.student', drop = FALSE]
## ZDRUŽEVANJE SPREMENLJIVK V VARS.IZVAJALEC in VARS.PREDMET ##
# Spremenljivke oz komponente po katerih računamo posamezna povprečja bi se dalo tudi neposredno računati z
# navajanjem imen posameznih sprmenljivk v bazih anketa pred in anketa po izpitu. Npr namesto izvajalec ocena kakovost
# bi generirali vector s spremenljivko IZMNE1a. Ta spremenljivka je tako poimenovana v bazi.
# Združimo spremenljivke oz komponente za izvajalca v EXCEL DATOTEKI NAVODILA #
# Združimo zato, da ni potrebno navajati (npr. računanje) imen posameznih spremenljivk, ki se nahajajo v anketi pred in po.
# Komponente, ki se bodo računale oz. stolpce združimo v list, katerega nato kličemo pri računanju in pri generiranju tabel
vars.izvajalec <- list(
cont = list(vars = rownames(navI)[navI$tip == 'CONT' & !is.na(navI$tip)]), # "CONT" pomeni, da gre za zaprto vprašanje
text = list(vars = rownames(navI)[navI$tip == 'TEXT' & !is.na(navI$tip)])) # "TEXT" pomeni, da gre za odprto vprašanje (glej npr 26 vrstico v excel datoteki navodila)
vars.izvajalec$cont$ime.kratko[vars.izvajalec$cont$vars] <- navI[vars.izvajalec$cont$vars, 'ime.kratko'] # ime.kratko (glej navodila) in tabele pri poročilu izvajalca. Npr ime.kratko se pojavlja v Tabeli 1.1: Poročilo izvajalca
vars.izvajalec$text$ime.kratko[vars.izvajalec$text$vars] <- navI[vars.izvajalec$text$vars, 'ime.kratko']
vars.izvajalec$cont$ime.dolgo[vars.izvajalec$cont$vars] <- navI[vars.izvajalec$cont$vars, 'ime.dolgo'] # Celoten tekst zaprtih vprašanj za tabele (glej izpis izvajalca)
vars.izvajalec$text$ime.dolgo[vars.izvajalec$text$vars] <- navI[vars.izvajalec$text$vars, 'ime.dolgo'] # Celoten tekst odprtih vprašanj za tabele (glej izpis izvajalca)
vars.izvajalec$cont$pobarvanka[vars.izvajalec$cont$vars] <- navI[vars.izvajalec$cont$vars, 'pobarvanka'] # V excel datoteki opredelimo
# meje barvanja za posamezno komponento (glej stolpec pobarvanka).
# Te meje potem zapišemo v funkcijo s katero barvamo povprečja (glej skripto funkcije.r)
vars.izvajalec$cont$decimalke[vars.izvajalec$cont$vars] <- navI[vars.izvajalec$cont$vars, 'decimalke.tabele'] # zaokroževanje obarvanih vrednosti na 1 decimalko (glej funkcije.r)
# Združimo spremenljivke oz komponente za PREDMETE (PRED IN PO) v EXCEL DATOTEKI navodila#
# Stolpce oz spremenljivke, ki se računajo združimo v list
vars.predmet <- list(
cont=list(vars=c(rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PRED"], # Komponente PRED izpitom
rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PO"], # Komponente PO izpitu
rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PRAKSA"])), # Komponente, ki vsebujejo oceno za študijsko prakso
text=list(vars=rownames(navP)[navP$tip == 'TEXT' & !is.na(navP$tip)]),
krediti=list(vars=rownames(navP["predmet.ocena.krediti", ])),
kompetence1=list(vars=rownames(navP["predmet.ocena.kompetence1", ])))
# Ločimo kompponente po katerih računamo povprečja za predmete,
# in sicer komponente PRED IZPITOM, komponente PO IZPITU IN komponente za študijsko PRAKSO (zaradi računanja vrednosti in izpisa poročil)
vars.predmet$cont$pred <- rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PRED"]
vars.predmet$cont$po <- rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PO"]
vars.predmet$cont$praksa <- rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PRAKSA"]
vars.predmet$cont$ime.kratko[vars.predmet$cont$vars] <- navP[vars.predmet$cont$vars, 'ime.kratko']
vars.predmet$text$ime.kratko[vars.predmet$text$vars] <- navP[vars.predmet$text$vars, 'ime.kratko']
vars.predmet$krediti$ime.kratko[vars.predmet$krediti$vars] <- navP[vars.predmet$krediti$vars, 'ime.kratko']
vars.predmet$kompetence1$ime.kratko[vars.predmet$kompetence1$vars] <- navP[vars.predmet$kompetence1$vars, 'ime.kratko']
vars.predmet$cont$ime.dolgo[vars.predmet$cont$vars] <- navP[vars.predmet$cont$vars, 'ime.dolgo']
vars.predmet$text$ime.dolgo[vars.predmet$text$vars] <- navP[vars.predmet$text$vars, 'ime.dolgo']
vars.predmet$krediti$ime.dolgo[vars.predmet$krediti$vars] <- navP[vars.predmet$krediti$vars, 'ime.dolgo']
vars.predmet$kompetence1$ime.dolgo[vars.predmet$kompetence1$vars] <- navP[vars.predmet$kompetence1$vars, 'ime.dolgo']
# Labele za komponenti Porabljeno število ur in za kompetence (glej poročilo za izvajalca, poglavje: Število porabljenih ur (anketa PO izpitu))
# Labele: "1 - Veliko manj" "2 - Nekoliko manj" "3 - Predvideno" "4 - Nekoliko več" "5 - Veliko več"
vars.predmet$krediti$labele[vars.predmet$krediti$vars] <- strsplit(navP["predmet.ocena.krediti","labele"], split = ",")
vars.predmet$kompetence1$labele[vars.predmet$kompetence1$vars] <- strsplit(navP["predmet.ocena.kompetence1","labele"], split = ",")
# we don't use whole wording for graph labels
# Labele (graf) za komponento "Ustreznost KT" oz Število porabljenih ur (anketa PO izpitu) <- glej poročilo za izvajalca slika:
# Frekvenčna porazdelitev za število porabljenih ur (anketa PO izpitu)
vars.predmet$krediti$labele.graf <- vars.predmet$krediti$labele[vars.predmet$krediti$vars]
vars.predmet$krediti$labele.graf[[vars.predmet$krediti$vars]][c(2,4)] <- c("2", "4")
# Labele za komponento "kompetence" <-glej poročilo za izvajalca
vars.predmet$kompetence$labele.graf <- vars.predmet$kompetence1$labele[vars.predmet$kompetence$vars]
vars.predmet$kompetence$labele.graf[[vars.predmet$kompetence$vars]][c(2,4)] <- c("2", "4")
####################

View File

@ -1,532 +0,0 @@
# ANKETA PRED IZPITOM
# COURSE ANKETA PRED --------------------------------------------
# Next we also need all variables for the course that
# were evaluated in ANKETA PRED izpitom
#
# Select variables needed for ANEKTA PRED IZPITOm
# This variables are students evaluation for the course
# if student participated in she survey, answers to
# open ended questions etc.
var.pred <-
names(data_pred_izpitom)[grepl("sifpredm|PINAGa|IZPRED|PRPOZ|PRPOM" , names(data_pred_izpitom))]
var.pred <- data.frame(var.pred, stringsAsFactors = FALSE)
# And rownames will be variables that are evaluated in the course
rownames(var.pred) <-
c(
"predmet.sifra",
"predmet.izpolnjeval.pred",
"predmet.ocena.zadovoljstvo",
"predmet.ocena.usklajenost",
"predmet.ocena.samostojnost",
"predmet.ocena.literatura",
"predmet.ocena.obvescenost",
"predmet.ocena.informiranost",
"predmet.ocena.znanje",
"predmet.komentar.dobro",
"predmet.komentar.slabo"
)
# Items
vars.cours <-
as.vector(rownames(var.pred)[!rownames(var.pred) %in% c(
"predmet.sifra",
"predmet.izpolnjeval.pred",
"predmet.komentar.dobro",
"predmet.komentar.slabo"
)])
data.predmeti <- data_pred_izpitom[c(var.pred[, 1], "idprog","letnik","program", "lurker")]
names(data.predmeti) <- c(rownames(var.pred),"ID_vrsta_studija","Letnik","Naziv","lurker")
# MANJKAJOČE VREDNOSTI----------------------
# When caluclating course averages
# we want to exclude all missing values
# BUT!!! as in report we would also liek to
# include frequenci tables of some missing values
# we want to keep valuesfor some vairables
# "-99" "Nimam dovolj informacij"
# "-96" "Ne želim odgovoriti"
# Missing values for frequency tables
data.pred.miss <- data.predmeti
data.pred.miss[data.pred.miss == "-99"] <- "Nimam dovolj informacij"
# V anketi po se Pravilno beležijo zavrniteve študenta v anketi PRED pa je to navedeno kot -96
data.pred.miss[data.pred.miss == "-96"] <- "Ne želim odgovoriti"
# setting missing values and keeping some for frequency tables
# all values with some miss for tables
someMiss.pred <- sort(unique(as.vector(as.matrix(data.pred.miss[, vars.cours]))))
# Select only valid frequencis and not missing cases
someMiss.pred <- someMiss.pred[someMiss.pred > 0]
# Missing values for averages and charts
data.predmeti[,! colnames(data.predmeti) %in% (c("predmet.izpolnjeval.pred"))][data.predmeti[,! colnames(data.predmeti) %in% (c("predmet.izpolnjeval.pred"))] < 0] <- NA
# Convert to numeric columns
data.predmeti[c(vars.cours)] <- as.data.frame(lapply(data.predmeti[c(vars.cours)] , as.numeric))
# data.predmeti$predmet.sifra <- as.numeric(data.predmeti$predmet.sifra)
data.predmeti <- data.predmeti[order(data.predmeti$predmet.sifra),]
# ali je anketa veljavna za predmet; ali je student ni izpolnjeval (je pa začel anketo)
# '-1' neodgovorjeno vprašanje
data.predmeti$veljavna <-
data.predmeti$predmet.izpolnjeval.pred == -1 &
!is.na(data.predmeti$predmet.izpolnjeval.pred)
# Ali je študent anekto PRED izpitom zavrnil
data.predmeti$zavrnjena <-
(!data.predmeti$veljavna &
!is.na(data.predmeti$predmet.izpolnjeval.pred))
# adding student data (year and programme)
data.predmeti <-
merge(
data.predmeti,
programi.imena[, c("ID", "Naziv")],
by.x = "ID_vrsta_studija",
by.y = "ID",
all.x = TRUE,
sort = FALSE
)
names(data.predmeti)[match(c("ID_vrsta_studija", "Letnik", "Naziv.y"),
names(data.predmeti))] <-
c("student.program.sifra",
"student.letnik",
"student.program.ime")
#------------------------------------------ ERROR CHECK ---------------------------------------------#
# ali so v bazi kakšni predmeti ki jih ni v šifrantu
outlier.cr <-
unique(data.predmeti$predmet.sifra)[!(unique(data.predmeti$predmet.sifra) %in% unique(sifrant$IDP))]
if (length(outlier.cr) > 0) {
outlier.cr <- paste(outlier.cr, collapse='\n')
warning('V šifrantu ni predmetov, ki pa so v bazi:\n', outlier.cr)
}
#---------------------------------------- //ERROR CHECK// -------------------------------------------#
##############
## PREDMETI ##
##############
# povprečja
predMean <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = mean,
na.rm = TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(vars.cours, "_mean")
# Mediane
predMedian <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = median,
na.rm = TRUE)
colnames(predMedian)[2:ncol(predMedian)] <- paste0(vars.cours,"_median")
# sd
predSd <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = sd,
na.rm = TRUE)
colnames(predSd)[2:ncol(predSd)] <- paste0(vars.cours,"_sd")
# min
predMin <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = min,
na.rm = TRUE)
colnames(predMin)[2:ncol(predMin)] <- paste0(vars.cours,"_min")
predMin[predMin==Inf] <- NA
# max
predMax <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = max,
na.rm = TRUE)
colnames(predMax)[2:ncol(predMax)] <- paste0(vars.cours,"_max")
predMax[predMax==-Inf] <- NA
# N posamezne spremenljivke
predN <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = function(x)
sum(!is.na(x))
)
colnames(predN)[2:ncol(predN)] <- paste0(vars.cours,"_N")
# N answering before exam
predNanket <-
aggregate(data.predmeti$veljavna, by = data.predmeti["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
# N didn't want to answer before exam
predNzavrnjenih <-
aggregate(data.predmeti$zavrnjena, by = data.predmeti["predmet.sifra"], FUN = sum)
colnames(predNzavrnjenih)[2] <- "N_zavrnjenih"
# N Lurkerjev PRED izpitom
data.predmeti$lurker[data.predmeti$lurker == 0] <- NA
predNLurkerji <-
aggregate(
as.numeric(data.predmeti$lurker),
by = data.predmeti["predmet.sifra"],
FUN = function(x)
sum(!is.na(x))
)
colnames(predNLurkerji)[2] <- "N_lurkerjev_pred"
# Prvi kvartil
predQ1 <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = quantile,
probs = c(0.25),
na.rm = T
)
colnames(predQ1)[2:ncol(predQ1)] <- paste0(vars.cours,"_Q1")
# Tretji kvartil
predQ3 <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = quantile,
probs = c(0.75),
na.rm = T
)
colnames(predQ3)[2:ncol(predQ3)] <- paste0(vars.cours,"_Q3")
# Prvi decil
predD1 <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = quantile,
probs = c(0.1),
type = 5,
na.rm = T
)
colnames(predD1)[2:ncol(predD1)] <- paste0(vars.cours,"_D1")
# Deveti decil
predD9 <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = quantile,
probs = c(0.9),
type = 5,
na.rm = T
)
colnames(predD9)[2:ncol(predD9)] <- paste0(vars.cours,"_D9")
# Združimo izračunane statistike za predmete
# Merge data for lecturer
povprecja.predmeti <-
Reduce(
function(x, y)
merge(
x,
y,
c("predmet.sifra"),
all = TRUE,
sort = FALSE
) ,
list(
predMean,
predSd,
predMin,
predMax,
predN,
predQ1,
predQ3,
predMedian,
predD1,
predD9,
predNLurkerji,
predNanket,
predNzavrnjenih
)
)
# združit s šifrantom
povprecja.predmeti <-
merge(
povprecja.predmeti,
unique(sifrant[!(
colnames(sifrant) %in% c("IDPEDAGOGA", "NAZIV.PEDAGOGA", "ST_KT", "ST_UR", "NOSILEC")
)]),
by.x = "predmet.sifra",
by.y = "IDP",
all.x = TRUE,
sort = FALSE
)
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# Write csv data for AGREGAT: kjerkoli bomo delali trende, bomo prikazali tudi povprečja
# za predmete, ki imajo manj kot 4 enote. In sicer trentuno v primeru, da ima izvajalec
# pri predmetu premalo dogovorov povprečij ne prikažemo oz ne računamo.
# Pri trendih pa bo postopek naslednji:
# V kolikor vsota odgovorov v dveh zaporednih letnih preseže 3 odgovore potem to prikažemo
# v novem stolpcu. In te ocene potrebujemo za trende.
write.csv2(povprecja.predmeti, paste0("povprecja.predmeti.agregat_", fakulteta, ".csv"))
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- povprecja.predmeti[paste0(vars.cours,"_N")] < minEnot
povprecja.predmeti[paste0(vars.cours,"_mean")][premalo] <- NA
povprecja.predmeti[paste0(vars.cours,"_sd")][premalo] <- NA
povprecja.predmeti[paste0(vars.cours,"_min")][premalo] <- NA
povprecja.predmeti[paste0(vars.cours,"_max")][premalo] <- NA
# average of components - all, before exam
povprecja.predmeti$predmet.ocena.SKUPAJ <- rowMeans(povprecja.predmeti[paste0(vars.cours,"_mean")], na.rm = T)
#povprecja.predmeti$predmet.ocena.SKUPAJ.pred <- rowMeans(povprecja.predmeti[paste0(vars.cours,"_mean")], na.rm = T)
# Število študentov pri posameznem predmetu: Spremenimo iz character v numeric
povprecja.predmeti$ST_STUD <- as.numeric(povprecja.predmeti$ST_STUD)
# Kjer je negativno število pomeni, da gre za več vpisanih študentov, kot jih je v bazi oz spremenljivki ST_STUD
povprecja.predmeti$ST_STUD <- ifelse(povprecja.predmeti$ST_STUD < as.numeric(povprecja.predmeti$N_anket) + as.numeric(povprecja.predmeti$N_zavrnjenih),
as.numeric(povprecja.predmeti$N_anket) + as.numeric(povprecja.predmeti$N_zavrnjenih), povprecja.predmeti$ST_STUD)
# % odgovora
povprecja.predmeti$sodelujocih.pct <- povprecja.predmeti$N_anket / povprecja.predmeti$ST_STUD * 100
# % zavrnjenih
povprecja.predmeti$zavrnjenih.pct <- povprecja.predmeti$N_zavrnjenih / povprecja.predmeti$ST_STUD * 100
# N in % neodzivnih (ni pristopilo k anketi)
povprecja.predmeti$N_neodzivnih <- povprecja.predmeti$ST_STUD - povprecja.predmeti$N_anket - povprecja.predmeti$N_zavrnjenih
povprecja.predmeti$neodzivnih.pct <- povprecja.predmeti$N_neodzivnih / povprecja.predmeti$ST_STUD * 100
## //average of components - all, before, after exam// ##
# preurejeno ime predmeta
povprecja.predmeti$ime.predmeta <- povprecja.predmeti$PREDMET
# IZREDNi ŠTUDIJ
izredni <- povprecja.predmeti$NACIN=="2" # če je izredni predmet mora biti to v oklepaju
izredni <- izredni[!is.na(izredni) ]
povprecja.predmeti$ime.predmeta[izredni] <- paste(povprecja.predmeti$ime.predmeta[izredni], "(izredna izvedba)")
# //IZREDNi ŠTUDIJ// #
########################
## ŠTUDIJSKI PROGRAMI ##
########################
# število ocen po programih (za poročila in povprečja po programih)
programi <- unique(data.predmeti[c("student.program.sifra", "student.program.ime")])
programi <- subset(programi, !is.na(student.program.sifra))
programi <- subset(programi, student.program.ime != "NA")
programi <- programi[order(programi$student.program.ime), ]
## predmet: Študijski program ##
povprecja.predmeti[paste0("program_studenta_", programi$student.program.sifra)] <- 0
data.prog.temp <- subset(data.predmeti, veljavna)
programi.studentov <- as.data.frame.matrix(table(data.prog.temp$predmet.sifra, data.prog.temp$student.program.sifra))
names(programi.studentov) <- paste0("program_studenta_", names(programi.studentov))
povprecja.predmeti[match(rownames(programi.studentov), povprecja.predmeti$predmet.sifra), names(programi.studentov)] <- programi.studentov
povprecja.predmeti <- povprecja.predmeti[order(povprecja.predmeti$PREDMET),]
# are there any courses with too many answers in the database according to sifrant.xlsx
premalo_vpisanih <- povprecja.predmeti$N_neodzivnih < 0
premalo_vpisanih <- !is.na(premalo_vpisanih)
if (any(premalo_vpisanih)) {
warning(
c(
"Some courses have more students in the database than number of students that are attending the course according to sifrant.xlsx",
paste(
"\n",
povprecja.predmeti$predmet.sifra[premalo_vpisanih],
povprecja.predmeti$PREDMET[premalo_vpisanih],
paste0(
"(",
abs(povprecja.predmeti$N_neodzivnih[premalo_vpisanih]),
" more students)"
)
)
)
)
}
#################
## Quantiles ##
#################
# Kvantilni rangi za predmet: komponente ankete PRED in PO izpitu
kvantili.predmeti <- povprecja.predmeti[c("predmet.sifra","ime.predmeta","ST_STUD","N_anket","sodelujocih.pct",
paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")]
for (var in c(paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")) {
kvantili.predmeti[[var]] <- kvantRang(kvantili.predmeti[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.predmeti[[var]] <- kvantRang1(kvantili.predmeti[[var]])
}
# //Kvantilni rangi za predmet: komponente ankete PRED in PO izpitu// #
# Glej npr izpis izvajalca, Tabela 1.1 (vrstico Povprečje FDV),
# kjer se izpiše število predmetov v anketi PRED izpitom
kvantili.predmeti.st.pred <- sum(kvantili.predmeti$predmet.ocena.SKUPAJ!= ".") # Število vseh ocenjenih predmetov: anketa PRED
kvantili.zadovoljstvo <- sum(kvantili.predmeti$predmet.ocena.zadovoljstvo_mean != ".") #
#####################################
# POVPREČJA PO ŠTUDIJSKIH PROGRAMIH
#####################################
# Skupne ocene predmetov po posameznih študijskih programih
progMeanPredm <- aggregate(data.predmeti[c(vars.cours)],
by = data.predmeti["student.program.sifra"], FUN = mean, na.rm = TRUE)
progMeanPredm$predmet.ocena.SKUPAJ <- rowMeans(progMeanPredm[vars.cours], na.rm = TRUE)
## course averages by programme ##
povprecja.predmeti.programi <- NULL
povprecja.predmeti.programi.brez.cenzure <- NULL # Zapišemo vsa povprečja oz. vse ocene, tudi tista, ki imajo 4 odgovore ali manj
## course averages by programme ##
for (program in programi$student.program.sifra) {
# povprečja
data.program <- subset(data.predmeti, student.program.sifra == program)
predMean <- aggregate(data.program[vars.cours], by = data.program["predmet.sifra"], FUN = mean, na.rm = TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(vars.cours,"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.program[vars.cours], by = data.program["predmet.sifra"], FUN = function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(vars.cours,"_N")
# N answering before and after exam
predNanket <- aggregate(data.program$veljavna, by = data.program["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predmeti.program <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.program <- merge(predmeti.program, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.programi.brez.cenzure <- rbind(povprecja.predmeti.programi.brez.cenzure,cbind(predmeti.program,
program.studentov = program,
program.studentov.ime = programi[programi$student.program.sifra == program,
"student.program.ime"]))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.program[paste0(vars.cours,"_N")] < minEnot
predmeti.program[paste0(vars.cours,"_mean")][premalo] <- NA
# average of components - all, before, after exam
predmeti.program$predmet.ocena.SKUPAJ <- rowMeans(predmeti.program[paste0(vars.cours,"_mean")],na.rm=T)
povprecja.predmeti.programi <- rbind(povprecja.predmeti.programi, cbind(predmeti.program, program.studentov = program,
program.studentov.ime = programi[programi$student.program.sifra==program,
"student.program.ime"]))
}
povprecja.predmeti.programi <- merge(povprecja.predmeti.programi, povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.programi.brez.cenzure <- merge(povprecja.predmeti.programi.brez.cenzure,
povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA","PRAKSA")],
by = "predmet.sifra", all.x = T)
## //course averages by programme// ##
## course averages by student's year ##
povprecja.predmeti.letniki <- NULL
povprecja.predmeti.letniki.brez.cenzure <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## course averages by students' year ##
for (letnik in unique(sort(data.predmeti$student.letnik))) {
# povprečja
data.letnik <- subset(data.predmeti, student.letnik == letnik)
# data.letnik.po <- subset(data.predmeti.PO, student.program.sifra == program)
predMean <- aggregate(data.letnik[vars.cours],
by = data.letnik["predmet.sifra"], FUN=mean, na.rm=TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(c(vars.cours),"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.letnik[c(vars.cours)],
by=data.letnik["predmet.sifra"], FUN=function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(c(vars.cours),"_N")
# N answering before and after exam
predNanket <- aggregate(data.letnik$veljavna, by = data.letnik["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predmeti.letnik <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.letnik <- merge(predmeti.letnik, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.letniki.brez.cenzure <- rbind(povprecja.predmeti.letniki.brez.cenzure, cbind(predmeti.letnik, letnik.studentov = letnik))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.letnik[c(paste0(vars.cours,"_N"))] < minEnot
predmeti.letnik[c(paste0(vars.cours,"_mean"))][premalo] <- NA
# average of components - all, before, after exam
predmeti.letnik$predmet.ocena.SKUPAJ <- rowMeans(predmeti.letnik[paste0(vars.cours,"_mean")], na.rm = T)
povprecja.predmeti.letniki <- rbind(povprecja.predmeti.letniki, cbind(predmeti.letnik, letnik.studentov=letnik))
}
povprecja.predmeti.letniki <- merge(povprecja.predmeti.letniki, povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.letniki.brez.cenzure <- merge(povprecja.predmeti.letniki.brez.cenzure,
povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA","PRAKSA")],
by = "predmet.sifra", all.x = T)
## //course averages by students' year// ##
kvantili.predmeti.programi <- NULL
for (program in unique(povprecja.predmeti.programi$program.studentov)) {
kvantili.predmeti.program <- povprecja.predmeti.programi[povprecja.predmeti.programi$program.studentov == program &
(povprecja.predmeti.programi$N_anket > 0),
c("predmet.sifra","N_anket","program.studentov","program.studentov.ime",
paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")]
for (var in c(paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")) {
kvantili.predmeti.program[[var]] <- kvantRang(kvantili.predmeti.program[[var]])
}
for (var in c("N_anket")) {
kvantili.predmeti.program[[var]] <- kvantRang1(kvantili.predmeti.program[[var]])
}
kvantili.predmeti.programi <- rbind(kvantili.predmeti.programi, kvantili.predmeti.program)
}

View File

@ -1,580 +0,0 @@
# ANKETA PRED IZPITOM
# COURSE ANKETA PRED --------------------------------------------
# Next we also need all variables for the course that
# were evaluated in ANKETA PRED izpitom
#
# Select variables needed for ANEKTA PRED IZPITOm
# This variables are students evaluation for the course
# if student participated in she survey, answers to
# open ended questions etc.
var.pred <-
names(data_pred_izpitom)[grepl("sifpredm|PINAGa|IZPRED|PRPOZ|PRPOM" , names(data_pred_izpitom))]
var.pred <- data.frame(var.pred, stringsAsFactors = FALSE)
# And rownames will be variables that are evaluated in the course
rownames(var.pred) <-
c(
"predmet.sifra",
"predmet.izpolnjeval.pred",
"predmet.ocena.zadovoljstvo",
"predmet.ocena.usklajenost",
"predmet.ocena.samostojnost",
"predmet.ocena.literatura",
"predmet.ocena.obvescenost",
"predmet.ocena.informiranost",
"predmet.ocena.znanje",
"predmet.komentar.dobro",
"predmet.komentar.slabo"
)
# Items
vars.cours <-
as.vector(rownames(var.pred)[!rownames(var.pred) %in% c(
"predmet.sifra",
"predmet.izpolnjeval.pred",
"predmet.komentar.dobro",
"predmet.komentar.slabo"
)])
#==================#
# Update 18.11.2019
#==================#
# Po novem želimo narediti tudi poročila za
# članice (FKKT, FRI, EF), ki jih do zdaj nismo delali. Tudi
# šifrante dobimo od STUDISA in nekateri podatki
# manjkajo: LETNIK, LURKER ITD
# Zato moramo to ustrezno upoštevati
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
data.predmeti <- data_pred_izpitom[c(var.pred[, 1], "idprog","letnik","program", "lurker")]
names(data.predmeti) <- c(rownames(var.pred),"ID_vrsta_studija","Letnik","Naziv","lurker")
} else {
data.predmeti <- data_pred_izpitom[c(var.pred[, 1], "idprog","program")]
names(data.predmeti) <- c(rownames(var.pred),"ID_vrsta_studija","Naziv")
}
# MANJKAJOČE VREDNOSTI----------------------
# When caluclating course averages
# we want to exclude all missing values
# BUT!!! as in report we would also liek to
# include frequenci tables of some missing values
# we want to keep valuesfor some vairables
# "-99" "Nimam dovolj informacij"
# "-96" "Ne želim odgovoriti"
# Missing values for frequency tables
data.pred.miss <- data.predmeti
data.pred.miss[data.pred.miss == "-99"] <- "Nimam dovolj informacij"
# V anketi po se Pravilno beležijo zavrniteve študenta v anketi PRED pa je to navedeno kot -96
data.pred.miss[data.pred.miss == "-96"] <- "Ne želim odgovoriti"
# setting missing values and keeping some for frequency tables
# all values with some miss for tables
someMiss.pred <- sort(unique(as.vector(as.matrix(data.pred.miss[, vars.cours]))))
# Select only valid frequencis and not missing cases
someMiss.pred <- someMiss.pred[someMiss.pred > 0]
# Missing values for averages and charts
data.predmeti[,! colnames(data.predmeti) %in% (c("predmet.izpolnjeval.pred"))][data.predmeti[,! colnames(data.predmeti) %in% (c("predmet.izpolnjeval.pred"))] < 0] <- NA
# Convert to numeric columns
data.predmeti[c(vars.cours)] <- as.data.frame(lapply(data.predmeti[c(vars.cours)] , as.numeric))
# data.predmeti$predmet.sifra <- as.numeric(data.predmeti$predmet.sifra)
data.predmeti <- data.predmeti[order(data.predmeti$predmet.sifra),]
# ali je anketa veljavna za predmet; ali je student ni izpolnjeval (je pa začel anketo)
# '-1' neodgovorjeno vprašanje
data.predmeti$veljavna <-
data.predmeti$predmet.izpolnjeval.pred == -1 &
!is.na(data.predmeti$predmet.izpolnjeval.pred)
# Ali je študent anekto PRED izpitom zavrnil
data.predmeti$zavrnjena <-
(!data.predmeti$veljavna &
!is.na(data.predmeti$predmet.izpolnjeval.pred))
# adding student data (year and programme)
data.predmeti <-
merge(
data.predmeti,
programi.imena[, c("ID", "Naziv")],
by.x = "ID_vrsta_studija",
by.y = "ID",
all.x = TRUE,
sort = FALSE
)
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
names(data.predmeti)[match(c("ID_vrsta_studija", "Letnik", "Naziv.y"),
names(data.predmeti))] <-
c("student.program.sifra",
"student.letnik",
"student.program.ime")
} else {
names(data.predmeti)[match(c("ID_vrsta_studija", "Naziv.y"),
names(data.predmeti))] <-
c("student.program.sifra",
"student.program.ime")
}
#------------------------------------------ ERROR CHECK ---------------------------------------------#
# ali so v bazi kakšni predmeti ki jih ni v šifrantu
outlier.cr <-
unique(data.predmeti$predmet.sifra)[!(unique(data.predmeti$predmet.sifra) %in% unique(sifrant$IDP))]
if (length(outlier.cr) > 0) {
outlier.cr <- paste(outlier.cr, collapse='\n')
warning('V šifrantu ni predmetov, ki pa so v bazi:\n', outlier.cr)
}
#---------------------------------------- //ERROR CHECK// -------------------------------------------#
##############
## PREDMETI ##
##############
# povprečja
predMean <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = mean,
na.rm = TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(vars.cours, "_mean")
# Mediane
predMedian <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = median,
na.rm = TRUE)
colnames(predMedian)[2:ncol(predMedian)] <- paste0(vars.cours,"_median")
# sd
predSd <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = sd,
na.rm = TRUE)
colnames(predSd)[2:ncol(predSd)] <- paste0(vars.cours,"_sd")
# min
predMin <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = min,
na.rm = TRUE)
colnames(predMin)[2:ncol(predMin)] <- paste0(vars.cours,"_min")
predMin[predMin==Inf] <- NA
# max
predMax <-
aggregate(data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = max,
na.rm = TRUE)
colnames(predMax)[2:ncol(predMax)] <- paste0(vars.cours,"_max")
predMax[predMax==-Inf] <- NA
# N posamezne spremenljivke
predN <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = function(x)
sum(!is.na(x))
)
colnames(predN)[2:ncol(predN)] <- paste0(vars.cours,"_N")
# N answering before exam
predNanket <-
aggregate(data.predmeti$veljavna, by = data.predmeti["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
# N didn't want to answer before exam
predNzavrnjenih <-
aggregate(data.predmeti$zavrnjena, by = data.predmeti["predmet.sifra"], FUN = sum)
colnames(predNzavrnjenih)[2] <- "N_zavrnjenih"
# N Lurkerjev PRED izpitom
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
data.predmeti$lurker[data.predmeti$lurker == 0] <- NA
predNLurkerji <-
aggregate(
as.numeric(data.predmeti$lurker),
by = data.predmeti["predmet.sifra"],
FUN = function(x)
sum(!is.na(x))
)
colnames(predNLurkerji)[2] <- "N_lurkerjev_pred"
}
# Prvi kvartil
predQ1 <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = quantile,
probs = c(0.25),
na.rm = T
)
colnames(predQ1)[2:ncol(predQ1)] <- paste0(vars.cours,"_Q1")
# Tretji kvartil
predQ3 <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = quantile,
probs = c(0.75),
na.rm = T
)
colnames(predQ3)[2:ncol(predQ3)] <- paste0(vars.cours,"_Q3")
# Prvi decil
predD1 <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = quantile,
probs = c(0.1),
type = 5,
na.rm = T
)
colnames(predD1)[2:ncol(predD1)] <- paste0(vars.cours,"_D1")
# Deveti decil
predD9 <-
aggregate(
data.predmeti[vars.cours],
by = data.predmeti["predmet.sifra"],
FUN = quantile,
probs = c(0.9),
type = 5,
na.rm = T
)
colnames(predD9)[2:ncol(predD9)] <- paste0(vars.cours,"_D9")
# Združimo izračunane statistike za predmete
# Merge data for lecturer
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) { # LURKERJI
povprecja.predmeti <-
Reduce(
function(x, y)
merge(
x,
y,
c("predmet.sifra"),
all = TRUE,
sort = FALSE
) ,
list(
predMean,
predSd,
predMin,
predMax,
predN,
predQ1,
predQ3,
predMedian,
predD1,
predD9,
predNLurkerji,
predNanket,
predNzavrnjenih
)
)
} else {
povprecja.predmeti <-
Reduce(
function(x, y)
merge(
x,
y,
c("predmet.sifra"),
all = TRUE,
sort = FALSE
) ,
list(
predMean,
predSd,
predMin,
predMax,
predN,
predQ1,
predQ3,
predMedian,
predD1,
predD9,
predNanket,
predNzavrnjenih
)
)
}
# združit s šifrantom
povprecja.predmeti <-
merge(
povprecja.predmeti,
unique(sifrant[!(
colnames(sifrant) %in% c("IDPEDAGOGA", "NAZIV.PEDAGOGA", "ST_KT", "ST_UR", "NOSILEC")
)]),
by.x = "predmet.sifra",
by.y = "IDP",
all.x = TRUE,
sort = FALSE
)
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# Write csv data for AGREGAT: kjerkoli bomo delali trende, bomo prikazali tudi povprečja
# za predmete, ki imajo manj kot 4 enote. In sicer trentuno v primeru, da ima izvajalec
# pri predmetu premalo dogovorov povprečij ne prikažemo oz ne računamo.
# Pri trendih pa bo postopek naslednji:
# V kolikor vsota odgovorov v dveh zaporednih letnih preseže 3 odgovore potem to prikažemo
# v novem stolpcu. In te ocene potrebujemo za trende.
#write.csv2(povprecja.predmeti, paste0("povprecja.predmeti.agregat_", fakulteta, ".csv"))
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- povprecja.predmeti[paste0(vars.cours,"_N")] < minEnot
povprecja.predmeti[paste0(vars.cours,"_mean")][premalo] <- NA
povprecja.predmeti[paste0(vars.cours,"_sd")][premalo] <- NA
povprecja.predmeti[paste0(vars.cours,"_min")][premalo] <- NA
povprecja.predmeti[paste0(vars.cours,"_max")][premalo] <- NA
# average of components - all, before exam
povprecja.predmeti$predmet.ocena.SKUPAJ <- rowMeans(povprecja.predmeti[paste0(vars.cours,"_mean")], na.rm = T)
#povprecja.predmeti$predmet.ocena.SKUPAJ.pred <- rowMeans(povprecja.predmeti[paste0(vars.cours,"_mean")], na.rm = T)
# Število študentov pri posameznem predmetu: Spremenimo iz character v numeric
povprecja.predmeti$ST_STUD <- as.numeric(povprecja.predmeti$ST_STUD)
# Kjer je negativno število pomeni, da gre za več vpisanih študentov, kot jih je v bazi oz spremenljivki ST_STUD
povprecja.predmeti$ST_STUD <- ifelse(povprecja.predmeti$ST_STUD < as.numeric(povprecja.predmeti$N_anket) + as.numeric(povprecja.predmeti$N_zavrnjenih),
as.numeric(povprecja.predmeti$N_anket) + as.numeric(povprecja.predmeti$N_zavrnjenih), povprecja.predmeti$ST_STUD)
# % odgovora
povprecja.predmeti$sodelujocih.pct <- povprecja.predmeti$N_anket / povprecja.predmeti$ST_STUD * 100
# % zavrnjenih
povprecja.predmeti$zavrnjenih.pct <- povprecja.predmeti$N_zavrnjenih / povprecja.predmeti$ST_STUD * 100
# N in % neodzivnih (ni pristopilo k anketi)
povprecja.predmeti$N_neodzivnih <- povprecja.predmeti$ST_STUD - povprecja.predmeti$N_anket - povprecja.predmeti$N_zavrnjenih
povprecja.predmeti$neodzivnih.pct <- povprecja.predmeti$N_neodzivnih / povprecja.predmeti$ST_STUD * 100
## //average of components - all, before, after exam// ##
# preurejeno ime predmeta
povprecja.predmeti$ime.predmeta <- povprecja.predmeti$PREDMET
# IZREDNi ŠTUDIJ
izredni <- povprecja.predmeti$NACIN=="2" # če je izredni predmet mora biti to v oklepaju
izredni <- izredni[!is.na(izredni) ]
povprecja.predmeti$ime.predmeta[izredni] <- paste(povprecja.predmeti$ime.predmeta[izredni], "(izredna izvedba)")
# //IZREDNi ŠTUDIJ// #
########################
## ŠTUDIJSKI PROGRAMI ##
########################
# število ocen po programih (za poročila in povprečja po programih)
programi <- unique(data.predmeti[c("student.program.sifra", "student.program.ime")])
programi <- subset(programi, !is.na(student.program.sifra))
programi <- subset(programi, student.program.ime != "NA")
programi <- programi[order(programi$student.program.ime), ]
## predmet: Študijski program ##
povprecja.predmeti[paste0("program_studenta_", programi$student.program.sifra)] <- 0
data.prog.temp <- subset(data.predmeti, veljavna)
programi.studentov <- as.data.frame.matrix(table(data.prog.temp$predmet.sifra, data.prog.temp$student.program.sifra))
names(programi.studentov) <- paste0("program_studenta_", names(programi.studentov))
povprecja.predmeti[match(rownames(programi.studentov), povprecja.predmeti$predmet.sifra), names(programi.studentov)] <- programi.studentov
povprecja.predmeti <- povprecja.predmeti[order(povprecja.predmeti$PREDMET),]
# are there any courses with too many answers in the database according to sifrant.xlsx
premalo_vpisanih <- povprecja.predmeti$N_neodzivnih < 0
premalo_vpisanih <- !is.na(premalo_vpisanih)
if (any(premalo_vpisanih)) {
warning(
c(
"Some courses have more students in the database than number of students that are attending the course according to sifrant.xlsx",
paste(
"\n",
povprecja.predmeti$predmet.sifra[premalo_vpisanih],
povprecja.predmeti$PREDMET[premalo_vpisanih],
paste0(
"(",
abs(povprecja.predmeti$N_neodzivnih[premalo_vpisanih]),
" more students)"
)
)
)
)
}
#################
## Quantiles ##
#################
# Kvantilni rangi za predmet: komponente ankete PRED in PO izpitu
kvantili.predmeti <- povprecja.predmeti[c("predmet.sifra","ime.predmeta","ST_STUD","N_anket","sodelujocih.pct",
paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")]
for (var in c(paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")) {
kvantili.predmeti[[var]] <- kvantRang(kvantili.predmeti[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.predmeti[[var]] <- kvantRang1(kvantili.predmeti[[var]])
}
# //Kvantilni rangi za predmet: komponente ankete PRED in PO izpitu// #
# Glej npr izpis izvajalca, Tabela 1.1 (vrstico Povprečje FDV),
# kjer se izpiše število predmetov v anketi PRED izpitom
kvantili.predmeti.st.pred <- sum(kvantili.predmeti$predmet.ocena.SKUPAJ!= ".") # Število vseh ocenjenih predmetov: anketa PRED
kvantili.zadovoljstvo <- sum(kvantili.predmeti$predmet.ocena.zadovoljstvo_mean != ".") #
#####################################
# POVPREČJA PO ŠTUDIJSKIH PROGRAMIH
#####################################
# Skupne ocene predmetov po posameznih študijskih programih
progMeanPredm <- aggregate(data.predmeti[c(vars.cours)],
by = data.predmeti["student.program.sifra"], FUN = mean, na.rm = TRUE)
progMeanPredm$predmet.ocena.SKUPAJ <- rowMeans(progMeanPredm[vars.cours], na.rm = TRUE)
## course averages by programme ##
povprecja.predmeti.programi <- NULL
povprecja.predmeti.programi.brez.cenzure <- NULL # Zapišemo vsa povprečja oz. vse ocene, tudi tista, ki imajo 4 odgovore ali manj
## course averages by programme ##
for (program in programi$student.program.sifra) {
# povprečja
data.program <- subset(data.predmeti, student.program.sifra == program)
predMean <- aggregate(data.program[vars.cours], by = data.program["predmet.sifra"], FUN = mean, na.rm = TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(vars.cours,"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.program[vars.cours], by = data.program["predmet.sifra"], FUN = function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(vars.cours,"_N")
# N answering before and after exam
predNanket <- aggregate(data.program$veljavna, by = data.program["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predmeti.program <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.program <- merge(predmeti.program, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.programi.brez.cenzure <- rbind(povprecja.predmeti.programi.brez.cenzure,cbind(predmeti.program,
program.studentov = program,
program.studentov.ime = programi[programi$student.program.sifra == program,
"student.program.ime"]))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.program[paste0(vars.cours,"_N")] < minEnot
predmeti.program[paste0(vars.cours,"_mean")][premalo] <- NA
# average of components - all, before, after exam
predmeti.program$predmet.ocena.SKUPAJ <- rowMeans(predmeti.program[paste0(vars.cours,"_mean")],na.rm=T)
povprecja.predmeti.programi <- rbind(povprecja.predmeti.programi, cbind(predmeti.program, program.studentov = program,
program.studentov.ime = programi[programi$student.program.sifra==program,
"student.program.ime"]))
}
povprecja.predmeti.programi <- merge(povprecja.predmeti.programi, povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.programi.brez.cenzure <- merge(povprecja.predmeti.programi.brez.cenzure,
povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA","PRAKSA")],
by = "predmet.sifra", all.x = T)
## //course averages by programme// ##
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) { # FKKT nima podatka o letnikih
## course averages by student's year ##
povprecja.predmeti.letniki <- NULL
povprecja.predmeti.letniki.brez.cenzure <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## course averages by students' year ##
for (letnik in unique(sort(data.predmeti$student.letnik))) {
# povprečja
data.letnik <- subset(data.predmeti, student.letnik == letnik)
# data.letnik.po <- subset(data.predmeti.PO, student.program.sifra == program)
predMean <- aggregate(data.letnik[vars.cours],
by = data.letnik["predmet.sifra"], FUN=mean, na.rm=TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(c(vars.cours),"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.letnik[c(vars.cours)],
by=data.letnik["predmet.sifra"], FUN=function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(c(vars.cours),"_N")
# N answering before and after exam
predNanket <- aggregate(data.letnik$veljavna, by = data.letnik["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predmeti.letnik <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.letnik <- merge(predmeti.letnik, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.letniki.brez.cenzure <- rbind(povprecja.predmeti.letniki.brez.cenzure, cbind(predmeti.letnik, letnik.studentov = letnik))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.letnik[c(paste0(vars.cours,"_N"))] < minEnot
predmeti.letnik[c(paste0(vars.cours,"_mean"))][premalo] <- NA
# average of components - all, before, after exam
predmeti.letnik$predmet.ocena.SKUPAJ <- rowMeans(predmeti.letnik[paste0(vars.cours,"_mean")], na.rm = T)
povprecja.predmeti.letniki <- rbind(povprecja.predmeti.letniki, cbind(predmeti.letnik, letnik.studentov=letnik))
}
povprecja.predmeti.letniki <- merge(povprecja.predmeti.letniki, povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.letniki.brez.cenzure <- merge(povprecja.predmeti.letniki.brez.cenzure,
povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA","PRAKSA")],
by = "predmet.sifra", all.x = T)
## //course averages by students' year// ##
}
kvantili.predmeti.programi <- NULL
for (program in unique(povprecja.predmeti.programi$program.studentov)) {
kvantili.predmeti.program <- povprecja.predmeti.programi[povprecja.predmeti.programi$program.studentov == program &
(povprecja.predmeti.programi$N_anket > 0),
c("predmet.sifra","N_anket","program.studentov","program.studentov.ime",
paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")]
for (var in c(paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")) {
kvantili.predmeti.program[[var]] <- kvantRang(kvantili.predmeti.program[[var]])
}
for (var in c("N_anket")) {
kvantili.predmeti.program[[var]] <- kvantRang1(kvantili.predmeti.program[[var]])
}
kvantili.predmeti.programi <- rbind(kvantili.predmeti.programi, kvantili.predmeti.program)
}

View File

@ -1,835 +0,0 @@
#---------------------------------- PODATKI ZA IZVAJALCE (ANKETA PRED) -------------------------------#
# LECTURER-----------------------------------------------
# First we need to subset all lecturers that are teaching
# There can be up to 55 lecturers in the data base --> That means that for the single
# course there can be multiple lectures (izvajalec1 .... izvajalec12 etc) see
# "anketa_pred_izp_FDV for example.
# First lets see how many lecturers for single course there can be
# In case of FDV we have 12 lectures
nbr.izvajalci <-
names(data_pred_izpitom)[grepl("izvajalec." , names(data_pred_izpitom))]
# Select all variables that are needed to do statistics and charts for each lecturer (izvajalec)
# We will use library (stringr) in order to subset all columns
# that are relevant for Lecturer (izvajalec)
library(stringr)
var.izv <-
names(data_pred_izpitom)[!is.na(str_extract(names(data_pred_izpitom), "[0-9]+") == 1)]
# We do not want to have Q variables and PRKT variables as these are not important for lecturer
var.izv <- var.izv[!grepl("Q|PRKT|idprog|program|IDP1", var.izv)]
# Nov we will create a data frame of each lecturer (column) that is is teaching course
# and is evaluated. NOTE: for single course there could be multiple lecturers that
# are evaluated seperately
# First we check how myna lecturers there is that students evaluated
var.izv <- data.frame(lapply(seq(length(nbr.izvajalci)), function(i) {
df <- NULL
df[[i]] <-
var.izv[grepl(paste0("^[a-z]*", i, "[a-z]*$"), var.izv, ignore.case = TRUE)]
}), stringsAsFactors = FALSE)
# Then we add colnames
colnames(var.izv) <-
unlist(lapply(seq(length(nbr.izvajalci)), function(i)
paste0("izvajalec.", i)))
# And rownames will be variables that are evaluated in the course and
# also wil help us detrmine the teacher (izvajalec.sifra) and if he
# had lectures in the course (izvajalec.jepouceval == "-1").
# izvajalec.jepouceval == "1") means that lecturer did not teach
rownames(var.izv) <-
c(
"izvajalec.ime",
"izvajalec.sifra",
"izvajalec.jepouceval",
"izvajalec.ocena.kakovost",
"izvajalec.ocena.pripravljenost",
"izvajalec.ocena.razumljivost",
"izvajalec.ocena.zanimivost",
"izvajalec.ocena.kriticnost",
"izvajalec.ocena.korektnost",
"izvajalec.komentar.dobro",
"izvajalec.komentar.slabo"
)
vars.izv <-
as.vector(rownames(var.izv)[!rownames(var.izv) %in% c("izvajalec.ime",
"izvajalec.sifra",
"izvajalec.komentar.dobro",
"izvajalec.komentar.slabo")])
# COURSE ANKETA PRED --------------------------------------------
# Next we also need all variables for the course that
# was evaluated in ANKETA PRED izpitom
#
# Select variables needed for ANEKTA PRED IZPITOm
# This variables are students evaluation for the course
# if student participated in she survey, answers to
# open ended questions etc.
var.pred <-
names(data_pred_izpitom)[grepl("sifpredm|PINAGa|IZPRED|PRPOZ|PRPOM" , names(data_pred_izpitom))]
var.pred <- data.frame(var.pred, stringsAsFactors = FALSE)
# And rownames will be variables that are evaluated in the course
rownames(var.pred) <-
c(
"predmet.sifra",
"predmet.izpolnjeval.pred",
"predmet.ocena.zadovoljstvo",
"predmet.ocena.usklajenost",
"predmet.ocena.samostojnost",
"predmet.ocena.literatura",
"predmet.ocena.obvescenost",
"predmet.ocena.informiranost",
"predmet.ocena.znanje",
"predmet.komentar.dobro",
"predmet.komentar.slabo"
)
# Items
vars.cours <-
as.vector(rownames(var.pred)[!rownames(var.pred) %in% c(
"predmet.sifra",
"predmet.izpolnjeval.pred",
"predmet.komentar.dobro",
"predmet.komentar.slabo"
)])
data.izvajalci <- NULL
for (i in names(var.izv)){
# spremenljivke ki smo jih določili zgoraj + we also need student letnik and program for tables
# We will also calculate average scors for all students based on ther year
data.temp <- data_pred_izpitom[c(var.pred[, 1], var.izv[[i]],"idprog","letnik","program","lurker")]
names(data.temp) <- c(rownames(var.pred), rownames(var.izv), "ID_vrsta_studija","Letnik","Naziv","lurker")
data.temp <- subset(data.temp, izvajalec.sifra > 0) # samo kjer je naveden izvajalec
if (is.null(data.izvajalci)) {
data.izvajalci <- data.temp
} else {
data.izvajalci <- rbind(data.izvajalci,data.temp)
}
}
# MANJKAJOČE VREDNOSTI----------------------
# When caluclating lecturers averages
# we want to exclude all missing values
# But whwn we will do frequency tables we want to
# keep values
# "-99" "Nimam dovolj informacij"
# "-96" "Ne želim odgovoriti"
# Missing values for frequency tables
data.izv.miss <- data.izvajalci
data.izv.miss[data.izv.miss == "-99"] <- "Nimam dovolj informacij"
data.izv.miss[data.izv.miss == "-96"] <- "Ne želim odgovoriti"
data.izv.miss[data.izv.miss < 0] <- NA
# Missing values for averages and charts
data.izvajalci[,! colnames(data.izvajalci) %in% (c("predmet.izpolnjeval.pred","izvajalec.jepouceval"))][data.izvajalci[,! colnames(data.izvajalci) %in% (c("predmet.izpolnjeval.pred","izvajalec.jepouceval"))] < 0] <- NA
# Convert to numeric columns
data.izvajalci[c(vars.izv, vars.cours)] <- as.data.frame(lapply(data.izvajalci[c(vars.izv, vars.cours)] , as.numeric))
# all values with some miss for tables
# Glej tabelo Povprečja in deleži kategorij odgovorov za komponente pedagoškega dela izvajalca pri predmetu (anketa PRED izpitom)"
izv.someMiss <- sort(unique(as.vector(as.matrix(data.izv.miss[,vars.izvajalec$cont$vars]))))
# Check if values are missing. We need column_name for table making
# V poročilu za izvajalca glej podpoglavje: Frekvenčna porazdelitev ocen komponent pedagoškega dela izvajalca
# V primeru, da kakšna vrednost manjka jo ustvarimo, sicer ko poženemo koda-izvajalec_predmet ne generira tabel
column_name <-
c("1",
"2",
"3",
"4",
"5",
"Ne želim odgovoriti",
"Nimam dovolj informacij")
if (length(which(izv.someMiss %in% column_name)) < 7) {
# Če so kakšne manjkajoče vrednosti, ki se dodajajo v tabele kot imena stolpcev za izvajalca
Missing <- setdiff(column_name, izv.someMiss) # Find names of missing columns
izv.someMiss <- c(Missing,izv.someMiss)
izv.someMiss <- sort(izv.someMiss)
}
# MANJKAJOČE VREDNOSTI----------------------
data.izvajalci <- data.izvajalci[order(data.izvajalci$izvajalec.sifra, data.izvajalci$predmet.sifra), ]
# Število vseh odgovorov. To so odgovori na predmet in izvajalca
# '-1' neodgovorjeno vprašanje, '-2' preskok zaradi pogoja (IF)
data.izvajalci$veljavna.vsiodgovori <-
data.izvajalci$predmet.izpolnjeval.pred == -1 &
(
data.izvajalci$izvajalec.jepouceval == 1 |
data.izvajalci$izvajalec.jepouceval == 2 |
data.izvajalci$izvajalec.jepouceval == -2
)
# Število odgovorov izvajalca
# ali je anketa veljavna za izvajalca; ali je student ni izpolnjeval (je pa začel anketo)
data.izvajalci$veljavna <-
data.izvajalci$predmet.izpolnjeval.pred == -1 &
(data.izvajalci$izvajalec.jepouceval == 1 |
data.izvajalci$izvajalec.jepouceval == -2)
data.izvajalci$zavrnjena <-
(
!data.izvajalci$veljavna &
!is.na(data.izvajalci$predmet.izpolnjeval.pred) &
!is.na(data.izvajalci$izvajalec.jepouceval) &
!(data.izvajalci$izvajalec.jepouceval == 2)
)
data.izvajalci$nipouceval <-
data.izvajalci$izvajalec.jepouceval == 2 # Če je študent v anketi pred izpitom odgovoril, da ga izvajalec pri tem predmetu ni poučeval
# adding student data (year and programme)
data.izvajalci <-
merge(
data.izvajalci,
programi.imena[, c("ID", "Naziv")],
by.x = "ID_vrsta_studija",
by.y = "ID",
all.x = TRUE,
sort = FALSE
)
# Matching names
names(data.izvajalci)[match(c("ID_vrsta_studija", "Letnik", "Naziv.y"),
names(data.izvajalci))] <-
c("student.program.sifra",
"student.letnik",
"student.program.ime")
#------------------------------------------ ERROR CHECK ---------------------------------------------#
# Če je output.pred > 1 to pomeni, da sta bazi 1KA odgovorov (anketa PRED) in šifrant X1 neskladni
# Torej vsa neskladja odpravimo
if (nrow(output.pred) > 0) {
data.izvajalci <- data.izvajalci[! paste(data.izvajalci$predmet.sifra, data.izvajalci$izvajalec.sifra) %in%
paste(output.pred$sifpredm, output.pred$ID), ]
}
#---------------------------------------- //ERROR CHECK// -------------------------------------------#
#------------------------------ OPISNE STATISTIKE ----------------------------------#
# IZVAJALCI ANKETA PRED-------------------------------
# Lecturers mean by the course
izvMean <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = mean,
na.rm = TRUE)
#
colnames(izvMean)[3:ncol(izvMean)] <- paste0(vars.izvajalec$cont$vars,"_mean")
# mediane
izvMedian <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = median,
na.rm = TRUE)
colnames(izvMedian)[3:ncol(izvMedian)] <- paste0(vars.izvajalec$cont$vars,"_median")
# sd
izvSd <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = sd,
na.rm = TRUE)
colnames(izvSd)[3:ncol(izvSd)] <- paste0(vars.izvajalec$cont$vars,"_sd")
# min
izvMin <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = min,
na.rm = TRUE)
colnames(izvMin)[3:ncol(izvMin)] <- paste0(vars.izvajalec$cont$vars,"_min")
izvMin[izvMin==Inf] <- NA
# max
izvMax <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = max,
na.rm = TRUE)
colnames(izvMax)[3:ncol(izvMax)] <- paste0(vars.izvajalec$cont$vars,"_max")
izvMax[izvMax==-Inf] <- NA
# N posamezne spremenljivke
izvN <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = function(x)
sum(!is.na(x))
)
colnames(izvN)[3:ncol(izvN)] <- paste0(vars.izvajalec$cont$vars,"_N")
# N anket
izvNanket <-
aggregate(data.izvajalci$veljavna, by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")], FUN = sum)
colnames(izvNanket)[3] <- "N_anket"
# N vseh odgovorov
izvNanketvsiodgovori <- aggregate(data.izvajalci$veljavna.vsiodgovori,by=data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = sum)
colnames(izvNanketvsiodgovori)[3] <- "N_anketTotal"
# N zavrnjenih anket
izvNzavrnjenih <-
aggregate(data.izvajalci$zavrnjena, by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")], FUN = sum)
colnames(izvNzavrnjenih)[3] <- "N_zavrnjenih"
# N Lurkerjev PRED izpitom
data.izvajalci$lurker[data.izvajalci$lurker == 0] <- NA
izvNLurkerji <-
aggregate(
as.numeric(data.izvajalci$lurker),
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = function(x)
sum(!is.na(x))
)
colnames(izvNLurkerji)[3] <- "N_lurkerjev_ivz"
# N anket: Izvajalec ni poučeval
izvNipouceval <-
aggregate(data.izvajalci$nipouceval, by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")], FUN = sum)
colnames(izvNipouceval)[3] <- "Ni_pouceval"
# Prvi kvartil Q1
izvQ1 <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = quantile,
probs = c(0.25),
na.rm = T
)
colnames(izvQ1)[3:ncol(izvQ1)] <- paste0(vars.izvajalec$cont$vars,"_Q1")
# Tretji kvartil
izvQ3 <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = quantile,
probs = c(0.75),
na.rm = T
)
colnames(izvQ3)[3:ncol(izvQ3)] <- paste0(vars.izvajalec$cont$vars,"_Q3")
# Prvi decil
izvD1 <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = quantile,
probs = c(0.1),
type = 5,
na.rm = T
)
colnames(izvD1)[3:ncol(izvD1)] <- paste0(vars.izvajalec$cont$vars,"_D1")
# Deveti decil
izvD9 <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = quantile,
probs = c(0.9),
type = 5,
na.rm = T
)
colnames(izvD9)[3:ncol(izvD9)] <- paste0(vars.izvajalec$cont$vars,"_D9")
# Zdužimo opisne statistike izvajalcev
# Merge data for lecturer
povprecja.izvajalci <-
Reduce(
function(x, y)
merge(
x,
y,
c("izvajalec.sifra", "predmet.sifra"),
all = TRUE,
sort = FALSE
) ,
list(
izvMean,
izvSd,
izvMin,
izvMax,
izvN,
izvNanket,
izvNanketvsiodgovori,
izvNzavrnjenih,
izvNipouceval,
izvQ1,
izvQ3,
izvMedian,
izvD1,
izvD9,
izvNLurkerji
)
)
# združit s šifrantom
povprecja.izvajalci <- merge(povprecja.izvajalci, sifrant,
by.x = c("izvajalec.sifra", "predmet.sifra"),
by.y = c("IDPEDAGOGA", "IDP"), all.x = TRUE, sort = FALSE)
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# Write csv data for AGREGAT: kjerkoli bomo delali trende, bomo prikazali tudi povprečja
# za predmete, ki imajo manj kot 4 enote. In sicer trentuno v primeru, da ima izvajalec
# pri predmetu premalo dogovorov povprečij ne prikažemo oz ne računamo.
# Pri trendih pa bo postopek naslednji:
# V kolikor vsota odgovorov v dveh zaporednih letnih preseže 3 odgovore potem to prikažemo
# v novem stolpcu. In te ocene potrebujemo za trende.
write.csv2(
povprecja.izvajalci,
paste0("povprecja.izvajalci.agregat_", fakulteta, ".csv")
)
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# zakrivanje vrednosti kjer ni dovolj enot
# If there are less than 4 answers we do not calculate mean for the course or lecturer
premalo <- povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_N")] < minEnot
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_mean")][premalo] <- NA
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_sd")][premalo] <- NA
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_min")][premalo] <- NA
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_max")][premalo] <- NA
# Kjer je negativno število pomeni, da gre za več vpisanih študentov, kot jih je v bazi oz spremenljivki ST_STUD
povprecja.izvajalci$ST_STUD <-
ifelse(
povprecja.izvajalci$ST_STUD < as.numeric(povprecja.izvajalci$N_anket) + as.numeric(povprecja.izvajalci$N_zavrnjenih),
as.numeric(povprecja.izvajalci$N_anket) + as.numeric(povprecja.izvajalci$N_zavrnjenih),
povprecja.izvajalci$ST_STUD
)
# povprečje vseh komponent izvajalca
povprecja.izvajalci$izvajalec.ocena.SKUPAJ <-
rowMeans(povprecja.izvajalci[paste0(vars.izvajalec$cont$vars, "_mean")], na.rm = T)
# % sodelujocih
povprecja.izvajalci$sodelujocih.pct <-
povprecja.izvajalci$N_anket / as.numeric(povprecja.izvajalci$ST_STUD) * 100
# % zavrnjenih
povprecja.izvajalci$zavrnjenih.pct <-
povprecja.izvajalci$N_zavrnjenih / as.numeric(povprecja.izvajalci$ST_STUD) * 100
# % Ni pouceval
povprecja.izvajalci$nipouceval.pct <-
povprecja.izvajalci$Ni_pouceval / as.numeric(povprecja.izvajalci$ST_STUD) * 100
## N in % neodzivnih
#intersect(as, povprecja.izvajalci$ST_STUD)
povprecja.izvajalci$N_neodzivnih <-
as.numeric(povprecja.izvajalci$ST_STUD) - povprecja.izvajalci$N_anketTotal - povprecja.izvajalci$N_zavrnjenih
povprecja.izvajalci$neodzivnih.pct <-
povprecja.izvajalci$N_neodzivnih / as.numeric(povprecja.izvajalci$ST_STUD) * 100
## //IZVAJALCI// ##
# nova imena predmetov še k povprečjem izvajalcev[]
povprecja.izvajalci <- merge(povprecja.izvajalci, povprecja.predmeti[,c("predmet.sifra","ime.predmeta")], by = "predmet.sifra", sort = FALSE)
########################
## ŠTUDIJSKI PROGRAMI ##
########################
# število ocen po programih (za poročila in povprečja po programih)
programi <- unique(data.predmeti[c("student.program.sifra", "student.program.ime")])
programi <- subset(programi, !is.na(student.program.sifra))
programi <- subset(programi, student.program.ime != "NA")
programi <- programi[order(programi$student.program.ime), ]
## izvajalec: Študijski program ##
povprecja.izvajalci[paste0("program_studenta_", programi$student.program.sifra)] <- 0
data.izv.temp <- subset(data.izvajalci, veljavna)
programi.studentov <- as.data.frame.matrix(table(paste(data.izv.temp$izvajalec.sifra, data.izv.temp$predmet.sifra, sep = "_"), data.izv.temp$student.program.sifra))
names(programi.studentov) <- paste0("program_studenta_", names(programi.studentov))
povprecja.izvajalci[match(rownames(programi.studentov), paste(povprecja.izvajalci$izvajalec.sifra, povprecja.izvajalci$predmet.sifra, sep = "_")), names(programi.studentov)] <- programi.studentov
## predmet: Študijski program ##
povprecja.predmeti[paste0("program_studenta_", programi$student.program.sifra)] <- 0
data.prog.temp <- subset(data.predmeti, veljavna)
programi.studentov <- as.data.frame.matrix(table(data.prog.temp$predmet.sifra, data.prog.temp$student.program.sifra))
names(programi.studentov) <- paste0("program_studenta_", names(programi.studentov))
povprecja.predmeti[match(rownames(programi.studentov), povprecja.predmeti$predmet.sifra), names(programi.studentov)] <- programi.studentov
# sort by name
povprecja.izvajalci <- povprecja.izvajalci[order(povprecja.izvajalci$NAZIV.PEDAGOGA, povprecja.izvajalci$PREDMET), ]
povprecja.predmeti <- povprecja.predmeti[order(povprecja.predmeti$PREDMET),]
# skupna povprečja izvajalcev (povprečja ocen pri vseh predmetih)
povprecja.izvajalci.skupaj <-
aggregate(povprecja.izvajalci[, c(
"ST_STUD",
"N_anket",
"N_anketTotal",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
"nipouceval.pct",
paste0(vars.izvajalec$cont$vars, "_mean"),
"izvajalec.ocena.SKUPAJ"
)],
by = povprecja.izvajalci[, "izvajalec.sifra", drop = FALSE],
FUN = mean,
na.rm = TRUE)
# number of evaluations from different programmes
vsota.ocen.programov <-
aggregate(povprecja.izvajalci[paste0("program_studenta_", programi$student.program.sifra)],
by = povprecja.izvajalci[, "izvajalec.sifra", drop = FALSE],
FUN = sum,
na.rm = TRUE)
# number of courses with at least minimun nuber of answers
st.ocen <- aggregate(list(st.ocen=povprecja.izvajalci$N_anket >= minEnot),
by = povprecja.izvajalci[, "izvajalec.sifra", drop = FALSE], FUN = sum, na.rm = TRUE)
povprecja.izvajalci.skupaj <-
Reduce(
function(x, y)
merge(
x,
y,
by = "izvajalec.sifra",
all.x = TRUE,
sort = FALSE
) ,
list(
povprecja.izvajalci.skupaj,
vsota.ocen.programov,
st.ocen,
unique(povprecja.izvajalci[,c("izvajalec.sifra","NAZIV.PEDAGOGA")])
)
)
# sort
povprecja.izvajalci.skupaj <- povprecja.izvajalci.skupaj[order(povprecja.izvajalci.skupaj$NAZIV.PEDAGOGA),]
# da izračunamo povprečja vseh predmetov določenega izvajalca rabimo ocene predmetov po izvajalcih (podvojene vrstice z različnimi šiframi izvajalcev)
povprecja.predmeti.vsi.izvajalci <-
merge(
povprecja.izvajalci[, c("izvajalec.sifra", "predmet.sifra")],
povprecja.predmeti,
by = "predmet.sifra",
all.x = TRUE,
sort = FALSE
)
povprecja.predmetov.izvajalca.skupaj <-
aggregate(
povprecja.predmeti.vsi.izvajalci[, c(
"ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
paste0(vars.cours, "_mean"),
"predmet.ocena.SKUPAJ")],
by = povprecja.predmeti.vsi.izvajalci[, "izvajalec.sifra", drop = FALSE],
FUN = mean,
na.rm = TRUE
)
# še imena izvajalcev
povprecja.predmetov.izvajalca.skupaj <- merge(povprecja.predmetov.izvajalca.skupaj,
unique(povprecja.izvajalci[,c("izvajalec.sifra","NAZIV.PEDAGOGA")]),
by = "izvajalec.sifra", all.x = TRUE)
# povprečja vseh izvajalecv pri vsakem predmetu
povprecja.predmet.izvajalci.skupaj <- aggregate(povprecja.izvajalci[, c("ST_STUD","N_anket","N_anketTotal","sodelujocih.pct","zavrnjenih.pct",
"neodzivnih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),
"izvajalec.ocena.SKUPAJ")],
by = povprecja.izvajalci[,"predmet.sifra",drop = FALSE],
FUN = mean, na.rm = TRUE)
# še imena predmetov
povprecja.predmet.izvajalci.skupaj <- merge(povprecja.predmet.izvajalci.skupaj, povprecja.predmeti[,c("predmet.sifra","ime.predmeta")],
by = "predmet.sifra", all.x = TRUE)
povprecja.predmetov.izvajalca.skupaj <- povprecja.predmetov.izvajalca.skupaj[order(povprecja.predmetov.izvajalca.skupaj$NAZIV.PEDAGOGA),]
povprecja.predmet.izvajalci.skupaj <- povprecja.predmet.izvajalci.skupaj[order(povprecja.predmet.izvajalci.skupaj$ime.predmeta),]
#################
## Quantiles ##
#################
# for every lecturer/course
# S funkcijo kvantRang in kvantRang1 izračunamo in barvamo kvantilne range, ki se pokažejo v posameznih tabelah (glej skirpto funkcije.r)
# Kvantilni rangi za izvajalce pri predmetih (IPP)
povprecja.izvajalci$ime.predmeta<- povprecja.izvajalci$PREDMET
kvantili.izvajalci <- povprecja.izvajalci[c("izvajalec.sifra","NAZIV.PEDAGOGA","predmet.sifra","ime.predmeta","ST_STUD","N_anket",
"sodelujocih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")]
for (var in c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")) {
kvantili.izvajalci[[var]] <- kvantRang(kvantili.izvajalci[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.izvajalci[[var]] <- kvantRang1(kvantili.izvajalci[[var]])
}
# //Kvantilni rangi za izvajalce pri predmetih (IPP)// #
## lecturer averages ##
kvantili.izvajalci.skupaj <- povprecja.izvajalci.skupaj[c("izvajalec.sifra","NAZIV.PEDAGOGA","ST_STUD","N_anket",
"sodelujocih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),
"izvajalec.ocena.SKUPAJ")]
for (var in c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")) {
kvantili.izvajalci.skupaj[[var]] <- kvantRang(kvantili.izvajalci.skupaj[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.izvajalci.skupaj[[var]] <- kvantRang1(kvantili.izvajalci.skupaj[[var]])
}
kvantili.predmetov.izvajalca.skupaj <- povprecja.predmetov.izvajalca.skupaj[c("izvajalec.sifra","NAZIV.PEDAGOGA","ST_STUD",
"N_anket","sodelujocih.pct",
paste0(vars.cours,"_mean"),
"predmet.ocena.SKUPAJ")]
for (var in c(paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")) {
kvantili.predmetov.izvajalca.skupaj[[var]] <- kvantRang(kvantili.predmetov.izvajalca.skupaj[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.predmetov.izvajalca.skupaj[[var]] <- kvantRang1(kvantili.predmetov.izvajalca.skupaj[[var]])
}
## for table names (izpis izvajalca, programov, fakultete) ##
kvantili.izvajalci.st <- sum(kvantili.izvajalci$izvajalec.ocena.SKUPAJ != ".") # Število vseh ocenjenih izvajalcev fakultete
kvantili.izvajalci.skupaj.st <- sum(kvantili.izvajalci.skupaj$izvajalec.ocena.SKUPAJ != ".") # Število vseh ocenjenih IPP (izvajalcev pri)
kvantili.predmetov.izvajalca.skupaj.st.pred <- sum(kvantili.predmetov.izvajalca.skupaj$predmet.ocena.SKUPAJ != ".")
#####################################
# POVPREČJA PO ŠTUDIJSKIH PROGRAMIH
#####################################
# Skupna povprečja izvajalcav po posameznih študijskih programih
progMeanIzv <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci["student.program.sifra"],
FUN = mean,
na.rm = TRUE)
# Dodamo še skupno povprečje glede na vseh sedem komponent
progMeanIzv <-
cbind(progMeanIzv, izvajalec.ocena.SKUPAJ = rowMeans(progMeanIzv[vars.izvajalec$cont$vars]))
#izračun povprečij izvajalcev za študijske programe in insert v poročila za fakulteto
progMeanIzv.fak <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("student.program.sifra", "student.program.ime")],
FUN = mean,
na.rm = TRUE)
progMeanIzv.fak1 <-
cbind(progMeanIzv.fak,
izvajalec.ocena.SKUPAJ = rowMeans(progMeanIzv.fak[vars.izvajalec$cont$vars], na.rm = TRUE))
# Število odogovorov (število anket) pri posameznem študijskem programu
st.odgovorov.fak1 <-
aggregate(data.izvajalci$veljavna, by = data.izvajalci[c("student.program.sifra", "student.program.ime")], FUN = sum)
colnames(st.odgovorov.fak1)[3] <- "N_anket" # Poimenujemo stolpec
progMeanIzv.fak1 <-
merge(
progMeanIzv.fak1,
st.odgovorov.fak1,
by = c("student.program.sifra", "student.program.ime"),
all = TRUE,
sort = FALSE
)
## //povprečja programov// ##
####################################
## lecturer averages by programme ##
####################################
povprecja.izvajalci.programi <- NULL
povprecja.izvajalci.programi.brez.cenzure <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## lecturer averages by programme ##
for (program in programi$student.program.sifra) {
data.program <- subset(data.izvajalci, student.program.sifra == program)
if (nrow(data.program)>0){
# povprečja
izvMean <- aggregate(data.program[vars.izvajalec$cont$vars],by=data.program[c("predmet.sifra","izvajalec.sifra")], FUN = mean, na.rm = TRUE)
colnames(izvMean)[3:ncol(izvMean)] <- paste0(vars.izvajalec$cont$vars,"_mean")
# N posamezne spremenljivke
izvN <- aggregate(data.program[vars.izvajalec$cont$vars], by=data.program[c("predmet.sifra","izvajalec.sifra")], FUN=function(x) sum(!is.na(x)))
colnames(izvN)[3:ncol(izvN)] <- paste0(vars.izvajalec$cont$vars,"_N")
# N anket
izvNanket <- aggregate(data.program$veljavna, by=data.program[c("predmet.sifra","izvajalec.sifra")], FUN = sum)
colnames(izvNanket)[3] <- "N_anket"
# Merge
izvajalci.program <- merge(izvMean, izvN, by=c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
izvajalci.program <- merge(izvajalci.program, izvNanket, by=c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci.programi.brez.cenzure <- rbind(povprecja.izvajalci.programi.brez.cenzure,
cbind(izvajalci.program, program.studentov=program,
program.studentov.ime=programi[programi$student.program.sifra==program,
"student.program.ime"]))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- izvajalci.program[paste0(vars.izvajalec$cont$vars,"_N")] < minEnot
izvajalci.program[paste0(vars.izvajalec$cont$vars,"_mean")][premalo] <- NA
# average of components
izvajalci.program$izvajalec.ocena.SKUPAJ <- rowMeans(izvajalci.program[paste0(vars.izvajalec$cont$vars,"_mean")],na.rm=T)
povprecja.izvajalci.programi <- rbind(povprecja.izvajalci.programi, cbind(izvajalci.program, program.studentov=program,
program.studentov.ime=programi[programi$student.program.sifra==program,
"student.program.ime"]))
}
}
povprecja.izvajalci.programi <- merge(povprecja.izvajalci.programi,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra",
"ime.predmeta", "NAZIV.PEDAGOGA", "NACIN_STUDIJA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
povprecja.izvajalci.programi.brez.cenzure <- merge(povprecja.izvajalci.programi.brez.cenzure,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra", "ime.predmeta", "NAZIV.PEDAGOGA", "NACIN_STUDIJA","PRAKSA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
## //lecturer averages by programme// ##
#########################################
## lecturer averages by students' year ##
#########################################
povprecja.izvajalci.letniki <- NULL
povprecja.izvajalci.letniki.brez.cenzure <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## lecturer averages by students' year ##
for (letnik in unique(sort(data.izvajalci$student.letnik))) {
data.letnik <- subset(data.izvajalci, student.letnik == letnik)
# povprečja
izvMean <- aggregate(data.letnik[vars.izvajalec$cont$vars], by=data.letnik[c("predmet.sifra","izvajalec.sifra")], FUN=mean, na.rm=TRUE)
colnames(izvMean)[3:ncol(izvMean)] <- paste0(vars.izvajalec$cont$vars,"_mean")
# N posamezne spremenljivke
izvN <- aggregate(data.letnik[vars.izvajalec$cont$vars], by=data.letnik[c("predmet.sifra","izvajalec.sifra")], FUN=function(x) sum(!is.na(x)))
colnames(izvN)[3:ncol(izvN)] <- paste0(vars.izvajalec$cont$vars,"_N")
# N anket
izvNanket <- aggregate(data.letnik$veljavna, by=data.letnik[c("predmet.sifra","izvajalec.sifra")], FUN=sum)
colnames(izvNanket)[3] <- "N_anket"
# Merge
izvajalci.letnik <- merge(izvMean, izvN, by=c("izvajalec.sifra", "predmet.sifra"), all=TRUE, sort=FALSE)
izvajalci.letnik <- merge(izvajalci.letnik, izvNanket, by=c("izvajalec.sifra", "predmet.sifra"), all=TRUE, sort=FALSE)
povprecja.izvajalci.letniki.brez.cenzure <- rbind(povprecja.izvajalci.letniki.brez.cenzure,
cbind(izvajalci.letnik, letnik.studentov=letnik))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- izvajalci.letnik[paste0(vars.izvajalec$cont$vars,"_N")] < minEnot
izvajalci.letnik[paste0(vars.izvajalec$cont$vars,"_mean")][premalo] <- NA
povprecja.izvajalci.letniki <- rbind(povprecja.izvajalci.letniki, cbind(izvajalci.letnik, letnik.studentov=letnik))
}
povprecja.izvajalci.letniki <- merge(povprecja.izvajalci.letniki,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra",
"ime.predmeta", "NAZIV.PEDAGOGA", "NACIN_STUDIJA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
povprecja.izvajalci.letniki.brez.cenzure <- merge(povprecja.izvajalci.letniki.brez.cenzure,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra", "ime.predmeta",
"NAZIV.PEDAGOGA", "NACIN_STUDIJA","PRAKSA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
## //lecturer averages by students' year// ##
## PODATKI ZA TABELE, KI SE DODAJO K "ANALIZI IZVAJALCA PRI PREDMETU PO PROGRAMIH IN LETNIKIH" ##
test1 <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("student.program.ime")], FUN = mean, na.rm = TRUE)
test2 <- cbind(test1, izvajalec.ocena.SKUPAJ=rowMeans(test1[vars.izvajalec$cont$vars], na.rm = TRUE))
#Zaokroži vrednosti za izpis programov pri IZVAJALCU
round_df <- function(x, digits) {
# round all numeric variables
# x: data frame
# digits: number of digits to round
numeric_columns <- sapply(x, class) == 'numeric'
x[numeric_columns] <- round(x[numeric_columns], digits)
x
}
test2 <- round_df(test2, 1)
## //PODATKI ZA TABELE// ##
############################
# quantiles by programme #
###########################
kvantili.izvajalci.programi <- NULL
for (program in unique(povprecja.izvajalci.programi$program.studentov)) {
kvantili.izvajalci.program <- povprecja.izvajalci.programi[povprecja.izvajalci.programi$program.studentov == program &
povprecja.izvajalci.programi$N_anket > 0,
c("izvajalec.sifra","predmet.sifra","program.studentov","program.studentov.ime",
"N_anket",paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")]
for (var in c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")) {
kvantili.izvajalci.program[[var]] <- kvantRang(kvantili.izvajalci.program[[var]])
}
for (var in c("N_anket")) {
kvantili.izvajalci.program[[var]] <- kvantRang1(kvantili.izvajalci.program[[var]])
}
kvantili.izvajalci.programi <- rbind(kvantili.izvajalci.programi, kvantili.izvajalci.program)
}

View File

@ -1,886 +0,0 @@
#---------------------------------- PODATKI ZA IZVAJALCE (ANKETA PRED) -------------------------------#
# LECTURER-----------------------------------------------
# First we need to subset all lecturers that are teaching
# There can be up to 55 lecturers in the data base --> That means that for the single
# course there can be multiple lectures (izvajalec1 .... izvajalec12 etc) see
# "anketa_pred_izp_FDV for example.
# First lets see how many lecturers for single course there can be
# In case of FDV we have 12 lectures
nbr.izvajalci <-
names(data_pred_izpitom)[grepl("izvajalec." , names(data_pred_izpitom))]
# Select all variables that are needed to do statistics and charts for each lecturer (izvajalec)
# We will use library (stringr) in order to subset all columns
# that are relevant for Lecturer (izvajalec)
library(stringr)
var.izv <-
names(data_pred_izpitom)[!is.na(str_extract(names(data_pred_izpitom), "[0-9]+") == 1)]
# We do not want to have Q variables and PRKT variables as these are not important for lecturer
var.izv <- var.izv[!grepl("Q|PRKT|idprog|program|IDP1", var.izv)]
# Nov we will create a data frame of each lecturer (column) that is is teaching course
# and is evaluated. NOTE: for single course there could be multiple lecturers that
# are evaluated seperately
# First we check how myna lecturers there is that students evaluated
var.izv <- data.frame(lapply(seq(length(nbr.izvajalci)), function(i) {
df <- NULL
df[[i]] <-
var.izv[grepl(paste0("^[a-z]*", i, "[a-z]*$"), var.izv, ignore.case = TRUE)]
}), stringsAsFactors = FALSE)
# Then we add colnames
colnames(var.izv) <-
unlist(lapply(seq(length(nbr.izvajalci)), function(i)
paste0("izvajalec.", i)))
# And rownames will be variables that are evaluated in the course and
# also wil help us detrmine the teacher (izvajalec.sifra) and if he
# had lectures in the course (izvajalec.jepouceval == "-1").
# izvajalec.jepouceval == "1") means that lecturer did not teach
rownames(var.izv) <-
c(
"izvajalec.ime",
"izvajalec.sifra",
"izvajalec.jepouceval",
"izvajalec.ocena.kakovost",
"izvajalec.ocena.pripravljenost",
"izvajalec.ocena.razumljivost",
"izvajalec.ocena.zanimivost",
"izvajalec.ocena.kriticnost",
"izvajalec.ocena.korektnost",
"izvajalec.komentar.dobro",
"izvajalec.komentar.slabo"
)
vars.izv <-
as.vector(rownames(var.izv)[!rownames(var.izv) %in% c("izvajalec.ime",
"izvajalec.sifra",
"izvajalec.komentar.dobro",
"izvajalec.komentar.slabo")])
# COURSE ANKETA PRED --------------------------------------------
# Next we also need all variables for the course that
# was evaluated in ANKETA PRED izpitom
#
# Select variables needed for ANEKTA PRED IZPITOm
# This variables are students evaluation for the course
# if student participated in she survey, answers to
# open ended questions etc.
var.pred <-
names(data_pred_izpitom)[grepl("sifpredm|PINAGa|IZPRED|PRPOZ|PRPOM" , names(data_pred_izpitom))]
var.pred <- data.frame(var.pred, stringsAsFactors = FALSE)
# And rownames will be variables that are evaluated in the course
rownames(var.pred) <-
c(
"predmet.sifra",
"predmet.izpolnjeval.pred",
"predmet.ocena.zadovoljstvo",
"predmet.ocena.usklajenost",
"predmet.ocena.samostojnost",
"predmet.ocena.literatura",
"predmet.ocena.obvescenost",
"predmet.ocena.informiranost",
"predmet.ocena.znanje",
"predmet.komentar.dobro",
"predmet.komentar.slabo"
)
# Items
vars.cours <-
as.vector(rownames(var.pred)[!rownames(var.pred) %in% c(
"predmet.sifra",
"predmet.izpolnjeval.pred",
"predmet.komentar.dobro",
"predmet.komentar.slabo"
)])
data.izvajalci <- NULL
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
for (i in names(var.izv)){
# spremenljivke ki smo jih določili zgoraj + we also need student letnik and program for tables
# We will also calculate average scors for all students based on ther year
data.temp <- data_pred_izpitom[c(var.pred[, 1], var.izv[[i]],"idprog","letnik","program","lurker")]
names(data.temp) <- c(rownames(var.pred), rownames(var.izv), "ID_vrsta_studija","Letnik","Naziv","lurker")
data.temp <- subset(data.temp, izvajalec.sifra > 0) # samo kjer je naveden izvajalec
if (is.null(data.izvajalci)) {
data.izvajalci <- data.temp
} else {
data.izvajalci <- rbind(data.izvajalci,data.temp)
}
}
} else {
for (i in names(var.izv)){
# spremenljivke ki smo jih določili zgoraj + we also need student letnik and program for tables
# We will also calculate average scors for all students based on ther year
data.temp <- data_pred_izpitom[c(var.pred[, 1], var.izv[[i]],"idprog","program")]
names(data.temp) <- c(rownames(var.pred), rownames(var.izv), "ID_vrsta_studija","Naziv")
data.temp <- subset(data.temp, izvajalec.sifra > 0) # samo kjer je naveden izvajalec
if (is.null(data.izvajalci)) {
data.izvajalci <- data.temp
} else {
data.izvajalci <- rbind(data.izvajalci,data.temp)
}
}
}
# MANJKAJOČE VREDNOSTI----------------------
# When caluclating lecturers averages
# we want to exclude all missing values
# But whwn we will do frequency tables we want to
# keep values
# "-99" "Nimam dovolj informacij"
# "-96" "Ne želim odgovoriti"
# Missing values for frequency tables
data.izv.miss <- data.izvajalci
data.izv.miss[data.izv.miss == "-99"] <- "Nimam dovolj informacij"
data.izv.miss[data.izv.miss == "-96"] <- "Ne želim odgovoriti"
data.izv.miss[data.izv.miss < 0] <- NA
# Missing values for averages and charts
data.izvajalci[,! colnames(data.izvajalci) %in% (c("predmet.izpolnjeval.pred","izvajalec.jepouceval"))][data.izvajalci[,! colnames(data.izvajalci) %in% (c("predmet.izpolnjeval.pred","izvajalec.jepouceval"))] < 0] <- NA
# Convert to numeric columns
data.izvajalci[c(vars.izv, vars.cours)] <- as.data.frame(lapply(data.izvajalci[c(vars.izv, vars.cours)] , as.numeric))
# all values with some miss for tables
# Glej tabelo Povprečja in deleži kategorij odgovorov za komponente pedagoškega dela izvajalca pri predmetu (anketa PRED izpitom)"
izv.someMiss <- sort(unique(as.vector(as.matrix(data.izv.miss[,vars.izvajalec$cont$vars]))))
# Check if values are missing. We need column_name for table making
# V poročilu za izvajalca glej podpoglavje: Frekvenčna porazdelitev ocen komponent pedagoškega dela izvajalca
# V primeru, da kakšna vrednost manjka jo ustvarimo, sicer ko poženemo koda-izvajalec_predmet ne generira tabel
column_name <-
c("1",
"2",
"3",
"4",
"5",
"Ne želim odgovoriti",
"Nimam dovolj informacij")
if (length(which(izv.someMiss %in% column_name)) < 7) {
# Če so kakšne manjkajoče vrednosti, ki se dodajajo v tabele kot imena stolpcev za izvajalca
Missing <- setdiff(column_name, izv.someMiss) # Find names of missing columns
izv.someMiss <- c(Missing,izv.someMiss)
izv.someMiss <- sort(izv.someMiss)
}
# MANJKAJOČE VREDNOSTI----------------------
data.izvajalci <- data.izvajalci[order(data.izvajalci$izvajalec.sifra, data.izvajalci$predmet.sifra), ]
# Število vseh odgovorov. To so odgovori na predmet in izvajalca
# '-1' neodgovorjeno vprašanje, '-2' preskok zaradi pogoja (IF)
data.izvajalci$veljavna.vsiodgovori <-
data.izvajalci$predmet.izpolnjeval.pred == -1 &
(
data.izvajalci$izvajalec.jepouceval == 1 |
data.izvajalci$izvajalec.jepouceval == 2 |
data.izvajalci$izvajalec.jepouceval == -2
)
# Število odgovorov izvajalca
# ali je anketa veljavna za izvajalca; ali je student ni izpolnjeval (je pa začel anketo)
data.izvajalci$veljavna <-
data.izvajalci$predmet.izpolnjeval.pred == -1 &
(data.izvajalci$izvajalec.jepouceval == 1 |
data.izvajalci$izvajalec.jepouceval == -2)
data.izvajalci$zavrnjena <-
(
!data.izvajalci$veljavna &
!is.na(data.izvajalci$predmet.izpolnjeval.pred) &
!is.na(data.izvajalci$izvajalec.jepouceval) &
!(data.izvajalci$izvajalec.jepouceval == 2)
)
data.izvajalci$nipouceval <-
data.izvajalci$izvajalec.jepouceval == 2 # Če je študent v anketi pred izpitom odgovoril, da ga izvajalec pri tem predmetu ni poučeval
# adding student data (year and programme)
data.izvajalci <-
merge(
data.izvajalci,
programi.imena[, c("ID", "Naziv")],
by.x = "ID_vrsta_studija",
by.y = "ID",
all.x = TRUE,
sort = FALSE
)
# Matching names
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
names(data.izvajalci)[match(c("ID_vrsta_studija", "Letnik", "Naziv.y"),
names(data.izvajalci))] <-
c("student.program.sifra",
"student.letnik",
"student.program.ime")
} else {
names(data.izvajalci)[match(c("ID_vrsta_studija", "Naziv.y"),
names(data.izvajalci))] <-
c("student.program.sifra",
"student.program.ime")
}
#------------------------------------------ ERROR CHECK ---------------------------------------------#
# Če je output.pred > 1 to pomeni, da sta bazi 1KA odgovorov (anketa PRED) in šifrant X1 neskladni
# Torej vsa neskladja odpravimo
if (nrow(output.pred) > 0) {
data.izvajalci <- data.izvajalci[! paste(data.izvajalci$predmet.sifra, data.izvajalci$izvajalec.sifra) %in%
paste(output.pred$sifpredm, output.pred$ID), ]
}
#---------------------------------------- //ERROR CHECK// -------------------------------------------#
#------------------------------ OPISNE STATISTIKE ----------------------------------#
# IZVAJALCI ANKETA PRED-------------------------------
# Lecturers mean by the course
izvMean <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = mean,
na.rm = TRUE)
#
colnames(izvMean)[3:ncol(izvMean)] <- paste0(vars.izvajalec$cont$vars,"_mean")
# mediane
izvMedian <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = median,
na.rm = TRUE)
colnames(izvMedian)[3:ncol(izvMedian)] <- paste0(vars.izvajalec$cont$vars,"_median")
# sd
izvSd <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = sd,
na.rm = TRUE)
colnames(izvSd)[3:ncol(izvSd)] <- paste0(vars.izvajalec$cont$vars,"_sd")
# min
izvMin <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = min,
na.rm = TRUE)
colnames(izvMin)[3:ncol(izvMin)] <- paste0(vars.izvajalec$cont$vars,"_min")
izvMin[izvMin==Inf] <- NA
# max
izvMax <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = max,
na.rm = TRUE)
colnames(izvMax)[3:ncol(izvMax)] <- paste0(vars.izvajalec$cont$vars,"_max")
izvMax[izvMax==-Inf] <- NA
# N posamezne spremenljivke
izvN <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = function(x)
sum(!is.na(x))
)
colnames(izvN)[3:ncol(izvN)] <- paste0(vars.izvajalec$cont$vars,"_N")
# N anket
izvNanket <-
aggregate(data.izvajalci$veljavna, by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")], FUN = sum)
colnames(izvNanket)[3] <- "N_anket"
# N vseh odgovorov
izvNanketvsiodgovori <- aggregate(data.izvajalci$veljavna.vsiodgovori,by=data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = sum)
colnames(izvNanketvsiodgovori)[3] <- "N_anketTotal"
# N zavrnjenih anket
izvNzavrnjenih <-
aggregate(data.izvajalci$zavrnjena, by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")], FUN = sum)
colnames(izvNzavrnjenih)[3] <- "N_zavrnjenih"
# N Lurkerjev PRED izpitom
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
data.izvajalci$lurker[data.izvajalci$lurker == 0] <- NA
izvNLurkerji <-
aggregate(
as.numeric(data.izvajalci$lurker),
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = function(x)
sum(!is.na(x))
)
colnames(izvNLurkerji)[3] <- "N_lurkerjev_ivz"
}
# N anket: Izvajalec ni poučeval
izvNipouceval <-
aggregate(data.izvajalci$nipouceval, by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")], FUN = sum)
colnames(izvNipouceval)[3] <- "Ni_pouceval"
# Prvi kvartil Q1
izvQ1 <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = quantile,
probs = c(0.25),
na.rm = T
)
colnames(izvQ1)[3:ncol(izvQ1)] <- paste0(vars.izvajalec$cont$vars,"_Q1")
# Tretji kvartil
izvQ3 <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = quantile,
probs = c(0.75),
na.rm = T
)
colnames(izvQ3)[3:ncol(izvQ3)] <- paste0(vars.izvajalec$cont$vars,"_Q3")
# Prvi decil
izvD1 <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = quantile,
probs = c(0.1),
type = 5,
na.rm = T
)
colnames(izvD1)[3:ncol(izvD1)] <- paste0(vars.izvajalec$cont$vars,"_D1")
# Deveti decil
izvD9 <-
aggregate(
data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("predmet.sifra", "izvajalec.sifra")],
FUN = quantile,
probs = c(0.9),
type = 5,
na.rm = T
)
colnames(izvD9)[3:ncol(izvD9)] <- paste0(vars.izvajalec$cont$vars,"_D9")
# Zdužimo opisne statistike izvajalcev
# Merge data for lecturer
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
povprecja.izvajalci <-
Reduce(
function(x, y)
merge(
x,
y,
c("izvajalec.sifra", "predmet.sifra"),
all = TRUE,
sort = FALSE
) ,
list(
izvMean,
izvSd,
izvMin,
izvMax,
izvN,
izvNanket,
izvNanketvsiodgovori,
izvNzavrnjenih,
izvNipouceval,
izvQ1,
izvQ3,
izvMedian,
izvD1,
izvD9,
izvNLurkerji
)
)
} else {
povprecja.izvajalci <-
Reduce(
function(x, y)
merge(
x,
y,
c("izvajalec.sifra", "predmet.sifra"),
all = TRUE,
sort = FALSE
) ,
list(
izvMean,
izvSd,
izvMin,
izvMax,
izvN,
izvNanket,
izvNanketvsiodgovori,
izvNzavrnjenih,
izvNipouceval,
izvQ1,
izvQ3,
izvMedian,
izvD1,
izvD9
)
)
}
# združit s šifrantom
povprecja.izvajalci <- merge(povprecja.izvajalci, sifrant,
by.x = c("izvajalec.sifra", "predmet.sifra"),
by.y = c("IDPEDAGOGA", "IDP"), all.x = TRUE, sort = FALSE)
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# Write csv data for AGREGAT: kjerkoli bomo delali trende, bomo prikazali tudi povprečja
# za predmete, ki imajo manj kot 4 enote. In sicer trentuno v primeru, da ima izvajalec
# pri predmetu premalo dogovorov povprečij ne prikažemo oz ne računamo.
# Pri trendih pa bo postopek naslednji:
# V kolikor vsota odgovorov v dveh zaporednih letnih preseže 3 odgovore potem to prikažemo
# v novem stolpcu. In te ocene potrebujemo za trende.
# write.csv2(
# povprecja.izvajalci,
# paste0("povprecja.izvajalci.agregat_", fakulteta, ".csv")
# )
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# zakrivanje vrednosti kjer ni dovolj enot
# If there are less than 4 answers we do not calculate mean for the course or lecturer
premalo <- povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_N")] < minEnot
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_mean")][premalo] <- NA
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_sd")][premalo] <- NA
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_min")][premalo] <- NA
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_max")][premalo] <- NA
# Kjer je negativno število pomeni, da gre za več vpisanih študentov, kot jih je v bazi oz spremenljivki ST_STUD
povprecja.izvajalci$ST_STUD <-
ifelse(
povprecja.izvajalci$ST_STUD < as.numeric(povprecja.izvajalci$N_anket) + as.numeric(povprecja.izvajalci$N_zavrnjenih),
as.numeric(povprecja.izvajalci$N_anket) + as.numeric(povprecja.izvajalci$N_zavrnjenih),
povprecja.izvajalci$ST_STUD
)
# povprečje vseh komponent izvajalca
povprecja.izvajalci$izvajalec.ocena.SKUPAJ <-
rowMeans(povprecja.izvajalci[paste0(vars.izvajalec$cont$vars, "_mean")], na.rm = T)
# % sodelujocih
povprecja.izvajalci$sodelujocih.pct <-
povprecja.izvajalci$N_anket / as.numeric(povprecja.izvajalci$ST_STUD) * 100
# % zavrnjenih
povprecja.izvajalci$zavrnjenih.pct <-
povprecja.izvajalci$N_zavrnjenih / as.numeric(povprecja.izvajalci$ST_STUD) * 100
# % Ni pouceval
povprecja.izvajalci$nipouceval.pct <-
povprecja.izvajalci$Ni_pouceval / as.numeric(povprecja.izvajalci$ST_STUD) * 100
## N in % neodzivnih
#intersect(as, povprecja.izvajalci$ST_STUD)
povprecja.izvajalci$N_neodzivnih <-
as.numeric(povprecja.izvajalci$ST_STUD) - povprecja.izvajalci$N_anketTotal - povprecja.izvajalci$N_zavrnjenih
povprecja.izvajalci$neodzivnih.pct <-
povprecja.izvajalci$N_neodzivnih / as.numeric(povprecja.izvajalci$ST_STUD) * 100
## //IZVAJALCI// ##
# nova imena predmetov še k povprečjem izvajalcev[]
povprecja.izvajalci <- merge(povprecja.izvajalci, povprecja.predmeti[,c("predmet.sifra","ime.predmeta")], by = "predmet.sifra", sort = FALSE)
########################
## ŠTUDIJSKI PROGRAMI ##
########################
# število ocen po programih (za poročila in povprečja po programih)
programi <- unique(data.predmeti[c("student.program.sifra", "student.program.ime")])
programi <- subset(programi, !is.na(student.program.sifra))
programi <- subset(programi, student.program.ime != "NA")
programi <- programi[order(programi$student.program.ime), ]
## izvajalec: Študijski program ##
povprecja.izvajalci[paste0("program_studenta_", programi$student.program.sifra)] <- 0
data.izv.temp <- subset(data.izvajalci, veljavna)
programi.studentov <- as.data.frame.matrix(table(paste(data.izv.temp$izvajalec.sifra, data.izv.temp$predmet.sifra, sep = "_"), data.izv.temp$student.program.sifra))
names(programi.studentov) <- paste0("program_studenta_", names(programi.studentov))
povprecja.izvajalci[match(rownames(programi.studentov), paste(povprecja.izvajalci$izvajalec.sifra, povprecja.izvajalci$predmet.sifra, sep = "_")), names(programi.studentov)] <- programi.studentov
## predmet: Študijski program ##
povprecja.predmeti[paste0("program_studenta_", programi$student.program.sifra)] <- 0
data.prog.temp <- subset(data.predmeti, veljavna)
programi.studentov <- as.data.frame.matrix(table(data.prog.temp$predmet.sifra, data.prog.temp$student.program.sifra))
names(programi.studentov) <- paste0("program_studenta_", names(programi.studentov))
povprecja.predmeti[match(rownames(programi.studentov), povprecja.predmeti$predmet.sifra), names(programi.studentov)] <- programi.studentov
# sort by name
povprecja.izvajalci <- povprecja.izvajalci[order(povprecja.izvajalci$NAZIV.PEDAGOGA, povprecja.izvajalci$PREDMET), ]
povprecja.predmeti <- povprecja.predmeti[order(povprecja.predmeti$PREDMET),]
# skupna povprečja izvajalcev (povprečja ocen pri vseh predmetih)
povprecja.izvajalci.skupaj <-
aggregate(povprecja.izvajalci[, c(
"ST_STUD",
"N_anket",
"N_anketTotal",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
"nipouceval.pct",
paste0(vars.izvajalec$cont$vars, "_mean"),
"izvajalec.ocena.SKUPAJ"
)],
by = povprecja.izvajalci[, "izvajalec.sifra", drop = FALSE],
FUN = mean,
na.rm = TRUE)
# number of evaluations from different programmes
vsota.ocen.programov <-
aggregate(povprecja.izvajalci[paste0("program_studenta_", programi$student.program.sifra)],
by = povprecja.izvajalci[, "izvajalec.sifra", drop = FALSE],
FUN = sum,
na.rm = TRUE)
# number of courses with at least minimun nuber of answers
st.ocen <- aggregate(list(st.ocen=povprecja.izvajalci$N_anket >= minEnot),
by = povprecja.izvajalci[, "izvajalec.sifra", drop = FALSE], FUN = sum, na.rm = TRUE)
povprecja.izvajalci.skupaj <-
Reduce(
function(x, y)
merge(
x,
y,
by = "izvajalec.sifra",
all.x = TRUE,
sort = FALSE
) ,
list(
povprecja.izvajalci.skupaj,
vsota.ocen.programov,
st.ocen,
unique(povprecja.izvajalci[,c("izvajalec.sifra","NAZIV.PEDAGOGA")])
)
)
# sort
povprecja.izvajalci.skupaj <- povprecja.izvajalci.skupaj[order(povprecja.izvajalci.skupaj$NAZIV.PEDAGOGA),]
# da izračunamo povprečja vseh predmetov določenega izvajalca rabimo ocene predmetov po izvajalcih (podvojene vrstice z različnimi šiframi izvajalcev)
povprecja.predmeti.vsi.izvajalci <-
merge(
povprecja.izvajalci[, c("izvajalec.sifra", "predmet.sifra")],
povprecja.predmeti,
by = "predmet.sifra",
all.x = TRUE,
sort = FALSE
)
povprecja.predmetov.izvajalca.skupaj <-
aggregate(
povprecja.predmeti.vsi.izvajalci[, c(
"ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
paste0(vars.cours, "_mean"),
"predmet.ocena.SKUPAJ")],
by = povprecja.predmeti.vsi.izvajalci[, "izvajalec.sifra", drop = FALSE],
FUN = mean,
na.rm = TRUE
)
# še imena izvajalcev
povprecja.predmetov.izvajalca.skupaj <- merge(povprecja.predmetov.izvajalca.skupaj,
unique(povprecja.izvajalci[,c("izvajalec.sifra","NAZIV.PEDAGOGA")]),
by = "izvajalec.sifra", all.x = TRUE)
# povprečja vseh izvajalecv pri vsakem predmetu
povprecja.predmet.izvajalci.skupaj <- aggregate(povprecja.izvajalci[, c("ST_STUD","N_anket","N_anketTotal","sodelujocih.pct","zavrnjenih.pct",
"neodzivnih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),
"izvajalec.ocena.SKUPAJ")],
by = povprecja.izvajalci[,"predmet.sifra",drop = FALSE],
FUN = mean, na.rm = TRUE)
# še imena predmetov
povprecja.predmet.izvajalci.skupaj <- merge(povprecja.predmet.izvajalci.skupaj, povprecja.predmeti[,c("predmet.sifra","ime.predmeta")],
by = "predmet.sifra", all.x = TRUE)
povprecja.predmetov.izvajalca.skupaj <- povprecja.predmetov.izvajalca.skupaj[order(povprecja.predmetov.izvajalca.skupaj$NAZIV.PEDAGOGA),]
povprecja.predmet.izvajalci.skupaj <- povprecja.predmet.izvajalci.skupaj[order(povprecja.predmet.izvajalci.skupaj$ime.predmeta),]
#################
## Quantiles ##
#################
# for every lecturer/course
# S funkcijo kvantRang in kvantRang1 izračunamo in barvamo kvantilne range, ki se pokažejo v posameznih tabelah (glej skirpto funkcije.r)
# Kvantilni rangi za izvajalce pri predmetih (IPP)
povprecja.izvajalci$ime.predmeta<- povprecja.izvajalci$PREDMET
kvantili.izvajalci <- povprecja.izvajalci[c("izvajalec.sifra","NAZIV.PEDAGOGA","predmet.sifra","ime.predmeta","ST_STUD","N_anket",
"sodelujocih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")]
for (var in c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")) {
kvantili.izvajalci[[var]] <- kvantRang(kvantili.izvajalci[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.izvajalci[[var]] <- kvantRang1(kvantili.izvajalci[[var]])
}
# //Kvantilni rangi za izvajalce pri predmetih (IPP)// #
## lecturer averages ##
kvantili.izvajalci.skupaj <- povprecja.izvajalci.skupaj[c("izvajalec.sifra","NAZIV.PEDAGOGA","ST_STUD","N_anket",
"sodelujocih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),
"izvajalec.ocena.SKUPAJ")]
for (var in c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")) {
kvantili.izvajalci.skupaj[[var]] <- kvantRang(kvantili.izvajalci.skupaj[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.izvajalci.skupaj[[var]] <- kvantRang1(kvantili.izvajalci.skupaj[[var]])
}
kvantili.predmetov.izvajalca.skupaj <- povprecja.predmetov.izvajalca.skupaj[c("izvajalec.sifra","NAZIV.PEDAGOGA","ST_STUD",
"N_anket","sodelujocih.pct",
paste0(vars.cours,"_mean"),
"predmet.ocena.SKUPAJ")]
for (var in c(paste0(vars.cours,"_mean"),"predmet.ocena.SKUPAJ")) {
kvantili.predmetov.izvajalca.skupaj[[var]] <- kvantRang(kvantili.predmetov.izvajalca.skupaj[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.predmetov.izvajalca.skupaj[[var]] <- kvantRang1(kvantili.predmetov.izvajalca.skupaj[[var]])
}
## for table names (izpis izvajalca, programov, fakultete) ##
kvantili.izvajalci.st <- sum(kvantili.izvajalci$izvajalec.ocena.SKUPAJ != ".") # Število vseh ocenjenih izvajalcev fakultete
kvantili.izvajalci.skupaj.st <- sum(kvantili.izvajalci.skupaj$izvajalec.ocena.SKUPAJ != ".") # Število vseh ocenjenih IPP (izvajalcev pri)
kvantili.predmetov.izvajalca.skupaj.st.pred <- sum(kvantili.predmetov.izvajalca.skupaj$predmet.ocena.SKUPAJ != ".")
#####################################
# POVPREČJA PO ŠTUDIJSKIH PROGRAMIH
#####################################
# Skupna povprečja izvajalcav po posameznih študijskih programih
progMeanIzv <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci["student.program.sifra"],
FUN = mean,
na.rm = TRUE)
# Dodamo še skupno povprečje glede na vseh sedem komponent
progMeanIzv <-
cbind(progMeanIzv, izvajalec.ocena.SKUPAJ = rowMeans(progMeanIzv[vars.izvajalec$cont$vars]))
#izračun povprečij izvajalcev za študijske programe in insert v poročila za fakulteto
progMeanIzv.fak <-
aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("student.program.sifra", "student.program.ime")],
FUN = mean,
na.rm = TRUE)
progMeanIzv.fak1 <-
cbind(progMeanIzv.fak,
izvajalec.ocena.SKUPAJ = rowMeans(progMeanIzv.fak[vars.izvajalec$cont$vars], na.rm = TRUE))
# Število odogovorov (število anket) pri posameznem študijskem programu
st.odgovorov.fak1 <-
aggregate(data.izvajalci$veljavna, by = data.izvajalci[c("student.program.sifra", "student.program.ime")], FUN = sum)
colnames(st.odgovorov.fak1)[3] <- "N_anket" # Poimenujemo stolpec
progMeanIzv.fak1 <-
merge(
progMeanIzv.fak1,
st.odgovorov.fak1,
by = c("student.program.sifra", "student.program.ime"),
all = TRUE,
sort = FALSE
)
## //povprečja programov// ##
####################################
## lecturer averages by programme ##
####################################
povprecja.izvajalci.programi <- NULL
povprecja.izvajalci.programi.brez.cenzure <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## lecturer averages by programme ##
for (program in programi$student.program.sifra) {
data.program <- subset(data.izvajalci, student.program.sifra == program)
if (nrow(data.program)>0){
# povprečja
izvMean <- aggregate(data.program[vars.izvajalec$cont$vars],by=data.program[c("predmet.sifra","izvajalec.sifra")], FUN = mean, na.rm = TRUE)
colnames(izvMean)[3:ncol(izvMean)] <- paste0(vars.izvajalec$cont$vars,"_mean")
# N posamezne spremenljivke
izvN <- aggregate(data.program[vars.izvajalec$cont$vars], by=data.program[c("predmet.sifra","izvajalec.sifra")], FUN=function(x) sum(!is.na(x)))
colnames(izvN)[3:ncol(izvN)] <- paste0(vars.izvajalec$cont$vars,"_N")
# N anket
izvNanket <- aggregate(data.program$veljavna, by=data.program[c("predmet.sifra","izvajalec.sifra")], FUN = sum)
colnames(izvNanket)[3] <- "N_anket"
# Merge
izvajalci.program <- merge(izvMean, izvN, by=c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
izvajalci.program <- merge(izvajalci.program, izvNanket, by=c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci.programi.brez.cenzure <- rbind(povprecja.izvajalci.programi.brez.cenzure,
cbind(izvajalci.program, program.studentov=program,
program.studentov.ime=programi[programi$student.program.sifra==program,
"student.program.ime"]))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- izvajalci.program[paste0(vars.izvajalec$cont$vars,"_N")] < minEnot
izvajalci.program[paste0(vars.izvajalec$cont$vars,"_mean")][premalo] <- NA
# average of components
izvajalci.program$izvajalec.ocena.SKUPAJ <- rowMeans(izvajalci.program[paste0(vars.izvajalec$cont$vars,"_mean")],na.rm=T)
povprecja.izvajalci.programi <- rbind(povprecja.izvajalci.programi, cbind(izvajalci.program, program.studentov=program,
program.studentov.ime=programi[programi$student.program.sifra==program,
"student.program.ime"]))
}
}
povprecja.izvajalci.programi <- merge(povprecja.izvajalci.programi,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra",
"ime.predmeta", "NAZIV.PEDAGOGA", "NACIN_STUDIJA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
povprecja.izvajalci.programi.brez.cenzure <- merge(povprecja.izvajalci.programi.brez.cenzure,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra", "ime.predmeta", "NAZIV.PEDAGOGA", "NACIN_STUDIJA","PRAKSA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
## //lecturer averages by programme// ##
#########################################
## lecturer averages by students' year ##
#########################################
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
povprecja.izvajalci.letniki <- NULL
povprecja.izvajalci.letniki.brez.cenzure <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## lecturer averages by students' year ##
for (letnik in unique(sort(data.izvajalci$student.letnik))) {
data.letnik <- subset(data.izvajalci, student.letnik == letnik)
# povprečja
izvMean <- aggregate(data.letnik[vars.izvajalec$cont$vars], by=data.letnik[c("predmet.sifra","izvajalec.sifra")], FUN=mean, na.rm=TRUE)
colnames(izvMean)[3:ncol(izvMean)] <- paste0(vars.izvajalec$cont$vars,"_mean")
# N posamezne spremenljivke
izvN <- aggregate(data.letnik[vars.izvajalec$cont$vars], by=data.letnik[c("predmet.sifra","izvajalec.sifra")], FUN=function(x) sum(!is.na(x)))
colnames(izvN)[3:ncol(izvN)] <- paste0(vars.izvajalec$cont$vars,"_N")
# N anket
izvNanket <- aggregate(data.letnik$veljavna, by=data.letnik[c("predmet.sifra","izvajalec.sifra")], FUN=sum)
colnames(izvNanket)[3] <- "N_anket"
# Merge
izvajalci.letnik <- merge(izvMean, izvN, by=c("izvajalec.sifra", "predmet.sifra"), all=TRUE, sort=FALSE)
izvajalci.letnik <- merge(izvajalci.letnik, izvNanket, by=c("izvajalec.sifra", "predmet.sifra"), all=TRUE, sort=FALSE)
povprecja.izvajalci.letniki.brez.cenzure <- rbind(povprecja.izvajalci.letniki.brez.cenzure,
cbind(izvajalci.letnik, letnik.studentov=letnik))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- izvajalci.letnik[paste0(vars.izvajalec$cont$vars,"_N")] < minEnot
izvajalci.letnik[paste0(vars.izvajalec$cont$vars,"_mean")][premalo] <- NA
povprecja.izvajalci.letniki <- rbind(povprecja.izvajalci.letniki, cbind(izvajalci.letnik, letnik.studentov=letnik))
}
povprecja.izvajalci.letniki <- merge(povprecja.izvajalci.letniki,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra",
"ime.predmeta", "NAZIV.PEDAGOGA", "NACIN_STUDIJA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
povprecja.izvajalci.letniki.brez.cenzure <- merge(povprecja.izvajalci.letniki.brez.cenzure,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra", "ime.predmeta",
"NAZIV.PEDAGOGA", "NACIN_STUDIJA","PRAKSA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
## //lecturer averages by students' year// ##
}
## PODATKI ZA TABELE, KI SE DODAJO K "ANALIZI IZVAJALCA PRI PREDMETU PO PROGRAMIH IN LETNIKIH" ##
test1 <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("student.program.ime")], FUN = mean, na.rm = TRUE)
test2 <- cbind(test1, izvajalec.ocena.SKUPAJ=rowMeans(test1[vars.izvajalec$cont$vars], na.rm = TRUE))
#Zaokroži vrednosti za izpis programov pri IZVAJALCU
round_df <- function(x, digits) {
# round all numeric variables
# x: data frame
# digits: number of digits to round
numeric_columns <- sapply(x, class) == 'numeric'
x[numeric_columns] <- round(x[numeric_columns], digits)
x
}
test2 <- round_df(test2, 1)
## //PODATKI ZA TABELE// ##
############################
# quantiles by programme #
###########################
kvantili.izvajalci.programi <- NULL
for (program in unique(povprecja.izvajalci.programi$program.studentov)) {
kvantili.izvajalci.program <- povprecja.izvajalci.programi[povprecja.izvajalci.programi$program.studentov == program &
povprecja.izvajalci.programi$N_anket > 0,
c("izvajalec.sifra","predmet.sifra","program.studentov","program.studentov.ime",
"N_anket",paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")]
for (var in c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")) {
kvantili.izvajalci.program[[var]] <- kvantRang(kvantili.izvajalci.program[[var]])
}
for (var in c("N_anket")) {
kvantili.izvajalci.program[[var]] <- kvantRang1(kvantili.izvajalci.program[[var]])
}
kvantili.izvajalci.programi <- rbind(kvantili.izvajalci.programi, kvantili.izvajalci.program)
}

View File

@ -1,715 +0,0 @@
# COURSE ANKETA PO --------------------------------------------
# Next we also need all variables for the course that
# was evaluated in ANKETA PRED izpitom
#
# Select variables needed for ANEKTA PRED IZPITOm
# This variables are students evaluation for the course
# if student participated in she survey, answers to
# open ended questions etc.
var.po <-
names(data_po_izpitu)[grepl("sifpredm|PONAGa|POKOMP|PONAL|POKT$|POPRAK" , names(data_po_izpitu))]
var.po <- data.frame(var.po, stringsAsFactors = FALSE)
# And rownames will be variables that are evaluated in the course
rownames(var.po) <-
c(
"predmet.sifra",
"predmet.izpolnjeval.po",
"predmet.ocena.kompetence",
"predmet.komentar.kompetence.pojasnilo",
"predmet.ocena.vsebine",
"predmet.ocena.naloge",
"predmet.ocena.kriteriji",
"predmet.ocena.krediti",
"predmet.ocena.ponudba",
"predmet.ocena.pomoč",
"predmet.ocena.navodila",
"predmet.ocena.korist",
"predmet.ocena.učinkovitost",
"predmet.ocena.strokovnost",
"predmet.ocena.podpora",
"predmet.ocena.primernost",
"predmet.ocena.dolzina",
"predmet.komentar.praksa"
)
# Items
vars.cours.po<-
as.vector(rownames(var.po)[!rownames(var.po) %in% c(
"predmet.sifra",
"predmet.izpolnjeval.po",
"predmet.komentar.dobro",
"predmet.komentar.slabo",
"predmet.komentar.kompetence.pojasnilo",
"predmet.komentar.praksa"
)])
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) { # FKKT nima podatka o letnikih in lurkerjih
# ANKETA PRED IZPITOM
data.predmeti.po <- data_po_izpitu[c(var.po[, 1], "idprog","letnik","program", "lurker")]
names(data.predmeti.po) <- c(rownames(var.po),"ID_vrsta_studija","Letnik","Naziv","lurker")
} else {
data.predmeti.po <- data_po_izpitu[c(var.po[, 1], "idprog","program")]
names(data.predmeti.po) <- c(rownames(var.po),"ID_vrsta_studija","Naziv")
}
# MANJKAJOČE VREDNOSTI----------------------
# When caluclating lecturers averages
# we want to exclude all missing values
# But whwn we will do frequency tables we want to
# keep values
# "-99" "Nimam dovolj informacij"
# "-96" "Ne želim odgovoriti"
# Missing values for frequency tables
data.po.miss <- data.predmeti.po
data.po.miss[data.po.miss == "-99"] <- "Nimam dovolj informacij"
# V anketi po se Pravilno beležijo zavrniteve študenta v anketi PRED pa je to navedeno kot -96
data.po.miss[data.po.miss == "-98"] <- "Ne želim odgovoriti"
# setting missing values and keeping some for frequency tables
# all values with some miss for tables
someMiss.po <- sort(unique(as.vector(as.matrix(data.po.miss[, vars.cours.po]))))
# Select only valid frequencis and not missing cases
someMiss.po <- someMiss.po[someMiss.po > 0]
# Missing values for averages and charts
data.predmeti.po[,! colnames(data.predmeti.po) %in% (c("predmet.izpolnjeval.po"))][data.predmeti.po[,! colnames(data.predmeti.po) %in% (c("predmet.izpolnjeval.po"))] < 0] <- NA
# Convert to numeric columns
data.predmeti.po[c(vars.cours.po)] <- as.data.frame(lapply(data.predmeti.po[c(vars.cours.po)] , as.numeric))
# data.predmeti.po$predmet.sifra <- as.numeric(data.predmeti.po$predmet.sifra)
data.predmeti.po <- data.predmeti.po[order(data.predmeti.po$predmet.sifra),]
# ali je anketa veljavna za predmet; ali je student ni izpolnjeval (je pa začel anketo)
# '-1' neodgovorjeno vprašanje
data.predmeti.po$veljavna <- data.predmeti.po$predmet.izpolnjeval.po == -1
# Ali je študent zavrnil izpolnjevanje ankete
data.predmeti.po$zavrnjena <- (!data.predmeti.po$veljavna & !is.na(data.predmeti.po$predmet.izpolnjeval.po))
# adding student data (year and programme)
data.predmeti.po <-
merge(
data.predmeti.po,
programi.imena[, c("ID", "Naziv")],
by.x = "ID_vrsta_studija",
by.y = "ID",
all.x = TRUE,
sort = FALSE
)
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) { # FKKT nima podatka o letnikih in lurkerjih
names(data.predmeti.po)[match(c("ID_vrsta_studija", "Letnik", "Naziv.y"),
names(data.predmeti.po))] <-
c("student.program.sifra",
"student.letnik",
"student.program.ime")
} else {
names(data.predmeti.po)[match(c("ID_vrsta_studija", "Naziv.y"),
names(data.predmeti.po))] <-
c("student.program.sifra",
"student.program.ime")
}
# povprečja
poMean <-
aggregate(data.predmeti.po[vars.cours.po],
by = data.predmeti.po["predmet.sifra"],
FUN = mean,
na.rm = TRUE)
colnames(poMean)[2:ncol(poMean)] <- paste0(vars.cours.po, "_mean")
# Mediane
poMedian <-
aggregate(data.predmeti.po[vars.cours.po],
by = data.predmeti.po["predmet.sifra"],
FUN = median,
na.rm = TRUE)
colnames(poMedian)[2:ncol(poMedian)] <- paste0(vars.cours.po,"_median")
# sd
poSd <-
aggregate(data.predmeti.po[vars.cours.po],
by = data.predmeti.po["predmet.sifra"],
FUN = sd,
na.rm = TRUE)
colnames(poSd)[2:ncol(poSd)] <- paste0(vars.cours.po,"_sd")
# min
poMin <-
aggregate(data.predmeti.po[vars.cours.po],
by = data.predmeti.po["predmet.sifra"],
FUN = min,
na.rm = TRUE)
colnames(poMin)[2:ncol(poMin)] <- paste0(vars.cours.po,"_min")
poMin[poMin == Inf] <- NA
# max
poMax <-
aggregate(data.predmeti.po[vars.cours.po],
by = data.predmeti.po["predmet.sifra"],
FUN = max,
na.rm = TRUE)
colnames(poMax)[2:ncol(poMax)] <- paste0(vars.cours.po,"_max")
poMax[poMax==-Inf] <- NA
# N posamezne spremenljivke
poN <-
aggregate(
data.predmeti.po[vars.cours.po],
by = data.predmeti.po["predmet.sifra"],
FUN = function(x)
sum(!is.na(x))
)
colnames(poN)[2:ncol(poN)] <- paste0(vars.cours.po,"_N")
# N answering after exam
poNanket <-
aggregate(data.predmeti.po$veljavna, by = data.predmeti.po["predmet.sifra"], FUN = sum)
colnames(poNanket)[2] <- "N_anket"
# N didn't want to answer after exam
poNzavrnjenih <-
aggregate(data.predmeti.po$zavrnjena, by = data.predmeti.po["predmet.sifra"], FUN = sum)
colnames(poNzavrnjenih)[2] <- "N_zavrnjenih"
# N Lurkerjev PRED izpitom
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
data.predmeti.po$lurker[data.predmeti.po$lurker == 0] <- NA
poNLurkerji <-
aggregate(
as.numeric(data.predmeti.po$lurker),
by = data.predmeti.po["predmet.sifra"],
FUN = function(x)
sum(!is.na(x))
)
colnames(poNLurkerji)[2] <- "N_lurkerjev_po"
}
# razporejanje ocen za kreditne točke (n & %) # Ustreznost KT
krediti_razporejanje_n <- table(data.predmeti.po$predmet.sifra, data.predmeti.po$predmet.ocena.krediti)
krediti_razporejanje_pct <- prop.table(krediti_razporejanje_n, 1) * 100
if (!is.null(dimnames(krediti_razporejanje_n)[[2]])) {
colnames(krediti_razporejanje_n) <- paste0("krediti_razporejanje_n_", colnames(krediti_razporejanje_n))
colnames(krediti_razporejanje_pct) <- paste0("krediti_razporejanje_pct_", colnames(krediti_razporejanje_pct))
krediti_razporejanje_n <- cbind(
as.data.frame.matrix(krediti_razporejanje_n),
predmet.sifra = rownames(krediti_razporejanje_n)
)
krediti_razporejanje_pct <-
cbind(
as.data.frame.matrix(krediti_razporejanje_pct),
predmet.sifra = rownames(krediti_razporejanje_pct)
)
} else {
krediti_razporejanje_n <- NULL
krediti_razporejanje_pct <- NULL
}
# razporejanje ocen za kompetence1 (n & %)
kompetence1_razporejanje_n <-
table(data.predmeti.po$predmet.sifra,
data.predmeti.po$predmet.ocena.kompetence)
kompetence1_razporejanje_pct <- prop.table(kompetence1_razporejanje_n, 1) * 100
if (!is.null(dimnames(kompetence1_razporejanje_n)[[2]])) {
colnames(kompetence1_razporejanje_n) <-
paste0("kompetence1_razporejanje_n_",
colnames(kompetence1_razporejanje_n))
colnames(kompetence1_razporejanje_pct) <-
paste0("kompetence1_razporejanje_pct_",
colnames(kompetence1_razporejanje_pct))
kompetence1_razporejanje_n <-
cbind(
as.data.frame.matrix(kompetence1_razporejanje_n),
predmet.sifra = rownames(kompetence1_razporejanje_n)
)
kompetence1_razporejanje_pct <-
cbind(
as.data.frame.matrix(kompetence1_razporejanje_pct),
predmet.sifra = rownames(kompetence1_razporejanje_pct)
)
} else {
kompetence1_razporejanje_n <- NULL
kompetence1_razporejanje_pct <- NULL
}
# Prvi kvartil Q1
poQ1 <-
aggregate(
data.predmeti.po[vars.cours.po],
by = data.predmeti.po[c("predmet.sifra")],
FUN = quantile,
probs = c(0.25),
na.rm = T
)
colnames(poQ1)[2:ncol(poQ1)] <- paste0(vars.cours.po,"_Q1")
# Tretji kvartil
poQ3 <-
aggregate(
data.predmeti.po[vars.cours.po],
by = data.predmeti.po[c("predmet.sifra")],
FUN = quantile,
probs = c(0.75),
na.rm = T
)
colnames(poQ3)[2:ncol(poQ3)] <- paste0(vars.cours.po,"_Q3")
# Prvi decil
poD1 <-
aggregate(
data.predmeti.po[vars.cours.po],
by = data.predmeti.po[c("predmet.sifra")],
FUN = quantile,
probs = c(0.1),
type = 5,
na.rm = T
)
colnames(poD1)[2:ncol(poD1)] <- paste0(vars.cours.po,"_D1")
# Deveti decil
poD9 <-
aggregate(
data.predmeti.po[vars.cours.po],
by = data.predmeti.po[c("predmet.sifra")],
FUN = quantile,
probs = c(0.9),
type = 5,
na.rm = T
)
colnames(poD9)[2:ncol(poD9)] <- paste0(vars.cours.po,"_D9")
# Združimo izračunane statistike za predmete
# Merge data for lecturer
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
povprecja.predmeti.po <-
Reduce(
function(x, y)
merge(
x,
y,
c("predmet.sifra"),
all = TRUE,
sort = FALSE
) ,
list(
poMean,
poSd,
poMin,
poMax,
poN,
poQ1,
poQ3,
poMedian,
poNLurkerji,
poD1,
poD9,
poNanket,
poNzavrnjenih
)
)
} else {
povprecja.predmeti.po <-
Reduce(
function(x, y)
merge(
x,
y,
c("predmet.sifra"),
all = TRUE,
sort = FALSE
) ,
list(
poMean,
poSd,
poMin,
poMax,
poN,
poQ1,
poQ3,
poMedian,
poD1,
poD9,
poNanket,
poNzavrnjenih
)
)
}
# Če spremenljivka krediti_razporejanje_n ni NULL, jo združimo v popvrecja.predmeti sicer ne.
if (!is.null(krediti_razporejanje_n)) {
povprecja.predmeti.po <- merge(povprecja.predmeti.po, krediti_razporejanje_n, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.po <- merge(povprecja.predmeti.po, krediti_razporejanje_pct, by = "predmet.sifra", all = TRUE, sort = FALSE)
}
if (!is.null(kompetence1_razporejanje_n)) {
povprecja.predmeti.po <- merge(povprecja.predmeti.po, kompetence1_razporejanje_n, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.po <- merge(povprecja.predmeti.po, kompetence1_razporejanje_pct, by = "predmet.sifra", all = TRUE, sort = FALSE)
}
# združit s šifrantom
povprecja.predmeti.po <- merge(povprecja.predmeti.po, unique(sifrant[!(colnames(sifrant) %in% c("IDPEDAGOGA", "NAZIV.PEDAGOGA", "ST_KT", "ST_UR", "NOSILEC"))]),
by.x = "predmet.sifra", by.y = "IDP", all.x = TRUE, sort = FALSE)
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# Write csv data for AGREGAT: kjerkoli bomo delali trende, bomo prikazali tudi povprečja
# za predmete, ki imajo manj kot 4 enote. In sicer trentuno v primeru, da ima izvajalec
# pri predmetu premalo dogovorov povprečij ne prikažemo oz ne računamo.
# Pri trendih pa bo postopek naslednji:
# V kolikor vsota odgovorov v dveh zaporednih letnih preseže 3 odgovore potem to prikažemo
# v novem stolpcu. In te ocene potrebujemo za trende.
# write.csv2(povprecja.predmeti.po,
# paste0("povprecja.predmeti.po.agregat_", fakulteta, ".csv"))
#----------------------------- AGREGAT ZA TRENDE: NOVI STOLPCI ----------------------------------#
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- povprecja.predmeti.po[paste0(vars.cours.po,"_N")] < minEnot
povprecja.predmeti.po[paste0(vars.cours.po,"_mean")][premalo] <- NA
povprecja.predmeti.po[paste0(vars.cours.po,"_sd")][premalo] <- NA
povprecja.predmeti.po[paste0(vars.cours.po,"_min")][premalo] <- NA
povprecja.predmeti.po[paste0(vars.cours.po,"_max")][premalo] <- NA
# average of components - all, before exam
povprecja.predmeti.po$predmet.ocena.SKUPAJ <- rowMeans(povprecja.predmeti.po[paste0(vars.cours.po[2:4],"_mean")], na.rm = T)
povprecja.predmeti.po$predmet.ocena.SKUPAJ.praksa <- rowMeans(povprecja.predmeti.po[paste0(vars.predmet$cont$praksa,"_mean")], na.rm = T)
# Število študentov pri posameznem predmetu: Spremenimo iz character v numeric
povprecja.predmeti.po$ST_STUD <- as.numeric(povprecja.predmeti.po$ST_STUD)
# Kjer je negativno število pomeni, da gre za več vpisanih študentov, kot jih je v bazi oz spremenljivki ST_STUD
povprecja.predmeti.po$ST_STUD <- ifelse(povprecja.predmeti.po$ST_STUD < as.numeric(povprecja.predmeti.po$N_anket) + as.numeric(povprecja.predmeti.po$N_zavrnjenih),
as.numeric(povprecja.predmeti.po$N_anket) + as.numeric(povprecja.predmeti.po$N_zavrnjenih), povprecja.predmeti.po$ST_STUD)
# % odgovora
povprecja.predmeti.po$sodelujocih.pct <- povprecja.predmeti.po$N_anket / povprecja.predmeti.po$ST_STUD * 100
# % zavrnjenih
povprecja.predmeti.po$zavrnjenih.pct <- povprecja.predmeti.po$N_zavrnjenih / povprecja.predmeti.po$ST_STUD * 100
# N in % neodzivnih (ni pristopilo k anketi)
povprecja.predmeti.po$N_neodzivnih <- povprecja.predmeti.po$ST_STUD - povprecja.predmeti.po$N_anket - povprecja.predmeti.po$N_zavrnjenih
povprecja.predmeti.po$neodzivnih.pct <- povprecja.predmeti.po$N_neodzivnih / povprecja.predmeti.po$ST_STUD * 100
## //average of components - all, before, after exam// ##
# preurejeno ime predmeta
povprecja.predmeti.po$ime.predmeta <- povprecja.predmeti.po$PREDMET
# IZREDNi ŠTUDIJ
izredni <- povprecja.predmeti.po$NACIN=="2" # če je izredni predmet mora biti to v oklepaju
izredni <- izredni[!is.na(izredni) ]
povprecja.predmeti.po$ime.predmeta[izredni] <- paste(povprecja.predmeti.po$ime.predmeta[izredni], "(izredna izvedba)")
########################
## ŠTUDIJSKI PROGRAMI ##
########################
# število ocen po programih (za poročila in povprečja po programih)
programi.po <- unique(data.predmeti.po[c("student.program.sifra", "student.program.ime")])
programi.po <- subset(programi.po, !is.na(student.program.sifra))
programi.po <- subset(programi.po, student.program.ime != "NA")
programi.po <- programi.po[order(programi.po$student.program.ime), ]
## predmet: Študijski program ##
povprecja.predmeti.po[paste0("program_studenta_", programi.po$student.program.sifra)] <- 0
data.prog.temp.po <- subset(data.predmeti.po, veljavna)
programi.studentov.po <- as.data.frame.matrix(table(data.prog.temp.po$predmet.sifra, data.prog.temp.po$student.program.sifra))
names(programi.studentov.po) <- paste0("program_studenta_", names(programi.studentov.po))
povprecja.predmeti.po[match(rownames(programi.studentov.po), povprecja.predmeti.po$predmet.sifra), names(programi.studentov.po)] <- programi.studentov.po
# sort by name
povprecja.predmeti.po <- povprecja.predmeti.po[order(povprecja.predmeti.po$PREDMET),]
# are there any courses with too many answers in the database according to sifrant.xlsx
premalo_vpisanih <- povprecja.predmeti.po$N_neodzivnih < 0
premalo_vpisanih <- !is.na(premalo_vpisanih)
if (any(premalo_vpisanih)) {
warning(
c(
"Some courses have more students in the database than number of students that are attending the course according to sifrant.xlsx",
paste(
"\n",
povprecja.predmeti.po$predmet.sifra[premalo_vpisanih],
povprecja.predmeti.po$PREDMET[premalo_vpisanih],
paste0(
"(",
abs(povprecja.predmeti.po$N_neodzivnih[premalo_vpisanih]),
" more students)"
)
)
)
)
}
# da izračunamo povprečja vseh predmetov določenega izvajalca rabimo ocene predmetov po izvajalcih (podvojene vrstice z različnimi šiframi izvajalcev)
povprecja.predmeti.vsi.izvajalci.po <-
merge(
povprecja.izvajalci[, c("izvajalec.sifra", "predmet.sifra")],
povprecja.predmeti.po,
by = "predmet.sifra",
all.x = TRUE,
sort = FALSE
)
povprecja.predmetov.izvajalca.skupaj.po <-
aggregate(
povprecja.predmeti.vsi.izvajalci.po[, c(
"ST_STUD",
"N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
paste0(vars.cours.po, "_mean"),
"predmet.ocena.SKUPAJ",
"predmet.ocena.SKUPAJ.praksa")],
by = povprecja.predmeti.vsi.izvajalci.po[, "izvajalec.sifra", drop = FALSE],
FUN = mean,
na.rm = TRUE
)
# še imena izvajalcev
povprecja.predmetov.izvajalca.skupaj.po <- merge(povprecja.predmetov.izvajalca.skupaj.po,
unique(povprecja.izvajalci[,c("izvajalec.sifra","NAZIV.PEDAGOGA")]),
by = "izvajalec.sifra", all.x = TRUE)
# povprečja vseh izvajalecv pri vsakem predmetu
povprecja.predmet.izvajalci.skupaj.po <- aggregate(povprecja.izvajalci[, c("ST_STUD","N_anket","N_anketTotal","sodelujocih.pct","zavrnjenih.pct",
"neodzivnih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),
"izvajalec.ocena.SKUPAJ")],
by = povprecja.izvajalci[,"predmet.sifra",drop = FALSE],
FUN = mean, na.rm = TRUE)
# še imena predmetov
povprecja.predmet.izvajalci.skupaj.po <- merge(povprecja.predmet.izvajalci.skupaj.po, povprecja.predmeti.po[,c("predmet.sifra","ime.predmeta")],
by = "predmet.sifra", all.x = TRUE)
povprecja.predmetov.izvajalca.skupaj.po <- povprecja.predmetov.izvajalca.skupaj.po[order(povprecja.predmetov.izvajalca.skupaj.po$NAZIV.PEDAGOGA),]
povprecja.predmet.izvajalci.skupaj.po <- povprecja.predmet.izvajalci.skupaj.po[order(povprecja.predmet.izvajalci.skupaj.po$ime.predmeta),]
#################
## Quantiles ##
#################
# Kvantilni rangi za predmet: komponente ankete PRED in PO izpitu
kvantili.predmeti.po <- povprecja.predmeti.po[c("predmet.sifra","ime.predmeta","ST_STUD","N_anket","sodelujocih.pct",
paste0(vars.cours.po,"_mean"),"predmet.ocena.SKUPAJ",
"predmet.ocena.SKUPAJ.praksa")]
# Kredite in kompetence barvam posebaj vars.cours.po[c(-1,-5)]
for (var in c(paste0(vars.cours.po[c(-5)],"_mean"),"predmet.ocena.SKUPAJ", "predmet.ocena.SKUPAJ.praksa")) {
kvantili.predmeti.po[[var]] <- kvantRang(kvantili.predmeti.po[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.predmeti.po[[var]] <- kvantRang1(kvantili.predmeti.po[[var]])
}
for (var in c(paste0(vars.cours.po[c(5)],"_mean"))) {
kvantili.predmeti.po[[var]] <- kvantRang2(kvantili.predmeti.po[[var]])
}
# //Kvantilni rangi za predmet: komponente ankete PRED in PO izpitu// #
kvantili.predmetov.izvajalca.skupaj.po <- povprecja.predmetov.izvajalca.skupaj.po[c("izvajalec.sifra","NAZIV.PEDAGOGA","ST_STUD",
"N_anket","sodelujocih.pct",
paste0(vars.cours.po,"_mean"),
"predmet.ocena.SKUPAJ","predmet.ocena.SKUPAJ.praksa",
"predmet.ocena.krediti_mean","predmet.ocena.kompetence_mean")]
for (var in c(paste0(vars.cours.po,"_mean"),"predmet.ocena.SKUPAJ")) {
kvantili.predmetov.izvajalca.skupaj.po[[var]] <- kvantRang(kvantili.predmetov.izvajalca.skupaj.po[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.predmetov.izvajalca.skupaj.po[[var]] <- kvantRang1(kvantili.predmetov.izvajalca.skupaj.po[[var]])
}
# Glej npr izpis izvajalca, Tabela 1.1 (vrstico Povprečje FDV),
# kjer se izpiše število predmetov v anketi PRED izpitom
kvantili.predmeti.st.po <- sum(kvantili.predmeti.po$predmet.ocena.SKUPAJ != ".") # Število vseh ocenjenih predmetov: anketa PO
kvantili.predmetov.izvajalca.skupaj.st.po <- sum(kvantili.predmetov.izvajalca.skupaj.po$predmet.ocena.SKUPAJ != ".")
kvantili.ustreznotsKT <- sum(kvantili.predmeti.po$predmet.ocena.krediti_mean != ".") # Število vseh ocen za ustreznost KT (anketa PO)
#####################################
# POVPREČJA PO ŠTUDIJSKIH PROGRAMIH
#####################################
# Skupne ocene predmetov po posameznih študijskih programih
progMeanPo <- aggregate(data.predmeti.po[vars.cours.po],
by = data.predmeti.po["student.program.sifra"], FUN = mean, na.rm = TRUE)
progMeanPo$predmet.ocena.SKUPAJ <- rowMeans(progMeanPo[vars.cours.po], na.rm = TRUE)
progMeanPo$predmet.ocena.SKUPAJ.praksa <- rowMeans(progMeanPo[vars.predmet$cont$praksa], na.rm = TRUE)
## course averages by programme: ANKETA PO IZPITU ##
povprecja.predmeti.programi.PO <- NULL
povprecja.predmeti.programi.PO.brez.cenzure.PO <- NULL # Zapišemo vsa povprečja oz. vse ocene, tudi tista, ki imajo 4 odgovore ali manj
## course averages by programme ##
for (program in programi.po$student.program.sifra) {
# povprečja
data.program <- subset(data.predmeti.po, student.program.sifra == program)
predMean <- aggregate(data.program[vars.cours.po],
by = data.program["predmet.sifra"], FUN = mean, na.rm = TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(vars.cours.po,"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.program[vars.cours.po],
by = data.program["predmet.sifra"], FUN = function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(vars.cours.po,"_N")
# N answering before and after exam
predNanket <- aggregate(data.program$veljavna, by = data.program["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predmeti.program <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.program <- merge(predmeti.program, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.programi.PO.brez.cenzure.PO <-
rbind(
povprecja.predmeti.programi.PO.brez.cenzure.PO,
cbind(
predmeti.program,
program.studentov = program,
program.studentov.ime = programi.po[programi.po$student.program.sifra == program,
"student.program.ime"]
)
)
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.program[paste0(vars.cours.po,"_N")] < minEnot
predmeti.program[paste0(vars.cours.po,"_mean")][premalo] <- NA
# average of components - all, before, after exam
predmeti.program$predmet.ocena.SKUPAJ <- rowMeans(predmeti.program[paste0(vars.cours.po[c(2, 3, 4)],"_mean")],na.rm=T)
predmeti.program$predmet.ocena.SKUPAJ.praksa <- rowMeans(predmeti.program[paste0(vars.predmet$cont$praksa,"_mean")],na.rm=T)
povprecja.predmeti.programi.PO <- rbind(povprecja.predmeti.programi.PO, cbind(predmeti.program, program.studentov = program,
program.studentov.ime = programi.po[programi.po$student.program.sifra==program,
"student.program.ime"]))
}
povprecja.predmeti.programi.PO <- merge(povprecja.predmeti.programi.PO, povprecja.predmeti.po[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.programi.PO.brez.cenzure.PO <- merge(povprecja.predmeti.programi.PO.brez.cenzure.PO,
povprecja.predmeti.po[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA","PRAKSA")],
by = "predmet.sifra", all.x = T)
## //course averages by programme// ##
## course averages by student's year ANKETA PO IZPITU ##
if(ID != 3000030 && ID != 3000064 && ID != 3000004 && ID != 3000063) {
povprecja.predmeti.letniki.PO <- NULL
povprecja.predmeti.letniki.PO.brez.cenzure.PO <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## course averages by students' year ##
for (letnik in unique(sort(data.predmeti.po$student.letnik))) {
# povprečja
data.letnik <- subset(data.predmeti.po, student.letnik == letnik)
predMean <- aggregate(data.letnik[vars.cours.po],
by = data.letnik["predmet.sifra"],
FUN=mean, na.rm=TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(vars.cours.po,"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.letnik[vars.cours.po],
by=data.letnik["predmet.sifra"], FUN=function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(vars.cours.po,"_N")
# N answering before and after exam
predNanket <- aggregate(data.letnik$veljavna, by = data.letnik["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predmeti.letnik <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.letnik <- merge(predmeti.letnik, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.letniki.PO.brez.cenzure.PO <- rbind(povprecja.predmeti.letniki.PO.brez.cenzure.PO, cbind(predmeti.letnik, letnik.studentov = letnik))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.letnik[paste0(vars.cours.po,"_N")] < minEnot
predmeti.letnik[paste0(vars.cours.po,"_mean")][premalo] <- NA
# average of components - all, before, after exam
predmeti.letnik$predmet.ocena.SKUPAJ <- rowMeans(predmeti.letnik[paste0(vars.cours.po[c(2, 3, 4)],"_mean")], na.rm = T)
predmeti.letnik$predmet.ocena.SKUPAJ.praksa <- rowMeans(predmeti.letnik[paste0(vars.predmet$cont$praksa,"_mean")], na.rm = T)
povprecja.predmeti.letniki.PO <- rbind(povprecja.predmeti.letniki.PO, cbind(predmeti.letnik, letnik.studentov=letnik))
}
povprecja.predmeti.letniki.PO <- merge(povprecja.predmeti.letniki.PO, povprecja.predmeti.po[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.letniki.PO.brez.cenzure.PO <- merge(povprecja.predmeti.letniki.PO.brez.cenzure.PO,
povprecja.predmeti.po[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA","PRAKSA")],
by = "predmet.sifra", all.x = T)
## //course averages by students' year// ##
}
kvantili.predmeti.programi.PO <- NULL
for (program in unique(povprecja.predmeti.programi.PO$program.studentov)) {
kvantili.predmeti.program <- povprecja.predmeti.programi.PO[povprecja.predmeti.programi.PO$program.studentov == program &
(povprecja.predmeti.programi.PO$N_anket > 0),
c("predmet.sifra","N_anket","program.studentov","program.studentov.ime",
paste0(vars.cours.po,"_mean"),
"predmet.ocena.SKUPAJ","predmet.ocena.SKUPAJ.praksa")]
for (var in c(paste0(vars.cours.po[c(-5)],"_mean"),"predmet.ocena.SKUPAJ","predmet.ocena.SKUPAJ.praksa")) {
kvantili.predmeti.program[[var]] <- kvantRang(kvantili.predmeti.program[[var]])
}
for (var in c("N_anket")) {
kvantili.predmeti.program[[var]] <- kvantRang1(kvantili.predmeti.program[[var]])
}
for (var in c(paste0(vars.cours.po[c(5)],"_mean"))) {
kvantili.predmeti.program[[var]] <- kvantRang2(kvantili.predmeti.program[[var]])
}
kvantili.predmeti.programi.PO <- rbind(kvantili.predmeti.programi.PO, kvantili.predmeti.program)
}
# Ker se pri nekaterih članicah (AGRFT 19/19) zgodi, da imajo ocene za program le v anketi PO izpitu
# smo v spodnjo kodo dodali "colnames(povprecja.izvajalci) %in%"
vsota.ocen.programov.po <-
aggregate(povprecja.izvajalci[colnames(povprecja.izvajalci) %in% paste0("program_studenta_", programi.po$student.program.sifra)],
by = povprecja.izvajalci[, "izvajalec.sifra", drop = FALSE],
FUN = sum,
na.rm = TRUE)
#
povprecja.izvajalci.skupaj <- merge(povprecja.izvajalci.skupaj, vsota.ocen.programov.po, by = "izvajalec.sifra", all.x = TRUE, sort = FALSE)

View File

@ -1,324 +0,0 @@
# Created by Miha 3.9.2019
##########################
# AGREGAT OCEN KOMPONENT #
##########################
#------------------- DESCRIPTION --------------------#
# Ker imamo v primeru Trendov, veliko predmetov, kjer
# pri predmetu v določenem študijskem letu ni bilo
# dovolj odgovor (manj kot štiri), bomo naredili
# AGREGATE, to pomeni, da bomo za vsako zaporedje
# študijskih let, kjer je število odgovorov večje
# kot 4, naredili dodatni stolpec, ki bo agregat
# povprečja skupneg aštevila odgovor za zaporedni
# študijski leti, kjer je vsota odgovorov enaka ali
# večja 4.
# Agegati nastopajo povsod tam, kjer so TRENDI
#----------------- //DESCRIPTION// ------------------#
# Priprava podatkov za tabele (barvanje, računanje, okelpaji)
source("Evalvacija/R/funkcije/agregati_funkcije.R", encoding = "UTF-8")
#---------------------------------------------------------------------#
#------------------------ IMPORT DATA "BREZ CENZURE" -----------------------------#
#' @IMPORTANT!!! iz prejšnjih študijsih let imamo v bazi PRED tudi podatke za
#' # anketo PO, ki pa jih ignoriramo, saj smo naredili ločen izvoz za PO razen
#' za študijsko leto 14/15 ko smo delali še testno.
# Agregati za IZVAJALCA (podatki po letih) ------------------------
ag.izv <- list.files(path = paste0("Evalvacija/results/",fakulteta,"/Agregati"), pattern = "izv")
# Agregati za PREDMET (Anketa PRED, podatki po letih) -------------
ag.pred <- list.files(path = paste0("Evalvacija/results/",fakulteta,"/Agregati"), pattern = "pred")
# Agregati za PREDMET (Anketa PO, podatki po letih) -------------
ag.po <- list.files(path = paste0("Evalvacija/results/",fakulteta,"/Agregati"), pattern = "po")
# PREVERI!!!!!!!!!!!
#-------------------- SET WORKING DIREKTORY -----------------------#
# Check which PC we are working from: WORk OR HOME
fpath <- file.path(paste0("C:/MIHA DELO/FDV PROJEKT EVALVACIJE UL/EVLAVACIJE 2018_2019 UPDATED/Evalvacija/results/",fakulteta,"/Agregati"))
if (!dir.exists(fpath)){
output_dir <- paste0("E:/Work/Vasja Vehovar/EVLAVACIJE 2018_2019 UPDATED/Evalvacija/results/",fakulteta,"/Agregati")
setwd(output_dir)
} else {
setwd(fpath)
}
#------------------ //SET WORKING DIREKTORY// ---------------------#
# Agregat za Izvajalce #
#=====================#
agr.izv <-
lapply(ag.izv, function(x)
read.csv2(x, stringsAsFactors = FALSE, header = TRUE))
# Agregat za predmete (PRED) #
#============================#
agr.pred <-
lapply(ag.pred, function(x)
read.csv2(x, stringsAsFactors = FALSE, header = TRUE))
# Agregat za predmete (PO, KT, KOMEPTENCE IN PRAKSO) #
#====================================================#
agr.po <-
lapply(ag.po, function(x)
read.csv2(x, stringsAsFactors = FALSE, header = TRUE))
#---------------------- //IMPORT DATA "BREZ CENZURE"// ---------------------------#
#------------------ GET DATA FOR AGREGAT PURPOSES -------------------#
# Means, number os answers and ID of all lecturers or courses
# which will be implemented as AGREGATI
# PRED ------------
agreg.pred <- lapply(agr.pred, function(x) agregat(x, namen = "PRED"))
# PO (inlcuding kompetence, praksa, KT) -----
agreg.po <- lapply(agr.po, function(x) agregat(x, namen = "PO"))
# IPP --------------
agreg.ipp <- lapply(agr.izv, function(x) agregat(x, namen = "IPP"))
agreg.ipp <- lapply(agreg.ipp, function(x) {
x$NAZIV.PEDAGOGA <- odstNaziv(x$NAZIV.PEDAGOGA)
return(x)
})
agreg.ipp <- lapply(agreg.ipp, function(x) {
x$IPP <- paste0(x$NAZIV.PEDAGOGA, " (",x$ime.predmeta ,")")
return(x)
})
# IZV -------------
agreg.izv <- lapply(agr.izv, function(x) agregat(x, namen = "IZV"))
#---------------- //GET DATA FOR AGREGAT PURPOSES// -----------------#
#------------------ EXPORT DATA FOR ARHIV -----------------#
# Export into excel according to year
# For Arhiv pruposes and for Latex tables purposes
#' @Update: Now (9.9.2019) we will use this data for
#' trends
library(xlsx)
files <- list(agreg.ipp, agreg.izv, agreg.pred, agreg.po)
name <- c("IPP_agregat", "IZV_agregat", "PRED_agregat", "PO_agregat")
for (i in 1:unique(sapply(files, length))) {
for (ii in 1: length(files)) {
write.xlsx(
x = files[[ii]][[i]],
file = paste0("Agregati data/",name[ii], ".xlsx"),
sheetName = gsub("\\/", "_", unique(files[[ii]][[i]]$leto)),
append = TRUE
)
}
}
#---------------- //EXPORT DATA FOR ARHIV// ---------------#
# Ker v študijskem letu nimamo več ene skupne baze
# tudi ni več "N_anket_po_izpitu" ampak "N_anket"
# Da se izognemo dodatnemu delu bomo zato v zadnji
# bazi preimenovali N_anket v N_anket_po_izpitu
# saj bomo podatke v naslednjem koraku združevali
# po letih
# Velja samo za ANKETO PO
imen.c <- function(x) {
ifelse(
!"N_anket_po_izpitu" %in% colnames(x),
colnames(x)[colnames(x) == "N_anket"] <-
"N_anket_po_izpitu",
colnames(x)
)
return(x)
}
agreg.po <- lapply(agreg.po, imen.c)
#------------------- PRAPARE DATA FOR AGREGATION -------------------#
out.pred <- NULL
out.po <- NULL
out.ipp <- NULL
out.izv <- NULL
out.praksa <- NULL
# Načeloma imamo za vse namene (PRED, PO, IPP) podatke
# za enako število let, zato v loopu vzamemo kar
# seq_along(agreg.pred)
for (i in seq_along(agreg.pred)) { # Testno delamo za štiri leta, ker imamo trenutno 5 let le za FDV in FGG
# Prepare data for ANKETA PRED ---------------------------
df.pred <-
agreg.pred[[i]][grepl(
"zadovoljstvo_mean|usklajenost_mean|samostojnost_mean|literatura_mean|obvescenost_mean|informiranost_mean|znanje_mean|\\<N_anket\\>|ime.predmeta|leto|program.studentov|program.studentov.ime",
colnames(agreg.pred[[i]])
)]
# Write data
out.pred[[i]] <- df.pred
# Rbind in data frame with years
agregati.pred <- do.call("rbind", out.pred)
# Prepare data for ANKETA PO ---------------------------
df.po <-
agreg.po[[i]][grepl(
"vsebine_mean|naloge_mean|kriteriji_mean|kompetence_mean|krediti_mean|\\<N_anket_po_izpitu\\>|ime.predmeta|leto|program.studentov|program.studentov.ime",
colnames(agreg.po[[i]])
)]
# Write data
out.po[[i]] <- df.po
# Rbind in data frame with years
agregati.po <- do.call("rbind", out.po)
# Prepare data for ANKETA PRED IPP ---------------------------
df.ipp <-
agreg.ipp[[i]][grepl(
"kakovost_mean|pripravljenost_mean|razumljivost_mean|zanimivost_mean|kriticnost_mean|korektnost_mean|znanje_mean|\\<N_anket\\>|ime.predmeta|NAZIV.PEDAGOGA|izvajalec.sifra|leto|IPP",
colnames(agreg.ipp[[i]])
)]
# Write data
out.ipp[[i]] <- df.ipp
# Rbind in data frame with years
agregati.ipp <- do.call("rbind", out.ipp)
# Prepare data for ANKETA PRED IZVAJALEC ---------------------------
df.izv <-
agreg.izv[[i]][grepl(
"kakovost_mean|pripravljenost_mean|razumljivost_mean|zanimivost_mean|kriticnost_mean|korektnost_mean|znanje_mean|\\<N_anket\\>|ime.predmeta|predmet.sifra|NAZIV.PEDAGOGA|izvajalec.sifra|leto",
colnames(agreg.izv[[i]])
)]
# Write data
out.izv[[i]] <- df.izv
# Rbind in data frame with years
agregati.izv <- do.call("rbind", out.izv)
# UPDATE 18.10.2019 -----------------------------------
# Po novem zapišemo še študijsko prakso
df.praksa <-
agreg.po[[i]][grepl(
"ponudba_mean|pomoč_mean|navodila_mean|korist_mean|učinkovitost_mean|strokovnost_mean|podpora_mean|primernost_mean|dolzina_mean|\\<N_anket_po_izpitu\\>|ime.predmeta|leto|program.studentov|program.studentov.ime|PRAKSA",
colnames(agreg.po[[i]])
)]
# Write data
out.praksa[[i]] <- df.praksa
# Rbind in data frame with years
agregati.praksa <- do.call("rbind", out.praksa)
}
#----------------- //PRAPARE DATA FOR AGREGATION// -----------------#
# x <- agregati.pred %>%
# split(agregati.pred$ime.predmeta, agregati.pred$leto)
# x <- x[["BP Zgodovina mednarodnih odnosov"]]
# Split evaluations for courses/elcturer by predmet šifra
# x <- x[["BP Retorika javnih diskurzov"]]
# x <- x[["BP Televizijsko novinarstvo in novi mediji"]]
# x <- agregati.pred %>%
# split(agregati.pred$ime.predmeta, agregati.pred$leto)
# x <- x[["BD Drugi tuji strokovni jezik I: angleščina"]]
# Podatke v listu bomo za potrebe trendov
# najprej ločili glede na šifro predmeta in/ali šifro izvajalca
#' na ločenih podatkih naredili kombinacijo (glej funkcijo @kolone)
# in nato vse skupaj združili.
#' Funkcija @kolone poleg podatkovneg okvirja vrne tudi
# stolpec oz. column po imenu "stolpec", kjer
# vrednost "Stolpec 1" pomeni, da bomo v lateh naredili
# nov stolpec, kamor bomo zapisali vrednost povprečja ter
# "Stolpec 2" pomeni, da bomo naerdili ŠE en dodaten stolpec
# v latex tabeli.
# Če je verdnost NA, pomeni, da bomo predmet zapisali samo v en stolpec
# Anketa RPED
agregati.pred <- agregati.pred %>%
split(agregati.pred$ime.predmeta, agregati.pred$leto) %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
# Ko naredimo merg se leta podvojijo, kar pa
# za potrebe Agregatov ne želimo
agregati.pred$LETA <- agregati.pred$leto
# Anketa PO
agregati.kom <- agregati.po[grepl("predmet.ocena.kompetence_mean|N_anket_po_izpitu|ime.predmeta|leto", colnames(agregati.po))]
agregati.KT <- agregati.po[grepl("predmet.ocena.krediti_mean|N_anket_po_izpitu|ime.predmeta|leto", colnames(agregati.po))]
agregati.po <- agregati.po %>%
# V anketi Po se skupno povprečje računa brez kompetenc in kT
select(-c('predmet.ocena.kompetence_mean',"predmet.ocena.krediti_mean")) %>%
rename(N_anket = "N_anket_po_izpitu") %>%
split(agregati.po$ime.predmeta, agregati.po$leto) %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
agregati.po$LETA <- agregati.po$leto
# Agregati Kopmetence
agregati.kom <- agregati.kom %>%
rename(N_anket = "N_anket_po_izpitu") %>%
split(agregati.kom$ime.predmeta, agregati.kom$leto) %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
agregati.kom$LETA <- agregati.kom$leto
# Agregati Kreditne točke
agregati.KT1 <- agregati.KT %>%
rename(N_anket = "N_anket_po_izpitu") %>%
split(agregati.KT$ime.predmeta, agregati.KT$leto) %>%
lapply(., function(x) kolone(x, KTtrend = TRUE)) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
agregati.KT1$LETA <- agregati.KT1$leto
agregati.KT <- agregati.KT %>%
rename(N_anket = "N_anket_po_izpitu") %>%
split(agregati.KT$ime.predmeta, agregati.KT$leto) %>%
lapply(., function(x) kolone(x, KTtrend = TRUE)) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
# Anketa IPP
agregati.ipp <- agregati.ipp %>%
split(agregati.ipp$IPP, agregati.po$leto) %>%
.[sapply(., nrow) > 0] %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
agregati.ipp$LETA <- agregati.ipp$leto
# Anketa IZV
agregati.izv <- agregati.izv %>%
split(agregati.izv$izvajalec.sifra) %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
agregati.izv$LETA <- agregati.izv$leto
# ŠTUDIJSKA PRAKSA
agregati.praksa <- subset(agregati.praksa, PRAKSA == 1)
agregati.praksa <- agregati.praksa %>%
rename(N_anket = "N_anket_po_izpitu") %>%
split(agregati.praksa$ime.predmeta, agregati.praksa$leto) %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
agregati.praksa$LETA <- agregati.praksa$leto

View File

@ -1,340 +0,0 @@
#-------------------- SET WORKING DIREKTORY -----------------------#
# Check which PC we are working from: WORk OR HOME
fpath <- file.path("C:/MIHA DELO/FDV PROJEKT EVALVACIJE UL/EVLAVACIJE 2018_2019 UPDATED")
if (!dir.exists(fpath)){
output_dir <- "E:/Work/Vasja Vehovar/EVLAVACIJE 2018_2019 UPDATED"
setwd(output_dir)
} else {
setwd(fpath)
}
#------------------ //SET WORKING DIREKTORY// ---------------------#
#--------------------------------- TRENDI IN AGREGATI --------------------------------------#
# 26.8.2019 # Updated on 12.9.2019
# We will also insert: trendi za izvajalce (članica), predmete, IPP)
# Import data
# IMPORT DATA -----------------------------------------------------#
# Check all files that match desired pattern
files.F.tr <-
list.files(path = paste0("Evalvacija/results/",fakulteta,"/Agregati/Agregati data/"),
pattern = paste0("^Excel rezultati_", fakulteta, "(.)"))
# For importing excel files we will use new package
library(rio) # import
# Najprej preverimo koliko zavihkov imamo oziroma ali ima članica tudi podatke
# za študijsko prakso ali ne
nmb.sheet <- lapply(files.F.tr, function(x)
import(paste0("Evalvacija/results/",fakulteta,"/Agregati/Agregati data/", x)))
# Trendi za Izvajalce
trendi.F.izv <-
lapply(files.F.tr, function(x)
import(paste0("Evalvacija/results/",fakulteta,"/Agregati/Agregati data/", x), which = 1))
# Trendi za Izvajalce pri predmetih
trendi.F.ipp <-
lapply(files.F.tr, function(x)
import(paste0("Evalvacija/results/",fakulteta,"/Agregati/Agregati data/", x), which = 2))
# Trendi za predmete: ANKETA PRED
trendi.F.pred <-
lapply(files.F.tr, function(x)
import(paste0("Evalvacija/results/",fakulteta,"/Agregati/Agregati data/", x), which = 3))
# Trendi za predmete: ANKETA PO
trendi.F.po <-
lapply(files.F.tr, function(x)
import(paste0("Evalvacija/results/",fakulteta,"/Agregati/Agregati data/", x), which = 4))
# Trendi študijskih praks: ANKETA PO
if(length(nmb.sheet) > 4) {
trendi.F.praksa <-
lapply(files.F.tr, function(x)
import(paste0("Evalvacija/results/",fakulteta,"/Agregati/Agregati data/", x), which = 5))
}
# ADD COLUM NAMES FOR merging purposes
for (i in seq_along(trendi.F.ipp)){
colnames(trendi.F.izv[[i]])[1] <- "Izvajalec"
colnames(trendi.F.ipp[[i]])[1] <- "IPP"
colnames(trendi.F.pred[[i]])[1] <- "Predmeti"
colnames(trendi.F.po[[i]])[1] <- "Predmeti"
if(length(nmb.sheet) > 4) {
colnames(trendi.F.praksa[[i]])[1] <- "Predmeti"
}
}
trendi.F.KT <- trendi.F.po
trendi.F.com <- trendi.F.po
# Prepare each data frame for Latex tables
# V letih 2014/15 ko smo delali le za FDV in FGG pri
# šifri izvajalca še nismo imeli 3000021_FDV_, zato to
# DODAMO le v primeru FDV in FGG
if (fakulteta == "FDV") {
# Izvajalci
trendi.F.izv[[1]]$`Izvajalec id` <-
paste0("3000021_FDV_", trendi.F.izv[[1]]$`Izvajalec id`)
# Ipp
trendi.F.ipp[[1]]$`Izvajalec id` <-
paste0("3000021_FDV_", trendi.F.ipp[[1]]$`Izvajalec id`)
} else if (fakulteta == "FGG") {
trendi.F.izv[[1]]$`Izvajalec id` <-
paste0("3000026_FGG_", trendi.F.izv[[1]]$`Izvajalec id`)
# Ipp
trendi.F.ipp[[1]]$`Izvajalec id` <-
paste0("3000026_FGG_", trendi.F.ipp[[1]]$`Izvajalec id`)
}
#############
# IZVAJALCI #
#############
# Združimo ocene iz različnih let
trendi.F.izv <-
suppressWarnings(Reduce(function(x, y)
merge(x, y, by = "Izvajalec id", all = T), trendi.F.izv))
# Označimo izvajalce, ki v določenem letu niso poučevali ("--"),
# v primeru nizkega števila odgovorov dodamo oklepaje in k oceni
# ter obarvamo vrednosti v skladu z metodološkim pojasnilom
trendi.F.izv <- poucNIpouc(trendi.F.izv)
# zberemo podatke, ki jih bomo prikazali v latex tabeli
trendi.F.izv <-
trendi.F.izv[grepl("Izvajalec id|Izvajalec\\.|Izvajalec|SKUPAJ", colnames(trendi.F.izv))]
# Prvi stolpec, ki predstavlja imena izvajalcev ustrezno uredimo za
# potrebe latex tabele: NA v posamezni celici nadomestimo z imenom, ki
# pripada ID izvajalca
# Dobimo zadnje ime (naslov izvajalca)
# Za ime izvajalca vzamemo zadnji stolpec, ker so to imena izvajalcev
# za zadnje leto (po letih so se lahko nazivi izvajalcev spreminjali)
izvajalecIme <-
trendi.F.izv[grepl("Izvajalec\\.|Izvajalec$", colnames(trendi.F.izv))]
# Zberemo zadnja imena izvajalcev
izvajalecIme <- izvajalecIme %>%
select(length(izvajalecIme), everything())
# Odstranimo manjkajoča imena
trendi.F.izv$izvajalci <-
apply(izvajalecIme, 1, function(x)
na.omit(x)[1])
# Za potrebe latex tabele
trendi.F.izv <-
trendi.F.izv[grepl("Izvajalec id|\\<izvajalci\\>|SKUPAJ",
colnames(trendi.F.izv))]
# Uredimo vrstni red, ad bodo imena v prvi vrstici v Latex tabeli
trendi.F.izv <- trendi.F.izv %>%
dplyr::select(izvajalci, everything())
# Update 17.9.2019
# Po novem vsem izvajalcem odstranimo nazive
trendi.F.izv$izvajalci <- odstNaziv(trendi.F.izv$izvajalci)
# Trende povežemo z agregati
ag.trendov.ivz <-
merge(
trendi.F.izv,
agregati.izv,
by.x = "Izvajalec id",
by.y = "izvajalec.sifra",
all.x = TRUE
)
# UPDATE 11.10.2019!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# Tale del potrebujemo ko delamo trende za INDIIVIDUALNE IZPISE
# Ko delamo izpise za FAkulteto Izvajalec id ne potrebujemo
# Tole ap potrebujemo zato, ker bomo rabili id izvajalca
# za potrebe generiranja loopa (poročila za posameznega
# izvajalca)
# Izvajalec indiividualno
ag.tred.ivz.ind <-
ag.trendov.ivz[grepl("Izvajalec id|izvajalci|SKUPAJ|leto", colnames(ag.trendov.ivz))]
# # Fakulteta
# ag.trendov.ivz <-
# ag.trendov.ivz[grepl("izvajalci|SKUPAJ|leto", colnames(ag.trendov.ivz))]
# Če obstajajo agregati želimo v Latex tabeli trendov
# to primerno označiti
ag.trendov.ivz <- ag.trendov.ivz[!is.na(ag.trendov.ivz$izvajalci), ]
###########################
# IZVAJALCI PRI PREDMETIH #
###########################
# Prepare each data frame for Latex tables
# FDV ima za isto šifro predmeta različne izvedbe in imena. Tako je enkrat
# Tak predmeet izredna izvedba spet drugič (drugo leto) je to redna izvedba
# Tako je težko povezati izvajalce pri predmetu.
# Krr podtke mrgamo po imenih IPP, bomo prepone nazive po posaemznih letih
# izvajalcev odstranili.
trendi.F.ipp <- lapply(trendi.F.ipp, function(x) {
x$IPP <- odstNaziv(x$IPP)
return(x)
})
trendi.F.ipp <-
suppressWarnings(Reduce(function(x, y)
merge(x, y, by = 1, all = T), trendi.F.ipp))
# Označimo izvajalce, ki v določenem letu niso poučevali
trendi.F.ipp <- poucNIpouc(trendi.F.ipp, namen = "Izvajalec id")
# Za potrebe trendov individualno
ipp.indivud <- trendi.F.ipp
trendi.F.ipp <-
trendi.F.ipp[grepl("št. vpisanih|št. odgovorov|IPP|SKUPAJ", colnames(trendi.F.ipp))]
#For latex tables we only want to have Total average for each year
ag.trendov.ipp <-
merge(trendi.F.ipp, agregati.ipp, by.x = "IPP", all.x = TRUE)
ag.trendov.ipp <-
ag.trendov.ipp[grepl("št. vpisanih|št. odgovorov|IPP|SKUPAJ|leto|stolpec", colnames(ag.trendov.ipp))]
# Create latex Table
#######################
# ANKETA PRED IZPITOM #
#######################
# Prepare each data frame for Latex tables
trendi.F.pred <-
suppressWarnings(Reduce(function(x, y)
merge(x, y, by = 1, all = T), trendi.F.pred))
trendi.F.pred <- poucNIpouc(trendi.F.pred, namen = "Predmet id")
## Predmeti individualno (trendi komponent na nivoju posameznega predmeta)
pred.indivud <- trendi.F.pred
# For latex tables we only want to have Total average for each year
trendi.F.pred <-
trendi.F.pred[, grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ", colnames(trendi.F.pred))]
# Združimo trende z agregati
ag.trendov.pred <-
merge(
trendi.F.pred,
agregati.pred,
by.x = "Predmeti",
by.y = "ime.predmeta",
all.x = TRUE
)
ag.trendov.pred <-
ag.trendov.pred[grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ|leto|stolpec", colnames(ag.trendov.pred))]
# Če obstajajo agregati želimo v Latex tabeli trendov
# to primerno označiti
####################
# ANKETA PO IZPITU #
####################
# Prepare each data frame for Latex tables
trendi.F.po <-
suppressWarnings(Reduce(function(x, y)
merge(x, y, by = 1, all = T), trendi.F.po))
trendi.F.po <- poucNIpouc(trendi.F.po, namen = "Predmet id")
# Za potrebe trendov individualno
po.indivud <- trendi.F.po
# For latex tables we only want to have Total average for each year
trendi.F.po <-
trendi.F.po[, grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ", colnames(trendi.F.po))]
#For latex tables we only want to have Total average for each year
ag.trendov.po <-
merge(
trendi.F.po,
agregati.po,
by.x = "Predmeti",
by.y = "ime.predmeta",
all.x = TRUE
)
ag.trendov.po <-
ag.trendov.po[grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ|leto|stolpec", colnames(ag.trendov.po))]
# Če obstajajo agregati želimo v Latex tabeli trendov
# to primerno označiti
##############
# KOMPETENCE #
##############
trendi.F.com <-
suppressWarnings(Reduce(function(x, y)
merge(x, y, by = 1, all = T), trendi.F.com))
# Za potrebe barvanja in urejanja povprečij, vrednosti v stolpcih "SKUPAJ" nadomestimo z
# vrednostmi iz stolpcev " Komeptence" saj delamo tabelo trendov kompetenc
trendi.F.com[grepl("SKUPAJ", colnames(trendi.F.com))] <-
trendi.F.com[grepl("Kompetence", colnames(trendi.F.com))]
trendi.F.com <- poucNIpouc(trendi.F.com, namen = "Predmet id")
# For latex tables we only want to have Total average for each year
trendi.F.com <-
trendi.F.com[, grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ", colnames(trendi.F.com))]
#For latex tables we only want to have Total average for each year
ag.trendov.kom <-
merge(
trendi.F.com,
agregati.kom,
by.x = "Predmeti",
by.y = "ime.predmeta",
all.x = TRUE
)
ag.trendov.kom <-
ag.trendov.kom[grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ|leto|stolpec", colnames(ag.trendov.kom))]
# Če obstajajo agregati želimo v Latex tabeli trendov
# to primerno označiti
###########
# KREDITI #
###########
trendi.F.KT <-
suppressWarnings(Reduce(function(x, y)
merge(x, y, by = 1, all = T), trendi.F.KT))
trendi.F.KT[grepl("SKUPAJ", colnames(trendi.F.KT))] <-
trendi.F.KT[grepl("Ustreznost", colnames(trendi.F.KT))]
trendi.F.KT <-
poucNIpouc(trendi.F.KT, namen = "Predmet id", krediti = TRUE)
# For latex tables we only want to have Total average for each year
trendi.F.KT <-
trendi.F.KT[, grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ", colnames(trendi.F.KT))]
#For latex tables we only want to have Total average for each year
ag.trendov.KT <-
merge(
trendi.F.KT,
agregati.KT,
by.x = "Predmeti",
by.y = "ime.predmeta",
all.x = TRUE
)
ag.trendov.KT <-
ag.trendov.KT[grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ|leto|stolpec", colnames(ag.trendov.KT))]
# Če obstajajo agregati želimo v Latex tabeli trendov
# to primerno označiti
# Update 18.10.2019
#==================#
# Študijska praksa #
#==================#
# Prepare each data frame for Latex tables
if(length(nmb.sheet) > 4) {
trendi.F.prakse <-
suppressWarnings(Reduce(function(x, y)
merge(x, y, by = 1, all = T), trendi.F.praksa))
trendi.F.prakse <- poucNIpouc(trendi.F.prakse, namen = "Predmet id")
praksa.indivud <- trendi.F.prakse
# For latex tables we only want to have Total average for each year
trendi.F.prakse <-
trendi.F.prakse[, grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ", colnames(trendi.F.prakse))]
#For latex tables we only want to have Total average for each year
ag.trendov.prakse <-
merge(
trendi.F.prakse,
agregati.praksa,
by.x = "Predmeti",
by.y = "ime.predmeta",
all.x = TRUE
)
ag.trendov.prakse <-
ag.trendov.prakse[grepl("št. vpisanih|št. odgovorov|Predmeti|SKUPAJ|leto|stolpec|PRAKSA", colnames(ag.trendov.prakse))]
# Če obstajajo agregati želimo v Latex tabeli trendov
# to primerno označiti
} else {
ag.trendov.prakse <- NULL
}
#--------------------------------------- TRENDI IN AGREGATI ---------------------------------------#

View File

@ -1,109 +0,0 @@
# CREATED BY MIHA: 28. 6. 2018
# In order to run this script the R scripts "kodaOsnovniIzracuni"
# and "KodaPDF_studijska_praksa" need to be run before.
# Na katerem nivoju želimo, narediti študijsko prakso
praksa.fakulteta <- FALSE # nivo članice: skupna povprečja prak glede na leto
praksa.predmet <- TRUE # nivo predmeta: trendi komponent za posamezen predmet
praksa.UL <- FALSE # nivo UL
#######################################################################################
###### TRENDI: PODATKI ŠTUDIJSKE PRAKSE NA NIVOJU ČLANICE IN NA NIVOJU UNIVERZE #######
#######################################################################################
# We need to prepare data for creating pdf reports TRENDI. In order to do so, every year
# we need to save the averageas of components for PRAKSA.
# SO basically we will calculate means of all courses (PRAKSA) and calculte mean of means
# that will represent FACULTY MEAN FOR PRAKSA
# So first we:
# Create and calculate total average of all "ŠTUDIJSKE PRAKSE" to get average for Faculty
izbor.predmeti.praksa <- izbor.predmeti[izbor.predmeti$PRAKSA==1 ,c("ST_STUD","N_anket",
"sodelujocih.pct",
"zavrnjenih.pct",
"neodzivnih.pct",
paste0(vars.predmet$cont$praksa,"_mean"),
"predmet.ocena.SKUPAJ.praksa",
"predmet.sifra")]
if (praksa.fakulteta == TRUE) {
# If data/averages exist we will write to csv otherwise we will write there is no data
# SOME FACULTIES DO NOT HAVE "PRAKSA"
if(nrow(izbor.predmeti.praksa) > 0) {
izbor.predmeti.praksa$predmet.sifra <- NULL
# We calculate MEANS OF COMPONENTS ACCORDING TO FACULTY
izbor.predmeti.praksa <- round(colMeans(izbor.predmeti.praksa, na.rm=TRUE), 1)
izbor.predmeti.praksa <- as.data.frame(izbor.predmeti.praksa)
# Names each column: We have multiple data because some data might be used in the future
rownames(izbor.predmeti.praksa) <- c("št. vpisanih", "št. odgovorov", "\\% odgovorov",
"\\% zavrnitev", "\\% nesodelujočih",
as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa]),
"Skupaj")
# Year to which averages belong
# We will extract year from variable "semester.leto" (see R file navodila_dodatno_UTF-8)
# First split out the "words". Then the ones with a slash are dates
year <- strsplit(semester.leto, " ")[[1]]
year <- grep("/", year, value = TRUE) # dates
colnames(izbor.predmeti.praksa) <- year
# Save the data for this year:Multiple csv files according to year
write.csv2(izbor.predmeti.praksa, paste0("Evalvacija/results/praksa/", fakulteta,
".povprecja.praks.", gsub("/", "_", year, fixed=TRUE),".csv"))
# We also write TOTAL averages for faculty because we will also generate PDF reports according Univerity
# This report will include faculty average according to components of "STUDIJSKA PRAKSA".
facultymean.UL <- izbor.predmeti.praksa[nrow(izbor.predmeti.praksa),, drop = FALSE]
write.csv2(facultymean.UL, paste0("Evalvacija/results/praksa/", fakulteta,
".povprecja.praks.UL.", gsub("/", "_", year, fixed=TRUE),".csv"))
##############
# IMPORTANT!!!
#############
# We save data for the first year but for all next years we want to appeend
# data info file and not creating new csv for every year So for the next year
# we will use data from previous years and combine them into one file
trendipraks <- read.csv2("Evalvacija/results/praksa/povprecja.praks.csv",
stringsAsFactors = FALSE) # In case of FDV we already have data for two years saved
rownames(izbor.predmeti.praksa) <- NULL
# Combine data from previous years from the data with this year
trendipraks <- cbind(trendipraks, izbor.predmeti.praksa)
trendipraks <- cbind(trendipraks, round(rowMeans(trendipraks[2:ncol(trendipraks)], na.rm = TRUE), 1))
write.table(trendipraks, "Evalvacija/results/praksa/povprecja.praks2016_2018.csv",
sep = ";", col.names = T, dec = ",", row.names = F)
} else {
izbor.predmeti.praksa <- "Ni ocen."
write.csv2(izbor.predmeti.praksa, "Evalvacija/results/praksa/povprecja.praks.csv")
}
}
##########################################################################################################
########################################################
# TRENDI ŠTUDIJSKIH PRAKS NA NIVOJU POSAMEZNEGA PREDMETA
########################################################
if (praksa.predmet == TRUE){
# Dodamo leto
izbor.predmeti.praksa <- cbind(izbor.predmeti.praksa, year)
if(nrow(izbor.predmeti.praksa) > 0) {
write.csv2(izbor.predmeti.praksa,
paste0("Evalvacija/results/",fakulteta,"/praksa/povprecja.praks.predmet_",
gsub("/", "_", year, fixed=TRUE),".csv"))
}
else {
izbor.predmeti.praksa <- "Ni ocen."
write.csv2(izbor.predmeti.praksa, paste0("Evalvacija/results/",fakulteta,"/praksa/povprecja.praks.predmet_",
gsub("/", "_", year, fixed=TRUE),".csv"))
}
}
#########################################################
###### TRENDI: ŠTUDIJSKA PRAKSA NA NIVOJU UNIVERZE ######
#########################################################

View File

@ -1,912 +0,0 @@
#' Custom function for preparing all data for \Latex tables
###########
# minEnot!!!!!!!!!!!!!
###########
#----------------------- IMPORTANT ------------------------#
# Prikaz na prvi strani PDF poročila pod naslovom in v nogi
semester.leto <- "Študijsko leto 2018/19"
# najmanjše število odgovorov, kjer se pokaže rezultat,
# ko ne gre za anlize po skupinah
# Za AG smo na njihovo željo spremenili n = 3
if (ID != 3000043) {
minEnot <- 4
} else {
minEnot <- 3
}
# strings to be used for semester specific calculations in metodology
# (this values present specific semester in sifrant$SEMESTER_IZV)
prvi_semester <- c("zimski", "prvi semester", 1)
drugi_semester <- c("letni", "drugi semester", "celoletni", 2, 3)
#--------------------- //IMPORTANT// ----------------------#
#--------------------------- COLOR AND ROUND MEANS ------------------------------#
# TANKS TO ZMIŠLJEVANJU NAROČNIKA KONSTANTO NEKAJ DODAJAMO IN RATUJE SOLATA!
# Function which will tidy frequency and descrptive statistics
# for the variables course and the lecturer for the LATEX TABLE purposes
# With this function we will also color values according to
# chapter "Metodološko pojasnilo" which is in every PDF report
# we make.
#' @param x data frame we wich to tidy for \LATEX table purposes
#' @param KT Ustreznost kreditnih točk. If is TRUE then we will
#' color values differently compared to other variables
#' @param KTtrend If TRUE we are coloring Krediti for Trend purposes
#' see PDF report for faulty chapter "Trendi komponent predmetov in izvajalca"
#' @Agregati: Updated od 12.9.2019. If we are doing Agregats, some character
#' we dont want to replace with NA when claculating means
#' @return A data.frame.
#' @author MM (mat.miha@@gmail.com)
# Prikaz decimalnih mest v latex tabeli show trailing zeros 4.0 namesto 4
trail.0 <- function(x){
x <- formatC(round(x, 1), format = 'f', digits = 1)
return(x)
}
formatval <- function(x, KT = FALSE, KTtrend = FALSE, Agregati = FALSE) {
# because we use two different strategies for frequencies (paranthesis)
# and for descriptive statistics (coloring) we will first seperate this two
# FREQUENCY CHECK #
#=================#
# Extract columns with frequencies
# "\<" is an escape sequence for the beginning of a word, and ">" is used for end
df <-
x[grepl("\\<N\\>|\\<n\\>|\\<ST_STUD\\>|N_anket|\\<N_anketSkupaj\\>",
colnames(x))]
# Then check if there are more tha one column
# which means we also need to add parenthesis
# to percentages Which are threated differently
# We have only one column which means frequency
if (!is.null(df) & ncol(df) > 0) {
nm <- rownames(df)
# Mutate to numeric
# Because there could be NA in the data
# the function formatval could return
# warning of 1: In (function (x) : NAs introduced by coercion
# Tehrefore we want to surpress that warning
df <-
suppressWarnings(mutate_all(df, function(x)
round(as.numeric(as.character(
x
)), 0)))
df <-
data.frame(lapply(df, function(x)
ifelse(x > 4 & x < 10, paste0("(", x, ")"),
ifelse(x < 5, paste0("((", x, "))"), x))), stringsAsFactors = FALSE)
df[is.na(df)] <- "."
# Add rownames
rownames(df) <- nm
} else {
df <- NULL
}
# PERCENTAHES CHECK #
#===================#
# Extract columns with mean values
# In case of percentages the parenthiesis
# are noly added to columns named
# Odgovoril == sodelujocih.pct and
# Zarrnil == zavrnjenih.pct
df.pct <- x[grepl(
"pct",
colnames(x)
)]
# Check if data are available
if (!is.null(df.pct) & ncol(df.pct) > 0) {
nm <- rownames(df.pct)
# Mutate to numeric
df.pct <-
suppressWarnings(mutate_all(df.pct, function(x)
round(as.numeric(as.character(
x
)), 0)))
# Parenthesis to percentage sof answers
df.pct[grepl("sodelujocih", colnames(df.pct))] <-
data.frame(lapply(df.pct[grepl("sodelujocih", colnames(df.pct))], function(x)
ifelse(
x > 10 & x < 25, paste0("(", x, ")"),
ifelse(x < 10, paste0("((", x, "))"), x)
)), stringsAsFactors = FALSE)
# Also add parenthesis to percentage of rejected
df.pct[grepl("zavrnjenih", colnames(df.pct))] <-
data.frame(lapply(df.pct[grepl("zavrnjenih", colnames(df.pct))], function(x)
ifelse(
x > 50 & x < 75, paste0("(", x, ")"),
ifelse(x > 75, paste0("((", x, "))"), x)
)), stringsAsFactors = FALSE)
# Also add parenthesis to percentage of rejected
df.pct[grepl("neodzivnih", colnames(df.pct))] <-
data.frame(lapply(df.pct[grepl("neodzivnih", colnames(df.pct))], function(x)
ifelse(
x > 50 & x < 75, paste0("(", x, ")"),
ifelse(x > 75, paste0("((", x, "))"), x)
)), stringsAsFactors = FALSE)
# For latex table purposes replace NA with "."
df.pct[is.na(df.pct)] <- "."
# Add rownames
rownames(df.pct) <- nm
} else {
df.pct <- NULL
}
# DESCRIPTIVES CHECK #
#====================#
# Extract columns with mean values
df.m <- x[grepl(
"mean|Skupaj|SKUPAJ",
colnames(x)
)]
# Check if data are available
if (!is.null(df.m) & ncol(df.m) > 0) {
nm <- rownames(df.m)
if (Agregati == "FALSE") {
# Mutate to numeric
df.m <-
suppressWarnings(mutate_all(df.m, function(x)
round(as.numeric(as.character(
x
)), 1)))
} else {
# V kolikor Delamo Za Agregate, uporabimo Ta del, ker
# manjkajočiv vrednosti ne želimo nadomestiti z NA
# ko podatkovni okvir spremenimo v numeric
df.m <-
suppressWarnings(df.m %>% mutate_all(function(x)
ifelse(x == "a" |
x == "b" | x == "--", x, round(as.numeric(as.character(
x
)), 1))))
}
#-------------------------------------
# Check if we data consist of--------------------------------------
# Ustreznost KT which are in ANKETA PO
# and are colored differently
if (KT == TRUE) {
# Seperate column krediti
kt.l <- -ncol(df.m)
# First we color all other variables
df.m[kt.l] <-
data.frame(lapply(df.m[kt.l], function(x)
ifelse(
x < 3,
paste('{\\color{BrickRed}', trail.0(x), '}', sep = ''),
ifelse(
x > 2.9 & x < 4,
paste0('{\\color{Orange}',trail.0(x), '}'),
ifelse(
x >= 4.5 & x <= 4.7,
paste0('{\\color{Chateau Green}', trail.0(x), '}'),
ifelse(x >= 4.7,
paste0('{\\color{Blue Stone}', trail.0(x), '}'), trail.0(x))
)
)
)), stringsAsFactors = FALSE)
# Second we also color column KREDITI
df.m[as.numeric(gsub("-", "", kt.l))] <-
data.frame(lapply(df.m[as.numeric(gsub("-", "", kt.l))], function(x)
ifelse(
x > 2.3 & x < 2.7,
paste0('{\\color{Orange}', trail.0(x), '}'),
ifelse(
x > 3.3 & x < 3.7,
paste0('{\\color{Orange}', trail.0(x), '}'),
ifelse(
x < 2.4,
paste0('{\\color{BrickRed}', trail.0(x), '}'),
ifelse(x > 3.6, paste0('{\\color{BrickRed}', trail.0(x), '}'), trail.0(x))
)
)
)), stringsAsFactors = FALSE)
} else {
# We dont have data for ANKETA PO ------------------------------------------
df.m <-
data.frame(lapply(df.m, function(x)
ifelse(x != "--" &
x < 3,
paste('{\\color{BrickRed}', trail.0(x), '}', sep = ''),
ifelse(
x > 2.9 & x < 4,
paste0('{\\color{Orange}', trail.0(x), '}'),
ifelse(
x >= 4.5 & x <= 4.7,
paste0('{\\color{Chateau Green}', trail.0(x), '}'),
ifelse(x >= 4.7,
paste0('{\\color{Blue Stone}', trail.0(x), '}'), trail.0(x))
)
)
)), stringsAsFactors = FALSE)
}
# For latex tables purposes
df.m[is.na(df.m)] <- "."
# Add rownames
rownames(df.m) <- nm
} else {
df.m <- NULL
}
#----------------------------------------------------------------------------#
# Also check if we have data for standard deviation---
# Check if data are available
# Extract columns with mean values
df.sd <- x[grepl(
"\\<sd\\>",
colnames(x)
)]
if (!is.null(df.sd) & ncol(df.sd) > 0) {
nm <- rownames(df.sd)
# Mutate to numeric
df.sd <-
suppressWarnings(mutate_all(df.sd, function(x)
round(as.numeric(as.character(
x
)), 1)))
# For latex tables purposes
df.sd[is.na(df.sd)] <- "."
} else {
df.sd <- NULL
}
#-------------------------------------------------
# TRENDI ---------------------------------------
if (KTtrend == TRUE) {
# Check if we are doing reports for
# Trends for Krediti
# e.g., see report
df.tr <- x[grepl(
"SKUPAJ|Ustreznost|predmet.ocena.krediti_mean",
colnames(x)
)]
if (!is.null(df.tr) & ncol(df.tr) > 0) {
nm <- rownames(df.tr)
# Mutate to numeric
df.tr <-
suppressWarnings(mutate_all(df.tr, function(x)
round(as.numeric(as.character(
x
)), 1)))
# Color KREDITI
df.tr <-
data.frame(lapply(df.tr, function(x)
ifelse(
x > 2.3 & x < 2.7,
paste0('{\\color{Orange}', trail.0(x), '}'),
ifelse(
x > 3.3 & x < 3.7,
paste0('{\\color{Orange}', trail.0(x), '}'),
ifelse(
x < 2.4,
paste0('{\\color{BrickRed}', trail.0(x), '}'),
ifelse(x > 3.6, paste0('{\\color{BrickRed}', trail.0(x), '}'), trail.0(x))
)
)
)), stringsAsFactors = FALSE)
# For latex tables purposes
df.tr[is.na(df.tr)] <- "."
} else {
df.tr <- NULL
}
}
# Insert into final data------------------------
x[colnames(df)] <- df
x[colnames(df.m)] <- df.m
x[colnames(df.pct)] <- df.pct
x[colnames(df.sd)] <- df.sd
if (KTtrend == TRUE) {
x[colnames(df.tr)] <- df.tr
}
rownames(x) <- nm
#----------------------------------------------
return(x)
}
#------------------------- //COLOR AND ROUND MEANS// ----------------------------#
#------------------- JOIN PROGGRAMES AND CREATE LATEX TABLES --------------------#
# Function which will join programmes with not enough students
# to programme with the most students and also calcualte
# colmenas, rowmeans, sum of all answers and also create
# \Latex table and output data
# The output of this function is a list with LATEX table
# which coninst ov cours eor lecturer averages where we another
# row with total average of the course ro lecrurer
# and anotger row wirh faculty averages.
# and means fo te programmes for quantile rangs tables
#' @param data data frame we wich prepare for \LATEX table purposes
#' @param rownam "Rownames we wish to display in latex table". The argument
#' is meant as a rowname of Total averages for lecturer or for the course
#' @param facultym Faculty means for course or lecturer
#' @param Frownam "Rowname of the faculty "
#' @param tablename Caption ot \Latex table
#' @param namen Number fo columns in latex table. IF we are doing
#' \Latex table for anketa PO then number of column is different and
#' namen is "PO", othervise namen is "PRED"
#' @param letnik If is TRUE we are doing tables and averages for
#' @param colnam Columnames for \Latex table
#' students year and not for students programme
#' @author MM (mat.miha@@gmail.com)
# join programmes with not enough students to programme with the most students
pro.let.c <- function (data, rownam, facultym, Frownam, tablename, namen, letnik = FALSE, colnam) {
# If letnik = TRUE that means that we are interested in program evaluations
# by student year and not by student programme therefore we need to
# ajdust for that (different column name)
if(letnik == TRUE) {
colnames(data)[colnames(data) == "letnik.studentov"] <- "program.studentov.ime"
}
if (nrow(data) > 0) {
# Then we chack if we relly have 4 or more answers or some student
# also answered with -96 which means "nimam dovolj informacij"
if (namen == "IPP") {
if ( max(data[paste0(vars.izvajalec$cont$vars,"_N")]) < 4) {
# Hide mean avalues
data[paste0(vars.izvajalec$cont$vars,"_mean")] <- NA
}
} else if (namen == "PRED") {
if ( max(data[paste0(vars.predmet$cont$pred,"_N")]) < 4) {
# Hide mean avalues
data[paste0(vars.predmet$cont$pred,"_mean")] <- NA
}
} else {
if ( max(data[paste0(vars.predmet$cont$po,"_N")]) < 4) {
# Hide mean avalues
data[c(paste0(vars.predmet$cont$po,"_mean"), "predmet.ocena.krediti_N")] <- NA
}
}
}
if (nrow(data) > 0 && max(data$N_anket) >= minEnot) {
# Find number of answers that are les than 4 and need to be
# merged
cours.min <- data[which(data$N_anket < minEnot), ]
# Check if there are any programs that need to be joined
if(nrow(cours.min) > 0) {
# Also find program with the highest number of answers
# If there are multiple programs with the same number
# of answers choose the first one
course.max <- data[which(data$N_anket == max(data$N_anket))[1], ]
# Ime programa za latex tabelo
course.max.lab <- as.character(course.max$program.studentov.ime)
# Extract the components we are calculating the mean for
cours.min.m <- cours.min[grepl("N|mean", colnames(cours.min))]
cours.max.m <- course.max[grepl("N|mean", colnames(course.max))]
# Calculate new Average for the program which we merged with programe with less than 4 students answers
# Multiply mean with total number of answers in order to be able to calculate new mean
# First we do this for programmes with less than 4 answers
premalo.produkt <-
colSums(cours.min.m[, grepl("mean", colnames(cours.min.m))] * cours.min.m[, grepl("_N", colnames(cours.min.m))], na.rm = TRUE)
premalo.produkt[is.na(premalo.produkt)] <- 0
# Then we do this for programmes with maximum number of answers
najvecja.produkt <-
cours.max.m[, grepl("mean", colnames(cours.max.m))] * cours.max.m[, grepl("_N", colnames(cours.max.m))]
# Summ of all asnwers on the likert scale
vsota.enot <-
colSums(cours.min.m[, grepl("_N", colnames(cours.min.m))], na.rm = T) + cours.max.m[, grepl("_N", colnames(cours.max.m))]
# Before calculating new mean of programme with the highest number of answers we also ned new number
# of valud students answers
cours.max.m[, grepl("mean", colnames(cours.max.m))] <- (premalo.produkt + najvecja.produkt) / vsota.enot
# Replace new values of the course with maximum answers
course.max[colnames(cours.max.m)] <- cours.max.m
# For latex table puproses calculate new row mean
# NOTE!!: Anketa PRED and anketa PO have different number of
# component for which we calculate row means and anekta PO
# Also has some components reorderd therefore we need to account
# for that
if (namen != "PO") {
course.max <-
cbind(course.max, "Skupaj" = round(rowMeans(course.max[, grepl("mean", colnames(cours.min.m))], na.rm = TRUE), 1))
} else {
course.max <-
cbind(course.max, "Skupaj" = round(rowMeans(course.max[, grepl("vsebine_mean|naloge_mean|kriteriji_mean",
colnames(cours.min.m))], na.rm = TRUE), 1))
}
# Lets check if there are any other programs that have more than 4 ansewrs in order to calculate total mean
course.othr <- subset(
data,
!(program.studentov.ime %in% course.max$program.studentov.ime) &
!(program.studentov.ime %in% cours.min$program.studentov.ime)
)
# If we have also other programs with data we first need to calculate total mean
if(nrow(course.othr) > 0) {
course.othr.m <- course.othr[grepl("mean", colnames(course.othr))]
# Check if rowmeans are for anketa PRED or PO
if (namen != "PO") {
course.othr.m <-
cbind(course.othr.m, "Skupaj" = rowMeans(course.othr.m, na.rm = TRUE))
} else {
course.othr.m <-
cbind(course.othr.m, "Skupaj" = rowMeans(course.othr.m[c(2, 3, 4)], na.rm = TRUE))
}
# Add new colnames
course.othr[colnames(course.othr.m)] <- course.othr.m
# Programe names
rownames(course.othr) <- course.othr$program.studentov.ime
rownames(course.max) <- course.max$program.studentov.ime
# Rbind with total averages
course.tot <- rbind(course.max, course.othr)
course.tot <- course.tot[grepl("N_anket|mean|Skupaj", colnames(course.tot))]
# Because we will also calculate Qantile ranks we will store the programmes with more than 4
# answers in another variable
kvant.table <- course.tot
# Add Total column sums of number of answers and averages for the components
# Check if we are calculating column means for ANKETA PRED or PO due to
# the fact in ANEKTA PO has only three components for colmeans
course.tot <-
rbind(course.tot, c(
colSums(course.tot[1], na.rm = TRUE),
colMeans(course.tot[2:ncol(course.tot)], na.rm = TRUE)
))
# Add data of programes where there were not enough answers
cours.min[, grepl("mean", colnames(cours.min))] <- "."
course.tot <- course.tot %>% rownames_to_column('prog') %>%
mutate_if(is.numeric, round, 1) %>%
column_to_rownames('prog')
# Add rowname: Is is tabel for lecturer or for the course
rownames(course.tot)[nrow(course.tot)] <- rownam
# Add rowname of program with not enough student answers
rownames(cours.min) <- cours.min$program.studentov.ime
course.tot <-
qpcR:::rbind.na(course.tot, cours.min[grepl("N_anket|mean|Skupaj", colnames(cours.min))])
# Reorder
course.tot <-
course.tot[order(course.tot$N_anket, decreasing = TRUE),]
# Preoblikujemo vrstice
course.tot <- course.tot %>%
rownames_to_column('prog') %>%
arrange(N_anket) %>%
column_to_rownames('prog')
# Izračunamo Novo število Odgovorov
course.tot[rownam, "N_anket"] <-
sum(course.tot$N_anket[1:length(course.tot$N_anket) - 1], na.rm = TRUE)
# Preuredimo vrstice tako, da bo povprecje izvajalca ali predmeta na koncu
dol <- nrow(course.tot)-1
course.tot <-
rbind(course.tot[1:dol,][order(course.tot[1:dol, "N_anket"], decreasing = TRUE), ], course.tot[nrow(course.tot), ])
# If data are from ANEKTA PO we need to reorder columns due to
# formatval function when coloring KREDITI
if (namen == "PO") {
# Column Krediti goes to the end
colnames(course.tot)[ncol(course.tot)] <- "Skupaj"
course.tot <-
course.tot %>% dplyr::select(-predmet.ocena.kompetence_mean,
-predmet.ocena.krediti_mean,
everything())
# Color and add parenthesis if there are small number of answers. See custom function "formatval"
course.tot <- suppressWarnings(formatval(course.tot, KT = TRUE))
course.tot[is.na(course.tot)] <- "."
} else {
# Rename last column which is total average
colnames(course.tot)[ncol(course.tot)] <- "Skupaj"
course.tot <- suppressWarnings(formatval(course.tot))
course.tot[is.na(course.tot)] <- "."
}
# Dodamo še povprečje celotne fakultete
# Ker je prvi stolpec faktor in v kolikor
# želimo združiti vrstice, moramo factor pretvoriti
# v character, da lahko povprečja izvajalca/predmeta združimo
# s povprečjem celotne fakultete
i <- sapply(course.tot, is.factor)
course.tot[i] <- lapply(course.tot[i], as.character)
if (namen == "PO") {
course.tot <-
rbind(course.tot, c("--", unlist(formatval(data.frame(
t(facultym[c(2:4, length(facultym), 1, 5)])
), KT = TRUE))))
} else {
course.tot <-
rbind(course.tot, c("--", unlist(formatval(data.frame(
t(facultym)
)))))
}
# Še imena dodane vrstice
rownames(course.tot)[nrow(course.tot)] <- Frownam
course <- course.tot
} else {
rownames(course.max) <- course.max$program.studentov.ime
# Because we will also calculate Qantile ranks we will store the programmes with more than 4
# answers in another variable
kvant.table <- course.max
# Grepl data we want to tidy
course.max <- course.max[grepl("N_anket|mean|Skupaj", colnames(course.max))]
# Add data of programes where there were not enough answers
cours.min[, grepl("mean", colnames(cours.min))] <- "."
# Add rowname: Is is tabel for lecturer or for the course
# Add rowname of program with not enough student answers
rownames(cours.min) <- cours.min$program.studentov.ime
course.max <- qpcR:::rbind.na(course.max, cours.min[grepl("N_anket|mean|Skupaj", colnames(cours.min))])
# Dodamo še skupno povprečje izvajalca, ki je
course.max <- rbind(course.max, course.max[1,])
rownames(course.max)[nrow(course.max)] <- rownam
# Izračunamo Novo število Odgovorov
course.max[rownam, "N_anket"] <-
sum(course.max$N_anket[1:length(course.max$N_anket) - 1], na.rm = TRUE)
# Color and add parenthesis if there are small number of answers. See custom function "formatval"
if (namen == "PO") {
# Column Krediti goes to the end
colnames(course.max)[ncol(course.max)] <- "Skupaj"
course.max <-
course.max %>% dplyr::select(-predmet.ocena.kompetence_mean,
-predmet.ocena.krediti_mean,
everything())
# Color and add parenthesis if there are small number of answers. See custom function "formatval"
course.max <- suppressWarnings(formatval(course.max, KT = TRUE))
course.max[is.na(course.max)] <- "."
} else {
colnames(course.max)[ncol(course.max)] <- "Skupaj"
course.max <- suppressWarnings(formatval(course.max))
course.max[is.na(course.max)] <- "."
}
# Dodamo še povprečje celotne fakultete
# Ker je prvi stolpec faktor in v kolikor
# želimo združiti vrstice, moramo factor pretvoriti
# v character, da lahko povprečja izvajalca/predmeta združimo
# s povprečjem celotne fakultete
i <- sapply(course.max, is.factor)
course.max[i] <- lapply(course.max[i], as.character)
if (namen == "PO") {
course.max <-
rbind(course.max, c("--", unlist(
formatval(data.frame(t(facultym[c(2:4, length(facultym), 1, 5)])), KT = TRUE
))))
} else {
course.max <-
rbind(course.max, c("--", unlist(
formatval(data.frame(t(facultym)))
)))
}
# Še imena dodane vrstice, kjer gre za povprečje Fakultete
rownames(course.max)[nrow(course.max)] <- Frownam
course <- course.max
}
# olepšanje slovnice v opombi poda tabelo #
# Slovnica se prilagaja, glede na število programov, ki smo
# jih pridružili
if (minEnot == 2) {
studentText <- "študentoma"
} else {
studentText <- "študenti"
}
if (nrow(cours.min) == 1) {
skupinaText <- "je zaradi varovanja zasebnosti pridružena skupina"
} else if (nrow(cours.min) == 2) {
skupinaText <- "sta zaradi varovanja zasebnosti pridruženi skupini"
} else {
skupinaText <- "so zaradi varovanja zasebnosti pridružene skupine"
}
# /olepšanje slovnice/ #
opomba <-
c(
paste0(
"* Skupini študentov \\guillemotright ",
course.max.lab,
"\\guillemotleft \\ ",
skupinaText,
" z manj kot ",
minEnot,
" ",
studentText,
": \\guillemotright ",
paste(cours.min$program.studentov.ime, collapse = ",\\guillemotleft \\ \\guillemotright "),
"\\guillemotleft."
),
if (letnik != TRUE) {
"\\newline** Analize za vse študijske programe, v katerih sodeluje
izvajalec, so v poglavju \\textbf{Sumarne ocene študijskih programov}."
},
"\\newline -- Podatek je manj pomemben ali težko izračunljiv.",
if (namen == "PO" & letnik == FALSE) {
"\\newline*** Vrednost pod 3.0 pomeni, da je predmet
glede na \\guillemotright število kreditnih točk\\guillemotleft \\ zahteval
podpovprečno število ur, vrednost nad 3.0 pa pomeni nadpovprečno število ur.
{\\color{Orange}Oranžno} so označena opazna odstopanja
({\\color{Orange}2.4-2.6}) in ({\\color{Orange}3.4-3.6}),
{\\color{BrickRed}rdeče} pa izrazita odstopanja
(pod {\\color{BrickRed}2.4} in nad {\\color{BrickRed}3.6})."
} else if (namen == "PO" & letnik == TRUE) {
"\\newline** Vrednost pod 3.0 pomeni, da je predmet
glede na \\guillemotright število kreditnih točk\\guillemotleft \\ zahteval
podpovprečno število ur, vrednost nad 3.0 pa pomeni nadpovprečno število ur.
{\\color{Orange}Oranžno} so označena opazna odstopanja
({\\color{Orange}2.4-2.6}) in ({\\color{Orange}3.4-3.6}),
{\\color{BrickRed}rdeče} pa izrazita odstopanja
(pod {\\color{BrickRed}2.4} in nad {\\color{BrickRed}3.6})."
},
if (any(course ==".")) {
"\\newline . Podatek ni prikazan zaradi majhnega števila enot."
}
)
# K imenu programa, ki smo mu dodali programe z premalo ocenami dodamo *, ki bo v opombi pod latex tabelo
rownames(course)[rownames(course) == course.max.lab] <- paste0(course.max.lab, "*")
# Dodamo še imena stolpcev
colnames(course) <- colnam
# In Case there is no programm with less than 4 answers we calculate row and column means
} else {
# Because we will also calculate Qantile ranks we will store the programmes with more than 4
# answers in another variable
kvant.table <- data[grepl("N_anket|mean|program.studentov.ime", colnames(data))]
rownames(kvant.table) <- kvant.table$program.studentov.ime
kvant.table$program.studentov.ime <- NULL
# Extract the components we are calculating the mean for
prog.m <- data[grepl("mean", colnames(data))]
# Calculate means for Latex table
# Check if we have numeric data
prog.m <- rbind(prog.m, colMeans(prog.m, na.rm = TRUE))
# ANKETA PRED OR ANKETA PO
if (namen != "PO") {
prog.m <- cbind(prog.m, "Skupaj" = rowMeans(prog.m, na.rm = TRUE))
} else {
prog.m <- cbind(prog.m, "Skupaj" = rowMeans(prog.m[c(2, 3, 4)], na.rm = TRUE))
# Reorder columns for latex table purposes
prog.m <- prog.m %>% dplyr::select(-predmet.ocena.kompetence_mean,
-predmet.ocena.krediti_mean,
everything())
}
# In some cases there are duplicated names of programmes because
# there are new programes and old ones with the same name: eg. Družboslovna informatika
rownames(prog.m) <- make.unique(c(paste0(data$program.studentov.ime), "Skupaj"))
# Nov We allso need data for Number of answers
prog.m <- cbind("N_anket" = c(data$N_anket, sum(data$N_anket, na.rm = TRUE)), prog.m)
# Color and parenthesis
if (namen != "PO") {
prog.m <- formatval(prog.m)
} else {
# Color data
prog.m <- formatval(prog.m, KT = TRUE)
}
# Add new rownames
rownames(prog.m)[nrow(prog.m)] <- rownam
# And also add faculty averages grouped components in ANKETA PO OR ANKETA PRED
if (namen == "PO") {
prog.m <-
rbind(prog.m, c("--", unlist(formatval(data.frame(
t(facultym[c(2:4, length(facultym), 1, 5)])
), KT = TRUE))))
} else {
prog.m <-
rbind(prog.m, c("--", unlist(formatval(data.frame(
t(facultym)
)))))
}
# Še imena dodane vrstice, kjer gre za povprečje Fakultete
rownames(prog.m)[nrow(prog.m)] <- Frownam
# Add Footnote which will be added at the bottom of LAtex table
opomba <-
c("\\newline** Analize za vse študijske programe, v katerih sodeluje
izvajalec, so v poglavju \\textbf{Sumarne ocene študijskih programov}.",
"\\newline -- Podatek je manj pomemben ali težko izračunljiv."
)
# Finnaly sort
course <- prog.m
# Dodamo še imena stolpcev
colnames(course) <- colnam
}
# Preverimo ali delamo latex tabelo za predmet PO izpitu ali za izvajalca
if (namen == "PO") {
col.just <- c("c|", "c", "c", "c", "|c|", "c", "c")
} else if (namen == "PRED") {
col.just <- c("c|", "c", "c", "c", "c", "c", "c", "c", "|c")
} else {
col.just <- c("c|", "c", "c", "c", "c", "c", "c", "|c")
}
# Create Latex table
tex <-
capture.output(
Hmisc::latex(
course,
caption = tablename,
rowlabel = "",
file = "",
where = "H",
multicol = FALSE,
rowlabel.just = "p{10.2cm}",
col.just = col.just,
insert.bottom = paste("{\\footnotesize \\textit{", opomba, "}}")
)
)
}
else {
# minipage zato da ostane tekst skupaj na 1 strani
# in tudi da ne pride do prazne strani zaradi \\newline
tex <-
c(
"\\begin{minipage}{\\textwidth}",
tablename,
"\\newline",
paste("-- Ni skupine z vsaj", minEnot, "študenti -"),
"\\newline",
"\\newline",
"\\end{minipage}"
)
kvant.table <- NULL
}
return(list(tabela = kvant.table, tex = tex))
}
#----------------- //JOIN PROGGRAMES AND CREATE LATEX TABLES// ------------------#
#-------------------- COLORING VECTOR KREDITNE TOCKE ---------------------#
# Coloring averages (vecotrs) for table
# "Število porabljenih ur (anketa PO izpitu)
# USTREZNOST KT mean for course and for the fauclty
kt.vect.col <- function(x) {
x <- round(x, 1)
x <- ifelse(
x > 2.3 & x < 2.7,
paste0(
'{\\color{Orange}',
trail.0(x),
'}'
),
ifelse(
x > 3.3 & x < 3.7,
paste0(
'{\\color{Orange}',
trail.0(x),
'}'
),
ifelse(
x < 2.4,
paste0(
'{\\color{BrickRed}',
trail.0(x),
'}'
),
ifelse(
x > 3.6,
paste0(
'{\\color{BrickRed}',
trail.0(x),
'}'
),
trail.0(x)
)
)
)
)
x[is.na(x)] <- "."
return(x)
}
require('Hmisc')
#------------------ //COLORING VECTOR KREDITNE TOCKE// -------------------#
########################################################
#### OD TU NAPREJ MORAM ŠE KOZMETIČNO UREDIT ###########
#17.9.2019
########################################################
# kjer so tekstovne spremenljivke je na
# koncu večkratkrat kup nepotrebnih presledkov
trim <- function(x) {
gsub(pattern='^\\s+|\\s+$', replacement='', x=x)
}
#------------------------------------------------
# pretvorba imen stolpcev in vrstic tabel za latex znake
toLatex <- function(tabela) {
if (!is.null(colnames(tabela))) {
colnames(tabela) <- Hmisc::latexTranslate(colnames(tabela))
}
if (!is.null(rownames(tabela))) {
rownames(tabela) <- Hmisc::latexTranslate(rownames(tabela))
}
return(tabela)
}
#-------------------------------------------------------------
# spreminjanje teksta za izvedbo v pravljico :)
oblikujIzvedbo <- function (izvedba, semester) {
if (substr(izvedba,1,1)=='1') {
katera <- 'Prva izvedba'
} else if (substr(izvedba,1,1)=='2') {
katera <- 'Druga izvedba'
} else if (substr(izvedba,1,1)=='3') {
katera <- 'Tretja izvedba'
} else {
katera <- paste('Izvedba', izvedba)
}
return(paste(katera, semester, sep=", "))
}
#---------------------------------------------#
# Barvanje kvantilnih rnagov (glej poročilo za izvajalca, tabela 1.4, 1.5, 1.6)
# returns colorized (latex format) quantile rank for a vector of values
kvantRang <- function(dat) {
# quantile ranks
datp <- round((((rank(dat, na.last="keep", ties.method="average")-0.5) / sum(!is.na(dat))) * 100), 0)
# coloring
datpCol <- datp
datpCol[is.na(datp)] <- "."
datpCol[datp <= 10 & !is.na(datp)] <- paste0("{\\color{BrickRed}", datpCol[datp <= 10 & !is.na(datp)], "}") # values equal or lower are bold red
datpCol[datp >= 11 & datp <= 25 & !is.na(datp)] <- paste0("{\\color{Orange}", datpCol[datp >= 11 & datp <= 25 & !is.na(datp)], "}") # values between (or equal) are red
datpCol[datp >= 75 & datp <= 89 & !is.na(datp)] <- paste0("{\\color{Chateau Green}", datpCol[datp >= 75 & datp <= 89 & !is.na(datp)], "}") # values between (or equal) are blue
datpCol[datp >= 90 & !is.na(datp)] <- paste0("{\\color{Blue Stone}", datpCol[datp >= 90 & !is.na(datp)], "}") # values equal or larger are bold blue
return(datpCol)
}
# Komponente: Število vpisanih, Št. odgovorov in % Odgovorov v tabelah 1.4. 1.5 in 1.6 niso obarvani)
kvantRang1 <- function(dat) {
# quantile ranks
datp <- round((((rank(dat, na.last="keep", ties.method="average")-0.5) / sum(!is.na(dat))) * 100), 0)
datpCol <- datp
datpCol[is.na(datp)] <- "."
datpCol[datp <= 100 & !is.na(datp)] <- paste0(datpCol[datp <= 100 & !is.na(datp)]) #
return(datpCol)
}
# Ker imata komponenti Ustreznost KT in kompetence drugačni merski lestvicu ju tudi drugače barvamo. Glej poročilo izvajalca Tabela 1.5.
kvantRang2 <- function(dat) {
# quantile ranks Update: to je funkcije še iz 2015, ki jo bomo v kraktem (2019) nadomestili z dplyr
#mutate(numbers_per_K_percent_rank = percent_rank(izvajalec.ocena.SKUPAJ))
datp <- round((((rank(dat, na.last="keep", ties.method="average")-0.5) / sum(!is.na(dat))) * 100), 0)
datpCol <- datp
datpCol[is.na(datp)] <- "."
datpCol[datp <= 10 & !is.na(datp)] <- paste0("{\\color{Orange}", datpCol[datp <= 10 & !is.na(datp)], "}") # values equal or lower are bold red
datpCol[datp >= 11 & datp <= 25 & !is.na(datp)] <- paste0("{\\color{Orange}", datpCol[datp >= 11 & datp <= 25 & !is.na(datp)], "}") # values between (or equal) are red
datpCol[datp >= 75 & datp <= 89 & !is.na(datp)] <- paste0("{\\color{BrickRed}", datpCol[datp >= 75 & datp <= 89 & !is.na(datp)], "}") # values between (or equal) are blue
datpCol[datp >= 90 & !is.na(datp)] <- paste0("{\\color{BrickRed}", datpCol[datp >= 90 & !is.na(datp)], "}") # values equal or larger are bold blue
return(datpCol)
}
# latex format rotation on inout vector
# Rotiramo imena stolpcev v tabelah za 90 stopinj
latex.rotate <- function(x) {
as.character(lapply(x, function(y) paste('\\rotatebox{90}{', y, '\\,}', sep='')))
}
# programme row names format
# Uporabljamu pri izpisu tabel za poročila za Programe (glej koda-programi).r in poročila za fakulteto (koda-fakulteta.r)
# rownames <- izpis imena izvajalca in njegovega predmeta (glej Poročilo za fakulteto, tabela 1.4: Povprečja izvajalcev pri predmetih)
formatProgImena <- function(imena, rankby) {
imena <- gsub(" (izredna izvedba)", "", imena, fixed=TRUE)
ranking <- rank(-suppressWarnings(rankby), ties="first", na.last="keep")
ranking[is.na(ranking)] <- ""
imena <- paste0("\\makebox[0.75cm][l]{", ranking, ".}", Hmisc::latexTranslate(imena))
imena <- paste("\\begin{Complement}", imena, "\\end{Complement}")
return(imena)
}
# remove title form name - this function assumes that the name starts with the first capitalized letter after a period (".")
titula.rm <- function(x) {
pozicija <- unlist(gregexpr("\\. [[:upper:]ČŠ???]", x,""))[1] # in some cases regex didn't find ČŠ? so these are spcified seperatly
if (pozicija != -1) {
ime <- substr(x, pozicija + 2 , nchar(x))
} else {
ime <- x
}
return(ime)
}

View File

@ -1,134 +0,0 @@
# Created by Miha 30.10.2019 #
#-------------------------- NAROČILO FDV ------------------------------#
# Ker se imena stari hali novih programov podvajajo
# v poročilih ni razvidno za kateri program gre,
# zato bomo le za FDV programe ločil glede na ID, in sicer
# Programe bomo poimenovali v vseh bazah in šifrantu programov
# Družboslovna informatika UNI stari program ima ID = 1000229
# Družboslovna informatika UNI prenovljeni program ima ID = 1001021
prenPredh <- function(data, program, idprog) {
# DRUŽBOSLOVNA INFORMATIKA PRENOVLJENI PREDHODNI
data[,program] <-
ifelse(
data[,idprog] == "1000229",
"Družboslovna informatika (predhodni)",
ifelse(
data[,idprog] == "1001021",
"Družboslovna informatika (prenovljeni)",
#------------------------------#
# KOMUNIKOLOGIJA - MEDIJSKE IN KOMUNIKACIJSKE ŠTUDIJE
ifelse(
data[,idprog] == "1000237",
"Komunikologija - medijske in komunikacijske študije (predhodni)",
ifelse(
data[,idprog] == "1001023",
"Komunikologija - medijske in komunikacijske študije (prenovljeni)",
#---------------------------------
# KOMUNIKOLOGIJA - TRŽNO KOMUNICIRANJE IN ODNOSI Z JAVNOSTMI
ifelse(
data[,idprog] == "1000238",
"Komunikologija - tržno komuniciranje in odnosi z javnostmi (predhodni)",
ifelse(
data[,idprog] == "1001022",
"Komunikologija - Tržno komuniciranje in odnosi z javnostmi (prenovljeni)",
#---------------------------------
# KULTUROLOGIJA
ifelse(
data[,idprog] == "1001024",
"Kulturologija - Študije kultur in ustvarjalnosti (prenovljeni)",
ifelse(
data[,idprog] == "1000232",
"Kulturologija (predhodni)",
#---------------------------------
# MEDNAORDNI ODNOSI
ifelse(
data[,idprog] == "1000233",
"Mednarodni odnosi (predhodni)",
ifelse(
data[,idprog] == "1001026",
"Mednarodni odnosi (prenovljeni)",
#---------------------------------
# NOVINARSTVO
ifelse(
data[,idprog] == "1000234",
"Novinarstvo (predhodni)",
ifelse(
data[,idprog] == "1001025",
"Novinarstvo (prenovljeni)",
#---------------------------------
# POLITOLOGIJA - OBRAMBOSLOVJE
ifelse(
data[,idprog] == "1000239",
"Politologija - obramboslovje (predhodni)",
ifelse(
data[,idprog] == "1001029",
"Obramboslovje (prenovljeni)",
#---------------------------------
# Politologija - Javne politike in uprava
ifelse(
data[,idprog] == "1000235",
"Politologija - študije demokracije in upravljanja (predhodni)",
ifelse(
data[,idprog] == "1001031",
"Politologija - Javne politike in uprava (prenovljeni)",
#---------------------------------
# Politologija - študije politike in države
ifelse(
data[,idprog] == "1000230",
"Politologija študije politike in države (predhodni)",
ifelse (
data[,idprog] == "1001030",
"Politologija študije politike in države (prenovljeni)",
#---------------------------------
# Sociologija - analitska sociologija
ifelse (
data[,idprog] == "1000231",
"Analitska sociologija (predhodni)",
ifelse(
data[,idprog] == "1001027",
"Sociologija (prenovljeni)",
#---------------------------------
# Sociologija -kadrovski medžment
ifelse (
data[,idprog] == "1000240",
"Sociologija - upravljanje organizacij, človeških virov in znanja (predhodni)",
ifelse (
data[,idprog] == "1001028",
"Sociologija - kadrovski menedžment (prenovljeni)",
#---------------------------------
ifelse (
data[,idprog] == "1000236",
"Evropske študije - družboslovni vidiki (predhodni)",
ifelse (
data[,idprog] == "1000241",
"Družboslovna informatika (predhodni)",
data[,program]
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
return(data)
}
#-------------------------- NAROČILO FDV ------------------------------#

View File

@ -1,274 +0,0 @@
# Created by Miha 3.9.2019
##########################
# AGREGAT OCEN KOMPONENT #
##########################
#------------------- DESCRIPTION --------------------#
# Ker imamo v primeru Trendov, veliko predmetov, kjer
# pri predmetu v določenem študijskem letu ni bilo
# dovolj odgovor (manj kot štiri), bomo naredili
# AGREGATE, to pomeni, da bomo za vsako zaporedje
# študijskih let, kjer je število odgovorov večje
# kot 4, naredili dodatni stolpec, ki bo agregat
# povprečja skupneg aštevila odgovor za zaporedni
# študijski leti, kjer je vsota odgovorov enaka ali
# večja 4.
# Agegati nastopajo povsod tam, kjer so TRENDI
#----------------- //DESCRIPTION// ------------------#
# Priprava podatkov za tabele (barvanje, računanje, okelpaji)
source("Evalvacija/R/funkcije/agregati_funkcije.R", encoding = "UTF-8")
#---------------------------------------------------------------------#
#------------------------ IMPORT DATA "BREZ CENZURE" -----------------------------#
#' @IMPORTANT!!! iz prejšnjih študijsih let imamo v bazi PRED tudi podatke za
#' # anketo PO, ki pa jih ignoriramo, saj smo naredili ločen izvoz za PO razen
#' za študijsko leto 14/15 ko smo delali še testno.
# Agregati za IZVAJALCA (podatki po letih) ------------------------
ag.izv <- list.files(path = "../../Agregati/FDV", pattern = "izv")
# Agregati za PREDMET (Anketa PRED, podatki po letih) -------------
ag.pred <- list.files(path = "../../Agregati/FDV", pattern = "pred")
# Agregati za PREDMET (Anketa PO, podatki po letih) -------------
ag.po <- list.files(path = "../../Agregati/FDV", pattern = "po")
# PREVERI!!!!!!!!!!!
#-------------------- SET WORKING DIREKTORY -----------------------#
# Check which PC we are working from: WORk OR HOME
fpath <- file.path("C:/MIHA DELO/FDV PROJEKT EVALVACIJE UL/EVALVACIJE 2018_2019 PREDELAVA/AVGUST UPDATE KODE/Agregati/FDV")
if (!dir.exists(fpath)){
output_dir <- "E:/Work/Vasja Vehovar/EVALVACIJE 2018_2019 PREDELAVA/AVGUST UPDATE KODE/Agregati/FDV"
setwd(output_dir)
} else {
setwd(fpath)
}
#------------------ //SET WORKING DIREKTORY// ---------------------#
# Agregat za Izvajalce #
#=====================#
agr.izv <-
lapply(ag.izv, function(x)
read.csv2(x, stringsAsFactors = FALSE, header = TRUE))
# Agregat za predmete (PRED) #
#============================#
agr.pred <-
lapply(ag.pred, function(x)
read.csv2(x, stringsAsFactors = FALSE, header = TRUE))
# Agregat za predmete (PO, KT, KOMEPTENCE IN PRAKSO) #
#====================================================#
agr.po <-
lapply(ag.po, function(x)
read.csv2(x, stringsAsFactors = FALSE, header = TRUE))
#---------------------- //IMPORT DATA "BREZ CENZURE"// ---------------------------#
#------------------ GET DATA FOR AGREGAT PURPOSES -------------------#
# Means, number os answers and ID of all lecturers or courses
# which will be implemented as AGREGATI
# PRED ------------
agreg.pred <- lapply(agr.pred, function(x) agregat(x, namen = "PRED"))
# PO (inlcuding kompetence, praksa, KT) -----
agreg.po <- lapply(agr.po, function(x) agregat(x, namen = "PO"))
# IPP --------------
agreg.ipp <- lapply(agr.izv, function(x) agregat(x, namen = "IPP"))
agreg.ipp <- lapply(agreg.ipp, function(x) {
x$NAZIV.PEDAGOGA <- odstNaziv(x$NAZIV.PEDAGOGA)
return(x)
})
agreg.ipp <- lapply(agreg.ipp, function(x) {
x$IPP <- paste0(x$NAZIV.PEDAGOGA, " (",x$ime.predmeta ,")")
return(x)
})
# IZV -------------
agreg.izv <- lapply(agr.izv, function(x) agregat(x, namen = "IZV"))
#---------------- //GET DATA FOR AGREGAT PURPOSES// -----------------#
#------------------ EXPORT DATA FOR ARHIV -----------------#
# Export into excel according to year
# For Arhiv pruposes and for Latex tables purposes
#' @Update: Now (9.9.2019) we will use this data for
#' trends
library(xlsx)
files <- list(agreg.ipp, agreg.izv, agreg.pred, agreg.po)
name <- c("IPP_agregat", "IZV_agregat", "PRED_agregat", "PO_agregat")
for (i in 1:unique(sapply(files, length))) {
for (ii in 1: length(files)) {
write.xlsx(
x = files[[ii]][[i]],
file = paste0("Agregati data/",name[ii], ".xlsx"),
sheetName = gsub("\\/", "_", unique(files[[ii]][[i]]$leto)),
append = TRUE
)
}
}
#---------------- //EXPORT DATA FOR ARHIV// ---------------#
imen.c <- function(x) {
ifelse(
!"N_anket_po_izpitu" %in% colnames(x),
colnames(x)[colnames(x) == "N_anket"] <-
"N_anket_po_izpitu",
colnames(x)
)
return(x)
}
agreg.po <- lapply(agreg.po, imen.c)
#------------------- PRAPARE DATA FOR AGREGATION -------------------#
out.pred <- NULL
out.po <- NULL
out.ipp <- NULL
out.izv <- NULL
# Načeloma imamo za vse namene (PRED, PO, IPP) podatke
# za enako število let, zato v loopu vzamemo kar
# seq_along(agreg.pred)
for (i in seq_along(agreg.pred)) { # Testno delamo za štiri leta, ker imamo trenutno 5 let le za FDV in FGG
# Prepare data for ANKETA PRED ---------------------------
df.pred <-
agreg.pred[[i]][grepl(
"zadovoljstvo_mean|usklajenost_mean|samostojnost_mean|literatura_mean|obvescenost_mean|informiranost_mean|znanje_mean|\\<N_anket\\>|ime.predmeta|leto|program.studentov|program.studentov.ime",
colnames(agreg.pred[[i]])
)]
# Write data
out.pred[[i]] <- df.pred
# Rbind in data frame with years
agregati.pred <- do.call("rbind", out.pred)
# Prepare data for ANKETA PO ---------------------------
df.po <-
agreg.po[[i]][grepl(
"vsebine_mean|naloge_mean|kriteriji_mean|kompetence_mean|krediti_mean|\\<N_anket_po_izpitu\\>|ime.predmeta|leto|program.studentov|program.studentov.ime",
colnames(agreg.po[[i]])
)]
# Write data
out.po[[i]] <- df.po
# Rbind in data frame with years
agregati.po <- do.call("rbind", out.po)
# Prepare data for ANKETA PRED IPP ---------------------------
df.ipp <-
agreg.ipp[[i]][grepl(
"kakovost_mean|pripravljenost_mean|razumljivost_mean|zanimivost_mean|kriticnost_mean|korektnost_mean|znanje_mean|\\<N_anket\\>|ime.predmeta|NAZIV.PEDAGOGA|izvajalec.sifra|leto|IPP",
colnames(agreg.ipp[[i]])
)]
# Write data
out.ipp[[i]] <- df.ipp
# Rbind in data frame with years
agregati.ipp <- do.call("rbind", out.ipp)
# Prepare data for ANKETA PRED IZVAJALEC ---------------------------
df.izv <-
agreg.izv[[i]][grepl(
"kakovost_mean|pripravljenost_mean|razumljivost_mean|zanimivost_mean|kriticnost_mean|korektnost_mean|znanje_mean|\\<N_anket\\>|ime.predmeta|predmet.sifra|NAZIV.PEDAGOGA|izvajalec.sifra|leto",
colnames(agreg.izv[[i]])
)]
# Write data
out.izv[[i]] <- df.izv
# Rbind in data frame with years
agregati.izv <- do.call("rbind", out.izv)
}
#----------------- //PRAPARE DATA FOR AGREGATION// -----------------#
# x <- agregati.pred %>%
# split(agregati.pred$ime.predmeta, agregati.pred$leto)
# x <- x[["BP Zgodovina mednarodnih odnosov"]]
# Split evaluations for courses/elcturer by predmet šifra
# x <- x[["BP Retorika javnih diskurzov"]]
# x <- x[["BP Televizijsko novinarstvo in novi mediji"]]
# x <- agregati.pred %>%
# split(agregati.pred$ime.predmeta, agregati.pred$leto)
# x <- x[["BD Drugi tuji strokovni jezik I: angleščina"]]
# Podatke v listu bomo za potrebe trendov
# najprej ločili glede na šifro predmeta in/ali šifro izvajalca
#' na ločenih podatkih naredili kombinacijo (glej funkcijo @kolone)
# in nato vse skupaj združili.
#' Funkcija @kolone poleg podatkovneg okvirja vrne tudi
# stolpec oz. column po imenu "stolpec", kjer
# vrednost "Stolpec 1" pomeni, da bomo v lateh naredili
# nov stolpec, kamor bomo zapisali vrednost povprečja ter
# "Stolpec 2" pomeni, da bomo naerdili ŠE en dodaten stolpec
# v latex tabeli.
# Če je verdnost NA, pomeni, da bomo predmet zapisali samo v en stolpec
# Anketa RPED
agregati.pred <- agregati.pred %>%
split(agregati.pred$ime.predmeta, agregati.pred$leto) %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
# Anketa PO
agregati.kom <- agregati.po[grepl("predmet.ocena.kompetence_mean|N_anket_po_izpitu|ime.predmeta|leto", colnames(agregati.po))]
agregati.KT <- agregati.po[grepl("predmet.ocena.krediti_mean|N_anket_po_izpitu|ime.predmeta|leto", colnames(agregati.po))]
agregati.po <- agregati.po %>%
# V anketi Po se skupno povprečje računa brez kompetenc in kT
select(-c('predmet.ocena.kompetence_mean',"predmet.ocena.krediti_mean")) %>%
rename(N_anket = "N_anket_po_izpitu") %>%
split(agregati.po$ime.predmeta, agregati.po$leto) %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
# Agregati Kopmetence
agregati.kom <- agregati.kom %>%
rename(N_anket = "N_anket_po_izpitu") %>%
split(agregati.kom$ime.predmeta, agregati.kom$leto) %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
# Agregati Kreditne točke
agregati.KT <- agregati.KT %>%
rename(N_anket = "N_anket_po_izpitu") %>%
split(agregati.KT$ime.predmeta, agregati.KT$leto) %>%
lapply(., function(x) kolone(x, KTtrend = TRUE)) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
# Anketa IPP
agregati.ipp <- agregati.ipp %>%
split(agregati.ipp$IPP, agregati.po$leto) %>%
.[sapply(., nrow) > 0] %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)
# Anketa IZV
agregati.izv <- agregati.izv %>%
split(agregati.izv$izvajalec.sifra) %>%
lapply(kolone) %>%
do.call(plyr::rbind.fill, .) %>%
oklepaj(., agregati = TRUE)

View File

@ -1,625 +0,0 @@
# Created on 17.9.2019
# Funkcija, ki pripravi trende, agregate in latex tabele
#------------------- DESCRIPTION --------------------#
# Ker imamo v primeru Trendov, veliko predmetov, kjer
# pri predmetu v določenem študijskem letu ni bilo
# dovolj odgovor (manj kot štiri), bomo naredili
# AGREGATE, to pomeni, da bomo za vsako zaporedje
# študijskih let, kjer je število odgovorov večje
# kot 4, naredili dodatni stolpec, ki bo agregat
# povprečja skupnega števila odgovor za zaporedni
# študijski leti, kjer je vsota odgovorov enaka ali
# večja 4.
# Agegati nastopajo povsod tam, kjer so TRENDI
# main koda je poimenovana "agregati.r"
# Za potrebe računanja in izdelave novih stolpvec pa
# bomo napisali novo skripto, ki
# bo skrbela, da bodo izpisi v skripti "agregati.r"
# in slirpit "kodaPDF_fakulteta" delovali
# pravilno, kar pomeni, da se bodo povprečja
# obarvala v skladu z metodologijo, v primeru
# majhenga števila odgovorov bodo povprečja v oklepajih
# prav tako pa bodo agregati zračunani po kombinaciji,
# kjer bomo dodali stolpec a in stolpec b.
# Poleg novih stolpvec je potrebno podatke najprej
#----------------- //DESCRIPTION// ------------------#
#--------------------------- AGREGATI ------------------------------#
# Function which will take data for multiple years (TRENDI)
# and get all evaluation for the courses and the lecturer
# that had less than four answer for students
#' @PURPOSE: the main prupose of this is that a lot of courses or
#' lecturers are without evaluation due to not enough data
#' therefore in all reports that include trends we will do
#' agregates for different students year and show two new columns
#' in \Latex tables.
#' @IMPORTANT TALE FUNKCIJA NE BI BILA POTREBNA SAJ BI LAHKO
#' PODATKE O PREDMETIH DOBILI TUDI IZ povprecja.izvajalca
#' in povprecja.predmeti A SE MI JE DALO KOMPLICIRATI :)
#' FUNCKIJA PA JE POTREBNA; KER SEM TRENDE ZAPISAL GLEDE
#' NA ŠTUDIJSKI PROGRAM, KI PA GA BOMO TUDI POTREBOVALI :)
# Because we have evaluations
# for different student programs
# we need to calculate total average
# for the IPP and the same
# goes for the course and lecturer
#' @param x data frame we wich to tidy for \LATEX table purposes
#' @param namen grouping variables we will calculate mean and
#' number of answers for
#' @return A data.frame.
#' @author MM (mat.miha@@gmail.com)
agregat <- function(x, namen = "IPP") {
# Filter --------------------------------
# Check if TRENDS are for
if (namen == "IPP"){ # IPP
group_var <- c("ime.predmeta",
"izvajalec.sifra")
} else if (namen == "IZV"){ #IZVAJALEC
group_var <-"izvajalec.sifra"
} else if (namen == "PRED" | namen == "PO"){
group_var <-"ime.predmeta"
}
# Define vector also globally for export
# purposes
namen <<- namen
#-----------------------------------------
# Group calculate mean and return data ---
x <- x %>%
group_by_at(vars(group_var)) %>%
# Get only courses where there wer less
# than 4 answers according to lecturer
#' @NOTE: ker smo v študijskem letu 14/15 in 15/16 ocene
#' za anekto PRED in PO izpitu zapisali v skupno bazo
#' je število anket za anketo PO izpitu v stolpcu
#' N_anket_po_izpitu. Za preostala leta pa je tt
#' stolpec poimenovan "N_anket", ker imamo ločeni
#' bazi za anekto PRED in PO
filter({
if ("N_anket_po_izpitu" %in% names(.) & namen == "PO")
sum(N_anket_po_izpitu) < 4
else
sum(N_anket) < 4
}) %>%
# Dont need courses or lecturers
# without answers
filter({
if ("N_anket_po_izpitu" %in% names(.) & namen == "PO")
N_anket_po_izpitu > 0
else
N_anket > 0
}) %>%
mutate_at(vars(contains("_mean")), funs(. * N_anket)) %>%
# Total Course average
mutate_at(vars(contains("_mean")), funs(sum(., na.rm = TRUE) / sum(N_anket, na.rm = TRUE))) %>%
# Total course number of answers
mutate(N_anket = sum(N_anket, na.rm = TRUE)) %>%
# Omit duplicated courses and/or lecturers
filter(
if (namen != "PRED" && namen != "PO")
!duplicated(izvajalec.sifra) &
!duplicated(predmet.sifra)
else !duplicated(predmet.sifra)
) %>%
as.data.frame()
#---------------------------------------
return(x)
}
#------------------------- //AGREGATI// ----------------------------#
#------------------ CALCULATE MEAN AND NEW NUMBER OF ANSEWRS ---------------------#
agregatMean <- function(x) {
x <- x %>%
mutate_at(vars(contains("_mean")), funs(. * N_anket)) %>%
# Total Course average
mutate_at(vars(contains("_mean")), funs(sum(., na.rm = TRUE) / sum(N_anket, na.rm = TRUE))) %>%
# Total course number of answers
mutate(N_anket = sum(N_anket, na.rm = TRUE)) %>%
# Get years whit not enough data latex table purposes
mutate(leto = paste(leto, collapse=", ")) %>%
# Remove duplicated names
filter(!duplicated(ime.predmeta)) %>%
# Calculate Total Mean
mutate(SKUPAJ.ag = round(rowMeans(select(., contains("_mean")), na.rm = TRUE),1))
return(x)
}
#---------------- //CALCULATE MEAN AND NEW NUMBER OF ANSEWRS// -------------------#
#----------------------- NI POUČEVAL, OKLEPAJI IN BARVANJA -----------------------------#
# Ker nekaterih izvajalcev prejšnjih letih še ni bilo imamo nekje manjkajoče vredosti
# ko podatke iz različnih let združimo skupaj. Zato najprej vsa imena glede na ID
# pedagoga uredimo in združimo v enem stolpcu, ki bo v Latex tabeli
# Manjkajoče podatke nato ločimo na dva načina:
# 1) ".", kjer ni dovolj odgovorov
# 2) "-", če pedagog takrat še ni poučeval
# Na ta način bomo lahko zapisali oklepaja string številom
# Funkcija nastopa v funkciji oklepaj, glej sppodaj
num <- function(x) {
x <- as.numeric(gsub("\\D", "", x))
return(x)
}
# Dvojni oklepaji pri trendih (glej skripto kodaPDF_fakulteta.r)
oklepaj <- function(x, agregati = FALSE, KT = FALSE) {
# Preverimo, ali bomo oklepaje zapisali
# za agregate. V tem primeru so povprečja že obarvana
# in potrebujemo samo dodati oklepaje kjer os potrebni
if (agregati == TRUE) {
x.df <- x[grepl("N_anket", colnames(x))]
x.tot <- x[grepl("SKUPAJ", colnames(x))]
x.tot[, 1] <-
ifelse(
num(x.df[, 1]) < 5 & !is.na(num(x.df[, 1])),
paste0("((", x.tot[, 1], "))"),
ifelse(
num(x.df[, 1]) > 4 &
num(x.df[, 1]) < 10,
paste0("(", x.tot[, 1], ")"),
x.tot[, 1]
)
)
x[colnames(x.tot)] <- x.tot
return(x)
} else {
# Če ne delamo za agregate ampak za izvajalce ali predmete
# Najprej povprečja pobarvamo nato pa k povprečjem,
# dodamo še oklepaje, ki bodo predstavljali število
# odgovorov
x.mean <- x[grepl("SKUPAJ|Skupaj", colnames(x))]
x.mean <- formatval(x.mean, KTtrend = KT)
# Check if there were less than 10 or 4 ansers so we will
# also add parenthesis
x.df <-
x[grepl("št. odgovorov|Skupaj|SKUPAJ", colnames(x))]
x.df[, 2] <- x.mean
# Add parenthesis to total mean where number of
# answers is less than 4 (()) or les than 10 ()
# If column is flass numeric for calculating purposes
x.df[, 2] <-
ifelse(
num(x.df[, 1]) < 5 & !is.na(num(x.df[, 2])),
paste0("((", x.df[, 2], "))"),
ifelse(num(x.df[, 1]) > 4 &
num(x.df[, 1]) < 10, paste0("(", x.df[, 2], ")"), x.df[, 2])
)
x[colnames(x.df)[2]] <- x.df[, 2]
return(x)
}
}
# Funkcija oklepaj pa nastopa v funkciji poucNIpouc
# Funkcija, ki bo ločila premajhno
# stevilo odgovorov od nepoucevanja
# namen: Izvajalec id|Izvajalec|Predmet id
poucNIpouc <- function(x, namen = "Izvajalec", krediti = FALSE) {
# Podatki za izvajalca za posamezno leto
# vedno sestojijo iz 10-hi stolpcev (šifre izvajalca
# ne upoštevamo predstavlja pa dodaten stolpec) Zato
# preverimo, za koliko let imamo podatke
# Načeloma v 2019/2020 to nb bo več igralo vlogo
# ker bodo vse članice imele podatke za 5 let
# trende pa prikazujemo za 5 let
# Torej bomo imeli 50 stolpcev.
# Prvi stolpec so šifre izvajalcev
# ki so unikatne
colnames(x) <- make.unique(colnames(x))
# Preverimo za koliko let imamo podatke
st.col <- length(x[grepl("SKUPAJ|Skupaj", colnames(x))])
# Letos imamo še štiri leta
# Data
x1 <- oklepaj(x[grepl("\\.x$", colnames(x))], KT = krediti)
x2 <- oklepaj(x[grepl("\\.y$", colnames(x))], KT = krediti)
x3 <- oklepaj(x[grepl("\\.x.1$", colnames(x))], KT = krediti)
x4 <- oklepaj(x[grepl("\\.y.1$", colnames(x))], KT = krediti)
if (st.col == 5) {
x5 <- oklepaj(x[!grepl("\\.x$|\\.y$|\\.x.1$|\\.y.1$|Predmeti|Izvajalec id", colnames(x))], KT = krediti)
}
# V kolikor ime izvajalca/predmeta v določenem
# letu manjka, to pomeni, da ga ni bilo
# zato NA nadomestimo z "-"
x1[is.na(x1[grepl(paste0(namen), colnames(x1))]), 2:ncol(x1)] <- "--"
x2[is.na(x2[grepl(paste0(namen), colnames(x2))]), 2:ncol(x2)] <- "--"
x3[is.na(x3[grepl(paste0(namen), colnames(x3))]), 2:ncol(x3)] <- "--"
x4[is.na(x4[grepl(paste0(namen), colnames(x4))]), 2:ncol(x4)] <- "--"
if (st.col == 5) {
x5[is.na(x5[grepl(paste0(namen), colnames(x5))]), 2:ncol(x5)] <- "--"
}
# Cbind into final data frame
if (st.col == 4) {
x.out <- cbind(x1, x2, x3, x4)
} else {
x.out <- cbind(x1, x2, x3, x4, x5)
}
# Finalize data
x[colnames(x.out)] <- x.out
return(x)
}
#--------------------- //NI POUČEVAL, OKLEPAJI IN BARVANJA// ---------------------------#
# Prepare each data frame for Latex tables
# FDV ima za isto šifro predmeta različne izvedbe in imena. Tako je enkrat
# Tak predmeet izredna izvedba spet drugič (drugo leto) je to redna izvedba
# Tako je težko povezati izvajalce pri predmetu.
# Krr podtke mrgamo po imenih IPP, bomo prepone nazive po posaemznih letih
# izvajalcev odstranili.
odstNaziv <- function(x) {
x <- x %>%
gsub("prof. ddr. ", "", ., fixed = TRUE) %>%
gsub("doc. dr. in lekt. dr. ", "", ., fixed = TRUE) %>%
gsub("red. prof. dr. ", "", ., fixed = TRUE) %>%
gsub("zn. svet. dr. ", "", ., fixed = TRUE) %>%
gsub("le. mag. ", "", ., fixed = TRUE) %>%
gsub("le. ", "", ., fixed = TRUE) %>%
gsub("izr. ", "", ., fixed = TRUE) %>%
gsub("izr. prof. ddr. ", "", ., fixed = TRUE) %>%
gsub("izr. prof. dr. ", "", ., fixed = TRUE) %>%
gsub("dr. ", "", ., fixed = TRUE) %>%
gsub("doc. dr. ", "", ., fixed = TRUE) %>%
gsub("asist. ", "", ., fixed = TRUE) %>%
gsub("akad. prof. dr. ", "", ., fixed = TRUE) %>%
gsub("asist. dr. ", "", ., fixed = TRUE) %>%
gsub("pred. mag. ", "", ., fixed = TRUE) %>%
gsub("mag. ", "", ., fixed = TRUE) %>%
gsub("izr. prof. ", "", ., fixed = TRUE) %>%
gsub("doc. ", "", ., fixed = TRUE) %>%
gsub("akad. prof. ", "", ., fixed = TRUE) %>%
gsub("prof. ", "", ., fixed = TRUE) %>%
gsub("viš. ", "", ., fixed = TRUE) %>%
gsub("pred. ", "", ., fixed = TRUE) %>%
gsub("zasl. ", "", ., fixed = TRUE) %>%
gsub("strok. sod. ", "", ., fixed = TRUE) %>%
gsub("spec. ", "", ., fixed = TRUE) %>%
gsub("znan. sod. ", "", ., fixed = TRUE) %>%
gsub("lekt. ", "", ., fixed = TRUE)
return(x)
}
# x <- agregati.izv[agregati.izv$ime.predmeta =="SJ1 Zgodovinsko jezikoslovje 1",]
#
# t <- agregati.izv %>%
# split(agregati.izv$izvajalec.sifra)
#
# x <- t[["3000018_FF_285"]]
# KOLONA
kolone <- function(x, KTtrend = FALSE) {
# Ker KT barvamo posebej oz drugače
# jih je ptorebno ločiti:
if (KTtrend == FALSE) {
KTtrend = FALSE
} else {
KTtrend = TRUE
}
# Preverimo ali imamo podatke
# za 5 let. V letu 2018/19
# Imamo podatke za 5 let le
# za FDV in FGG. V Letu 2020
# Pa bomo imeli za vse clanice
# Check if we have data for 5 years
# UPDATE 18.9.2019: !!!!!!
# FDV ima ista imena predmetov za razliÄŤne izvedbe (P in Z)
# zato prihaja do podvajanj let. Ker ima fdv tudi iste sifre
# in po nekaterih letih razlicna imena predmetov ne moremo
# narediti merge na ostnovi ID predmeta ampak imena
# Ker pa prihaja do podvajanj v nekaterih primerih bomo
# podvojene verdnsoti odstranili. Sicer to ni pravilno
# a zaradi narave sifer predmetov FDV drugace ne gre.
if(length(x$leto) >= 5){
x <- x[!duplicated(x[c("leto")]), ]
}
# Preverimo za koliko let je bilo premalo odgovorov
if (length(x$leto) == 5) {
if (sum(x$N_anket[1:2]) >= 4 & sum(x$N_anket[3:5]) >= 4) {
kolon.first <- x[1:2, ]
kolon.first <- agregatMean(kolon.first)
kolon.first <- formatval(kolon.first, KTtrend = KTtrend, Agregati = TRUE)
kolon.second <- x[3:5, ]
kolon.second <- agregatMean(kolon.second)
kolon.second <- formatval(kolon.second, KTtrend = KTtrend, Agregati = TRUE)
kolona <- rbind(kolon.first, kolon.second)
kolona$stolpec <- c("Stolpec 1", "Stolpec 2")
} else if (sum(x$N_anket[1:3]) >= 4 &
sum(x$N_anket[4:5]) >= 4) {
kolon.first <- x[1:3, ]
# Mean and n
kolon.first <- agregatMean(kolon.first)
kolon.first <- formatval(kolon.first, KTtrend = KTtrend, Agregati = TRUE)
kolon.second <- x[4:5, ]
kolon.second <- agregatMean(kolon.second)
kolon.second <- formatval(kolon.second, KTtrend = KTtrend, Agregati = TRUE)
kolona <- rbind(kolon.first, kolon.second)
#kolona <- kolona[!is.na(kolona$izvajalec.sifra),]
kolona$stolpec <- c("Stolpec 1", "Stolpec 2")
} else {
kolona <- agregatMean(x)
kolona <- formatval(kolona, KTtrend = KTtrend, Agregati = TRUE)
}
} else if (length(x$leto) == 4) {
if (sum(x$N_anket[1:2]) >= 4 & sum(x$N_anket[3:4]) >= 4) {
kolon.first <- x[1:2, ]
kolon.first <- agregatMean(kolon.first)
kolon.first <- formatval(kolon.first, KTtrend = KTtrend, Agregati = TRUE)
kolon.second <- x[3:4, ]
kolon.second <- agregatMean(kolon.second)
kolon.second <- formatval(kolon.second, KTtrend = KTtrend, Agregati = TRUE)
kolona <- rbind(kolon.first, kolon.second)
# V primer FF so bili v špifrantu napačni podatki
# zato naredimo to
kolona <- kolona[1:2,]
kolona$stolpec <- c("Stolpec 1", "Stolpec 2")
} else {
kolona <- agregatMean(x)
kolona <- formatval(kolona, KTtrend = KTtrend, Agregati = TRUE)
}
} else if (length(x$leto) == 3) {
if (sum(x$N_anket) >= 4) {
kolona <- agregatMean(x)
kolona <- formatval(kolona, KTtrend = KTtrend, Agregati = TRUE)
} else{
kolona <- NULL
}
} else if (length(x$leto) == 2) {
if (sum(x$N_anket) >= 4) {
kolona <- agregatMean(x)
kolona <- formatval(kolona, KTtrend = KTtrend, Agregati = TRUE)
} else {
kolona <- NULL
}
} else if (length(x$leto) == 1) {
kolona <- x
kolona[] <- "."
#kolona <- NULL
}
return(kolona)
}
# Če obstajajo agregati želimo v Latex tabeli trendov
# to primerno označiti, in sicer v kolikor so agregati
# za en stolpec, bomo to označili z "a" v kolikor gre za dva stolpca
# bomo to označili z "b". Torej vse "NA-je" bomo zamenjali z "a" ali "b"
# Ko bodo stolpci ustrezno zamenjani in novi stolpci agregatov dodani
# bomo tudi obarvali povprečja in znotraj funkcije naredili tudi latex tabelo
# Update 11.10.2019 Po novem bomo funkcijo uporabili tudi za pripravo
# podatkov za indivudualne trende in habilitacijsko komisijo, ker
# Obsobje: PRVA STRAN PDFJA:pride v upoštev pri trendih izvajalca in habilitacijske
# ko na prvi strani zapišemo obdobje podatkov (študijska leta)
# moramo vstavit agregate
prepare.agregati <- function(x, agregTip = "izvajalci", imetabele = "", habiliTrend = FALSE, obdobje = FALSE) {
# Najprej pridobimo za koliko let imamo podatke
df <- x[!grepl(pattern = paste0(agregTip,"|SKUPAJ.ag|leto|stolpec"), colnames(x))]
leto <- x[grepl("leto", colnames(x))]
# NAto Preverimo ali imamo eno ali dve leti,
# Torej ali imamo agregat za dve leti
if ("stolpec" %in% colnames(x)) {
# Če stolpec obstaja pomeni, da
# moramo v latex tabeli dodatni dva
# nova stolpca, ki bosta predstavljala
# povprečji za predmete, kjer v preteklosti
# posamezen predmet ni imel dovolj ocen
# Nato pripravimo dodatna stolpca, ki bosta vsebovala povprečje in leto
# na podlagi katerega bomo v stolpec ocen zapisali ali "a" ali "b"
data <- x[grepl(paste0(agregTip,"|SKUPAJ|leto|stolpec"), colnames(x))]
# Preuredimo leto, in povprečja: En predmet je ena vrstica
data$leto1[grepl("Stolpec 1", data$stolpec)] <-
data$leto[grepl("Stolpec 2", data$stolpec)]
# Še povprečje
data$SKUPAJ.ag.1[grepl("Stolpec 1", data$stolpec)] <-
data$SKUPAJ.ag[grepl("Stolpec 2", data$stolpec)]
# ODstranimo vse vrstice, kjer se nahaja string "Stolpec 2", kar pomeni, da gre za podvojene vrednosti
data <- data[!grepl("Stolpec 2", data$stolpec),]
# V stolpce na ustrezna mesta namesto NA dodamo "a" ali "b" glede na leto
data <-
data[grepl(
paste0(agregTip, "|kompetence\\.|Ustreznost KT|SKUPAJ|leto|stolpec"),
colnames(data)
)]
}
# Preverimo ali je fakulteta FDV/FGG ali Katera Druga
# In ustrezno poimenujemo stolpce
# Če delamo za FDV ali FGG imamo v letu 2018/2019
# podatke že za pet let, prvo leto pa je bilo
# 2014/15. Če delamo za ostale članice imamo
# podatke za štiri leta, prvo pa je bilo
# 2015/16
if (ID != "3000021" && ID != "3000026") {
year1 <- 14
year2 <- 15
} else {
year1 <- 13
year2 <- 14
}
col.names <-
unlist(lapply(1:ncol(df), function (i)
paste0(year1 + i, "/", year2 + i, sep = "")))
# Imean stolpcev dodamo k Podatkov
if (!"stolpec" %in% colnames(x)) {
data <-
x[grepl(pattern = paste0(agregTip, "|kompetence\\.|Ustreznost KT|SKUPAJ|leto"),
colnames(x))]
}
# Dodamo nova imena stolpcev (agregTip, študijska leta in agregate)
colnames(data)[colnames(data) %in% colnames(df)] <- col.names
# Preverimo za katero študijsko leto imamo premalo podatkov in to zapišemo
# Preverimo ali obstaja oz imamo podatke za 14/15
if ("14/15" %in% colnames(data)) {
data$`14/15` <- ifelse(grepl("2014/2015|2014/15|14/15", data$leto), "a", data$`14/15`)
if ("leto1" %in% colnames(data)) {
data$`14/15` <- ifelse(grepl("2014/2015|2014/15|14/15", data$leto1), "b", data$`14/15`)
}
}
# Preverimo ali obstaja oz imamo podatke za 15/16
if ("15/16" %in% colnames(data)) {
data$`15/16` <- ifelse(grepl("2015/2016|2015/16|15/16", data$leto), "a", data$`15/16`)
if ("leto1" %in% colnames(data)) {
data$`15/16` <- ifelse(grepl("2015/2016|2015/16|15/16", data$leto1), "b", data$`15/16`)
}
}
# Preverimo ali obstaja oz imamo podatke za 16/17
if ("16/17" %in% colnames(data)) {
data$`16/17` <- ifelse(grepl("2016/2017|2016/17|16/17", data$leto), "a", data$`16/17`)
if ("leto1" %in% colnames(data)) {
data$`16/17` <- ifelse(grepl("2016/2017|2016/17|16/17", data$leto1), "b", data$`16/17`)
}
}
# Preverimo ali obstaja oz imamo podatke za 17/18
if ("17/18" %in% colnames(data)) {
data$`17/18` <- ifelse(grepl("2017/2018|2017/18|17/18", data$leto), "a", data$`17/18`)
if ("leto1" %in% colnames(data)) {
data$`17/18` <- ifelse(grepl("2017/2018|2017/18|17/18", data$leto1), "b", data$`17/18`)
}
}
# Preverimo ali obstaja oz imamo podatke za 18/19
if ("18/19" %in% colnames(data)) {
data$`18/19` <- ifelse(grepl("2018/2019|2018/19|18/19", data$leto), "a", data$`18/19`)
if ("leto1" %in% colnames(data)) {
data$`18/19` <- ifelse(grepl("2018/2019|2018/19|18/19", data$leto1), "b", data$`18/19`)
}
}
# Preverimo ali obstaja oz imamo podatke za 19/20
if ("19/20" %in% colnames(data)) {
data$`19/20` <- ifelse(grepl("2019/2020|2019/20|19/20", data$leto), "a", data$`19/20`)
if ("leto1" %in% colnames(data)) {
data$`19/20` <- ifelse(grepl("2019/2020|2019/20|19/20", data$leto1), "b", data$`19/20`)
}
}
# Preverimo ali obstaja oz imamo podatke za 20/21
if ("20/21" %in% colnames(data)) {
data$`20/21` <- ifelse(grepl("2020/2021|2020/21|20/21", data$leto), "a", data$`20/21`)
if ("leto1" %in% colnames(data)) {
data$`20/21` <- ifelse(grepl("2020/2021|2020/21|20/21", data$leto1), "b", data$`20/21`)
}
}
# Subset in priprava za Latex tabelo
data <- data[!grepl("leto|stolpec", colnames(data))]
# Preverimo ali imamo dva dodatna stolpca ali samo enega
if (length(df) + 2 == length(data[2:ncol(data)])) {
colnames(data)[c(ncol(data) - 1):ncol(data)] <- c("Povp. a", "Povp. b")
# Update 17.9.2019
# V kolikor se v stolpcu pojavi a ali b želimo to kot
# zapisati kot superscript oziroma na potenco
data$`Povp. a` <-
ifelse(
!is.na(data$`Povp. a`),
paste0(data$`Povp. a`, "\\textsuperscript{a}"),
data$`Povp. a`
)
data$`Povp. b` <-
ifelse(
!is.na(data$`Povp. b`),
paste0(data$`Povp. b`, "\\textsuperscript{b}"),
data$`Povp. b`
)
} else {
colnames(data)[ncol(data)] <- c("Povp. a")
data$`Povp. a` <-
ifelse(
!is.na(data$`Povp. a`),
paste0(data$`Povp. a`, "\\textsuperscript{a}"),
data$`Povp. a`
)
}
# Add rownames
rownames(data) <- make.unique(data[,1])
data[,1] <- NULL
# Za potrebe računanja povprečij oz zaradi funkcije
# formatval bomo stara imena stolpcev shranili
# in jih nadomestili s "Skupaj", nato pa jih (stara imena)
# bomo za potrebe latex tabele zopet zapisali
# nazaj
# old.col <- colnames(data)
# colnames(data) <- rep(paste0("Skupaj", 1:ncol(data)))
# # Tidy data (coloring averages)
# data[1:length(df)] <-
# formatval(data[1:length(df)], Agregati = TRUE)
# colnames(data) <- old.col
# # NA nadomestimo z ".", kar pomeni, da ni podatka
data[is.na(data)] <- "."
# Dodamo še morebitne opombe, ki se bodo izpisale pod
# Latex tabelo
opomba <- ""
# V kolikor ni podatkov za agregatov, torej
# stolpec Povp. a ali Povp. b povsod == "."
# potem dodatnega stolpca v latex tabeli ne
# želimo prikazati
if(all(data$`Povp. a` == ".")) {
data$`Povp. a` <- NULL
}
# V kolikor ne delamo za potrebe trendov
# in habilitacijske
if (habiliTrend == FALSE) {
#' Create \Latex Table
data.tex <- tb.lat(
data,
tabname = imetabele,
"A{8cm}",
namen = "TRENDI",
Agregati = TRUE
)
} else {
data.tex <- data
}
# Če nas zanima samo obdobje podatkov
# torej ta koliko študijskih let imamo
# pri trendih izvajalca podatke
# data.tex prepišemo
if (obdobje == TRUE){
data.tex <- col.names
}
# Vrni latex tabelo
return(data.tex)
}

View File

@ -1,76 +0,0 @@
# ERROR CHECK #
# CHECK FOR ERRORS ----------------------
#-------------------------- MOREBITNE NESKLADNOSTI Z 1KA BAZO IN ŠIFRANTOM X1 -----------------------------#
# Preverimo ali so v bazi kakšni odgovori tistih izvajalcev, ki manjkajo v šifrantu X1. Npr izvajalec ima
# v bazi (anketa PRED izpitom) odgovore za predmet, ki v šifrantu X1 ni naveden oz. manjka
# Slednje lahko pivede do erorjev pri generiranju PDF poročil in časovne zamude, kar želimo preprečiti
library(tidyverse)
# ANKETA PRED
podatki.1KA.baza.PRED <- data_pred_izpitom %>%
gather(contains("sifizv"),
key = "sifizv",
value = "ID"
) %>%
select_("predmet","sifpredm","ID") %>%
unique()
# Kateri izvajalci so v 1KA bazi (imajo odgovore) a niso v šifrantu X1
output.pred <- anti_join(podatki.1KA.baza.PRED, sifrant , by = c("sifpredm" ="IDP","ID"="IDPEDAGOGA"))
# Izločimo vse manjkajoče oz. nevsebinske vrednosti respondenta (-1, -2, -5, itd)
junk.komentar <-
c(
NA,
"-1",
"-2",
"-3",
"-4",
"-5",
"-97",
"-98",
"-99",
"-",
"/",
"\\",
".",
"",
"-1: Ni odgovoril",
"-2: Preskok (if)",
"-3: Prekinjeno",
"#NAME?"
)
output.pred <- output.pred[! output.pred$ID %in% junk.komentar, ]
# PREVERI #
if (nrow(output.pred) >= 1) {
# Če je output.pred < 1 to pomeni, da sta bazi 1KA odgovorov (anketa PRED) in šifrant X1 skladni zato lahko nadaljujemo z izračuni
cat(
"V bazi 1KA (anketa PRED izpitom) se nahaja izvajalec z ID-jem",
paste(output.pred$ID, collapse = ' , '), "ki ga v šifrantu X1 ni
ALI pa ima v bazi odgovore za predmet, ki v šifrantu X1 ni zaveden, da ga poučuje!!!!!"
)
warning("Izvajalci ki so v 1KA bazi, manjkajo v šifrantu X1")
}
# PREVERI #
#------------------------- //MOREBITNE NESKLADNOSTI Z 1KA BAZO IN ŠIFRANTOM X1// ---------------------------#
#----------------------------- PODVOJENE ŠIFRE IZVAJALCEV PRI ISTEM PREDMETU --------------------------------#
# preverba če ni kakšna šifra predmeta * šifra izvajalca v šifrantu podvojena
# npr. izvajalec je imel napačno šifro in dve izvedbi (redna/izredna) nista imeli različnih šifer
podvojeniID <- table(paste(sifrant$IDP, sifrant$IDPEDAGOGA, sep = '*'))
if (max(podvojeniID) > 1) {
sumljivci <- paste(names(podvojeniID[which(podvojeniID > 1)]), collapse = '\n')
warning("All course*lecturer ID's in sifrant should be unique!!\nThese are not:\n", sumljivci)
# V primeru filozofske se je zgodilo, da je bi pri nekaterih predmetih podvojen izvajalec, in sicer je
# bil enkrat naveden kot izvajalec predmeta in drugič kot soizvajalec, zato vse take podvojene odstranimo oziroma
# pustimo samo unikatne (nosilce)
sifrant <- sifrant %>% # Sifrant
group_by(IDPEDAGOGA, IDP) %>% # grouped by lecturer ID and course ID
filter(NOSILEC == max(NOSILEC)) %>% # filtriramo samo tam kjer je podvojeni izvajalec naveden kot nosilec (1)
as.data.frame() # convert list to dataframe
}
#--------------------------- //PODVOJENE ŠIFRE IZVAJALCEV PRI ISTEM PREDMETU// ------------------------------#

View File

@ -1,182 +0,0 @@
# Odprti odgovori Habilitacijska komisija
# Podatke, ki jih preberemo pridobimo iz leta 2017/18 ko smo
# vse komentarje iz prenšnjih elt združili v eno bazo
# V tej bazi se torej nahajajo vsi komentarji do študijskega
# leta 2017/18
# Za letošnje študijsko leto 18/19 pa bomo za vsako
# članico komentarje zapisali v svojo bazo.
# Na koncu pa bomo obe bazi združili glede na izvajalca in predmet.
# Vsi komentarji izvajalca do 17/18
izv.koment <-
read.csv2(
paste0(
"Evalvacija/results/",
fakulteta,
"/Trendi/zdruzeno.izvajalci.csv"
),
header = TRUE,
stringsAsFactors = FALSE
)
# Komentarji 18/19
dd_izv_komentarji <- subset(izv.koment, PREDMET == imena & izvajalec.sifra == izvajalec)
desired.cols <- c("izvajalec.komentar.dobro|izvajalec.komentar.slabo|leto")
dd_izv_komentarji <- dd_izv_komentarji[grepl(desired.cols, colnames(dd_izv_komentarji))]
## KOMENTARJI ?tudentov ZA IZVAJALCA PRI PREDMETU
# kjer so tekstovne spremenljivke je na koncu ve?kratkrat kup nepotrebnih presledkov
trim <- function(x) {
gsub(pattern = '^\\s+|\\s+$',
replacement = '',
x = x)
}
# what should be excluded from student comments
junk.komentar <-
c(
NA,
"-1",
"-2",
"-3",
"-4",
"-5",
"-97",
"-98",
"-99",
"-",
"/",
"\\",
".",
"",
"-1: Ni odgovoril",
"-2: Preskok (if)",
"-3: Prekinjeno"
)
text.komentar <-
structure(
c(
"Prosimo, naštejte nekaj najbolj pozitivnih opažanj, povezanih z delom izvajalca/ke pri izvedbi predmeta.",
"Prosimo, naštejte nekaj pomanjkljivosti in predlagajte izboljšave, povezane z delom izvajalca/ke pri izvedbi predmeta."
),
.Names = c("izvajalec.komentar.dobro", "izvajalec.komentar.slabo"
))
izvajalec.komentarji.2015 <- subset(dd_izv_komentarji, leto == "2014-15")
# Zajamemo komentarje, ki jih nato dodamo v poglavju izvajalca "Odgovori na odprta vpra?anja"
data.text.2015 <- lapply(izvajalec.komentarji.2015[c("izvajalec.komentar.dobro","izvajalec.komentar.slabo")], trim) #data.text.2015 <- lapply(dd_izv_komentarji[dd_izv_komentarji$predmet_izvedba==idx,c([gsub(".","_",vars.izvajalec$text$vars, fixed=T)]], trim)
for (textvar in names(data.text.2015)){
# odstranimo neza?elene stringe pri komentarjih
# backslashi v komentarjih so hudo nadle?ni amapk jih zaradi latexTranslate in LL ne moremo takoj zamenjat za \textbackslash
data.text.2015[[textvar]] <- gsub(pattern='\\\\', replacement='!backslash!',
x=data.text.2015[[textvar]][!data.text.2015[[textvar]] %in% junk.komentar])
}
tex.text.2015 <- NULL
for (textvar in names(data.text.2015)) {
komentarji <- data.text.2015[[textvar]]
if (length(komentarji) > 0) { # ?e je kak?en komentar
komentarji <- reports::LL(text=Hmisc::latexTranslate(komentarji), copy2clip=FALSE, enumerate=FALSE) # Zapis komentarjev, ki naj ne bodo o?tevil?eni (enumerate=FALSE)
komentarji <- gsub(pattern='!backslash!', replacement='\\\\textbackslash ', x=komentarji)
tex.text.2015 <- append(tex.text.2015 , append(paste('\\textbf{', text.komentar[[textvar]], '}', sep=''), komentarji))
} else {
tex.text.2015 <- append(tex.text.2015 , append(paste('\\textbf{', text.komentar[[textvar]], '}', sep=''),
'\\newline - Ni podanih komentarjev. \\newline \\newline')) # \\newline zaradi preglednosti
}
}
tex.text.2015 <- c("\\textbf{\\large {Komentarji študentov za študijsko leto 2014/2015}} \\newline \\newline",tex.text.2015)
izvajalec.komentarji.2016 <- subset(dd_izv_komentarji, leto == "2015-16")
# Zajamemo komentarje, ki jih nato dodamo v poglavju izvajalca "Odgovori na odprta vpra?anja"
data.text.2016 <- lapply(izvajalec.komentarji.2016[c("izvajalec.komentar.dobro","izvajalec.komentar.slabo")], trim) #data.text.2016 <- lapply(dd_izv_komentarji[dd_izv_komentarji$predmet_izvedba==idx,c([gsub(".","_",vars.izvajalec$text$vars, fixed=T)]], trim)
for (textvar in names(data.text.2016)){
# odstranimo neza?elene stringe pri komentarjih
# backslashi v komentarjih so hudo nadle?ni amapk jih zaradi latexTranslate in LL ne moremo takoj zamenjat za \textbackslash
data.text.2016[[textvar]] <- gsub(pattern='\\\\', replacement='!backslash!',
x=data.text.2016[[textvar]][!data.text.2016[[textvar]] %in% junk.komentar])
}
tex.text.2016 <- NULL
for (textvar in names(data.text.2016)) {
komentarji <- data.text.2016[[textvar]]
if (length(komentarji) > 0) { # ?e je kak?en komentar
komentarji <- reports::LL(text=Hmisc::latexTranslate(komentarji), copy2clip=FALSE, enumerate=FALSE) # Zapis komentarjev, ki naj ne bodo o?tevil?eni (enumerate=FALSE)
komentarji <- gsub(pattern='!backslash!', replacement='\\\\textbackslash ', x=komentarji)
tex.text.2016 <- append(tex.text.2016 , append(paste('\\textbf{', text.komentar[[textvar]], '}', sep=''), komentarji))
} else {
tex.text.2016 <- append(tex.text.2016 , append(paste('\\textbf{', text.komentar[[textvar]], '}', sep=''),
'\\newline - Ni podanih komentarjev. \\newline \\newline')) # \\newline zaradi preglednosti
}
}
tex.text.2016 <- c("\\textbf{\\large {Komentarji študentov za študijsko leto 2015/2016}} \\newline \\newline",tex.text.2016)
izvajalec.komentarji.2017 <- subset(dd_izv_komentarji, leto == "2016-17")
# Zajamemo komentarje, ki jih nato dodamo v poglavju izvajalca "Odgovori na odprta vpra?anja"
data.text.2017 <- lapply(izvajalec.komentarji.2017[c("izvajalec.komentar.dobro","izvajalec.komentar.slabo")], trim) #data.text.2017 <- lapply(dd_izv_komentarji[dd_izv_komentarji$predmet_izvedba==idx,c([gsub(".","_",vars.izvajalec$text$vars, fixed=T)]], trim)
for (textvar in names(data.text.2017)){
# odstranimo neza?elene stringe pri komentarjih
# backslashi v komentarjih so hudo nadle?ni amapk jih zaradi latexTranslate in LL ne moremo takoj zamenjat za \textbackslash
data.text.2017[[textvar]] <- gsub(pattern='\\\\', replacement='!backslash!',
x=data.text.2017[[textvar]][!data.text.2017[[textvar]] %in% junk.komentar])
}
tex.text.2017 <- NULL
for (textvar in names(data.text.2017)) {
komentarji <- data.text.2017[[textvar]]
if (length(komentarji) > 0) { # ?e je kak?en komentar
komentarji <- reports::LL(text=Hmisc::latexTranslate(komentarji), copy2clip=FALSE, enumerate=FALSE) # Zapis komentarjev, ki naj ne bodo o?tevil?eni (enumerate=FALSE)
komentarji <- gsub(pattern='!backslash!', replacement='\\\\textbackslash ', x=komentarji)
tex.text.2017 <- append(tex.text.2017 , append(paste('\\textbf{', text.komentar[[textvar]], '}', sep=''), komentarji))
} else {
tex.text.2017 <- append(tex.text.2017 , append(paste('\\textbf{', text.komentar[[textvar]], '}', sep=''),
'\\newline - Ni podanih komentarjev. \\newline \\newline')) # \\newline zaradi preglednosti
}
}
tex.text.2017 <- c("\\textbf{\\large {Komentarji študentov za študijsko leto 2016/2017}} \\newline \\newline",tex.text.2017)
izvajalec.komentarji.2018 <- subset(dd_izv_komentarji, leto == "2017-18")
# Zajamemo komentarje, ki jih nato dodamo v poglavju izvajalca "Odgovori na odprta vpra?anja"
data.text.2018 <- lapply(izvajalec.komentarji.2018[c("izvajalec.komentar.dobro","izvajalec.komentar.slabo")], trim) #data.text.2018 <- lapply(dd_izv_komentarji[dd_izv_komentarji$predmet_izvedba==idx,c([gsub(".","_",vars.izvajalec$text$vars, fixed=T)]], trim)
for (textvar in names(data.text.2018)){
# odstranimo neza?elene stringe pri komentarjih
# backslashi v komentarjih so hudo nadle?ni amapk jih zaradi latexTranslate in LL ne moremo takoj zamenjat za \textbackslash
data.text.2018[[textvar]] <- gsub(pattern='\\\\', replacement='!backslash!',
x=data.text.2018[[textvar]][!data.text.2018[[textvar]] %in% junk.komentar])
}
tex.text.2018 <- NULL
for (textvar in names(data.text.2018)) {
komentarji <- data.text.2018[[textvar]]
if (length(komentarji) > 0) { # ?e je kak?en komentar
komentarji <- reports::LL(text=Hmisc::latexTranslate(komentarji), copy2clip=FALSE, enumerate=FALSE) # Zapis komentarjev, ki naj ne bodo o?tevil?eni (enumerate=FALSE)
komentarji <- gsub(pattern='!backslash!', replacement='\\\\textbackslash ', x=komentarji)
tex.text.2018 <- append(tex.text.2018 , append(paste('\\textbf{', text.komentar[[textvar]], '}', sep=''), komentarji))
} else {
tex.text.2018 <- append(tex.text.2018 , append(paste('\\textbf{', text.komentar[[textvar]], '}', sep=''),
'\\newline - Ni podanih komentarjev. \\newline \\newline')) # \\newline zaradi preglednosti
}
}
tex.text.2018 <- c("\\textbf{\\large {Komentarji študentov za študijsko leto 2017/2018}} \\newline \\newline",tex.text.2018)

View File

@ -1,160 +0,0 @@
# Created by Miha 30.10.2019 #
#-------------------------- NAROČILO FDV ------------------------------#
# Ker se imena stari hali novih programov podvajajo
# v poročilih ni razvidno za kateri program gre,
# zato bomo le za FDV programe ločil glede na ID, in sicer
# Programe bomo poimenovali v vseh bazah in šifrantu programov
# Družboslovna informatika UNI stari program ima ID = 1000229
# Družboslovna informatika UNI prenovljeni program ima ID = 1001021
prenPredh <- function(data, program, idprog) {
# DRUŽBOSLOVNA INFORMATIKA PRENOVLJENI PREDHODNI
data[,program] <-
ifelse(
data[,idprog] == "1000229",
"Družboslovna informatika (predhodni)",
ifelse(
data[,idprog] == "1001021",
"Družboslovna informatika (prenovljeni)",
#------------------------------#
# KOMUNIKOLOGIJA - MEDIJSKE IN KOMUNIKACIJSKE ŠTUDIJE
ifelse(
data[,idprog] == "1000237",
"Komunikologija - medijske in komunikacijske študije (predhodni)",
ifelse(
data[,idprog] == "1001023",
"Komunikologija - medijske in komunikacijske študije (prenovljeni)",
#---------------------------------
# KOMUNIKOLOGIJA - TRŽNO KOMUNICIRANJE IN ODNOSI Z JAVNOSTMI
ifelse(
data[,idprog] == "1000238",
"Komunikologija - tržno komuniciranje in odnosi z javnostmi (predhodni)",
ifelse(
data[,idprog] == "1001022",
"Komunikologija - Tržno komuniciranje in odnosi z javnostmi (prenovljeni)",
#---------------------------------
# KULTUROLOGIJA
ifelse(
data[,idprog] == "1001024",
"Kulturologija - Študije kultur in ustvarjalnosti (prenovljeni)",
ifelse(
data[,idprog] == "1000232",
"Kulturologija (predhodni)",
#---------------------------------
# MEDNAORDNI ODNOSI
ifelse(
data[,idprog] == "1000233",
"Mednarodni odnosi (predhodni)",
ifelse(
data[,idprog] == "1001026",
"Mednarodni odnosi (prenovljeni)",
#---------------------------------
# NOVINARSTVO
ifelse(
data[,idprog] == "1000234",
"Novinarstvo (predhodni)",
ifelse(
data[,idprog] == "1001025",
"Novinarstvo (prenovljeni)",
#---------------------------------
# POLITOLOGIJA - OBRAMBOSLOVJE
ifelse(
data[,idprog] == "1000239",
"Politologija - obramboslovje (predhodni)",
ifelse(
data[,idprog] == "1001029",
"Obramboslovje (prenovljeni)",
#---------------------------------
# Politologija - Javne politike in uprava
ifelse(
data[,idprog] == "1000235",
"Politologija - študije demokracije in upravljanja (predhodni)",
ifelse(
data[,idprog] == "1001031",
"Politologija - Javne politike in uprava (prenovljeni)",
#---------------------------------
# Politologija - študije politike in države
ifelse(
data[,idprog] == "1000230",
"Politologija študije politike in države (predhodni)",
ifelse (
data[,idprog] == "1001030",
"Politologija študije politike in države (prenovljeni)",
#---------------------------------
# Sociologija - analitska sociologija
ifelse (
data[,idprog] == "1000231",
"Analitska sociologija (predhodni)",
ifelse(
data[,idprog] == "1001027",
"Sociologija (prenovljeni)",
#---------------------------------
# Sociologija -kadrovski medžment
ifelse (
data[,idprog] == "1000240",
"Sociologija - upravljanje organizacij, človeških virov in znanja (predhodni)",
ifelse (
data[,idprog] == "1001028",
"Sociologija - kadrovski menedžment (prenovljeni)",
#---------------------------------
ifelse (
data[,idprog] == "1000236",
"Evropske študije - družboslovni vidiki (predhodni)",
ifelse (
data[,idprog] == "1000241",
"Družboslovna informatika (predhodni)",
data[,program]
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
return(data)
}
#-------------------------- NAROČILO FDV ------------------------------#
#------------------- OZNAKE OSTALIH STALIH PROGRMOV ČLANIC --------------------#
# UPDATE 2.11.2019: Vasja želi da se v vseh poročilih, kjer nastopajo
# študijski programi pred programom izpiše tudi oznake BD, BP, B1 ali B2
# BD oziroma BP pomenijo bolonjski dodiplomski oziroma podiplomski študij.
# Podobno se oznake B1 in B2 nanašajo na (morebitni) prenovljeni
# študij na prvi/dodiplomski in drugi/podiplomski stopnji.
# # Iz imena predmetov vzamemo podatke o tem ali gre za novi ali stari predmet
# prog.othr <- function(data) {
# # Stari ali nohi programi glede na ime predmeta
# pred.time <- substr(data$predmet, 1, 3)
# # Odstranimo nepotrebne pike ".BD"
# pred.time <- gsub("\\.", "", pred.time)
# # In nepotrebne presledke
# pred.time <- gsub(" ", "", pred.time, fixed = TRUE)
# #K imenom (pred) programov dodamo nove oznake
# data$program <-
# paste(pred.time, data$program, sep = " ")
#
# return(data)
# }
# prog.othr(data_po_izpitu)
#----------------- //OZNAKE OSTALIH STALIH PROGRMOV ČLANIC// ------------------#

View File

@ -1,49 +0,0 @@
semester.leto <- "Študijsko leto 2018/19" # Prikaz na prvi strani PDF poro?ila pod naslovom in v nogi
# V primeru, da v poro?ilu za izvajalca nosilec predmeta ?eli videti tudi ocene soizvajalca
nosilci_soizvajalcev <- TRUE
omejeniIzvajalci <- TRUE # ali naj omeji poro?ila samo na dolo?ene izvajalce. Uporabmo v primeru testiranja poro?il
omejeniIzvajalciSifre <- c("3000021_FDV_321") # katere glede na vrstico zgoraj
minEnot <- 4 # najmanj?e ?tevilo odgovorov, kjer se poka?e rezultat, ko ne gre za anlize po skupinah
izvedba_v_imenu <- FALSE # na koncu imena predmeta doda ?e 1Z, 2P ipd. Da se lo?ijo tisti ki so v obeh semestrih. (sifrant$IZVEDBA)
oblikovanje_izvedbe <- FALSE # should first page have izvedba, semester text
#Barvanje st. studentov, ?t.odgovorov, % odgovorov, itd, v tabelah za povpre?ja komponent
#FDVstopnjaPobarvanka <- list(dodiplomski="NE", podiplomski="NE", skupaj="NE")
FDVstopnjaPobarvanka <- list(dodiplomski="30,40,Inf,Inf", podiplomski="30,40,Inf,Inf", skupaj="30,40,Inf,Inf",
st.stud="5,10,Inf,Inf", n.anket="5,10,Inf,Inf", sodelu.pct="10,25,Inf,Inf", zavr.pct="0,0,50,75")
#za 3,4,Inf,Inf -> manj kot 3 je bold rede?e, 3 ali ve? in manj kot 4 je samo rde?e, Inf, Inf pomeni da ni zgornje meje za barvanja.
#za 2.4,2.7,3.3,3.6 -> manj kot 2.4 je bold rede?e, 2.4 ali ve? in manj kot 2.7 je samo rde?e, 3.3 ali ve? in manj?e kot 3.6 je samo rde?e, ve? kot 3.6 je bold rde?e
#Vrednosti 3,4,Inf,Inf so definirane v navodila_dodatno-UTF-8.r, vrednosti 2.4,2.7,3.3,3.6 pa v excelovi datoteki Navodila.
pobarvankaPredmSkupaj <- "3,4,Inf,Inf"
pobarvankaIzvSkupaj <- "3,4,Inf,Inf"
# Zaokro?evanje povpre?ij v tabelah
decimalkePredmSkupaj <- 1 # zaokro?imo na eno decimalko
decimalkeIzvSkupaj <- 1 # zaokro?imo na eno decimalko
# what should be excluded from student comments
junk.komentar <- c(NA,"-1","-2","-3","-4","-5","-97","-98","-99","-","/","\\",".","","-1: Ni odgovoril","-2: Preskok (if)","-3: Prekinjeno", "#NAME?")
# strings to be used for semester specific calculations in metodology (this values present specific semester in sifrant$SEMESTER_IZV)
prvi_semester <- c("zimski", "prvi semester", 1)
drugi_semester <- c("letni", "drugi semester", "celoletni", 2, 3)
# NOT USING THIS NOW #
# evaluations start/end dates for methodology (T1 1st semester start, T2 end; T3 2nd semester start, T4 end)
metod_T1 <- "T1"
metod_T2 <- "T2"
metod_T3 <- "T3"
metod_T4 <- "T4"
# //NOT USING THIS NOW// #
#ZA PORO?ILA ZA KATEDRE
#katedre <- read.csv2("Evalvacija/temp/miha_test.csv",sep=";", header=T, fill=T,stringsAsFactors=FALSE)
#katedre <- katedre[-which(katedre$Katedra == ""), ]
#katedre<-katedre[!is.na(katedre$Katedra),]

View File

@ -1,115 +0,0 @@
# Created by Miha, 24. 1. 2019
# ZDRUŽEVANJE PREDMETOV AG #
# Na željo AG bomo predmete, ki so nam jih poslali v
# bazi "predmeti_za zdruzit_AG.csv" združili zaradi
# majhnega števila študentov in odgovorov, posledično pa
# izvajalci ne dobijo poročil. Ravno tako smo#
# minimalno število odgovorov (4), da izpišemo povprečja zmanjšali
# na 3
library(dplyr)
# Preberemo trenutni šifrant predmetov
sifrantAG <- read.csv2("Evalvacija/temp/sifrant_AG.csv", header = TRUE, stringsAsFactors = FALSE)
# Preberemo šifrant predmetov, kjer so predmeti, ki ji bom združili
# To datoteko smo dobili s strani AG
novaImena <- read.csv2("Evalvacija/temp/AG_zdruzeno.csv", header = TRUE, stringsAsFactors = FALSE)
# Uredimo še IDP (šifr epredmetov, ki mi jih Peter posebej pripravi)
novaImena$IDP <-
ifelse(novaImena$NACIN_STUDIJA == "1",
paste0(novaImena$IDP, "_1"),
paste0(novaImena$IDP, "_2"))
# Oba šifranta združimo, da dobimo nova imena predmetov
novsifrant <- merge(sifrantAG, novaImena, by = "IDP", sort = FALSE)
# Preuredimo stolpce
novsifrant <- novsifrant[,c(1:11, 23)]
colnames(novsifrant) <- gsub(".x","", colnames(novsifrant))
# Odstrani podvojene vrednosti (podvojene predmete in izvajalce, ki jih izvajajo)
novsifrant <- dplyr::distinct(novsifrant)
novsifrant <- novsifrant[!duplicated(novsifrant[c("IDP", "IDPEDAGOGA")]),]
# Kjer so polja stolpca "Nova_imena_predmetov" prazna pomeni, da ne gre za predmete,
# ki jih je potrebno združit
novsifrant$Nova_imena_predmetov[novsifrant$Nova_imena_predmetov == ""] <- NA
# Pogledamo, kateri so to
novsifrant$novaimena <- ifelse(is.na(novsifrant$Nova_imena_predmetov), novsifrant$PREDMET, novsifrant$Nova_imena_predmetov)
# za vse predmete, ki jih je potrebno združit bomo naredili novo podnmnožico, saj jim
# bomo pripisali tudi ustrezno število študentov, nove ID-je, nov način študija in tudi novo
# stopnjo študija (ker gre za za predmete, ki se izvajajo tako na I kot na II stopnji, ji je potrebno
# zaradi združitve v en sam predmet poenotiti)
novi.predm <- subset(novsifrant, !is.na(Nova_imena_predmetov))
# Izračunamo število študentov za agregirane predmete (grupiramo po imenih in unikatnih IDP)
studenti <- novi.predm %>%
filter(!duplicated(IDP)) %>%
group_by(novaimena) %>%
summarise(count = sum(ST_STUD)) %>%
as.data.frame()
# Zdruzimo nov sifrant in novo stevilo studentov
zdruzeno <- merge(novsifrant, studenti, by = "novaimena", sort = FALSE, all = TRUE )
# Zapišemo novo število študentov
zdruzeno$ST_STUD <- ifelse(!is.na(zdruzeno$count), zdruzeno$count, zdruzeno$ST_STUD)
zdruzeno$PREDMET <- zdruzeno$novaimena
zdruzeno$novaimena <- NULL
zdruzeno$NACIN_STUDIJA <- ifelse(!is.na(zdruzeno$count), 1, zdruzeno$NACIN_STUDIJA)
zdruzeno$ST_KT <- ifelse(!is.na(zdruzeno$count), 5, zdruzeno$ST_KT)
zdruzeno$STOPNJA <- ifelse(!is.na(zdruzeno$count), 1, zdruzeno$STOPNJA)
zdruzeno$SEMESTER_IZV <- ifelse(!is.na(zdruzeno$count), 3, zdruzeno$SEMESTER_IZV)
zdruzeno <- zdruzeno[!duplicated(zdruzeno[c("NAZIV.PEDAGOGA", "count")]),]
# Predmetom dodamo nove ID-je glede na IMENA
# Vzeli bomo ID-je, ki se nanašajo na združene predmete ostlai bodo ostali nespremenjeni
zdruzeno <- zdruzeno %>%
mutate(IDP1 = group_indices_(zdruzeno, .dots=c("PREDMET")))
# Združeno bazo povežemo še z bazama: ANKETA PRED IZPITOM IN ANKETA PO IZPITU
# v TEH DVEH BAZAM MORAMO ZAMENJATI ŠE IMENA IN ŠIFRE PREDMETOV DA BODO USTREZLAI NAŠI
# NOVI BAZI
# Preberemo podatke
anketa.pred <- read.csv2("Evalvacija/temp/anketa_pred_izp_AG.csv", header = TRUE, stringsAsFactors = FALSE)
anketa.po <- read.csv2("Evalvacija/temp/anketa_po_izpitu_AG.csv", header = TRUE, stringsAsFactors = FALSE)
# Združimo z novo bazo "zdruzeno"
anketaPRED <- merge(anketa.pred, zdruzeno, by.x = "sifpredm", by.y = "IDP", sort = FALSE)
# V bazo ANKETA PRED dodamo nove šifre predmetov
anketaPRED$sifpredm <- ifelse(is.na(anketaPRED$count), anketaPRED$sifpredm, anketaPRED$IDP1)
# Združene predmete tudi enotno poimenujemo
anketaPRED$predmet <- anketaPRED$PREDMET
# Poenotimo način študija, da bo povsod enak, v nasprotnem primeru, bo združen predmet tretiran
# kot dva predmeta
anketaPRED$nacinstud <- ifelse(!is.na(anketaPRED$count), 1, anketaPRED$nacinstud)
# poenotimo tudi število kreditnih točk
anketaPRED$stkt <- ifelse(!is.na(anketaPRED$count), 5, anketaPRED$stkt)
# Bazo shranimo v direktorij, kjer imamo shranjene podatke za analize
write.csv2(anketaPRED,"Evalvacija/temp/anketaPRED.csv")
# Na enak nači naredimo še za ANKETO PO izpitu
anketaPO <- merge(anketa.po, zdruzeno, by.x = "sifpredm", by.y = "IDP", sort = FALSE)
anketaPO$sifpredm <- ifelse(is.na(anketaPO$count), anketaPO$sifpredm, anketaPO$IDP1)
anketaPO$predmet <- anketaPO$PREDMET
anketaPO$nacinstud <- ifelse(!is.na(anketaPO$count), 1, anketaPO$nacinstud)
anketaPO$stkt <- ifelse(!is.na(anketaPO$count), 5, anketaPO$stkt)
write.csv2(anketaPO,"Evalvacija/temp/anketaPO.csv")
# V nov šifrant Dodamo še nove šifre predmetov in jo zapišemo
zdruzeno$IDP <- ifelse(is.na(zdruzeno$count), zdruzeno$IDP, zdruzeno$IDP1)
# Na tem mestu je še pomembno, da v kolikor gre za združene predmete, naredimo, kot
# da so vsi izvajalci nosilci, tako bodo vsi dobili svoje poročilo. Ker nismo določili
# kdo je nosilec
zdruzeno$NOSILEC <- ifelse(!is.na(zdruzeno$count), 1, zdruzeno$NOSILEC)
# Zapišemo bazo.
write.csv2(zdruzeno,"Evalvacija/temp/sifrantAG.csv")
# Prepišemo baze in šifrant za potrebe računanja
sifrant <- zdruzeno
data_pred_izpitom <- anketaPRED
data_po_izpitu <- anketaPO

View File

@ -1,89 +0,0 @@
# Generiramo csv datoteki za izvajalce in predmete, kjer so povpre?ja komponent po ?tudijskih letih #
library(plyr)
# Save pdf outputs
dir.create('output', showWarnings=FALSE)
##################
#predmeti
##################
imena.datotek <- c('povprecja.predmeti_2016.csv', 'povprecja.predmeti_2017.csv')
# kaj doda v prvo vrstico glede na vrstni red zgoraj podanih datotek
letnice <- c('2015-16','2016-17')
tabele <- NULL
stevec <- 0
for (tabela in imena.datotek) {
stevec <- stevec + 1
temp.tabela <- read.csv2(tabela, header=TRUE, sep=';', stringsAsFactors=FALSE, dec=',')
temp.tabela <- temp.tabela[2:ncol(temp.tabela)] # prva kolona so zaporedne ?tevilke
tabele[[tabela]] <- cbind(leto=letnice[stevec], temp.tabela)
}
imena <- NULL
zdruzeno <- NULL
for (tabela in names(tabele)) {
imena <- c(imena, tabele[[tabela]]$ime)
stetje <- table(tabele[[tabela]]$ime)
pojavitve.imena.v.letu <- as.numeric(stetje[match(tabele[[tabela]]$ime, names(stetje))])
tabele[[tabela]] <- cbind(tabele[[tabela]], pojavitve.imena.v.letu)
write.csv2(tabele[[tabela]], file=paste('output/', tabela, sep=''))
if (is.null(zdruzeno)) {zdruzeno <- tabele[[tabela]]
} else {zdruzeno <- rbind.fill(zdruzeno, tabele[[tabela]])}
}
imena.sifre <- data.frame(cbind(unique(imena), 1001:(1000+length(unique(imena)))))
colnames(imena.sifre) <- c('ime.predmeta', 'nova.sifra')
write.csv2(imena.sifre, file='output/imena+nove.sifre.csv', row.names=FALSE)
nova.sifra <- imena.sifre$nova.sifra[match(zdruzeno$ime, imena.sifre$ime.predmeta)]
zdruzeno <- cbind(zdruzeno, nova.sifra)
#write.csv2(zdruzeno, file='output/zdruzeno.csv', row.names=FALSE)
# ?e ?t. let in izvedb
frekvence <- t(table(zdruzeno$leto, zdruzeno$nova.sifra))
st.let <- as.numeric(rowSums(frekvence>0))
st.izvedb <- as.numeric(rowSums(frekvence))
st.let.izvedb <- cbind(as.numeric(rownames(frekvence)), st.let, st.izvedb)
st.let.izvedb <- st.let.izvedb[match(zdruzeno$nova.sifra, st.let.izvedb[,1]),2:3]
st.let.izvedb <- cbind(zdruzeno, st.let.izvedb)
write.csv2(st.let.izvedb, file='output/zdruzeno.predmeti.csv', row.names=FALSE)
#######
# frekvence predmetov po letih
frekvence <- t(table(zdruzeno$leto, zdruzeno$nova.sifra))
vsota <- as.numeric(rowSums(frekvence))
imena <- zdruzeno$ime[match(as.numeric(rownames(frekvence)), zdruzeno$nova.sifra)]
frekvence <- cbind(frekvence, vsota, imena)
write.csv2(frekvence, file='output/frekvence.predmeti.csv')
##################
#izvajalci
##################
imena.datotek <- c('povprecja.izvajalci_2016.csv','povprecja.izvajalci_2017.csv')
letnice <- c('2015-16','2016-17')
predmeti <- read.csv2('output/zdruzeno.predmeti.csv', header=TRUE, sep=';', stringsAsFactors=FALSE, dec=',')
izvajalci <- NULL
stevec <- 0
for (tabela in imena.datotek) {
stevec <- stevec + 1
temp.tabela <- read.csv2(tabela, header=TRUE, sep=';', stringsAsFactors=FALSE, dec=',')
temp.tabela <- temp.tabela[2:ncol(temp.tabela)] # prva kolona so zaporedne številke
temp.tabela <- cbind(leto=letnice[stevec], temp.tabela)
izvajalci <- rbind.fill(izvajalci, temp.tabela)
}
nova.sifra.predmeta <- predmeti$nova.sifra[match(izvajalci$predmet.sifra, predmeti$predmet.sifra)]
izvajalci <- cbind(izvajalci, nova.sifra.predmeta)
write.csv2(izvajalci, file='output/zdruzeno.izvajalci.csv', row.names=FALSE)

View File

@ -1,73 +0,0 @@
# POROÈILA PREDMETOV
source("Evalvacija/R/koda-predmet.r")
#############################
# /GENERIRANJE tex delov/
#############################
#######################################################################################
# SESTAVLJANJE in KOMPILACIJA .tex datotek
#######################################################################################
tex.glava <- scan('Evalvacija/latexkosi/a-glava-predmet.tex', character(0), sep='\n', quiet=TRUE,encoding='UTF-8') #encoding='UTF-8' (ÈŽŠ ji)
tex.glava <- gsub(pattern='!logo!', replacement = Hmisc::latexTranslate(logo), x = tex.glava) # Logo fakultete
tex.glava <- gsub(pattern='!ime.fak!', replacement=Hmisc::latexTranslate(ime.fakultete), x=tex.glava) #V naslovnici izpis imena fakultete
tex.glava <- gsub(pattern='!leto!', replacement=Hmisc::latexTranslate(semester.leto), x=tex.glava) #Izpis imena leta semestra
tex.glava <- gsub(pattern='!encoding_r!', tolower(gsub("-","",localeToCharset(locale=Sys.getlocale("LC_CTYPE")))), x=tex.glava)
tex.noga <- scan('Evalvacija/latexkosi/z-noga.tex', character(0), sep='\n', quiet=TRUE, encoding='UTF-8')
Rdirektorij <- getwd()
# REPORTI PREDMETOV #
for (predmet in names(predmeti)){
tex.izvajalci.predmet <- NULL
predmet.temp <- subset(povprecja.predmeti, predmet.sifra==predmet)
if (!is.null(part$predmet[[predmet]]$pojasniloPremaloEnot)) { # Ä<>e obstaja pojasnilo da analiza ni narejena zaradi premalo enot
tex.parti <- part$predmet[[predmet]]$pojasniloPremaloEnot
} else {
tex.part.predmet <- c(part$predmet[[predmet]]$cont, "\\newpage", part$predmet[[predmet]]$krediti, "\\newpage",part$predmet[[predmet]]$kompetence1,"\\newpage",
"\\section{Analiza po programih in letnikih}", part$predmet[[predmet]]$BySmerLetnik, "\\newpage","\\section{Odgovori na odprta vprašanja}", part$predmet[[predmet]]$text)
for (izvajalec in as.character(predmeti[[predmet]]$izvajalci)){
if (!is.null(part$izvajalec[[izvajalec]][[predmet]]$pojasniloPremaloEnot)) { # Ä<>e obstaja pojasnilo da analiza ni narejena zaradi premalo enot
tex.part.predmet.izvajalec <- c(part$izvajalec[[izvajalec]][[predmet]]$pojasniloPremaloEnot, "\\newpage")
tex.part.izvajalecBySmerLetnik <- NULL
} else {
tex.part.predmet.izvajalec <- c("\\subsection{Komponente pedagoškega dela}", part$izvajalec[[izvajalec]][[predmet]]$cont, "\\newpage")
tex.part.izvajalecBySmerLetnik <- c('\\subsection{Analiza po smereh in letnikih}', part$izvajalec[[izvajalec]][[predmet]]$BySmerLetnik)
}
tex.naslov.izvajalca <- paste('\\section{', izvajalci[[izvajalec]]$ime, '}', sep='')
tex.izvajalci.predmet <- c(tex.izvajalci.predmet, tex.naslov.izvajalca, tex.part.predmet.izvajalec, tex.part.izvajalecBySmerLetnik, "\\newpage")
}
tex.parti <- c("\\newpage",
'\\section{Ocene iz ankete PRED in ankete PO izpitu}', tex.part.predmet
)
}
tex.glava.predmet <- gsub(pattern='!naslov!', replacement=Hmisc::latexTranslate(gsub('_', '\\_', predmet.temp$ime.predmeta[1], fixed=TRUE)), x=tex.glava)
if (predmet.temp$STOPNJA[1]==1) {
stopnjaText <- 'Dodiplomski študij'
} else if (predmet.temp$STOPNJA[1]==2) {
stopnjaText <- 'Podiplomski študij'
} else {stopnjaText <- ''}
tex.glava.predmet <- gsub(pattern='\\hfillprostorZaStopnjoStudija', replacement=Hmisc::latexTranslate(stopnjaText), tex.glava.predmet, fixed=TRUE)
if (oblikovanje_izvedbe) {
tex.glava.predmet <- gsub(pattern='\\hfillprostorZaIzvedbo', replacement=oblikujIzvedbo(predmet.temp$IZVEDBA, predmet.temp$SEMESTER_IZV), tex.glava.predmet, fixed=TRUE)
}
tex.report.predmet <- c(tex.glava.predmet, "\\newpage",
"\\setlength{\\tabcolsep}{4pt}", part$predmet[[predmet]]$povzetek, part$predmet[[predmet]]$kvantili, "\\newpage", "\\setlength{\\tabcolsep}{6pt}",
'\\chapter{Podrobne analize}',
part$predmet[[predmet]]$response,
tex.parti,"\\newpage",
tex.noga)
cat(tex.report.predmet, file=paste("Evalvacija/results/predmet_", predmet,"_", fakulteta, ".tex", sep=""), sep="\n")
setwd(paste(Rdirektorij, "Evalvacija/results", sep="/"))
tools::texi2pdf(file=paste("predmet_", predmet,"_", fakulteta, ".tex", sep=""), quiet=TRUE, clean=TRUE)
setwd(Rdirektorij)
}
# /REPORTI PREDMETOV/ #

View File

@ -1,281 +0,0 @@
# run first
#params <- commandArgs(trailingOnly=TRUE)
#ID <- params[1]
#sesionID <- params[2] #Dodajanje števil na koncu pdf/tex datotek za Petra
#source("Evalvacija/R/koda.r")
sortByAverage <- TRUE # if true sort by average, else by name
sortbykrediti<-TRUE #if true sort by krediti (izbor.predmeti.po.redni.krediti, izbor.predmeti.po.izredni.krediti)
# which lecturers and courses should be included (all from predmeti.izbor)
predmeti.izbor <- povprecja.predmeti$predmet.sifra
# making latex file
izbor.tex <- NULL
## course averages ##
izbor.predmeti <- subset(povprecja.predmeti, predmet.sifra %in% predmeti.izbor)
completeFun <- function(data, desiredCols) {
completeVec <- complete.cases(data[, desiredCols])
return(data[completeVec, ])
}
izbor.predmeti <- completeFun(izbor.predmeti, "ime.predmeta")
if (nrow(izbor.predmeti) > 0) {
rownames(izbor.predmeti) <- make.unique(povprecja.predmeti[rownames(izbor.predmeti), "ime.predmeta"])
#POROÈILO ZA PREDMETE KI VSEBUJEJO PRAKSO
izbor.predmeti.praksa1 <- izbor.predmeti[c("ST_STUD","N_anket_po_izpitu","sodelujocih.pct_po_izpitu",
"zavrnjenih.pct_po_izpitu","neodzivnih.pct_po_izpitu",
paste0(vars.predmet$cont$praksa,"_mean"),
"predmet.ocena.SKUPAJ.praksa", "PRAKSA")]
izbor.predmeti.praksa1 <- izbor.predmeti[izbor.predmeti$PRAKSA==1 ,"predmet.sifra"]
part <- NULL
predmeti <- NULL
if (all(!is.na(izbor.predmeti.praksa1))) {
for (predmet in as.character(izbor.predmeti.praksa1)) {
povprecja.predmet.temp <- subset(povprecja.predmeti, predmet.sifra==predmet)
data.predmet.temp <- subset(data.predmeti, predmet.sifra==predmet & (veljavna | veljavna_po_izpitu))
## stopnja sodelovanja ##
sodelujocih <- povprecja.predmet.temp$N_anket
stopnjaPredmeta <- povprecja.predmet.temp$STOPNJA
if (stopnjaPredmeta==1) {
FDVstring <- c('dodiplomskih', paste(fakulteta, "povpreèje\n(dodiplomski)"))
} else if (stopnjaPredmeta==2) {
FDVstring <- c('podiplomskih', paste(fakulteta, "povpreèje\n(podiplomski)"))
} else {
warning(paste('predmet', povprecja.predmet.temp$ime.predmeta, 'ni ne 1. ne 2. stopnja'))
FDVstring <- ''
}
imepredmeta <- sub("^BD |^BP ", "", povprecja.predmet.temp$ime.predmeta) # ime brez BD/BP predpone
pdf(paste('Evalvacija/results/part-predmet-slike/', predmet, '_dejmoprobat5.pdf', sep=''), family='sans', pointsize=9, width=6, height=3.25)
par(mar=(c(4, 4, 1, 13) + 0.1), mgp=c(3, 2, 0), xpd=TRUE)
## Make the matrix for barplot
mat.po <- cbind(c(povprecja.predmet.temp$sodelujocih.pct_po_izpitu, povprecja.predmet.temp$zavrnjenih.pct_po_izpitu, povprecja.predmet.temp$neodzivnih.pct_po_izpitu),
c(FDVpredmeti[as.character(stopnjaPredmeta),"sodelujocih.pct_po_izpitu"], FDVpredmeti[as.character(stopnjaPredmeta),"zavrnjenih.pct_po_izpitu"],
FDVpredmeti[as.character(stopnjaPredmeta),"neodzivnih.pct_po_izpitu"]))
## Get the y-values for text
ys.po <- apply(mat.po, 2, function(x) c(x[1]/2, head(cumsum(x),-1) + tail(x,-1)/2))
## Make barplot, store x data
xs.po <- barplot(mat.po, names.arg=c('Predmet\n', FDVstring[2]), col=c("firebrick3", "dodgerblue3", "mistyrose1"), ylim=c(0,100), space=c(0,1))
## Add text
text(rep(xs.po, each=nrow(ys.po)), c(ys.po), labels=paste0(round(c(mat.po), 0),"%"))
legend("topright", inset=c(-0.55, 0), legend=c("Ni pristopil", "Zavrnili sodelovanje", "Odgovarjal"), col=c("mistyrose1", "dodgerblue3", "firebrick3"), lty=1, lwd=2, bty='n')
dev.off()
# Tekst
tex.sodelovanje1 <- c(paste0("Na evalvacijski vprašalnik o študijski praksi za predmet \\guillemotright ",
imepredmeta, "\\guillemotleft \\ PO izpitu je (vsaj deloma) odgovarjalo ",
paste0(povprecja.predmet.temp$N_anket_po_izpitu), " od skupno ",
povprecja.predmet.temp$ST_STUD,
" študentov, kar je \\textbf{", round(povprecja.predmet.temp$sodelujocih.pct_po_izpitu),
"\\%} vseh vpisanih študentov. ",
"Povpreèje ", FDVstring[1], " predmetov ", fakulteta, " je sicer
znašalo \\textbf{", round(FDVpredmeti[as.character(stopnjaPredmeta),
"sodelujocih.pct_po_izpitu"]), "\\%}."),
"\\begin{figure}[H]", "\\caption{Struktura študentov glede na odgovarjanje (\\%) - študijska praksa}",
paste0("\\centerline{\\includegraphics[width=0.85\\textwidth]{part-predmet-slike/",
predmet, "_dejmoprobat5.pdf}}"), "\\end{figure}")
# Generiranje tabel
tabela.praksa <- cbind.data.frame(
N=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_N")]),
mean=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_mean")]),
sd=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_sd")]),
min=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_min")]),
max=as.numeric(povprecja.predmet.temp[paste0(vars.predmet$cont$praksa,"_max")]))
povprecja.praksa <- tabela.praksa$mean
tabela.praksa[is.na(tabela.praksa)] <- "."
if (min(as.numeric(tabela.praksa$N)) < minEnot) {
opomba <- '{\\footnotesize { Podatek ni prikazan zaradi majhnega števila enot.}}'
} else {opomba <- "{\\footnotesize {}}"}
FDVcont.praksa <- data.frame(vars.predmet$cont$meansFDV[vars.predmet$cont$praksa])
colnames(FDVcont.praksa) <- 'FDVcont.praksa'
tabela.praksa <- cbind(tabela.praksa, FDVcont.praksa)
tabela.praksa <- rbind(tabela.praksa, c('', povprecja.predmet.temp$predmet.ocena.SKUPAJ.praksa, '', '', '', mean(tabela.praksa$FDVcont.praksa, na.rm=TRUE)))
tabela.contR.praksa <- formatNA(tabela.praksa, decimalke=c(0,1,1,0,0,1), pobarvanka=c("NE",pobarvankaPredmSkupaj,"NE","NE","NE",pobarvankaPredmSkupaj), na.repl=".")
rownames(tabela.contR.praksa) <- c(Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.dolgo[vars.predmet$cont$praksa])), '\\hline\n\\textbf{Skupaj}')
# rownames(tabela.contR)[length(vars.predmet$cont$ime.dolgo[vars.predmet$cont$pred]) + 1] <- paste0("\\hline\n", rownames(tabela.contR)[length(vars.predmet$cont$ime.dolgo[vars.predmet$cont$pred]) + 1]) # a line seperating questions before/after exam
colnames(tabela.contR.praksa) <- c('n', 'povpreèje', 'sd', 'min', 'max', 'povpreèje')
tabela.contR.praksa.tex1 <- capture.output(Hmisc::latex(toLatex(tabela.contR.praksa),
caption="Povpreèje komponent študijske prakse (lestvica 1-5)",
rowlabel='',
file='',
where='H',
cgroup=c("Predmet", fakulteta),
n.cgroup=c(5,1),
col.just=rep_len('c', ncol(tabela.contR.praksa)),
rowlabel.just='p{9.5cm}',
insert.bottom=opomba))
if (sum(!is.na(povprecja.praksa)) < 4) {povprecja.praksa <- povprecja.praksa[!is.na(povprecja.praksa)] <-NA} # èe so bile 3 zaporedne vrednosti je nastala èudna ærta zato reèeno da naj bodo najmanj 4
radar.cont <- data.frame(rbind(5, 1, t(cbind(FDVcont.praksa, as.numeric(povprecja.praksa)))), row.names=1:4, check.names=F)
colnames(radar.cont) <- sub(" ", "\n", as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa]))
radar.f <- radar.cont
star.radar2 <- as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa])
colnames(radar.f) <- sub(" ", "\n", star.radar2)
CairoPDF(paste('Evalvacija/results/part-predmet-slike/', predmet, '_radar.pdf', sep=''), family='sans', pointsize=9, width=6, height=4)
par(mar=(c(0, 4, 1, 6) + 0.1), xpd=TRUE)
fmsb::radarchart(radar.f, pcol=c('dodgerblue3','firebrick3'), cglcol='gray75', plwd=2, plty=1, cglwd=1, cglty=1, seg=4, axistype=1, caxislabels=c(1:5), axislabcol='gray25', centerzero=TRUE)
legend('topright', inset=c(-0.15, 0), legend=c("Predmet", paste(fakulteta, "povpreèje")), col=c('firebrick3', 'dodgerblue3'), lty=1, lwd=2, bty='n')
dev.off()
# Porazdelitev odgovorov
porazdelitev1 <- t(sapply(data.predmet.temp[,vars.predmet$cont$praksa], function(x) table(factor(x, levels=predmet.someMiss))))
# samo kjer je dovolj enot
porazdelitev1[rowSums(porazdelitev1) < minEnot,] <- NA
porazdelitev1 <- cbind(porazdelitev1, rowSums(porazdelitev1, na.rm=TRUE))
porazdelitev1 <- formatNA(data.frame(porazdelitev1, stringsAsFactors=FALSE), decimalke=0, na.repl=".")
##
rownames(porazdelitev1) <- c(Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa])))
colnames(porazdelitev1) <- c("\\textbf{1}","\\textbf{2}","\\textbf{3}","\\textbf{4}","\\textbf{5}","\\textbf{Ne želim odgovoriti}","\\textbf{Nimam dovolj informacij}","\\textbf{Skupaj}")
porazdelitev1.tex <- capture.output(Hmisc::latex(porazdelitev1, caption='Podrobna porazdelitev odgovorov za ocene komponent \\textbf{študijske prakse}', rowlabel='\\textbf{Komponente}', file='', where='H', col.just=rep_len('c', ncol(porazdelitev1)), insert.bottom=opomba))
## /podrobna porazdelitev1 ocen/ ##
data.text1 <- lapply(data.predmet.temp[vars.predmet$text$vars[-c(1,2,3)]], trim)
for (textvar in names(data.text1)){
# odstranimo nezaželene stringe pri komentarjih
# backslashi v komentarjih so hudo nadležni amapk jih zaradi latexTranslate in LL ne moremo takoj zamenjat za \textbackslash
data.text1[[textvar]] <- gsub(pattern='\\\\', replacement='!backslash!', x=data.text1[[textvar]][!data.text1[[textvar]] %in% junk.komentar])
}
tex.text1 <- NULL
for (textvar in names(data.text1)) {
komentarji <- data.text1[[textvar]]
if (length(komentarji) > 0) { # èe je kakšen komentar
komentarji <- reports::LL(text=Hmisc::latexTranslate(komentarji), copy2clip=FALSE, enumerate=FALSE)
komentarji <- gsub(pattern='!backslash!', replacement='\\\\textbackslash ', x=komentarji)
komentarji <- gsub(pattern='€', replacement='e', x=komentarji)
komentarji <- gsub(pattern='…', replacement='...', x=komentarji)
tex.text1 <- append(tex.text1, append(paste('\\subsection{', vars.predmet$text$ime.dolgo[[textvar]], '}', sep=''), komentarji))
} else {
tex.text1 <- append(tex.text1, append(paste('\\subsection{', vars.predmet$text$ime.dolgo[[textvar]], '}', sep=''), '- Ni podanih komentarjev. -'))
}
}
# tex.sodelovanje2 <- c(paste0("Na evalvacijski vprašalnik o študijski praksi za predmet \\guillemotright ", imepredmeta, "\\guillemotleft \\ PO izpitu je (vsaj deloma) odgovarjalo ", paste0(povprecja.predmet.temp$N_anket_po_izpitu), " od skupno ", povprecja.predmet.temp$ST_STUD, " študentov, kar je \\textbf{", round(povprecja.predmet.temp$sodelujocih.pct_po_izpitu), "\\%} vseh vpisanih študentov. ",
# "Povpreèje ", FDVstring[1], " predmetov ", fakulteta, " je sicer znašalo \\textbf{", round(FDVpredmeti[as.character(stopnjaPredmeta),"sodelujocih.pct_po_izpitu"]), "\\%}."),
# "\\begin{figure}[H]", "\\caption{Struktura študentov glede na odgovarjanje (\\%) - študijska praksa}", paste0("\\centerline{\\includegraphics[width=0.85\\textwidth]{part-predmet-slike/", predmet, "_dejmoprobat5.pdf}}"), "\\end{figure}")
part$predmet[[predmet]]<-c(paste0("\\chapter{", imepredmeta, paste0(" (",gsub('_', '\\_', predmet, fixed=T), ")"),"}", sep=""),"\\section{Podrobne analize odgovorov}",tabela.contR.praksa.tex1, "\\begin{figure}[H]", "\\caption{Povpreèja kategorij odgovorov za komponente \\textbf{prakse}}", paste0('\\centerline{\\includegraphics[width=0.85\\textwidth]{part-predmet-slike/', predmet, '_radar.pdf}}'), "\\end{figure}",
porazdelitev1.tex, tex.text1)
}
izbor.predmeti.praksa <- izbor.predmeti[c("ST_STUD","N_anket_po_izpitu","sodelujocih.pct_po_izpitu",
"zavrnjenih.pct_po_izpitu","neodzivnih.pct_po_izpitu",
paste0(vars.predmet$cont$praksa,"_mean"),"predmet.ocena.SKUPAJ.praksa",
"PRAKSA","predmet.sifra")]
izbor.predmeti.praksa <- izbor.predmeti[izbor.predmeti$PRAKSA==1 ,c("ST_STUD","N_anket_po_izpitu",
"sodelujocih.pct_po_izpitu",
"zavrnjenih.pct_po_izpitu",
"neodzivnih.pct_po_izpitu",
paste0(vars.predmet$cont$praksa,"_mean"),
"predmet.ocena.SKUPAJ.praksa","predmet.sifra")]
if(nrow(izbor.predmeti.praksa) > 0) {
rownames(izbor.predmeti.praksa) <- c(paste0(rownames(izbor.predmeti.praksa),paste0(" (",gsub('_', '\\_', izbor.predmeti.praksa$predmet.sifra),")")))
}
izbor.predmeti.praksa <- izbor.predmeti.praksa[,-which(names(izbor.predmeti.praksa) == "predmet.sifra")]
if (nrow(izbor.predmeti.praksa) > 0) {
# PRED - redni
if (any(is.na(izbor.predmeti.praksa))) {opomba <- c(". Podatek ni prikazan zaradi majhnega števila enot.",
"- Podatek je manj pomemben ali težko izraèunljiv.")} else {opomba <- "- Podatek je manj pomemben ali težko izraèunljiv."}
if (sortByAverage) {
izbor.predmeti.praksa <- izbor.predmeti.praksa[order(izbor.predmeti.praksa$predmet.ocena.SKUPAJ.praksa, izbor.predmeti.praksa$N_anket_po_izpitu, decreasing=TRUE),]
rownames(izbor.predmeti.praksa) <- formatProgImena(rownames(izbor.predmeti.praksa), izbor.predmeti.praksa$predmet.ocena.SKUPAJ.praksa)
} else { # sort by name
izbor.predmeti.praksa <- izbor.predmeti.praksa[order(rownames(izbor.predmeti.praksa), decreasing=FALSE),]
}
izbor.predmeti.praksa <- rbind(izbor.predmeti.praksa, colMeans(izbor.predmeti.praksa, na.rm=TRUE))
izbor.predmeti.praksa <- formatNA(izbor.predmeti.praksa, decimalke=c(0,0,0,0,0,as.numeric(vars.predmet$cont$decimalke[vars.predmet$cont$praksa]),decimalkePredmSkupaj), pobarvanka=c("NE","NE","NE","NE","NE", vars.predmet$cont$pobarvanka[vars.predmet$cont$praksa], povprecje.ocen.praksa=pobarvankaPredmSkupaj), na.repl=".")
rownames(izbor.predmeti.praksa)[nrow(izbor.predmeti.praksa)] <- "\\hline \\textbf{Povpreèje fakultete (študijska praksa)}"
colnames(izbor.predmeti.praksa) <- latex.rotate(c("št. vpisanih", "št. odgovorov", "\\% odgovorov", "\\% zavrnitev", "\\% nesodelujoèih", Hmisc::latexTranslate(as.character(vars.predmet$cont$ime.kratko[vars.predmet$cont$praksa])), "\\textbf{Skupaj}"))
izbor.predmeti.praksa.tex <- c(capture.output(Hmisc::latex(izbor.predmeti.praksa,
caption="Povpreèje komponent študijske prakse (sortirano po povpreèju \\textbf{Skupaj})",
rowlabel="",
file="",
where="H",
multicol=FALSE,
longtable=TRUE,
lines.page=1000,
col.just=c("c","c|","c","c","c|",rep_len("c", length(vars.predmet$cont$praksa)),"|c"),
rowlabel.just="A{5cm}",
insert.bottom=paste0("{\\footnotesize \\textit{", opomba, "}}"))))
} else {
izbor.predmeti.praksa.tex <- "Ni ocen."
}
##############################
} else {
izbor.predmeti.praksa.tex <- "Ni ocen."
}
} else {
izbor.predmeti.praksa.tex <- "Ni ocen."
}
## /course averages/ ##
#################
# GENERIRANJE PDF
################
tex.glava <- scan("Evalvacija/latexkosi/a-glava-praksa.tex", character(0), sep="\n", quiet=TRUE, encoding="UTF-8")
tex.glava <- gsub(pattern='!leto!', replacement=Hmisc::latexTranslate(semester.leto), x=tex.glava)
tex.glava <- gsub(pattern='!logo!', replacement=Hmisc::latexTranslate(logo), x=tex.glava) # Logo fakultete
tex.glava <- gsub(pattern='!naslov!', replacement=Hmisc::latexTranslate(ime.fakultete), x=tex.glava)
tex.noga <- scan("Evalvacija/latexkosi/z-noga.tex", character(0), sep="\n", quiet=TRUE)
Rdirektorij <- getwd()
izbor.tex <- c("\\chapter{Študijska praksa}", if(any(izbor.predmeti.praksa.tex !="Ni ocen.")) {c("Navedena so povpreèja ocen študentov,
ki so pri predmetih opravjali študijsko prakso.
Na lestvici od 1 do 5 (1 = sploh se ne strinjam
oziroma sploh nisem zadovoljen/zadovoljna; 5 =
popolnoma se strinjam oziroma sem zelo zadovoljen/zadovoljna)
so ocenjevali kakovost študijske prakse.",
izbor.predmeti.praksa.tex)} else {"Za študijsko prakso ni ocen."})
izbor.tex <- gsub('(continued)', '(nadaljevanje)', izbor.tex, fixed=TRUE)
tex.izbor <- c(tex.glava, izbor.tex, part$predmet, "\\newpage", tex.okvir, tex.noga)
# Ker uporabljamo ukaz LONGTABLE, se pri lomljenju tabel pojavlja
if (sortByAverage) {sortiranjetext <- "po_povprecju"} else {sortiranjetext <- "po_imenih"}
setwd(paste(Rdirektorij, "Evalvacija/results", sep="/"))
#write.table(tex.izbor, file=paste0("Praksa_", sortiranjetext,"_", fakulteta, ".tex"), sep="\t",append=F)
cat(unlist(tex.izbor), file=paste0("Praksa_", sortiranjetext,"_", fakulteta, ".tex"), sep="\n")
#lapply(unlist(tex.izbor), write, file=paste0("Praksa_", sortiranjetext,"_", fakulteta, ".tex"), append=TRUE, ncolumns=1000)
tools::texi2pdf(file=paste0("Praksa_", sortiranjetext,"_", fakulteta, ".tex"), quiet=TRUE, clean=TRUE)
setwd(Rdirektorij)

View File

@ -1,238 +0,0 @@
library(data.table)
sortByAverage <- TRUE # if true sort variable values and rownames in tables by average, else by lecturer's name
sortbykrediti<-TRUE # if true sort values in tables by values of komponent Ustreznost KT (izbor.predmeti.po.redni.krediti, izbor.predmeti.po.izredni.krediti)
# which lecturers and courses should be included (all from predmeti.izbor and those from izvajalci.izbor that are also in predmeti.izbor)
predmeti.izbor <- povprecja.predmeti$predmet.sifra
izvajalci.izbor <- unique(povprecja.izvajalci$izvajalec.sifra)
formatProgImena <- function(imena, rankby) {
imena <- gsub(" (izredna izvedba)", "", imena, fixed=TRUE)
ranking <- rank(-suppressWarnings(rankby), ties="first", na.last="keep")
ranking[is.na(ranking)] <- ""
imena <- paste0( ranking, imena)
imena <- paste( imena)
return(imena)
}
###################################
# EXCEL ÈLANICE
###################################
#####################
# VSI IZVAJALCI FAKULTETE
####################
izbor.izvajalci <- subset(povprecja.izvajalci, predmet.sifra %in% predmeti.izbor & izvajalec.sifra %in% izvajalci.izbor)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("red. prof. dr. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("zn. svet. dr. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("le. mag. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("le. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("izr. prof. dr. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("dr. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("doc. dr. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("asist. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("akad. prof. dr. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("asist. dr. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("pred. mag. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("mag. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("izr. prof. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("doc. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("akad. prof. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("prof. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("viš. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
izbor.izvajalci$NAZIV.PEDAGOGA <- gsub("pred. ","",izbor.izvajalci$NAZIV.PEDAGOGA,fixed=TRUE)
# Vrednosti komponent izvajalcev agregiramo glede na šifro izvajalca in ime izvajalca in izraèunamo povpreèje
izbor.izvajalci.skupaj <- aggregate(izbor.izvajalci[c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")],
by=izbor.izvajalci[c("izvajalec.sifra", "NAZIV.PEDAGOGA")], FUN=mean, na.rm=TRUE)
st.predmetov <- aggregate(izbor.izvajalci$N_anket >= minEnot,
by=izbor.izvajalci["izvajalec.sifra"], FUN=sum, na.rm=TRUE) # how many courses each lecturer has with enough answers
# Združimo število predmetov s povpreèji komponent glede na šifro izvajalca
izbor.izvajalci.skupaj <- merge(st.predmetov, izbor.izvajalci.skupaj, by="izvajalec.sifra", all=TRUE, sort=FALSE)
if (sortByAverage) {# if true sort variable values and rownames in tables by average, else by name
rownames(izbor.izvajalci.skupaj) <- formatProgImena(izbor.izvajalci.skupaj$NAZIV.PEDAGOGA, izbor.izvajalci.skupaj$izvajalec.ocena.SKUPAJ)
rownames(izbor.izvajalci.skupaj) <- make.unique(gsub("([[:digit:]])", "", rownames(izbor.izvajalci.skupaj)))
#rownames(izbor.izvajalci.skupaj) <- gsub("d+", "", rownames(izbor.izvajalci.skupaj))
izbor.izvajalci.skupaj <- izbor.izvajalci.skupaj[order(izbor.izvajalci.skupaj$izvajalec.ocena.SKUPAJ, decreasing=TRUE),
!(colnames(izbor.izvajalci.skupaj) %in% c("izvajalec.sifra", "NAZIV.PEDAGOGA"))] # sort and drop unneeded columns
}
# Zružimo povpreène ocene posameznih komponent vseh izvajalcev z SKUPNIM povpreèjem vseh komponent (colmeans)
izbor.izvajalci.skupaj[2:ncol(izbor.izvajalci.skupaj)] <- round(izbor.izvajalci.skupaj[2:ncol(izbor.izvajalci.skupaj)],1)
colnames(izbor.izvajalci.skupaj)[1] <- "št. predmetov"
colnames(izbor.izvajalci.skupaj)[2] <- "kakovost"
colnames(izbor.izvajalci.skupaj)[3] <- "pripravljenost"
colnames(izbor.izvajalci.skupaj)[4] <- "razumljivost"
colnames(izbor.izvajalci.skupaj)[5] <- "zanimivost"
colnames(izbor.izvajalci.skupaj)[6] <- "kritiènost"
colnames(izbor.izvajalci.skupaj)[7] <- "korektnost"
colnames(izbor.izvajalci.skupaj)[8] <- "SKUPAJ"
setDT(izbor.izvajalci.skupaj, keep.rownames = TRUE)[]
colnames(izbor.izvajalci.skupaj)[1] <- "IZVAJALCI"
write.csv2(izbor.izvajalci.skupaj, paste0("Excel rezultati ",fakulteta," 2016-2017.csv"),row.names = FALSE)
###################################
# IZVAJALCI PRI PREDMETIH FAKULTETE
###################################
rownames(izbor.izvajalci) <- make.unique(paste0(sapply(povprecja.izvajalci[rownames(izbor.izvajalci),"NAZIV.PEDAGOGA"], titula.rm),
" (", povprecja.izvajalci[rownames(izbor.izvajalci),"ime.predmeta"], ")"))
#IPP redni študij (NACIN_STUDIJA == "1")
izbor.izvajalci.redni.izredni <- izbor.izvajalci[c("NACIN_STUDIJA","ST_STUD","N_anket","sodelujocih.pct",
"zavrnjenih.pct","neodzivnih.pct",
paste0(vars.izvajalec$cont$vars,"_mean"),
"izvajalec.ocena.SKUPAJ")]
izbor.izvajalci.redni.izredni <- izbor.izvajalci.redni.izredni[order(izbor.izvajalci.redni.izredni$izvajalec.ocena.SKUPAJ, decreasing=TRUE),]
rownames(izbor.izvajalci.redni.izredni) <- make.unique(formatProgImena(rownames(izbor.izvajalci.redni.izredni), izbor.izvajalci.redni.izredni$izvajalec.ocena.SKUPAJ))
rownames(izbor.izvajalci.redni.izredni) <- make.unique(gsub("^[[:digit:]]+", "", rownames(izbor.izvajalci.redni.izredni)))
# Združimo vrstice: povpreèje komponent izvajalcev in skupno povpreèje komponent izvajalcev
izbor.izvajalci.redni.izredni[,c(2:6)] <- round(izbor.izvajalci.redni.izredni[,2:6],0)
izbor.izvajalci.redni.izredni[7:ncol(izbor.izvajalci.redni.izredni)] <- round(izbor.izvajalci.redni.izredni[7:ncol(izbor.izvajalci.redni.izredni)],1)
colnames(izbor.izvajalci.redni.izredni)[1] <- "stopnja (1=BD, 2=PB)"
colnames(izbor.izvajalci.redni.izredni)[2] <- "št. vpisanih"
colnames(izbor.izvajalci.redni.izredni)[3] <- "št. odgovorov"
colnames(izbor.izvajalci.redni.izredni)[4] <- "% odgovorov"
colnames(izbor.izvajalci.redni.izredni)[5] <- "% zavrnitev"
colnames(izbor.izvajalci.redni.izredni)[6] <- "% nesodelujoèih"
colnames(izbor.izvajalci.redni.izredni)[7] <- "kakovost"
colnames(izbor.izvajalci.redni.izredni)[8] <- "pripravljenost"
colnames(izbor.izvajalci.redni.izredni)[9] <- "razumljivost"
colnames(izbor.izvajalci.redni.izredni)[10] <- "zanimivost"
colnames(izbor.izvajalci.redni.izredni)[11] <- "kritiènost"
colnames(izbor.izvajalci.redni.izredni)[12] <- "korektnost"
colnames(izbor.izvajalci.redni.izredni)[13] <- "SKUPAJ"
setDT(izbor.izvajalci.redni.izredni, keep.rownames = TRUE)[]
colnames(izbor.izvajalci.redni.izredni)[1] <- "IZVAJALCI PRI PREDMETIH"
write.csv2(izbor.izvajalci.redni.izredni,paste0(fakulteta,"IPP.csv"),row.names = F)
###################################
# PREDMETI (ANKETA PRED IZPITOM)
###################################
izbor.predmeti <- subset(povprecja.predmeti, predmet.sifra %in% predmeti.izbor) # Izberemo predmete, ki so imeli dovolj enot
povprecja.predmeti <- povprecja.predmeti[!(is.na(povprecja.predmeti$ime.predmeta)), ]
rownames(izbor.predmeti) <- make.unique(povprecja.predmeti[rownames(izbor.predmeti), "ime.predmeta"])
# Loèimo povpreèje komponent predmetov PRED in PO izpitu na REDNI in IZREDNi ŠTUDIJ, na podalgi katerih nato delamo LATEX tabele
izbor.predmeti.pred.redni.izredni <- izbor.predmeti[c("NACIN_STUDIJA","ST_STUD","N_anket","sodelujocih.pct",
"zavrnjenih.pct","neodzivnih.pct",
paste0(vars.predmet$cont$pred,"_mean"),
"predmet.ocena.SKUPAJ.pred")]
izbor.predmeti.pred.redni.izredni <- izbor.predmeti.pred.redni.izredni[order(izbor.predmeti.pred.redni.izredni$predmet.ocena.SKUPAJ.pred,
izbor.predmeti.pred.redni.izredni$N_anket, decreasing=TRUE),]
rownames(izbor.predmeti.pred.redni.izredni) <- make.unique(formatProgImena(rownames(izbor.predmeti.pred.redni.izredni),
izbor.predmeti.pred.redni.izredni$predmet.ocena.SKUPAJ.pred))
rownames(izbor.predmeti.pred.redni.izredni) <- make.unique(gsub("^[[:digit:]]+", "", rownames(izbor.predmeti.pred.redni.izredni)))
izbor.predmeti.pred.redni.izredni[,c(2:6)] <- round(izbor.predmeti.pred.redni.izredni[,c(2:6)],0)
izbor.predmeti.pred.redni.izredni[7:ncol(izbor.predmeti.pred.redni.izredni)] <- round(izbor.predmeti.pred.redni.izredni[7:ncol(izbor.predmeti.pred.redni.izredni)],1)
colnames(izbor.predmeti.pred.redni.izredni)[1] <- "stopnja (1=BD, 2=PB)"
colnames(izbor.predmeti.pred.redni.izredni)[2] <- "št. vpisanih"
colnames(izbor.predmeti.pred.redni.izredni)[3] <- "št. odgovorov"
colnames(izbor.predmeti.pred.redni.izredni)[4] <- "% odgovorov"
colnames(izbor.predmeti.pred.redni.izredni)[5] <- "% zavrnitev"
colnames(izbor.predmeti.pred.redni.izredni)[6] <- "% nesodelujoèih"
colnames(izbor.predmeti.pred.redni.izredni)[7] <- "zadovoljstvo"
colnames(izbor.predmeti.pred.redni.izredni)[8] <- "usklajenost"
colnames(izbor.predmeti.pred.redni.izredni)[9] <- "samostojnost"
colnames(izbor.predmeti.pred.redni.izredni)[10] <- "literatura"
colnames(izbor.predmeti.pred.redni.izredni)[11] <- "obvešèenost"
colnames(izbor.predmeti.pred.redni.izredni)[12] <- "informiranost"
colnames(izbor.predmeti.pred.redni.izredni)[13] <- "preverjanje"
colnames(izbor.predmeti.pred.redni.izredni)[14] <- "SKUPAJ"
setDT(izbor.predmeti.pred.redni.izredni, keep.rownames = TRUE)[]
colnames(izbor.predmeti.pred.redni.izredni)[1] <- "PREDMETI (ANKETA PRED)"
write.csv2(izbor.predmeti.pred.redni.izredni,paste0(fakulteta,"PREDMET_PRED.csv"),row.names = FALSE)
###################################
# PREDMETI (ANKETA PO IZPITU)
###################################
izbor.predmeti.po.redni.izredni <- izbor.predmeti[c("NACIN_STUDIJA","ST_STUD","N_anket_po_izpitu","sodelujocih.pct_po_izpitu",
"zavrnjenih.pct_po_izpitu","neodzivnih.pct_po_izpitu",
paste0(vars.predmet$cont$po,"_mean"),
"predmet.ocena.SKUPAJ.po","predmet.ocena.krediti_mean")]
izbor.predmeti.po.redni.izredni <- izbor.predmeti.po.redni.izredni[order(izbor.predmeti.po.redni.izredni$predmet.ocena.SKUPAJ.po,
izbor.predmeti.po.redni.izredni$N_anket_po_izpitu, decreasing=TRUE),]
rownames(izbor.predmeti.po.redni.izredni) <- make.unique(formatProgImena(rownames(izbor.predmeti.po.redni.izredni),
izbor.predmeti.po.redni.izredni$predmet.ocena.SKUPAJ.po))
#rownames(izbor.predmeti.po.redni.izredni) <- make.unique(gsub("([[:digit:]])", "", rownames(izbor.predmeti.po.redni.izredni)))
rownames(izbor.predmeti.po.redni.izredni) <- make.unique(gsub("^[[:digit:]]+", "", rownames(izbor.predmeti.po.redni.izredni)))
# Ker želimo da sta v tabelah komponenti UTREZNOST KT in KOMPETENCE prikazani na koncu pred generiranjem tabel spremenimo vrstni red
izbor.predmeti.po.redni.izredni <- izbor.predmeti.po.redni.izredni[c(1,2,3,4,5,6,8,9,10,11,7,12)]
# Generiranje LATEX TABELE
izbor.predmeti.po.redni.izredni[,c(2:6)] <- round(izbor.predmeti.po.redni.izredni[,c(2:6)] ,0)
izbor.predmeti.po.redni.izredni[7:ncol(izbor.predmeti.po.redni.izredni)] <- round(izbor.predmeti.po.redni.izredni[7:ncol(izbor.predmeti.po.redni.izredni)],1)
colnames(izbor.predmeti.po.redni.izredni)[1] <- "stopnja (1=BD, 2=PB)"
colnames(izbor.predmeti.po.redni.izredni)[2] <- "št. vpisanih"
colnames(izbor.predmeti.po.redni.izredni)[3] <- "št. odgovorov"
colnames(izbor.predmeti.po.redni.izredni)[4] <- "% odgovorov"
colnames(izbor.predmeti.po.redni.izredni)[5] <- "% zavrnitev"
colnames(izbor.predmeti.po.redni.izredni)[6] <- "% nesodelujoèih"
colnames(izbor.predmeti.po.redni.izredni)[7] <- "vsebine"
colnames(izbor.predmeti.po.redni.izredni)[8] <- "naloge"
colnames(izbor.predmeti.po.redni.izredni)[9] <- "kriteriji"
colnames(izbor.predmeti.po.redni.izredni)[10] <- "SKUPAJ"
colnames(izbor.predmeti.po.redni.izredni)[11] <- "kompetence"
colnames(izbor.predmeti.po.redni.izredni)[12] <- "Ustreznost KT"
setDT(izbor.predmeti.po.redni.izredni, keep.rownames = TRUE)[]
colnames(izbor.predmeti.po.redni.izredni)[1] <- "PREDMETI (ANKETA PO)"
write.csv2(izbor.predmeti.po.redni.izredni,paste0(fakulteta,"PREDMET_PO.csv"),row.names = FALSE)
library(xlsx)
write.xlsx(izbor.izvajalci.skupaj, file=paste0("Excel rezultati_",fakulteta,"_2016_2017.xls"), sheetName="IZVAJALCI", row.names=FALSE)
write.xlsx(izbor.izvajalci.redni.izredni, file=paste0("Excel rezultati_",fakulteta,"_2016_2017.xls"), sheetName="IZVAJALCI PRI PREDMETIH", append=TRUE, row.names=FALSE)
write.xlsx(izbor.predmeti.pred.redni.izredni, file=paste0("Excel rezultati_",fakulteta,"_2016_2017.xls"), sheetName="PREDMETI (ANKETA PRED)", append=TRUE, row.names=FALSE)
write.xlsx(izbor.predmeti.po.redni.izredni, file=paste0("Excel rezultati_",fakulteta,"_2016_2017.xls"), sheetName="PREDMETI (ANKETA PO)", append=TRUE, row.names=FALSE)

View File

@ -1,59 +0,0 @@
#--------------------------------------- AGREGAT SUMARNIH PREDMETOV -------------------------------------------#
# združevanje meta predmetov fakultete za glasbo na podlagi šifrantx X7 oziroma šifranta meta
# predmetov
# jer se definira fiktivne meta-predmete, ki zdruzujejo obstoječe predmete; nakar meta predmet
# nastopi v analizah, npr. Violina 1, Violina 2, Violina 3, vse to se združiv v meta predmete Violina.
# Pri tem gre za združevanje znotraj enega študijskega leta.
# Šifrant metapredmetov X7
sifrantx7 <- read.csv2("Evalvacija/temp/sifrantx7.csv", sep = ";", header = T, fill = T, stringsAsFactors = FALSE)
colnames(sifrantx7)[5] <- "Novoimepredmeta"
# Preverimo katere meta predmete iz šifranta x1 je potrebno združiti glede na šifrant x7 in to naredimo
library(dplyr)
metaPredmeti <- merge(sifrant,sifrantx7[c("ID_predmeta","Predmet","ID.NOVEGA.PREDMETA","Novoimepredmeta")],
by.x ="IDP", by.y= "ID_predmeta", all=F, sort=F ) %>%
mutate(PREDMET = ifelse(PREDMET==Predmet, Novoimepredmeta, PREDMET))
# Različnim predmetom dodelimo skupne lastnosti zato, da ne pride do podvajanja (redni način študija, prva stopnja, itd)
metaPredmeti[c("NACIN_STUDIJA","SEMESTER_IZV","STOPNJA","NOSILEC")] <- 1
skpnoStStudentov <- aggregate(metaPredmeti[c("ST_STUD")], by = metaPredmeti["PREDMET"], FUN = sum, na.rm = TRUE)
metaPredmeti$ST_STUD <- ifelse(metaPredmeti$PREDMET == skpnoStStudentov$PREDMET, skpnoStStudentov$ST_STUD, rev(skpnoStStudentov$ST_STUD))
# Preverimo, katere predmeti so združeni ter jih ustrezno nadomestimu v šifrantu x1: nadomestimo ime predmeta in šifro predmeta
# Ime predmeta
indices <- which(sifrant$PREDMET %in% metaPredmeti$Predmet)
sifrant$PREDMET[indices] <- metaPredmeti$Novoimepredmeta
# Šifra predmeta
indicesIDP <- which(sifrant$IDP %in% metaPredmeti$IDP)
sifrant$IDP[indicesIDP] <- metaPredmeti$ID.NOVEGA.PREDMETA
# Vsem predmetom, ki jih bomo združili v nov predmet dodelimo skupne lastnosti
sifrant$NACIN_STUDIJA[indicesIDP] <- 1 # redni študij
sifrant$SEMESTER_IZV[indicesIDP] <- 1 # prvi semester
sifrant$STOPNJA[indicesIDP] <- 1 # dodiplomski
sifrant$NOSILEC[indicesIDP] <- 1 # nosilec
sifrant$ST_STUD[indicesIDP] <- metaPredmeti$ST_STUD
sifrant <- sifrant[!duplicated(sifrant[c("IDP","IDPEDAGOGA","ST_STUD")]),]
# Podatke združimo in preimenujemo še v bazi 1KA: poenotimo ime predmetov in njihovo šifro v meta predmet
# ANKETA PRED IZPITOM #
library(plyr)
metaPredmet.pred <- full_join(data_pred_izpitom, metaPredmeti, by = c("predmet" = "Predmet"))
data_pred_izpitom$predmet <- ifelse(metaPredmet.pred$sifpredm %in% metaPredmet.pred$IDP, metaPredmet.pred$Novoimepredmeta, metaPredmet.pred$predmet)
data_pred_izpitom$sifpredm <- ifelse(metaPredmet.pred$sifpredm %in% metaPredmet.pred$IDP, metaPredmet.pred$ID.NOVEGA.PREDMETA, metaPredmet.pred$sifpredm)
# ANKETA PO IZPITU #
metaPredmet.po <- full_join(data_po_izpitu, metaPredmeti, by = c("predmet" = "Predmet"))
data_po_izpitu$predmet <- ifelse(metaPredmet.po$sifpredm %in% metaPredmet.po$IDP, metaPredmet.po$Novoimepredmeta, metaPredmet.po$predmet)
data_po_izpitu$sifpredm <- ifelse(metaPredmet.po$sifpredm %in% metaPredmet.po$IDP, metaPredmet.po$ID.NOVEGA.PREDMETA, metaPredmet.po$sifpredm)
#--------------------------------------- //AGREGAT SUMARNIH PREDMETOV// -------------------------------------------#

View File

@ -1,56 +0,0 @@
#--------------------------------------- AGREGAT SUMARNIH PREDMETOV -------------------------------------------#
# združevanje meta predmetov fakultete za glasbo na podlagi šifrantx X7 oziroma šifranta meta
# predmetov
# jer se definira fiktivne meta-predmete, ki zdruzujejo obstoječe predmete; nakar meta predmet
# nastopi v analizah, npr. Violina 1, Violina 2, Violina 3, vse to se združiv v meta predmete Violina.
# Pri tem gre za združevanje znotraj enega študijskega leta.
# Šifrant metapredmetov X7
sifrantx7 <- read.csv2("Evalvacija/temp/sifrantx7.csv", sep = ";", header = T, fill = T, stringsAsFactors = FALSE)
colnames(sifrantx7)[5] <- "Novoimepredmeta"
sifrantx7 <- sifrantx7[!(duplicated(sifrantx7$ID_predmeta) & duplicated(sifrantx7$Predmet)), ]
# Preverimo katere meta predmete iz šifranta x1 je potrebno združiti glede na šifrant x7 in to naredimo
library(dplyr)
metaPredmeti <- merge(sifrant,sifrantx7[c("ID_predmeta","Predmet","ID.NOVEGA.PREDMETA","Novoimepredmeta")],
by.x ="IDP", by.y= "ID_predmeta", all=F, sort=F ) %>%
mutate(PREDMET = ifelse(PREDMET==Predmet, Novoimepredmeta, PREDMET))
# Različnim predmetom dodelimo skupne lastnosti zato, da ne pride do podvajanja (redni način študija, prva stopnja, itd)
metaPredmeti[c("NACIN_STUDIJA","SEMESTER_IZV","STOPNJA","NOSILEC")] <- 1
# Preverimo, katere predmeti so združeni ter jih ustrezno nadomestimu v šifrantu x1: nadomestimo ime predmeta in šifro predmeta
# Ime predmeta
# metapredmetiUN <- metaPredmeti[!(duplicated(metaPredmeti$NAZIV.PEDAGOGA) & duplicated(metaPredmeti$Predmet)), ]
# metaPredmeti <- metapredmetiUN
#
sifrant <- sifrant[!duplicated(sifrant[c("IDP","IDPEDAGOGA","ST_STUD")]),]
# Podatke združimo in preimenujemo še v bazi 1KA: poenotimo ime predmetov in njihovo šifro v meta predmet
# ANKETA PRED IZPITOM #
library(plyr)
metaPredmet.pred <- full_join(data_pred_izpitom, metaPredmeti, by = c("predmet" = "Predmet"))
data_pred_izpitom$predmet <- ifelse(metaPredmet.pred$sifpredm == metaPredmet.pred$IDP, metaPredmet.pred$Novoimepredmeta, metaPredmet.pred$predmet)
data_pred_izpitom$sifpredm <- ifelse(metaPredmet.pred$sifpredm %in% metaPredmet.pred$IDP, metaPredmet.pred$ID.NOVEGA.PREDMETA, metaPredmet.pred$sifpredm)
# ANKETA PO IZPITU #
metaPredmet.po <- full_join(data_po_izpitu, metaPredmeti, by = c("predmet" = "Predmet"))
data_po_izpitu$predmet <- ifelse(metaPredmet.po$sifpredm %in% metaPredmet.po$IDP, metaPredmet.po$Novoimepredmeta, metaPredmet.po$predmet)
data_po_izpitu$sifpredm <- ifelse(metaPredmet.po$sifpredm %in% metaPredmet.po$IDP, metaPredmet.po$ID.NOVEGA.PREDMETA, metaPredmet.po$sifpredm)
#--------------------------------------- //AGREGAT SUMARNIH PREDMETOV// -------------------------------------------#

View File

@ -1,49 +0,0 @@
semester.leto <- "Študijsko leto 2016/17" # Prikaz na prvi strani PDF poro?ila pod naslovom in v nogi
# V primeru, da v poro?ilu za izvajalca nosilec predmeta ?eli videti tudi ocene soizvajalca
nosilci_soizvajalcev <- TRUE
omejeniIzvajalci <- FALSE # ali naj omeji poro?ila samo na dolo?ene izvajalce. Uporabmo v primeru testiranja poro?il
omejeniIzvajalciSifre <- c("3000021_FDV_321", "3000021_FDV_722", "3000021_FDV_1556") # katere glede na vrstico zgoraj
minEnot <- 4 # najmanj?e ?tevilo odgovorov, kjer se poka?e rezultat, ko ne gre za anlize po skupinah
izvedba_v_imenu <- FALSE # na koncu imena predmeta doda ?e 1Z, 2P ipd. Da se lo?ijo tisti ki so v obeh semestrih. (sifrant$IZVEDBA)
oblikovanje_izvedbe <- FALSE # should first page have izvedba, semester text
#Barvanje st. studentov, ?t.odgovorov, % odgovorov, itd, v tabelah za povpre?ja komponent
#FDVstopnjaPobarvanka <- list(dodiplomski="NE", podiplomski="NE", skupaj="NE")
FDVstopnjaPobarvanka <- list(dodiplomski="30,40,Inf,Inf", podiplomski="30,40,Inf,Inf", skupaj="30,40,Inf,Inf",
st.stud="5,10,Inf,Inf", n.anket="5,10,Inf,Inf", sodelu.pct="10,25,Inf,Inf", zavr.pct="0,0,50,75")
#za 3,4,Inf,Inf -> manj kot 3 je bold rede?e, 3 ali ve? in manj kot 4 je samo rde?e, Inf, Inf pomeni da ni zgornje meje za barvanja.
#za 2.4,2.7,3.3,3.6 -> manj kot 2.4 je bold rede?e, 2.4 ali ve? in manj kot 2.7 je samo rde?e, 3.3 ali ve? in manj?e kot 3.6 je samo rde?e, ve? kot 3.6 je bold rde?e
#Vrednosti 3,4,Inf,Inf so definirane v navodila_dodatno-UTF-8.r, vrednosti 2.4,2.7,3.3,3.6 pa v excelovi datoteki Navodila.
pobarvankaPredmSkupaj <- "3,4,Inf,Inf"
pobarvankaIzvSkupaj <- "3,4,Inf,Inf"
# Zaokro?evanje povpre?ij v tabelah
decimalkePredmSkupaj <- 1 # zaokro?imo na eno decimalko
decimalkeIzvSkupaj <- 1 # zaokro?imo na eno decimalko
# what should be excluded from student comments
junk.komentar <- c(NA,"-1","-2","-3","-4","-5","-97","-98","-99","-","/","\\",".","","-1: Ni odgovoril","-2: Preskok (if)","-3: Prekinjeno", "#NAME?")
# strings to be used for semester specific calculations in metodology (this values present specific semester in sifrant$SEMESTER_IZV)
prvi_semester <- c("zimski", "prvi semester", 1)
drugi_semester <- c("letni", "drugi semester", "celoletni", 2, 3)
# NOT USING THIS NOW #
# evaluations start/end dates for methodology (T1 1st semester start, T2 end; T3 2nd semester start, T4 end)
metod_T1 <- "T1"
metod_T2 <- "T2"
metod_T3 <- "T3"
metod_T4 <- "T4"
# //NOT USING THIS NOW// #
#ZA PORO?ILA ZA KATEDRE
#katedre <- read.csv2("Evalvacija/temp/miha_test.csv",sep=";", header=T, fill=T,stringsAsFactors=FALSE)
#katedre <- katedre[-which(katedre$Katedra == ""), ]
#katedre<-katedre[!is.na(katedre$Katedra),]

Some files were not shown because too many files have changed in this diff Show More