- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
12-14-2022 07:46 AM - edited 12-14-2022 07:47 AM
Hello Community Members!
A couple of years ago I was asked by fellow collegues if it was possible to add seasonal elements to our service portal. One specific request was that it would be cool if snow could fall on the portal homepage. It was more of a discussion rather than any official request, but I took it as a chance to learn how to do something new. When I took the time to work on this, I found out it was pretty easy to do and most of the work was already done using css found here CSSnowflakes
Creating and adding a service portal widget with this css added to the home page will display falling snowflakes.
- 1. As an admin create a new widget. Under Service Portal Configuration click Widgets
- 2. Click New at the top of the list.
- 3. Give your new widget name.
- 4. Using the CSS found here CSSnowflakes paste this in the Body HTML template field
<style>
/* customizable snowflake styling */
.snowflake {
color: #fff;
font-size: 1em;
font-family: Arial, sans-serif;
text-shadow: 0 0 5px #000;
}
@-webkit-keyframes snowflakes-fall{0%{top:-10%}100%{top:100%}}@-webkit-keyframes snowflakes-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(80px);transform:translateX(80px)}}@keyframes snowflakes-fall{0%{top:-10%}100%{top:100%}}@keyframes snowflakes-shake{0%,100%{transform:translateX(0)}50%{transform:translateX(80px)}}.snowflake{position:fixed;top:-10%;z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;-webkit-animation-name:snowflakes-fall,snowflakes-shake;-webkit-animation-duration:10s,3s;-webkit-animation-timing-function:linear,ease-in-out;-webkit-animation-iteration-count:infinite,infinite;-webkit-animation-play-state:running,running;animation-name:snowflakes-fall,snowflakes-shake;animation-duration:10s,3s;animation-timing-function:linear,ease-in-out;animation-iteration-count:infinite,infinite;animation-play-state:running,running}.snowflake:nth-of-type(0){left:1%;-webkit-animation-delay:0s,0s;animation-delay:0s,0s}.snowflake:nth-of-type(1){left:10%;-webkit-animation-delay:1s,1s;animation-delay:1s,1s}.snowflake:nth-of-type(2){left:20%;-webkit-animation-delay:6s,.5s;animation-delay:6s,.5s}.snowflake:nth-of-type(3){left:30%;-webkit-animation-delay:4s,2s;animation-delay:4s,2s}.snowflake:nth-of-type(4){left:40%;-webkit-animation-delay:2s,2s;animation-delay:2s,2s}.snowflake:nth-of-type(5){left:50%;-webkit-animation-delay:8s,3s;animation-delay:8s,3s}.snowflake:nth-of-type(6){left:60%;-webkit-animation-delay:6s,2s;animation-delay:6s,2s}.snowflake:nth-of-type(7){left:70%;-webkit-animation-delay:2.5s,1s;animation-delay:2.5s,1s}.snowflake:nth-of-type(8){left:80%;-webkit-animation-delay:1s,0s;animation-delay:1s,0s}.snowflake:nth-of-type(9){left:90%;-webkit-animation-delay:3s,1.5s;animation-delay:3s,1.5s}.snowflake:nth-of-type(10){left:25%;-webkit-animation-delay:2s,0s;animation-delay:2s,0s}.snowflake:nth-of-type(11){left:65%;-webkit-animation-delay:4s,2.5s;animation-delay:4s,2.5s}
</style>
<div class="snowflakes" aria-hidden="true">
<div class="snowflake">
❅
</div>
<div class="snowflake">
❆
</div>
<div class="snowflake">
❅
</div>
<div class="snowflake">
❆
</div>
<div class="snowflake">
❅
</div>
<div class="snowflake">
❆
</div>
<div class="snowflake">
❅
</div>
<div class="snowflake">
❆
</div>
<div class="snowflake">
❅
</div>
<div class="snowflake">
❆
</div>
<div class="snowflake">
❅
</div>
<div class="snowflake">
❆
</div>
</div>
- 5. Save your new widget.
- 6. In the Service Portal designer open you service portal homepage. You should see your new widget in the list.
- 7. Add this widget to a container on your home page. I added it to the bottom of my page.
Preview or open your portal home page and enjoy the snow. You can change to hearts for Valentines day, Clovers for St. Patricks. Experiment with other css like fireworks for the Fourth of July!
I hope you enjoyed this article. Please let me know if you have any questions and thanks for reading.
Thank You,
David Whaley
- 1,400 Views
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
This is great! Makes the Service Portal so fun and festive.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@AnkitK95 Here's a version that you can add to your portal and leave all year round.
I have split out the fields in the widget record for you:
HTML
<div class="snow-controller" ng-if="c.isSeason">
<a href="javascript:void(0)" ng-click="c.toggleSnow()" class="snow-toggle">
<i class="fa fa-snowflake-o"></i>
<span ng-if="c.showSnow">Stop Snow</span>
<span ng-if="!c.showSnow">Let it Snow</span>
</a>
</div>
<div class="snowflakes" aria-hidden="true" ng-if="c.showSnow">
<div class="snowflake" ng-repeat="item in c.flakes track by $index">
{{ $index % 2 == 0 ? '❅' : '❆' }}
</div>
</div>
CSS
/* customizable snowflake styling */
.snowflake {
color: #fff;
font-size: 1em;
font-family: Arial, sans-serif;
text-shadow: 0 0 5px #000;
}
@-webkit-keyframes snowflakes-fall{0%{top:-10%}100%{top:100%}}
@-webkit-keyframes snowflakes-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(80px);transform:translateX(80px)}}
@keyframes snowflakes-fall{0%{top:-10%}100%{top:100%}}
@keyframes snowflakes-shake{0%,100%{transform:translateX(0)}50%{transform:translateX(80px)}}
.snowflake {
position:fixed;
top:-10%;
z-index:9999;
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
cursor:default;
-webkit-animation-name:snowflakes-fall,snowflakes-shake;
-webkit-animation-duration:10s,3s;
-webkit-animation-timing-function:linear,ease-in-out;
-webkit-animation-iteration-count:infinite,infinite;
-webkit-animation-play-state:running,running;
animation-name:snowflakes-fall,snowflakes-shake;
animation-duration:10s,3s;
animation-timing-function:linear,ease-in-out;
animation-iteration-count:infinite,infinite;
animation-play-state:running,running;
}
.snowflake:nth-of-type(0){left:1%;-webkit-animation-delay:0s,0s;animation-delay:0s,0s}
.snowflake:nth-of-type(1){left:10%;-webkit-animation-delay:1s,1s;animation-delay:1s,1s}
.snowflake:nth-of-type(2){left:20%;-webkit-animation-delay:6s,.5s;animation-delay:6s,.5s}
.snowflake:nth-of-type(3){left:30%;-webkit-animation-delay:4s,2s;animation-delay:4s,2s}
.snowflake:nth-of-type(4){left:40%;-webkit-animation-delay:2s,2s;animation-delay:2s,2s}
.snowflake:nth-of-type(5){left:50%;-webkit-animation-delay:8s,3s;animation-delay:8s,3s}
.snowflake:nth-of-type(6){left:60%;-webkit-animation-delay:6s,2s;animation-delay:6s,2s}
.snowflake:nth-of-type(7){left:70%;-webkit-animation-delay:2.5s,1s;animation-delay:2.5s,1s}
.snowflake:nth-of-type(8){left:80%;-webkit-animation-delay:1s,0s;animation-delay:1s,0s}
.snowflake:nth-of-type(9){left:90%;-webkit-animation-delay:3s,1.5s;animation-delay:3s,1.5s}
.snowflake:nth-of-type(10){left:25%;-webkit-animation-delay:2s,0s;animation-delay:2s,0s}
.snowflake:nth-of-type(11){left:65%;-webkit-animation-delay:4s,2.5s;animation-delay:4s,2.5s}
/* Make sure to add this to .snowflake class! */
.snowflake {
pointer-events: none;
}
/* Style the toggle button to sit discreetly in the corner or footer */
.snow-controller {
position: fixed;
bottom: 10px;
right: 10px;
z-index: 10000;
background: rgba(0,0,0,0.5);
padding: 5px 10px;
border-radius: 15px;
}
.snow-toggle {
color: #fff;
text-decoration: none;
font-size: 12px;
}
.snow-toggle:hover {
color: #ddd;
}
Nothing in the server script in required.
Client controller
api.controller = function() {
var c = this;
// 1. Get the current date
var now = new Date();
// 2. Check if the month is December (11)
// Note: JavaScript counts months from 0 to 11.
var isDecember = (now.getMonth() === 11);
// 3. Set the visibility based on the month
c.isSeason = isDecember; // Used to show/hide the toggle button
c.showSnow = isDecember; // Used to show/hide the actual snow
// Create an array of 12 items
c.flakes = new Array(12);
// Function to switch the boolean value
c.toggleSnow = function() {
c.showSnow = !c.showSnow;
};
};
So this version includes a toggle so users can turn it off/on.
I have this set so that it only turns on in December. The client controller holds this value.
Hope this helps
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@M_A This is awesome! I really like that the employee can turn off the animation.
