Formula Pattern
":
return wpcLeft !== wpcRight;
case ">":
return wpcLeft > wpcRight;
case "<":
return wpcLeft < wpcRight;
case ">=":
return wpcLeft >= wpcRight;
case "<=":
return wpcLeft <= wpcRight;
default:
return false;
}
}
function wpcSafeText(wpcText) {
return String(wpcText)
.replace(/&/g, "&")
.replace(//g, ">")
.replace(/"/g, """);
}
function wpcRenderChart(wpcCond1, wpcCond2, wpcFinal) {
var wpcCanvas = document.getElementById("wpc-chart");
if (!wpcCanvas) {
return;
}
if (wpcChartInstance) {
wpcChartInstance.destroy();
}
wpcChartInstance = new Chart(wpcCanvas, {
type: "bar",
data: {
labels: ["Condition 1", "Condition 2", "AND Result"],
datasets: [{
label: "Pass Status",
data: [wpcCond1 ? 1 : 0, wpcCond2 ? 1 : 0, wpcFinal ? 1 : 0],
backgroundColor: [
wpcCond1 ? "#2563eb" : "#f59e0b",
wpcCond2 ? "#2563eb" : "#f59e0b",
wpcFinal ? "#16a34a" : "#dc2626"
],
borderColor: [
wpcCond1 ? "#1d4ed8" : "#d97706",
wpcCond2 ? "#1d4ed8" : "#d97706",
wpcFinal ? "#15803d" : "#b91c1c"
],
borderWidth: 2,
borderRadius: 10
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false
},
tooltip: {
callbacks: {
label: function (wpcContext) {
return wpcContext.raw === 1 ? "Pass" : "Fail";
}
}
}
},
scales: {
y: {
beginAtZero: true,
max: 1,
ticks: {
stepSize: 1,
callback: function (wpcValue) {
return wpcValue === 1 ? "Pass" : "Fail";
},
color: "#475569"
},
grid: {
color: "#e2e8f0"
}
},
x: {
ticks: {
color: "#475569"
},
grid: {
display: false
}
}
}
}
});
}
function wpcCalculate() {
var wpcColumn1Name = document.getElementById("wpc-column1-name").value.trim() || "Column1";
var wpcColumn1Type = document.getElementById("wpc-column1-type").value;
var wpcColumn1Operator = document.getElementById("wpc-column1-operator").value;
var wpcColumn1Compare = document.getElementById("wpc-column1-compare").value.trim();
var wpcColumn1Test = document.getElementById("wpc-column1-test").value.trim();
var wpcColumn2Name = document.getElementById("wpc-column2-name").value.trim() || "Column2";
var wpcColumn2Type = document.getElementById("wpc-column2-type").value;
var wpcColumn2Operator = document.getElementById("wpc-column2-operator").value;
var wpcColumn2Compare = document.getElementById("wpc-column2-compare").value.trim();
var wpcColumn2Test = document.getElementById("wpc-column2-test").value.trim();
var wpcReturnType = document.getElementById("wpc-return-type").value;
var wpcTrueResult = document.getElementById("wpc-true-result").value.trim();
var wpcFalseResult = document.getElementById("wpc-false-result").value.trim();
var wpcCond1Result = wpcEvaluate(
wpcNormalizeValue(wpcColumn1Type, wpcColumn1Test),
wpcColumn1Operator,
wpcNormalizeValue(wpcColumn1Type, wpcColumn1Compare)
);
var wpcCond2Result = wpcEvaluate(
wpcNormalizeValue(wpcColumn2Type, wpcColumn2Test),
wpcColumn2Operator,
wpcNormalizeValue(wpcColumn2Type, wpcColumn2Compare)
);
var wpcFinalPass = wpcCond1Result && wpcCond2Result;
var wpcFinalOutput;
if (wpcReturnType === "number") {
var wpcTrueNum = parseFloat(wpcTrueResult);
var wpcFalseNum = parseFloat(wpcFalseResult);
wpcFinalOutput = wpcFinalPass ? (isNaN(wpcTrueNum) ? 0 : wpcTrueNum) : (isNaN(wpcFalseNum) ? 0 : wpcFalseNum);
} else if (wpcReturnType === "boolean") {
wpcFinalOutput = wpcFinalPass ? wpcFormatFormulaValue("boolean", wpcTrueResult, true) : wpcFormatFormulaValue("boolean", wpcFalseResult, true);
} else {
wpcFinalOutput = wpcFinalPass ? wpcTrueResult : wpcFalseResult;
}
var wpcFormula = '=IF(AND([' + wpcColumn1Name + ']' + wpcColumn1Operator + wpcFormatFormulaValue(wpcColumn1Type, wpcColumn1Compare, false) + ',[' + wpcColumn2Name + ']' + wpcColumn2Operator + wpcFormatFormulaValue(wpcColumn2Type, wpcColumn2Compare, false) + '),' + wpcFormatFormulaValue(wpcReturnType, wpcTrueResult, true) + ',' + wpcFormatFormulaValue(wpcReturnType, wpcFalseResult, true) + ')';
var wpcResults = document.getElementById("wpc-results");
wpcResults.innerHTML =
'
Calculated SharePoint Formula ' +
'
' + wpcSafeText(wpcFormula) + '
' +
'
' +
'
Condition 1 ' + (wpcCond1Result ? 'True' : 'False') + '
' +
'
Condition 2 ' + (wpcCond2Result ? 'True' : 'False') + '
' +
'
Final Output ' + wpcSafeText(String(wpcFinalOutput)) + '
' +
'
' +
'
Sample evaluation: SharePoint would return ' + wpcSafeText(String(wpcFinalOutput)) + ' for the test row values you entered.
' +
'
Logic summary: AND returns true only when both comparisons pass. In this test, the final AND result is ' + (wpcFinalPass ? 'True' : 'False') + ' .
';
wpcRenderChart(wpcCond1Result, wpcCond2Result, wpcFinalPass);
}
function wpcReset() {
document.getElementById("wpc-column1-name").value = "Status";
document.getElementById("wpc-column1-type").value = "text";
document.getElementById("wpc-column1-operator").value = "=";
document.getElementById("wpc-column1-compare").value = "Approved";
document.getElementById("wpc-column1-test").value = "Approved";
document.getElementById("wpc-column2-name").value = "Amount";
document.getElementById("wpc-column2-type").value = "number";
document.getElementById("wpc-column2-operator").value = ">";
document.getElementById("wpc-column2-compare").value = "1000";
document.getElementById("wpc-column2-test").value = "1500";
document.getElementById("wpc-return-type").value = "text";
document.getElementById("wpc-true-result").value = "Qualified";
document.getElementById("wpc-false-result").value = "Not Qualified";
wpcCalculate();
}
document.getElementById("wpc-calculate-btn").addEventListener("click", wpcCalculate);
document.getElementById("wpc-reset-btn").addEventListener("click", wpcReset);
wpcCalculate();
})();