Commit 7d10b6e0778966abb89ba4b3729c0bfcde7385d2
Exists in
master
Merge branch 'master' of git.ucsd.edu:110swag/docs
Showing 29 changed files Inline Diff
- node_modules/sqlt/.npmignore
- node_modules/sqlt/.travis.yml
- node_modules/sqlt/LICENSE
- node_modules/sqlt/README.md
- node_modules/sqlt/index.js
- node_modules/sqlt/package.json
- node_modules/sqlt/test/fixtures/getUsers.sql
- node_modules/sqlt/test/fixtures/getUsersByIdOrEmail.sql
- node_modules/sqlt/test/index.js
- screen_sequence_diagrams/add_class.dot
- screen_sequence_diagrams/change_password.dot
- screen_sequence_diagrams/configure_account_notifications.dot
- screen_sequence_diagrams/contact_admin.dot
- screen_sequence_diagrams/drop_class.dot
- screen_sequence_diagrams/edit_flashcard.dot
- screen_sequence_diagrams/filter_cards.dot
- screen_sequence_diagrams/fix_flashcard.dot
- screen_sequence_diagrams/flag_inappropriate_cards.dot
- screen_sequence_diagrams/hide_card.dot
- 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
node_modules/sqlt/.npmignore
View file @
7d10b6e
File was created | 1 | *.swp | ||
2 | .DS_Store | |||
3 | node_modules/ | |||
4 | npm-debug.log |
node_modules/sqlt/.travis.yml
View file @
7d10b6e
File was created | 1 | language: node_js | ||
2 | node_js: | |||
3 | - "0.10" |
node_modules/sqlt/LICENSE
View file @
7d10b6e
File was created | 1 | Copyright (c) 2014, Eugene Ware | ||
2 | All rights reserved. | |||
3 | ||||
4 | Redistribution and use in source and binary forms, with or without | |||
5 | modification, are permitted provided that the following conditions are met: | |||
6 | ||||
7 | 1. Redistributions of source code must retain the above copyright | |||
8 | notice, this list of conditions and the following disclaimer. | |||
9 | 2. Redistributions in binary form must reproduce the above copyright | |||
10 | notice, this list of conditions and the following disclaimer in the | |||
11 | documentation and/or other materials provided with the distribution. | |||
12 | 3. Neither the name of Eugene Ware nor the names of its contributors | |||
13 | may be used to endorse or promote products derived from this software | |||
14 | without specific prior written permission. | |||
15 | ||||
16 | THIS SOFTWARE IS PROVIDED BY EUGENE WARE ''AS IS'' AND ANY | |||
17 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |||
18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
19 | DISCLAIMED. IN NO EVENT SHALL EUGENE WARE BE LIABLE FOR ANY | |||
20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
node_modules/sqlt/README.md
View file @
7d10b6e
File was created | 1 | # sqlt | ||
2 | ||||
3 | Simple SQL Templating helper inspired by [Yesql](https://github.com/krisajenkins/yesql) | |||
4 | ||||
5 | [](http://travis-ci.org/eugeneware/sqlt) | |||
6 | ||||
7 | Give this library the location of a SQL template file, and it will return a function that | |||
8 | you can call with a [mysql](https://www.npmjs.org/package/mysql) or [pg](https://www.npmjs.org/package/pg) connection, an optional array of parameters, and a callback. | |||
9 | ||||
10 | ## Installation | |||
11 | ||||
12 | This module is installed via npm: | |||
13 | ||||
14 | ``` bash | |||
15 | $ npm install sqlt | |||
16 | ``` | |||
17 | ||||
18 | ## Example Usage | |||
19 | ||||
20 | ### Simple SQL query with no params | |||
21 | ||||
22 | Given a SQL template file located in /path/to/queries/getUsers.sql | |||
23 | ||||
24 | ``` sql | |||
25 | SELECT | |||
26 | * | |||
27 | FROM | |||
28 | users; | |||
29 | ``` | |||
30 | ||||
31 | You can get a function that is easily callable with a database connection | |||
32 | handle, and get a callback: | |||
33 | ||||
34 | ``` js | |||
35 | var sqlt = require('sqlt'), | |||
36 | mysql = require('mysql'); | |||
37 | ||||
38 | var conn = mysql.createConnection({ | |||
39 | host: 'yourdatabase.com', | |||
40 | database: 'yourdbname', | |||
41 | user: 'yourdbusername', | |||
42 | password: 'yourpassword' | |||
43 | }); | |||
44 | ||||
45 | var getUsers = sqlt('/path/to/queries/getUsers.sql'); | |||
46 | getUsers(conn, function (err, results) { | |||
47 | if (err) throw err; | |||
48 | console.log(results); | |||
49 | }); | |||
50 | ``` | |||
51 | ||||
52 | ### SQL query with params | |||
53 | ||||
54 | Given a SQL template file located in /path/to/queries/getUsersByIdOrEmail.sql | |||
55 | ||||
56 | ``` sql | |||
57 | SELECT | |||
58 | * | |||
59 | FROM | |||
60 | users | |||
61 | WHERE | |||
62 | id = ? OR email = ?; | |||
63 | ``` | |||
64 | ||||
65 | You can get a function that is easily callable with a database connection | |||
66 | handle, an array of parameters, and get a callback: | |||
67 | ||||
68 | ``` js | |||
69 | var sqlt = require('sqlt'), | |||
70 | mysql = require('mysql'); | |||
71 | ||||
72 | var conn = mysql.createConnection({ | |||
73 | host: 'yourdatabase.com', | |||
74 | database: 'yourdbname', | |||
75 | user: 'yourdbusername', | |||
76 | password: 'yourpassword' | |||
77 | }); | |||
78 | ||||
79 | var getUsersByIdOrEmail = sqlt('/path/to/queries/getUsersByIdOrEmail.sql'); | |||
80 | getUsersByIdOrEmail(conn, [1234, 'bob@hotmail.com'], function (err, results) { | |||
81 | if (err) throw err; | |||
82 | console.log(results); | |||
83 | }); | |||
84 | ``` | |||
85 | ||||
86 | ### Load a directory full of queries | |||
87 | ||||
88 | Given a folder that contains a list of `.sql` files (say the `getUsers.sql` and | |||
89 | `getUsersByIdOrEmail.sql` file above: | |||
90 | ||||
91 | You can get a single object where each `.sql` file is turned into a query | |||
92 | helping function: | |||
93 | ||||
94 | ``` js | |||
95 | var sqlt = require('sqlt'), | |||
96 | mysql = require('mysql'); | |||
97 | ||||
98 | var conn = mysql.createConnection({ | |||
99 | host: 'yourdatabase.com', | |||
100 | database: 'yourdbname', | |||
101 | user: 'yourdbusername', | |||
102 | password: 'yourpassword' | |||
103 | }); | |||
104 | ||||
105 | var queries = sqlt.dir('/path/to/queries'); | |||
106 | queries.getUsers(conn, function (err, results) { | |||
107 | if (err) throw err; | |||
108 | console.log(results); | |||
109 | }); | |||
110 | queries.getUsersByIdOrEmail(conn, [1234, 'bob@hotmail.com'], function (err, results) { | |||
111 | if (err) throw err; | |||
112 | console.log(results); | |||
113 | }); | |||
114 | ``` | |||
115 |
node_modules/sqlt/index.js
View file @
7d10b6e
File was created | 1 | var fs = require('fs'), | ||
2 | path = require('path'); | |||
3 | ||||
4 | function makeSql(stmt) { | |||
5 | return function (conn, params, cb) { | |||
6 | if (typeof cb === 'undefined' && typeof params === 'function') { | |||
7 | cb = params; | |||
8 | params = []; | |||
9 | } | |||
10 | if (typeof cb === 'undefined') { | |||
11 | // for piping | |||
12 | return conn.query(stmt, params); | |||
13 | } else { | |||
14 | conn.query(stmt, params, cb); | |||
15 | } | |||
16 | }; | |||
17 | } | |||
18 | ||||
19 | module.exports = sqlt; | |||
20 | function sqlt(sqlFile) { | |||
21 | var stmt = fs.readFileSync(sqlFile, 'utf8'); | |||
22 | return makeSql(stmt); | |||
23 | }; | |||
24 | ||||
25 | module.exports.dir = sqltDir; | |||
26 | ||||
27 | function sqltDir(dir) { | |||
28 | var queries = {}; | |||
29 | function isSql(name){ | |||
30 | return name.slice(-4,name.length) === '.sql'; | |||
31 | } | |||
32 | var files = fs.readdirSync(dir).filter(isSql); | |||
33 | ||||
34 | var contents = files.map(function(fileName){ | |||
35 | return fs.readFileSync(path.join(dir,fileName)).toString(); | |||
36 | }); |
node_modules/sqlt/package.json
View file @
7d10b6e
File was created | 1 | { | ||
2 | "name": "sqlt", | |||
3 | "version": "1.1.1", | |||
4 | "description": "Simple SQL Templating helper inspired by Yesql", | |||
5 | "main": "index.js", | |||
6 | "scripts": { | |||
7 | "test": "mocha" | |||
8 | }, | |||
9 | "repository": { | |||
10 | "type": "git", | |||
11 | "url": "https://github.com/eugeneware/sqlt" | |||
12 | }, | |||
13 | "keywords": [ | |||
14 | "sql", | |||
15 | "yesql", | |||
16 | "presql", | |||
17 | "template", | |||
18 | "file", | |||
19 | "database", | |||
20 | "mysql", | |||
21 | "pg", | |||
22 | "postgres", | |||
23 | "postgresql", | |||
24 | "mysql", | |||
25 | "orm" | |||
26 | ], | |||
27 | "author": { | |||
28 | "name": "Eugene Ware", | |||
29 | "email": "eugene@noblesamurai.com" | |||
30 | }, | |||
31 | "license": "BSD-3-Clause", | |||
32 | "bugs": { | |||
33 | "url": "https://github.com/eugeneware/sqlt/issues" | |||
34 | }, | |||
35 | "dependencies": {}, | |||
36 | "devDependencies": { | |||
37 | "expect.js": "~0.2.0", | |||
38 | "mocha": "~1.17.0" | |||
39 | }, | |||
40 | "homepage": "https://github.com/eugeneware/sqlt", | |||
41 | "_id": "sqlt@1.1.1", | |||
42 | "dist": { | |||
43 | "shasum": "5e3b48cec68b3b6a9b80d60e5dd5656009b246e6", | |||
44 | "tarball": "http://registry.npmjs.org/sqlt/-/sqlt-1.1.1.tgz" | |||
45 | }, | |||
46 | "_from": "sqlt@*", | |||
47 | "_npmVersion": "1.4.3", | |||
48 | "_npmUser": { | |||
49 | "name": "eugeneware", | |||
50 | "email": "eugene@noblesamurai.com" | |||
51 | }, | |||
52 | "maintainers": [ | |||
53 | { | |||
54 | "name": "eugeneware", | |||
55 | "email": "eugene@noblesamurai.com" | |||
56 | } | |||
57 | ], | |||
58 | "directories": {}, | |||
59 | "_shasum": "5e3b48cec68b3b6a9b80d60e5dd5656009b246e6", | |||
60 | "_resolved": "https://registry.npmjs.org/sqlt/-/sqlt-1.1.1.tgz" | |||
61 | } |
node_modules/sqlt/test/fixtures/getUsers.sql
View file @
7d10b6e
File was created | 1 | SELECT | ||
2 | * | |||
3 | FROM | |||
4 | users; |
node_modules/sqlt/test/fixtures/getUsersByIdOrEmail.sql
View file @
7d10b6e
File was created | 1 | SELECT | ||
2 | * | |||
3 | FROM | |||
4 | users | |||
5 | WHERE | |||
6 | id = ? OR email = ?; |
node_modules/sqlt/test/index.js
View file @
7d10b6e
File was created | 1 | var expect = require('expect.js'), | ||
2 | path = require('path'), | |||
3 | sqlt = require('..'); | |||
4 | ||||
5 | describe('sqlt', function() { | |||
6 | // simple mock | |||
7 | var conn = { | |||
8 | query: function (stmt, params, cb) { | |||
9 | if (typeof cb === 'undefined' && typeof params === 'function') { | |||
10 | cb = params; | |||
11 | params = []; | |||
12 | } | |||
13 | if (typeof cb === 'undefined') { | |||
14 | return { | |||
15 | pipe: function () { | |||
16 | return stmt; | |||
17 | } | |||
18 | }; | |||
19 | } else { | |||
20 | cb(null, stmt); | |||
21 | } | |||
22 | } | |||
23 | }; | |||
24 | ||||
25 | it('should be able to read a SQL statement', function(done) { | |||
26 | var getUsers = sqlt(path.join(__dirname, 'fixtures', 'getUsers.sql')); | |||
27 | getUsers(conn, function (err, res) { | |||
28 | if (err) return done(err); | |||
29 | var expected = | |||
30 | "SELECT\n" + | |||
31 | " *\n" + | |||
32 | "FROM\n" + | |||
33 | " users;\n" | |||
34 | expect(res).to.equal(expected); | |||
35 | done(); | |||
36 | }); | |||
37 | }); | |||
38 | ||||
39 | it('should be able to read a parameterized statement', function(done) { | |||
40 | var getUsersByIdOrEmail = sqlt(path.join(__dirname, 'fixtures', 'getUsersByIdOrEmail.sql')); | |||
41 | getUsersByIdOrEmail(conn, [123, 'bob@hotmail.com'], function (err, res) { | |||
42 | if (err) return done(err); | |||
43 | var expected = | |||
44 | "SELECT\n" + | |||
45 | " *\n" + | |||
46 | "FROM\n" + | |||
47 | " users\n" + | |||
48 | "WHERE\n" + | |||
49 | " id = ? OR email = ?;\n"; | |||
50 | expect(res).to.equal(expected); | |||
51 | done(); | |||
52 | }); | |||
53 | }); | |||
54 | ||||
55 | it('should be able to read a directory of queries', function(done) { | |||
56 | var queries = sqlt.dir(path.join(__dirname, 'fixtures')); | |||
57 | expect(queries.getUsers).to.be.a('function'); | |||
58 | expect(queries.getUsersByIdOrEmail).to.be.a('function'); | |||
59 | ||||
60 | doUsers(); | |||
61 | ||||
62 | function doUsers() { | |||
63 | queries.getUsers(conn, function (err, res) { | |||
64 | if (err) return done(err); | |||
65 | var expected = | |||
66 | "SELECT\n" + | |||
67 | " *\n" + | |||
68 | "FROM\n" + | |||
69 | " users;\n" | |||
70 | expect(res).to.equal(expected); | |||
71 | doParam(); | |||
72 | }); | |||
73 | } | |||
74 | ||||
75 | function doParam() { | |||
76 | queries.getUsersByIdOrEmail(conn, [123, 'bob@hotmail.com'], function (err, res) { | |||
77 | if (err) return done(err); | |||
78 | var expected = | |||
79 | "SELECT\n" + | |||
80 | " *\n" + | |||
81 | "FROM\n" + | |||
82 | " users\n" + | |||
83 | "WHERE\n" + | |||
84 | " id = ? OR email = ?;\n"; | |||
85 | expect(res).to.equal(expected); | |||
86 | done(); | |||
87 | }); | |||
88 | } | |||
89 | }); | |||
90 | ||||
91 | it('should allow streaming of results', function(done) { | |||
92 | var getUsersByIdOrEmail = sqlt(path.join(__dirname, 'fixtures', 'getUsersByIdOrEmail.sql')); | |||
93 | var stream = getUsersByIdOrEmail(conn, [123, 'bob@hotmail.com']); | |||
94 | expect(stream.pipe).to.be.a('function'); | |||
95 | var expected = | |||
96 | "SELECT\n" + | |||
97 | " *\n" + |
screen_sequence_diagrams/add_class.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
node[shape=box, style="rounded,filled,bold"]; | 4 | 4 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 5 | 5 | splines=ortho; | |
nodesep=1.4; | 6 | 6 | nodesep=1.4; | |
labelloc="t"; | 7 | 7 | labelloc="t"; | |
label = "[A3] Add a Class"; | 8 | 8 | label = "[A3] Add a Class"; | |
"Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 9 | "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | 10 | 10 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 11 | 11 | fixedsize=true, width=1.4, height=1.4]; | |
"POST"[shape=none]; | 12 | 12 | "POST"[shape=none]; | |
labelfloat=true; | 13 | 13 | labelfloat=true; | |
lp=100; | 14 | 14 | lp=100; | |
15 | 15 | |||
"Permission Denied: \n User cannot be enrolled in class"[shape=none] | 16 | 16 | "Permission Denied: \n User cannot be enrolled in class"[shape=none] | |
"Success! \n User is added to class"[shape=none]; | 17 | 17 | "Success! \n User is added to class"[shape=none]; | |
"SUCCESS"[shape=none]; | 18 | 18 | "SUCCESS"[shape=none]; | |
"FAILURE"[shape=none]; | 19 | 19 | "FAILURE"[shape=none]; | |
20 | 20 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | 21 | 21 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 22 | 22 | fixedsize=true, width=1.4, height=1.4]; | |
"WhiteListCheck"[center=true, fillcolor="#aaaaff", style=filled, style=filled]; | 23 | 23 | "WhiteListCheck"[center=true, fillcolor="#aaaaff", style=filled, style=filled]; | |
"Sidebar Menu" -> "POST"; | 24 | 24 | "Sidebar Menu" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 25 | 25 | "POST" -> "Controller"; | |
"Controller" -> "FAILURE"; | 26 | 26 | "Controller" -> "FAILURE"[dir=none]; | |
"FAILURE" -> "Sidebar Menu"; | 27 | 27 | "FAILURE" -> "Sidebar Menu"; | |
"Controller" -> "SUCCESS"; | 28 | 28 | "Controller" -> "SUCCESS"[dir=none]; | |
"SUCCESS"->"WhiteListCheck"; | 29 | 29 | "SUCCESS"->"WhiteListCheck"; | |
"WhiteListCheck" -> "Permission Denied: \n User cannot be enrolled in class"; | 30 | 30 | "WhiteListCheck" -> "Permission Denied: \n User cannot be enrolled in class"[dir=none]; | |
"WhiteListCheck" -> "Success! \n User is added to class"; | 31 | 31 | "WhiteListCheck" -> "Success! \n User is added to class"[dir=none]; | |
"Success! \n User is added to class" -> "Sidebar Menu"; | 32 | 32 | "Success! \n User is added to class" -> "Sidebar Menu"; | |
"Permission Denied: \n User cannot be enrolled in class" -> "Sidebar Menu"; | 33 | 33 | "Permission Denied: \n User cannot be enrolled in class" -> "Sidebar Menu"; | |
34 | 34 | |||
} | 35 | 35 | } | |
36 | 36 | |||
screen_sequence_diagrams/change_password.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
node[shape=box, style="rounded,filled,bold"]; | 4 | 4 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 5 | 5 | splines=ortho; | |
nodesep=1.4; | 6 | 6 | nodesep=1.4; | |
labelloc="t"; | 7 | 7 | labelloc="t"; | |
label="[A5] Change password & [A6] Reset password"; | 8 | 8 | label="[A5] Change password & [A6] Reset password"; | |
"Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 9 | "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond]; | 10 | 10 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond]; | |
"POST"[shape=none]; | 11 | 11 | "POST"[shape=none]; | |
labelfloat=true; | 12 | 12 | labelfloat=true; | |
lp=100; | 13 | 13 | lp=100; | |
14 | 14 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 15 | 15 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 16 | 16 | fixedsize=true, width=1.4, height=1.4]; | |
"Sidebar Menu/Settings" -> "POST"; | 17 | 17 | "Sidebar Menu/Settings" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 18 | 18 | "POST" -> "Controller"; | |
"Controller" -> "Email"; | 19 | 19 | "Controller" -> "Email"; | |
"Failure: User did not\nchange password"[shape=none]; | 20 | 20 | "Failure: User did not\nchange password"[shape=none]; | |
"Email" -> "Failure: User did not\nchange password"; | 21 | 21 | "Email" -> "Failure: User did not\nchange password"[dir=none]; | |
"Failure: User did not\nchange password" -> "Sidebar Menu"; | 22 | 22 | "Failure: User did not\nchange password" -> "Sidebar Menu"; | |
"Success: User \nchanged password"[shape=none]; | 23 | 23 | "Success: User \nchanged password"[shape=none]; | |
"Email" -> "Success: User \nchanged password"; | 24 | 24 | "Email" -> "Success: User \nchanged password"[dir=none]; | |
"Success: User \nchanged password" -> "Sidebar Menu"; | 25 | 25 | "Success: User \nchanged password" -> "Sidebar Menu"; | |
} | 26 | 26 | } | |
27 | 27 | |||
screen_sequence_diagrams/configure_account_notifications.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
labelloc="t"; | 4 | 4 | labelloc="t"; | |
label="[R3] Configure Account Notifications" | 5 | 5 | label="[R3] Configure Account Notifications" | |
node[shape=box, style="rounded,filled,bold"]; | 6 | 6 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 7 | 7 | splines=ortho; | |
nodesep=2.5; | 8 | 8 | nodesep=2.5; | |
ranksep=0.45; | 9 | 9 | ranksep=0.45; | |
"Account Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 10 | 10 | "Account Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Account Settings" -> "PATCH /api/me/settings"; | 11 | 11 | "Account Settings" -> "PATCH /api/me/settings"[dir=none]; | |
12 | 12 | |||
"views.update_settings" -> "New settings valid?"; | 13 | 13 | "views.update_settings" -> "New settings valid?"; | |
"New settings valid?" -> "Yes\nSUCCESS"; | 14 | 14 | "New settings valid?" -> "Yes\nSUCCESS"[dir=none]; | |
"New settings valid?" -> "No\nFAILURE"; | 15 | 15 | "New settings valid?" -> "No\nFAILURE"[dir=none]; | |
"PATCH /api/me/settings" -> "views.update_settings"; | 16 | 16 | "PATCH /api/me/settings" -> "views.update_settings"; | |
"No\nFAILURE" -> "Account Settings"; | 17 | 17 | "No\nFAILURE" -> "Account Settings"; | |
"Yes\nSUCCESS" -> "Save settings"; | 18 | 18 | "Yes\nSUCCESS" -> "Save settings"; | |
"Save settings" -> "Account Settings"; | 19 | 19 | "Save settings" -> "Account Settings"; | |
"Yes\nSUCCESS"[shape=none]; | 20 | 20 | "Yes\nSUCCESS"[shape=none]; | |
"No\nFAILURE"[shape=none]; | 21 | 21 | "No\nFAILURE"[shape=none]; | |
"PATCH /api/me/settings"[shape=none]; | 22 | 22 | "PATCH /api/me/settings"[shape=none]; | |
labelfloat=true; | 23 | 23 | labelfloat=true; | |
lp=100; | 24 | 24 | lp=100; | |
"views.update_settings"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, fixedsize=true, width=2.0, height=2.0]; | 25 | 25 | "views.update_settings"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, fixedsize=true, width=2.0, height=2.0]; | |
} | 26 | 26 | } | |
27 | 27 | |||
screen_sequence_diagrams/contact_admin.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
// Title | 2 | 2 | // Title | |
labelloc="t"; | 3 | 3 | labelloc="t"; | |
label="[A9] Contact Admin"; | 4 | 4 | label="[A9] Contact Admin"; | |
5 | 5 | |||
// Other | 6 | 6 | // Other | |
ratio=0.75; | 7 | 7 | ratio=0.75; | |
node[shape=box, style="rounded,filled,bold"]; | 8 | 8 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 9 | 9 | splines=ortho; | |
nodesep=1.4; | 10 | 10 | nodesep=1.4; | |
"Instructor's Email Client"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 11 | 11 | "Instructor's Email Client"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Admin's Message Box"[center=true, fillcolor="#aaaaff", style=filled]; | 12 | 12 | "Admin's Message Box"[center=true, fillcolor="#aaaaff", style=filled]; | |
"EMAIL"[shape=none]; | 13 | 13 | "EMAIL"[shape=none]; | |
"MESSAGE"[shape=none]; | 14 | 14 | "MESSAGE"[shape=none]; | |
labelfloat=true; | 15 | 15 | labelfloat=true; | |
lp=100; | 16 | 16 | lp=100; | |
17 | 17 | |||
// Graph | 18 | 18 | // Graph | |
"Instructor's Email Client" -> "EMAIL"; | 19 | 19 | "Instructor's Email Client" -> "EMAIL"[dir=none]; | |
"EMAIL" -> "Admin's Message Box"; | 20 | 20 | "EMAIL" -> "Admin's Message Box"; | |
"Admin's Message Box" -> "MESSAGE"; | 21 | 21 | "Admin's Message Box" -> "MESSAGE"[dir=none]; | |
"MESSAGE" -> "Instructor's Email Client"; | 22 | 22 | "MESSAGE" -> "Instructor's Email Client"; | |
} | 23 | 23 | } |
screen_sequence_diagrams/drop_class.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
// rankdir="LR"; | 3 | 3 | // rankdir="LR"; | |
node[shape=box, style="rounded,filled,bold"]; | 4 | 4 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 5 | 5 | splines=ortho; | |
nodesep=1.4; | 6 | 6 | nodesep=1.4; | |
labelloc="t"; | 7 | 7 | labelloc="t"; | |
label="[A4] Drop a class"; | 8 | 8 | label="[A4] Drop a class"; | |
"Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 9 | "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | 10 | 10 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 11 | 11 | fixedsize=true, width=1.4, height=1.4]; | |
"User Check"[center=true, fillcolor="#aaaaff", style=filled]; | 12 | 12 | "User Check"[center=true, fillcolor="#aaaaff", style=filled]; | |
//labelfloat=true; | 13 | 13 | //labelfloat=true; | |
//lp=100; | 14 | 14 | //lp=100; | |
15 | 15 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | 16 | 16 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 17 | 17 | fixedsize=true, width=1.4, height=1.4]; | |
"Sidebar Menu" -> "Controller" [label=" DELETE"]; | 18 | 18 | "Sidebar Menu" -> "Controller" [label=" DELETE"]; | |
"Controller" -> "User Check"; | 19 | 19 | "Controller" -> "User Check"; | |
"User did not\ndrop class"[shape=none]; | 20 | 20 | "User did not\ndrop class"[shape=none]; | |
"User Check" -> "User did not\ndrop class"; | 21 | 21 | "User Check" -> "User did not\ndrop class"[dir=none]; | |
"User did not\ndrop class" -> "Sidebar Menu"; | 22 | 22 | "User did not\ndrop class" -> "Sidebar Menu"; | |
"User successfully\ndropped class"[shape=none]; | 23 | 23 | "User successfully\ndropped class"[shape=none]; | |
"User Check" -> "User successfully\ndropped class"; | 24 | 24 | "User Check" -> "User successfully\ndropped class"[dir=none]; | |
"User successfully\ndropped class" -> "Sidebar Menu"; | 25 | 25 | "User successfully\ndropped class" -> "Sidebar Menu"; | |
} | 26 | 26 | } | |
27 | 27 |
screen_sequence_diagrams/edit_flashcard.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
labelloc="t"; | 4 | 4 | labelloc="t"; | |
label="[F2] Edit Flashcard"; | 5 | 5 | label="[F2] Edit Flashcard"; | |
node[shape=box, style="rounded,filled,bold"]; | 6 | 6 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 7 | 7 | splines=ortho; | |
nodesep=1.0; | 8 | 8 | nodesep=1.0; | |
"View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 9 | "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 10 | 10 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 11 | 11 | fixedsize=true, width=1.4, height=1.4]; | |
12 | "POST"[shape=none]; | |||
12 | 13 | |||
"View Deck" -> "Edit Flashcard Button"; | 13 | 14 | "View Deck" -> "Edit Flashcard Button"; | |
"Edit Flashcard Button" -> "Flashcard Changes"; | 14 | 15 | "Edit Flashcard Button" -> "Flashcard Changes"; | |
"Flashcard Changes" -> "POST"; | 15 | 16 | "Flashcard Changes" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 16 | 17 | "POST" -> "Controller"; | |
17 | 18 | |||
//Only blanks(mask) altered | 18 | 19 | //Only blanks(mask) altered | |
"Only mask altered"[shape=none]; | 19 | 20 | "Only mask altered"[shape=none]; | |
"Server creates New FlashcardMask object"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 20 | 21 | "Server creates New FlashcardMask object"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller" -> "Only mask altered"; | 21 | 22 | "Controller" -> "Only mask altered"[dir=none]; | |
"Only mask altered" -> "Server creates New FlashcardMask object"; | 22 | 23 | "Only mask altered" -> "Server creates New FlashcardMask object"; | |
"Server creates New FlashcardMask object" -> "View Deck"; | 23 | 24 | "Server creates New FlashcardMask object" -> "View Deck"; | |
24 | 25 | |||
//Text changed | 25 | 26 | //Text changed | |
"Text or material date altered"[shape=none]; | 26 | 27 | "Text or material date altered"[shape=none]; | |
"Controller" -> "Text or material date altered"; | 27 | 28 | "Controller" -> "Text or material date altered"[dir=none]; | |
"Text or material date altered" -> "Create New Flashcard"; | 28 | 29 | "Text or material date altered" -> "Create New Flashcard"; | |
"Create New Flashcard" -> "Push to Feed"; | 29 | 30 | "Create New Flashcard" -> "Push to Feed"; | |
"Push to Feed"-> "Add to User Deck"; | 30 | 31 | "Push to Feed"-> "Add to User Deck"; | |
"Add to User Deck" -> "View Deck"; | 31 | 32 | "Add to User Deck" -> "View Deck"; | |
labelfloat=true; | 32 | 33 | labelfloat=true; | |
lp=100; | 33 | 34 | lp=100; | |
} | 34 | 35 | } |
screen_sequence_diagrams/filter_cards.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
node[shape=box, style="rounded,filled,bold"]; | 4 | 4 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 5 | 5 | splines=ortho; | |
nodesep=1.4; | 6 | 6 | nodesep=1.4; | |
labelloc="t"; | 7 | 7 | labelloc="t"; | |
label="[F5] Filter cards"; | 8 | 8 | label="[F5] Filter cards"; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond]; | 9 | 9 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond]; | |
labelfloat=true; | 10 | 10 | labelfloat=true; | |
lp=100; | 11 | 11 | lp=100; | |
12 | 12 | |||
13 | 13 | |||
"Filter"[shape=none]; | 14 | 14 | "Filter"[shape=none]; | |
"Filtered cards"[shape=none]; | 15 | 15 | "Filtered cards"[shape=none]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 16 | 16 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 17 | 17 | fixedsize=true, width=1.4, height=1.4]; | |
18 | 18 | |||
"Feed" -> "Filter"; | 19 | 19 | "Feed" -> "Filter"[dir=none]; | |
"Filter" -> "Controller"; | 20 | 20 | "Filter" -> "Controller"; | |
"Controller" -> "Filtered cards"; | 21 | 21 | "Controller" -> "Filtered cards"[dir=none]; | |
"Filtered cards" -> "Feed"; | 22 | 22 | "Filtered cards" -> "Feed"; |
screen_sequence_diagrams/fix_flashcard.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
labelloc="t"; | 4 | 4 | labelloc="t"; | |
label="[F7] Fix Flashcard"; | 5 | 5 | label="[F7] Fix Flashcard"; | |
node[shape=box, style="rounded,filled,bold"]; | 6 | 6 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 7 | 7 | splines=ortho; | |
nodesep=1.0; | 8 | 8 | nodesep=0.4; | |
9 | ranksep=0.1; | |||
"View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 10 | "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"View Deck" -> "Edit Flashcard"; | 10 | 11 | "View Deck" -> "Edit Flashcard"; | |
"Edit Flashcard" -> "POST /api/flashcard/{pk}/edit"; | 11 | 12 | "Edit Flashcard" -> "POST /api/flashcard/{pk}/edit"[dir=none]; | |
"POST /api/flashcard/{pk}/edit" -> "FlashcardViewSet.edit"; | 12 | 13 | "POST /api/flashcard/{pk}/edit" -> "FlashcardViewSet.edit"; | |
"FlashcardViewSet.edit" -> "Text or material date altered"; | 13 | 14 | "FlashcardViewSet.edit" -> "Text or material date altered"[dir=none]; | |
"FlashcardViewSet.edit" -> "Only mask altered"; | 14 | 15 | "FlashcardViewSet.edit" -> "Only mask altered"[dir=none]; | |
"Only mask altered" -> "Update UserFlashcard object"; | 15 | 16 | "Only mask altered" -> "Update UserFlashcard object"; | |
"Text or material date altered" -> "Create new Flashcard with prev pointer\nNotify all users who've pulled the card"; | 16 | 17 | "Text or material date altered" -> "Create new Flashcard with prev pointer\nNotify all users who've pulled the card"; | |
"Only mask altered"[shape=none]; | 17 | 18 | "Only mask altered"[shape=none]; | |
"Text or material date altered"[shape=none]; | 18 | 19 | "Text or material date altered"[shape=none]; | |
"Update UserFlashcard object" -> "View Deck"; | 19 | 20 | "Update UserFlashcard object" -> "View Deck"; | |
"Create new Flashcard with prev pointer\nNotify all users who've pulled the card" -> "View Deck"; | 20 | 21 | "Create new Flashcard with prev pointer\nNotify all users who've pulled the card" -> "View Deck"; | |
"POST /api/flashcard/{pk}/edit"[shape=none]; | 21 | 22 | "POST /api/flashcard/{pk}/edit"[shape=none]; | |
labelfloat=true; | 22 | 23 | labelfloat=true; | |
lp=100; | 23 | 24 | lp=100; | |
"FlashcardViewSet.edit"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=2.2, height=2.2]; | 24 | 25 | "FlashcardViewSet.edit"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=2.2, height=2.2]; | |
26 | "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |||
"WhiteListCheck"[center=true, fillcolor="#aaaaff", style=filled, style=filled]; | 25 | 27 | "WhiteListCheck"[center=true, fillcolor="#aaaaff", style=filled, style=filled]; | |
"Sidebar Menu" -> "POST"; | 26 | 28 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=1.1, height=1.1]; | |
29 | "POST"[shape=none]; | |||
30 | "FAILURE"[shape=none]; | |||
31 | "SUCCESS"[shape=none]; | |||
32 | "Sidebar Menu" -> "POST"[dir=none]; | |||
"POST" -> "Controller"; | 27 | 33 | "POST" -> "Controller"; | |
"Controller" -> "FAILURE"; | 28 | 34 | "Controller" -> "FAILURE"[dir=none]; | |
"FAILURE" -> "Sidebar Menu"; | 29 | 35 | "FAILURE" -> "Sidebar Menu"; | |
"Controller" -> "SUCCESS"; | 30 | 36 | "Controller" -> "SUCCESS"[dir=none]; | |
"SUCCESS"->"WhiteListCheck"; | 31 | 37 | "SUCCESS"->"WhiteListCheck"; | |
"WhiteListCheck" -> "Permission Denied: \n User cannot be enrolled in class"; | 32 | 38 | "WhiteListCheck" -> "Permission Denied: \n User cannot be enrolled in class"; | |
"WhiteListCheck" -> "Success! \n User is added to class"; | 33 | 39 | "WhiteListCheck" -> "Success! \n User is added to class"; | |
"Success! \n User is added to class" -> "Sidebar Menu"; | 34 | 40 | "Success! \n User is added to class" -> "Sidebar Menu"; | |
"Permission Denied: \n User cannot be enrolled in class" -> "Sidebar Menu"; | 35 | 41 | "Permission Denied: \n User cannot be enrolled in class" -> "Sidebar Menu"; | |
} | 36 | 42 | } | |
37 | 43 | |||
screen_sequence_diagrams/flag_inappropriate_cards.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
labelloc="t"; | 4 | 4 | labelloc="t"; | |
label="[F4] Flag Inappropriate Cards"; | 5 | 5 | label="[F4] Flag Inappropriate Cards"; | |
node[shape=box, style="rounded,filled,bold"]; | 6 | 6 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 7 | 7 | splines=ortho; | |
nodesep=1.0; | 8 | 8 | nodesep=2.0; | |
9 | ranksep=0.4; | |||
"Live Feed"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 10 | "Live Feed"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 10 | 11 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 11 | 12 | fixedsize=true, width=1.4, height=1.4]; | |
"Server"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 12 | 13 | "Server"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Flashcard Hidden from Feed"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 13 | 14 | "Flashcard Hidden from Feed"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"POST"[shape=none]; | 14 | 15 | "POST"[shape=none]; | |
labelfloat=true; | 15 | 16 | labelfloat=true; | |
lp=100; | 16 | 17 | lp=100; | |
17 | 18 | |||
"SUCCESS"[shape=none]; | 18 | 19 | "SUCCESS"[shape=none]; | |
"FAILURE"[shape=none]; | 19 | 20 | "FAILURE"[shape=none]; | |
20 | 21 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 21 | 22 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 22 | 23 | fixedsize=true, width=1.4, height=1.4]; | |
"Flashcard Hidden from Feed"[center=true, fillcolor="#aaaaff", style=filled]; | 23 | 24 | "Flashcard Hidden from Feed"[center=true, fillcolor="#aaaaff", style=filled]; | |
"POST"[shape=none]; | 24 | 25 | "POST"[shape=none]; | |
"Live Feed" -> "Flag as Inappropriate"; | 25 | 26 | "Live Feed" -> "Flag as Inappropriate"; | |
"Flag as Inappropriate" -> "POST"; | 26 | 27 | "Flag as Inappropriate" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 27 | 28 | "POST" -> "Controller"; | |
"Controller" -> "FAILURE"; | 28 | 29 | "Controller" -> "FAILURE"[dir=none]; | |
"FAILURE" -> "Live Feed"; | 29 | 30 | "FAILURE" -> "Live Feed"; | |
"Controller" -> "POST"; | 30 | 31 | "Controller" -> "POST"[dir=none]; | |
"POST" -> "Server"; | 31 | 32 | "POST" -> "Server"; | |
"Server"-> "SUCCESS"; | 32 | 33 | "Server"-> "SUCCESS"[dir=none]; | |
"SUCCESS" -> "Flashcard Hidden from Feed"; | 33 | 34 | "SUCCESS" -> "Flashcard Hidden from Feed"; | |
"Flashcard Hidden from Feed" -> "Server creates a FlashcardReport object"; | 34 | 35 | "Flashcard Hidden from Feed" -> "Server creates a FlashcardReport object"; | |
"Server creates a FlashcardReport object" -> "Live Feed"; | 35 | 36 | "Server creates a FlashcardReport object" -> "Live Feed"; | |
36 | 37 | |||
} | 37 | 38 | } | |
39 | ||||
screen_sequence_diagrams/hide_card.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
node[shape=box, style="rounded,filled,bold"]; | 4 | 4 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 5 | 5 | splines=ortho; | |
nodesep=1.4; | 6 | 6 | nodesep=1.4; | |
labelloc="t"; | 7 | 7 | labelloc="t"; | |
label="[F8] Hide Card from Feed"; | 8 | 8 | label="[F8] Hide Card from Feed"; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 9 | 9 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 10 | 10 | fixedsize=true, width=1.4, height=1.4]; | |
labelfloat=true; | 11 | 11 | labelfloat=true; | |
lp=100; | 12 | 12 | lp=100; | |
13 | 13 | |||
"POST"[shape=none]; | 14 | 14 | "POST"[shape=none]; | |
"FAILURE: card no longer exists in database"[shape=none]; | 15 | 15 | "FAILURE: card no longer\nexists in database"[shape=none]; | |
"SUCCESS: card successfully hidden"[shape=none]; | 16 | 16 | "SUCCESS: card\nsuccessfully hidden"[shape=none]; | |
17 | 17 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 18 | 18 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 19 | 19 | fixedsize=true, width=1.4, height=1.4]; | |
"Feed" -> "POST"; | 20 | 20 | "Feed" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 21 | 21 | "POST" -> "Controller"; | |
"Controller" -> "FAILURE: card no longer exists in database"; | 22 | 22 | "Controller" -> "FAILURE: card no longer\nexists in database"[dir=none]; | |
"Controller" -> "SUCCESS: card successfully hidden"; | 23 | 23 | "Controller" -> "SUCCESS: card\nsuccessfully hidden"[dir=none]; | |
"FAILURE: card no longer exists in database" -> "Feed"; | 24 | 24 | "FAILURE: card no longer\nexists in database" -> "Feed"; | |
"SUCCESS: card successfully hidden" -> "Feed"; | 25 | 25 | "SUCCESS: card\nsuccessfully hidden" -> "Feed"; | |
} | 26 | 26 | } | |
27 | 27 | |||
screen_sequence_diagrams/pull_flashcard.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
labelloc="t"; | 4 | 4 | labelloc="t"; | |
label="[F3] Pull Flashcard"; | 5 | 5 | label="[F3] Pull Flashcard"; | |
node[shape=box, style="rounded,filled,bold"]; | 6 | 6 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 7 | 7 | splines=ortho; | |
nodesep=1.0; | 8 | 8 | nodesep=1.0; | |
"Pull Flashcard Button"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 9 | "Pull Flashcard Button"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 10 | 10 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 11 | 11 | fixedsize=true, width=1.4, height=1.4]; | |
"Server"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 12 | 12 | "Server"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Flashcard added to User's Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 13 | 13 | "Flashcard added to User's Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"POST"[shape=none]; | 14 | 14 | "POST"[shape=none]; | |
labelfloat=true; | 15 | 15 | labelfloat=true; | |
lp=100; | 16 | 16 | lp=100; | |
17 | 17 | |||
"Update Card Rating"[shape=none]; | 18 | 18 | "Update Card Rating"[shape=none]; | |
"SUCCESS"[shape=none]; | 19 | 19 | "SUCCESS"[shape=none]; | |
"FAILURE"[shape=none]; | 20 | 20 | "FAILURE"[shape=none]; | |
21 | 21 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 22 | 22 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 23 | 23 | fixedsize=true, width=1.4, height=1.4]; | |
"Flashcard added to User's Deck"[center=true, fillcolor="#aaaaff", style=filled]; | 24 | 24 | "Flashcard added to User's Deck"[center=true, fillcolor="#aaaaff", style=filled]; | |
"POST"[shape=none]; | 25 | 25 | "POST"[shape=none]; | |
"Pull Flashcard Button" -> "POST"; | 26 | 26 | "Pull Flashcard Button" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 27 | 27 | "POST" -> "Controller"; | |
"Controller" -> "FAILURE"; | 28 | 28 | "Controller" -> "FAILURE"[dir=none]; | |
"FAILURE" -> "Pull Flashcard Button"; | 29 | 29 | "FAILURE" -> "Pull Flashcard Button"; | |
"Controller" -> "Hide Flashcard from Feed"; | 30 | 30 | "Controller" -> "Hide Flashcard from Feed"; | |
"POST" -> "Server"; | 31 | 31 | "POST" -> "Server"; | |
"Server"-> "SUCCESS"; | 32 | 32 | "Server"-> "SUCCESS"[dir=none]; | |
"SUCCESS" -> "Flashcard added to User's Deck"; | 33 | 33 | "SUCCESS" -> "Flashcard added to User's Deck"; | |
"Flashcard added to User's Deck" -> "Update Card Rating" | 34 | 34 | "Flashcard added to User's Deck" -> "Update Card Rating"[dir=none]; | |
"Update Card Rating" -> "Pull Flashcard Button"; | 35 | 35 | "Update Card Rating" -> "Pull Flashcard Button"; | |
36 | ||||
} | 37 | 36 | } | |
37 |
screen_sequence_diagrams/push_flashcard.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
labelloc="t"; | 4 | 4 | labelloc="t"; | |
label="[F1] Push Flashcard"; | 5 | 5 | label="[F1] Push Flashcard"; | |
node[shape=box, style="rounded,filled,bold"]; | 6 | 6 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 7 | 7 | splines=ortho; | |
nodesep=1.0; | 8 | 8 | nodesep=1.0; | |
"Push Flashcard Button"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 9 | "Push Flashcard Button"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 10 | 10 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 11 | 11 | fixedsize=true, width=1.4, height=1.4]; | |
"Server"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 12 | 12 | "Server"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Flashcard Record \n Created in Database"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 13 | 13 | "Flashcard Record \n Created in Database"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"POST"[shape=none]; | 14 | 14 | "POST"[shape=none]; | |
labelfloat=true; | 15 | 15 | labelfloat=true; | |
lp=100; | 16 | 16 | lp=100; | |
17 | 17 | |||
"Card Published in Feed"[shape=none]; | 18 | 18 | "Card Published in Feed"[shape=none]; | |
"SUCCESS"[shape=none]; | 19 | 19 | "SUCCESS"[shape=none]; | |
"FAILURE"[shape=none]; | 20 | 20 | "FAILURE"[shape=none]; | |
21 | 21 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 22 | 22 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 23 | 23 | fixedsize=true, width=1.4, height=1.4]; | |
"Flashcard Record \n Created in Database"[center=true, fillcolor="#aaaaff", style=filled]; | 24 | 24 | "Flashcard Record \n Created in Database"[center=true, fillcolor="#aaaaff", style=filled]; | |
"POST"[shape=none]; | 25 | 25 | "POST"[shape=none]; | |
"Push Flashcard Button" -> "POST"; | 26 | 26 | "Push Flashcard Button" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 27 | 27 | "POST" -> "Controller"; | |
"Controller" -> "FAILURE"; | 28 | 28 | "Controller" -> "FAILURE"[dir=none]; | |
"FAILURE" -> "Push Flashcard Button"; | 29 | 29 | "FAILURE" -> "Push Flashcard Button"; | |
"Controller" -> "POST"; | 30 | 30 | "Controller" -> "POST"[dir=none]; | |
"POST" -> "Server"; | 31 | 31 | "POST" -> "Server"; | |
"Server"-> "SUCCESS"; | 32 | 32 | "Server"-> "SUCCESS"[dir=none]; | |
"SUCCESS" -> "Flashcard Record \n Created in Database"; | 33 | 33 | "SUCCESS" -> "Flashcard Record \n Created in Database"; | |
"Flashcard Record \n Created in Database" -> "Card Published in Feed"; | 34 | 34 | "Flashcard Record \n Created in Database" -> "Card Published in Feed"[dir=none]; | |
"Card Published in Feed" -> "Push Flashcard Button"; | 35 | 35 | "Card Published in Feed" -> "Push Flashcard Button"; | |
36 | 36 | |||
} | 37 | 37 | } | |
38 | 38 | |||
screen_sequence_diagrams/remove_card.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
labelloc="t"; | 4 | 4 | labelloc="t"; | |
label="[D4] Remove a Card from the Deck"; | 5 | 5 | label="[D4] Remove a Card from the Deck"; | |
node[shape=box, style="rounded,filled,bold"]; | 6 | 6 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 7 | 7 | splines=ortho; | |
nodesep=1.0; | 8 | 8 | nodesep=1.0; | |
"View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 9 | "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 10 | 10 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 11 | 11 | fixedsize=true, width=1.4, height=1.4]; | |
"Server"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 12 | 12 | "Server"[fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"POST"[shape=none]; | 13 | 13 | "POST"[shape=none]; | |
labelfloat=true; | 14 | 14 | labelfloat=true; | |
lp=100; | 15 | 15 | lp=100; | |
16 | 16 | |||
"DELETE"[shape=none]; | 17 | 17 | "DELETE"[shape=none]; | |
"FAILURE"[shape=none]; | 18 | 18 | "FAILURE"[shape=none]; | |
19 | 19 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 20 | 20 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 21 | 21 | fixedsize=true, width=1.4, height=1.4]; | |
"POST"[shape=none]; | 22 | 22 | "POST"[shape=none]; | |
"Card Removed from Deck"[shape=none]; | 23 | 23 | "Card Removed from Deck"[shape=none]; | |
"Flashcard Position Updated in Live Feed"[shape=none]; | 24 | 24 | "Flashcard Position\nUpdated in Live Feed"[shape=none]; | |
"View Deck" -> "POST"; | 25 | 25 | "View Deck" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 26 | 26 | "POST" -> "Controller"; | |
"Controller" -> "FAILURE"; | 27 | 27 | "Controller" -> "FAILURE"[dir=none]; | |
"FAILURE" -> "View Deck"; | 28 | 28 | "FAILURE" -> "View Deck"; | |
"Controller" -> "Remove Flashcard Button"; | 29 | 29 | "Controller" -> "Remove Flashcard Button"; | |
"Remove Flashcard Button" -> "DELETE"; | 30 | 30 | "Remove Flashcard Button" -> "DELETE"[dir=none]; | |
"DELETE" -> "Server"; | 31 | 31 | "DELETE" -> "Server"; | |
"Server" -> "Card Removed from Deck"; | 32 | 32 | "Server" -> "Card Removed from Deck"[dir=none]; | |
"Card Removed from Deck" -> "Flashcard Position Updated in Live Feed"; | 33 | 33 | "Card Removed from Deck" -> "Flashcard Position\nUpdated in Live Feed"[dir=none]; | |
"Flashcard Position Updated in Live Feed" -> "View Deck"; | 34 | 34 | "Flashcard Position\nUpdated in Live Feed" -> "View Deck"; | |
} | 35 | 35 | } | |
36 | ||||
screen_sequence_diagrams/review_notification.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
node[shape = box]; | 4 | 4 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 5 | 5 | splines=ortho; | |
nodesep=1.4; | 6 | 6 | nodesep=1.4; | |
"Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 7 | 7 | "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Server"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 8 | 8 | "Server"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
9 | 9 | |||
"Notification"[shape=none]; | 10 | 10 | "Notification"[shape=none]; | |
"UPDATE"[shape=none]; | 11 | 11 | "UPDATE"[shape=none]; | |
12 | 12 | |||
"Server" -> "Notification"; | 13 | 13 | "Server" -> "Notification"[dir=none]; | |
"Notification" -> "Controller"; | 14 | 14 | "Notification" -> "Controller"; | |
"Controller" -> "UPDATE"; | 15 | 15 | "Controller" -> "UPDATE"[dir=none]; | |
"UPDATE" -> "Sidebar Menu"; | 16 | 16 | "UPDATE" -> "Sidebar Menu"; | |
17 | 17 | |||
} | 18 | 18 | } |
screen_sequence_diagrams/section_limit_access.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
// Title | 2 | 2 | // Title | |
labelloc="t"; | 3 | 3 | labelloc="t"; | |
label="[A7] Limit Section Access"; | 4 | 4 | label="[A7] Limit Section Access"; | |
5 | 5 | |||
// Other | 6 | 6 | // Other | |
ratio=0.75; | 7 | 7 | ratio=0.75; | |
node[shape=box, style="rounded,filled,bold"]; | 8 | 8 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 9 | 9 | splines=ortho; | |
nodesep=1.4; | 10 | 10 | nodesep=1.4; | |
"Instructor's Email Client"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 11 | 11 | "Instructor's\nEmail Client"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Admins Page"[center=true, fillcolor="#aaaaff", style=filled]; | 12 | 12 | "Admins Page"[center=true, fillcolor="#aaaaff", style=filled]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | 13 | 13 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | |
fixedsize=true, width=1.8, height=1.8]; | 14 | 14 | fixedsize=true, width=1.8, height=1.8]; | |
"EMAIL"[shape=none]; | 15 | 15 | "EMAIL"[shape=none]; | |
"POST"[shape=none]; | 16 | 16 | "POST"[shape=none]; | |
labelfloat=true; | 17 | 17 | labelfloat=true; | |
lp=100; | 18 | 18 | lp=100; | |
19 | 19 | |||
"SUCCESS"[shape=none]; | 20 | 20 | "SUCCESS"[shape=none]; | |
"FAILURE"[shape=none]; | 21 | 21 | "FAILURE"[shape=none]; | |
22 | 22 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 23 | 23 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.5, height=1.5]; | 24 | 24 | fixedsize=true, width=1.5, height=1.5]; | |
25 | 25 | |||
// Graph | 26 | 26 | // Graph | |
"Instructor's Email Client" -> "EMAIL"; | 27 | 27 | "Instructor's\nEmail Client" -> "EMAIL"[dir=none]; | |
"EMAIL" -> "Admins Page"; | 28 | 28 | "EMAIL" -> "Admins Page"; | |
"Admins Page" -> "POST"; | 29 | 29 | "Admins Page" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 30 | 30 | "POST" -> "Controller"; | |
31 | 31 | |||
"Controller" -> "SUCCESS"; | 32 | 32 | "Controller" -> "SUCCESS"[dir=none]; | |
"SUCCESS" -> "Instructor's Email Client"; | 33 | 33 | "SUCCESS" -> "Instructor's\nEmail Client"; | |
34 | 34 | |||
"Controller" -> "FAILURE"; | 35 | 35 | "Controller" -> "FAILURE"[dir=none]; | |
"FAILURE" -> "Admins Page"; | 36 | 36 | "FAILURE" -> "Admins Page"; | |
} | 37 | 37 | } |
screen_sequence_diagrams/study_deck.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
// Title | 2 | 2 | // Title | |
labelloc="t" | 3 | 3 | labelloc="t" | |
label="[R1] Study Deck" | 4 | 4 | label="[R1] Study Deck" | |
5 | 5 | |||
ratio=0.75; | 6 | 6 | ratio=0.75; | |
//rankdir="LR"; | 7 | 7 | //rankdir="LR"; | |
node[shape=box, style="rounded,filled,bold"]; | 8 | 8 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 9 | 9 | splines=ortho; | |
nodesep=1.4; | 10 | 10 | nodesep=1.4; | |
"Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 11 | 11 | "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"ClassView"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 12 | 12 | "ClassView"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"StudyView Blank"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 13 | 13 | "StudyView Blank"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"StudyView Response"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 14 | 14 | "StudyView Response"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 15 | 15 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 16 | 16 | fixedsize=true, width=1.4, height=1.4]; | |
"POST"[shape=none]; | 17 | 17 | "POST"[shape=none]; | |
labelfloat=true; | 18 | 18 | labelfloat=true; | |
lp=100; | 19 | 19 | lp=100; | |
20 | 20 | |||
"SUCCESS\nUser has at least a card in the deck."[shape=none]; | 21 | 21 | "SUCCESS\nUser has at least a card in the deck."[shape=none]; | |
"FAILURE:\nUser has no card in the deck."[shape=none]; | 22 | 22 | "FAILURE:\nUser has no card in the deck."[shape=none]; | |
23 | 23 | |||
"Sidebar Menu" -> "ClassView"; | 24 | 24 | "Sidebar Menu" -> "ClassView"; | |
"ClassView" -> "POST"; | 25 | 25 | "ClassView" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 26 | 26 | "POST" -> "Controller"; | |
"Controller" -> "FAILURE:\nUser has no card in the deck."; | 27 | 27 | "Controller" -> "FAILURE:\nUser has no card in the deck."[dir=none]; | |
"Controller" -> "SUCCESS\nUser has at least a card in the deck."; | 28 | 28 | "Controller" -> "SUCCESS\nUser has at least a card in the deck."[dir=none]; | |
"FAILURE:\nUser has no card in the deck." -> "Sidebar Menu"; | 29 | 29 | "FAILURE:\nUser has no card in the deck." -> "Sidebar Menu"; | |
"SUCCESS\nUser has at least a card in the deck." -> "StudyView Blank"; | 30 | 30 | "SUCCESS\nUser has at least a card in the deck." -> "StudyView Blank"; | |
"StudyView Blank" -> "POST"; | 31 | 31 | "StudyView Blank" -> "POST"[dir=none]; | |
"Controller" -> "StudyView Response"; | 32 | 32 | "Controller" -> "StudyView Response"; | |
"StudyView Response" -> "POST"; | 33 | 33 | "StudyView Response" -> "POST"[dir=none]; | |
"Controller" -> "StudyView Blank"; | 34 | 34 | "Controller" -> "StudyView Blank"; | |
35 | 35 | |||
} | 36 | 36 | } | |
37 | 37 |
screen_sequence_diagrams/user_login_out.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
labelloc="t"; | 2 | 2 | labelloc="t"; | |
label="[A2] Login & [A8] Logout"; | 3 | 3 | label="[A2] Login & [A8] Logout"; | |
4 | 4 | |||
// Other | 5 | 5 | // Other | |
ratio=0.75; | 6 | 6 | ratio=0.75; | |
node[shape=box, style="rounded,filled,bold"]; | 7 | 7 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 8 | 8 | splines=ortho; | |
nodesep=1.4; | 9 | 9 | nodesep=1.4; | |
"Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 10 | 10 | "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Login/Register Page"[center=true, fillcolor="#aaaaff", style=filled]; | 11 | 11 | "Login/Register Page"[center=true, fillcolor="#aaaaff", style=filled]; | |
"Logout Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | 12 | 12 | "Logout Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | |
fixedsize=true, width=1.8, height=1.8]; | 13 | 13 | fixedsize=true, width=1.8, height=1.8]; | |
"Login Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | 14 | 14 | "Login Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond, | |
fixedsize=true, width=1.8, height=1.8]; | 15 | 15 | fixedsize=true, width=1.8, height=1.8]; | |
"POST"[shape=none]; | 16 | 16 | "POST"[shape=none]; | |
labelfloat=true; | 17 | 17 | labelfloat=true; | |
lp=100; | 18 | 18 | lp=100; | |
19 | 19 | |||
"SUCCESS:\n User logged in"[shape=none]; | 20 | 20 | "SUCCESS:\n User logged in"[shape=none]; | |
"SUCCESS:\n User logged out"[shape=none]; | 21 | 21 | "SUCCESS:\n User logged out"[shape=none]; | |
"Logout FAILURE"[shape=none]; | 22 | 22 | "Logout FAILURE"[shape=none]; | |
"Login FAILURE"[shape=none]; | 23 | 23 | "Login FAILURE"[shape=none]; | |
24 | 24 | |||
"Logout Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 25 | 25 | "Logout Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.8, height=1.8]; | 26 | 26 | fixedsize=true, width=1.8, height=1.8]; | |
"Login Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 27 | 27 | "Login Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.8, height=1.8]; | 28 | 28 | fixedsize=true, width=1.8, height=1.8]; | |
29 | 29 | |||
// Graph | 30 | 30 | // Graph | |
"Sidebar Menu" -> "POST"; | 31 | 31 | "Sidebar Menu" -> "POST"[dir=none]; | |
"POST" -> "Logout Controller"; | 32 | 32 | "POST" -> "Logout Controller"; | |
"Logout Controller" -> "Logout FAILURE"; | 33 | 33 | "Logout Controller" -> "Logout FAILURE"[dir=none]; | |
"Logout FAILURE" -> "Sidebar Menu"; | 34 | 34 | "Logout FAILURE" -> "Sidebar Menu"; | |
35 | 35 | |||
"Logout Controller" -> "SUCCESS:\n User logged out"; | 36 | 36 | "Logout Controller" -> "SUCCESS:\n User logged out"[dir=none]; | |
"SUCCESS:\n User logged out" -> "Login/Register Page" | 37 | 37 | "SUCCESS:\n User logged out" -> "Login/Register Page"; | |
38 | 38 | |||
"Login/Register Page" -> "Login Controller" | 39 | 39 | "Login/Register Page" -> "Login Controller"; | |
"Login Controller" -> "SUCCESS:\n User logged in" | 40 | 40 | "Login Controller" -> "SUCCESS:\n User logged in"[dir=none]; | |
"SUCCESS:\n User logged in" -> "Sidebar Menu" | 41 | 41 | "SUCCESS:\n User logged in" -> "Sidebar Menu"; | |
42 | 42 | |||
"Login Controller" -> "Login FAILURE" | 43 | 43 | "Login Controller" -> "Login FAILURE"[dir=none]; | |
"Login FAILURE" -> "Login/Register Page" | 44 | 44 | "Login FAILURE" -> "Login/Register Page"; | |
} | 45 | 45 | } | |
46 | 46 | |||
screen_sequence_diagrams/user_register.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
// Title | 2 | 2 | // Title | |
//"Login/Logout"[center=true,fillcolor="#ffffff",pos="0,0!",shape=none,fontsize=20]; | 3 | 3 | //"Login/Logout"[center=true,fillcolor="#ffffff",pos="0,0!",shape=none,fontsize=20]; | |
labelloc="t"; | 4 | 4 | labelloc="t"; | |
label="[A1] User Registration"; | 5 | 5 | label="[A1] User Registration"; | |
6 | 6 | |||
// Other | 7 | 7 | // Other | |
ratio=0.75; | 8 | 8 | ratio=0.75; | |
node[shape=box, style="rounded,filled,bold"]; | 9 | 9 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 10 | 10 | splines=ortho; | |
// nodesep=1.3; | 11 | 11 | // nodesep=1.3; | |
nodesep=3.0; | 12 | 12 | nodesep=3.0; | |
ranksep=0.05; | 13 | 13 | ranksep=0.05; | |
"Login/Register Page"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 14 | 14 | "Login/Register Page"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"POST"[shape=none]; | 15 | 15 | "POST"[shape=none]; | |
labelfloat=true; | 16 | 16 | labelfloat=true; | |
lp=100; | 17 | 17 | lp=100; | |
18 | 18 | |||
"SUCCESS:\nValid, send JSON."[shape=none]; | 19 | 19 | "SUCCESS:\nValid, send JSON."[shape=none]; | |
"SUCCESS:\nValid, unverified user created.\nEmail verification message displayed."[shape=none]; | 20 | 20 | "SUCCESS:\nValid, unverified user created.\nEmail verification message displayed."[shape=none]; | |
"FAILURE"[shape=none]; | 21 | 21 | "FAILURE"[shape=none]; | |
"FAILURE:\nData invalid"[shape=none]; | 22 | 22 | "FAILURE:\nData invalid"[shape=none]; | |
23 | 23 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 24 | 24 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.5, height=1.5]; | 25 | 25 | fixedsize=true, width=1.5, height=1.5]; | |
"Server"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 26 | 26 | "Server"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.5, height=1.5]; | 27 | 27 | fixedsize=true, width=1.5, height=1.5]; | |
28 | 28 | |||
// Graph | 29 | 29 | // Graph | |
"Login/Register Page" -> "POST"; | 30 | 30 | "Login/Register Page" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 31 | 31 | "POST" -> "Controller"; | |
32 | 32 | |||
"Controller" -> "FAILURE"; | 33 | 33 | "Controller" -> "FAILURE"[dir=none]; | |
"FAILURE" -> "Login/Register Page"; | 34 | 34 | "FAILURE" -> "Login/Register Page"; | |
35 | 35 | |||
"Controller" -> "SUCCESS:\nValid, send JSON."; | 36 | 36 | "Controller" -> "SUCCESS:\nValid, send JSON."[dir=none]; | |
"SUCCESS:\nValid, send JSON." -> "Server"; | 37 | 37 | "SUCCESS:\nValid, send JSON." -> "Server"; | |
38 | 38 | |||
"Server" -> "FAILURE:\nData invalid"; | 39 | 39 | "Server" -> "FAILURE:\nData invalid"[dir=none]; | |
"FAILURE:\nData invalid" -> "Login/Register Page"; | 40 | 40 | "FAILURE:\nData invalid" -> "Login/Register Page"; | |
41 | 41 |
screen_sequence_diagrams/view_by_pull_time.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
labelloc="t"; | 4 | 4 | labelloc="t"; | |
label="[D2] View A Card by Pull Time"; | 5 | 5 | label="[D2] View A Card by Pull Time"; | |
node[shape=box, style="rounded,filled,bold"]; | 6 | 6 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 7 | 7 | splines=ortho; | |
nodesep=1.0; | 8 | 8 | nodesep=1.0; | |
"View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | 9 | 9 | "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"]; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 10 | 10 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 11 | 11 | fixedsize=true, width=1.4, height=1.4]; | |
"POST"[shape=none]; | 12 | 12 | "POST"[shape=none]; | |
labelfloat=true; | 13 | 13 | labelfloat=true; | |
lp=100; | 14 | 14 | lp=100; | |
15 | 15 | |||
"FAILURE"[shape=none]; | 16 | 16 | "FAILURE"[shape=none]; | |
17 | 17 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 18 | 18 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 19 | 19 | fixedsize=true, width=1.4, height=1.4]; | |
"POST"[shape=none]; | 20 | 20 | "POST"[shape=none]; | |
"View Deck" -> "POST"; | 21 | 21 | "View Deck" -> "POST"[dir=none]; | |
"POST" -> "Controller"; | 22 | 22 | "POST" -> "Controller"; | |
"Controller" -> "FAILURE"; | 23 | 23 | "Controller" -> "FAILURE"[dir=none]; | |
"FAILURE" -> "View Deck"; | 24 | 24 | "FAILURE" -> "View Deck"; | |
"Controller" -> "Sort by Ascending/Descending Time"; | 25 | 25 | "Controller" -> "Sort by Ascending\nor Descending Time"; | |
"Sort by Ascending/Descending Time" -> "View Deck"; | 26 | 26 | "Sort by Ascending\nor Descending Time" -> "View Deck"; | |
} | 27 | 27 | } | |
28 | ||||
screen_sequence_diagrams/view_feed.dot
View file @
7d10b6e
digraph G{ | 1 | 1 | digraph G{ | |
ratio=0.75; | 2 | 2 | ratio=0.75; | |
//rankdir="LR"; | 3 | 3 | //rankdir="LR"; | |
node[shape=box, style="rounded,filled,bold"]; | 4 | 4 | node[shape=box, style="rounded,filled,bold"]; | |
splines=ortho; | 5 | 5 | splines=ortho; | |
nodesep=1.4; | 6 | 6 | nodesep=1.4; | |
labelloc="t"; | 7 | 7 | labelloc="t"; | |
label="[F9] View Feed"; | 8 | 8 | label="[F9] View Feed"; | |
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 9 | 9 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 10 | 10 | fixedsize=true, width=1.4, height=1.4]; | |
labelfloat=true; | 11 | 11 | labelfloat=true; | |
lp=100; | 12 | 12 | lp=100; | |
13 | 13 | |||
"GET"[shape=none]; | 14 | 14 | "GET"[shape=none]; | |
"SUCCESS"[shape=none]; | 15 | 15 | "SUCCESS"[shape=none]; | |
"FAILURE: no cards"[shape=none]; | 16 | 16 | "FAILURE:\nno cards"[shape=none]; | |
17 | 17 | |||
"Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | 18 | 18 | "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, | |
fixedsize=true, width=1.4, height=1.4]; | 19 | 19 | fixedsize=true, width=1.4, height=1.4]; | |
"Root" -> "GET"; | 20 | 20 | "Root" -> "GET"[dir=none]; | |
"GET" -> "Controller"; | 21 | 21 | "GET" -> "Controller"; | |
"Controller" -> "FAILURE: no cards"; | 22 | 22 | "Controller" -> "FAILURE:\nno cards"[dir=none]; | |
"Controller" -> "SUCCESS"; | 23 | 23 | "Controller" -> "SUCCESS"[dir=none]; | |
"FAILURE: no cards" -> "Feed"; | 24 | 24 | "FAILURE:\nno cards" -> "Feed"; | |
"SUCCESS" -> "Feed"; | 25 | 25 | "SUCCESS" -> "Feed"; | |
} | 26 | 26 | } | |
27 | 27 | |||