GithubHelp home page GithubHelp logo

benshelton / oclm-planner Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 1.0 1.79 MB

A planner for the OCLM meetings of Jehovah's Witnesses

License: GNU General Public License v3.0

JavaScript 3.15% HTML 1.15% Vue 41.94% TypeScript 53.72% Stylus 0.03%
congregation jehovahs-witnesses meeting oclm

oclm-planner's Introduction

About Me

❤️ Coding ❤️

Preferred Tools

  • 💙 TypeScript
  • 💚 Vue
  • 💚 MongoDB

Interested In

  • 🤎 Rust

Hobbies

  • 🎮 Video Games

oclm-planner's People

Contributors

benshelton avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

knmurphy

oclm-planner's Issues

User-based login rather than single password

The single password login was only meant to be used in development, we actually need user based logins. This way we can restrict actions based on roles as well as track what changes have been made.

I'm debating the method to use for this, I thought about the user access that Netlify provides but what we'd have to end up doing is allowing anyone to create an account, and then them requesting privileges afterwards and tracking what users are granted these privileges...

What would be easier is rolling a custom user system. This would be per congregation, starting off with simple roles for now and expanding to track all changes based on role.

Add support for Assembly weeks

I’m thinking of a toggle in the dropdown.

This would need another Boolean on the week.

Should probably remove all assignees too, and warn that will happen.

The only real change will be the schedule pdf needs to be blocked out somehow.

Add School Preference

There are some students who only like to be used in the second school. Add an option on each congregation member of which school is preferred, 1, 2, or null for any. Then filter the assignee dropdown based on that.

Weeks sometimes duplicated in the store

I've only seen this in a dev environment but it seems sometimes the store doesn't replace existing weeks when they've been updated, causing 2 separate versions of the week to exist.

This may just be a side effect of hot reloading but noting it here in case it crops up again.

My quickest fix for this was to clear the weeks from the store when navigating away from the schedule which isn't a terrible idea and at least provides a way to recover from this. But there should be some safety net that checks for multiple copies of the same week when trying to load, and if there are multiple copies then delete them and fetch a fresh copy again.

It may also be worth thinking about putting some sort of expiry on a week's information in this case, or polling them again after a certain interval. I'm worried about the brothers leaving the page open for days and then coming back to see outdated information. Then that raises the possibility of things like websockets and so on, it depends how far we want to take this.

Reporting Page

Have some view to see what assignments a congregation member has had over a period of time.

Create a logo

As much as I like Vue's logo, probably best to make a custom one.

Apply as a favicon, on the interface somewhere and also in the README.

Week of 15th April does not download

This is because there is no schedule for that week, it's memorial week.

We may need to add another week type for that... it would be good if the scraper could somehow figure out that was the reason it failed too.

Nicer display & switching of current language

It will be nice to have an always visible dropdown in the toolbar of the current language instead of an options list. This will have to be thought out for smaller screens too though.

Add Second School Support

Currently there is only support for one school. Add an option to have multiple schools.

This would require a little extra room on the schedule, maybe by moving the assignee/assistant text above the column instead of alongside and then putting names there instead.

Homepage

Make the homepage actually useful. Have some quick links depending on the logged in state.

Also an update history section with bullet points of features and fixes.

PDF Preview does not show entirely on iOS Safari

The full screen modal doesn't show completely and doesn't allow scrolling. It also appears squashed.

Proposed Solution

Move action buttons to top of the modal. Don’t make it full screen. Make it scrollable.

Update Vuetify to 2.x

This would introduce a bunch of useful new features and update the design to be more appealing.

However there's a few steps needed in order to complete this:

  • Follow the update guide
  • Change Stylus to Sass
  • Run eslint plugin to update classes and components

Refactor Circuit Overseer Support

Currently we store CO details as a sort-of meta field on the week.

If we actually created a custom assignment for the service talk and allowed them to be added as a special kind of congregation member, it's going to avoid all the extra workarounds we need as well as make it easier to inherit the week for the CO visit.

Bear in mind it would be annoying to show the name for all weeks, so maybe a special exception for the AssigneeSelect is that it only shows their name on CO weeks.

PDF Preview doesn't work on Edge

Both the preview and the download link do not work on Edge

Apparently using a data-uri is not allowed, maybe using a Blob instead would be better

Setup Proper Versioning & Changelogs

Not entirely sure on the best way to do this, I think showing the change log on the Home page would be nice in addition to having a dedicated place for it elsewhere.

As for versioning, keeping semver would be good if anyone did want to roll their own version.

Are abbreviated names necessary?

It seems that even longer names can fit in the printed schedule. And the full name can be edited to be shorter if needs be as it's only for display purposes.

It's going to be easier to add and check for duplicates if we compare on one field rather than two.

Show alert if not refreshed in over 30 minutes

Just start a timer on the Congregation and Schedule pages when loaded that after 30 minutes shows a small alert at the top of the screen, along the lines of Page has not been refreshed in over 30 mins, click here to refresh which does a simple fetch of the list/schedule information.

This is mainly to catch the case if the page was left open for a long time and come back to the next day for example. Simply refreshing every X minutes is gonna eat function calls up.

I was thinking this timer should reset after any API calls but returned API data tends to only affect a portion of what is visible. It shouldn't take anyone more than 30 minutes to accomplish what they need anyway.

Help Page

Probably all we need here is an FAQ section with expansion panels.

Unit Testing

Replace mocha/chai with Jest and start writing some tests

Organise Privileges on Congregation page

For example, chairman is normally assigned to just elders. Brothers have different available privileges to sisters. So some way of organising them into what they should be allowed to do may make it easier to assign.

I was thinking of removing the options altogether but sometimes privileges can be given in non-standard ways.

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.