mindpin / TouchIdea

0 stars 1 forks source link

0.2 控制器层需完成交互汇总 #31

Closed destinyd closed 9 years ago

destinyd commented 9 years ago

根据页面来排

列表

  1. 最新/最热 (最热算法未知,没做,默认是最新排序)
  2. 随机打开一条未投票的议题(没做,若没有了,应该怎么处理?)
  3. 分页读取(已经支持json形式)

    搜索

  4. 搜索,返回js(已经做了,但是不知道返回的东西,是否符合要求)

    新建议题

  5. 普通议题
  6. 分享点评(除infocard获取)

表单提交都已经实现

提醒

  1. 提醒翻页(后台已经会根据分页参数page,做不同的json返回)

    用户

  2. 参与议题翻页(未作翻页)
  3. 发起议题翻页(未作翻页)
  4. 通知设置(李飞已经完成)
  5. 反馈(李飞已经完成)

    议题详情页

  6. 投票/点赞(基于最新的情况看来,一次可以投多个,原来已经实现的是单个投票)
  7. 补充一个选项
  8. 取消投票/点赞(不确定是否要做,需确认)
destinyd commented 9 years ago

随机打开一条未投票的议题

已完成。 对于没有未投票的议题时,设置了

flash[:error]

并返回到列表页

destinyd commented 9 years ago

@ben7th 需要解答下

  1. 列表,最热排序的算法
  2. 搜索需要返回数据(现在返回id,标题,选项总和,参与用户总和。看是否足够了)
  3. 通知(提醒),现在返回完整的json(直接message.as_json),看是否需要调整
  4. 点赞,一次投多个,需要返回什么?
  5. 取消点赞是否要做
ben7th commented 9 years ago

针对上面的问题的回答:

最热排序的算法

在数据库的议题记录上增加一个值,代表议题创建时“属于哪一周”。

例如,议题是 2015年4月14日下午创建的,而当前周的第一天是2015年4月13日,就把该值记录为 20150413

显示数据的时候,先根据该值排序议题,越靠后的周创建的,越显示在前面;然后,议题投票数越多的,越显示在前面。

最后的效果就是,当前周内创建的,会显示在前面;上周创建的,会显示在后面;上上周创建的,会显示在更后面;每一周内都是按照议题投票数多少来排序的,议题投票数多的在前面。


搜索需要返回的数据

是说返回 JSON 吗?如果是 JSON 的话。返回这些数据:ID,标题,选项总数,参与用户总数,总投票数。


通知返回的信息

可以返回完整的 JSON


在一个议题中一次投票多个选项时返回什么

不管一次投一个还是投多个,事实上前端只需要一个 200 的响应状态,因为点击“投完了”按钮的时候就已经进入下一页了。


取消投票是否要做

要做。如果用户通过任何方式点回了同一个议题,他可以取消/修改已经投过的投票。 只要他投了任何一个选项,“投完了”按钮是亮起的,并且用户点了,就按他此时的投票为准。 但用户做不到取消所有投票,因为一个选项都不投时,按钮不亮。


其他注意事项:

为了方便讨论时理解一致,以后都按照“对议题中的选项进行投票”或“投票”来说明用户的投票行为。不再使用“点赞”这种说法(需求组目前都是按“投票”来称呼的)

系统中所有的列表,都需要支持分页,20个一页。体验上的话,使用无限向下滚动显示新内容的方式。 类似这里的体验:http://img.4ye.me/zmkm/images 实现来说,可以用 kaminari 支持分页,然后再进行前端上的一些处理。

destinyd commented 9 years ago

最热排序

已经实现,并且在页面里实装

destinyd commented 9 years ago

搜索需要返回的数据

已经完成

destinyd commented 9 years ago

多个投票

取消投票

均已完成

destinyd commented 9 years ago

补充一个选项

完成

添加选项js,移至

app/views/vote_items/create.js.coffee
destinyd commented 9 years ago

只能补充一个选项

完成

ben7th commented 9 years ago

已集成到 0.2