diff --git a/inst/tutorials/Grundlagen/Grundlagen.Rmd b/inst/tutorials/Grundlagen/Grundlagen.Rmd index ff598e6..947ef8a 100644 --- a/inst/tutorials/Grundlagen/Grundlagen.Rmd +++ b/inst/tutorials/Grundlagen/Grundlagen.Rmd @@ -358,6 +358,49 @@ jQuery(document).ready(function() { + + + + + + + + + +document.addEventListener("DOMContentLoaded", function() { + const carousels = document.querySelectorAll(".tip-carousel"); + carousels.forEach(function(carousel) { + const tips = carousel.querySelectorAll(".tip-content"); + const prevBtn = carousel.querySelector(".prev-tip"); + const nextBtn = carousel.querySelector(".next-tip"); + let currentTip = 0; + + function updateCarousel() { + tips.forEach((tip, index) => { + tip.style.display = index === currentTip ? "block" : "none"; + }); + prevBtn.disabled = currentTip === 0; + nextBtn.disabled = currentTip === tips.length - 1; + } + + prevBtn.addEventListener("click", function() { + if (currentTip > 0) { + currentTip--; + updateCarousel(); + } + }); + + nextBtn.addEventListener("click", function() { + if (currentTip < tips.length - 1) { + currentTip++; + updateCarousel(); + } + }); + + updateCarousel(); + }); +}); + @@ -369,16 +412,20 @@ library(psych) library(testthat) library(learnr) library(gradethis) +library(glue) # devtools::load_all() # remotes::install_github("MeikeSteinhilber/otter") # remotes::install_github("rstudio/gradethis") # library(otter) knitr::opts_chunk$set(echo = FALSE) +feedback_message_wrong <- "Der Output stimmt nicht mit der Lösung überein. Eventuell hilft dir der Hinweis: {code_feedback()}" +feedback_message_correct <- 'Richtig! {sample(c("Sehr gut gemacht!", "Perfekte Arbeit!", "Weiter so!", "Wunderbar gemacht!", "Klasse!", "Toller Job!", ""),1)}' + gradethis::gradethis_setup( - # pass.praise = FALSE, + pass.praise = FALSE, # fail.encourage = FALSE, pass = "Richtig!", - code_correct = "Richtig!", + code_correct = glue('Richtig! {sample(c("Sehr gut gemacht!", "Perfekte Arbeit!", "Weiter so!", "Wunderbar gemacht!", "Klasse!", "Toller Job!", ""),1)}'), fail = "Das ist leider falsch.", code_incorrect = "Noch nicht ganz. Hinweis: {code_feedback()} Probiere es noch einmal!" ) @@ -386,8 +433,10 @@ tutorial_options(exercise.reveal_solution = TRUE, exercise.blanks = "___", exercise.eval = FALSE) options( - # gradethis_glue_correct = "{ random_praise() } { .message } { .correct }", - gradethis_glue_correct = "{ .message } { .correct }", + # gradethis.pass = 'Richtig! {gradethis::random_praise(language="de")}', + gradethis.grading_problem.message = "Es ist leider ein Problem mit dem Bewertungscode für diese Übung aufgetreten.", + gradethis_glue_correct = '{sample(c("Sehr gut gemacht!", "Perfekte Arbeit!", "Weiter so!", "Wunderbar gemacht!", "Klasse!", "Toller Job!", ""),1)} { .message } { .correct }', + # gradethis_glue_correct = "{ .message } { .correct }", # gradethis_glue_incorrect = "{ .message } { .incorrect } { random_encourage() }" gradethis_glue_incorrect = "{ .message } { .incorrect }" ) @@ -602,7 +651,7 @@ Gebe dazu die Berechnung in den R Code Bereich ein und klicke auf "Code ausführ ```{r ex-r-vs-tutorial-check, results = "hold", exercise.eval=FALSE} grade_result( pass_if(~identical(.result, 84 * 15)), - glue_correct = "Richtig!", + glue_correct = feedback_message_correct, glue_incorrect = "Leider falsch!" ) ``` @@ -611,14 +660,14 @@ grade_result( ## Variablen -Variablen sind Container für Daten. - -Sie müssen *ausgeführt* werden, um erstellt und genutzt werden zu können. -Nach Erstellung taucht die Variable im *Environment* auf. +Variablen dienen als Speicherorte oder Container für Daten in R. +Sie ermöglichen es, Informationen wie Zahlen, Zeichenketten, Matrizen oder Listen effizient zu speichern und wiederzuverwenden. -Eine Variable kann verschiedene Inhalte enthalten, z. B. eine Zahl, Buchstaben, Matrizen mit Zahlen oder Listen. +Um eine Variable zu erstellen und zu verwenden, muss ihr Name mit einem Wert verknüpft werden, was durch Zuweisung geschieht. +Sobald dies erfolgt ist, erscheint die Variable im *Environment* von R, wo alle aktiven Objekte und deren Inhalte verwaltet werden. -Der Inhalt einer Variable kann auf die *Console* geschrieben werden, wenn der Variablenname ausgeführt wird. +Der Inhalt einer Variable kann in der Console angezeigt werden, indem der Variablenname eingegeben und ausgeführt wird. +Dies ermöglicht es, schnell auf den gespeicherten Wert zuzugreifen und ihn zu überprüfen. ```{r variable-0-1, exercise=TRUE, results = "hold"} # hier wird der Text "Lara" gespeichert in der Variable "name" @@ -686,7 +735,7 @@ variable # grade_result( # pass_if(~identical(.result, print("Heute ist leider kein Personal anwesend!")) # ), -# glue_correct = "Richtig!", +# glue_correct = feedback_message_correct, # glue_incorrect = "Leider noch nicht ganz richtig!" # ) grade_this_code() @@ -934,11 +983,26 @@ grade_result( pass_if(~identical(.result, 5:12 )), - glue_correct = "Richtig!", + glue_correct = feedback_message_correct, glue_incorrect = "Leider noch nicht ganz richtig! Hinweis: Versuche den Operatur : zu nutzen." ) ``` +
Variablen sind Container für Daten.
-Sie müssen ausgeführt werden, um erstellt und genutzt werden -zu können. Nach Erstellung taucht die Variable im Environment -auf.
-Eine Variable kann verschiedene Inhalte enthalten, z. B. eine Zahl, -Buchstaben, Matrizen mit Zahlen oder Listen.
-Der Inhalt einer Variable kann auf die Console geschrieben -werden, wenn der Variablenname ausgeführt wird.
+Variablen dienen als Speicherorte oder Container für Daten in R. Sie +ermöglichen es, Informationen wie Zahlen, Zeichenketten, Matrizen oder +Listen effizient zu speichern und wiederzuverwenden.
+Um eine Variable zu erstellen und zu verwenden, muss ihr Name mit +einem Wert verknüpft werden, was durch Zuweisung geschieht. Sobald dies +erfolgt ist, erscheint die Variable im Environment von R, wo +alle aktiven Objekte und deren Inhalte verwaltet werden.
+Der Inhalt einer Variable kann in der Console angezeigt werden, indem +der Variablenname eingegeben und ausgeführt wird. Dies ermöglicht es, +schnell auf den gespeicherten Wert zuzugreifen und ihn zu +überprüfen.
5:12
+
operator works in R.
+a
and
+b
.
+return()
function.
++
+78
? Nutze zur Beantwortung der Frage eine
Funktion.
@@ -1636,7 +1703,7 @@ Hund
.
blumen <- c("Tulpen", "Rosen", "Hund", "Sonnenblumen", "Hund")
# die erste Zeile soll unverändert bleiben!
# schreibe hier deinen Code
@@ -1660,7 +1727,7 @@ NA
.
blumen <- c("Tulpen", "Rosen", "Hund", "Sonnenblumen", "Hund")
blumen <- c("Tulpen", "Rosen", "Hund", "Sonnenblumen", "Hund")
-blumen[ blumen == "Hund"] <- NA
+blumen[blumen == "Hund"] <- NA
blumen
zahlen <- 1:100
zahlen <- 1:100
nummer_1 <- 1:100
nummer_2 <- 100:1
@@ -1836,7 +1903,7 @@ # Nutze diese Variablen, um den Faktor zu erstellen
monate <- c("Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember")
@@ -2104,14 +2171,14 @@ Listen
Übungen
Aufgabe: Erstelle eine
-Liste aus den drei Objekten und greife auf das zweite Objekt zu.
+Liste aus den drei Objekten.
m <- matrix(1:12, nrow=3, ncol=4)
df <- data.frame(namen = c("Ben", "Claus", "Lisa"),
alter = c(51, 27, 38))
-"Object 3"
+object <- "Object 3"
Übungen
liste <- list(m,
df,
"Object 3")
+liste
+
+Aufgabe: Greife auf den
+Inhalt des zweiten Objektes der Liste zu.
+
+liste <- list("test",
+ matrix(1:12, nrow=3, ncol=4),
+ data.frame(namen = c("A", "B", "C"),
+ alter = c(20, 00, 50)))
+
+
+
+liste <- list("test",
+ matrix(1:12, nrow=3, ncol=4),
+ data.frame(namen = c("A", "B", "C"),
+ alter = c(20, 00, 50)))
liste[[2]]
@@ -3284,7 +3371,7 @@ Übungen
handelt.
+data-lines="8" data-pipe="|>">
tier <- c("Reptil")
print("Es handelt sich um ein Reptil.") # Satz 1
@@ -3414,7 +3501,7 @@ Übungen
ausgibt. Nutze dazu den Code, der bereits angegeben ist.
+data-lines="8" data-pipe="|>">
tiere <- c("Hunde", "Katzen", "Vögel") # diese Zeile nicht ändern
print(paste0("Ich mag ", ____, ".")) # ____ ist ein Platzhalter und muss ersetzt werden
@@ -3487,7 +3574,7 @@ Übungen
angegeben ist.
+data-lines="10" data-pipe="|>">
tiere <- c("Hunde", "Katzen", "Vögel")
results <- character(3)
for (i in 1:length(tiere)) {
@@ -4124,7 +4211,7 @@ Programmierübungen
+data-lines="35" data-pipe="|>">
# Erstelle hier die Funktion zeichne_f()
@@ -4189,16 +4276,20 @@ R Chunk (freies Üben)
library(testthat)
library(learnr)
library(gradethis)
+library(glue)
# devtools::load_all()
# remotes::install_github("MeikeSteinhilber/otter")
# remotes::install_github("rstudio/gradethis")
# library(otter)
knitr::opts_chunk$set(echo = FALSE)
+feedback_message_wrong <- "Der Output stimmt nicht mit der Lösung überein. Eventuell hilft dir der Hinweis: {code_feedback()}"
+feedback_message_correct <- 'Richtig! {sample(c("Sehr gut gemacht!", "Perfekte Arbeit!", "Weiter so!", "Wunderbar gemacht!", "Klasse!", "Toller Job!", ""),1)}'
+
gradethis::gradethis_setup(
- # pass.praise = FALSE,
+ pass.praise = FALSE,
# fail.encourage = FALSE,
pass = "Richtig!",
- code_correct = "Richtig!",
+ code_correct = glue('Richtig! {sample(c("Sehr gut gemacht!", "Perfekte Arbeit!", "Weiter so!", "Wunderbar gemacht!", "Klasse!", "Toller Job!", ""),1)}'),
fail = "Das ist leider falsch.",
code_incorrect = "Noch nicht ganz. Hinweis: {code_feedback()} Probiere es noch einmal!"
)
@@ -4206,8 +4297,10 @@ R Chunk (freies Üben)
exercise.blanks = "___",
exercise.eval = FALSE)
options(
- # gradethis_glue_correct = "{ random_praise() } { .message } { .correct }",
- gradethis_glue_correct = "{ .message } { .correct }",
+ # gradethis.pass = 'Richtig! {gradethis::random_praise(language="de")}',
+ gradethis.grading_problem.message = "Es ist leider ein Problem mit dem Bewertungscode für diese Übung aufgetreten.",
+ gradethis_glue_correct = '{sample(c("Sehr gut gemacht!", "Perfekte Arbeit!", "Weiter so!", "Wunderbar gemacht!", "Klasse!", "Toller Job!", ""),1)} { .message } { .correct }',
+ # gradethis_glue_correct = "{ .message } { .correct }",
# gradethis_glue_incorrect = "{ .message } { .incorrect } { random_encourage() }"
gradethis_glue_incorrect = "{ .message } { .incorrect }"
)
@@ -4245,15 +4338,18 @@ R Chunk (freies Üben)
@@ -5928,17 +6112,17 @@ R Chunk (freies Üben)
@@ -5965,15 +6149,18 @@ R Chunk (freies Üben)
@@ -6207,22 +6403,22 @@ R Chunk (freies Üben)
@@ -6283,15 +6479,18 @@ R Chunk (freies Üben)
@@ -6847,27 +7074,32 @@ R Chunk (freies Üben)
@@ -6905,15 +7138,18 @@ R Chunk (freies Üben)
@@ -7126,26 +7374,31 @@ R Chunk (freies Üben)
@@ -7184,26 +7438,31 @@ R Chunk (freies Üben)
@@ -7243,15 +7502,18 @@ R Chunk (freies Üben)
@@ -7481,15 +7754,18 @@ R Chunk (freies Üben)
+
+
+
+
+
@@ -8933,22 +9365,22 @@ R Chunk (freies Üben)
@@ -8976,15 +9408,18 @@ R Chunk (freies Üben)
@@ -10932,15 +11473,18 @@ R Chunk (freies Üben)
@@ -11319,15 +11883,18 @@ R Chunk (freies Üben)
@@ -11441,15 +12011,18 @@ R Chunk (freies Üben)
@@ -12856,15 +13504,18 @@ R Chunk (freies Üben)
diff --git a/inst/tutorials/Grundlagen/css/style.css b/inst/tutorials/Grundlagen/css/style.css
index ef79f03..88c65ce 100644
--- a/inst/tutorials/Grundlagen/css/style.css
+++ b/inst/tutorials/Grundlagen/css/style.css
@@ -30,6 +30,76 @@ original is from: https://github.com/tidymodels/learntidymodels/tree/main/inst/t
border-color: #CA225E;
}
+.tip summary {
+ background-color: #f2f2f2; /* Neutral background color */
+ border-color: grey;
+ font-size: 11px;
+ display: inline-block; /* Ensures the button adjusts to its content */
+ border-radius: 8px; /* Rounded corners for a modern look */
+ padding: 1px 6px; /* Padding for better spacing */
+ cursor: pointer; /* Pointer cursor for interactivity */
+ font-weight: bold; /* Bold text for emphasis */
+ margin-bottom: 25px;
+ border: 1px solid transparent; /* Border for a cleaner look */
+ transition: background-color 0.3s, transform 0.2s, box-shadow 0.2s; /* Smooth hover and click effects */
+}
+
+.tip summary:hover {
+ border-color: grey;
+ background-color: #e0e0e0; /* Slightly darker shade on hover */
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15); /* Subtle shadow on hover */
+ transform: scale(1.02); /* Slightly enlarge on hover */
+}
+
+.tip summary:active {
+ border-color: grey;
+ background-color: #d6d6d6; /* Darker shade when clicked */
+ transform: scale(0.98); /* Slightly shrink to simulate pressing */
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); /* Subtle shadow change */
+}
+
+.tip details {
+ margin-top: 10px;
+ margin-left: 25px;
+ border-radius: 8px;
+ margin-bottom: 20px;
+ background-color: white !important; /* Keeps the details background consistent */
+}
+
+
+
+.tip-carousel {
+ border: 1px solid #ddd;
+ padding: 15px;
+ margin-top: -15px;
+}
+
+.tip-carousel button {
+ border: 1px solid transparent; /* Border for a cleaner look */
+ border-color: #ddd;
+ background-color: #f2f2f2;
+ color: black;
+ border-radius: 5px;
+ cursor: pointer;
+ font-size: small;
+}
+
+.tip-carousel button:disabled {
+ background-color: white;
+ color: #ddd;
+ cursor: not-allowed;
+}
+
+.tip-carousel .tip-content {
+ margin: 10px 0;
+ font-size: 14px;
+}
+
+.icon-small {
+ width: 40px;
+ height: 40px;
+}
+
/* Default styling */
details {
margin: 0; /* Remove default margins */
diff --git a/inst/tutorials/Grundlagen/images/env_example.png b/inst/tutorials/Grundlagen/images/env_example.png
index e6ccb81..61376ae 100644
Binary files a/inst/tutorials/Grundlagen/images/env_example.png and b/inst/tutorials/Grundlagen/images/env_example.png differ
diff --git a/inst/tutorials/Grundlagen/images/otter_info.png b/inst/tutorials/Grundlagen/images/otter_info.png
new file mode 100644
index 0000000..5533a15
Binary files /dev/null and b/inst/tutorials/Grundlagen/images/otter_info.png differ
diff --git a/inst/tutorials/Grundlagen/images/otter_info.webp b/inst/tutorials/Grundlagen/images/otter_info.webp
new file mode 100644
index 0000000..66b0171
Binary files /dev/null and b/inst/tutorials/Grundlagen/images/otter_info.webp differ
diff --git a/inst/tutorials/Grundlagen/images/otter_info_2.webp b/inst/tutorials/Grundlagen/images/otter_info_2.webp
new file mode 100644
index 0000000..6d6e68d
Binary files /dev/null and b/inst/tutorials/Grundlagen/images/otter_info_2.webp differ
diff --git a/inst/tutorials/Grundlagen/images/otter_symbol.webp b/inst/tutorials/Grundlagen/images/otter_symbol.webp
new file mode 100644
index 0000000..35b80f4
Binary files /dev/null and b/inst/tutorials/Grundlagen/images/otter_symbol.webp differ
diff --git a/inst/tutorials/Grundlagen/images/small_otter.png b/inst/tutorials/Grundlagen/images/small_otter.png
new file mode 100644
index 0000000..1f41d1f
Binary files /dev/null and b/inst/tutorials/Grundlagen/images/small_otter.png differ
diff --git a/inst/tutorials/Grundlagen/images/small_otter2.png b/inst/tutorials/Grundlagen/images/small_otter2.png
new file mode 100644
index 0000000..6287cc1
Binary files /dev/null and b/inst/tutorials/Grundlagen/images/small_otter2.png differ