PageRenderTime 43ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/webapp/js/app/views/overviewview.js

https://bitbucket.org/jtorelli/intersource-ticketing-system-demo
JavaScript | 138 lines | 106 code | 20 blank | 12 comment | 5 complexity | 0f3cc8e23c2b8c10363b51af1aca442f MD5 | raw file
Possible License(s): GPL-2.0, MIT
  1. App.Views.OverviewView = App.Views.TabbedView.extend({
  2. showTab: false,
  3. events: {
  4. },
  5. render: function () {
  6. this.model = new Backbone.Model();
  7. // TODO: pull from api/message
  8. this.model.set('message', '');
  9. this.template = this.getTemplate('Overview');
  10. this.$el.html(this.template(this.model.toJSON()));
  11. // TODO: a little clumsy
  12. // fake a view here
  13. this.tabView = {
  14. select: function () {
  15. $('li.overview').addClass("selected-navigation");
  16. }
  17. }
  18. this.loadAllContent();
  19. return this;
  20. },
  21. loadAllContent: function(){
  22. var self = this;
  23. // load various tabs
  24. // 1) ticketlist tab
  25. var ticketSet = new App.Collections.TicketSet();
  26. // TODO: add error handler
  27. ticketSet.fetch({
  28. success: function(collection, response) {
  29. self.LoadAllTickets(collection);
  30. }
  31. });
  32. //$tab1.html('<p>All new content. <em>You bet!</em></p>')
  33. // 2) Ticket tab --- later
  34. },
  35. LoadAllTickets: function (collection) {
  36. var $tab1 = this.$('#tab1').html('');
  37. var ticketListColumns =
  38. [
  39. ["id"],
  40. ["modified", "Date", "D MMM YYYY"],
  41. ["title"]
  42. ];
  43. // load tickets in drafts status
  44. // TODO: tickets should never be in null status but tickets created from previous builds are having null status
  45. var draftTickets = collection.search([null,'Draft']);
  46. var draftHeaders =
  47. [[
  48. "drafts are incomplete", App.Collections.TicketSet.Aggregate.countIncomplete
  49. ],
  50. [
  51. "drafts are more than 1 week old", App.Collections.TicketSet.Aggregate.moreThanAWeekOld
  52. ]];
  53. $tab1.append(new App.Views.TicketListView({
  54. model: {
  55. "tickets": draftTickets,
  56. "headers": draftHeaders,
  57. "columns": [
  58. ["id"],
  59. ["modified", "Date", "D MMM YYYY"],
  60. ["title"]
  61. ]
  62. },
  63. title: "DRAFT TICKETS"
  64. }).render().el);
  65. var recentTickets = collection.searchWithMethod(function(data) {
  66. if (data == null) return false;
  67. if (data.get("status") != 'Submitted') return false;
  68. if (data.daysSinceSubmission() > 14) return false;
  69. return true;
  70. });
  71. var recentTicketHeaders =
  72. [[
  73. "tickets have been submitted in the last week", App.Collections.TicketSet.Aggregate.createdInDateRange(0, 7)
  74. ],
  75. [
  76. "tickets have been submitted in the last 2 weeks", App.Collections.TicketSet.Aggregate.createdInDateRange(8, 14)
  77. ]];
  78. // load tickets in submitted status
  79. $tab1.append(new App.Views.TicketListView({
  80. model: {
  81. "tickets": recentTickets,
  82. "headers": recentTicketHeaders,
  83. "columns": [
  84. ['CMId', 'Link', 'http://sams.cable.comcast.com/cgi-bin/arnie.cgi?OPT_M=CM_PRINT&TICKET={0}'],
  85. ['modified', 'Date', 'D MMM YYYY'],
  86. ['title']
  87. ]
  88. },
  89. title: "RECENT CM TICKETS"
  90. }).render().el);
  91. var historicalTickets = collection.search(["Submitted"]);
  92. var ageOfOldest = App.Collections.TicketSet.Aggregate.getOldestAge(historicalTickets, 'months');
  93. var countPreviousMonths = ageOfOldest > 1? ageOfOldest - 1: 1;
  94. var historicalTicketHeaders =
  95. [[
  96. "tickets have been submitted in the last month",
  97. App.Collections.TicketSet.Aggregate.createdInDateRange(0, 30)
  98. ],
  99. [
  100. ("tickets have been submitted in the " + countPreviousMonths +
  101. " " + (countPreviousMonths > 1?"months":"month") + " previous"),
  102. App.Collections.TicketSet.Aggregate.createdInDateRange(30, -1)
  103. ]];
  104. // load tickets in submitted status
  105. $tab1.append(new App.Views.TicketListView({
  106. model: {
  107. "tickets": historicalTickets,
  108. "headers": historicalTicketHeaders,
  109. "columns": [
  110. ['CMId', 'Link', 'http://sams.cable.comcast.com/cgi-bin/arnie.cgi?OPT_M=CM_PRINT&TICKET={0}'],
  111. ['modified', 'Date', 'D MMM YYYY'],
  112. ['title']
  113. ]
  114. },
  115. title: "HISTORICAL CM TICKETS"
  116. }).render().el);
  117. }
  118. });