mquan / turbo-issues Goto Github PK
View Code? Open in Web Editor NEWbug tracking for turbo
bug tracking for turbo
Caused by the introduction of {{isRestaurant}}, since this is a computed property it takes time to evaluate (evaluated after everything loaded) and doesn't happen instantly on didInsertElement, thus the DOMs wrapped inside this block won't show up until this is set to true.
Solve by letting all UI exist by default, then hide when computed property evaluated.
Dependent on these pull requests:
emberjs/data#268
emberjs/data#201
As explained in #18, when a non-driving client (clientA) dirties an existing (loaded) record, the next commit by another client will not be loaded in clientA. This is inherently a bad design decision on ember-data part in only thinking of the case of 1 driving client instead of multi-user collaboration environment.
Take a look at this project, it seems to support multiuser using Push
https://github.com/tchak/colors-demo/tree/master/app/assets/javascripts
Use bcrypt for hashing
http://everyauth.com/#password-authentication/password-recipe-5-password-hashing
Added the lib but didn't notice any difference and it breaks (reload page) after a few click. There are probably bugs, observe for now
Send an email with uniq link to reset password
http://howtonode.org/sending-e-mails-with-node-and-nodemailer?utm_source=javascriptweekly&utm_medium=email
Happens on iOS safari, the orders status are 'checkedout', but they're not removed from table. Here's what I think is causing it:
Instead of just letting owner adding job by username, let user apply to specific branch. Then owner can approve/deny jobs. This improves the UX for owner.
Works fine in rev3, rev4 seems to be very different. There's an ember-data issue and a pull request:
emberjs/data#218
emberjs/data#248
This is a usability problem, receipt must always have order#
Allow user to create and edit order using keyboard shortcut and virtual keypad on touch devices.
Use mouse pointer or tap to reselect an item. Enter to complete editing. Highlight an item to let user know they're select. How to modify quantity and product?
When you add and remove embedded docs, mongoose refuses to delete the removed doc. The problem is reported here:
Automattic/mongoose#341
Apparently you have to follow an async model where you can only add or remove 1 embedded doc at a time (sounds like a stupid restriction). So something like this:
conversation.messages.push(new Message(data))
conversation.save (err)->
conversation.messages[0].remove()
conversation.save (err)->
In mobile order, click on an existing order, then click back to tables, now back to that order. This error is thrown:
Uncaught Error: Cannot perform operations on a Metamorph that is not in the DOM. Caused by the bindAttr in order.status_icon
{{#if order.isWaiting}}
<div class="label label-important status-name">
{{order.timer}}
</div>
{{else}}
<div class="label label-info status-name">
<i {{bindAttr class="order.status_icon :icon-white"}}></i> {{order.status_name}}
</div>
{{/if}}
My guess is order.isWaiting is taking awhile to compute so the DOM in 2nd clause get shown (bindAttr gets added to ember's list of todos). Then when isWaiting computed, the first clause is shown, and 2nd clause DOM removed. At this point ember's list of todos for the 2nd clause is still there but it reference a non-existent DOM so error is thrown.
Happen in mobile safari caused by setInterval. But now goes away, I suspect the reason is b/c I had 2 windows with setInterval running. If this is correct then either 1. safari fails to turn off the setInterval clock in the inactive page and the two interfere with one another or 2. one clock is used but it's global to all pages and tries to set the DOM of both active and inactive pages.
On mobile order on dotcloud removing a takeout (the only one, also remove the one on first table). Although refreshing page show that it's not removed in db. So this is a problem with client's "order updated" code. Not reproducible
Can't resolve image path: ../img/glyphicons-halflings.png
Can't resolve image path: ../img/glyphicons-halflings-white.png
As pointed out here:
https://github.com/TrevorBurnham/connect-assets/issues/77
This module needs css concatenation, serve up image right (may be image sprite), and latest release shouldn't throw error. It also doesn't abide to the async model. Plus it's compiling files on the fly instead of precompile once in production.
While waiting for a rewrite, find an alternative
Need to remove from all apps, see what to replace it?
For Retail mode either show a graph of current inventory (amount left) or use bootstrap status bars (with different color, red for below 10 count or so).
Like facebook or gmail message, but need to work on iOS as well
This is a known socket.io bug, it seems to be fixed in this commit: socketio/socket.io@ffa8994
Not available as of 0.9.6
For future ember release have to download handlebars and include it separately.
Also new ember (later than 0.9.8.1) changes ArrayUtils to EnumberableUtils. Ember data depends on this, ember-data rev3 will no longer be compatible. Current ember-data (7.8.12) still doesn't support embedded association
Not very critical, but a nice to have. Need to use flot.resize plugin: http://people.iola.dk/olau/flot/examples/resize.html
Products should reside in Branch so that the same product inventory are referenced globally no matter which menu items are created from. Inside each menu is a reference to product, not the product itself.
This shouldn't be that hard to modify, just set embedded to false in products association. When a new product is created, the id is pushed to corresponding category.
Actually product then have a many to many association since it can belongs to more than 1 category.
Wait for Ember-data to support many-to-many association then.
Initial load with menus will block view rendering of branch name and tables/takeouts. For regular menu (26 items), this even causes 6 seconds delay from page load until first view render in iOS safari (4s in desktop).
Defer menus loading since user never really need this right away.
App has to be active when going to sleep in order to prevent reload. No easy fix beyond using localstorage to cache but this brings all sort of problems such as manually reconnecting socket.io and reinitialize branch and orders data.
Priority low: let users use the web version, anyone who uses the standalone mode will have to keep the app active. Otherwise they suffer 3 seconds page refreshes (could lose local data).
Usually if the base price is 5, default to regular, and small cost $1 less and large costs $1 more. It's much better to show regular $5, small $4, and large $6 in the customization.
This means we need to detect size customization and set the price_change + price instead of just price_change
2 approaches:
a. let user toggle a boolean size customization field. We could default to have 1 size customization always, but what if user remove it and set their own that doesn't have it. Plus having 1 extra option for just 1 case will clutter user experience. For now, they're on their own if they remove it and need it later. Later: If they already have size then don't let them add another customization, if they removed then show them the button for adding it.
b. detect customization name for each and every language. This is bad, would have to handle all the different ways people enter size, they could use "portion", "phần", "xuất", cỡ, "kích thước", etc.
It's not practical to archive all menus and products ever created/modified. Just think up a way for this to fail silently when product/menu can't be found.
Basically client will throw: Uncaught Adapter is either null or does not implement find
method , so just implement find method in adapter and return nothing.
Allow hover over of bar graph
http://stackoverflow.com/questions/1287073/jquery-flot-display-all-data-and-y-axis-hover
http://people.iola.dk/olau/flot/examples/interacting.html
https://developers.google.com/chart/interactive/docs/gallery/linechart
bar chart hover
http://stackoverflow.com/questions/3476349/flot-stacked-bar-chart-and-displaying-bar-values-on-mouse-over
An example is https://kippt.com/
Dependent on nodejitsu upgrade and modules compliance
http://docs.nodejitsu.com/articles/cryptography/how-to-use-the-tls-module
express:
http://expressjs.com/guide.html#creating-an https server
socket.io
http://stackoverflow.com/questions/6599470/node-js-socket-io-with-ssl
However, there's complication of nodejitsu using http-proxy
This is due to fast local server connection so the latency b/w going to server and back is less than an Ember runLoop, so the didCreateRecord call happens after data loaded. The problem is unique order# needs to be determined on the server so when this happens the order# is null.
The dirty solution is to set order# in the socket call but in a setTimeout so it's guaranteed to be called after didCreateRecord.
However, the problem with this approach is it dirties the model after loaded, transitioning the model in updated state. This manifests into a nasty subtle bug in multiusers scenario when client1 makes consecutive updates and commits and client2 fails to load (on second update) because after the first load, order# is set and the record is now in updated state. When the second load comes around, it fails since the last change hasn't been committed. client1 works fine b/c he went through the correct state transitions. The problem continue to occur when client2 makes modification without committing in b/w client1's commits.
This is inherently an ember-data design philosophy of only working with 1 driving client.
When new translation added to translation.json file the client-side translation still caches the old file. How to apply timestamp for these so that timestamp changes when file change? Or at least when browser restarted.
Create boss/manager/waiters/cashiers/cook filters, these can also double as group selectors that message to all users with such role.
User may want more granular report per size for each product. Observe if this is a critical need.
In user_settings it includes store_editor and tablet_order for no reason (yet mobile_order is in the same dir and not get included). Not sure if it's because they introduced a new syntax for including files.
Keep a history of all commits. The way to do this is to
Use versions as embedded doc, always use the last embedded doc.
This makes a lot of sense b/c there shouldn't be that many commits (not more than 10 typically)
On the client: add Turbo.OrderDoc hasMany(Turbo.Order).
Also add user who makes the commit for each version
This is the easiest, but still a big rewrite
For confirmation message: branch saved, order submitted, order updated
http://twitter.github.com/bootstrap/javascript.html#alerts
It would be cool if it automatically fade out after x seconds
The problem is caused by ProductView click action, which sets current_item to null. Fix by avoid setting current_item when adding item from order form.
This is the weirdest bug but if I have something like this in a template (item - part of orderform):
Then order commit won't work (sometimes throws error, sometimes just fail silently but do not set current_order to null)
The error thrown is still ember error not ember-data. Kinda weird.
https://github.com/paularmstrong/swig
Why?
Try it out with settings first. See if there's any blocking issue
socket_id hash should be stored in branch or in redis instead of each individual user object. A broadcast to many users would require lots of sequential lookup.
2.3.0 works fine, but 2.3.1 complains require('connect').utils.parseCookie is undefined
Language should fall back to en-US but somehow is null and thus causing no translation. Inspect what the language is and default it to en-US
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.