Merry Christmas, Happy New Year and… probably my last blog of 2017
Hello community – Here we are closing another year, together. Thank you for reading this blog. I hope your 2017 was grand and that 2018 is even better.
Spanish version of this blog
This blog started for me as a proof of concept – probably 99% of us start like that with something you are trying new and/or something you are investigating. My task was to find some charts that we could put on a UI. In my scenario, the project had already started and someone had suggested angular, highcharts, etc… however, the data was being served from HANA. It really caught my attention why not try this on ui5, with some chart library, etc… long story short, this exercise was more for personal investigation and I wanted to see how much I could do within ui5, so here I go.
As this is my personal investigation, I had started reading about charting libraries. I found one that is open source, its js file size was relatively small and it fit my investigation of using an external chart library, and moreover, it cost me nothing. I found chart.js it was easy to read, learn, understand and integrate with either angular, or ui5, or how about angular inside HANA XS (not on this scope but doable).
After downloading the chart.js library, I went to my #SCP trial account, started the good ol’ Web IDE, and created a new UI5 project (most of you are probably familliar with the initial steps of creating a project with a template).
after following the wizard, it created the project template on my Workspace
Then, it was time to code…
* I imported the downloaded chart lib into the project
* Added the reference to the chart. js file from the index.html page (everything else was already part of the template)
3. Notice that the chart object requires an html element canvas so we need to include that in our view.xml file as well as the core namespace. Make sure you xml encode your inner html inside the content attribute of your HTML element.
4. once we add the canvas html in our view, then let’s look at the controller file.
*First, I added a function call in the onInit function but it didn’t work because the markup wasn’t ready, so then I tried adding the onAfterRendering function and then I made the call to populate my chart object & Voila!
Initially, I had hardcoded the data for the bar chart in the oChart object above, then I switched the data to come from the models.js to simulate more of a service call, rather than just reading from the controller. This part involves 2 tasks:
a) adding the named model on the Component.js file
* setting the name model using the models object that was a dependency of the Compnent.js file loaded from the models.js file on line 4
b) Then, in the models.js file, adding a function that would simulate the call to a service and returning that model
5. once all those prior steps were in place, it was time to run the index.html page on my browser….
you may notice on this picture that the chart takes the entire width of the view. and the bars are thick.
All those are default options that can be modified/configured using JavaScript from your controller. Further, the different charts that this library offers (bar, line, mix, etc) use configuration objects that are very similar. For example, If i need to change the same code base from a bar graph to a line graph, I’d simply modify the type from ‘bar’ to ‘line’ ** not super pretty but just to give you an idea of the same code base with a small configuration change.
I will not take a lot more of your time, however, after playing with this library for about a day… I was able to come up with a simulated “live tile” format that showed different types of graphs that were scaled down to fit multiple tiles in a row – this is for an analytics purpose of some types of data. so this is what it may have looked like. Again, this exercise took me about 1 day to play with and if you have the time, why not do more with it.
I hope this blog had been helpful for you. Please let me know what questions you may have and I will try to answer them. Please share your knowledge if you have experiences with any other charting library, your headaches and also your solution.
Thank you again for your time and I wish you a great end of 2017 and a prosperous 2018.
http://bit.ly/2mXbTZh #SAP #SAPCloud #AI
Wechat development series 9 – Create C4C Social Media Message and Service within Wechat app
* Wechat development series 1 – setup your development environment
* Wechat development series 2 – development Q&A service using nodejs
* Wechat development series 3 – Trigger C4C Account creation in Wechat app
* Wechat development series 4 – Send C4C Data change notification to Wechat app
* Wechat development series 5 – embedded your UI5 application to Wechat app
* Wechat development series 6 – Retrieve Wechat User info via oAuth2 and display it in UI5 application
* Wechat development series 7 – use Redis to store Wechat conversation history
* Wechat development series 8 – Map integration
* Wechat development series 9 – Create C4C Social Media Message and Service within Wechat app
* Implemented feature
* Implementation detail
* How to create individual customer, social media user profile, and bind both together
* How to create social media message once end user sends a text to Wechat subscription account
In the second blog of this series, Wechat development series 2 – development Q&A service using nodejs we have developed a kind of Q&A service in Wechat.
In this blog, let’s replace the Q&A service hosted by tuning API with another style: everytime the end user of your test subscription account has sent some message to it, then create a corresponding social media message in C4C system ( and a new service request will also be automatically created together with that social media message ).
Implemented feature
1. When the end user has subscribed the Wechat account by pressing “Subscribe(关注)” button: In C4C system an individual customer for this end user who has subscribed the Wechat test account will automatically be created, together with a new social media user profile created as well and bound to this individual customer. The end user will receive a notification about created customer ID and profile ID once creation finishes in C4C system. The created information could also be monitored in console: The created customer could be found in C4C system with a custom Channel type displayed as “Jerry’s Wechat Channel”. The created social media user profile bound to this customer could be found in tab “Social Profiles”: 2. As long as end user sends some new text to the Wechat subscription account, a new social media message will be created in C4C. The end user will receive a notification in Wechat about the created message ID, in my example it is 59160. The created social media message could be found in tab “Social Media Messages”: And a new ticket is also automatically created for this social media message. The creation of this ticket is a standard behavior of C4C, no custom development is necessary.
Implementation detail
The feature described so far is developed based on the existing project used in previous blogs. You must first create a custom channel for Wechat in Business Configuration: Write down this channel type code 905 for created Wechat channel: And create a concrete channel based on the 905 custom channel type created just now, write down this channel ID ZJERRYWC as well.
How to create individual customer, social media user profile, and bind both together
In my github repository for this Wechat development series, module createAccountInC4C.js is responsible for individual customer creation. Once finished, it will call another two modules highlighted below to create social media user profile and link the user profile with created individual customer. For social media user profile creation, the ID of previous created custom channel for Wechat, 905, is hard coded in module implementation createSocialMediaProfile.js. In createAccountInC4C.js, these three steps are clearly mentioned in the comment and implementation: And createAccount will be called for event handler of “subscribe” event:
How to create social media message once end user sends a text to Wechat subscription account
The message creation is implemented in module createSocialMediaActivity.js. In unittest folder there is a unit test written to demonstrate how to use this module:
* o0KlM1i2_4-zHRmDk-IWGRlA1Cjc: the wechat ID of user who has sent the text to the test Subscription account
* 1003: the ID of new social media message to be created
* 6066: social media user profile of current wechat user who has sent the text to the test Subscription account
* ZJERRYWC: the custom Wechat channel ID created previously in C4C system
* “Hello C4C Agent….”: the text of social media message to be created
Call this createSocialMessage module in the event handler when a new text is sent by Wechat end user. http://bit.ly/2mXbRAD #SAP #SAPCloud #AI
8 Tips on How to Build a Natural Backlink Profile
Building natural backlinks has always been a problem for most online marketers, yet it’s one strategy that guarantees a massive return on investment. If website owners have no idea about backlink profiles, it’s hard to attract visitors and turn their websites into cash cows.
Google is becoming more interested in the type of links you have and where they come from. They’re changing their algorithm daily and you need to keep up with things like these https://www.linksmanagement.com/how_to_get_ranked_top_10_on_google/. In order to build effective backlinks, it’s important you do the following:
1. Monitor Links
Monitor your existing links and if you realize one of them is broken, don’t waste time fixing it. In fact, fixing a broken link is more difficult than building a new one. Therefore, keep checking your links and if any of them is found broken, it should be replaced with a new one as soon as possible.
2. Hire a Formidable Link Building Company
Link building companies that promise a large number of links at a low price are all phony. In fact, it is a good indicator that the links are coming from a low-quality sources and they’ll destroy your backlink profile. Hire a company that charges more but guarantees you links will improve your profile.
3. Avoid Buying Links Directly
Google is on the look out and will not hesitate to punish website owners who take shortcuts. It’s therefore recommended you hire a company that specializes in link building rather than buying existing links, which will only attract a penalty and ruin your profile.
4. Do Your Research Before Exchanging Links
It is normal for companies to exchange links. However, when it becomes extremely obvious, Google will find out and punish everyone involved. Consequently, it’s important you reduce the rate in which you exchange links. Too many in a short amount of time will cause Google to take action.
5. Avoid Directories
In early 2010, directories were the main platforms helping new websites get noticed. However, things have changed and Google does not play by the same rules. So, unless it’s a specific niche, directories will only offer low-quality backlinks.
6. Don’t Overuse Your Anchor Text
This is one of the mistakes website owners make. When they realize a specific keyword has improved their rankings, they want to use it again and again. Google does not like seeing the same anchor text being abused. Consequently, they will punish people who do this by pulling down their rankings.
7. Sites to Backlink
Having talked about things that Google doesn’t like and which will make your website to get punished it is important that we talk about things that you should focus on and which will give your website the diversity it requires to attract attention.
8. Link Back to Quality Sites
Ensure you link back to quality sites. The trouble is how to tell whether or not the site is of high quality. In general, high-quality sites will exhibit the following characteristics:
• A high number of social media followers
• Relevant information
• Quality content
• High domain authority
In conclusion, we hope you will use this knowledge to improve your backlink profile and attract more visitors to your website. Just ensure you provide your readers with high-quality hyperlinks, and ensure the links you acquire point to relevant pages on your website. http://bit.ly/2mVDvhg #SAP #SAPCloud #AI
