{"id":12775,"date":"2024-08-15T17:10:45","date_gmt":"2024-08-15T14:10:45","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=12775"},"modified":"2024-08-15T18:41:50","modified_gmt":"2024-08-15T15:41:50","slug":"visualizing-resource-workload-dhtmlx-scheduler-suites-chart-widget","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/visualizing-resource-workload-dhtmlx-scheduler-suites-chart-widget\/","title":{"rendered":"Visualizing Resource Workload in DHTMLX Scheduler with Suite\u2019s Chart Widget"},"content":{"rendered":"<p>DHTMLX Scheduler is a comprehensive UI component for handling complex scheduling and task management needs in business-oriented web apps. However, certain scenarios may require custom solutions. For instance, if a project has limited resources i.e. workforce, it is necessary to make sure that their workload is distributed with extra precision. For this purpose, it can be useful to apply a data visualization tool such as a bar chart.<\/p>\n<p>In this tutorial, you will learn how to connect our Scheduler component to the JavaScript Chart library from the DHTMLX Suite, thereby enhancing control over the resource workload in any view of your scheduling app.<\/p>\n<h5>Guide on Connecting DHTMLX Scheduler with Suite\u2019s Chart Library<\/h5>\n<p>If you need to add an auxiliary mechanism for managing the workload of resources to our <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxScheduler\/\" rel=\"noopener\" target=\"_blank\">JavaScript scheduling library<\/a>, you can complement it with a bar chart based on the Suite\u2019s Chart widget like in the sample below. Using this sample, you can change the working time of employees, and these changes will be dynamically displayed in the chart. Moreover, you can also hide and show the data on a particular employee in both widgets by simply clicking on names of employees in the chart&#8217;s legend.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/08\/DHTMLX-Scheduler-with-Chart.png\" alt=\"visualizing resource workload\" width=\"1739\" height=\"826\" class=\"aligncenter size-full wp-image-12783\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/08\/DHTMLX-Scheduler-with-Chart.png 1739w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/08\/DHTMLX-Scheduler-with-Chart-300x142.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/08\/DHTMLX-Scheduler-with-Chart-768x365.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/08\/DHTMLX-Scheduler-with-Chart-1024x486.png 1024w\" sizes=\"auto, (max-width: 1739px) 100vw, 1739px\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/pku1wk02?mode=wide rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>Previously, we shared with you how to add the <a href=\"https:\/\/dhtmlx.com\/blog\/integrate-dhtmlx-suite-widgets-schedulers-lightbox\/\" rel=\"noopener\" target=\"_blank\">Calendar<\/a> and <a href=\"https:\/\/dhtmlx.com\/blog\/connect-dhtmlx-scheduler-suites-list-control\/\" rel=\"noopener\" target=\"_blank\">List<\/a> controls to DHTMLX Scheduler, so you can be sure that the integration of two DHTMLX products won\u2019t include any hidden pitfalls. But still, we want to highlight the main steps to help you combine DHTMLX Scheduler with the <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxChart\/\" rel=\"noopener\" target=\"_blank\">Chart widget<\/a> much faster.<\/p>\n<h6>Step 1: Initializing and Configuring Scheduler<\/h6>\n<p>In general, DHTMLX Scheduler can be initialized on a page via the scheduler&#8217;s markup or the header configuration property. <\/p>\n<p>In this blog post, we use the second option:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">scheduler.<span class=\"me1\">init<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;scheduler_here&quot;<\/span><span class=\"sy0\">,<\/span><span class=\"kw1\">new<\/span> <span class=\"kw4\">Date<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">2024<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">5<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">24<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">&quot;week&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Now, we proceed to the scheduler configuration:<\/p>\n<ul>\n<li>Limit the displayed work time and set the time step to 30 minutes:<\/li>\n<\/ul>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">scheduler.<span class=\"me1\">config<\/span>.<span class=\"me1\">first_hour<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">9<\/span><span class=\"sy0\">;<\/span><br \/>\nscheduler.<span class=\"me1\">config<\/span>.<span class=\"me1\">last_hour<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">22<\/span><span class=\"sy0\">;<\/span><br \/>\nscheduler.<span class=\"me1\">config<\/span>.<span class=\"me1\">time_step<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">30<\/span><span class=\"sy0\">;<\/span><br \/>\nscheduler.<span class=\"me1\">config<\/span>.<span class=\"me1\">cascade_event_display<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<ul>\n<li>Add the ability to assign events to different persons\/employees via the lightbox and color them depending on their workplaces. For this purpose, you need to create an array of employees (<strong>owner_opts<\/strong>) and add the <strong>select<\/strong> control for them to the lightbox:<\/li>\n<\/ul>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">let owners <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span> key<span class=\"sy0\">:<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> label<span class=\"sy0\">:<\/span> <span class=\"st0\">'John'<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span> key<span class=\"sy0\">:<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span> label<span class=\"sy0\">:<\/span> <span class=\"st0\">'Hannah'<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span> key<span class=\"sy0\">:<\/span> <span class=\"nu0\">3<\/span><span class=\"sy0\">,<\/span> label<span class=\"sy0\">:<\/span> <span class=\"st0\">'David'<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<br \/>\nscheduler.<span class=\"me1\">locale<\/span>.<span class=\"me1\">labels<\/span>.<span class=\"me1\">section_select<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'Owner'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<br \/>\nscheduler.<span class=\"me1\">config<\/span>.<span class=\"me1\">lightbox<\/span>.<span class=\"me1\">sections<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span> name<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">,<\/span> height<span class=\"sy0\">:<\/span><span class=\"nu0\">50<\/span><span class=\"sy0\">,<\/span> map_to<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;textarea&quot;<\/span><span class=\"sy0\">,<\/span> focus<span class=\"sy0\">:<\/span><span class=\"kw2\">true<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span> name<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;select&quot;<\/span><span class=\"sy0\">,<\/span> height<span class=\"sy0\">:<\/span><span class=\"nu0\">40<\/span><span class=\"sy0\">,<\/span> map_to<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;owner_id&quot;<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;select&quot;<\/span><span class=\"sy0\">,<\/span> options<span class=\"sy0\">:<\/span>owners<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span> name<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;time&quot;<\/span><span class=\"sy0\">,<\/span> height<span class=\"sy0\">:<\/span><span class=\"nu0\">72<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;time&quot;<\/span><span class=\"sy0\">,<\/span> map_to<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;auto&quot;<\/span><span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nscheduler.<span class=\"me1\">templates<\/span>.<span class=\"me1\">event_class<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>start<span class=\"sy0\">,<\/span> end<span class=\"sy0\">,<\/span> ev<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">return<\/span> `owner_$<span class=\"br0\">&#123;<\/span>ev.<span class=\"me1\">owner_id<\/span><span class=\"br0\">&#125;<\/span>`<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<ul>\n<li>Set styles for these events in the CSS file:<\/li>\n<\/ul>\n<div class=\"codecolorer-container css default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"css codecolorer\">&lt;style<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re1\">.owner_1<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re4\">--dhx-scheduler-event-background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#394E79<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re4\">--dhx-scheduler-event-color<\/span><span class=\"sy0\">:<\/span> <span class=\"kw4\">white<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re1\">.owner_2<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re4\">--dhx-scheduler-event-background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#5E83BA<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re4\">--dhx-scheduler-event-color<\/span><span class=\"sy0\">:<\/span> <span class=\"kw4\">white<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re1\">.owner_3<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re4\">--dhx-scheduler-event-background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#C2D2E9<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re4\">--dhx-scheduler-event-color<\/span><span class=\"sy0\">:<\/span> <span class=\"kw4\">white<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&lt;\/style<span class=\"sy0\">&gt;<\/span><\/div><\/div>\n<p>Next, we move on to DHTMLX Chart.<\/p>\n<h6>Step 2: Initializing and Configuring Chart<\/h6>\n<p>First, you need to create a config, where you specify the type and other settings for your chart. Use the <strong>getConfig<\/strong> function:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;height:600px;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">function<\/span> getConfig<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"kw1\">return<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;bar&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;css<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;dhx_widget--bg_white dhx_widget--bordered&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"co1\">\/\/ Set the coordinate axes in accordance with the displayed data<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;scales<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"st0\">&quot;bottom&quot;<\/span><span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;day&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;textTemplate<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>day<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw1\">return<\/span> day<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"st0\">&quot;left&quot;<\/span><span class=\"sy0\">:<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;title<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Hours&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;max<span class=\"sy0\">:<\/span> <span class=\"nu0\">24<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"co1\">\/\/ Configure the chart series &nbsp; <\/span><br \/>\n&nbsp; &nbsp; series<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;A&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;value<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;John&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fill<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;#394E79&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;none&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;B&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;value<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Hannah&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fill<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;#5E83BA&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;none&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;C&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;value<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;David&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fill<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;#C2D2E9&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;none&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"co1\">\/\/ Add the chart legend configuration<\/span><br \/>\n&nbsp; &nbsp; &nbsp; legend<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;series<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;A&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;B&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;C&quot;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;form<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;rect&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;valign<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;top&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;halign<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;right&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p>After that, you initialize the bar chart using the <strong>dhx.Chart<\/strong> object constructor:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> chart <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Chart<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;chart&quot;<\/span><span class=\"sy0\">,<\/span> getConfig<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<h6>Step 3: Transferring Data from Scheduler to Chart<\/h6>\n<p>Since Scheduler and Chart use different data formats, you need to convert the scheduler data before transferring it to the chart. To do that, you\u2019ll need to obtain all the events for each day of the week, calculate the duration (in hours) for each of them, and divide these hours between 3 different objects (the number of objects in your scenario can be different, our demo has 3), depending on which owner these events are assigned to.<\/p>\n<p>You\u2019ll need to write custom functions and use part of the Scheduler API:<\/p>\n<ol>\n<li>Create the <strong>calculateEventsLoad()<\/strong> function:<\/li>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">function<\/span> calculateEventsLoad<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><\/div><\/div>\n<li>Get the scheduler view dates via API:<\/li>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">&nbsp; &nbsp; let state <span class=\"sy0\">=<\/span> scheduler.<span class=\"me1\">getState<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; let min <span class=\"sy0\">=<\/span> state.<span class=\"me1\">min_date<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<li>Declare variables to store the calculated data:<\/li>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">&nbsp; &nbsp; let tempDuration_a<span class=\"sy0\">,<\/span> tempDuration_b<span class=\"sy0\">,<\/span> tempDuration_c<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; let workload <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<li>Calculate the workload for each owner:<\/li>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">&nbsp; &nbsp; <span class=\"kw1\">for<\/span><span class=\"br0\">&#40;<\/span>let i <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span> i<span class=\"sy0\">&lt;<\/span><span class=\"nu0\">7<\/span><span class=\"sy0\">;<\/span> i<span class=\"sy0\">++<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; tempDuration_a <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; tempDuration_b <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; tempDuration_c <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<li>Get events for each day of the week:<\/li>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">&nbsp; &nbsp; &nbsp; &nbsp; let dayEvs <span class=\"sy0\">=<\/span> scheduler.<span class=\"me1\">getEvents<\/span><span class=\"br0\">&#40;<\/span>scheduler.<span class=\"me1\">date<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">new<\/span> <span class=\"kw4\">Date<\/span><span class=\"br0\">&#40;<\/span>min<span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> i<span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;day&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> scheduler.<span class=\"me1\">date<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">new<\/span> <span class=\"kw4\">Date<\/span><span class=\"br0\">&#40;<\/span>min<span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> i<span class=\"sy0\">+<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;day&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<li>Calculate the workload of events for each owner:<\/li>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dayEvs.<span class=\"me1\">forEach<\/span><span class=\"br0\">&#40;<\/span>ev <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">const<\/span> duration <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>ev.<span class=\"me1\">end_date<\/span> <span class=\"sy0\">-<\/span> ev.<span class=\"me1\">start_date<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">\/<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">1000<\/span> <span class=\"sy0\">*<\/span> <span class=\"nu0\">60<\/span> <span class=\"sy0\">*<\/span> <span class=\"nu0\">60<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">switch<\/span> <span class=\"br0\">&#40;<\/span>ev.<span class=\"me1\">owner_id<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">case<\/span> <span class=\"st0\">&quot;1&quot;<\/span><span class=\"sy0\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tempDuration_a <span class=\"sy0\">+=<\/span> duration<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">break<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">case<\/span> <span class=\"st0\">&quot;2&quot;<\/span><span class=\"sy0\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tempDuration_b <span class=\"sy0\">+=<\/span> duration<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">break<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">case<\/span> <span class=\"st0\">&quot;3&quot;<\/span><span class=\"sy0\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tempDuration_c <span class=\"sy0\">+=<\/span> duration<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">break<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<li>Push the resulted data into the array that will pass this data to the Chart component:<\/li>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">&nbsp; &nbsp; &nbsp; &nbsp; workload<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;workload_a&quot;<\/span><span class=\"sy0\">:<\/span> tempDuration_a<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;workload_b&quot;<\/span><span class=\"sy0\">:<\/span> tempDuration_b<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;workload_c&quot;<\/span><span class=\"sy0\">:<\/span> tempDuration_c<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;day&quot;<\/span><span class=\"sy0\">:<\/span> scheduler.<span class=\"me1\">date<\/span>.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">new<\/span> <span class=\"kw4\">Date<\/span><span class=\"br0\">&#40;<\/span>min<span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> i<span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;day&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">getDate<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; generateChartData<span class=\"br0\">&#40;<\/span>workload<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<li>Create the function that converts the prepared data to the Chart\u2019s format and parses it to the chart:<\/li>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">function<\/span> generateChartData<span class=\"br0\">&#40;<\/span>workload<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Generate and parse prepared chart's data<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">const<\/span> chartData <span class=\"sy0\">=<\/span> workload.<span class=\"me1\">map<\/span><span class=\"br0\">&#40;<\/span>el <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; day <span class=\"sy0\">:<\/span> el.<span class=\"me1\">day<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;John&quot;<\/span> <span class=\"sy0\">:<\/span> el.<span class=\"me1\">workload_a<\/span><span class=\"sy0\">,<\/span> <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;Hannah&quot;<\/span> <span class=\"sy0\">:<\/span> el.<span class=\"me1\">workload_b<\/span><span class=\"sy0\">,<\/span> <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;David&quot;<\/span> <span class=\"sy0\">:<\/span> el.<span class=\"me1\">workload_c<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; chart.<span class=\"me1\">data<\/span>.<span class=\"me1\">parse<\/span><span class=\"br0\">&#40;<\/span>chartData<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<\/ol>\n<p>When calling the <strong>calculateEventsLoad()<\/strong> function, you\u2019ll see both the chart and the scheduler with the accurate data.<\/p>\n<h6>Step 4: Synchronizing Scheduler with Chart<\/h6>\n<p>Lastly, you need to synchronize components to ensure that changes made in the scheduling calendar will be instantly visible in the bar chart. You should use Scheduler event listeners that synchronize scheduler updates into chart like in the example below:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">scheduler.<span class=\"me1\">attachEvent<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;onEventChanged&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>id<span class=\"sy0\">,<\/span>ev<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; calculateEventsLoad<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <br \/>\n<br \/>\nscheduler.<span class=\"me1\">attachEvent<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;onEventAdded&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>id<span class=\"sy0\">,<\/span>ev<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; calculateEventsLoad<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nscheduler.<span class=\"me1\">attachEvent<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;onEventSave&quot;<\/span><span class=\"sy0\">,<\/span><span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>id<span class=\"sy0\">,<\/span>ev<span class=\"sy0\">,<\/span>is_new<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; calculateEventsLoad<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span> <br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nscheduler.<span class=\"me1\">attachEvent<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;onViewChange&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>new_mode <span class=\"sy0\">,<\/span> new_date<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; calculateEventsLoad<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<h6>Step 5: Synchronizing Filtering Feature in Chart and Scheduler<\/h6>\n<p>The bar chart comes with the filtering feature that allows showing and hiding data on a particular employee by clicking on the chart\u2019s legend. You can synchronize this filtering feature with your scheduler to filter events there too. <\/p>\n<p>First, you need to create a variable to store the filter values:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">const<\/span> filterOptions <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> Set<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Then, create a helper function to change this variable:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">function<\/span> setFilter<span class=\"br0\">&#40;<\/span>ownerID<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>filterOptions.<span class=\"me1\">has<\/span><span class=\"br0\">&#40;<\/span>ownerID<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; filterOptions.<span class=\"kw1\">delete<\/span><span class=\"br0\">&#40;<\/span>ownerID<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; filterOptions.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span>ownerID<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; scheduler.<span class=\"me1\">setCurrentView<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p>This helper function will be called after clicking on checkboxes in the chart legend using the <strong>toggleSeries<\/strong> event of the Chart component:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">chart.<span class=\"me1\">events<\/span>.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;toggleSeries&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>id<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">switch<\/span> <span class=\"br0\">&#40;<\/span>id<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">case<\/span> <span class=\"st0\">&quot;A&quot;<\/span><span class=\"sy0\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFilter<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">break<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">case<\/span> <span class=\"st0\">&quot;B&quot;<\/span><span class=\"sy0\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFilter<span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">break<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">case<\/span> <span class=\"st0\">&quot;C&quot;<\/span><span class=\"sy0\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setFilter<span class=\"br0\">&#40;<\/span><span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">break<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Now, you should use the resulted array for filtering in your scheduler:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">scheduler.<span class=\"me1\">filter_week<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw1\">function<\/span><span class=\"br0\">&#40;<\/span>id<span class=\"sy0\">,<\/span> event<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> filterOptions.<span class=\"me1\">has<\/span><span class=\"br0\">&#40;<\/span>parseInt<span class=\"br0\">&#40;<\/span>event.<span class=\"me1\">owner_id<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p>That\u2019s it.<\/p>\n<p>Following the steps above, you can enrich your JavaScript scheduler with a bar chart like in our <a href=\"https:\/\/snippet.dhtmlx.com\/pku1wk02?mode=wide\">sample<\/a> to manage the resource workload more accurately.<\/p>\n<h5>Wrapping Up<\/h5>\n<p>Proper work with resources is a crucial aspect of effective task management in any project. With JavaScript scheduling calendars, you\u2019ve got to be sure that resources (employees, rooms, equipment) are optimally loaded with tasks or appointments. The use of additional tools such as Suite\u2019s Chart widget gives a more comprehensive perspective on the matter, and this tutorial provides all the necessary info to complete the integration quickly and smoothly.<\/p>\n<h5>Related Materials<\/h5>\n<ul>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/scheduler\/\" rel=\"noopener\" target=\"_blank\">DHTMLX Scheduler documentation<\/a><\/li>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/suite\/chart\/\" rel=\"noopener\" target=\"_blank\">DHTMLX Chart documentation<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/blog\/integrate-dhtmlx-suite-widgets-schedulers-lightbox\/\" rel=\"noopener\" target=\"_blank\">DHTMLX Scheduler + Suite&#8217;s Calendar<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/blog\/connect-dhtmlx-scheduler-suites-list-control\/\" rel=\"noopener\" target=\"_blank\">DHTMLX Scheduler + Suite&#8217;s List<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/docs\/download\/\" rel=\"noopener\" target=\"_blank\">Free 30-day trial versions<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>DHTMLX Scheduler is a comprehensive UI component for handling complex scheduling and task management needs in business-oriented web apps. However, certain scenarios may require custom solutions. For instance, if &#8230;<\/p>\n","protected":false},"author":101014,"featured_media":12782,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[33,21,15],"class_list":["post-12775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-all-posts","tag-charts","tag-dhtmlxscheduler"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/12775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/users\/101014"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=12775"}],"version-history":[{"count":5,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/12775\/revisions"}],"predecessor-version":[{"id":12778,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/12775\/revisions\/12778"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/12782"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=12775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=12775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=12775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}