Giter VIP home page Giter VIP logo

crisiscleanup / crisiscleanup-4-web Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 1.0 17.43 MB

Current Crisis Cleanup Web Application (Version 4) based on Vue 3. This version was launched March 10, 2023.

Home Page: https://www.crisiscleanup.org/

License: Apache License 2.0

JavaScript 1.17% TypeScript 27.91% CSS 0.01% HTML 1.13% Vue 69.47% SCSS 0.05% Shell 0.14% Dockerfile 0.12%
collaboration coordination crisis-cleanup disaster disaster-relief gis volunteer vuejs3 typescript

crisiscleanup-4-web's Introduction

Crisis Cleanup Build Status

Crisis Cleanup is a collaboration platform that connects disaster recovery organization volunteers with people who need help after a disaster. The Crisis Cleanup platform has been used to connected 631,620 volunteers from 1,704 organizations with 80,905 households in 48 states/provinces and 143 disasters in 7 countries; a new disaster every two weeks.

Crisis Cleanup works best in a collaborative environment where multiple voluntary organizations and agencies work together and coordinate efforts. Because these organizations do not take orders from one another, Crisis Cleanup is designed to facilitate Collaborative Accountability models of inter-agency interaction, rather than command-and-control operations, or or heirarchical accountability models of interaction.

This is the repository for the main Crisis Cleanup web application, a collaborative map-based coordination tool. This implementation is built with Ruby on Rails, a PostgreSQL database and run on the Heroku stack. A newer version of Crisis Cleanup is under development, written in Python and Vue.js, located at: https://github.com/CrisisCleanup/crisiscleanup-web

Contribute

Other Project Stats (As of 2020-03-22)

  • 25%: Increase in volunteer efficiency through re-engagement and elimination of time spent on travel, coordination, collaboration, and management.
  • 20,226: Households that could not have been helped without Crisis Cleanup.
  • 4.9 Million: Number of volunteer hours facilitated.
  • 1,210,000: Volunteer hours that would have otherwise been wasted in management, travel, and overhead without Crisis Cleanup.
  • $526.4 Million: Minimum total market value of services to survivors.
  • $833: Value of each cleanup volunteer to his/her community.
  • $131.6 Million: Market value of services to survivors that would have otherwise been wasted in travel, management, overhead, and standing in lines.
  • $46,929: Money Crisis Cleanup has saved survivors every single day since July 18, 2012.
  • $9,586: Average commercial value of service to each homeowner.
  • $187: Return on investment to survivors, for every $1 invested in Crisis Cleanup. How we calculate these statistics: http://blog.crisiscleanup.org/2017/10/how-we-calculate-value-of-services.html

Supporters

We thank BrowserStack for supporting Crisis Cleanup by providing live and automated browser testing tools.

crisiscleanup-4-web's People

Contributors

aarontitus avatar bradenm avatar datgamingstache avatar deepanchal avatar hueachilles avatar imgbotapp avatar nabryant299 avatar pablo014 avatar renovate[bot] avatar tabiodun avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

waqaszafar59

crisiscleanup-4-web's Issues

Location Tool: Suggest Existing Location

Bug
If a location is already associated with a location type and associated object (such as an incident or organization), then the locations/new tool should recommend that the user edit the existing location, rather than

To Reproduce
Steps to reproduce the behavior:

  1. Go to /locations/new
  2. Select something like Furthest Damage Extent or Primary Response Area
  3. Select an incident or organization with a known entry for those location types.
  4. Error: The system does not link to edit the existing location

Expected behavior
The system should recognize that a location with those attributes exists, and link to it.

Screenshots
Example: Team Rubicon already has a primary response area. When this combination is selected, they should
Should Suggest Existing Relationship

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Extra help

We need a new tab where we can share additional help suggestions and items:

  • Add a new tab next to News | Training called "User Guide".

image

basically just clone what we have for news.
  • Via localizations, we will add articles
  1. a link to the google document manual that volunteer Laurie Roe made
  2. something Aaron said.... I forgot..
  3. how to turn off pop up blocker
  4. how to change the status of a case
  5. another mini tip
  6. another mini trick
  7. so on and so forth.

Update IVR Music

Describe the problem
The existing Hold Music is causing PTSD for some of the developers.

Describe the solution

  • Find out where the error message is located that says you need to go to vacd.biz and take a walk because the carrier isn't playing nice.
  • Choose new hold music.
  • Add periodic voiceovers with short instructions including:
  • Every two minutes, a reminder of how much longer to wait
  • "After you talk to someone, we may text or email you a link so can upload photos of the damage and add notes."
  • "Crisis Cleanup helps connect you with local volunteers after a disaster. We can't promise you will be helped, but we WILL make your information available to as many relief organizations as possible."
  • "Crisis Cleanup is a lot like Craigslist. We don't have volunteers of our own. Instead, we help local volunteers find you. This means a lot more people get help. But it also means that we cannot estimate when you will be helped."
  • "If you were affected by a flood, remember that drywall does not dry out. If you are able, cut the drywall to at least 18 inches above the water line mark, in a straight line. When the drywall is replaced, workers will probably install new 4 x 8 foot sheets. Often, this means that even if you have three inches of water, you might want to remove 48 1/2 inches of drywall to make installation easier."
  • "Mold damages property and can cause health problems. Some species of mold are toxic; others cause irritation. Some people are sensitive to mold, while others are not. While most mold species are not toxic to most people, it is impossible to accurately distinguish among species without a laboratory test. Therefore, treat mold with caution. Look up CDC safety guidelines for working with mold. The most important factor in eliminating mold is to remove moisture. Mold remediation can take several weeks, and should be done by a professional. Never replace drywall on wet studs. Mold will grow right through the wall again."
  • "Ask your city or county if they require you to separate garbage at the curb. For example, batteries and paint should be separated from wood and drywall. Always place smaller items in contractor garbage bags to help sanitation workers collect it."
  • "Although every disaster is different, cities and counties will often pick up disaster debris for a week or two after the disaster. But then they quickly run out of money. After that, it usually falls to the homeowner to remove debris from the home."
  • "Remember, disasters are, by their nature, overwhelming. If it wasn't overwhelming, we'd call it an inconvenience, not a disaster. So if you're feeling a little overwhelmed, you're not alone, and you're probably doing it right. Although recovery can take months or years, this, too will pass. Spend time with neighbors who were also affected. Spending time together can provide great support for everyone."

Additional context and instructions
Add any other context or screenshots about the feature request here.

Forced Phone Training

doing it the right way, all agents must pass the training. so do the following:

  1. if you have not done any one of the required training modules, then you are prompted to go do the training first.
  • yellow button says "start training"

  • Start training button launches the training module

  • Any undone training says "Start" and is red.

  • All completed trainings say "Review" and are yellow

  • These buttons should be consistent on the main dashboard page and the big training pop up screen.

  • once all trainings are completed, your magic yellow button will now say "Start taking calls"

Crisis Caller Use Cases

Problem
Problem 1: During a widespread infectious disease outbreak (e.g. Corona Virus), membership organizations need to check up on members on a periodic, regular basis without exhausting volunteers or putting them at undue risk.
Problem 2: After a disaster, community organizations with members want to determine which of their members are safe or affected by the disaster.

Solution
USE CASE 1:

  • An admin creates an incident called "Corona Virus (CVOID-19) Outbreak," including an affected area, which must be updated on a regular basis. E.g., if someone in Denver has a confirmed case of the Corona Virus, then the admin might add a 50-mile radius around Denver. Phone calls will only be sent in the affected area, to prevent panic and fatigue.
  • A leader of a membership organization or group such as a faith community ("Leader") registers the organization at coronacaller.org or some other URL.
  • Leader uploads a list of members in a standard format, e.g. by downloading a standard Excel file, and re-uploading it.
  • The only required information is a phone number, though there should be some minimum requirement that 75% or more also contain location data such as an address or lat/lon. This encourages sharing data on a map (rather than just hoarding all of the data to themselves, but allowing flexibility when Leaders do not have an accurate address. Fields include:
    • First and Last Name
    • Address or lat/lon
    • Language
  • Leader confirm/chooses periodic schedule for calls to go out
    • No more frequently than weekly.
    • Target timeframe (hours of the day, day of the week)
    • End date (no more than 3 months)
  • Leader confirms/chooses a caller ID phone number
    • Choose a custom number based on area code OR
    • Enter their own phone number. If they choose their own number, they must prove they control the phone number by verifying with a phone call and entering a custom code.
  • Leader confirms/chooses Polling questions. Polling questions will be pre-formulated, but the leader can choose the ones they want to include. They will be translated into multiple languages. E.g.
    • Do you or someone in your household feel sick, but have not been diagnosed?
    • Have you or someone in your household been diagnosed with CVOID-19 (the Corona Virus)?
    • Have you evacuated?
    • Each question will have at least one follow-up question.
  • Leader Records introduction/greeting or chooses default introduction
    • Optionally includes introduction/greeting in more than one language.
    • System calls the leader, who reads a suggested script into the phone, which is recorded and posted.
    • Leader also records a "callback" introduction message for people who may miss the call and call it back.
  • Outbound phone calls go out on the specified schedule.
  • All calls include a default disclaimer about how the information is used, with a reference to an online privacy policy.
  • An end user answers the phone call, listens to the introduction, and then selects responses to the questions using a keypad or voice recognition.
  • They will have three questions: 1. Type of damage/disruption. 2. Whether they have enough resources/supplies to be self-sufficient. 3. Question about emotional state or needs.
  • End user may also leave a message.
  • As soon as they respond, a dot appears on a PDA map, showing the type of distress,
  • User can select settings on the phone call. These include:
    • Call vs. text preferences
    • Frequency and time of day selection
    • Opt out completely
    • Change privacy settings (e.g. share personal information with public, just your organization, or other organizations)
  • All reports are added to a shared PDA map. Organizations have access to all personal information from their members. Personal information for other points on the map are hidden, per Crisis Cleanup's typical rules. "Claiming" is not allowed.
  • If the end user left a message, then the icon contains a "Play" button to listen to the message.
  • A user who missed a call can call the number back.
    • If they call from the phone number the system originally called, then they may enter a report using the same process above.
    • If they call a number used by only one organization, but from an unrecognized phone number, then they may enter a report after they are prompted to enter their address, either using a dial pad or voice recognition.
  • The system will need to comply with text and robocall laws (opt out, time of day)
  • Ensure that organizations do not have access to other parts of Crisis Cleanup, possibly through roles. Note: This might be the first step to integrating other services like donations management and volunteerism, and portals.

USE CASE 2:

  • Same as above, except for disaster preliminary damage assessments

Additional context and instructions
Add any other context or screenshots about the feature request here.

quick color change needed

on the map, some icons are black. the key only says they should be grey.

Change the color from 29, 29, 29 to 127, 127, 127. and that should do the trick.

From this color
image

to this color
image

Create "Bug Report" on Phone System

Add a "Bug Report" button to the phone page. When clicked, the user must add notes describing the bug.
Most bugs will occur in the connection between RingCentral and the volunteer. Grab as much data as possible, especially the phone number (i.e. inbound if available), and all possible telemetry data from RingCentral.
Dump all of the data into the events table.

Log all calls that are in a connecting state for more than 30 seconds. Close calls in connecting state over 60 seconds, and change status to "Technical Difficulty," and alert user.

Design Helpdesk Center

We currently use Zendesk for all of our helpdesk and education. While the system is great, it is centralized, and relies upon one or two administrators to answer all of the questions. Most of the questions could be answered by super-user peers, and then escalated if necessary.

  • Submit helpdesk ticket
  • Users who activate the Helpdesk module will be able answer or escalate tickets.
  • Anything like Zendesk would be great, but less centralized; simple and open source is fine.

Design for the following Formats:

  • Desktop
  • Tablet
  • Smartphone
  • App
    Final Output
  • Wireframe or PSD

Turn Alternative addressing on and off, in intake form

Problem
Sometimes various alternative addressing systems are relevant or not. Alternative addressing systems include What3Words and Google Plus Codes. Sometimes these are important, and other times they just get in the way.

Solution
Implement settings in incident_incidents.attr to turn on or off alternative addressing systems for various incidents.
See https://github.com/CrisisCleanup/crisiscleanup-3-api/issues/56

That issue refers to the API development, while this issue refers to the UI implementation

Add Training Section to Phone System

Describe the problem
Finally implement the Edu/ Training system into the Phone System

Describe the solution
Create a Training section in the Phone system that contains all trainings (and tests, questions, etc) where edu_trainings.tags_t contains "edu.phone". Include the ability to take tests.

Additional context and instructions
Add any other context or screenshots about the feature request here.

Upgrade the case/calls graph

upgrade the graph to show colors by incident (so you can see when a disaster happened and how much of the call volume is related too which disaster. will probably need too include an "other" catch all for calls not associated with any incident.

image

Incident wizard location is not named or editable

Describe the bug
When creating an incident through the wizard, the Locations widget does not work as expected:

  1. The Location type should be Maximum Damaged area.
  2. The Location should be named [Incident Name]: [Location Type], i.e. "Hurricane Ida: Maximum Damaged Area" failure to name it makes the location impossible to search or edit elsewhere.
  3. The Wizard should allow me to edit an existing location. Currently I can only add a location, but not edit it.

Recruit user sender (Front End)

In order to get more agents to help us call more people, we will want to have the option to have exiting people recruit more help.

When an agent clicks the "Recruit more volunteers" button found in case CrisisCleanup/crisiscleanup-3-web#383 it should pop to this page where we will do the actual recruiting.
image

image

Build this page. include the existing org user control.

Manage User Notifications Settings

Problem
Users should be able to manage their notification settings. New notifications will be developed as new features are created.

Solution
Any time we create a new notification, we need to be able to add an opt-out/opt-in checkbox on the User Profile. Notifications settings are stored in user_users.preferences.
Known notifications include:

  • New Incident Notifications
  • Request Work Type Notifications
  • New or Moving User Requests
  • Affiliate Requests
  • Periodic Reports
  • Custom Reports
  • Organization Registration Notifications
  • Location Approval Notifications
  • Moving Users to New Organizations Notifications
  • Incident Access Approvals
  • User Roles Approvals
  • Organization Role Approvals
  • Phone volunteer needs

Additional context and instructions
Add any other context or screenshots about the feature request here.

Auto Text Message for VM and missed calls

Describe the problem
Many people respond to text messages instead of phone calls and voice messages.

Describe the solution

  • When setting the status of the call to one of the following statuses, automatically open a small text area with a pre-filled text message in English and Spanish. Add a checkbox, "Send Text Message," with default checked.
  • Prefill with phoneDashboard.callback_sms or phoneDashboard.calldown_sms, as appropriate, in English and Spanish.
  • Record the sent text message in message_messages.
  • Apply to any status where phone_statuses.primary_state = no-answer, or .status begins with no-answer.
  • Note: these localizations include the replacement string, {ani}, which is the relevant phone number for the current incident.

Additional context and instructions

Hourly Admin Alerts for Missed Calls

Describe the problem
Admins need to know when the phone system is under stress, and if more volunteers are needed to cover the phones. Currently I receive an email for every missed phone call, which is a pain.

Describe the solution
Every hour between 6am-12am Eastern, check to see if callbacks have increased. If so, send an email to admins, where all relevant information is in the Subject Line:
"Today: 1,500 calls, 175 missed, 13 volunteers"
The body of the email may be blank.

Only send email if calls increase 1 or more from previous hour, AND only for active ANI/incident combination. Calculate stats based on Eastern time.

Additional context and instructions
Add any other context or screenshots about the feature request here.

Expose the manage cases information in the get all for cases assigned in team management

2022-07-05

Currently in team management, there is a discrepancy between the summary of the cases assigned. The summary cases assigned shows the amount of worktypes that are assigned, however that shouldnt be the case. When trying to resolve this issue I realized there is nothing in the data that we get back for getting all teams to calculate the amount of cases assigned like what is shown in the manage cases section

Upgrade Worksite History

Group by: User, then by Event. So "Add Data to Worksite" appears one time, even if they added 15 pieces of data.
Change the History icon to a People icon
Most recent timestamp
Name of person
The event name, i.e. "Add Data to Worksite"/user_join_worksite-data_with_worksite, not "Added data "{patient_label_t}" to case {recipient_case_number} in {incident_name}"/user_join_worksite-data_with_worksite_pt.

Also, change the name of the icon/section from "History" to "Team." And change the icon from a piece of paper to a person icon.

Notify Organizations of New Incident in their Area

Problem
Organizations want to be notified when a new incident has been created.

Solution
Send an email alert to certain individuals in an organization when a new incident is created, where any incident location intersects with an organization's Primary or Secondary Response area.

  • Send to: all organization Primary Contacts and Incident Primary Contacts that have not blocked these types of notifications (See #165 )
  • All Primary Contacts and Incident Primary Contacts should be able to edit the thresholds when they receive alerts.
  • Set thresholds per Primary and Secondary Response Area.
  • Set thresholds in terms of number of cases that either exist or are unclaimed
    For example, you might want to know about all incidents that occur within your Primary Response Area. But you might only want to hear about incidents in your Secondary Response Area when there are 1,000 unclaimed cases.
  • Non-primary contacts can also sign up for these alerts manually, and set their own thresholds.
  • Defaults: All new incidents within primary response area. All incidents within secondary response area that reach at least 100 cases.
  • Email alert contains a link that will automatically give the organization access to the new incident without needing administrator help.

Additional context and instructions
Dependency: #165

"Updated" Slider Should Work for Less than 1,000 cases

Problem: Currently the "Updated" slider has a resolution of 1,000. This means that weird things happen when an incident has fewer than 1,000 cases. The current workaround is to omit the slider when the case load is less than 1,000.
Instead, make the resolution dynamic: Set it to the number of currently existing cases if the number is less than 1,000, and 1,000 if the total number of cases is greater than or equal to 1,000.

Vue 3 Migration Guide

Vue 3 Migration Guide

Resources

Please read through the following resources before working on this issue (Highly Recommended)

Steps

Migration from Vue2 to Vue3 will be a four step process:

Image

Install

  • Install "vue": "^3.1.0-0" (The Vue 3.1 migration build is a “special” version of Vue 3 that allows your existing Vue 2 app to run in a Vue 2-compatible mode)
  • Install "@vue/compat": "^3.1.0-0"
  • Remove "vue": "2.6.12"
  • Install dev dependency "@vue/compiler-sfc": "^3.1.0-0"
  • Remove dev dependency "vue-template-compiler": "2.6.12"
  • Create vue.config.js file with the following contents:
    module.exports = {
      chainWebpack: config => {
        config.resolve.alias.set('vue', '@vue/compat')
    
        config.module
          .rule('vue')
          .use('vue-loader')
          .tap(options => {
            return {
              ...options,
              compilerOptions: {
                compatConfig: {
                  MODE: 2
                }
              }
            }
          })
      }
    }

Fix Errors

When running the development server with yarn serve-dev, you will see errors for incompatible changes. These errors will most likely occur in *.vue files. However, it is also possible for errors to come from vue mixins.

From Vue3 docs: In Vue 2, mixins were the primary mechanism for creating reusable chunks of component logic. While mixins continue to be supported in Vue 3, Composition API is now the preferred approach for code reuse between components. https://vuejs.org/api/options-composition.html#mixins

See files list below in Required file changes section. Refer to the following cheatsheet: https://www.vuemastery.com/migration-guide-cheat-sheet/

Fix Warnings

Once the dev server is free of errors, you should focus on fixing warnings. See files list below in Required file changes section. Refer to the following cheatsheet: https://www.vuemastery.com/migration-guide-cheat-sheet/

Migrate VueX & Vue Router to v4

  • Update vuex & related deps to be compatible with vue 3
  • Update vue-router & related deps to be compatible with vue 3

Uninstall

  • Remove "@vue/compat": "^3.1.0-0" dependency. Run yarn install
  • Next, remove the Vue import and the configuration from main.js:
    import /* Vue,*/ { createApp } from 'vue' // CHANGE
    import App from './App.vue'
    
    // Vue.configureCompat({ WATCH_ARRAY: false }) REMOVE
    
    createApp(App).mount('#app')
  • Delete vue.config.js

(Maybe) Required file changes

src/components
    components
  ├── __stories__
  ├── __tests__
  │  └── __snapshots__
  │     ├── Autocomplete.test.js.snap
  │     ├── Badge.test.js.snap
  │     ├── BaseButton.test.js.snap
  │     ├── BaseCheckbox.test.js.snap
  │     ├── BaseIcon.test.js.snap
  │     ├── BaseInput.test.js.snap
  │     ├── DragDrop.test.js.snap
  │     ├── FormSelect.test.js.snap
  │     ├── OverlayMap.test.js.snap
  │     ├── Spinner.test.js.snap
  │     ├── Storyshots.test.js.snap
  │     ├── Table.test.js.snap
  │     ├── Tag.test.js.snap
  │     ├── WorksiteFilters.test.js.snap
  │     ├── WorksiteSearchInput.test.js.snap
  │     ├── WorksiteStatusDropdown.test.js.snap
  │     └── WorkTypeRequestModal.test.js.snap
  ├── accordion
  │  └── Accordion.vue
  ├── admin
  │  ├── events
  │  │  ├── EventForm.vue
  │  │  ├── EventPreview.vue
  │  │  └── EventSearchTable.vue
  │  ├── GhostUsersTable.vue
  │  ├── incidents
  │  │  ├── IncidentForm.vue
  │  │  ├── IncidentFormBuilder.vue
  │  │  └── NestedBuilderItem.vue
  │  ├── InvitationRequestTable.vue
  │  ├── InvitationTable.vue
  │  ├── OrganizationsTable.vue
  │  └── UsersTable.vue
  ├── AdminEventStream.vue
  ├── AjaxTable.vue
  ├── ArcGisUploader.vue
  ├── AssessmentTree.vue
  ├── Autocomplete.vue
  ├── Avatar.vue
  ├── Badge.vue
  ├── BaseButton.vue
  ├── BaseCheckbox.vue
  ├── BaseIcon.vue
  ├── BaseInput.vue
  ├── BaseLink.vue
  ├── BaseRadio.vue
  ├── BaseText.vue
  ├── buttons
  │  └── ProgressButton.vue
  ├── Capability.vue
  ├── CapabilityItem.vue
  ├── cards
  │  ├── Card.vue
  │  ├── case
  │  │  ├── CaseCard.vue
  │  │  └── CaseTile.vue
  │  ├── Case.vue
  │  ├── TabbedCard.vue
  │  └── TitledCard.vue
  ├── CardStack.vue
  ├── CaseHeader.vue
  ├── ChangeOrganizationModal.vue
  ├── charts
  │  ├── __tests__
  │  │  └── __snapshots__
  │  │     └── LineChart.test.js.snap
  │  ├── BarChart.vue
  │  ├── BarLineChart.vue
  │  ├── CaseDonutChart.vue
  │  ├── CircularBarplot.vue
  │  ├── D3BarChart.vue
  │  ├── GaugeChart.vue
  │  ├── LineChart.vue
  │  ├── SiteActivityGauge.vue
  │  ├── TotalCases.vue
  │  └── WeeksToCompletion.vue
  ├── chat
  │  ├── Chat.vue
  │  └── ChatMessage.vue
  ├── CmsViewer.vue
  ├── CompletedTransferModal.vue
  ├── DatabaseAccess.vue
  ├── dialogs
  │  ├── ComponentDialog.vue
  │  ├── MessageBox.vue
  │  ├── MessageResponseDialog.vue
  │  ├── OrganizationApprovalDialog.vue
  │  └── SelectionDialog.vue
  ├── DisasterIcon.vue
  ├── DragDrop.vue
  ├── Editor.vue
  ├── EventCard.vue
  ├── EventTimeline.vue
  ├── FileUpload.vue
  ├── FloatingInput.vue
  ├── forms
  │  ├── LocaleForm.vue
  │  ├── LoginForm.vue
  │  └── ModelSelectInput.vue
  ├── FormSelect.vue
  ├── FormTree.vue
  ├── GroupSearchInput.vue
  ├── header
  │  ├── Header.vue
  │  ├── PhoneStatus.vue
  │  └── UserProfileMenu.vue
  ├── home
  │  ├── Actions.vue
  │  ├── Footer.vue
  │  └── SideNav.vue
  ├── IncidentApprovalTable.vue
  ├── IncidentList.vue
  ├── Incidents.vue
  ├── ItemEditor.vue
  ├── JsonWrapper.vue
  ├── LayerUploadTool.vue
  ├── Loader.vue
  ├── LocationTable.vue
  ├── LocationTool.vue
  ├── LocationViewer.vue
  ├── MapButton.vue
  ├── MergeOrganizations.vue
  ├── Modal.vue
  ├── navigation
  │  ├── __tests__
  │  │  └── __snapshots__
  │  │     ├── NavButton.test.js.snap
  │  │     └── NavMenu.test.js.snap
  │  ├── NavButton.vue
  │  ├── NavMenu.vue
  │  └── PewPewNavBar.vue
  ├── Newspost.vue
  ├── notifications
  │  ├── BannerOverlay.vue
  │  └── BetaBanner.vue
  ├── OrganizationActivity.vue
  ├── OrganizationActivityModal.vue
  ├── OrganizationApprovalTable.vue
  ├── OrganizationSearchInput.vue
  ├── OverlayMap.vue
  ├── phone
  │  ├── ActiveCall.vue
  │  ├── Agent.vue
  │  ├── AgentActions
  │  │  ├── Actions.vue
  │  │  └── Resources.vue
  │  ├── AgentBoard
  │  │  ├── Board.vue
  │  │  ├── CallInfo.vue
  │  │  ├── Nav.vue
  │  │  └── Status.vue
  │  ├── AgentCard.vue
  │  ├── AgentStats.vue
  │  ├── CallerIDEditCard.vue
  │  ├── Cards
  │  │  └── StatsCard.vue
  │  ├── CCP.vue
  │  ├── ContactMoreInfo.vue
  │  ├── EditAgentModal.vue
  │  ├── GeneralStats.vue
  │  ├── Leaderboard.vue
  │  ├── ManualDialer.vue
  │  ├── NewsCard.vue
  │  ├── PhoneComponentButton.vue
  │  ├── PhoneIndicator.vue
  │  ├── PhoneNews.vue
  │  ├── Popup.vue
  │  ├── ScriptPopup.vue
  │  ├── Training.vue
  │  ├── TrainingsCard.vue
  │  ├── TrainingsModal.vue
  │  ├── UpdateStatus.vue
  │  └── Widgets
  │     ├── CallHistory.vue
  │     ├── CallVolumeChart.vue
  │     ├── ContactTable.vue
  │     ├── GeneralStatistics.vue
  │     ├── Leaderboard.vue
  │     ├── NewsTrainingCard.vue
  │     ├── OutboundDialer.vue
  │     └── PhoneDebugger.vue
  ├── PublicMap.vue
  ├── RecurringSchedule.vue
  ├── reports
  │  └── ExampleReports.vue
  ├── RequestRedeploy.vue
  ├── SectionHeading.vue
  ├── Slider.vue
  ├── Spinner.vue
  ├── StatusDropdown.vue
  ├── SviSlider.vue
  ├── Table.vue
  ├── tabs
  │  ├── LightTab.vue
  │  ├── Tab.vue
  │  └── Tabs.vue
  ├── Tag.vue
  ├── tags
  │  └── LanguageTag.vue
  ├── TermsandConditionsModal.vue
  ├── Ticker.vue
  ├── Timeline.vue
  ├── Toggle.vue
  ├── TreeMenu.vue
  ├── user
  │  └── DetailsTooltip.vue
  ├── UserRolesSelect.vue
  ├── UserSearchInput.vue
  ├── UserTransferRequestTable.vue
  ├── Version.vue
  ├── wizard
  │  ├── Step.vue
  │  └── Wizard.vue
  ├── WorksiteFilters.vue
  ├── WorksiteImageSection.vue
  ├── WorksiteImport.vue
  ├── WorksiteMap.vue
  ├── WorksiteReportSection.vue
  ├── WorksiteSearchInput.vue
  ├── WorksiteStatusDropdown.vue
  ├── WorkTypeMap.vue
  └── WorkTypeRequestModal.vue
  
src/pages
  pages
  ├── __stories__
  ├── admin
  │  ├── AdminCms.vue
  │  ├── AdminCosts.vue
  │  ├── AdminDashboard.vue
  │  ├── AdminEvents.vue
  │  ├── AdminIncidentWizard.vue
  │  ├── AdminOrganization.vue
  │  ├── AdminTicketDashboard.vue
  │  ├── IncidentLocationEditor.vue
  │  ├── Index.vue
  │  └── sds.vue
  ├── CaseFlag.vue
  ├── CaseForm.vue
  ├── CaseHistory.vue
  ├── Cases.vue
  ├── CaseView.vue
  ├── Dashboard.vue
  ├── Flag.vue
  ├── home
  │  ├── About.vue
  │  ├── Contributions.vue
  │  ├── Login.vue
  │  ├── Map.vue
  │  ├── Privacy.vue
  │  ├── RegisterOrganization.vue
  │  ├── RequestAccess.vue
  │  ├── RequestPasswordReset.vue
  │  ├── Survivor.vue
  │  ├── Terms.vue
  │  └── Training.vue
  ├── Location.vue
  ├── NotFound.vue
  ├── organization
  │  ├── __tests__
  │  ├── Affiliates.vue
  │  ├── CreateTeamModal.vue
  │  ├── Index.vue
  │  ├── Invitations.vue
  │  ├── InviteUsers.vue
  │  ├── Layers.vue
  │  ├── Profile.vue
  │  ├── TeamDetail.vue
  │  ├── Teams.vue
  │  ├── UserEditModal.vue
  │  ├── Users.vue
  │  └── UserView.vue
  ├── OtherOrganizations.vue
  ├── phone
  │  ├── PhoneMap.vue
  │  ├── PhoneSystem.vue
  │  └── PhoneToolBar.vue
  ├── phone_legacy
  │  ├── ConnectFirstIntegration.vue
  │  └── Index.vue
  ├── Profile.vue
  ├── RedeployRequest.vue
  ├── Reports.vue
  ├── unauthenticated
  │  ├── Capability.vue
  │  ├── DownForMaintenance.vue
  │  ├── EmbedMap.vue
  │  ├── IncidentList.vue
  │  ├── InvitationSignup.vue
  │  ├── PewPew.vue
  │  ├── PreliminaryAssessment.vue
  │  ├── PrintToken.vue
  │  ├── ResetPassword.vue
  │  └── Survivors.vue
  ├── WorksiteNotes.vue
  └── WorksiteTable.vue
  
src/mixins
  mixins
  ├── capability.js
  ├── connect_first.js
  ├── d3BaseChart.js
  ├── dialogs.js
  ├── enums.js
  ├── events.js
  ├── incident.js
  ├── index.js
  ├── locale.js
  ├── localStorage.js
  ├── rc.js
  ├── training.js
  ├── user.js
  ├── validate.js
  └── worksite.js
  

Allow Users to Customize Table View Columns

Problem
Allow users to customize which columns they see in the table view, and scroll right or left to see additional columns off-screen. 3.1 Release.

Solution
Next to the "Update Status" button, add a "Display" dropdown. Allow users to choose which columns to display. By default, only include standard columns. When not all columns are displayed, include a small yellow dot with a number indicating how many columns are displayed. See screenshot below.
When there are more columns than can fit on the screen, activate right/left arrows that allow the user to scroll left and right to see additional columns.

Screenshots
https://projects.invisionapp.com/share/JRMDYNG4Q9Z#/screens/313827239
Customize Columns
Display Columns Select

Proposed Easter Eggs

Describe the problem
Sometimes Easter Eggs are just fun.

Describe the solution
Alternative Disaster Types: When a user double-clicks on the icon for a disaster, it should cycle through a series of fake disaster icons:

  • Sharknado
  • Godzilla
  • King Kong
  • Zombies
  • Dirty Diaper
  • Screaming child
  • Alien Invasion
  • Piranha Attack

Literal Pew-Pew map: When a logged-on user clicks a hidden link (i.e. disguised as something else, or a white-on-white link) near the bottom of the home page, bring up a modal with a multiple-choice test.
What sound do Star Wars lasers make?

  • "Bang bang"
  • None
  • "Wa-pa-pa-pa-pa-pa-pow"
  • "Zap Zap"
  • "Hiss"
  • "Pew Pew"
  • "Pop Pop"
  • "Crack Crack"
  • "Sizzle"
  • None of the above
    If they guess wrong, forward them to the Urban Dictionary reference to Pew Pew: https://www.urbandictionary.com/define.php?term=pewpew.
    If they guess "Pew Pew," then reload the page with the real-time map with the laser mod, with Aaron's voice literally saying "Pew Pew" with each laser beam.

Additional context and instructions
Add any other context or screenshots about the feature request here.

Implement User Roles/User Edit Nav Bar

Problem
Different users will have access to different modules of the system, based on user role. For example, the Phone module is hidden by default, to simplify the UI. Users should be able to add it very easily.

Solution
Add a "+" at the bottom of the nav bar, where users can add additional modules to the nav bar, such as "Phone." Or in the future, "Donations."
See CrisisCleanup/crisiscleanup-3-web#18
https://invis.io/WSWBJ383VKC#/378961681_Settings_Menu

Create an easy way for users to activate any/all of the following modules:

Helpdesk Support Agent Module (See Issue CrisisCleanup/old-crisiscleanup-3-web#57 )
Advanced Mapping Module (See Issue CrisisCleanup/old-crisiscleanup-3-web#61 )
Phone Agent Module (See Issue CrisisCleanup/crisiscleanup-3-web#8 )
Translation Module (See Issue CrisisCleanup/old-crisiscleanup-3-web#39 )

Any other module created in the future

Some modules will automatically appear depending on the user's role. For example:

Affiliate Organizations/ Organization Settings Modules: Appears if user is a Primary Contact (See Issues CrisisCleanup/old-crisiscleanup-3-web#63, CrisisCleanup/crisiscleanup-3-web#12 )
Portal Admin Module: Appears only if the user is a Portal Admin (See Issue CrisisCleanup/crisiscleanup-3-web#17 )

Also, some modules will automatically activate if a user chooses a specific role (e.g. "Support Agent", Issue CrisisCleanup/crisiscleanup-3-web#16 )

Other Instructions:

If a module requires a higher-level role, then the user is directed to Switch Roles, which may require approval from someone else in the organization.

Serve outbound weirdness

Turned on the Serve Outbound just to see
image

  1. still never got this call to serve up: 2.
    image

however it did start firing off other calls to me... Ironically the number on the screen was NOT the number dialed.
image

Not sure if this is an issue or the fact that we are crossing databases and such..

Teams: Delete a Team will first "Delete" all assigned cases AND Team members then delete.

When you click the Delete button on a team, it wants to 1st be sure you have removed all cases and team members before it will work.. therefore if you have any of those, it currently does nothing.

(edit): delete is actually not working

Now when you click delete,

  • Un-assign all cases in the exact same way you manually can do it via ui.
  • manually un-assign all users in the exact same way you manually can do it now via ui

Update TOS and Privacy Policy for mobile, and survivors

Describe the problem
Update TOS and Privacy Policy for mobile, and survivors
Email primary contacts or most active users for each organization, encouraging them to update their organization profile, updates to TOS and Privacy Policy, etc.

Where do the high priority notes go?

several usability issues here.

  • when you type in notes as to why an item is high priority, where do they go? who and when does anyone see them again?
    image

hide closed cases

I think it would be useful to have a "hide closed cases" checkbox. keeps important stuff up front.

  • add a "hide closed cases" checkbox.

image

Wire up Stories from those you help.

  • Aaron to review and modify the rules I laid out below and then check this box and un-assign himself so this task can move forward.

We have the UI for the stories for people you have helped, now it is time for some data.

This is the current UI shell
The UI is built, now. it is time to show some data.
image

Here are the data rules:

This is what should show up in their list:

  1. the logged in user was associated with a case in any way (started the case, took a call, etc)
  2. AND at least one work item has been CHANGED to any status other than "Open, unassigned."
  • Hide this object if there are no results
  • Sort the list by most recent activity on top
  • Only show top 2 most recent results
  • If more than 2 show link "show all"
  • Show all will expand panel to view 10 at a time with next / back button
  • The same case can show up multiple times as the status is changed from Open to Closed.

Elements

  • show most recent image associated with the worksite, from uploaded images
  • if no image, display the type of icon you would see on the map
  • in bold show & "Story"
  • Build this string: "On you talked with <(case number)>. helped with Jane smith <days ago[today, yesterday, x days ago]>.
  • if there are any story notes (which we dont have built yet, so there won't be for now) then show the first that story below the "helped" statement.
  • make link to "Read Full Story" to expand the rest of the text above if there is more.

make dashboard page look better

The dashboard page is the first thing you see when you log in. It should just look better. It screams un-finished (which is pretty accurate at this stage) and could use a little sprucing.

  • make it look awesomer.
  • It also needs to look good from a phone.

This is the current dashboard page.
image

This is the dashboard page design doc in InVision:
Option 1:
https://projects.invisionapp.com/d/main#/console/14746784/399284412/preview
image

or option 2:
https://projects.invisionapp.com/d/main#/console/14746784/399284411/preview
image

Finally, my intention is to add the call center stats block from the home page and add it to this main dashboard.

Current form:
image

Form is should look like
image
CrisisCleanup/crisiscleanup-3-web#383

Event Stream Card Tweaks

Make the following changes to the Events Stream Card:

  • Remove the title (redundant)
  • Add the case icon IF the event is connected to a case
  • bold all action words
  • shorten the organization name???? I think???? if too long???
    image

Add Email Contents to Work Type Request

Problem
When an organization requests a work_type from another organization, the request is placed on the dashboard under "Inbound Requests." However, not all users receive the background email necessary to allow them to make a decision on whether to approve or reject the request.

Solution
In addition to the "History" feature (or as a part of it), include the entire email text that was sent. This should technically be a foreign key reference to the messages model. That way all authorized users can see all of the relevant information as they make a decision.

Other Portal Localization Settings

Problem
Complete Localization includes other settings, such as:

  • Date/time formats (1/6/2020 vs. 6/1/2020 vs. 6 Jan 2020 vs. 6 de enero de 2020)
  • Currency (USD, EUR, GBP, $, €, £, ¥, etc.)
  • Decimal (2.5 vs. 2,5)

Solution
The admin should be able to set these default localization settings in the portal. Users should be able to update these settings in their user profile, where it is stored in user_users.preferences.

How many of these things can we get from the browser?

Note: The website will contain dollar value estimates of the value of services. These estimates will be calculated in the default portal currency (e.g. USD, AUD, etc.), but "translated" or converted to the currency of the user. I will create a separate issue for currency conversion.

Issue of Issues

Outstanding Issues

  • Issue: county_cases_new_claimed_closed_ego report from materialized view
  • Issue: county_cases_new_claimed_closed_omni report from materialized view
  • Issue: Show currently locked phone number. Add unlock and mark complete button on phone interface. Add new status. Add mark complete phone number feature
  • Issue: Replace carriage returns and new lines in notes with a space when downloading CSVs. Also double-quote field notes in case there are quotes in the notes. /n and /r values create messed up CSVs.
  • Issue: Phone volunteers can't see which organization has claimed a case if they are lds and the claiming organization is also lds. Makes it hard to advocate in their behalf. Maybe make the link click able to reveal the organization? Or maybe just show it?
  • Issue: Document phone problems so we're not surprised by them next time
  • Issue: get user states to work for filters, etc.
  • Issue: make phone volunteer contact info appear on chat: Does not work on Chrome sometimes
  • Issue: we definitely have the edge condition where a case is closed, and we need to re-open it and unclaim it. We don't currently have a good way to do that. We might change the "request" feature to allow volunteers to request it be unclaimed instead of just transferred.
  • Issue: UI goes wacky after adding volunteer hours... or something
  • Issue: Add web, fb, twitter links in "Other Organizations". Have Dan regularly check those and amplify.
  • Issue: Ask for a button deleting all whitelisted IPs
  • Issue: Advocate Button. This person needs help NOW!
  • Issue: Make Chat permanently open
  • Issue: Record all outgoing text messages and emails. Right now we only record confirmations and not monitored alerts
  • Issue: All Ian sites won't download.
  • Issue: Calldown doesn't load the case sometimes
  • Issue: Scripts aren't always showing.
  • Issue: The flag icon (move location, etc.) doesn't work in Phone mode, only works in Work mode.
  • Issue: System is putting in the wrong names and phone numbers for phone.
  • Issue: worksite_worksites_data, worksite_survivor_tokens, worksite_wwtsp, worksite_work_types_teams, worksite_worksites_merges, worksite_worksites_notes, worksite_wwtsp, phone_outbound are not invalidated when their worksite is invalidated.
  • Issue: The reports and pew-pew aren't getting updated nightly like they should.
  • Issue: user_invitation.token duplicates still being created
  • Issue: Duplicate organization_organizations_incidents requests automatically created for each work_type
  • Issue: erroneously invalidated wwwtsp values, cannot be claimed
  • Issue: Closed cases should be removed from phone_outbound/ invalidated
  • Issue: Biggest frustration for phone volunteers re-loading the map each time. Any possible way to not do that?
  • Issue: When searching in table view, and selecting the result, it takes you right back to the map. D'oh!
  • Issue: I entered accidentally entered a case in Fiona and it asked me if it should have been in Ian and I selected yes. After the case saved, though, it was still in Fiona. I had to move over several cases from Fiona to Ian. (I have been dot-watching and there have been a few each day).
  • Issue: Add a site-wide banner with a site-banner CMS tag.
  • Issue: Add auto search for FAQs tagged with faq-phone on the phone chat. Return those as you type to avoid unnecessary messages.
  • Issue: Add call status for "asking about text message/ whether they have a case/ confirming"
  • Issue: FYI had a callback where the caller had a case already linked to that phone number but the callback prompt did not indicate that as connected even tho they were the same phone number.
  • Issue: Add a Phone System-like History button to the Work page. Also Add chat to work, and see what happens.
  • Issue: The Request Access is not working
  • Issue: Donate button on home page
  • Issue: Create Issue from Rob Fudge
  • Issue: No save buttons on mobile
  • Issue: Outbound call has volunteer's number. Big deal.
  • Issue: Training area mentioned in 2:11 of the youtube tutorial. Need to add this back.
  • Issue: everytime I click the button to start taking calls, the same name and case comes up. She has already spoken to 2 people and her number has come up as a call back 4 times for me.
  • Issue: Add "updated case" alert
  • Leaderboard: Sorting by online status, number of calls, organization.
  • Issue: Add Unclaim from the QR Code
  • Issue: If you unclaim a case, it invalidates the wwwtsp, leaving no valid wwwtsps at all, and suddenly nobody can claim anything at all. The work types all literally disappear. I've known that something was happening, but I couldn't figure it out until now. I think this might also be related to the existing valid work type error.
  • Issue: ability to search in the search bar by phone number? i believe that would have been super helpful for a lot of people who "lost track" of the case they were just working on but have the phone number.
  • Issue: Exclude invalid cases from count.
  SELECT COUNT(id), 'total_cases'
  FROM worksite_worksites
  WHERE incident_id = 254

  UNION ALL

  SELECT COUNT(id), 'total_valid_cases'
  FROM worksite_worksites
  WHERE incident_id = 254
  AND invalidated_at IS NULL;
-- We should return total_valid_cases
  • Bug: user_users.last_login, last_sign_in_at, current_sign_in_at are all blank.
  • Bug: Request access does not work in Samsung Chrome, can't select org to join
  • Bug: unclaimed addresses not redacted for VOAD/ situational awareness. I'm pretty sure they should be.
  • Bug: The issue was that I was putting in information and after I had put some in the survivor was confirming his phone number and it was different so I fixed it and notice the name was different so I corrected that. I thought that maybe it pulled up somebody that may have lived there. After saving it I notice other things were marked that needed help with that I did not mark and it had a case number that would have gone in about a month ago. The address is at a trailer park and so I believe that when I put in the address (without the lot #) it opened up the other persons case and I ended up overriding it with this new survivor. Is there a way to see the original name and phone number from that case #? X1998
  • Bug: I don't really need help, just want to make you aware of some broken links on your site. The google search gives an opportunity to view the history of the organization, which led to a dead link for me. At the bottom of the current about page, there is a bullet at the bottom of links that states "about.ccu_story," where I was also hoping to find history for a report, but it is not linked to anything. Just wanted you to be aware in case this wasn't on your radar!
  • Feature: Sort by date of claim and completion.
  • Feature: Add ghost_created_by, ghost_updated_by on worksite_worksites_users_time
  • Feature: Privacy Features: Sell or don't sell declaration. Do not sell link. Citizen be able to opt out or delete data. Add an affidavit that the person. Access and deletion may be verified. For do not sell, you are not allowed to verify.
  • Feature: Text worksite details to volunteers

Database Issues

  • Bug: organization_organizations_groups does not have an updated_at trigger
  • Bug: incident_incidents.created_at should be with time zone
  • Bug: event_events_logs.created_at and .updated_at should be default NOW()
  • Feature: Add core_flags.invalidated_at for whenever you take a flag away.
  • Feature: Add location_locations.invalidated_at to completely remove an old location.
  • Feature: Postgres 11 on Staging
  • Feature: Implement history tables for any table without invalidated_at

Other Issues

  • Could not reproduce: Updated https://crisiscleanup.org/s/y6wis03d and got a CORS Missing Allow Origin error. API timeout. https://crisiscleanup.org/s/0apxdagc

  • Bug: When I open crisiscleanup.org after having closed my browser and restarted my computer, I didn't need to log in again. That seems like a security flaw.

  • Bug: TS Beta Table view does not load, or even to pretend to load in FF.

  • Bug: Incident Count in "Other Organizations" always says 1

  • Bug: We need server-side validation on email invitations. Copying and pasting extra characters like "<" or names does not filter out.

  • Bug: If unclaimed, and user changes the status to "Open, unassigned", do not claim the case for the organization.

  • Bug: Changing the org_role as admin does not invalidate the previous role. Each organization should have just one role. This may change in the future, but for now we'll keep it this way.

  • Bug: Other Organizations: Scroll page, not table.

  • Bug: Emails for reports are not populating

  • Bug: Users are able to register for a second organization, even though he they have a current user account.

  • Bug: 1. Log in as someone else. 2. Log out, then log back in as admin. 3. Click "Work." Bug: "Filters" does not work, FF

  • Bug: Chrome 85.0.4183.102 64 bit, Windows 10.: Filters doesn't work. New Cases "x" does not work.

  • Bug: Hovering over a user's name in Chrome does NOT display their name and contact information; just name and an "email" icon.

  • Bug: Delta-Laura-Marco X2690. Someone attached a photo to it, which was included in the PDF file. However, a. The system did not compress the file, and b. For some reason the system included at least 5 copies of the image on top of itself, turning this work order into a 50MB behemoth, instead of the 45KB file below after I deleted the image. We'll put that on our bug list.

  • Clear indicator that I'm on phone on every page.

  • Need a "Dismiss" and "Skip Call": Then tell me that I'll still get the call and need to press 0, and they won't be called.

  • Bug: https://www.crisiscleanup.org/incident/211/cases/new Table View is not working.

  • Bug: Add general ticket for Chrome: No loading, and no filters. New users.

  • Bug: Hurricane Sally color is different in different browser tabs. (See images below)

  • Bug: @braden Mars Reed reports that the first three calls successive calls this morning dropped after he pressed 1. The call would say it is connecting, but just never connect. The first successful connection occurred at about 10:30am Central.
    He also gave us a clue about what might be happening with the Locked Phone Number problem (multiple calls to the same person). We know that you need to close out the phone call in Beta for it to unlock. However, Reed reports that sometimes the number in Beta is NOT the number that he's stuck on, and he needs click through two or three numbers in beta to close out the correct phone number to unlock.

  • Bug: @tobi Abiodun Also, whenever he refreshes the page, he would go back to Hurricane Hanna, instead of Sally, even if Sally was the current incident. I'm pretty sure that user.states is not updating the default incident. (#1013)

  • Bug: I've had several people say that they are getting calls from a 202 number, which I just wrote off until I realized that the AWS caller ID is actually a 202 number. And not our 800 number or even the 601 number. Is there any way we can fix that?
    And incidentally, all 202 calls are blocked on my phone, so even after it went to VM and I did not press 1 to accept, I was still online. It should have gone offline.

  • Bug: We started having challenges with the search API yesterday but haven't been able to pin down the issue. For example, we noticed that a search for "Aaron Titus" will return me, but "Aaron Titu" will not. I suspect that issue has the same root cause. I'll put this on our to-do list.

  • User question: You are the second person to ask about what the calls/ days means. It means "The survivor has called three times in the past two days," and is not an indication of the number of times we have called back.
    We'll look into clarifying that meaning.

  • The work order number SOMETIMES populates after the person starts talking OR we have to add their name and part of an address before it is recognized.
    As I recall, early on, the system USED to indicate the existence of a work order much sooner.

  • Bug: I am doing callbacks. Caller states they called 1 time. We called them back and created workorder. Now I am calling again. Somehow the number isn't getting deleted after we return the call. It has happened to me 4 times in 2 days, which isn't that much, but I feel like I'm bothering them. Is this what the "4 calls/ 3 days ago" means? Should I bypass a cal if it says that? Moved to: CrisisCleanup/crisiscleanup-3-web#1068

  • Bug: @braden Mars I just got a call from Reed. He clicks "Skip Call," and the system immediately sends him another call. He clicks "Skip Call" again, and the system immediately sends him another call. He repeated this four times before the system placed him in an "Offline" state and the calls stopped coming.

  • Bug: Reed reports another bug with the recent changes. He answered a call. While he was on the call, the center of the screen went blank. E.g. the center of the screen went white, but the top of the screen and the navigation bar still appeared. He completed the phone call, but had to click the Work button in order to enter the case. He clicked the Work button, and then back to the Phone button. When he returned to the phone system, the call did not appear in his most recent call list. Immediately thereafter, the phone system called the same lady again.

  • Bug: Move Organizations does not work. See image below.

  • Bug: "Charles Severs" returns result, but "Charles Sever" Does not

  • Bug: move worksite icon does not work

  • Bug: Filter, "History," and random buttons are not working for Chrome.

  • Bug: When an organization is not "Active," users can still log in and do everything. We should design what they see if the organization is not active.

  • Bug: no new or redeploy alerts since 9/12. In messages?

  • Feature: Add my Layers for "Layers", and for filters as well. Multi select is OR

  • Feature: When clicking "Profile," do not require user to click the yellow pencil icon to edit. Just edit the profile directly.

  • Feature: Title of each CCU page should be different, e.g. "Admin Dashboard: Crisis Cleanup," "Hurricane Sally Work: Crisis Cleanup," "Phone: Crisis Cleanup," Etc.

  • Feature: Add age of case

  • Feature: Add Crisis Cleanup client legal release, plus the organizational release on to the printed incident.

  • Feature: change email, user initiated

  • Feature: General stats: My organization

  • Feature: Add filters by date: Created at or updated_at. Slide through the time, and shows where the areas are most damaged.

  • Feature: Add a "Troubleshooting" section with "Reset User States" button and "Reset Settings and Favorites" in profile. This would allow users to click a button to manually destroy their user_users.states and user_users.preferences for troubleshooting purposes. Include description.

  • Feature: Add reports events to new table. Once complete, let me know and I will manually reconstruct all of the previous report views from email alerts

  • Feature: Invite to an affiliate or group organization

  • Feature: Find case by team/ team lead

  • Feature: Find team by case

  • Feature: Add ghost users to team

  • Feature: Create multi-stake team

  • Feature: Allow any stake to approve orgs from other deployed stake to the same incident.

  • Feature: Multi stake command center

  • Feature: Allow create teams for any affiliated organization

  • Feature: Hover on case to get case number on the map.

  • Feature: Turn off reports emails

  • Feature: Disable features for specific organizations. E.g. Disable the "Claim and Save" button for 2-1-1s.

  • Feature: Forward https://www.crisiscleanup.org/donate to https://www.paypal.com/paypalme/crisiscleanup

  • Feature: Make it easier to close out cases on phone.

  • Feature: 1. Add survivor release to sign. 2. If organization release is not null, add that, plus release for Crisis Cleanup, LLC. Use strings, printCase.homeowner_release_title, printCase.homeowner_release_text, printCase.signature

  • Feature: Add demo login information in a prominent location on Dev

  • Feature: Add Request Access modal bug to cases

  • Feature: /request_access Success Modal: Your request has been sent to {requested_to} at {organization}. Anyone from {organization} may approve the request. Please contact this person directly and encourage them to approve access quickly. Error: variables are not populating. Include screenshot.

  • Feature: If organization is marked not active, then anyone from that organization who logs in is redirected to the home page with an error, "Your organization is not currently active. If this is an error, please send an email to [email protected]." (info.login_org_inactive)

Images
Filter Error:
Filter Error

Try to Move to New Organization Fail:
Try to move to new org fail

Time Mismatch: "4 hours ago" should be "Just now." But we're keying off Eastern time instead of UTC.
Problems

Random Incident colors, instead of the set color in incident_incidents.color:
Sally Color 1
Sally Color 2
Sally Color 3

Move Blog to crisiscleanup.org/blog

Describe the problem
blog.crisiscleanup.org does not help our rankings because search engines count it as a separate website.

Describe the solution
Move all of the blog content to crisiscleanup.org/blog or equivalent url within the crisiscleanup.org domain. This will require installing an open source blogging system.

Additional context and instructions
Add any other context or screenshots about the feature request here.

Admin Mass Emailer

Problem
Admins need a way to send a mass email

Solution
Implement a simple mass emailer with an easy-to-use WYSIWYG

Additional context and instructions
Add any other context or screenshots about the feature request here.

Design: Admin Can Email Pending Organizations and Redeploy Requests

Describe the problem
We contact every organization before approving them, and often before approving a redeploy request (depending on the circumstance). When they do not answer the phone, I must send an email to them. It would be nice if that was automated so I don't have to do it manually.

Describe the solution
On the admin page, design a simple button that opens a WYSIWYG email editor where I can email the registrant or the primary contact(s). It should have a few preset that I can choose from a dropdown. A typical email reads,
"Gary,
My name is Aaron Titus. I received your application to join Crisis Cleanup. I’m happy to get you up and running. Please call me at your earliest convenience so I can understand your services a little better. My cell phone is 555-555-5555.
Thanks for all you do."

Email should go out from the user's email address.

Additional context and instructions
Related: #171

Design: EDU Manager

Problem
The system contains an education module that allows admins to create and manage questions, tests, and trainings.
Tests are a group of questions.
Trainings are a group of tests, and other content, such as video or text content.

Solution
The system must allow an admin to create and edit questions, tests, and trainings. I think for now we're going to focus on multiple-choice questions.

Additional context and instructions
Add any other context or screenshots about the feature request here.

Design: Reports

Some reports or functions will be a premium feature, while others will be generally available. The number and types of reports will vary and increase with time. But the
Functions

Examples of possible reports

  • Teammates Invited & Active (Premium for government)
    • Type(s): Numbers that link to a table report showing details; Stacked Line or Bar Chart
    • Variables: X: Days. Y: Number of people. On Y axis, bottom section is a running total number of activated invitations, top section is total unactivated invitations.
  • Claimed, Open, Closed Worksites (Premium for government)
    • Type(s): Numbers that link to a table report showing details; Stacked Line or Bar Chart
    • Variables: X: Days. Y: Number of worksites. On Y axis, a stacked running total of open versus closed claimed worksites.
  • Est. Commercial Value of Services
    • Type(s):
    • Variables: X: Days. Y: Dollars. On Y axis, a stacked running
  • Average Wait Time to Completion
    • Type(s): Pie Chart with same variables as the line stacked bar/line chart.
    • Variables: Number of work sites, and number of days waiting (e.g. 0-3, 4-7, 8-14, etc.)
  • Longest Wait Time to Completion
    • Type(s): Pie Chart
    • Variables: Number of work sites, and number of days waiting (e.g. 0-3, 4-7, 8-14, etc.)
  • Shortest Wait Time to Completion
    • Type(s): Pie Chart
    • Variables: Number of work sites, and number of days waiting (e.g. 0-3, 4-7, 8-14, etc.)
  • Number of Open, unassigned worksites claimed for more than 6 days
    • Type(s): Numbers that link to a table report showing details; Stacked Line or Bar Chart
    • Variables:
  • Detailed Work Logs with Volunteer Hours (premium, only available after app is built)
    • Type(s): Sortable Table/ CSV; line or bar chart
    • Variables: A row for each volunteer check in/check out, location of check in, time checked in, duration of service, etc.
  • Download all cases
    • Type(s): Sortable Table/ CSV
    • Variables:
  • All organizations working in a county/geographic area (claimed_by, based on time)
  • Stale Cases
    • Type(s): Sortable Table/ CSV
    • Variables: Case information, sorted by oldest updated. Oldest updated would be most important to call back or check up.
      image
      Add variable: Location (e.g. county, state, municipality, zip code, or custom SHP file or KML). Location is a premium feature.

Design for the following Formats:

  • Desktop
  • Tablet
  • Smartphone
  • App
    Final Output
  • Wireframe or PSD

Design: Invite New Organization to Register

Often relief organizations want to onboard other relief organizations (sister churches, etc.). This feature is different from inviting users. If a person invites a user, the user is automatically a part of the organization of the inviting user.
This is a simple email notification.

  • User is invited to enter the email address of someone from another organization.
  • User may leave an optional personal note.
  • Invitee receives an email:
    • Subject: [$User Full Name] Has Invited You to Register for Crisis Cleanup
    • Body: [$User Full Name] from [$Org] ([$User email], [$User phone]) has invited you to register your organization at http://www.crisiscleanup.org/register to make it easier for you to help your community clean up after the recent disaster. Message from [$User First name]: [$Personal Note].

Design for the following Formats:

  • Desktop
  • Tablet
  • Smartphone
  • App
    Final Output
  • Wireframe or PSD

Convenience UI updates to admin section

  • make the background of the Logo section the checker pattern so you can tell if you uploaded a transparent png file

  • [ ]
    image

  • make the following field in pink with a Red "required" astrics or something .. so it is obvious these are the key elements to add.

Org Profile 2

Org Profile 1

  • Also out on the main list page, add the logo right in front of the name of the org... if we have one..

image

Admin Calldown Queuer

Describe the problem
Adding new calldowns is challenging and very manual.

Describe the solution
Create an admin tool to add calldowns:

  • List of all active disasters with active anis.
  • Number of potential calldowns for each incident
  • Select the incident and enter the number of calldowns you wish to place in the calldown queue.
  • Click "OK," and the selected number of calls are placed in calldown.

Additional context and instructions
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.