Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Based on the examples in the thread below,I was able to pass static variables from Select or Input HTML Tags to QlikSense App.
https://community.qlik.com/thread/220759
I'm now trying to pass dynamic value instead of static value.
This dynamic value is based on geo location of the user logged in.
With some sample codes available online,I was able to obtain geo codes and save it to a variable.
Cant figure out ,how to pass these dynamic variable to Qlik.
Example code;Assigned lat variable as
var lat = position.coords.latitude;
and trying to pass this dynamic variable using this statement below,I know i'm doing something wrong with bold text below but dont know how to correct it.
$("#Accept1-button").click(function() {
// app.variable.setNumValue('vLat',5);
app.variable.setStringValue("vLat", $("#lat").val());
});
Can someone please suggest.
Ref Document
I was able to fix the issue.
I believe the issue is,Qlik only accepts input values rather than variables
Here is an explanation of how its implemented.
1)HTML and Java Script to get Geo Location
<p id="demo"></p>
<script>
var x = document.getElementById("demo");
var vlat = position.coords.latitude;
var vlon = position.coords.longitude;
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
//Passing Variables
vlat = position.coords.latitude;
vlon = position.coords.longitude;
x.innerHTML = "Latitude: " + vlat + //position.coords.latitude +
"<br>Longitude: " + vlon //position.coords.longitude;
}
</script>
2)Create Input Box to hold the values ,so it can pass to Qlik App.
Forcing the user to hit Accept Button,so we can pass variable values to input boxes
<input type="text" type="hidden" id="myLat" ></input>
<input type="text" type="hidden" id="myLong" ></input>
<button id="Accept1-button" onclick="myFunction()">Accept GeoLoc</button>
3)
<script>
function myFunction() {
document.getElementById("myLat").defaultValue = vlat ;
document.getElementById("myLong").defaultValue = vlon ;
}
</script>
4)This step passes variables to Qlik
$("#Accept1-button").click(function() {
app.variable.setStringValue("vLat",$("#myLat").val());
});
$("#Accept1-button").click(function() {
app.variable.setStringValue("vLong", $("#myLong").val());
});
Looks like working
function VariableValues() {
var singleValues = $( "#single" ).val();
var multipleValues = $( "#multiple" ).val() || [];
app.variable.setStringValue("singlevalues", "$(lat)".val());
$( "p" ).html( "<b>Single:</b> " + singleValues +
" <b>Multiple:</b> " + multipleValues.join( ", " ) );
}
Note - While extend to variable # and . are ID's and Classes only. So, You may require to call outside of Variables via Double Quotes. If not working, Please make sure to explain little about needed to pas the variables.
Thanks Anil, Tried similar code on mine but didnt work.
Let me explain further.
1)In Qlik App,I have a Variable called vLat
2)In the mashup html ,I have the following code to find the geocodes
<body onload="javascript:getLocation()">
<p id="demo"></p>
<script>
var x = document.getElementById("demo");
var lat = position.coords.latitude;
var lon = position.coords.longitude;
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
//Passing Variables
document.getElementById("lat").innerHTML = position.coords.latitude;
document.getElementById("lon").innerHTML = position.coords.longitude;
x.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
<button id="Accept1-button">GeoLoc</button>
3)When a user clicks the button,I defined JavaScript to pass the HTML variable lat to the Qlik App variable vLat
$("#Accept1-button").click(function() {
app.variable.setStringValue("vLat","$(lat)".val());
});
Prior to your suggestion,My code looked like below
$("#Accept1-button").click(function() {
app.variable.setStringValue("vLat",$("#lat").val());
});
I think the challenge here is,the my code works for Select Tags,Per your recommendation,i changed my code to look at $(lat) for variable but that didnt work.
From third point you can call like below, Try this way?
variable vLat
document.getElementById("Accept1-button").click(function() {
app.variable.setStringValue("vLat","$(lat)".val());
});
No Luck Anil.
I was able to fix the issue.
I believe the issue is,Qlik only accepts input values rather than variables
Here is an explanation of how its implemented.
1)HTML and Java Script to get Geo Location
<p id="demo"></p>
<script>
var x = document.getElementById("demo");
var vlat = position.coords.latitude;
var vlon = position.coords.longitude;
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
//Passing Variables
vlat = position.coords.latitude;
vlon = position.coords.longitude;
x.innerHTML = "Latitude: " + vlat + //position.coords.latitude +
"<br>Longitude: " + vlon //position.coords.longitude;
}
</script>
2)Create Input Box to hold the values ,so it can pass to Qlik App.
Forcing the user to hit Accept Button,so we can pass variable values to input boxes
<input type="text" type="hidden" id="myLat" ></input>
<input type="text" type="hidden" id="myLong" ></input>
<button id="Accept1-button" onclick="myFunction()">Accept GeoLoc</button>
3)
<script>
function myFunction() {
document.getElementById("myLat").defaultValue = vlat ;
document.getElementById("myLong").defaultValue = vlon ;
}
</script>
4)This step passes variables to Qlik
$("#Accept1-button").click(function() {
app.variable.setStringValue("vLat",$("#myLat").val());
});
$("#Accept1-button").click(function() {
app.variable.setStringValue("vLong", $("#myLong").val());
});
Given that lat is a javascript variable, I think the correct syntax would be:
app.variable.setStringValue("vLat", lat);
The jquery method $("#xx") is for accessing DOM elements, not variables.
-Rob
When i code it to use the variable directly, Qlik objects in the mashup go completely blank ,they dont show any data.
app.variable.setStringValue("vLat", lat);