Remove Chart Filter
var ds = Chart_1.getDataSource();
ds.removeDimensionFilter("Country");
Application.refreshData();
यह SAC scripting code chart के data source से एक specific filter हटाता है। ds variable getDataSource() का उपयोग करके Chart_1 के data source को पुनः प्राप्त करता है। ds.removeDimensionFilter("Country") line "Country" dimension पर लागू किसी भी active filter को clear कर देती है, जिससे chart सभी countries का data फिर से प्रदर्शित कर सकता है। अंत में, Application.refreshData() change को तुरंत दर्शाने के लिए chart को update करता है। यह script तब उपयोगी होती है जब आप filter को dynamic रूप से reset या clear करना चाहते हैं—जैसे कि जब users किसी filter option को बंद करते हैं—यह सुनिश्चित करते हुए कि chart SAP Analytics Cloud dashboard environment में complete, unfiltered data प्रदर्शित करता है।
Apply a Filter to Chart
var ds = Chart_1.getDataSource();
ds.setDimensionFilter("Country", ["India", "USA"]);
Application.refreshData();
यह SAC scripting code किसी chart पर एक dimension filter लागू करता है ताकि केवल specific countries का data प्रदर्शित हो सके। ds variable, getDataSource() method का उपयोग करके Chart_1 के data source को प्राप्त करता है। फिर, ds.setDimensionFilter("Country", ["India", "USA"]) chart को filter करता है ताकि केवल वे record शामिल हों जहाँ country "India" या "USA" हो। अंत में, Application.refreshData() इस filter के आधार पर update किए गए परिणाम दिखाने के लिए chart को refresh करता है। यह script chart data visibility को dynamic रूप से नियंत्रित करने के लिए उपयोगी है, जिससे users targeted data analysis के लिए SAP Analytics Cloud dashboard के भीतर selected regions या categories पर ध्यान केंद्रित कर सकते हैं।
Apply Multiple Filters Together
var ds = Chart_1.getDataSource();
ds.setDimensionFilter("Region", ["APAC"]);
ds.setDimensionFilter("Year", ["2025"]);
Application.refreshData();
यह SAC scripting code specific जानकारी प्रदर्शित करने के लिए chart के data source पर अनेक filter लागू करता है। ds variable getDataSource() का उपयोग करके Chart_1 के data source को प्राप्त करता है। पहली line, ds.setDimensionFilter("Region", ["APAC"]), केवल APAC region के record दिखाने के लिए data को filter करती है। अगली line, ds.setDimensionFilter("Year", ["2025"]), results को और filter करती है ताकि केवल वर्ष 2025 का data शामिल हो। अंत में, Application.refreshData() update किए गए result प्रदर्शित करने के लिए chart को refresh करता है। यह script users को interactive रूप से data को सीमित करने की अनुमति देती है, जिससे उन्हें SAP Analytics Cloud में regional और yearly insights का प्रभावी ढंग से analyze करने में मदद मिलती है।
Refresh Chart Data
var ds = Chart_1.getDataSource();
ds.refreshData();
इस SAC scripting code का उपयोग किसी specific chart के data को refresh करने के लिए किया जाता है। ds variable getDataSource() function का उपयोग करके Chart_1 का data source प्राप्त करता है। फिर, ds.refreshData() command connected data model से data को update या reload करता है। यह सुनिश्चित करता है कि data update या apply किए गए filter जैसे changes के बाद chart हमेशा latest जानकारी प्रदर्शित करे। यह method तब उपयोगी होती है जब आप पूरी story या page के बजाय केवल एक chart को refresh करना चाहते हैं, जिससे SAP Analytics Cloud dashboard में यह प्रक्रिया fast और more efficient हो जाती है।
Show or Hide a Chart
Chart_1.setVisible(true); // Show chart
Chart_1.setVisible(false); // Hide chart
यह SAC scripting code नियंत्रित करता है कि dashboard पर कोई chart दिखाई दे या छिपा रहे। Chart_1.setVisible(true) command chart को screen पर प्रदर्शित करता है, जिससे users उसे देख सकते हैं। दूसरी ओर, Chart_1.setVisible(false) chart को view से छिपा देता है। इस script का उपयोग अक्सर button, switch या अन्य interactive elements के साथ users की actions के आधार पर chart दिखाने या छिपाने के लिए किया जाता है। यह SAP Analytics Cloud में किसी निश्चित समय पर केवल आवश्यक visual display करके, user experience को बेहतर बनाकर और specific data पर ध्यान केंद्रित करके dashboard को clean और organize रखने में मदद करता है।
Update chart based on dropdown:
chart_1.getDataSource().setDimensionFilter("type",Dropdown_1.getSelectedKey());
यह SAC scripting code dropdown menu से users के selection के आधार पर chart data filter करता है। chart_1.getDataSource() command, chart_1 के data source तक पहुँचता है। फिर, setDimensionFilter("type", Dropdown_1.getSelectedKey()) Dropdown_1 में वर्तमान में selected value का उपयोग करके "type" dimension पर एक filter लागू करता है। उदाहरण के लिए, यदि कोई users dropdown में "Sales" चुनता है, तो chart केवल "Sales" से संबंधित data दिखाएगा। यह script dashboard को interactive बनाती है, जिससे users SAP Analytics Cloud में chart setup को manual रूप से बदले बिना विभिन्न data categories या types के बीच आसानी से switch कर सकते हैं।
Add or remove measure from Chart:
Chart_1.addMeasure("[]",Feed.ValueAxis);
Chart_1.removeMeasure("[]",Feed.ValueAxis);
इस SAC scripting code का उपयोग chart से measures (data values) को dynamic रूप से जोड़ने या हटाने के लिए किया जाता है। Chart_1.addMeasure("[]", Feed.ValueAxis) command, chart के value axis पर Sales या Profit जैसे specific measure को प्रदर्शित करने के लिए जोड़ता है। दूसरा command, Chart_1.removeMeasure("[]", Feed.ValueAxis), उसी measure को value axis से हटा देता है। Empty brackets को वास्तविक measure name (जैसे, "Revenue") से बदलकर, आप नियंत्रित कर सकते हैं कि कौन सा metric दिखाया जाए। यह script interactive dashboard बनाने के लिए उपयोगी है जहाँ users चुन सकते हैं कि SAP Analytics Cloud में कौन से data values देखने या compare करने हैं।
Email to selected user from chart:
var ch1 = Chart_1.getSelections();
var sel = Chart_1.getSelections()[0];
if (sel!==undefined)
{
// get label value from chart
var value = Chart_1.getDataSource().getData(sel).formattedValue;
var subject="?subject=Non Reported Hours : " + value;
var to=ch1[0]["EmployeeUserName"];
var cc="&cc= ";
//var bcc="&bcc= ";
var body="&body=Hi "+ch1[0]["EmployeeName"];
var emailbody= ",%0A%0ANon Reported Hours : " + value + "%0A%0ABR,%0A" + Text_45.getPlainText();
NavigationUtils.openUrl("mailto:" + to + subject + cc + body + emailbody,true);
}
else
{
Application.showMessage(ApplicationMessageType.Warning, "Please select only one employee from the chart");
}
Filter dimension on chart based on Cross Calculation filter 1:
var measures = ActualQoQ_Date.getInputControlDataSource().getActiveSelectedMembers();
console.log(measures);
console.log(measures.length);
var PY = measures[0];
console.log(PY.description);
console.log(PY.id);
console.log(PY.modelId);
Chart_1.getDataSource().setRefreshPaused(true);
var dt="[Date].[YQM].[Date.CALQUARTER].";
if(measures.length>17){
var CY = measures[17];
//console.log(CY.description);
//console.log(CY.id);
//console.log(CY.modelId);
Chart_1.getDataSource().setDimensionFilter("Date",[dt+"["+ PY.description +"1]",dt+"["+ PY.description +"2]",dt+"["+ PY.description +"3]",dt+"["+ PY.description +"4]",dt+"["+ CY.description +"1]",dt+"["+ CY.description +"2]",dt+"["+ CY.description +"3]",dt+"["+ CY.description +"4]"]);
}else{
Chart_1.getDataSource().setDimensionFilter("Date",[dt+"["+ PY.description +"1]",dt+"["+ PY.description +"2]",dt+"["+ PY.description +"3]",dt+"["+ PY.description +"4]"]);
}
Chart_1.getDataSource().setRefreshPaused(false);
Chart_1.getDataSource().refreshData();
Filter dimension on chart based on Cross Calculation filter 2:
var measures = ActualQoQ_Date.getInputControlDataSource().getActiveSelectedMembers();
var measure = measures[0];
console.log(measure.description);
console.log(measure.id);
console.log(measure.modelId);
Chart_1.getDataSource().setRefreshPaused(true);
var dt="[Date].[YQM].[Date.CALQUARTER].";
if(measure.description==="2022"){
Chart_1.getDataSource().setDimensionFilter("Date",[dt+"[20221]",dt+"[20222]",dt+"[20223]",dt+"[20224]"]);
}else if(measure.description==="2023"){
Chart_1.getDataSource().setDimensionFilter("Date",[dt+"[20231]",dt+"[20232]",dt+"[20233]",dt+"[20234]"]);
} else if(measure.description==="2024"){
Chart_1.getDataSource().setDimensionFilter("Date",[dt+"[20241]",dt+"[20242]",dt+"[20243]",dt+"[20244]"]);
}
Chart_1.getDataSource().setRefreshPaused(false);
Chart_1.getDataSource().refreshData();
Email to multiple user using BCC from chart:
var str="";
var selections = Chart_1.getDataSource().getDataSelections();
console.log(selections);
for (var i=0; i<selections.length; i++){
str =str+selections[i].EmployeeUserName+";";
};
console.log(str);
var subject="?subject=Non Reported Hours";
var to=" ";
var cc="&cc= ";
var bcc="&bcc="+str;
var body="&body=";
NavigationUtils.openUrl("mailto:" + to + subject + cc + bcc + body,true);
Email to multiple users using BCC from chart with dimension & measures in body:
var str="";
var str2="";
var selections = Chart_1.getDataSource().getDataSelections();
var arr = Chart_1.getDataSource().getResultSet();
//console.log(arr);
for (var i=0; i<selections.length; i++){
var string = arr[i][Alias.MeasureDimension].formattedValue;
string = string+arr[i][Alias.MeasureDimension].formattedValue;
str =str+selections[i].EmployeeUserName+";";
str2 =str2+selections[i].EmployeeUserName+"-"+arr[i][Alias.MeasureDimension].formattedValue+"\n%0A";
};
//console.log(str);
//console.log(str2);
var subject="?subject=Non Reported Hours";
var to=" ";
var cc="&cc= ";
var bcc="&bcc="+str;
var body="&body="+str2;
NavigationUtils.openUrl("mailto:" + to + subject + cc + bcc + body,true);
Email:
var ch1 = Chart_1.getSelections();
if (ch1[0]["EmployeeUserName"].length<10)
{
//console.log(ch1[0]["EmployeeUserName"].length);
//Text_45.applyText(ch1[0]["EmployeeUserName"]);
var sel = Chart_1.getSelections()[0];
var value = Chart_1.getDataSource().getData(sel).formattedValue;
//Text_45.applyText(value);
//console.log(value);
var subject="?subject=Non Reported Hours : ";
var emailbody= ",%0A%0ANon Reported Hours : " + value + "%0A%0ABR,%0A" + Text_45.getPlainText();
//TO
NavigationUtils.openUrl("mailto:" + ch1[0]["EmployeeUserName"] + subject + value + "&body=Hi " + ch1[0]["EmployeeName"] + emailbody,true);
//CC
//NavigationUtils.openUrl("mailto:" + ch1[0]["EmployeeUserName"] + subject + value + "&cc=email@example.com;email@example.com&body=Hi " + ch1[0]["EmployeeName"] + emailbody,true);
}
Filter measures in chart based on another chart:
var C1Selection = Chart_1.getSelections();
console.log(C1Selection);
var filterList=[""];
if (C1Selection.length > 0){
for (var i=0; i < C1Selection.length; i++){
filterList[i]=C1Selection[i]["@MeasureDimension"];
}
Chart_2.getDataSource().setDimensionFilter("@MeasureDimension",filterList);
}
Word Chart
library(wordcloud)
wordcloud(Book1$Product,
Book1$`Gross Margin`, scale = c(2, 2),
random.order=FALSE,
rot.per=0.3,
colors=brewer.pal(3, "Dark2"))
