Goal tracking not working with event - google-analytics

I've setup a goal and hooked it up to an event, but even if the event occurs, the goal's conversion counter stays at 0 as if it's not hooked up. Any idea what might be causing this?
Have tried waiting for 48+ hours but still stays at 0.

You've said 'Event Value Greater than 1' - Event Value is an optional goal field that may be used to store an integer; usually something financial.
In this situation, you're ignoring any Member Question Form submissions unless they have an Event Value of 2 or more.
If that's not deliberate then it's your problem - just leave that field blank instead and it should work.

Related

Getting Event data within a CustomView after setRange is called

So I'm trying to build my own custom view for a month's worth of data (based on the "agenda-views.html' example) and I've been able to create a custom View class which adds itself as a button on the list of .. buttons.
When I click on that button (MyView), its setRange is called so I know the range of Events to display.
The View's renderEvents is called but is passed all of the Events that the Calendar knows about, so I have a two parter question:
(a) Is there a way I can use existing code to do the equivalent of: "given this range, give me all of the Events fullCalendar knows about"?
- or -
(b) Do I use an XHR here to pull back the data for the given range (now that I know what it is is) and Render it
I'd rather do (a) as it's more efficient (less requests etc) but I'm finding myself swamped in code and, after reading through quite a lot it haven't really found a method that says 'Get all events for this range'.
Alternatively, am I missing something? How does renderEvents know what the current range is and then render them? Or, should I be using renderSelection, which doesn't seem to get called.
Thanks!
Set up your events as a json feed, when the URL is called it will pass the start and end dates for the current view. In your function/method/action you then retrieve your events for the given dates and return them.

Android event tracking in Analytics Audiences

I have kind of a tricky question without an answer (I went through the documentation but did not find what I was looking for) :
I am tracking two specific events in my app, one is the start of a GPS tracking, the other one is the stop event. In Firebase Analytics, I am able to select those events in order to create an audience.
The audience I want is when an user triggers the start event of the GPS tracking process, but does not go through the whole process and does not trigger the stopevent.
So basically when I create the audience I have to select both startand stop event, but the thing is I actually have no value assigned to those events. For the moment, as a test case I told the audience to track if start > 0 and stop <= 0.
I suppose it is not going to work as expected. How should I track the event in the Android app, and how should I retrieve it in the audience creation ? By default, is my start event value is the number of times the event triggered ?
Thanks in advance,
Your question does not mention which SDK you are using (Android, iOS, etc. please make your question more precise) - I will assume it's Android.
When logging an event, you can set parameters. A parameter is made of a key and a value. If you want a value assigned to your event, you must use a predefined key : FirebaseAnalytics.Param.VALUE. In this case, the value is accumulated automatically for each event type.
The following snippet will do the work for your start event, stop will work the same way of course :
private void logStartEvent() {
Bundle bundle = new Bundle();
bundle.putInt(FirebaseAnalytics.Param.VALUE, 1);
firebaseAnalytics.logEvent("start", bundle);
}
Then you should be able to create an audience with start > 0 and stop <= 0
Hope this helps.

DevExpress: Why does ChartControl.CustomDrawAxisLavel event occur multiple times?

I've created simple application with the DevExpress.XtraCharts.ChartControl. To customize X-axis labels, I used CustomDrawAxisLabel.
But this event occurs twice during creation (once for all labels e.g. from 0 to 10 and one more time from 0 to 10) and 4 times when mouse moves.
How can i get it to occur only single time for all axis labels?
From: CustomDrawAxisLabel Event is fired when moving the mouse over the Chart ?
According to our documentation the
ChartControl.CustomDrawAxisLabel event is raised before drawing a
control. This means that if a control should be redrawn, this method
will be raised first. The parent form can force a control to be
redrawn even if it was not actually changed. In addition, you can
invalidate a control manually by calling the ChartControl method.
Please note that if you use any code that causes chart redrawing (
even indirectly ), this method will be raised, too.
Hope this satisfy your quest for finding for the reason.

how to limit edit events on dynamic form changes

I'm working on a form building app, and I use an event of type edit, each time updating the form in the DB.
But the problem is that my form builder auto saves each change which causes a lot of edit events to occur.
Is there a way to limit the edit events creation, like only consider the last change in the form as an edit event?
You want some underscore power.
var saveFunction = function(dataToSave) { ... },
debouncedSaved = _.debounce(saveFunction, 700);
In this example, debouncedSaved will only be eventually called if left idle for 700 milliseconds.
It should be easily adapted to your code, you can use debounced functions as event handlers since they're still classic functions.

Asynchronous validation in QWizard

I'm writing a wizard UI based on the QWizard Qt object. There's one particular situation where I want the user to log in to a service using host, username, and password. The rest of the wizard then manipulates this service to do various setup tasks. The login may take a while, especially in error cases where the DNS name takes a long time to resolve -- or perhaps it may not even resolve at all.
So my idea is to make all three fields mandatory using the registerField mechanism, and when the user hits Next, we show a little throbber on the wizard page saying "Connecting to server, please wait..." while we try to connect in the background. If the connection succeeds, we advance to the next page. If not, we highlight the offending field and ask the user to try again.
However, I'm at a loss for how to accomplish this. The options I've thought of:
1) Override validatePage and have it start a thread in the background. Enter a wait inside validatePage() that pumps the Qt event loop until the thread finishes. You'd think this was the ugliest solution, but...
2) Hide the real Next button and add a custom Next button that, when clicked, dispatches my long running function in a thread and waits for a 'validation complete' signal to be raised by something. When that happens, we manually call QWizard::next() (and we completely bypass the real validation logic from validatePage and friends.) This is even uglier, but moves the ugliness to a different level that may make development easier.
Surely there's a better way?
It's not as visually appealing, but you could add a connecting page, and move to that page. If the connection succeeds, call next() on the wizard, and if the connection fails, call previous() and highlight the appropriate fields. It has the advantage of being relatively straightforward to code.
My final choice was #2 (override the Next button, simulate its behavior, but capture its click events manually and do the things I want to with it.) Writing the glue to define the Next button's behavior was minimal, and I was able to subclass QWizardPage with a number of hooks that let me run my task ON the same page, instead of having to switch to an interstitial page and worry about whether to go forwards or backwards. Thanks Caleb for your answer though.
I know this has already been answered (a long time ago!) but in case anyone else is having the same challenge. Another method for this is to create a QLineEdit, initiate it as empty and set it as a mandatory registered field. This will mean that "Next" is not enabled until it is filled with some text.
Run your connection task as normal and when it completes use setText to update the QLineEdit to "True" or "Logged in" or anything other than empty. This will then mean the built in isComplete function will be passed as this previously missing mandatory field is now complete. If you never add it to the layout then it won't be seen and the user won't be able to interact with it.
As an example ...
self.validated_field = QLineEdit("")
self.registerField('validated*', self.validated_field)
and then when your login process completes successfully
self.validated_field.setText("True")
This should do it and is very lightweight. Be sure though that you consider the scenario where a user then goes back to that page and whether you need to reset the field to blank. If that's the case then just add in the initialisePage() function to set it back to blank
self.validated_field.setText("")
Thinking about it you could also add the line edit to the display and disable it so that a user cannot update it and then give it a meaningful completion message to act as a status update...
self.validated_field = QLineEdit("")
self.validated_field.setDisabled(True)
self.validated_field.setStyleSheet("border:0;background-color:none")
self.main_layout.addWidget(self.validated_field)
self.registerField('validated*', self.validated_field)
and then when you update it..
self.validated_field.setText("Logged in")

Resources