User Interaction Design
基本的假设
0.1. 如果该app从没有登录过,该app上的current user就空帐号(null@null.null),数据库里的所有用户名都是这个。
0.2. 发起上传(Upload过程)。将本地所有synced=false的数据上传。本地创建的数据id在上传结束后,修改成服务器给的全局id。
0.3. 发起下载(Download过程)。将服务器上所有没有同步下来的数据下载:
current_user所在的所有组。以及这些组的所有组成员。
current_user所在的所有组的所有paper。
以及这些paper关联的pdf与note。
0.4. 滑出侧栏的时候,pdf上的底栏必须消失。
0.5. 在第一次上传数据以前,本地创建的数据id统统以 L 开头,以区别是本地创建的id还是服务器给回来的id。
一旦第一次上传成功后,本地数据id需要更新为服务器给回来的id。
0.6. 每次开app,或检测到联网,点击手动sync,定时检查。以上这些事件,导致后台开始发起下载(Download过程)。
0.7 paper_info的xml格式: <paper><title>XXX</title><author>A</author><author>B</author><abstract>BBBB</abstract><pdf_url>http:/www.www/</pdf_url></paper>
1.注册/登录。(必须联网,图6,7)
1.1. 点击Account Tab。跳出登录侧栏。
1.2. 点击Login Account。跳出Browser显示一个注册/登录页面。
1.3. 注册页面上,要求Google Account验证。(使用OAuth技术,参考http://code.google.com/appengine/docs/python/oauth/overview.html 的做法, 例子http://www.latexlab.org )
1.4. 登录完。如果已经注册转6。否则,会出现一个同意(Grant)或(Deny)的画面(OAuth技术自动生成的页面)
1.5. 完成成功注册画面。服务器端,在user table中新建用户,username=他的email。在group table中新建该用户专用组, group_id就是他的email。
1.6. 成功登录。本地把App的全局存储中的current user改成当前登录用户。
1.7. 如果该app从没有登录过,我们认为这些数据都是属于这个登录用户的,发起上传(Upload过程):所有数据库中的数据和对应的pdf(上传的时候,把数据中的空帐号都改成current user)
如果该app被其他帐号登录过,我们就专门为这个新用户新建一个新数据库(数据库文件名以用户名命名,比如说没有登录的app的默认数据库就是"null@null.null"),
但不删掉原来的数据库。
1.8. 然后根据current user的名字,下载和这个用户有关的所有表(Download过程):
其所在的所有组。以及这些组的所有组成员。
其所在的所有组的所有paper。以及这些paper关联的pdf与note。
存入本地数据库。
2. Note List Broswer (图还没有画)
2.1 点击Note List Tab。跳出侧栏。
2.2 侧栏列出所有的当前paper的下的所有Note。点击note就可以跳到pdf相应的位置。
3. Academic Search PDF下载。(必须联网,图4)
3.1 点击Academic Search Tab。跳出侧栏,侧栏顶端是一个Search Bar。
3.2 在Search bar输入关键字以后,调用Academic Search API。在侧栏中,返回搜索结果。
3.3 点击搜索结果后,在侧栏的右边再滑出一个侧栏,显示PDF相关信息(Title, Author, Abstract, 下载PDF的按钮)
3.4 点击下载PDF的按钮,系统跳出一个进度条,后端开始下载。(这个时候可以取消进度条,但不能响应其他界面的事件)
3.5 下载完成后。本地在paper table 中新建一个paper,paper_id为本地的唯一paper_id。在paper_info写入一些关于这个paper的xml信息(见0.7)。
并在paper_group_membership中,加上该paper_id属于current user专属group。
3.6 发起上传(Upload过程)。
4. Wifi PDF下载。(必须Wifi,如图3)
4.1 点击File Management Tab。跳出侧栏,侧栏右测上方是一个Wifi按钮。
4.2 点击Wifi按钮。跳出一个浮动的对话框,显示已经开启Wifi,与当前ipad的地址,如http://192.168.1.200:10000/
4.3 在PC上访问http://192.168.1.200:10000/, 网页显示上传文件的界面。
4.4 在PC上传文件。上传完成后,ipad上的数据操作同3.5,3.6。
5. 文件浏览 (如图1)
5.1 点击File Management Tab。
跳出侧栏,侧栏上方有4个Tab:All, Recent Uploaded, Stared, Trash。默认停留在All。
5.2 Tab上方有一个Search Bar。在Search Bar中,输入查找关键词。下面的List出现只包含这个关键词的List,并且加粗关键词部分。
5.3 点击pdf,调用pdf view,本地数据库修改该paper的paper_info,记录最后一次阅读的日期。
5.4 如果联网就发起上传,paper_info中的变动。
6. 文件管理 (如图2)
6.1 同 5.1
6.2 可以点击Edit,进入删除模式,每一个文件后面都出现了一个delete button,点击delete 后。
客户端在paper_group_membership 数据库中,在该paper_id和current_user所在专有组对应的条目中,Removed=true,synced=false
6.3 如果联网就发起上传,paper_group_membership中的变动。(upload过程)
7. paper分享 (必须联网,图5)
7.1 在浏览当前的paper(current_paper)的状态下,点击Share Tab。
7.2 侧栏中显示,该paper的信息,和该paper所属的group。
7.3 点击add,跳出对话框,输入要新加入的group id,询问是直接把current_paper加入这个group,还是复制一份新的paper_id。本地向服务器提交该请求(保证已经把该paper同步到服务器了)。服务器收到请求后,给该group的管理员(create_user)发信。成功后,客户端跳出一个成功邀请的对话框。如果没有该group则返回跳出一个group不存在的对话框。
7.4 group的管理员收到邮件以后,点击邮件中的链接(含确认码)。进入一个确认分享的页面,点击确认以后,服务器的将真的把该paper加入group。
7.3’ 删除一个paper group的关系的过程,类似7.3,7.4。
8. group分享 (必须联网,图5)
8.1 同7.1
8.2 同7.2
8.3 点击某个group,右侧滑出侧栏,将显示所有该group的成员。
8.4 在group成员侧栏中,点击add,加入新成员至这个group。输入要新加入的user id。本地向服务器提交该请求。服务器收到请求后,给该user发信。成功后,客户端跳出一个成功邀请的对话框。如果没有该user则返回跳出一个group不存在的对话框。
8.5 user的管理员收到邮件以后,点击邮件中的链接(含确认码)。进入一个确认分享的页面,点击确认以后,服务器的将真的把该user加入group。
图 1
图2
图3
图4
图5
图6
图7
posted on 2011-05-18 22:15 take it and go 阅读(357) 评论(1) 编辑 收藏 举报