-
-
Notifications
You must be signed in to change notification settings - Fork 723
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Backoffice Product List table UI uplift #7198
Comments
This looks great!Until we have the Epic broken down into stories, some quick feedback on the designs here:
|
Thanks @jaycmb for the feedback!
Cheers |
Notes of Product & Design Meeting Nov 17thwith @kirstenalarsen @RachL @Erioldoesdesign & Hernan (OFN Colombia) Further details on the points discussed here in Notion High Level Summary on open questions discussed: 1. Tech-Related Issues
Decisions on the following topics postponed, until devs/teach lead join the discussion:
2. Product-Related Issues
Next Steps / Actions
Mock up requests
|
Design round up of Mock-up AC'sMock up requests
You get a little bit of text underneath each drop down stating the changed display name:
One demand was tricky, I don't have any better ideas only this alternative which isn't better, just different: Other things I did and updated
A long comment on responsive stuffResponsive is proving to be trickier than i'd hoped but I'm glad I've investigated it. I explored some ideas where even though we have 9 columns max that are available to display horizontally, we limit the max amount to 4 or 5 across the width and find a way to display some functions vertically, or collapse columns (kind of like how zenhub does this) but it looks like there's already a part of the design where the product image and name is 'sticky' to the left hand of the screen and then the remaining columns are horizontally scrollable. To be honest I don't think there's a particularly good way to get multiple, functional (as in editable) columns across a smaller screen. I've looked around at complex dashboard and even google analytics pretty much just makes users deal with a horizontal scroll but it's worth looking at GA's mobile app for a more 'streamlined' workflow. I worked on products like this twice, that are basically spreadsheets in mobile app form and it was essentially an exercise in compartmentalising certain operations into forms in individual pages and menus. |
Do we still think that the column 'on hand' needs a tool tip? |
Design next up for UI Uplift
|
Feedback on DesignsUnit Display I find not understandable without the explanation text One idea that came to me when looking at the new designs related to Unit Prices:
So, to your question: the column does not necessarily need a tool tip, but clearer phrasing. Maybe simply: “In Stock”? But yes, the "On Demand" is a separate thing and I personally find "Unlimited" slightly easier to understand than On Demand (not intuitive!) but also not optimal, because it´s technically not unlimited supply. I think that would be a case for User Testing :) ResponsivenessAgree on it´s certainly a challenge “to get multiple, functional (as in editable) columns across a smaller screen” 😅 That again brings up the question of: How likely is a user going to edit columns from mobile? Which columns are essential for these use cases and even which functionalities do they need? Yes, we decided that´s out of scope for the V1, but still I feel put effort in setting up a flexible system from the start that allows users to easyly(ish) manage the columns they want to see (and possibly edit) across different screensizes is well invested.
-> You mean by displaying only 5 (or x) columns max, user would have to jump around different views if they d like to edit one of the non-visible? |
Is this still Blocked by "Product Input needed"? |
@jaycmb we need @kirstenalarsen 's input on scope to have final community approval. Then a lot of question are remaining for the new dev that will pick this up with the nex tech stack. |
Only additionl comment I have here I think is that @mariocarabotta did do a lot of thinking about positioning and selection of columns. This included lots of looking at other ecommerce and food / product / inventory systems and shaped his suggestions as to which ones should be left, prominent, sticky I think. Not sure how this plays into responsive, but might suggest that the five suggested by default were considere as the most important. For my 2c, on mobile i'd be inclined to suggest that bulk edit isn't really needed as much. I we had great display of search and filter, display of the key info and a nice big edit button that opened a nice modal to easily change stock, price, upload new photo or edit descrition that might deal with most of the needs. with ability to go deeper if they need |
re. scope
|
There's some further questions that came up from my conversation with Theresa and Laurie last week that I've briefly spoken to Jana about but need some organisational PM input. |
Both the notion document, Figma designs and the discourse post have now been updated! |
This moving into the dev pipe? |
There's no clear plans on this yet, right? |
Hmm I think @jibees would be the best person to answer that, we're building a 'pattern library' and I assume that it's compatible with Reactive Rails but unsure if that means we can use Tailwind CSS et.c or not. Some of what was designed for UI Uplift followed some of the Material UI which is something I'd like to understand more as far as potential restrictions or not |
I think we need a bit of discussion and a really clear picture of exactly what we're doing in regards to those tech choices before we move this into dev ready 👍 |
Material-UI is specifically a React component framework, right? I don't think it's an option. So the question is; what are we going to use? There's MaterializeCSS, which might have a similar feel?
Oh god... 🙈 |
There's a Material Design Bootstrap package that looks pretty good: https://mdbootstrap.com/
|
@Matt-Yorkley What's the problem with Tailwind or any utility first CSS framework? I would be in favor of going on this (and not something like MaterialUI or Bootstrap which is good to create a POC and bootstrap, but a hell to customize as it's not designed for this) |
The creator of Tailwind themselves says: "If you can suppress the urge to retch long enough to give it a chance, I really think you'll wonder how you ever worked with CSS any other way". I guess I'm still in the retching phase 😂 Don't get me wrong, I'm all for utility-based CSS classes, composition over sub-components, and content-agnostic component naming. I'm also not a fan of the BEM approach to solving the traditional problems with inheritance in CSS. I'm a big fan of Bulma, mainly because the utility classes are actually human-readable. Bootstrap 4 is not great, but Bootstrap 5 has basically been heavily rewritten to focus on utility classes. It's also highly customisable via SASS variables. MDBootstrap combines Bootstrap 5 and Material Design 2.0 (if that's the aesthetic we're going for?). If we go with Tailwind we'd be styling every single element from scratch, right? As opposed to having 99% of the styling handled already by a library that already has the look we want? I don't like the overall results of Tailwind's approach of condensing absolutely everything into tiny utility classes and applying all styling by adding an ever-increasing list of non-human-readable classes-with-modifiers onto each element. eg: Dumping 100% of the styling into the markup doesn't seem like a big leap forward to me... 🤷♂️ |
I think it's the main point here, driving all the decision we should take in a near future concerning any CSS framework.
Yes, it should be ugly, and maybe it's not perfect. But as we want to work more in a component driven development way, once a component is customized, you don't have to edit any of the classes just use the component. Thus, code is written once. To be clear: <a class="button">
Button
</a> and yes, I really enjoyed CSS framework that gives me this But now, in a component driven development way, we use: <Button>Button</Button> and I really enjoy writting highly customizables components like this: const Button = (label) => (
<button type="button" class="focus:outline-none text-white text-sm py-2.5 px-5 rounded-md bg-blue-500 hover:bg-blue-600 hover:shadow-lg">{label}</button>
) |
That would be equally true if we leant on an existing library whilst making components, right?
If we're working towards designs based on Material Design and we can either a) import something that's already done 99% of the work (and includes utility classes and SASS variables), or b) painstakingly build everything from scratch (starting from zero)... that's not a trivial thing, right?
Is it though? I was chatting to someone recently who worked with Tailwind and they ran into a conundrum of how to refactor their code. It looked like this: they had a set of styling applied to all H1 elements in the codebase. Every time they wanted to use a H1 title in a page, they had to replicate it, and ultimately it looked a bit like your button example, with a huge string of classes.
They had three options for how to deal with this:
In the immortal words of Gwen Stefani; this shit is bananas! 🍌🍌😂 |
By "going round in a big circle and ending up at the beginning" I mean Tailwind essentially starts by saying this is bad: <button class="btn btn-green">Click me!</button> and this is good: <button class="py-2 px-4 font-semibold rounded-lg shadow-md text-white bg-green-500 hover:bg-green-700">Click me!</button> But then when it comes to the issue of DRYing code, dealing with all that mess, making it re-usable etc, Tailwind ultimately suggests doing this: .btn {
@apply py-2 px-4 font-semibold rounded-lg shadow-md;
}
.btn-green {
@apply text-white bg-green-500 hover:bg-green-700;
} and then doing this (wait, isn't this bad?!): <button class="btn btn-green">Click me!</button> What? 😂 We're back to arbitrarily-named classes that encapsulate a whole bunch of styling and are thrown on to elements in whatever way we feel like, right? This is the main solution proposed by Tailwind in the docs, but even Tailwind's creator has stated multiple times that it's an antipattern... |
Before a full rollout, we should ensure that server monitoring is fully configured, so we can measure any impacts: ( I wasn't able to add this to the milestone because it's in a different repo) |
I don't think we need this epic anymore 🎉 (yes there is still work to do but we are managing it with BUU2 milestone now) |
It caused me to look back at the original goal of this epic, which was to encourage Inventory users to use the Bulk Products screen. It seems like tagging is intended to do that, and maybe scrolling laterally (side-scrolling). |
@dacook yes we've never updated the epic content, but tagging will be on of the next priorities ;) Regarding side scrolling, do you think you could do a rough estimate? I wonder if we could fund this, I think it would be very helpful. |
We can do a 1hr spike, but I think it will require a few rounds to get right. It might require some re-structuring of the code too. A very quick roundup of requirements:
When the viewport width is smaller, or a large number of columns is selected, Considering:
I guess it depends how much we want to polish it. Also, there's another enhancement we can do separately which will help for large screens. The Admin interface has a maximum width, but we can allow the table to break out of this: Notion has a really cool way of incorporating this with side scrolling, but I'm not sure we need to try that: |
What is the problem we are solving
As part of the network inception work, it's been highlighted several times that there's an internal interest to move away from the Inventory functionality altogether. It’s hard to understand for some users, it has been adopted from others when it’s not actually needed, and it also present some technical challenges that we want to minimize in the future.
We’ve also run interviews with producers and hub contributors, asking open ended questions and showing some digital prototypes. Some of the positive feedback we got was around a cleaner user interface for the product list, and consolidating the functionality available in the product list with what’s in inventory.
Slack channel
#backoffice-ui-uplift
Discourse
MAIN Backoffice Product List table uplift: https://community.openfoodnetwork.org/t/backoffice-product-list-table-user-interface-uplift/2098
Network Inception: https://community.openfoodnetwork.org/t/network-phase-1/1906
A new admin interface for OFN: https://community.openfoodnetwork.org/t/a-new-admin-interface-for-ofn/1784
Objectives and key metrics
Product: Reduce the number of people that use inventory just for ease of use
Experience: Provide a better interface for all of OFN enterprises
Technology: Move to a more modern system for the backoffice that might also attract new contributors
Design: Build the foundations for a backoffice design system
We would measure the success of these objectives by looking at
How this could look like
Explanatory videos have been posted in the main Discourse thread for community feedback. The main prototypes are:
Create first product
Columns selection and table scrolling
Edit fields inline and add tags
Filter by categories and tags, sort
On demand and unit display fields
Figma files
Project specific: https://www.figma.com/file/kBvKYXnaNU0thSnKJUoyup/Product-List-UI-uplift
Library: https://www.figma.com/file/A1RDmHC9dMxhjF7JTtiMuB/Components-library
Note: these mockups are based on the Material-UI react library. Icons are part of the Community Material Design Icons.
Milestones
This project is divided into 2 main milestones:
The first milestone replicates all of the existing functionality of the product list.
The second milestone introduces a few new features that ideally would encourage the users above to migrate from inventory back to product list, specifically:
After milestone 1, the improvements could potentially be released to the public, hence splitting this into 2 chunks of work.
The text was updated successfully, but these errors were encountered: