PageRenderTime 37ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/Src/WS.EKA.Portal/Scripts/models/myMessage.js

http://mobileshop.codeplex.com
JavaScript | 103 lines | 91 code | 12 blank | 0 comment | 9 complexity | 6bbe9f38525b14e22f7166ac2cd69f4e MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause
  1. window.Message = Backbone.Model.extend({
  2. urlRoot: 'api/membermessage/delete/'
  3. });
  4. window.MessageList = Backbone.Collection.extend({
  5. model: Message,
  6. urlRoot: 'api/membermessage/list/',
  7. url: function () {
  8. return this.urlRoot + localStorage.getItem('messagePageIndex');
  9. }
  10. });
  11. window.MessageView = Backbone.View.extend({
  12. el: '#jqt',
  13. initialize: function () {
  14. this.template = $('#MyMessageTemplate').html();
  15. this.messages = new MessageList();
  16. },
  17. events: {
  18. 'click .messageList .deleteMsg': 'deleteMessage'
  19. },
  20. render: function () {
  21. var partial = { header: $('#HeaderTemplate').html(), footer: $('#FooterTemplate').html(),
  22. innerFooter: $('#InnerFooterTemplate').html()
  23. };
  24. var data = { hasBack: true, title: '??', btnListR: [{ name: 'avatar' }, { name: 'home'}] };
  25. this.$el.append(Mustache.render(this.template, data, partial));
  26. this.fetchMessage();
  27. return this;
  28. },
  29. fetchMessage: function () {
  30. var that = this, template;
  31. this.messages.fetch({
  32. success: function () {
  33. var messages = that.messages.models[0].get('Data'),
  34. allCount = that.messages.models[0].get('Count');
  35. if (allCount == 0) {
  36. template = $('#EmptyMessageTemplate').html();
  37. $('.messageList').html(Mustache.render(template, [], []));
  38. $('.footer').hide();
  39. } else {
  40. template = $('#NoEmptyMessageTemplate').html();
  41. var data = { messages: messages }
  42. $('.messageList').html(Mustache.render(template, data, []));
  43. new Plugins.PagingPlugin('.foot-paging', {
  44. allCount: allCount,
  45. pageIndexKey: 'messagePageIndex',
  46. prevCall: function (e) { that.fetchPrev(e); },
  47. nextCall: function (e) { that.fetchNext(e) },
  48. numberClickCall: function (e) { that.fetchSpecific(e) }
  49. });
  50. }
  51. pageView.resizeScroll();
  52. }
  53. });
  54. },
  55. fetchPrev: function (e) {
  56. if ($(e.currentTarget).hasClass('disable')) return;
  57. var pageIndex = localStorage.getItem('messagePageIndex');
  58. localStorage.setItem('messagePageIndex', +pageIndex - 1);
  59. this.fetchMessage();
  60. },
  61. fetchNext: function (e) {
  62. if ($(e.currentTarget).hasClass('disable')) return;
  63. var pageIndex = localStorage.getItem('messagePageIndex');
  64. localStorage.setItem('messagePageIndex', +pageIndex + 1);
  65. this.fetchMessage();
  66. },
  67. fetchSpecific: function (e) {
  68. var target = $(e.currentTarget);
  69. if (target.hasClass('gray')) return;
  70. var index = +target.attr('index');
  71. localStorage.setItem('messagePageIndex', index);
  72. this.fetchMessage();
  73. },
  74. deleteMessage: function (e) {
  75. var target = $(e.currentTarget),
  76. msgid = target.closest('li').attr('msgid');
  77. var message = new Message({
  78. id: 1,
  79. msgId: msgid
  80. });
  81. message.url = message.urlRoot + msgid;
  82. message.destroy({
  83. success: function (model, res) {
  84. if (res && res == 202)
  85. pageView.goTo('MyMessage');
  86. else
  87. pageView.goTo('ErrorPage');
  88. }
  89. });
  90. }
  91. });