Commit 0e8c33d9bba5e3b9fb724ea1ffa24e3ce0d46e72
Exists in
master
Merge branch 'master' of https://git.ucsd.edu/110swag/docs
Showing 11 changed files Side-by-side Diff
- DesignUseCases.tex
- screen_sequence_diagrams/pull_flashcard.dot
- screen_sequence_diagrams/push_flashcard.dot
- screen_sequence_diagrams/remove_card.dot
- screen_sequence_diagrams/review_notification.dot
- screen_sequence_diagrams/section_limit_access.dot
- screen_sequence_diagrams/study_deck.dot
- screen_sequence_diagrams/user_login_out.dot
- screen_sequence_diagrams/user_register.dot
- screen_sequence_diagrams/view_by_pull_time.dot
- screen_sequence_diagrams/view_feed.dot
DesignUseCases.tex
View file @
0e8c33d
... | ... | @@ -730,13 +730,13 @@ |
730 | 730 | \subsection{[F1] Push Flashcard} |
731 | 731 | |
732 | 732 | \begin{description} |
733 | -\item[Description]{The user shall be able to create a flashcard with their | |
733 | +\item[Description]{The User shall be able to create a flashcard with their | |
734 | 734 | input. } |
735 | 735 | |
736 | -\item[Desired Outcome]{The user shall have the flashcard added to their own | |
736 | +\item[Desired Outcome]{The User shall have the flashcard added to their own | |
737 | 737 | deck and the Live Feed. } |
738 | 738 | \\ |
739 | -\item[User Goals]{The user will see their flashcard in their deck and the | |
739 | +\item[User Goals]{The User will see their flashcard in their deck and the | |
740 | 740 | flashcard will be shared with others. } |
741 | 741 | |
742 | 742 | \item[Dependency Use Cases]{{[}A1{]} User Registration, {[}A2{]} User |
743 | 743 | |
744 | 744 | |
... | ... | @@ -747,11 +747,11 @@ |
747 | 747 | \begin{itemize} |
748 | 748 | \itemsep1pt\parskip0pt\parsep0pt |
749 | 749 | \item |
750 | - {The User has an account } | |
750 | + {The User has an account.} | |
751 | 751 | \item |
752 | - {The User has added at least one class} | |
752 | + {The User has added at least one class.} | |
753 | 753 | \item |
754 | - {The User is on the class' page} | |
754 | + {The User has navigated to the live feed for a class.} | |
755 | 755 | \end{itemize} |
756 | 756 | |
757 | 757 | \item[Post-conditions] |
758 | 758 | |
759 | 759 | |
760 | 760 | |
761 | 761 | |
762 | 762 | |
763 | 763 | |
764 | 764 | |
765 | 765 | |
766 | 766 | |
767 | 767 | |
768 | 768 | |
769 | 769 | |
770 | 770 | |
771 | 771 | |
772 | 772 | |
773 | 773 | |
774 | 774 | |
775 | 775 | |
... | ... | @@ -759,100 +759,55 @@ |
759 | 759 | \begin{itemize} |
760 | 760 | \itemsep1pt\parskip0pt\parsep0pt |
761 | 761 | \item |
762 | - {The User has flashcard added to their deck} | |
762 | + {The User has flashcard added to their deck.} | |
763 | 763 | \item |
764 | - {The Flashcard is shown in the Live Feed} | |
764 | + {The Flashcard is shown in the Live Feed.} | |
765 | 765 | \item |
766 | - {Other users can add this flashcard to their decks} | |
766 | + {Other users can add this flashcard to their decks.} | |
767 | 767 | \end{itemize} |
768 | 768 | |
769 | -\item[Trigger]{} | |
769 | +\item[Trigger]{The User wants to make a flashcard to study.} | |
770 | 770 | |
771 | -\begin{itemize} | |
772 | -\itemsep1pt\parskip0pt\parsep0pt | |
773 | -\item | |
774 | - {The User has clicked on the button ``Make New Flashcard''.} | |
775 | -\item | |
776 | - {The Server receives a POST request containing the flashcard data.} | |
777 | -\end{itemize} | |
778 | - | |
779 | 771 | \item[Workflow] |
780 | 772 | |
781 | 773 | \begin{enumerate} |
782 | 774 | \itemsep1pt\parskip0pt\parsep0pt |
783 | 775 | \item |
784 | - {The User is at the live feed for the class.} | |
776 | + {The User is at the live feed for the class from feed.html.} | |
785 | 777 | \item |
786 | - {The User shall click on the button}{Push | |
787 | - Flashcard} | |
778 | + {The User shall click on the 'Plus' button or press the hotkey 'c'.} | |
788 | 779 | \item |
789 | - {The | |
790 | - }{Client}{shall | |
791 | - present a dialog box for inputting the flashcard text to the User.} | |
780 | + {The frontend shall present a modal for inputting the flashcard text to the User.} | |
792 | 781 | \item |
793 | - {The User shall input the flashcard text.} | |
782 | + {The User shall type in the content of their flashcard.} | |
794 | 783 | \item |
795 | - {Optionally, the User shall mark keywords in the flashcard text.} | |
784 | + {The User shall highlight keywords in the flashcard text.} | |
796 | 785 | \item |
797 | - {If the User creates this flashcard outside of the lecture time, he | |
798 | - will get the option to change the material date.} | |
799 | -\item | |
800 | - {The User shall click on the `Submit' button to submit the flashcard | |
786 | + {The User shall click on the `Contribute' button to submit the flashcard | |
801 | 787 | text, blanks, and material date, in JSON form as a POST request.} |
802 | 788 | \item |
803 | - {The Server shall obtain the flashcard information by deserializing | |
804 | - the JSON in the POST request.} | |
789 | + {The backend shall obtain the flashcard information by deserializing | |
790 | + the JSON in the POST request in views.py.} | |
805 | 791 | \item |
806 | - {The Server shall create a new record for this flashcard in the | |
807 | - Flashcards table in the database.} | |
792 | + {The backend shall create a new record for this flashcard in the | |
793 | + Flashcards table in the database in models.py.} | |
808 | 794 | \item |
809 | - {The Server shall publish the newly created card to the live feed of | |
810 | - the class.} | |
795 | + {The frontend shall publish the newly created card to the live feed of | |
796 | + the class using FeedController.js.} | |
811 | 797 | \end{enumerate} |
812 | 798 | \end{description} |
813 | -{Alternative Workflow:} | |
814 | - | |
815 | -\begin{enumerate} | |
816 | -\itemsep1pt\parskip0pt\parsep0pt | |
817 | -\item | |
818 | - {The User shall view a flashcard that he/she did not create} | |
819 | -\item | |
820 | - {The User shall click ``Edit''} | |
821 | -\item | |
822 | - {The client shall present a dialog box for editing the existing | |
823 | - flashcard text} | |
824 | -\item | |
825 | - {The User shall make edits} | |
826 | -\item | |
827 | - {The User shall click ``save''} | |
828 | -\item | |
829 | - {The client shall send a POST request} | |
830 | -\item | |
831 | - {The server shall remove the original card from user's deck} | |
832 | -\item | |
833 | - {The Server shall obtain the flashcard information by deserializing | |
834 | - the JSON in the POST request.} | |
835 | -\item | |
836 | - {The Server shall create a new record for this flashcard in the | |
837 | - Flashcards table in the database.} | |
838 | -\item | |
839 | - {The Server shall publish the newly created card to the live feed of | |
840 | - the class.} | |
841 | -\end{enumerate} | |
842 | - | |
843 | 799 | \newpage |
844 | - | |
845 | 800 | {} |
846 | 801 | |
847 | 802 | \subsection{[F2] Edit Flashcard} |
848 | 803 | |
849 | 804 | \begin{description} |
850 | -\item[Description]{The user shall be able to edit the text on their own | |
805 | +\item[Description]{The User shall be able to edit the text on their own | |
851 | 806 | flashcard } |
852 | 807 | |
853 | -\item[Desired Outcome]{Flashcard is edited and saved appropriately} | |
808 | +\item[Desired Outcome]{Flashcard is edited and saved appropriately.} | |
854 | 809 | \\ |
855 | -\item[User Goals]{To be able to change text on a flashcard} | |
810 | +\item[User Goals]{To be able to change text on a flashcard.} | |
856 | 811 | |
857 | 812 | \item[Dependency Use Cases]{{[}A1{]} User Registration, {[}A2{]} User |
858 | 813 | Login, {[}A3{]} Add a Class, {[}F1{]} Push Flashcard, {[}F3{]} Pull |
859 | 814 | |
860 | 815 | |
... | ... | @@ -863,11 +818,11 @@ |
863 | 818 | \begin{itemize} |
864 | 819 | \itemsep1pt\parskip0pt\parsep0pt |
865 | 820 | \item |
866 | - {Flashcard is created} | |
821 | + {Flashcard is created.} | |
867 | 822 | \item |
868 | - {Flashcard in user's deck} | |
823 | + {Flashcard in user's deck.} | |
869 | 824 | \item |
870 | - {Flashcard is viewable} | |
825 | + {Flashcard is viewable.} | |
871 | 826 | \end{itemize} |
872 | 827 | |
873 | 828 | \item[Post-conditions] |
874 | 829 | |
875 | 830 | |
876 | 831 | |
877 | 832 | |
... | ... | @@ -875,27 +830,19 @@ |
875 | 830 | \begin{itemize} |
876 | 831 | \itemsep1pt\parskip0pt\parsep0pt |
877 | 832 | \item |
878 | - {Flashcard is edited} | |
833 | + {Flashcard is edited.} | |
879 | 834 | \end{itemize} |
880 | 835 | |
881 | -\item[Trigger]{User has clicked ``Edit'' button when viewing a specific | |
882 | -flashcard} | |
883 | - | |
836 | +\item[Trigger] {The User wants to change a card to show different information.} | |
884 | 837 | \item[Workflow] |
885 | 838 | |
886 | 839 | \begin{enumerate} |
887 | 840 | \itemsep1pt\parskip0pt\parsep0pt |
841 | +\item{User has clicked ``Edit'' button when viewing a specific flashcard.} | |
888 | 842 | \item |
889 | - {The user shall view their deck} | |
843 | + {The frontend shall produce an editable dialog box containing flashcard | |
844 | + text } | |
890 | 845 | \item |
891 | - {The client shall present user with a grid view of cards in | |
892 | - chronological creation order} | |
893 | -\item | |
894 | - {The user shall select a flashcard and click `Edit'} | |
895 | -\item | |
896 | - {The client shall produce an editable dialog box containing flashcard | |
897 | - text} | |
898 | -\item | |
899 | 846 | {The user shall make desired changes} |
900 | 847 | \item |
901 | 848 | {The user shall click `Save'} |
902 | 849 | |
903 | 850 | |
... | ... | @@ -947,16 +894,16 @@ |
947 | 894 | \\ |
948 | 895 | \item[Priority Level]{``Must'' } |
949 | 896 | |
950 | -\item[Status]{Not Implemented} | |
897 | +\item[Status]{Implemented} | |
951 | 898 | |
952 | 899 | \item[Pre-conditions] |
953 | 900 | |
954 | 901 | \begin{itemize} |
955 | 902 | \itemsep1pt\parskip0pt\parsep0pt |
956 | 903 | \item |
957 | - {Flashcard has been created } | |
904 | + {A flashcard has been created and is in the Live Feed for a class. } | |
958 | 905 | \item |
959 | - {That flashcard is in the Live Feed} | |
906 | + {The User is currently viewing the Live Feed for that class.} | |
960 | 907 | \end{itemize} |
961 | 908 | |
962 | 909 | \item[Post-conditions] |
963 | 910 | |
964 | 911 | |
965 | 912 | |
966 | 913 | |
... | ... | @@ -964,25 +911,22 @@ |
964 | 911 | \begin{itemize} |
965 | 912 | \itemsep1pt\parskip0pt\parsep0pt |
966 | 913 | \item |
967 | - {User shall have that flashcard added to their deck} | |
914 | + {User shall have that flashcard added to their deck.} | |
968 | 915 | \item |
969 | - {User can review this flashcard later} | |
916 | + {User can review this flashcard later.} | |
970 | 917 | \end{itemize} |
971 | 918 | |
972 | -\item[Trigger]{User has clicked on the flashcard in the Live Feed.} | |
919 | +\item[Trigger]{The User wants to save a flashcard for review later.} | |
973 | 920 | |
974 | 921 | \item[Workflow] |
975 | 922 | |
976 | 923 | \begin{enumerate} |
977 | 924 | \itemsep1pt\parskip0pt\parsep0pt |
978 | 925 | \item |
979 | - {The User is in the Live Feed.} | |
980 | -\item | |
981 | 926 | {User shall click on the ``Pull Flashcard'' button on a Flashcard in |
982 | 927 | the Feed.} |
983 | 928 | \item |
984 | - {The Client shall make the pulled Flashcard disappear from the Live | |
985 | - Feed} | |
929 | + {The frontend shall } | |
986 | 930 | \item |
987 | 931 | {The Client shall make the pulled Flashcard appear in the User's Deck |
988 | 932 | on the sidebar.} |
989 | 933 | |
... | ... | @@ -1010,10 +954,10 @@ |
1010 | 954 | \item[Description]{Cards may be flagged indicating inappropriate content} |
1011 | 955 | |
1012 | 956 | \item[Desired Outcome]{The flashcard's inappropriateness variable is |
1013 | -adjusted} | |
957 | +adjusted.} | |
1014 | 958 | \\ |
1015 | 959 | \item[User Goals]{To note if a card should not belong in the class and |
1016 | -should not be displayed in the feed} | |
960 | +should not be displayed in the feed.} | |
1017 | 961 | |
1018 | 962 | \item[Primary Actor]{User (Student)} |
1019 | 963 | |
... | ... | @@ -1022,7 +966,7 @@ |
1022 | 966 | \\ |
1023 | 967 | \item[Priority Level]{``Should''} |
1024 | 968 | |
1025 | -\item[Status]{Unimplemented} | |
969 | +\item[Status]{Implemented} | |
1026 | 970 | |
1027 | 971 | \item[Pre-conditions] |
1028 | 972 | |
1029 | 973 | |
... | ... | @@ -1035,9 +979,11 @@ |
1035 | 979 | \begin{itemize} |
1036 | 980 | \itemsep1pt\parskip0pt\parsep0pt |
1037 | 981 | \item |
1038 | - {Flashcard is created} | |
982 | + {Flashcard is created.} | |
1039 | 983 | \item |
1040 | - {Flashcard is viewable in feed} | |
984 | + {Flashcard is viewable in feed.} | |
985 | +\item | |
986 | + {The User has clicked the red button on the flashcard which is the "Hide Card" button.} | |
1041 | 987 | \end{itemize} |
1042 | 988 | |
1043 | 989 | \item[Post-conditions] |
1044 | 990 | |
1045 | 991 | |
1046 | 992 | |
1047 | 993 | |
1048 | 994 | |
1049 | 995 | |
1050 | 996 | |
... | ... | @@ -1045,32 +991,27 @@ |
1045 | 991 | \begin{itemize} |
1046 | 992 | \itemsep1pt\parskip0pt\parsep0pt |
1047 | 993 | \item |
1048 | - {Flashcard is hidden from user} | |
994 | + {Flashcard is hidden from user.} | |
1049 | 995 | \item |
1050 | - {Flashcard internal variable is adjusted} | |
996 | + {Flashcard internal variable is adjusted.} | |
1051 | 997 | \end{itemize} |
1052 | 998 | |
1053 | -\item[Trigger]{User clicks flag on a specific flashcard} | |
999 | +\item[Trigger]{The User does not like the particular flashcard.} | |
1054 | 1000 | |
1055 | 1001 | \item[Workflow] |
1056 | 1002 | |
1057 | 1003 | \begin{enumerate} |
1058 | 1004 | \itemsep1pt\parskip0pt\parsep0pt |
1005 | +\item { | |
1006 | + The frontend displays a toast that offers the User the report text.} | |
1059 | 1007 | \item |
1060 | - {The User is at a page of their classes.} | |
1008 | + {The User clicks the ``Report'' text on the flashcard.} | |
1061 | 1009 | \item |
1062 | - {The User selects one of their classes to enter the Live Feed.} | |
1010 | + {The frontend shall hide the flashcard from the User.} | |
1063 | 1011 | \item |
1064 | - {The User is on the Live Feed for his/her class.} | |
1012 | + {The backend shall check if the User already hid the flashcard in views.py function report.} | |
1065 | 1013 | \item |
1066 | - {The User shall identify an inappropriate card and flag the card.} | |
1067 | -\item | |
1068 | - {The User clicks the ``Flag as Inappropriate'' button on the flashcard | |
1069 | - that he/she wants to report} | |
1070 | -\item | |
1071 | - {The Client shall hide the card from the user} | |
1072 | -\item | |
1073 | - {The server shall create a FlashcardReport object} | |
1014 | + {The backend shall hide the flashcard in models.py in class FlashcardHide. } | |
1074 | 1015 | \end{enumerate} |
1075 | 1016 | \end{description} |
1076 | 1017 | {} |
1077 | 1018 | |
1078 | 1019 | |
1079 | 1020 | |
... | ... | @@ -1081,16 +1022,16 @@ |
1081 | 1022 | |
1082 | 1023 | {} |
1083 | 1024 | |
1084 | -\subsection{[F5] Filter Flashcards} | |
1025 | +\subsection{[F5] Filter Flashcards - Deferred} | |
1085 | 1026 | |
1086 | 1027 | \begin{description} |
1087 | -\item[Description]{The user is able to filter for flashcards by date} | |
1028 | +\item[Description]{The User is able to filter for flashcards by date.} | |
1088 | 1029 | |
1089 | -\item[Desired Outcome]{The user shall see flashcards based on the filter | |
1090 | -options} | |
1030 | +\item[Desired Outcome]{The User shall see flashcards based on the filter | |
1031 | +options.} | |
1091 | 1032 | |
1092 | -{User Goals:}{The user can find what he/she is specifically looking | |
1093 | -for} | |
1033 | +{User Goals:}{The User can find what he/she is specifically looking | |
1034 | +for.} | |
1094 | 1035 | |
1095 | 1036 | \item[Primary Actor]{User (student)} |
1096 | 1037 | |
1097 | 1038 | |
1098 | 1039 | |
... | ... | @@ -1100,16 +1041,18 @@ |
1100 | 1041 | \\ |
1101 | 1042 | \item[Priority Level]{''Should''} |
1102 | 1043 | |
1103 | -\item[Status]{Not}{}{Implemented } | |
1044 | +\item[Status]{Not Implemented } | |
1104 | 1045 | |
1105 | 1046 | \item[Pre-conditions] |
1106 | 1047 | |
1107 | 1048 | \begin{itemize} |
1108 | 1049 | \itemsep1pt\parskip0pt\parsep0pt |
1109 | 1050 | \item |
1110 | - {User has registered for the course } | |
1051 | + {User has added the class.} | |
1111 | 1052 | \item |
1112 | - {Flashcards exist in the course} | |
1053 | + {Flashcards exist in the course.} | |
1054 | +\item | |
1055 | + {The User has navigated to the study page.} | |
1113 | 1056 | \end{itemize} |
1114 | 1057 | |
1115 | 1058 | \item[Post-conditions]{} |
1116 | 1059 | |
1117 | 1060 | |
1118 | 1061 | |
1119 | 1062 | |
... | ... | @@ -1120,27 +1063,21 @@ |
1120 | 1063 | {User only sees specific flashcards} |
1121 | 1064 | \end{itemize} |
1122 | 1065 | |
1123 | -\item[Trigger]{User has selected advanced options from menu} | |
1066 | +\item[Trigger]{The User wants to only see cards for a specific date range.} | |
1124 | 1067 | |
1125 | 1068 | \item[Workflow] |
1126 | 1069 | |
1127 | 1070 | \begin{enumerate} |
1128 | 1071 | \itemsep1pt\parskip0pt\parsep0pt |
1129 | 1072 | \item |
1130 | - {The User chooses one of their classes.} | |
1073 | + {The frontend shall render the page described in study.html.} | |
1131 | 1074 | \item |
1132 | - {The User presses the class they want to view.} | |
1075 | + {The User fills in the date fields.} | |
1133 | 1076 | \item |
1134 | - {The Client displays the Live Feed.} | |
1077 | + {The frontend checks the date fields before making the POST request to /api/study.} | |
1135 | 1078 | \item |
1136 | - {The User is at the Live Feed.} | |
1137 | -\item | |
1138 | - {The User wants to filter the cards on the Live Feed.} | |
1139 | -\item | |
1140 | - {The User shall select what filter option they want from a drop down | |
1141 | - menu.} | |
1142 | -\item | |
1143 | - {The Client shall display only relevant flashcards.} | |
1079 | + {The system follows the Study workflow, displaying only cards made within a certain date time.} | |
1080 | + | |
1144 | 1081 | \end{enumerate} |
1145 | 1082 | \end{description} |
1146 | 1083 | {} |
1147 | 1084 | |
1148 | 1085 | |
... | ... | @@ -1169,17 +1106,20 @@ |
1169 | 1106 | \\ |
1170 | 1107 | \item[Priority Level]{``Must''} |
1171 | 1108 | |
1172 | -\item[Status]{Not implemented.} | |
1109 | +\item[Status]{Implemented.} | |
1173 | 1110 | |
1174 | 1111 | \item[Pre-conditions] |
1175 | 1112 | |
1176 | 1113 | \begin{itemize} |
1177 | 1114 | \itemsep1pt\parskip0pt\parsep0pt |
1178 | 1115 | \item |
1179 | - {The User has the flashcard he wishes to blank out words from in his | |
1180 | - deck.} | |
1116 | + {The User has an account and is logged in.} | |
1181 | 1117 | \item |
1182 | - {The User shall (be on the class page and) view deck} | |
1118 | + {The User shall be on the Live Feed for the class.} | |
1119 | +\item | |
1120 | + {The User has clicked the 'c' hotkey or the 'plus' button to start making a card.} | |
1121 | +\item | |
1122 | + {The User shall type in information relevant to their class.} | |
1183 | 1123 | \end{itemize} |
1184 | 1124 | |
1185 | 1125 | {Post-conditions: } |
1186 | 1126 | |
1187 | 1127 | |
1188 | 1128 | |
1189 | 1129 | |
1190 | 1130 | |
... | ... | @@ -1193,35 +1133,23 @@ |
1193 | 1133 | they are when it presents the flashcard to the User for reviewing.} |
1194 | 1134 | \end{itemize} |
1195 | 1135 | |
1196 | -\item[Trigger]{The User clicks on a flashcard.} | |
1136 | +\item[Trigger]{The User wants to make a flashcard and be quizzed on parts of the flashcard while they study.} | |
1197 | 1137 | |
1198 | 1138 | \item[Workflow] |
1199 | 1139 | |
1200 | 1140 | \begin{enumerate} |
1201 | 1141 | \itemsep1pt\parskip0pt\parsep0pt |
1202 | 1142 | \item |
1203 | - {The Client shall a show deck to user} | |
1143 | + {The User shall highlight the words that he wishes to blank out.} | |
1204 | 1144 | \item |
1205 | - {The User shall click on the flashcard in his deck that he wants to | |
1206 | - blank out words from} | |
1145 | + {The User shall click the 'Contribute' button.} | |
1207 | 1146 | \item |
1208 | - {The client shall bring user to edit flashcard page/popup} | |
1147 | + {The backend shall mark those words by updating the field mask for | |
1148 | + that userflashcard object in views.py in function create. } | |
1209 | 1149 | \item |
1210 | - {The User shall click on the words that he wishes to blank out} | |
1150 | + {The backend shall save those in models.py.} | |
1211 | 1151 | \item |
1212 | - {The client shall specify a character range as blank} | |
1213 | -\item | |
1214 | - {The server shall mark those words by updating the Flashcard Mask for | |
1215 | - that flashcard. } | |
1216 | -\item | |
1217 | - {The User shall click on `Save' or the equivalent button to save the | |
1218 | - changes} | |
1219 | -\item | |
1220 | - {The server will save the blanked out words as keywords to the | |
1221 | - Flashcard Mask to review} | |
1222 | -\item | |
1223 | - {The client shall cover the keywords with whitespace to hide them from | |
1224 | - the User} | |
1152 | + {The frontend shall change the color of the text that was blanked out in flashcard.html.} | |
1225 | 1153 | \end{enumerate} |
1226 | 1154 | |
1227 | 1155 | {Alternative Workflows:} |
1228 | 1156 | |
1229 | 1157 | |
1230 | 1158 | |
1231 | 1159 | |
... | ... | @@ -1229,20 +1157,17 @@ |
1229 | 1157 | \begin{enumerate} |
1230 | 1158 | \itemsep1pt\parskip0pt\parsep0pt |
1231 | 1159 | \item |
1232 | - {The User shall (be on the class page and) click ``Make New | |
1233 | - Flashcard''} | |
1160 | + {Precondition: The User has clicked the edit flashcard button instead of creating a new card.} | |
1234 | 1161 | \item |
1235 | - {The client shall present user with a new flashcard to fill in} | |
1162 | + {The User shall highlight selection text and click either ctrl-b or 'Blank Selected Text'.} | |
1236 | 1163 | \item |
1237 | - {The User shall fill in the information} | |
1164 | + {The backend shall mark those words by updating the field mask for | |
1165 | + that userflashcard object in views.py in function create. } | |
1238 | 1166 | \item |
1239 | - {The client shall ask if the user wants to specify blanks} | |
1167 | + {The backend shall save those in models.py.} | |
1240 | 1168 | \item |
1241 | - {The System will save the blanked out words as keywords to the | |
1242 | - Flashcard Mask to review} | |
1243 | -\item | |
1244 | - {The client shall cover the keywords with whitespace to hide them from | |
1245 | - the User} | |
1169 | + {The frontend shall change the color of the text that was blanked out in flashcard.html.} | |
1170 | + | |
1246 | 1171 | \end{enumerate} |
1247 | 1172 | \end{description} |
1248 | 1173 | {} |
screen_sequence_diagrams/pull_flashcard.dot
View file @
0e8c33d
... | ... | @@ -23,15 +23,15 @@ |
23 | 23 | fixedsize=true, width=1.4, height=1.4]; |
24 | 24 | "Flashcard added to User's Deck"[center=true, fillcolor="#aaaaff", style=filled]; |
25 | 25 | "POST"[shape=none]; |
26 | - "Pull Flashcard Button" -> "POST"[dir=none]; | |
26 | + "Pull Flashcard Button" -> "POST"; | |
27 | 27 | "POST" -> "Controller"; |
28 | - "Controller" -> "FAILURE"[dir=none]; | |
28 | + "Controller" -> "FAILURE"; | |
29 | 29 | "FAILURE" -> "Pull Flashcard Button"; |
30 | 30 | "Controller" -> "Hide Flashcard from Feed"; |
31 | 31 | "POST" -> "Server"; |
32 | - "Server"-> "SUCCESS"[dir=none]; | |
32 | + "Server"-> "SUCCESS"; | |
33 | 33 | "SUCCESS" -> "Flashcard added to User's Deck"; |
34 | - "Flashcard added to User's Deck" -> "Update Card Rating"[dir=none]; | |
34 | + "Flashcard added to User's Deck" -> "Update Card Rating"; | |
35 | 35 | "Update Card Rating" -> "Pull Flashcard Button"; |
36 | 36 | } |
screen_sequence_diagrams/push_flashcard.dot
View file @
0e8c33d
... | ... | @@ -23,15 +23,15 @@ |
23 | 23 | fixedsize=true, width=1.4, height=1.4]; |
24 | 24 | "Flashcard Record \n Created in Database"[center=true, fillcolor="#aaaaff", style=filled]; |
25 | 25 | "POST"[shape=none]; |
26 | - "Push Flashcard Button" -> "POST"[dir=none]; | |
26 | + "Push Flashcard Button" -> "POST"; | |
27 | 27 | "POST" -> "Controller"; |
28 | - "Controller" -> "FAILURE"[dir=none]; | |
28 | + "Controller" -> "FAILURE"; | |
29 | 29 | "FAILURE" -> "Push Flashcard Button"; |
30 | - "Controller" -> "POST"[dir=none]; | |
30 | + "Controller" -> "POST"; | |
31 | 31 | "POST" -> "Server"; |
32 | - "Server"-> "SUCCESS"[dir=none]; | |
32 | + "Server"-> "SUCCESS"; | |
33 | 33 | "SUCCESS" -> "Flashcard Record \n Created in Database"; |
34 | - "Flashcard Record \n Created in Database" -> "Card Published in Feed"[dir=none]; | |
34 | + "Flashcard Record \n Created in Database" -> "Card Published in Feed"; | |
35 | 35 | "Card Published in Feed" -> "Push Flashcard Button"; |
36 | 36 | |
37 | 37 | } |
screen_sequence_diagrams/remove_card.dot
View file @
0e8c33d
... | ... | @@ -22,15 +22,15 @@ |
22 | 22 | "POST"[shape=none]; |
23 | 23 | "Card Removed from Deck"[shape=none]; |
24 | 24 | "Flashcard Position\nUpdated in Live Feed"[shape=none]; |
25 | - "View Deck" -> "POST"[dir=none]; | |
25 | + "View Deck" -> "POST"; | |
26 | 26 | "POST" -> "Controller"; |
27 | - "Controller" -> "FAILURE"[dir=none]; | |
27 | + "Controller" -> "FAILURE"; | |
28 | 28 | "FAILURE" -> "View Deck"; |
29 | 29 | "Controller" -> "Remove Flashcard Button"; |
30 | - "Remove Flashcard Button" -> "DELETE"[dir=none]; | |
30 | + "Remove Flashcard Button" -> "DELETE"; | |
31 | 31 | "DELETE" -> "Server"; |
32 | - "Server" -> "Card Removed from Deck"[dir=none]; | |
33 | - "Card Removed from Deck" -> "Flashcard Position\nUpdated in Live Feed"[dir=none]; | |
32 | + "Server" -> "Card Removed from Deck"; | |
33 | + "Card Removed from Deck" -> "Flashcard Position\nUpdated in Live Feed"; | |
34 | 34 | "Flashcard Position\nUpdated in Live Feed" -> "View Deck"; |
35 | 35 | } |
screen_sequence_diagrams/review_notification.dot
View file @
0e8c33d
... | ... | @@ -12,9 +12,9 @@ |
12 | 12 | "Notification"[shape=none]; |
13 | 13 | "UPDATE"[shape=none]; |
14 | 14 | |
15 | - "Server" -> "Notification"[dir=none]; | |
15 | + "Server" -> "Notification"; | |
16 | 16 | "Notification" -> "Controller"; |
17 | - "Controller" -> "UPDATE"[dir=none]; | |
17 | + "Controller" -> "UPDATE"; | |
18 | 18 | "UPDATE" -> "Sidebar Menu"; |
19 | 19 | |
20 | 20 | } |
screen_sequence_diagrams/section_limit_access.dot
View file @
0e8c33d
... | ... | @@ -24,15 +24,15 @@ |
24 | 24 | fixedsize=true, width=1.5, height=1.5]; |
25 | 25 | |
26 | 26 | // Graph |
27 | - "Instructor's\nEmail Client" -> "EMAIL"[dir=none]; | |
27 | + "Instructor's\nEmail Client" -> "EMAIL"; | |
28 | 28 | "EMAIL" -> "Admins Page"; |
29 | - "Admins Page" -> "POST"[dir=none]; | |
29 | + "Admins Page" -> "POST"; | |
30 | 30 | "POST" -> "Controller"; |
31 | 31 | |
32 | - "Controller" -> "SUCCESS"[dir=none]; | |
32 | + "Controller" -> "SUCCESS"; | |
33 | 33 | "SUCCESS" -> "Instructor's\nEmail Client"; |
34 | 34 | |
35 | - "Controller" -> "FAILURE"[dir=none]; | |
35 | + "Controller" -> "FAILURE"; | |
36 | 36 | "FAILURE" -> "Admins Page"; |
37 | 37 | } |
screen_sequence_diagrams/study_deck.dot
View file @
0e8c33d
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | node[shape=box, style="rounded,filled,bold"]; |
9 | 9 | splines=ortho; |
10 | 10 | nodesep=1.4; |
11 | - "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
11 | + "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
12 | 12 | "ClassView"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; |
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 | |
16 | 16 | |
17 | 17 | |
... | ... | @@ -21,16 +21,16 @@ |
21 | 21 | "SUCCESS\nUser has at least a card in the deck."[shape=none]; |
22 | 22 | "FAILURE:\nUser has no card in the deck."[shape=none]; |
23 | 23 | |
24 | - "Sidebar Menu" -> "ClassView"; | |
25 | - "ClassView" -> "POST"[dir=none]; | |
24 | + "Navbar" -> "ClassView"; | |
25 | + "ClassView" -> "POST"; | |
26 | 26 | "POST" -> "Controller"; |
27 | - "Controller" -> "FAILURE:\nUser has no card in the deck."[dir=none]; | |
28 | - "Controller" -> "SUCCESS\nUser has at least a card in the deck."[dir=none]; | |
27 | + "Controller" -> "FAILURE:\nUser has no card in the deck."; | |
28 | + "Controller" -> "SUCCESS\nUser has at least a card in the deck."; | |
29 | 29 | "FAILURE:\nUser has no card in the deck." -> "Sidebar Menu"; |
30 | 30 | "SUCCESS\nUser has at least a card in the deck." -> "StudyView Blank"; |
31 | - "StudyView Blank" -> "POST"[dir=none]; | |
31 | + "StudyView Blank" -> "POST"; | |
32 | 32 | "Controller" -> "StudyView Response"; |
33 | - "StudyView Response" -> "POST"[dir=none]; | |
33 | + "StudyView Response" -> "POST"; | |
34 | 34 | "Controller" -> "StudyView Blank"; |
35 | 35 | |
36 | 36 | } |
screen_sequence_diagrams/user_login_out.dot
View file @
0e8c33d
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | node[shape=box, style="rounded,filled,bold"]; |
8 | 8 | splines=ortho; |
9 | 9 | nodesep=1.4; |
10 | - "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
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 | 13 | fixedsize=true, width=1.8, height=1.8]; |
14 | 14 | |
15 | 15 | |
16 | 16 | |
... | ... | @@ -28,19 +28,19 @@ |
28 | 28 | fixedsize=true, width=1.8, height=1.8]; |
29 | 29 | |
30 | 30 | // Graph |
31 | - "Sidebar Menu" -> "POST"[dir=none]; | |
31 | + "Navbar" -> "POST"[dir=none]; | |
32 | 32 | "POST" -> "Logout Controller"; |
33 | 33 | "Logout Controller" -> "Logout FAILURE"[dir=none]; |
34 | 34 | "Logout FAILURE" -> "Sidebar Menu"; |
35 | 35 | |
36 | - "Logout Controller" -> "SUCCESS:\n User logged out"[dir=none]; | |
36 | + "Logout Controller" -> "SUCCESS:\n User logged out"; | |
37 | 37 | "SUCCESS:\n User logged out" -> "Login/Register Page"; |
38 | 38 | |
39 | 39 | "Login/Register Page" -> "Login Controller"; |
40 | - "Login Controller" -> "SUCCESS:\n User logged in"[dir=none]; | |
40 | + "Login Controller" -> "SUCCESS:\n User logged in"; | |
41 | 41 | "SUCCESS:\n User logged in" -> "Sidebar Menu"; |
42 | 42 | |
43 | - "Login Controller" -> "Login FAILURE"[dir=none]; | |
43 | + "Login Controller" -> "Login FAILURE"; | |
44 | 44 | "Login FAILURE" -> "Login/Register Page"; |
45 | 45 | } |
screen_sequence_diagrams/user_register.dot
View file @
0e8c33d
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | splines=ortho; |
11 | 11 | // nodesep=1.3; |
12 | 12 | nodesep=3.0; |
13 | - ranksep=0.05; | |
13 | + ranksep=0.05; | |
14 | 14 | "Login/Register Page"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; |
15 | 15 | "POST"[shape=none]; |
16 | 16 | labelfloat=true; |
17 | 17 | |
18 | 18 | |
19 | 19 | |
20 | 20 | |
21 | 21 | |
22 | 22 | |
23 | 23 | |
... | ... | @@ -20,26 +20,26 @@ |
20 | 20 | "SUCCESS:\nValid, unverified user created.\nEmail verification message displayed."[shape=none]; |
21 | 21 | "FAILURE"[shape=none]; |
22 | 22 | "FAILURE:\nData invalid"[shape=none]; |
23 | - | |
23 | + | |
24 | 24 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, |
25 | - fixedsize=true, width=1.5, height=1.5]; | |
25 | + fixedsize=true, width=1.5, height=1.5]; | |
26 | 26 | "Server"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, |
27 | - fixedsize=true, width=1.5, height=1.5]; | |
27 | + fixedsize=true, width=1.5, height=1.5]; | |
28 | 28 | |
29 | 29 | // Graph |
30 | - "Login/Register Page" -> "POST"[dir=none]; | |
30 | + "Login/Register Page" -> "POST"; | |
31 | 31 | "POST" -> "Controller"; |
32 | 32 | |
33 | - "Controller" -> "FAILURE"[dir=none]; | |
33 | + "Controller" -> "FAILURE"; | |
34 | 34 | "FAILURE" -> "Login/Register Page"; |
35 | 35 | |
36 | - "Controller" -> "SUCCESS:\nValid, send JSON."[dir=none]; | |
37 | - "SUCCESS:\nValid, send JSON." -> "Server"; | |
36 | + "Controller" -> "SUCCESS:\nValid, send JSON."; | |
37 | + "SUCCESS:\nValid, send JSON." -> "Server"; | |
38 | 38 | |
39 | - "Server" -> "FAILURE:\nData invalid"[dir=none]; | |
40 | - "FAILURE:\nData invalid" -> "Login/Register Page"; | |
39 | + "Server" -> "FAILURE:\nData invalid"; | |
40 | + "FAILURE:\nData invalid" -> "Login/Register Page"; | |
41 | 41 | |
42 | - "Server" -> "SUCCESS:\nValid, unverified user created.\nEmail verification message displayed."[dir=none]; | |
43 | - "SUCCESS:\nValid, unverified user created.\nEmail verification message displayed." -> "Login/Register Page"; | |
42 | + "Server" -> "SUCCESS:\nValid, unverified user created.\nEmail verification message displayed."; | |
43 | + "SUCCESS:\nValid, unverified user created.\nEmail verification message displayed." -> "Login/Register Page"; | |
44 | 44 | } |
screen_sequence_diagrams/view_by_pull_time.dot
View file @
0e8c33d
... | ... | @@ -18,9 +18,9 @@ |
18 | 18 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, |
19 | 19 | fixedsize=true, width=1.4, height=1.4]; |
20 | 20 | "POST"[shape=none]; |
21 | - "View Deck" -> "POST"[dir=none]; | |
21 | + "View Deck" -> "POST"; | |
22 | 22 | "POST" -> "Controller"; |
23 | - "Controller" -> "FAILURE"[dir=none]; | |
23 | + "Controller" -> "FAILURE"; | |
24 | 24 | "FAILURE" -> "View Deck"; |
25 | 25 | "Controller" -> "Sort by Ascending\nor Descending Time"; |
26 | 26 | "Sort by Ascending\nor Descending Time" -> "View Deck"; |
screen_sequence_diagrams/view_feed.dot
View file @
0e8c33d
... | ... | @@ -17,10 +17,10 @@ |
17 | 17 | |
18 | 18 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, |
19 | 19 | fixedsize=true, width=1.4, height=1.4]; |
20 | - "Root" -> "GET"[dir=none]; | |
20 | + "Root" -> "GET"; | |
21 | 21 | "GET" -> "Controller"; |
22 | - "Controller" -> "FAILURE:\nno cards"[dir=none]; | |
23 | - "Controller" -> "SUCCESS"[dir=none]; | |
22 | + "Controller" -> "FAILURE:\nno cards"; | |
23 | + "Controller" -> "SUCCESS"; | |
24 | 24 | "FAILURE:\nno cards" -> "Feed"; |
25 | 25 | "SUCCESS" -> "Feed"; |
26 | 26 | } |