Elegant UI for associations with a lot of data - user-interface

I have an e-commerce website where it is necessary to make a number of associations e.g. a product needs a category, manufacturer, associated products, etc.
When there is only a fairly small, limited amount of data e.g. Manufacturer I simple use a drop down or option boxes for the user to pick the relevent field / fields.
However for items such as associated products, where I have thousands or products it is not viable to use one of these methods. At the moment I use a searchable / paged table that the user then clicks a button to add the association, this works, but it is pretty time consuming for the user and not what I would consider an ideal solution to the problem.
Has anyone implemented a solution to this problem or could they offer any advice as to how they would come at this from a UI standpoint?
Thanks for any help you can be

The solutions I can think of are:
Auto-complete
Recent associations
Smart associations
There may be more depending on exactly what you're doing, so feel free to add more details or screenshots and I'll think on it more.
Auto-complete
Using an auto-complete field would speed up the process for your users since they wouldn't have to hunt through the table for the association. Rather they could just start typing and have a suggest box appear below the field that allowed them to select what they're looking for.
If you matched your auto-complete on several key fields (i.e. manufacturer and product name), there's a pretty good chance that the user would be able to find the association quickly.
You could also code the suggestion box in such a way that it showed multiple pieces of key data. That way if the user wasn't quite sure what they were looking for, typing a few characters in the field would give them an idea of what they could search with.
Recent Associations
Below your auto-complete field, you could add the 5 to 10 most recent associations that had been made. That would allow your users to quickly add many products to the same association without having to use the auto-complete each time.
Smart Associations
Separate from the above two mechanisms, a smart association is something I first saw when theming a Shopify store. They allow you to automatically create associations based on the products key fields by defining conditions to include or exclude products:
Create Association 'Pants'
Where product title contains string 'pants' or
Where product title contains string 'capri'
The above is controlled by a set of dropdowns and textfields and got around the pain of manually creating associations.

Related

Hide field rows when viewing a Laravel Nova Model

Is it possible to hide specific rows when viewing a model in Nova?
Let's say I have a bunch of Users and Companies. A User can own one or more Companies and should be able to view and edit them. But I don't want the other users to be able to see companies that they don't own.
I managed to remove the ability to edit, delete and see the name of a company if you don't own it but I can't seem to remove the companies from the list properly. (ScreenShot)
Is this even possible yet? Or do you have a better solution?
From the manual:
You can use these methods on each field:
hideFromIndex
hideFromDetail
hideWhenCreating
hideWhenUpdating
onlyOnIndex
onlyOnDetail
onlyOnForms
exceptOnForms
Example:
Text::make('Name')->hideFromIndex()

Access Web App 2013 Subview - multiple child fields?

I'm not sure if there is a way to get this to work, but I've got my fingers crossed:
I have a database which is keeping track of Inventory for a school district. Part of what is being tracked is the special (non image) software that is installed on a device. No computer can have more than 5 extra software, so I have 5 fields, Software1 - 5 which all lookup to a Software table that contains the possible software to choose from.
What my client wants, is to be able to find all devices that have a certain software installed. Of course, Access Web Apps do this almost without having to ask, by creating a popup view when clicking on a lookup field. The problem I have is that because I have 5 separate fields, and a particular software title could be in any one of those 5 fields, I have no way of finding ALL the devices that have that software in ANY of the 5 fields. I can only find the devices with that software in the SAME field that was clicked on.
For example, each device has a Model number - something also related to another table. My popup view for the Model has a subview which links the (parent) ID field from the Model table, to the (child) Model field in the Inventory table. This way, when a Model is clicked, in the subview I see all devices of that same model.
But, for the Software fields, when I link the parent ID field from Software, I can only relate ONE child field to the view, meaning only one of the 5 Software fields in the Inventory table. So if XYZ Software is in the Software1 field, and is clicked on, it won't find any devices that have XYZ Software in the Software2, 3, 4, or 5 fields.
I have "hacked" it into a fairly ugly looking thing where I use the same popup for each of the 5 fields. The popup actually has 5 separate subviews, each linked with one of the 5 child Software fields (so you could have 2 devices in the first subview that have XYZ Software in Software1, and then see another device in the second subview that has XYZ Software in Software2, etc). But this looks really bad and I would like to do it a better, more cohesive way. Every idea I come up with (use a query, use a subview within a subview, etc.) still gets snagged when I have to link that subview to only one child field.
I wish the web apps could have multi-value lists like desktop databases, but alas, not at this time. I would love to share a screenshot of my current popup view so it's explained a little better, but I don't have enough rep at this point, so please excuse my lowly-ness.
Does anyone have any ideas on how to get around this situation? Is there a way to set up a query for the subview that I'm missing? Or a way to hack it some other way? I'm all ears for suggestions!
Thanks in advance,
~SetsunaMH
I know it's been almost a year since I asked this, but since no one ever offered an answer, I figured it would be good to post what I did as a workaround.
I had no way to build a query that would search all 5 fields for the software to display them - every attempt I made would not work. What I wound up doing was what I mentioned in my original post: creating a special popup view, with 5 sub-views: each one an individual query for each of the 5 software fields. Clunky, and kind-of a pain, but it worked for my client (the database was a stop-gap until they could integrate another system, so it didn't need to be 100% perfect anyway).
Moral of the story: I hope Web Apps will have multi-value lists in the future... :)
In my opinion, your table structure is flawed.
You should have 3 tables.
One for devices ("tblDevices"), another for Software ("tblSoftware") another "tblJoin" to establish a many-to-many relationship.
You need this because it is entirely possible to install the same software on multiple devices.
tblDevices
DevID - AutoNumber - PK
Model - Text
(add other fields as necessary to describe Device-related data.)
tblSoftware
SWID - AutoNumber - PK
Software - Text (ONE field here, not FIVE)
(add other fields as necessary to describe Software-related data.)
tblJoin
JoinID - AutoNumber - PK
DevID - Whole Number
SWID - Whole Number
(You CAN add additional fields here if you feel the need to, but I'd try to avoid doing so if possible.)
]2
I know the screenshots are sadly lacking in way of explaining.
I have tried something new and have posted a thread in the Microsoft Community, asking for someone to verify that my plan to upload a SHAREABLE app will work.
http://answers.microsoft.com/en-us/msoffice/forum/msoffice_sharepoint/how-to-publicly-share-an-access-2016-sharepoint/607c9f4e-476a-4849-9207-0c7c7f5b2924?tm=1472316250163

Magento Custom Module Grid Serializer

I am working on a custom Magento module to enter Composer information (name, bio, birth, death, etc.) and associate products (songs) with the composer. The module contains two tabs, one for the general info and the other for a list of the products (songs). The association should work exactly as the functionality of Related Products, Up-sells, and Cross-sells in the Product editing page. I feel like I've been running around in circles on a few points in regards to paging through the available songs and selecting and saving the entries. It's mainly dealing with the Grid Serialization. I've looked through as many resources as I can find, including several tutorials, without any luck:
http://magebase.com/magento-tutorials/understanding-the-grid-serializer-block/
I've posted the relevant files at this Gist and would appreciate any feedback or discussion. The files have a lot of material commented out from trying various solutions but they may prove useful in terms of thought process. Certainly available to post any other files that may be relevant.
I think this answer is exactly what you need. I know that single link answers are not very appreciated but the answer is kind of long to replicate in here.
You can also use this module creator to create you module (also available on magento connect). It has an UI that let's you create the modules in a similar way with how you create a table using phpMyAdmin. For each entity you create in your module you have the ability to say "Link many to many with products". This will create the the relation table between products and your entity and the second tab in the admin where you can choose products that are associated with your entity. Exactly like the products in the categories or like related products.
I admit that I'm the developer of the extension, but this should not be considered as spam since the extension is free and I get no profit out of it.

How do I create a custom role for entities in Sphinx?

In my project we define threats/risks and countermeasures. I want to keep track and refer to both types of entities in Sphinx, as well as generating a list of both threats/risks and the countermeasures. Let's say I have 30 risks and 50 countermeasures (many-to-many relationship).
I'd be happy just to have a lists of both and the ability to refer to each other by numbers (e.g. "risk #23", "countermeasure #12"). It would be even better if the system could display the relationship automatically.
The content of both is let's say a single paragraph or even shorter, so that's why I dislike to use regular headings. And I cannot refer to items in lists or table rows. So, I'm looking for something like a Figure in Sphinx (numbered, with caption), but then for arbitrary types of entities.
My current approach is to create a custom RST role for this. Is this the right approach? If so, where to start?

How to allow duplicate SKU in Magento

I have a customer who retails third party batteries, and some batteries can replace several OEM models.
For instance, 3rd party SKU 12345 may replace Toshiba N23 and HP 53214, thus my customer would like to create two products with the same SKU in front end (they are essentially the same product). However, Magento by default does not allow duplicated SKU.
My current solution is to set SKU to not required from the backend, and add another attribute called Model that allows duplicated values, and display the Model in front end.
Is there a better way to do this? Or is it possible to allow duplicated SKU?
Tian Bo
Noble Technologies
It sounds to me like you've found a good solution. I'm not so sure you should try to have duplicate values for SKU for two reasons.
First the whole point of SKU is that it is a unique identifier. That's its only reason for existing. If you're going to have duplicate values, then it's not a unique identifier; it's just another attribute. But of course Magento still needs a unique identifier to work, which means that this is an extra field, which takes us exactly where you are now.
That said we come to my second point which is this... I'm not exactly a Magento guru, but I've built my share of e-commerce sites and one thing I've learned is that they depend on certain unbreakable rules to work properly. One of them is that unique identifiers are unique, both on the database and application level. As such, a large part of the website depends on this to function correctly. Which I'm pretty sure goes for Magento too.
So trying to change such a basic premise in something so complicated will only lead to horrors and a slow descent into madness.
This sounds like a good solution that I extended a bit further, however what I did with multiple store was to create a visible attribute ITEM_SKU (Item SKU) - make it visible and searchable and then concatenate the store_id to Magneto SKU to make it unique.
So SKU becomes (Store_id "-" SKU).
It surprises me how often people are willing to break who-knows-what parts of Magento, just to get a specific piece working how they expect.
The proper way to allow for duplicate skus is NOT to (unless you'd like to re-write large parts of the framework). You CAN, however, add a custom attribute to products that shares all the same settings as "sku" minus the setting that requires values to be unique.
Changing product pages, emails, etc to show this value instead will require a little extra work but will save you headaches later.
Why don't you create 1 product (SKU 12345) and list this product in multiple categories. So your multiple categories will be Toshiba and HP. The same product (SKU 12345) will be listed in Toshiba and HP.

Resources