Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi All,
I need to get User feed back ( User Rating ) of my dashboard. And If user gives low rating to my dashboard he/ she can give their comments there and this need to be pop up when user tries to close the application. This data given by user has to flow from Qlik dashboard to a table created in db.
I have tried it with widget editor and I am able to create front end part using HTML and CSS. However I failed to connect it with db and store all the users feed back.
Thanks in advance 🙂
Hello Bro,
Got any solution for it ?. I am also looking for the same where user gives some feedback in a text box and press the submit button and its get stored in DB or say in a QVD kind of.
there is a fast answer: try out one of the existing write back extensions.
the long answer: If done this by messing around wiht a lot of variables and synthetic tables.
The desired outcome was a table like this:
AppName | user | rating | comment | timestamp |
AwesomeApp1 | qliknewbie | 4 | like it | 2021-12-23 11:40:45 |
AwesomeApp1 | qlikKnight | 2 | needs improvement | 2022-01-16 08:32:12 |
AwesomeApp1 | yourboss | 5 | - | 2022-02-04 17:57:12 |
so the first thing I've done is get a list of all qlik user name in a single dim table: userId
then I loop through all the users to generate an empty table. For each loop I made some helper variables like
let vUser = Peek(userId,n,'user');
let vRating_$(vUser) = If( Len('$(vRating_$(vUser))')>0,'$(vRating_$(vUser))', '') ;
// If len() is for not deleting new ratings, when the app is relaoded after setting the ratings
let vComment_$(vUser) = If( Len('$(vComment_$(vUser))')>0,'$(vComment_$(vUser))', '');
then i load an inline table where i sue all these variables:
RateFeedback:
Load * , hash128(appname,username,rating,feedback) as &Primary_KEY;
inline [appname,username,rating,feedback,timestamp
'$(vUser)',$(vRating_$(vUser)),'$(vComment_$(vUser))','$(vAppname)','$(now())'];
after the loop you have the initialized table RateFeedback.
in the frontend just place a temp variable input for rating (vTempRating).
And place a button next to it and add the action change variable
variable: ='vRating$(=OSUser())'
value: ='$(vTempRating)'
You may need to refine this with sum Subfields, depending on how your username looks in the initialized table.
If you now reload the app you should get a new entry in the RateFeedback table.
You should store this as .qvd somewhere as well to make it availlable in all apps.
The complete process takes some more steps, but I think the basic idea should be clear.
Hello Chris,
It is superb. I will try it today itself and let you know the feedback.
Regards,
Pradeep
Below is the question,
Hello Chris,
I have tried to achieve only for Ratings to check if works fine. please find the code below,
Steps:
1. I got all the list of users in a table named 'userId'.
2. Looping all the IDs to get user ID with their Ratings and storing it in a variable.
for i = 0 to noofrows('userId') - 1
let vUser = Peek('user',$(i),'userId');
Trace vUser:$(vUser);
let vRating_$(vUser) = If( Len('$(vRating_$(vUser))')>0,'$(vRating_$(vUser))', '') ;
Trace vRating:$(vRating_$(vUser));
Feedback:
Load distinct * inline
[username,rating,feedback,timestamp
'$(vUser)',$(vRating_$(vUser)),'$(vComment_$(vUser))','$(vNow_$(vUser))'];
next
3. In the front end, I have created a variable input with button to ensure it is saved as an update.
Button:
Variable ='vRating_$(=subfield(textbetween(OSUser(),';',''),'=','2'))'
Value ='$(vTempRating)'
4. By looking at this screenshot, Once I gave the rating as 2 and reload the app from DATA LOAD EDITOR , the RATING 1 is changed to RATING 2 but when I run from QMC , it is still 1.
WORKS WITH DATA LOAD EDITOR RELOAD but not with QMC reload
Could you please let me know what is the issue ?