...
We at ServiceChannel are excited to bring you 2020 Release 3 (“R3”), slated for release in early November.
See a summary of the new features listed below, or use the filters to hone in on different modules or operational needs.
We welcome your ideas! Share your feedback on enhancements that will help you move faster, work smarter, and keep your customers and teams happier.
...
🗝 = Contact your Customer Success Manager to unlock this feature.
...
Html macro | ||||
---|---|---|---|---|
| ||||
<!DOCTYPE html> <html> <meta charset="UTF-8"> <head> <style> /*Image Slideshow*/ * { box-sizing: border-box } .mySlides { display: none } img { vertical-align: middle; } /* Slideshow container */ .slideshow-container { max-width: 1000px; position: relative; margin: auto; } /* Next & previous buttons */ .prev, .next { position: absolute; top: 50%; width: auto; padding: 16px; margin-top: -22px; color: #6abff0; font-weight: bold; font-size: 18px; transition: 0.6s ease; border-radius: 0 3px 3px 0; user-select: none; background-color: rgba(142,142,142,0.10) } /* Position the "next button" to the right */ .next { right: 0; border-radius: 3px 0 0 3px; } /* On hover, add a black background color with a little bit see-through */ .prev:hover, .next:hover { background-color: rgba(0,0,0,0.8); } /* Caption text */ .text { color: white; font-size: 15px; padding: 8px 12px; position: absolute; bottom: 30px; width: 100%; text-align: left; background-color: rgba(30,30,30,0.78); font-family: "Helvetica Neue", Helvetica, Arial, "sans-serif"; } /* Number text (1/3 etc) */ .numbertext { color: black; font-size: 14px; padding: 8px 12px 0 12px; position: relative; top: 0; font-family: "Helvetica Neue", Helvetica, Arial, "sans-serif"; } /* The dots/bullets/indicators */ .dot { height: 15px; width: 15px; margin: 4px 2px; background-color: #bbb; border-radius: 50%; display: inline-block; transition: background-color 0.6s ease; } .pressed, .dot:hover { background-color: #6abff0; } /* Fading animation */ .fade { -webkit-animation-name: fade; -webkit-animation-duration: 1.5s; animation-name: fade; animation-duration: 1.5s; } @-webkit-keyframes fade { from { opacity: .4 } to { opacity: 1 } } @keyframes fade { from { opacity: .4 } to { opacity: 1 } } /* On smaller screens, decrease text size */ @media only screen and (max-width: 300px) { .prev, .next, .text { font-size: 11px } } /* Giffys */ .giffy { width: 100%; height: 100%; border: thin; position: relative; } /*2 Columns*/ .outerDiv { width: 100%; height: 100%; margin: 0px auto; padding: 5px; } .leftDiv { height: 100%; width: 70%; float: left; } .rightDiv { background-color: #FEFDFA; /*Also change the background for .togglefilters and .btn*/ height: auto; width: 28%; float: right; } .filterDiv { background-color: rgba(210,210,210,0.10); color: #000000; line-height: 20px; text-align: left; padding: 20px; margin-bottom: 30px; display: none; font-family: "Helvetica Neue", Helvetica, Arial, "sans-serif"; } /*.filterSubDiv { float: center; margin: 2px 2px 30px 2px; display: block; }*/ .textSubDiv { text-transform: uppercase; background-color: rgba(106,106,106,0.58); color: white; padding: 5px 5px 5px 15px; font-family: "Helvetica Neue", Helvetica, Arial, "sans-serif"; font-weight: 800; font-size: 14px; text-align: left; border-radius: 5px; margin-bottom: -2px; margin-left: 5px; width: 200px; } .show { display: grid; } .container { float: left; margin-top: 20px; overflow: hidden; padding-bottom: 50%; } /* Style the buttons */ .btn { margin: 5px 5px 2px 5px; border: thin; border-radius: 5px; background-color: #FEFDFA; color: black; font-family: "Helvetica Neue", Helvetica, Arial, "sans-serif"; font-weight: 400; font-size: 14px; height: auto; text-align: left; width: 90%; } .btn:hover { color: #8abf54; text-decoration: underline; text-decoration-color: #8abf54; } .btn.active { background-color: #6abff0; color: white; border-color: #6abff0; } /*.toggleBtn { text-decoration: underline; margin-left: 5px; font-size: 12px; font-weight: 500; border: 0px solid #6abff0; background-color: white; animation: hilite 2s infinite; } @keyframes hilite { from { background-color: orange; } to { background-color: rgba(241,246,167,1.00); } }*/ /*#toggleFilters { float: left; width: 100%; background-color: #FEFDFA; padding-bottom: 15px; }*/ hr.styled { border: 3px solid #6abff0; border-radius: 2px; margin-bottom: 25px; } .body { height: 5000px; /* Make this site really long */ overflow-y: hidden; } .featureTitle { display: flex; font-family: "Roboto", "Open Sans", Arial, sans-serif; font-weight: 800; font-size: 21px; color: #6abff0; line-height: 23px; margin: 5px 0 -5px 0; padding-left: 3px; } .featureSub { font-family: "Roboto", "Open Sans", Arial, sans-serif; font-weight: 600; font-style: italic; font-size: 15px; color: black; display: flex; margin-bottom: 1px; padding-left: 3px; } .featureMod { text-transform: uppercase; background-color: #8abf54; color: white; font-family: "Roboto", "Open Sans", Arial, sans-serif; font-weight: 800; margin-bottom: -6px; padding: 0 5px; font-size: 14px; display: table; border-radius: 4px; } .featureBody { font-family: "Roboto", "Open Sans", Arial, sans-serif; font-weight: 100; font-size: 14px; color: black; margin-bottom: 3px; padding: 0 0px 0 3px; text-align: justify; } .featureBodyLI { font-family: "Roboto", "Open Sans", Arial, sans-serif; font-weight: 100; font-size: 14px; color: black; padding-right: 70px; margin-bottom: -20px; text-align: justify; } .featureCTA { font-family: "Roboto", "Open Sans", Arial, sans-serif; font-weight: 600; font-size: 14px; font-style: italic; color: #094060; margin-bottom: 2px; padding-left: 3px; } .feedbackform { background-color: #6abff0; color: white; font-size: 20px; font-weight: 800; text-align: center; margin: 20px; line-height: 25px; } .href { color: #DBEFFB; } </style> </head> <body> <div class="outerDiv"> <div class="leftDiv"> <div class="container"> <div class="filterDiv new refinv pro"> <p class="featureTitle">🗝 NEW MODULE: Inventory Manager</p> <p class="featureSub">Instantly know your parts and stock levels for each location</p> <p><span class="featureMod">INVENTORY MANAGER</span></p> <p class="featureBody">The first release of Inventory supported Refrigerant Tracking to help manage refrigerant usage for locations. We have expanded this into its own module so you can track all types of parts and materials for your locations. With Inventory Manager, you can manage your parts catalog and view stock levels by location or part group. You will know how many parts are on hand for each location, so when a job needs to be done and one location doesn't have enough in inventory, users can quickly see — on both desktop and mobile — which nearest location has the necessary parts.<br> <br> Inventory Manager takes the surprise out of out-of-stock parts by indicating low levels, signaling when it's time to replenish. With minimum/maximum indicators, you can see when parts have reached the minimum threshold so you can reorder, and reduce costs by setting a maximum threshold so locations aren't overstocked.</p> <p class="featureCTA">Contact your CSM to add this to your modules.</p> <div id="Inventory" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/Inventory-Locations.jpg" style="width:100%;" alt="New Inventory Module: Locations with Inventory"> <div class="text">New Inventory Module: Locations with Inventory</div> </div> <div class="mySlides fade"> <div class="numbertext">2 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/Inventory-PartsCatalog.jpg" style="width:100%" alt="New Inventory Module: Parts Catalog"> <div class="text">New Inventory Module: Parts Catalog</div> </div> <div class="mySlides fade"> <div class="numbertext">3 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/Inventory-Mobile.jpg" style="width:100%" alt="New Inventory Module: Parts Catalog"> <div class="text">New Inventory Module in SC Provider Mobile</div> </div> <a class="prev" onclick="plusSlides(-1,Inventory)">❮</a> <a class="next" onclick="plusSlides(1, Inventory)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, Inventory)"></span> <span class="dot" onclick="currentSlide(2, Inventory)"></span> <span class="dot" onclick="currentSlide(3, Inventory)"></span> </div> </div> <br> </div> <div class="filterDiv automated onsite wom wos essentials"> <p class="featureTitle">🗝 Critical Alerts for Escalation Management</p> <p class="featureSub">Real-time alerts when mission-critical work orders are entered</p> <p><span class="featureMod">NOTIFICATIONS</span></p> <p class="featureBody">Real-time updates on the state of your operations are key to managing facilities. You may need to know when you have more than one oven go down at a location, or when an escalator repair has been "in progress" for too long. You need to know, and you need to know now.<br> <br> With <strong>Critical Alerts</strong>, you can create a matrix of business rules that will send email notifications to those you specify for key operational events. Escalate matters to others on your team for quicker action. Send notices to your providers for transparent communication and awareness. Keep your team abreast of critical matters in real-time.</p> <p class="featureCTA">Work with your CSM to build out your business rules.</p> </div> <div class="filterDiv onsite wos providers essentials"> <p class="featureTitle">🗝 Improved Onsite Experience with Site Access</p> <p class="featureSub">Better check-in consistency and compliance; customizable GPS radius for each location</p> <p><span class="featureMod">SITE ACCESS</span></p> <p class="featureBody">Technician onsite compliance can be somewhat taxing — inconsistent check-in and check-out behaviors, not knowing exactly who is onsite, unclear of the exact times each technician checked in. For some trades, it is even more taxing when the GPS check-in radius doesn't quite cover the right areas, such as your pavement repair tech fixing a gaping hole the far corner of the parking lot, or the fuel pump contractor servicing pump #17.<br> <br> With <strong>Site Access</strong>, we have improved the onsite experience for both your store users and providers, for better check-in compliance and accurate onsite time for all checked-in technicians. Store users see exactly who is coming on-site in the ServiceChannel Mobile app, as well as the work orders techs are there to service. Store users can then add a note on that work order that they have verified the techs are who they say they are.<br> <ul class="featureBodyLI"> <li><strong>See exactly who is onsite</strong> by requiring providers to create 'technician accounts' which captures each checked-in technician's name and photo on the work order (instead of IVR or PIN numbers that are used by multiple techs).</li> <li><strong>Customize GPS radius settings by Location, Provider, and/or Trade</strong>, and set requirements on whether technicians must check-in and out within that radius.</li> <li>Improve check-in compliance by <strong>time-boxing check-ins around the scheduled date</strong>, which alerts store employees when technicians have checked in too early or too late. Also, provide instructions or directions for technicians who check-in after store operational hours.</li> <li>Gain more accurate time onsite by <strong>automatically checking out technicians who leave the location's GPS radius</strong>.</li> </ul> </p> <p class="featureCTA">Start improving technician compliance by contacting your CSM to turn this feature on. </p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="SiteAccess" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 6</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/SiteAccess-Scheduled_Tech-phone.png" style="width:100%" alt="Provider profile on SC Mobile"> <div class="text">Provider profile on SC Mobile</div> </div> <div class="mySlides fade"> <div class="numbertext">2 / 6</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/SiteAccess-CheckedIn-phone.png" style="width:100%" alt="Provider profile on SC Mobile, checked in and verified"> <div class="text">Provider profile on SC Mobile, checked in and verified</div> </div> <div class="mySlides fade"> <div class="numbertext">3 / 6</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/SiteAccess-Config-RequireIVR.jpg" style="width:100%" alt="Site Access Rules Configuration"> <div class="text">Site Access Rules Configuration</div> </div> <div class="mySlides fade"> <div class="numbertext">4 / 6</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/SiteAccess-Config-GPS.jpg" style="width:100%" alt="Site Access Rules Configuration"> <div class="text">Site Access Rules Configuration</div> </div> <div class="mySlides fade"> <div class="numbertext">5 / 6</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/SiteAccess-Config-CheckIn.jpg" style="width:100%" alt="Site Access Rules Configuration"> <div class="text">Site Access Rules Configuration</div> </div> <div class="mySlides fade"> <div class="numbertext">6 / 6</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/SiteAccess-Config-CheckOut.jpg" style="width:100%" alt="Site Access Rules Configuration"> <div class="text">Site Access Rules Configuration</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, SiteAccess)"></span> <span class="dot" onclick="currentSlide(2, SiteAccess)"></span> <span class="dot" onclick="currentSlide(3, SiteAccess)"></span> <span class="dot" onclick="currentSlide(4, SiteAccess)"></span> <span class="dot" onclick="currentSlide(5, SiteAccess)"></span> <span class="dot" onclick="currentSlide(6, SiteAccess)"></span> </div> </div> </div> <div class="filterDiv wom essentials"> <p class="featureTitle">Reassign Work Orders in Bulk</p> <p class="featureSub">In one fell swoop, reassign multiple work orders to the next ranked provider</p> <p><span class="featureMod">WORK ORDER MANAGER</span></p> <p class="featureBody">You can now <strong>reassign work orders in bulk</strong> right on the Work Orders List View. Need to reassign a few plumbing work orders from store 017? Simply select the desired work orders from the List View and bulk reassign to the next ranked provider. You do not have to submit a template as long as the work orders are assigned to the same trade and location.</p> </div> <div class="filterDiv wom essentials wos"> <p class="featureTitle">Add Labels to Work Orders Created in Dashboard 2.0</p> <p class="featureSub">Extended feature to add labels during work order creation</p> <p><span class="featureMod">DASHBOARD</span></p> <p class="featureBody">Earlier in 2020 we introduced Labels on Work Orders. Now, we have extended it to include <strong>Labels for Dashboard 2.0</strong>!<br> <br> Save time and be more efficient by creating and placing a Label on work orders before you submit and dispatch them. Do you want other Dashboard users to apply Labels to work orders? Control whether they can create new Labels or select from pre-existing ones.<br> <br> Filter your work orders by Label on the View All WOs tab, and see the Label applied when drilling down into the work order details.<br> <br> View and filter Labels from either the Dashboard or Service Automation, no matter where it was created. </p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="Labels" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/Labels-ShowLabel.jpg" style="width:100%" alt="Labels on Dashboard 2.0"> <div class="text">Labels on Dashboard 2.0</div> </div> <div class="mySlides fade"> <div class="numbertext">2 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/Labels-CreateLabel.jpg" style="width:100%" alt="When enabled, users can add Labels from the Dashboard"> <div class="text">When enabled, users can add Labels from the Dashboard</div> </div> <div class="mySlides fade"> <div class="numbertext">3 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/Labels-Config.jpg" style="width:100%" alt="Labels Configuration in Dashboard Admin"> <div class="text">Labels Configuration in Dashboard Admin</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, Labels)"></span> <span class="dot" onclick="currentSlide(2, Labels)"></span> <span class="dot" onclick="currentSlide(3, Labels)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv wom wos essentials"> <p class="featureTitle">🗝 Generate Landlord Letters of Responsibility with Work Order Attachment Templates</p> <p class="featureSub">Automatically generate certified landlord letters right from the associated work order</p> <p><span class="featureMod">WORK ORDER MANAGER</span></p> <p class="featureBody">When sending letters for improvements or repairs that are the landlord's responsibility, it's time consuming to copy and paste work order details, location information, or provider information onto each letter. It's even more frustrating to keep up with the paperwork and track which work orders you've sent such letters.<br> <br> With <strong>Work Order Attachment Templates</strong>, you can now generate letters automatically with work order details using your commonly-used templates such as certified landlord letters. Directly on a work order, select the template you need, and the work order details (through magic document tags) will automatically load onto the template and save as an attachment on the work order. Simply download, add your final touches, and send it to the landlord.</p> <p class="featureCTA">Team-huddle with your CSM to build out your templates. </p> </div> <div class="filterDiv wom wos essentials"> <p class="featureTitle">Create Multiple Work Orders in Batch</p> <p class="featureSub">On the Map View, create work orders for 2 or more locations in one step</p> <p><span class="featureMod">WEATHER</span></p> <p class="featureBody">A major storm is inching closer and you need to prepare or board up multiple locations in its path before it hits. Or maybe after a weather event or local unexpected event you need landscapers to replace mulch or clean up tree leaves and branches at multiple locations. Entering the same work order for each individual store was cumbersome, stealing time away from finishing your checklist.<br> <br> Now with <strong>Batch Work Order on Maps</strong>, you can use the Map View to enter just one request. Simply highlight multiple locations on the map and enter the details one time. Multiple work orders are created for each location and dispatched to the right ranked providers, saving you time to finish your checklist.</p> <div class="giffy"><img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/WOBatch.gif" alt="Work order creation in batch" width="100%"></div> </div> <div class="filterDiv wom automated essentials invoices"> <p class="featureTitle">Automatically Notify Providers When Invoices Are Rejected</p> <p class="featureSub">Auto-email the provider when an invoice is rejected</p> <p><span class="featureMod">INVOICE MANAGER</span></p> <p class="featureBody">Eliminate the extra work of manually emailing providers after rejecting invoices. Notify the provider and your operations team while rejecting an invoice by simply checking a box.<br> <br> The <strong>Notify Provider</strong> checkbox automatically adds the provider's email into the note box. Add more email addresses to notify your internal teams about the rejected invoice. This will automatically send emails to recipients, as well as add a work order note.</p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="NotifyProv" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 1</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/NotifyProvider.jpg" style="width:100%" alt="Notify providers and others when invoices are rejected"> <div class="text">Notify providers and others when invoices are rejected</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, NotifyProv)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv wom providers pro"> <p class="featureTitle">🗝 New FTM Roles: Supervisor and Regional Manager</p> <p class="featureSub">Improved management of internal work orders between technicians and their supervisors.</p> <p><span class="featureMod">FIELD TECH MANAGER</span></p> <p class="featureBody">Does your FTM technician team have supervisors or regional managers? Do you need those supervisors to review work orders before they are assigned to external providers? With <strong>Supervisor & Regional Manager FTM Roles</strong> you can assign a role to each of your internal technicians — Technician, Supervisor, or Regional Manager. When a technician reassigns or declines a work order, it rolls up to the supervisor or regional manager to take further action. Also, technicians can no longer reassign work orders to external providers directly; only supervisors or regional managers can.</p> <p class="featureCTA">Contact your CSM to turn this feature on for your FTM teams.</p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="FTMRoles" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/FTMRoles-Permissions.jpg" style="width:100%" alt="Add roles in Provider Admin module"> <div class="text">Add roles in Provider Admin module</div> </div> <div class="mySlides fade"> <div class="numbertext">2 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/FTMRoles-PermissionsDefinitions.jpg" style="width:100%" alt="Role Definitions for Technicians, Supervisors, and Regional Managers"> <div class="text">Role definitions for technicians, supervisors, and regional managers</div> </div> <div class="mySlides fade"> <div class="numbertext">3 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/FTMRoles-WFAssignments.jpg" style="width:100%" alt="Add assignment rules in WorkForce"> <div class="text">Add assignment rules in WorkForce</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, FTMRoles)"></span> <span class="dot" onclick="currentSlide(2, FTMRoles)"></span> <span class="dot" onclick="currentSlide(3, FTMRoles)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv analytics data addons"> <p class="featureTitle">Analyze More Using the New Data Dictionary</p> <p class="featureSub">Find just the right data points for your custom dashboards</p> <p><span class="featureMod">ANALYTICS</span></p> <p class="featureBody">Data explorers and visualizers, rejoice! The Analytics module now has an embedded <strong>Data Dictionary</strong>. Chock full of definitions, you can peruse the available data points within each Explore to better understand the data structure. Imagine your next bespoke dashboard while researching data definitions, all in the same module. </p> </div> <div class="filterDiv data invoices essentials"> <p class="featureTitle">🗝 MLI Compliance Report</p> <p class="featureSub">Control changes made to your MLI configuration</p> <p><span class="featureMod">INVOICE MANAGER</span></p> <p class="featureBody">The <strong>MLI Compliance Report</strong> gives Accounting and Audit departments better insight and control on changes made to your MLI configuration. Generate the report manually or set an automatic frequency to see all changes to users, levels, and rule sets.</p> <p class="featureCTA">Need this feature? Contact your CSM to turn it on.</p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="MLIChanges" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 2</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/MLIReport-Configured.jpg" style="width:100%" alt="New controls to export the Changes report"> <div class="text">New controls to export the Changes report</div> </div> <div class="mySlides fade"> <div class="numbertext">2 / 2</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/MLIReport-ExcelOutput.jpg" style="width:100%" alt="New Changes Tab in the Excel report"> <div class="text">New Changes Tab in the Excel report</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, MLIChanges)"></span> <span class="dot" onclick="currentSlide(2, MLIChanges)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv wom proposals essentials"> <p class="featureTitle">🗝 Actionable Proposals in Dashboard 2.0</p> <p class="featureSub">Proposal approvers can take action directly from the latest Dashboard</p> <p><span class="featureMod">DASHBOARD</span></p> <p class="featureBody">Proposal approvers can now view and take action on proposals in Dashboard 2.0. On the new <strong>Proposals</strong> tab, you can view proposals and related attachments, link proposals to existing work orders, create a new work order based on a proposal, and approve proposals. This new feature works for both MLP and non-MLP users.</p> <p class="featureCTA">Contact your CSM to turn this feature on.</p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="PropDash" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 1</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/ProposalsDash.jpg" style="width:100%" alt="View and take action on Proposals in Dashboard 2.0"> <div class="text">View and take action on Proposals in Dashboard 2.0</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, PropDash)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv onsite addons refinv"> <p class="featureTitle">Refrigerant Tracking for Canadian Locations</p> <p class="featureSub">Provinces can now capture refrigerant data, improving compliance</p> <p><span class="featureMod">REFRIGERANT TRACKING MANAGER</span></p> <p class="featureBody">Refrigerant requirements differ from one country to the next. ServiceChannel's Refrigerant Tracking module has expanded to capture relevant compliance data for Canadian provinces. <em>Très bien!</em><br> <br> In this release Canadian customers can now: <ul class="featureBodyLI"> <li><strong>Define the system full charge thresholds</strong> as well as the amount added thresholds.</li> <li><strong>Be notified of what agency to contact</strong> when thresholds are met or exceeded.</li> <li><strong>Receive in-app messaging</strong> about the proper agency to notify.</li> <li><strong>Prevent a work order from being invoiced</strong> when an agency number is not entered against the work order.</li> </ul> </p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="RTCanada" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 2</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/RTCanada-Admin.jpg" style="width:100%" alt="Admin controls for Canadian Refrigerant Tracking"> <div class="text">Admin controls for Canadian Refrigerant Tracking</div> </div> <div class="mySlides fade"> <div class="numbertext">2 / 2</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/RTCanada-ProvinceSetings.jpg" style="width:100%" alt="Select and enter details for Canadian Provinces"> <div class="text">Select and enter details for Canadian Provinces</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, RTCanada)"></span> <span class="dot" onclick="currentSlide(2, RTCanada)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv techs providers"> <p class="featureTitle">New Home Page for Providers </p> <p class="featureSub">Providers can now easily manage their workload from the home page</p> <p><span class="featureMod">ALP</span></p> <p class="featureBody">We have redesigned the Provider's Home Page from the ground up for greater visibility and better management of work orders, invoices, and proposals. The new Home Page launches for all contractor companies later this year.</p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="ProvALP" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 1</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/ProviderALP.jpg" style="width:100%" alt="Improved Provider experience with better data and clarity of work orders, proposals, and invoices"> <div class="text">Improved Provider experience with better data and clarity of work orders, proposals, and invoices</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, ProvALP)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv things plat essentials"> <p class="featureTitle">Enhancements to the Work Order List</p> <p class="featureSub">Quick approvals of proposals and invoices, 'sticky' default filters, bulk work order reassign, and more</p> <p><span class="featureMod">WORK ORDER MANAGER</span></p> <p class="featureBody">We are happy to hear feedback and ideas from our customers on improving the platform which helps your workflows. We continue to improve the Work Order List to help you manage your operations better and faster. In this release:<br> <ul class="featureBodyLI"> <li><strong>Reassign multiple work orders in bulk</strong> for the same trade/location directly on the Work Order List, or use the updated <strong>Bulk Reassignment Template</strong> to reassign across various trades/locations via a single template upload.</li> <li><strong>Quickly approve Proposals and Invoices from the Work Order List</strong> when your permissions and limits are set. This feature also works with MLI and MLP configuration rules and limits.</li> <li><strong>Your favorite saved filter can also be your <em>Default Filter</em></strong>, which will automatically apply the filter set every time you visit the Work Order module. This default will 'stick' even after you logout and log back in.</li> <li><strong>The Apply button is pinned to the top of the filter pane.</strong> No more scrolling to the top or bottom of the filter pane to apply changes.</li> </ul> </p> <p class="featureBody">Enjoy these features on release day! </p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="WOEnhance" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/WO-ReassignBatchModal.jpg" style="width:100%" alt="Reassign work orders in Batch"> <div class="text">Reassign work orders in Batch</div> </div> <div class="mySlides fade"> <div class="numbertext">2 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/WO-ApproveInv.jpg" style="width:100%" alt="Approve invoices and proposals right on the work order"> <div class="text">Approve invoices and proposals right on the work order</div> </div> <div class="mySlides fade"> <div class="numbertext">3 / 3</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/WO-DefaultFilters.jpg" style="width:100%" alt="Default filters apply every time you are in the Work Orders Module"> <div class="text">Default filters apply every time you are in the Work Orders Module</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, WOEnhance)"></span> <span class="dot" onclick="currentSlide(2, WOEnhance)"></span> <span class="dot" onclick="currentSlide(3, WOEnhance)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv wom essentials wos"> <p class="featureTitle">🗝 Dynamically Display Work Order Categories by GL Code</p> <p class="featureSub">Only show those categories mapped to the same GL Code</p> <p><span class="featureMod">WORK ORDER MANAGER</span></p> <p class="featureBody">Your Categories are mapped to specific GL Codes. So when you edit a work order, you don't want to change the Category to one that is not aligned to the same GL. <strong>Dynamic Work Order Categories</strong> display only those Categories mapped to a GL Code. Use this dynamic list when you are editing one work order or multiple work orders in bulk.</p> <p class="featureCTA">Your CSM will turn this on for you, upon request.</p> </div> <div class="filterDiv wom wos essentials"> <p class="featureTitle">In-Line Editing of Work Order Labor Performed</p> <p class="featureSub">Simplified on the Details view to find and modify the right labor records</p> <p><span class="featureMod">WORK ORDER MANAGER</span></p> <p class="featureBody">When entering or editing <strong>Labor Performed Data</strong> on work orders, we've simplified this process to help you get it done faster and more accurately. On the Work Order Details page, simply add or edit the labor performed line items. You no longer have to go through endless dropdowns to find the record you need — just click, edit, and save. </p> <div class="giffy"><img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/LaborPerformed.gif" alt="Labor performed in-line editing" width="100%"></div> </div> <div class="filterDiv wom proposals essentials"> <p class="featureTitle">🗝 Uneditable Proposal Numbers</p> <p class="featureSub">Can a provider change the proposal number? Not if you don't want them to.</p> <p><span class="featureMod">ADMIN, PROPOSAL MANAGER</span></p> <p class="featureBody">In <strong>Proposal Admin</strong>, you have more control over whether your providers use either the auto-generated Proposal Number or create their own. Simply check a box to have all providers only use the auto-generated number. To allow providers to use their own proposal number, simply add their company names to the exclusion list.</p> <p class="featureCTA">Contact your CSM to have this feature turned on.</p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="AutoPRP" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 2</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/AutoPRPNumber-Config.jpg" style="width:100%" alt="Add the providers who can generate their own PRP number, auto-generate for the rest"> <div class="text">Add the providers who can generate their own PRP number, auto-generate for the rest</div> </div> <div class="mySlides fade"> <div class="numbertext">2 / 2</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/AutoPRPNumber-CreatePRP.jpg" style="width:100%" alt="When enabled, PRP number is greyed out for non-excluded providers"> <div class="text">When enabled, PRP number is greyed out for non-excluded providers</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, AutoPRP)"></span> <span class="dot" onclick="currentSlide(2, AutoPRP)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv things assets plat"> <p class="featureTitle">Redesigned Asset Summary List is the New Black</p> <p class="featureSub">Sunset of the old Asset Summary List and the toggle to switch versions</p> <p><span class="featureMod">ASSET MANAGER</span></p> <p class="featureBody">In the Summer of 2019 we <strong>redesigned the Assets Summary List</strong> for more efficient navigation and better management of assets. We also maintained the option to toggle back to the old list view so you can compare versions. We have received great feedback from our customers over the past year, and have implemented some wonderful ideas.<br> <br> In this release, we are sunsetting the old list view and displaying the redesigned Assets Summary List permanently. </p> </div> <div class="filterDiv data things refinv addons"> <p class="featureTitle">Enhanced Refrigerant Leak Event Report</p> <p class="featureSub">Improved data capture and simplified reporting</p> <p><span class="featureMod">REFRIGERANT TRACKING MANAGER</span></p> <p class="featureBody">We have enhanced the <strong>Refrigerant Leak Event Report</strong> so you can get the most out of the report. We have added fields such as <em>Leak Event Date, Unit of Measure, Refrigerant Type, Refrigerant Source Location, First Verification Method, </em>and<em> Work Order Status</em>. We have also clarified and renamed existing fields, making it easier for you to identify the data in each column.<br> <br> This report is readily available to those with the Refrigerant Tracking Module. </p> </div> <div class="filterDiv wom providers wos techs essentials"> <p class="featureTitle">New ALP Filter: Providers</p> <p class="featureSub">Hone in on ALP metrics, now by Provider</p> <p><span class="featureMod">ALP</span></p> <p class="featureBody">Service Automation's home page is even more actionable! The new <strong>Providers</strong> filter helps you hone in on Work Orders, Proposals, and Invoices assigned to your external providers. For FTM customers, this new filter also helps you monitor work assigned to your internal providers. You will see this new filter next to the rest of the home page filters; use them together to key in on the data most important to you.</p> <div class="giffy"><img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/ALPFilter.gif" alt="Animation on ALP Providers Filter" width="100%"></div> </div> <div class="filterDiv providers techs addons pro"> <p class="featureTitle">🗝 Flexible Open Leak Record Handling</p> <p class="featureSub">Ensure providers only invoice when open leak records are closed</p> <p><span class="featureMod">INVENTORY MANAGER</span></p> <p class="featureBody">Manage open leak records in line with your facilities operations with flexible <strong>Open Leak Record Handling</strong>. Currently, providers are allowed to create follow-up work orders for all open leak records, which also allowed them to invoice on those open leak records. Now, you can change this to disallow providers from invoicing the work order until the open leak record is closed.<br> <br> In Asset Manager, changing the <strong>Follow Up Work Order</strong> to <strong><em>Never</em></strong> creates a new status, <em>Completed/Open Leak Record</em>. Providers cannot invoice on that status or change it to <em>Completed/Confirmed.</em> When the open leak record is closed, the status automatically changes to <em>Completed/Pending Confirmation</em>.</p> <p class="featureCTA">Contact your CSM to have this feature turned on for you.</p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="OpenLeak" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 1</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/OpenLeak.jpg" style="width:100%" alt="Set the Follow Up Work Order to determine invoicing"> <div class="text">Set the Follow Up Work Order to determine invoicing</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, OpenLeak)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv essentials things plat"> <p class="featureTitle">ServiceChannel Password Security Improvement</p> <p class="featureSub">We now respect cAsE SenSitivItY when you are logging in.</p> <p><span class="featureMod">PLATFORM</span></p> <p class="featureBody">With ServiceChannel's improved password security, <strong>passwords are now case sensitive.</strong><br> <br> Your password now respects the case-sensitivity that was used when it was created. For example, if your password was spelled as "PaSSw0rd" when you created it, you must now enter it exactly as it was created, and not as "passw0rd".</p> <p class="featureCTA">Contact your ServiceChannel administrator at your company or <a href="https://servicechannel.zendesk.com/hc/en-us/requests/new">our customer support team</a> should you have problems logging in.</p> </div> <div class="filterDiv providers techs automated addons pro"> <p class="featureTitle">🗝 FTM Single Sign-On for ServiceChannel Provider Mobile</p> <p class="featureSub">Give your field techs the SSO Key(word) to the city</p> <p><span class="featureMod">FIELD TECH MANAGER</span></p> <p class="featureBody">Field Tech Manager clients can now enable Single Sign-On (or SSO) on ServiceChannel Provider Mobile for FTM technicians. Those familiar with SSO for ServiceChannel Mobile will recognize the same process: FTM technicians can use "SSO Keyword" to log in through IdP authentication.</p> <p class="featureCTA">Your CSM can help you turn on this feature. </p> <!-- Slideshow Images. Change the Div ID, Span Class = Dot (at the end), and add/subtract lines with the same name as the Div ID. Also, update the Javascript with the Div ID name.--> <div id="FTMSSO" class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 1</div> <img src="https://sclearning.blob.core.windows.net/prodcomms/2020R3/FTMSSO.jpg" style="width:100%" alt="FTM SSO login in SC Provider Mobile"> <div class="text">FTM SSO login in SC Provider Mobile</div> </div> <a class="prev" onclick="plusSlides(-1, this.parentNode)">❮</a> <a class="next" onclick="plusSlides(1, this.parentNode)">❯</a> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1, FTMSSO)"></span> </div> </div> <!--END IMAGES. Don't forget to add a var to the Javascript with the same Div ID --> </div> <div class="filterDiv providers"> <p class="featureTitle">Expanded Language Support for Service Automation</p> <p class="featureSub">Extended support for a multitude of European and Asian languages</p> <p><span class="featureMod">LOCALIZATION</span></p> <p class="featureBody"><em>Bonjour, Salut, </em>and <em>Χαίρετε</em>! Our customers speak in many languages around the world, and so should we! Supported languages for ServiceChannel's desktop and mobile apps now include Chinese (Traditional), Dutch, French, German, Greek, Hungarian, Romanian, and Russian.</p> </div> </div> </div> <div class="rightDiv"> <div id="myBtnContainer"> <div class="filterSubDiv"> <button class="btn active" onclick="filterSelection('all')" style="height:40px; font-weight: bold;">CLICK TO SHOW ALL FEATURES</button> <p></p> <!-- <button class="toggleBtn" onclick="myFunction()">Show/Hide Filters</button>--> </div> <div id="toggleFilters"> <p class="textSubDiv">Filter by Module</p> <button class="btn" onclick="filterSelection('wos')">Work Orders</button> <button class="btn" onclick="filterSelection('invoices')">Invoices</button> <button class="btn" onclick="filterSelection('proposals')">Proposals</button> <button class="btn" onclick="filterSelection('assets')">Assets</button> <button class="btn" onclick="filterSelection('analytics')">Analytics and Data</button> <button class="btn" onclick="filterSelection('refinv')">Refrigerant Tracking and Inventory</button> <button class="btn" onclick="filterSelection('techs')">Field Tech Manager and Providers</button> <button class="btn" onclick="filterSelection('plat')">Enhancements and Improvements</button> <p class="textSubDiv">Filter by Package</p> <button class="btn" onclick="filterSelection('essentials')">Essentials</button> <button class="btn" onclick="filterSelection('addons')">Add-Ons</button> <button class="btn" onclick="filterSelection('pro')">Professional</button> <p class="textSubDiv">Filter by need</p> <button class="btn" onclick="filterSelection('new')">New Modules</button> <button class="btn" onclick="filterSelection('onsite')">Onsite Operations and Compliance</button> <button class="btn" onclick="filterSelection('wom')">Work Order Management at the Speed of (FM) Life</button> <button class="btn" onclick="filterSelection('automated')">Automated + More Organized = Faster Resolution</button> <button class="btn" onclick="filterSelection('data')">Strong Data Makes the Case</button> <button class="btn" onclick="filterSelection('providers')">Providers and Technicians = Faster Resolution</button> <button class="btn" onclick="filterSelection('things')">It's the Little Things</button> </div> </div> </div> </div> <div style="clear:both;"></div> <script> //Image Galleries source: https://stackoverflow.com/questions/43299759/how-do-i-make-multiple-slideshows-in-the-same-html-document/43300869 var slideshow01 = document.getElementById("Inventory"); slideshow01.currentSlideIndex = 1; showSlides(slideshow01.currentSlideIndex, slideshow01); var slideshow02 = document.getElementById("SiteAccess"); slideshow02.currentSlideIndex = 1; showSlides(slideshow02.currentSlideIndex, slideshow02); var slideshow03 = document.getElementById("Labels"); slideshow03.currentSlideIndex = 1; showSlides(slideshow03.currentSlideIndex, slideshow03); var slideshow04 = document.getElementById("NotifyProv"); slideshow04.currentSlideIndex = 1; showSlides(slideshow04.currentSlideIndex, slideshow04); var slideshow05 = document.getElementById("FTMRoles"); slideshow05.currentSlideIndex = 1; showSlides(slideshow05.currentSlideIndex, slideshow05); var slideshow6 = document.getElementById("MLIChanges"); slideshow6.currentSlideIndex = 1; showSlides(slideshow6.currentSlideIndex, slideshow6); var slideshow7 = document.getElementById("PropDash"); slideshow7.currentSlideIndex = 1; showSlides(slideshow7.currentSlideIndex, slideshow7); var slideshow8 = document.getElementById("RTCanada"); slideshow8.currentSlideIndex = 1; showSlides(slideshow8.currentSlideIndex, slideshow8); var slideshow9 = document.getElementById("ProvALP"); slideshow9.currentSlideIndex = 1; showSlides(slideshow9.currentSlideIndex, slideshow9); var slideshow10 = document.getElementById("WOEnhance"); slideshow10.currentSlideIndex = 1; showSlides(slideshow10.currentSlideIndex, slideshow10); var slideshow11 = document.getElementById("AutoPRP"); slideshow11.currentSlideIndex = 1; showSlides(slideshow11.currentSlideIndex, slideshow11); var slideshow12 = document.getElementById("OpenLeak"); slideshow12.currentSlideIndex = 1; showSlides(slideshow12.currentSlideIndex, slideshow12); var slideshow13 = document.getElementById("FTMSSO"); slideshow13.currentSlideIndex = 1; showSlides(slideshow13.currentSlideIndex, slideshow13); function plusSlides(n, slideshow) { showSlides(slideshow.currentSlideIndex += n, slideshow); } function currentSlide(n, slideshow) { showSlides(slideshow.currentSlideIndex = n, slideshow); } function showSlides(n, slideshow) { var m; var slides = slideshow.getElementsByClassName("mySlides"); var dots = slideshow.getElementsByClassName("dot"); if (n > slides.length) {slideshow.currentSlideIndex = 1} if (n < 1) {slideshow.currentSlideIndex = slides.length} for (m = 0; m < slides.length; m++) { slides[m].style.display = "none"; } for (m = 0; m < dots.length; m++) { dots[m].className = dots[m].className.replace(" pressed", ""); } slides[slideshow.currentSlideIndex-1].style.display = "block"; dots[slideshow.currentSlideIndex-1].className += " pressed"; } ////Toggle Show/Hide Filters // function myFunction() { // var x = document.getElementById("toggleFilters"); // if (x.style.display === "none") { // x.style.display = "block"; // } else { // x.style.display = "none"; // } //} filterSelection("all") function filterSelection(c) { var x, i; x = document.getElementsByClassName("filterDiv"); if (c == "all") c = ""; for (i = 0; i < x.length; i++) { w3RemoveClass(x[i], "show"); if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show"); } } function w3AddClass(element, name) { var i, arr1, arr2; arr1 = element.className.split(" "); arr2 = name.split(" "); for (i = 0; i < arr2.length; i++) { if (arr1.indexOf(arr2[i]) == -1) {element.className += " " + arr2[i];} } } function w3RemoveClass(element, name) { var i, arr1, arr2; arr1 = element.className.split(" "); arr2 = name.split(" "); for (i = 0; i < arr2.length; i++) { while (arr1.indexOf(arr2[i]) > -1) { arr1.splice(arr1.indexOf(arr2[i]), 1); } } element.className = arr1.join(" "); } // Add active class to the current button (highlight it) var btnContainer = document.getElementById("myBtnContainer"); var btns = btnContainer.getElementsByClassName("btn"); for (var i = 0; i < btns.length; i++) { btns[i].addEventListener("click", function(){ var current = document.getElementsByClassName("active"); current[0].className = current[0].className.replace(" active", ""); this.className += " active"; }); } </script> </body> </html> |
...