const actualValue = engine.findDataByVarName("q_analytics_data");
const pvTable = engine.findDataByVarName("q_pv_evaluation_table");
const sessionTable = engine.findDataByVarName("q_session_evaluation_table");
const judgementTable = engine.findDataByVarName("q_effect_judgement_table");
let pv;
let session;
let pagePath;
let pageTitle
let pvEvaluation;
let sessionEvaluation;
let pvResult;
let sessionResult;
let judgementResult;
main();
function main(){
// Get Actual Value
let actualValueRows; // [0]: Title Row [1]: Value Row
let actualValueCols; // [0]: pageview [1]: session [2]: pagePath [3]: page title
if (actualValue === null){
throw new Error( "\n AutomatedTask AnalyticsDataError:" +
" Data Not Exist \n" );
}else{
actualValueRows = actualValue.split('\n');
engine.log("actualValueRows.length:" + actualValueRows.length);
if (actualValueRows.length === 1){
throw new Error( "\n AutomatedTask AnalyticsDataError:" +
" Count of Data Rows is invalid \n" );
}else{
actualValueCols = actualValueRows[1].split('\t');
pv = Number(actualValueCols[0]);
session = Number(actualValueCols[1]);
pagePath = actualValueCols[2];
pageTitle = actualValueCols[3];
engine.log("pv:" + pv + " session:" + session + " pagePath:" + pagePath + " pageTitle:" + pageTitle);
}
}
// 評点取得
pvResult = calcEvaluation(pvTable.split('\n'),pv);
sessionResult = calcEvaluation(sessionTable.split('\n'),session);
judgementResult = calcEvaluation(judgementTable.split('\n'),pvResult+sessionResult);
// ワークフローデータに格納
engine.log("pvResult:" + pvResult + " sessionResult:" + sessionResult + " judgementResult:" + judgementResult);
engine.setDataByVarName("q_pv", new java.math.BigDecimal(pv));
engine.setDataByVarName("q_session", new java.math.BigDecimal(session));
engine.setDataByVarName("q_page_title", pageTitle);
engine.setDataByVarName("q_pv_evaluation_result", new java.math.BigDecimal(pvResult));
engine.setDataByVarName("q_session_evaluation_result", new java.math.BigDecimal(sessionResult));
engine.setDataByVarName("q_judgement_result", new java.math.BigDecimal(judgementResult));
engine.setDataByVarName("q_pv_evaluation_result_star", getStarsForShow(pvResult));
engine.setDataByVarName("q_session_evaluation_result_star", getStarsForShow(sessionResult));
engine.setDataByVarName("q_judgement_result_star", getStarsForShow(judgementResult));
}
// 評価点計算
// param1: 評価テーブル(Array) param2: 評価対象数値
// return: 評価点
function calcEvaluation(tableRows,target){
let tableCols;
let result = 0;
for (var i=0; i < tableRows.length; i++){
tableCols = tableRows[i].split('\t');
if (((target >= tableCols[0])&&(target <= tableCols[1]))||((target >= tableCols[0])&&(tableCols[1] === "0"))){
engine.log("target:" + target + " tableCols[0]:" + tableCols[0] + " tableCols[1]:" + tableCols[1]);
result = tableCols[2];
return Number(result);
}
}
return result;
}
// 評価点を5段階スター表示文字列に変換
// param: 評価点(1~5)
// return: 5段階スター表示文字列
function getStarsForShow(point){
let strStar;
switch (point){
case 1:
strStar = "★☆☆☆☆";
break;
case 2:
strStar = "★★☆☆☆";
break;
case 3:
strStar = "★★★☆☆";
break;
case 4:
strStar = "★★★★☆";
break;
case 5:
strStar = "★★★★★";
break;
}
return strStar;
}