Advertisement
Guest User

Untitled

a guest
Jul 17th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.51 KB | None | 0 0
  1. # Calendar App
  2.  
  3. ## Overview
  4.  
  5. A one page calendar app
  6.  
  7. ## Initial Proposal
  8.  
  9. I initially proposed this as an application for managing items needed for the events. Here is the original proposal:
  10.  
  11. ```
  12. An events/physical resources calendar:
  13. - This fancified calendar application would help aid an institution in planning their events.
  14. - There is always the potential for multiple overlapping events across multiple event spaces.
  15. - These events could potentially also have the need for physical resources (think tents, catering equipment, etc).
  16. - The user would be allowed to enter a base inventory of all the resources available to them
  17. - From their, they can start to create events, and assign these resources to events(in other words, checking them out of inventory for the time period of the event)
  18. - The application would respond with feedback if their is a resource conflict for a particular time frame.
  19. ```
  20.  
  21. The more I think about it, the more I would like to make this a personal calendar app, and focus on making a small set of application features function in a very intuitive, user-friendly, and one-pagey way. I would also love focusing my energy on a small JS library outlined below.
  22.  
  23. ## Technologies/Libraries
  24.  
  25. - Rails/Postgres
  26. - Jquery
  27. - Jquery animations
  28. - Date/time library
  29.  
  30. #### Custom Calendar Library
  31.  
  32. - A small custom JS Library for keeping internal state of calendar on the client side.
  33. - This would be a factory for `month` objects. They would hold all the info for a month
  34. - Initialized with the month, year, and event info from an AJAX response in the app.
  35. - This would allow for months of info to retrieved from the server and stored in client memory before it is needed, speeding up load times. Info changed via calls to the server will also need to be changed in these objects.
  36. - It will be naive about discerning bad info from the good. The business logic of the app will be solely responsible for whether or not the data gets updated in these objects. (Means that a 200 status must come back from async callback before an event is CRUDed)
  37. - Would have a date/time library dependency that gives the object its generic month definitions (Month starts Wednesday, is 30 days long etc). This will allow the object to inform the main calendar view what dates to fill in where.
  38. - API feature ideas:
  39.  
  40. ```javascript
  41. month = new Month('December', '2015', json_parsed_event_info) // correct syntax?
  42. month.events(22); // events for the 22nd of the month
  43. month.event(id); // event with given id
  44. month.add_event(event_object);
  45. month.update_event(event_object);
  46. month.delete_event(event_id);
  47. month.next('December', '2015'); //> ['January', '2016']
  48. ```
  49.  
  50.  
  51. # User Stories
  52.  
  53. ## View Month
  54.  
  55. As a user <br />
  56. I want to view a single month on my calendar <br />
  57. so that I can see what days have events
  58.  
  59. #### Acceptance Criteria
  60. [ ] When a user accesses the root of the application, they should see an overview of the current month. <br />
  61. [ ] A user will see the current day highlighted. <br />
  62. [ ] Days in partial weeks belonging to another month will be grayed out. <br />
  63. [ ] Events will have indicator dots that tell the user whether their is an event on that day (empty for no events, filled signifies 1 event or more).
  64.  
  65.  
  66. ## View Other Months
  67.  
  68. As a user <br />
  69. I want to view other months <br />
  70. so that I can look ahead in time and behind
  71.  
  72. #### Acceptance Criteria
  73. [ ] A user will see left pointing arrow at the top of the page for navigating to past months. <br />
  74. [ ] A user will see right pointing arrow at the top of the page for navigating to future months. <br />
  75. [ ] These navigation elements ideally will not illicit another page load, but rather JS will repopulate the page with the correct info.
  76.  
  77. ## View Day's Events
  78.  
  79. As a user <br />
  80. I want to view a days event's <br />
  81. so that I can plan my day
  82.  
  83. #### Acceptance Criteria
  84.  
  85. [ ] A user will click on a day, and a pane will open up, splitting the calendar grid. Calendar grid will split just under the selected day, pushing rest of calendar grid downward). <br />
  86. [ ] Clicking on the same day will close the event pane
  87. [ ] Clicking on a day in the same row will not close the pane, but rather information will simply be replaced. <br />
  88. [ ] Clicking on a day in a different week will slide the current pane closed and open a new one under the new row. <br />
  89. [ ] The pane will contain cards, each with one event's info on it.
  90.  
  91.  
  92. ## View Single Event
  93.  
  94. As a user <br />
  95. I want to view a single event <br />
  96. So I can see that event's information
  97.  
  98. #### Acceptance Criteria
  99. [ ] An event card will contain the event's start time, end time, title, and description. <br />
  100. [ ] A event card will contain a "more" button which will gray out the background in front of a popup window with expanded event information.
  101.  
  102. ## Create Event
  103.  
  104. As a user <br />
  105. I want to be able to create an event <br />
  106. so that I can keep track of obligations
  107.  
  108. #### Acceptance Criteria
  109. [ ] The new event form will have the same visual footprint as an event card, and will be located in the event pane, to the right of existing events if any. <br />
  110. [ ] A start time must be before an end time. <br />
  111. [ ] Title cannot be blank. <br />
  112. [ ] Description is optional. <br />
  113. [ ] Form will contain 'time helpers' (ie, the application will translate '11a' typed in by the user to '11:00 AM', or whatever format it needs)
  114. [ ] Upon successful form submission, a page reload will not happen, instead the form will be replaced with the new event card.
  115.  
  116. ## Edit Event
  117.  
  118. As a user <br />
  119. I want to edit and event <br />
  120. so I can update an events information
  121.  
  122. #### Acceptance Criteria
  123. [ ] Each event card will have an edit button. This will transform the card back to an autofilled form. <br />
  124. [ ] Each event edit will have all the typical attributes to be updated, plus the ability to change the day that the event is on. <br />
  125. [ ] Upon successful form submission, the form crd is transformed back into an event card, or in the case that the day of the event changes, disappears to another day.
  126.  
  127. ## Delete Event
  128.  
  129. As a user <br />
  130. I want to delete an event <br />
  131. so I can remove cancelled obligations
  132.  
  133. #### Acceptance Criteria
  134. [ ] Each event card will have a delete button. <br />
  135. [ ] Delete button will prompt the use with "Are you sure?" With yes or no options. <br />
  136. [ ] Deleting an event in the middle of a list of events will prompt cards on the right to shift left, closing the gap created by deleted card.
  137.  
  138. ## More Ideas
  139.  
  140. - A search feature that would search events and open a new view, displaying results by relevance. Each result wold have a link back to the main page displaying that event in its proper context.
  141.  
  142.  
  143. :smile:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement