I’m trying to make catalogue of freelancers. They can choose what they do and then set prices for their services.
Vocal Tuning - Average price -$40 per track
Time alignment - Average price - $40 per track
Mixing Engineer - Average price - $200 per song
My table contains 2 lists: Freelancers and Choices.
List “Choices” contain specialties (services). A freelancer choose his specialty and then should be able to set price for it. I think what is the best way to do this functionality? May be I should make choice column with average price like: $5, $10, $20 etc. Then set this price for chosen service. Freelancers can have many services.
For now I don’t really understand how to store and make relations between freelancers, services, prices. May be someone already did something like this?
A simple way to approach this would be to create a separate Freelancer Services table. At a bare minimum, this table would contain 3 columns: Freelancer ID, Service ID and price.
Each time a Freelancer adds a service, you would create a new row in that table. Then to get a list of all services provided by a Freelancer, you create a multiple relation column in your Freelancers table that matches the Freelancer ID to the same column in the Freelancer Services table. This column could then be used as the source of an Inline List component and included in the Freelancer details view.
Yes, I understood it’s not good idea, 'cause it’ll be difficult to sort Services and Prices.
Choice components, yes. But my question is how to organize multiple Services and Prices choice. Should I just place for example 3 pairs of Choice components like below or there is a way to add one more Service?
Well, you can enable multiple selections with your Choice components, which will give you a joined list of values, which I guess is basically what you are looking for, ie.
The difficulty is going to come later, when you want to match the Services and Prices up, and it could get quite messy. You’ll either have to add a series of extra columns to split the joined lists and them patch them back together. And if the number of possible services that can be associated with a Freelancer is indeterminable, then that becomes essentially impossible to manage. The other approach would be to use a working table to convert the joined lists to arrays and then explode them into multiple rows. But again, either approach would be creating an awful lot of work.
That’s what I would do, yes.
You don’t need to be in an edit screen, in fact that would just complicate things.
I assume that you’re using Glide Pages, yes? (not Glide Apps)
I would just have a button component on the Freelancer Profile page. Set the visibility so the button is only available if the user email is the signed-in user.
Have the button open an add form, target it at the Freelancer Services table, and add two choice components - one for the service, and one for the price. When the user submits, a row will be added.
If you have a multiple relation column from your Freelancers table, you can use a rollup column that targets that relation and returns a count of Services per Freelancer. Then you could have an extra visibility condition on your “Add Services” button such that it’s only available if the count is less than or equal to 10.
If you have them in a Data Grid, you can make selected columns editable, but that might not be the best way, especially if they were initially created using values from choice components. It would probably be better to display them as a Collection so that users can navigate to specific records (rows). From there you can enable Edit and Delete.
Did you look at the documentation for choice components? It explains it pretty well. The examples show how it’s used in an App, but it’s essentially the same in Pages.
Enter a service that isn’t in a list and add their price.
What is the purpose of choosing and entering a service?
The reason I ask is, if two freelancers enter (not select) the same service then being able to enter it or select it seems redundant (if we all end up entering the same services they might as well just be available in a list and if we all entered different services then why have them in a standard list?)
If I understand your data structure correctly, this is probably one of the complicating factors and just wondering if it’s necessary for version 1.
A suggestion is, that if a service isn’t available from a list, the freelancer can somehow ask for it to be added. Assuming you are designing for an audience you’re familiar with you can probably get a pretty compete list to start with and anything a freelancer wants to add will be a rare exception.
Yes you can do this. Just have a choice component of available services, and if they want to add a different one, then you can also have an entry component where they can type a different service. Two entry components can point to the same column.
Yes, you’re right at many points. We will do something like this.
The problem is that the list is quite long. At the moment we have more than 50 options and it will grow.
I’m thinking about component like when you type something it will give you a suggestion. Then you can click this suggestion and use it as a service. That would be easier for freelancers to add their services.
Second way to make choice easier is to divide whole data on the segments and make two choice components: Dropdown and then Cheeps.
Just for an example below is a form from SoundBetter freelance platform. At the left side you can scroll and then drop Speciality to right and choose average price
Yes, you could do this if you divide them into categories and use two choice components with Screen Values Filtering. They would select a category from the first list, and then the second list could be filtered according to the selected category.