I'm Ben. I work at Tangram.
Personal contacts:
- WWW: deciduously.com
- Blog: DEV
- Email:
[email protected]
- LinkedIn: benlovy
Have a great day!
Attendance taking app in Rust and ClojureScript - ongoing development in the mifkad repo
License: MIT License
I'm Ben. I work at Tangram.
Personal contacts:
[email protected]
Have a great day!
Instead of just hashing the name, assign some sort of other unique idx. This will require some thought as I'm currently relying on the deterministic nature of hash
- it's called separately on strings and leverages the fact that it yields the same result to function properly.
Turns out you can't select the text in an alert. Who knew.
Might be overkill for this project, but it's a good learning exercise - and as this thing grows it will only help.
You've already structured it somewhat in line with what you'll need
I need a server process that will expose a simple API for the individual class pages to talk to the database
for both roster and add hours
You're doing something silly somewhere.
pos-hash
is silly, you should remove that to close this but I think it's not the culprit here.
Either lean on localStorage or allow exporting and loading a dump of the RAtom to file
:roster :core :extended - schedule maps just point to idx hash in :roster
For learning/showcase purposes, build your back either with a good template it with Rocket, and decouple the frontend. At first you can keep the Reagent version, but either port it to reframe or redo it in good old JavaScript/React Native
Or at least highlight infractions
Instead of hardcording the string in-memory
It's holding up your mock roster
Have it check against the absences, and not add if the kid didn't come
I think you need \r\n, not just \n
Blocks aren't working - would rather they were responsive.
Currently, the app includes trailing empty fields in the headcount, making it look like all classes are the same size as the largest class. Just lop off empty fields when reading the CSV
We need Windows builds and Linux 32 bit builds
Stored as map keys, which do not guarantee an order - not ideal from a usability perspective. Alphabetical sounds better.
Eventually xlsx.
Specter might be the right choice, but instead of bashing your heard against the wall on the deeply nested transformations, read the raw data into the data structure that you want.
Maybe read all the kids into a map with a unique I'd, and then populate a whole separate two tables with the schedules referring to the other map.
It got big
copyright link, github link
Instead of pasting style/script in by hand, make it happen automagically
Just static now - have it only show how many are here
Now that you have a server, why not add more functionality? This could be used for the order aggregator too!
User request
Instead of logging to the console
Use an individual url for each class to go for their own roster. Compojure can help with this? Load the roster from the server, and have a save feature to persist changes back
You filthy animal
Some patterns ripe for pickin' out there.
e.g. Monday (3/5/18)
Right now there's no way to see quickly which rooms we haven't called yet vs. which we have but had no absences to report
Maybe make a very simple GUI thing that just pops up as a confirmation
Process additional hours, respecting capacities, i addition to propagating absences to extended day
RESTfully, with bidi
Should be able to largely re-use code - only difference is that these will NOT be buttons - just displaying the state
Instead of a specially formatted single day CSV, take a raw Schedule By Week report
This might be the way to go at work.
That's what ya gotta do next.
On reading in the csv, insert all the kids in that module. Only expose GET endpoints for name and stuff. The only PUT for a kid will be to toggle a KidRecord.
Take is as a POST request from cljs-ajax tied to the same buttons you've already got. have it do both until you port the frontend.
We know the current count from the names list - only need the max
Pilfer from deciduously-com, but in its own namespace now
Something like (transform [:roster #(= idx (:idx %))] #(update-in % [:here] not (get-in @App-State [:data])
Assuming I've split app-state into something like {:data {:roster {} :core {} :extended {}}}
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.