Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
saipraneethbrg
Contributor II
Contributor II

To Get User Rating Of My Dashboard

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 🙂

Labels (3)
5 Replies
pradeep92
Partner - Creator II
Partner - Creator II

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.

chris_djih
Creator III
Creator III

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.

If you found help, mark the correct answer and give some likes to ALL contributors, that tried to help.
pradeep92
Partner - Creator II
Partner - Creator II

Hello Chris,

It is superb. I will try it today itself and let you know the feedback.

 

Regards,

Pradeep

 

pradeep92
Partner - Creator II
Partner - Creator II

 Below is the question,

pradeep92
Partner - Creator II
Partner - Creator II

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 ?