landeaux / spawa-client Goto Github PK
View Code? Open in Web Editor NEWStartUpNV Pitch Application Web App (Client-Side)
StartUpNV Pitch Application Web App (Client-Side)
The API services and Vuex actions for Reviewer functionality need to be implemented.
Since email addresses are subject to change outside of the app (e.g. HubSpot), handling for the login form and related vuex actions, API service, etc, need to be changed to pass the username & password to the login route instead of email & password.
The following dependencies must be resolved before work on this issue can begin:
Login.vue
template to capture user's username in the form and pass the username to the LOGIN vuex action called in the onSubmit
method.The appropriate API services and Vuex actions need to be added for Admin functionality (e.g. create/suspend/delete users, etc.).
Items in the Admin Dashboard User list need to have a link to the user's profile. The easiest way to do this be to turn the username into a link which goes to that user's profile.
AdminDashboardUserListItem
so that username is a link to the user's profileThe PitchDeck Vuex module needs to be updated to handle passing admin comments to the PitchDeck API service for /rework, /reject, /accept routes.
The remaining Founder Dashboard functionality needs to be implemented.
statusBadgeVariant
to change dynamically with user's pitchdeck statusstatusBadgeText
to change dynamically with user's pitchdeck statusinstructText
to change dynamically with user's pitchdeck statusreviewCount
to change dynamically based on the number of reviews on their pitchdeckshowResubmitPitchDeckButton
to change dynamically based on user pitch deck lock date (HAS DEPENDENCIES)onFeedbackButtonClick
onResubmitPitchDeckButtonClick
statusBadgeVariant
to change dynamically with on user's pitchdeck status'UNDER_REVIEW' => info
'ACCEPTED' => success
'REJECTED' => danger
statusBadgeText
to change dynamically with on user's pitchdeck status'UNDER_REVIEW' => 'UNDER REVIEW'
'ACCEPTED' => 'ACCEPTED'
'REJECTED' => 'NOT ACCEPTED'
instructText
to change dynamically with user's pitchdeck status'UNDER_REVIEW': use the text that's there now
'ACCEPTED': add some message indicating they've been accepted and they can now book a pitch date
'REJECTED': add some message politely indicating their pitch deck was not accepted. Will need feedback from stakeholders on exact verbage, for which we'll update later.
reviewCount
to change dynamically based on the number of reviews on their pitchdeckYou'll need to fetch the pitch deck by the id denoted by currentUser.pitchDeck
. Then store the response in the component data. Once you have the pitch deck, you can get the count from pitchDeck.reviews.length
showResubmitPitchDeckButton
to change dynamically based on user pitch deck lock date (HAS DEPENDENCIES)This is dependent on some back-end work, so skip for now
onFeedbackButtonClick
When the feedback button is clicked it should trigger the modal window containing the list of reviews for that pitch deck. Should only trigger if the button is not disabled.
onResubmitPitchDeckButtonClick
When the resubmit pitch deck button is clicked, a modal should pop up with the pitch deck upload form.
The Home.vue
component needs to be updated to conditionally render the appropriate user dashboard based on the user's role. If the user is not logged in, then the user needs to be routed to the login component.
The following issues must be completed before work on this issue can begin:
The initial Founder dashboard layout needs to be implemented. Once Founders submit a pitch deck, they will be routed to their user dashboard and provided with data regarding their pitch deck, including the date submitted, the current status of the pitch deck ('Under Review", "Accepted", "Rejected"), number of reviews, links to their aggregated feedback, and a button to re-submit their pitch deck.
The main focus on this issue is just to set up the layout and design of the dashboard. Since the API endpoints haven't been implemented yet, just use hard-coded dummy data for now. We will revisit the Founder dashboard when the API endpoints have been implemented on the server side of the app and make the store connections and API services at that time.
Create the following components in the /components
directory
FounderDashboard.vue
ReviewerDashboard.vue
EvaluatorDashboard.vue
AdminDashboard.vue
For now, these components will only take one prop: user
, which will be a required prop of type of Object
. At this time, the template shall only display a title for the dashboard (e.g. "Founder Dashboard") in an <h1>
element, and a greeting in a <p>
element which will use the username prop from the user object in it (e.g. "Welcome back, Chris!").
Instructions on how to open a pitch deck needs to be added to the Pitch Deck Review form, probably up top near where the Download button is located.
The Modify User modal in src/components/AdminDashboardUserListItem.vue
needs to be updated to be a form for editing user values.
The following dependencies must be resolved before work on this issue can begin:
In the Modify User modal, when text is entered in the password field, the Submit button activates, as expected. However, if the user clears the password field, the Submit button is still active, when it should be disabled again.
For some reason, the Calendly widget is not loading properly when using Firefox. Several console errors pop up when the /book-pitch-date
view is hit. This needs to be investigated and resolved as we want the widget to work in all major browsers (Chrome, Firefox, Safari, and Edge).
Help text needs to be added to the form fields on the Pitch Deck Review form. See this google form for the help text to add: https://docs.google.com/forms/d/e/1FAIpQLSdCzwzEC3hnqmcAeMYiBEvnyFXyYBzV2xzy5mzg_HAzXxv7aw/viewform
Add the ability to accept, deny, or defer pitch deck status.
A generic list controls component needs to be created which can be re-used for any list in the app (pitch deck list, user list, etc). The component will act as a header above the list and contain three input fields: a text input for search, and two select (drop down) inputs for sort and filter. When a user makes a selection from either sort or filter input, or enters input in the search, the component will emit the appropriate event with the value to the parent component. Any parent component using this component would listen for these events and perform the necessary action on the list below it
BaseListControls
search-input
event with the value of the search input field as a user enters textsort-select
event with the value of the sort option selectedfilter-select
event with the value of the filter option selectedsortOptions
propfilterOptions
propsortOptions
filterOptions
BaseListControls
component according to the above specFor some reason, iframes are intermittently not loading on initial view render. An example would be with HubSpot form views, such as SubmitEapp.vue
. I suspect the issue is related to the vuex store and the currentUser getter, which the form views use to conditionally render the iframe for the HubSpot form.
The Admin Dashboard User List needs to be updating to include a role column so admins can quickly see what role each user is in. The AdminDashboardUserList
and AdminDashboardUserListItem
will need to be updated to achieve this.
For each item in the user list, the role prop needs to be rendered between the username and the created date.
AdminDashboardUserList
and AdminDashboardUserListItem
according to above requirements/descriptionThe Admin Dashboard User List needs to include controls above it for filter, search and sort inputs to allow admins to control the display of the user list.
Below are the different options for filtering/sorting:
AdminDashboardUserList
shall use the BaseListControls
component (See #56 ) to provide the user list controlsBaseListControls
component's filterOptions
and sortOptions
propsAdminDashboardUserList
shall listen for the search-input
, sort-select
, and filter-select
events and dynamically filter/sort the list appropriatelyThe following dependencies must be resolved before work on this issue can begin:
AdminDashboardUserList
according to the requirements aboveCurrently, when a user is modified, there is no indicator that a request has failed.
The modify user modal needs to display an error when the server responds with an error. Additionally, while a request is being made, the loading animation needs to be displayed.
Users in the founder
role need to have their User state prop updated at the appropriate moments, based on where they are at in the app. For example, if the user submits the Eapp, their user state needs to be updated to watch_pitch_video
.
Additionally, the beforeRouteEnter
hook needs to be updated to route the user to the appropriate view based on their user state, so that when users log into the site, they are sent back to the next step they need to be complete. Note that this only applies to user's in the founder
role, so additional logic needs to be added to make sure we aren't routing non-founder
users.
When a user clicks on their profile name, if they are not an admin they are not being shown their profile.
The Additional Comments field needs to be provided for Founders to see. Currently this field is omitted for founders to see. NOTE: The backend will need to updated to actually provide that data, as currently it also omits the additional comments for Founders. For now, just add the field as if the data were coming back.
The API services and Vuex actions for PitchDeck functionality need to be implemented.
The initial Admin dashboard needs to be implemented according to the design mock-up (see slack).
In order for admins to create users, the src/components/AdminDashboardCreateUser.vue
file needs to be updated with the appropriate Vuex connections.
src/components/AdminDashboardCreateUser.vue
src/components/AdminDashboardCreateUser.vue
src/components/AdminDashboardCreateUser.vue
file needs to be updated to dispatch the CREATE_USER
Vuex action with the user object generated from the form as the payload.The Eapp form needs to be encapsulated in a View component. Upon form submission, the values need to be sent to the create contact route of the HubSpot Contacts API, using the HUBSPOT_API_KEY
node environment variable for the api key parameter in the api endpoint url.
HUBSPOT_API_KEY
to the .env
file and set it equal to your API key./views
directory named Eapp.vue
and add the minimal boilerplate to make it work./router/index.js
) for the route to the Eapp view. Test that it works by going to the route you added.Eapp.vue
component with the appropriate Eapp fields stated in the spec.FounderDashboard.vue
that goes to the Eapp route and verify it routes the user there when clicked.The initial Reviewer dashboard needs to be implemented according to the design mock-up (see slack).
A comment box needs to be added to the Return For Rework, Accept, and Reject modals on the Admin's Pitch Deck List so that admins can provide comments to the Founder about the reason for the Pitch Deck being sent back. The comments should be added to the payload of the corresponding Vuex action, alongside the pitchDeckId.
Is your feature request related to a problem? Please describe.
Currently, access to the user's settings, profile, and the logout are all spread out in different places. For example, to access their profile, a user clicks on their profile name on the right-hand side of the navigation bar. To the left they have a Settings link they can click to go their settings. Finally, to log out they have to go to their settings and then click the logout button at the bottom. None of this is ideal.
Describe the solution you'd like
What we would like to do is consolidate these links into a user menu dropdown. When the user hovers over their username, a dropdown should appear with links to their profile, settings, and logout.
Describe alternatives you've considered
Another way to trigger the dropdown could be from a click instead of a hover event over the username. Also, instead of the username, we could use the user's profile image as an icon (see the Github user menu dropdown).
Additional context
None.
In order for Founders to be able to book a pitch date, they need access to the calendly widget. This needs to be a custom embedding (https://help.calendly.com/hc/en-us/articles/360020052833-Advanced-embed-options) so that the front-end can capture data such as the booked event, invitee, etc and link it to the user.
A solution could be using the vue-calendly npm package (https://github.com/officert/vue-calendly) or rolling our own custom component.
Create a modal window used to submit a review for a user.
In order for admins to see a list of all users, the src/components/AdminDashboardUserList.vue
file needs to be updated with the appropriate Vuex connections.
src/components/AdminDashboardUserList.vue
src/components/AdminDashboardUserList.vue
src/components/AdminDashboardUserList.vue
file needs to be updated to dispatch the FETCH_USERS
Vuex action to get the list of all users and their data.src/components/HubSpotFormWidget.vue
, src/views/WatchPitchVideo.vue
, src/views/BookPitchDate.vue
, or src/views/Home.vue
to see how it is used elsewhere).AdminDashboardUserListItem
components to render the list. If the fetch was unsuccessful, the error message should be rendered on the page instead (not a modal window, directly on the page).Replace pitch deck list components with b-table bootstrap vue component
All Post-related logic needs to be removed, as Posts are not going to be a feature in the actual app. All api services, routes, components, etc related to Posts needs to be removed.
Comments given by Admins when a Pitch Deck is returned for rework, accepted, or rejected need to be displayed on the Founder Dashboard. The requested location is underneath the status bar but above the What Should I Do Now? section. The comments will be available via the adminComments
prop.
The Profile view needs to be updated to display HubSpot contact info instead of irrelevant fields like bio
and image
. Also, the user Settings view needs to be updated with these old fields removed.
The layout and styling needs to be updated for all of the HubSpot form views, as well as the pitch video view according to the mock-up design (see Slack).
BaseHubSpotFormView
WatchPitchVideo
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.