Commit 345f92a8a15d7d9dfc6cc520f1f3b943d8d5133b

Authored by mjeng
Exists in master

Merge branch 'master' of https://git.ucsd.edu/110swag/docs

Showing 14 changed files Side-by-side Diff

UserStories.tex View file @ 345f92a
... ... @@ -55,8 +55,8 @@
55 55 \item {As a first time user, I want to be able build my deck without going through registration process in class.}
56 56 \item {As an instructor, I want to limit access to the cards for my course.}
57 57 \item {As an instructor, I want to invite students to the class group I created.}
58   -\item {As a student I want to receive notifications without installing an app.}
59   -\item {As a student I want to be able to delete my account.}
  58 +\item {As a student, I want to receive notifications without installing an app.}
  59 +\item {As a student, I want to be able to delete my account.}
60 60 \end{enumerate}
61 61 \newpage
62 62 \section{ Flashcards }
... ... @@ -68,7 +68,7 @@
68 68 \item As a student, I want to edit my card.
69 69 \item As a student, I want to make flashcards quickly
70 70 \item As a student, I want to flag abusive flash cards.
71   -\item As a student I want to see other cards at the time they are added to the feed.
  71 +\item As a student, I want to see other cards at the time they are added to the feed.
72 72 \item As a student, I want to be able to hide unwanted cards from my live feed.
73 73 \end{enumerate}
74 74 \newpage
75 75  
... ... @@ -87,11 +87,11 @@
87 87 \item As a student, I want to be able to study my deck.
88 88 \item As a student, I want to have the app remind me when to review my cards.
89 89 \item As a student, I want to be able to blank out words to make cards.
90   -\item As a student I want to review cards without waiting for a notification.
91   -\item As a student I want to view cards in my deck in the order they were created.
  90 +\item As a student, I want to review cards without waiting for a notification.
  91 +\item As a student, I want to view cards in my deck in the order they were created.
92 92 \item As a student, I want to be able to search/sort/filter for flashcards by date, class, tag, keywords.
93 93 \item As a student, I want to be able to scroll infinitely.
94   -\item As a student I want to use the keyboard to interact with the app.
  94 +\item As a student, I want to use the keyboard to interact with the app.
95 95 \end{enumerate}
96 96 \newpage
97 97 \end{document}
screen_sequence_diagrams/aaa_legend.dot View file @ 345f92a
  1 +digraph G{
  2 + ratio=0.75;
  3 + //rankdir="LR";
  4 + labelloc="t";
  5 + label=" Screen Sequence Diagram Legend";
  6 + node[shape=box, style="rounded,filled,bold"];
  7 +
  8 +
  9 + "Pages"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  10 +
  11 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
  12 + fixedsize=true, width=1.4, height=1.4];
  13 +
  14 + "Actions";
  15 +
  16 + "Requests/Changes"[shape=none];
  17 +
  18 +}
screen_sequence_diagrams/add_class.dot View file @ 345f92a
... ... @@ -6,7 +6,7 @@
6 6 nodesep=1.4;
7 7 labelloc="t";
8 8 label = "[A3] Add a Class";
9   - "Navigation Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  9 + "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
11 11 fixedsize=true, width=1.4, height=1.4];
12 12 "POST /api/sections/{pk}/enroll"[shape=none];
13 13  
14 14  
... ... @@ -21,16 +21,16 @@
21 21 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
22 22 fixedsize=true, width=1.4, height=1.4];
23 23 "WhiteListCheck"[center=true, fillcolor="#aaaaff", style=filled, style=filled];
24   - "Navigation Menu" -> "POST /api/sections/{pk}/enroll"[dir=none];
  24 + "Navbar" -> "POST /api/sections/{pk}/enroll"[dir=none];
25 25 "POST /api/sections/{pk}/enroll" -> "Controller";
26 26 "Controller" -> "FAILURE";
27   - "FAILURE" -> "Navigation Menu";
  27 + "FAILURE" -> "Navbar";
28 28 "Controller" -> "SUCCESS";
29 29 "SUCCESS"->"WhiteListCheck";
30 30 "WhiteListCheck" -> "Permission Denied: \n User cannot be enrolled in class";
31 31 "WhiteListCheck" -> "Success! \n User is added to class";
32   - "Success! \n User is added to class" -> "Navigation Menu";
33   - "Permission Denied: \n User cannot be enrolled in class" -> "Navigation Menu";
  32 + "Success! \n User is added to class" -> "Navbar";
  33 + "Permission Denied: \n User cannot be enrolled in class" -> "Navbar";
34 34  
35 35 }
screen_sequence_diagrams/blank_out_words.dot View file @ 345f92a
... ... @@ -9,7 +9,7 @@
9 9 "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
11 11 fixedsize=true, width=1.4, height=1.4];
12   - "POST /api/flashcards/{pk}"[shape=none]
  12 + "POST /api/flashcards/{pk}"[shape=none]
13 13  
14 14 "View Deck" -> "Flashcard";
15 15 "Flashcard" -> "Edit Flashcard Page";
screen_sequence_diagrams/change_password.dot View file @ 345f92a
... ... @@ -5,23 +5,23 @@
5 5 splines=ortho;
6 6 nodesep=1.4;
7 7 labelloc="t";
8   - label="[A5] Change password & [A6] Reset password";
9   - "Navigation Menu/Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  8 + label="[A5] Change password";
  9 + "Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond];
11   - "POST /api/request_password_reset"[shape=none];
  11 + "PATCH /api/me"[shape=none];
12 12 labelfloat=true;
13 13 lp=100;
14   -
  14 +
15 15 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
16   - fixedsize=true, width=1.4, height=1.4];
17   - "Navigation Menu/Settings" -> "POST /api/request_password_reset"[dir=none];
18   - "POST /api/request_password_reset" -> "Controller";
19   - "Controller" -> "Email";
20   - "Failure: User did not\nchange password"[shape=none];
21   - "Email" -> "Failure: User did not\nchange password";
22   - "Failure: User did not\nchange password" -> "Navigation Menu";
23   - "Success: User \nchanged password"[shape=none];
  16 + fixedsize=true, width=1.4, height=1.4];
  17 + "Failure: User did not\nchange password"[shape=none];
  18 + "Success: User \nchanged password"[shape=none];
  19 +
  20 + "Settings" -> "PATCH /api/me";
  21 + "PATCH /api/me" -> "Controller";
  22 + "Controller" -> "Failure: User did not\nchange password";
  23 + "Failure: User did not\nchange password" -> "Settings";
24 24 "Email" -> "Success: User \nchanged password";
25   - "Success: User \nchanged password" -> "Navigation Menu";
  25 + "Success: User \nchanged password" -> "Settings";
26 26 }
screen_sequence_diagrams/drop_class.dot View file @ 345f92a
... ... @@ -5,25 +5,31 @@
5 5 splines=ortho;
6 6 nodesep=1.4;
7 7 labelloc="t";
8   - label="[A4] Drop a class";
9   - "Navigation Menu/Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  8 + label="[A4] Drop a Class";
  9 + "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
11   - fixedsize=true, width=1.4, height=1.4];
  11 + fixedsize=true, width=1.4, height=1.4];
12 12 "User Check"[center=true, fillcolor="#aaaaff", style=filled];
  13 + "SUCCESS"[shape=none];
  14 + "FAILURE"[shape=none];
13 15 //labelfloat=true;
14 16 //lp=100;
15 17  
16 18 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
17   - fixedsize=true, width=1.4, height=1.4];
18   - "POST /api/sections/{pk}/drop"[shape=none];
19   - "Navigation Menu/Settings" -> "POST /api/sections/{pk}/drop";
20   - "POST /api/sections/{pk}/drop" -> "Controller";
  19 + fixedsize=true, width=1.4, height=1.4];
  20 + "POST /api/sections/{pk}/drop"[shape=none];
  21 + "Navbar" -> "POST /api/sections/{pk}/drop";
  22 + "POST /api/sections/{pk}/drop" -> "Controller";
21 23 "Controller" -> "User Check";
22   - "User did not\ndrop class"[shape=none];
23   - "User Check" -> "User did not\ndrop class";
24   - "User did not\ndrop class" -> "Navigation Menu/Settings";
25   - "User successfully\ndropped class"[shape=none];
26   - "User Check" -> "User successfully\ndropped class";
27   - "User successfully\ndropped class" -> "Navigation Menu/Settings";
  24 +
  25 + "Class not dropped"[shape=none];
  26 + "User Check" -> "FAILURE";
  27 + "FAILURE" -> "Class not dropped";
  28 + "Class not dropped" -> "Navbar";
  29 +
  30 + "Class dropped"[shape=none];
  31 + "User Check" -> "SUCCESS";
  32 + "SUCCESS" -> "Class dropped";
  33 + "Class dropped" -> "Navbar";
28 34 }
screen_sequence_diagrams/fix_flashcard.dot View file @ 345f92a
... ... @@ -10,9 +10,9 @@
10 10 "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
11 11 "View Deck" -> "Edit Flashcard";
12 12 "Edit Flashcard" -> "POST /api/flashcard/{pk}/edit";
13   - "POST /api/flashcard/{pk}/edit" -> "FlashcardViewSet.edit";
14   - "FlashcardViewSet.edit" -> "Text or material date altered";
15   - "FlashcardViewSet.edit" -> "Only mask altered";
  13 + "POST /api/flashcard/{pk}/edit" -> "Controller";
  14 + "Controller" -> "Text or material date altered";
  15 + "Controller" -> "Only mask altered";
16 16 "Only mask altered" -> "Update UserFlashcard object";
17 17 "Text or material date altered" -> "Create new Flashcard with prev pointer\nNotify all users who've pulled the card";
18 18 "Only mask altered"[shape=none];
19 19  
20 20  
21 21  
22 22  
... ... @@ -22,22 +22,21 @@
22 22 "POST /api/flashcard/{pk}/edit"[shape=none];
23 23 labelfloat=true;
24 24 lp=100;
25   - "FlashcardViewSet.edit"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=2.2, height=2.2];
26   - "Navigation Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  25 + "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
27 26 "WhiteListCheck"[center=true, fillcolor="#aaaaff", style=filled, style=filled];
28   - "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=1.1, height=1.1];
  27 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=2.2, height=2.2];
29 28 "POST"[shape=none];
30 29 "FAILURE"[shape=none];
31 30 "SUCCESS"[shape=none];
32   - "Navigation Menu" -> "POST";
  31 + "Navbar" -> "POST";
33 32 "POST" -> "Controller";
34 33 "Controller" -> "FAILURE";
35   - "FAILURE" -> "Navigation Menu";
  34 + "FAILURE" -> "Navbar";
36 35 "Controller" -> "SUCCESS";
37 36 "SUCCESS"->"WhiteListCheck";
38 37 "WhiteListCheck" -> "Permission Denied: \n User cannot be enrolled in class";
39 38 "WhiteListCheck" -> "Success! \n User is added to class";
40   - "Success! \n User is added to class" -> "Navigation Menu";
41   - "Permission Denied: \n User cannot be enrolled in class" -> "Navigation Menu";
  39 + "Success! \n User is added to class" -> "Navbar";
  40 + "Permission Denied: \n User cannot be enrolled in class" -> "Navbar";
42 41 }
screen_sequence_diagrams/reset_password.dot View file @ 345f92a
  1 +digraph G{
  2 + ratio=0.75;
  3 + //rankdir="LR";
  4 + node[shape=box, style="rounded,filled,bold"];
  5 + splines=ortho;
  6 + nodesep=1.4;
  7 + labelloc="t";
  8 + label="[A6] Reset password";
  9 + "Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  10 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond];
  11 + "POST /api/request_password_reset"[shape=none];
  12 + labelfloat=true;
  13 + lp=100;
  14 +
  15 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
  16 + fixedsize=true, width=1.4, height=1.4];
  17 + "Failure: User did not\nchange password"[shape=none];
  18 + "Success: User \nchanged password"[shape=none];
  19 +
  20 + "Settings" -> "POST /api/request_password_reset";
  21 + "POST /api/request_password_reset" -> "Controller";
  22 + "Controller" -> "Email";
  23 +
  24 + "Email" -> "Failure: User did not\nreset password";
  25 + "Failure: User did not\nreset password" -> "Settings";
  26 +
  27 + "Email" -> "Success: User \nreset password";
  28 + "Success: User \nreset password" -> "Settings";
  29 +}
screen_sequence_diagrams/review_notification.dot View file @ 345f92a
... ... @@ -6,8 +6,9 @@
6 6 node[shape=box, style="rounded,filled,bold"];
7 7 splines=ortho;
8 8 nodesep=1.4;
9   - "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  9 + "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Server"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  11 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=1.1, height=1.1];
11 12  
12 13 "Notification"[shape=none];
13 14 "UPDATE"[shape=none];
... ... @@ -15,7 +16,7 @@
15 16 "Server" -> "Notification";
16 17 "Notification" -> "Controller";
17 18 "Controller" -> "UPDATE";
18   - "UPDATE" -> "Sidebar Menu";
  19 + "UPDATE" -> "Navbar";
19 20  
20 21 }
screen_sequence_diagrams/study_deck.dot View file @ 345f92a
... ... @@ -13,7 +13,7 @@
13 13 "StudyView Blank"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
14 14 "StudyView Response"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
15 15 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
16   - fixedsize=true, width=1.4, height=1.4];
  16 + fixedsize=true, width=2.2, height=2.2];
17 17 "POST"[shape=none];
18 18 labelfloat=true;
19 19 lp=100;
... ... @@ -26,7 +26,7 @@
26 26 "POST" -> "Controller";
27 27 "Controller" -> "FAILURE:\nUser has no card in the deck.";
28 28 "Controller" -> "SUCCESS\nUser has at least a card in the deck.";
29   - "FAILURE:\nUser has no card in the deck." -> "Sidebar Menu";
  29 + "FAILURE:\nUser has no card in the deck." -> "Navbar";
30 30 "SUCCESS\nUser has at least a card in the deck." -> "StudyView Blank";
31 31 "StudyView Blank" -> "POST";
32 32 "Controller" -> "StudyView Response";
screen_sequence_diagrams/user_login_out.dot View file @ 345f92a
1 1 digraph G{
2   - labelloc="t";
3   - label="[A2] Login & [A8] Logout";
  2 + labelloc="t";
  3 + label="[A2] Login & [A8] Logout";
4 4  
5   - // Other
  5 + // Other
6 6 ratio=0.75;
7 7 node[shape=box, style="rounded,filled,bold"];
8 8 splines=ortho;
9 9  
... ... @@ -10,9 +10,9 @@
10 10 "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
11 11 "Login/Register Page"[center=true, fillcolor="#aaaaff", style=filled];
12 12 "Logout Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
13   - fixedsize=true, width=1.8, height=1.8];
  13 + fixedsize=true, width=1.8, height=1.8];
14 14 "Login Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
15   - fixedsize=true, width=1.8, height=1.8];
  15 + fixedsize=true, width=1.8, height=1.8];
16 16 "POST"[shape=none];
17 17 labelfloat=true;
18 18 lp=100;
19 19  
20 20  
21 21  
22 22  
23 23  
24 24  
25 25  
... ... @@ -21,26 +21,26 @@
21 21 "SUCCESS:\n User logged out"[shape=none];
22 22 "Logout FAILURE"[shape=none];
23 23 "Login FAILURE"[shape=none];
24   -
  24 +
25 25 "Logout Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
26   - fixedsize=true, width=1.8, height=1.8];
  26 + fixedsize=true, width=1.8, height=1.8];
27 27 "Login Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
28   - fixedsize=true, width=1.8, height=1.8];
  28 + fixedsize=true, width=1.8, height=1.8];
29 29  
30   - // Graph
31   - "Navbar" -> "POST"[dir=none];
  30 + // Graph
  31 + "Navbar" -> "POST";
32 32 "POST" -> "Logout Controller";
33   - "Logout Controller" -> "Logout FAILURE"[dir=none];
  33 + "Logout Controller" -> "Logout FAILURE";
34 34 "Logout FAILURE" -> "Sidebar Menu";
35 35  
36 36 "Logout Controller" -> "SUCCESS:\n User logged out";
37   - "SUCCESS:\n User logged out" -> "Login/Register Page";
  37 + "SUCCESS:\n User logged out" -> "Login/Register Page";
38 38  
39   - "Login/Register Page" -> "Login Controller";
40   - "Login Controller" -> "SUCCESS:\n User logged in";
41   - "SUCCESS:\n User logged in" -> "Sidebar Menu";
  39 + "Login/Register Page" -> "Login Controller";
  40 + "Login Controller" -> "SUCCESS:\n User logged in";
  41 + "SUCCESS:\n User logged in" -> "Sidebar Menu";
42 42  
43   - "Login Controller" -> "Login FAILURE";
44   - "Login FAILURE" -> "Login/Register Page";
  43 + "Login Controller" -> "Login FAILURE";
  44 + "Login FAILURE" -> "Login/Register Page";
45 45 }
screen_sequence_diagrams/user_register.dot View file @ 345f92a
... ... @@ -4,7 +4,7 @@
4 4 labelloc="t";
5 5 label="[A1] User Registration";
6 6  
7   - // Other
  7 + // Other
8 8 ratio=0.75;
9 9 node[shape=box, style="rounded,filled,bold"];
10 10 splines=ortho;
11 11  
... ... @@ -23,10 +23,9 @@
23 23  
24 24 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
25 25 fixedsize=true, width=1.5, height=1.5];
26   - "Server"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
27   - fixedsize=true, width=1.5, height=1.5];
  26 + "Server"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
28 27  
29   - // Graph
  28 + // Graph
30 29 "Login/Register Page" -> "POST";
31 30 "POST" -> "Controller";
32 31  
screen_sequence_diagrams/view_by_material_time.dot View file @ 345f92a
  1 +digraph G{
  2 + ratio=0.75;
  3 + //rankdir="LR";
  4 + labelloc="t";
  5 + label="[D2] View A Card by Material Time";
  6 + node[shape=box, style="rounded,filled,bold"];
  7 + splines=ortho;
  8 + nodesep=1.0;
  9 + "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  10 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
  11 + fixedsize=true, width=1.4, height=1.4];
  12 + "POST"[shape=none];
  13 + labelfloat=true;
  14 + lp=100;
  15 +
  16 + "FAILURE"[shape=none];
  17 +
  18 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
  19 + fixedsize=true, width=1.4, height=1.4];
  20 + "POST"[shape=none];
  21 + "View Deck" -> "POST";
  22 + "POST" -> "Controller";
  23 + "Controller" -> "FAILURE";
  24 + "FAILURE" -> "View Deck";
  25 + "Controller" -> "Sort by Ascending\nor Descending Time";
  26 + "Sort by Ascending\nor Descending Time" -> "View Deck";
  27 +}
screen_sequence_diagrams/view_by_pull_time.dot View file @ 345f92a
1   -digraph G{
2   - ratio=0.75;
3   - //rankdir="LR";
4   - labelloc="t";
5   - label="[D2] View A Card by Pull Time";
6   - node[shape=box, style="rounded,filled,bold"];
7   - splines=ortho;
8   - nodesep=1.0;
9   - "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10   - "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
11   - fixedsize=true, width=1.4, height=1.4];
12   - "POST"[shape=none];
13   - labelfloat=true;
14   - lp=100;
15   -
16   - "FAILURE"[shape=none];
17   -
18   - "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
19   - fixedsize=true, width=1.4, height=1.4];
20   - "POST"[shape=none];
21   - "View Deck" -> "POST";
22   - "POST" -> "Controller";
23   - "Controller" -> "FAILURE";
24   - "FAILURE" -> "View Deck";
25   - "Controller" -> "Sort by Ascending\nor Descending Time";
26   - "Sort by Ascending\nor Descending Time" -> "View Deck";
27   -}