Hey there ,
I'm starting learn OutSystems courses and I got problem to understand why we used list append and put the element to counter < rating as we defined this in IF condition.If anyone got a link or an article or a video describe how to make rating vote in a web please attached it it's will help to understand main idea .
Thanks
Hello Yousef,
Your first objective is to show to the users a list of stars (for example, 5), and the number of "filled" stars will tell the user the rating of the movie. So, if you have 3 filled stars in 5 stars (the last two are empty), you will tell the user that the movie has a rating of 3 in 5.
So, one option, the one adopted in the exercise, is to use a ListRecords. The source will be a list of booleans. And in the line template of the ListRecords, you use an IF to show an empty or a filled star. If the value in the current list item is TRUE, you show a filled star. If it is false, you show an empty star.
Now, you must build the list. So, your block receives a rating (the movie rating, for example, 3) and the maximum rating possible (like 5 in our example). What do you want? You want to fill your list with booleans, the first three with TRUE and the rest with FALSE so that your ListRecords in the screen shows the stars correctly.
As you must build the list, each value you want to add to the list must be appended to the end of the list using the ListAppend method.
You do a looping using a counter, that starts in 1 (for example). If the counter is <= than the rating given, you put a TRUE (saying that the star to show at this position should be a filled one). When the counter goes beyond the rating, it starts putting FALSE (meaning an empty star). And the looping stops when the counter is bigger than the max rating.
Ex. Rating: 3, Max Rating 5.
1. Counter = 12. Is Counter <= Max Rating? If so, go to 3, else go to 63. Append a new item to the List. The value will be Counter <= Rating. This is a comparison. If Counter is <= than the rating, it will return true, else, it will return false.4. Increment Counter (Counter = Counter + 1)5. Go to 26. Finish.
Hope this helps.
Cheers.
Eduardo Jauch wrote:
Ex.Rating: 3, Max Rating 5.
That's helps thank you very much.
Rating: 3, Max Rating 5.
1. Counter = 1 2. Is Counter <= Max Rating? If so, go to 3, else go to 6 3. Append a new item to the List. The value will be Counter <= Rating. This is a comparison. If Counter is <= than the rating, it will return true, else, it will return false. 4. Increment Counter (Counter = Counter + 1) 5. Go to 2 6. Finish.
I really confused about ,why at the "2. Is Counter <= Max Rating"? here is <= ,but in the outsystems exercise is count <5 not have =? another similarity question is "If Counter is <= than the rating" ,but in the outsystems exercise , element of listappend is counter< rating?
Hi @Eduardo Jauch can we achieve the stars without list ? Because when I am using the list I am getting a warning as "List should have a single direct child " and while solving the warning I enclosed the list inside a container and after enclosing it inside the container in the MovieDetail screen the stars are coming as vertical . How can I solve the problem?
Hi Yousef Ahmed,
You can check one live scenario here, where append list used multiple times.
Sravan
Hi Eduardo,
the logic is understood; what I still know not is - what is 'Element' under Action of ListAppend. The list is the boolen list, understood; but what is 'Element'?
Hello,
Element is what you want to append to the list.
If the list is a Boolean list, you want to append Boolean values.
So, you need to provide a Boolean value, true or false, to the element property of the ListAppend action.
Element is just what you want to add to the end of the list.
Thank you Eduardo.
The 'Element' property is just not self-explanatory. Now I see that Element is like the row-cell in the list and the value entered is what is stored in that row-cell.
Furthermore, just entering 'counter < rating' is not self-explanatory that the result of that Boolean condition is to be stored in the element-row. (I kept thinking why is a condition entered for a value there).
Well, now i get it.
Thank you much for your help.
Hi David,
I understand and I agree that the name used for this parameter may not be the most common or intuitive.
Just be careful that a condition is an expression with a result (true or false).
It is usually used as an IF condition, but we can use a comparison and store the result of the comparison in a variable, or passing as argument to an action, like in this case.
Cheers
Yes. Thank you much Eduardo.
hello, everyone
if someone can answer me ,that is really thanks. A girl from Asia
Hello yingting
You wake up an old discussion from more than a year ago.
It would be better to start a new discussion. That way if in your case someone replies with a solution, then you can mark it as such.
Regards