Name
sn_ci_analytics.VADashboardUserSearchMetrics
Description
No description available
Script
var VADashboardUserSearchMetrics = Class.create();
VADashboardUserSearchMetrics.prototype = {
initialize: function() {},
execute: function(v_table, v_query, metric) {
var vaUtils = new sn_ci_analytics.VADashboardUtils();
var query = v_query.getEncodedQuery();
var decodedFilter = vaUtils.decodeFilter(query);
var fromDate = decodedFilter.filter.from_date;
var toDate = decodedFilter.filter.to_date;
var type = decodedFilter.filter.type;
if (!vaUtils.isValidDate(fromDate) || !vaUtils.isValidDate(toDate) || !type) {
CIAnalyticsLogger.getLogger('UserSearchMetrics').debug('Unable to load data due to missing/invalid parameter');
return;
}
if (!(type === "AI" || type === "CS" || type === "TL")) {
CIAnalyticsLogger.getLogger('UserSearchMetrics').debug('Unable to load data due to invalid type');
return;
}
var typeToEventName = {};
switch (metric) {
case "queries_with_no_clicks":
typeToEventName = {
"AI": "AI_SEARCH_ZERO_CLICKS",
"CS": "CONTEXTUAL_SEARCH_ZERO_CLICKS",
"TL": "BOT_OUTPUT_ZERO_CLICKS"
};
break;
case "queries_with_no_results":
typeToEventName = {
"AI": "AI_SEARCH_ZERO_RESULTS",
"CS": "CONTEXTUAL_SEARCH_ZERO_RESULTS"
};
break;
case "trending_queries":
typeToEventName = {
"AI": "AI_SEARCH_TRIGGERED",
"CS": "CONTEXTUAL_SEARCH_TRIGGERED",
"TL": "BOT_OUTPUT_CREATED"
};
break;
case "trending_content":
typeToEventName = {
"AI": "AI_SEARCH_RESULT_CLICKED",
"CS": "CONTEXTUAL_SEARCH_RESULT_CLICKED",
"TL": "BOT_OPUTPUT_LINK_CLICKED"
};
break;
default:
typeToEventName = {
"AI": "AI_SEARCH_ZERO_CLICKS",
"CS": "CONTEXTUAL_SEARCH_ZERO_CLICKS",
"TL": "BOT_OUTPUT_ZERO_CLICKS"
};
}
var event_name_filter_value = typeToEventName[type];
var body = {
"from_date": fromDate,
"to_date": toDate,
"event_name_filter": event_name_filter_value,
"event_type_filter": "Custom"
};
var response = AnalyticsServiceInvoker.invoke("Event", "getAnalyticsEventPropertyValues", body);
var event_response = response["Custom"] && response["Custom"][event_name_filter_value];
if (response && response["Custom"] && event_response) {
var terms = {};
switch (metric) {
case "queries_with_no_clicks":
terms = event_response["Search Term"];
break;
case "queries_with_no_results":
terms = event_response["Search Term"];
break;
case "trending_content":
switch (type) {
case "AI":
terms = event_response["Title"];
break;
case "CS":
terms = event_response["Title"];
break;
case "TL":
terms = event_response["URL"];
break;
}
break;
case "trending_queries":
terms = event_response["Search Term"];
break;
default:
terms = event_response["Search Term"];
}
var total = Object.keys(terms).reduce(function(acc, i) {
return acc + terms[i];
}, 0);
var termByPercentage = Object.keys(terms).reduce(function(acc, term) {
acc[term] = (terms[term] / total) * 100;
return acc;
}, {});
function entries(obj) {
return Object.keys(obj).map(function(key) {
return [key, obj[key]];
});
}
var sortedTerms = entries(termByPercentage).sort(function(a, b) {
return a[1] > b[1] ? -1 :
a[1] < b[1] ? 1 : 0;
});
sortedTerms.forEach(function(val, i) {
var record = {
sys_id: gs.generateGUID()
};
record[metric] = val[0];
record['total'] = val[1];
v_table.addRow(record);
});
}
},
type: 'VADashboardUserSearchMetrics'
};
Sys ID
2cb65a0bff00011065ca1087cddcbd98