{"id":2479,"date":"2014-10-07T13:09:16","date_gmt":"2014-10-07T09:09:16","guid":{"rendered":"http:\/\/www.dhtmlx.com\/blog\/?p=2479"},"modified":"2023-05-05T13:58:08","modified_gmt":"2023-05-05T10:58:08","slug":"progress-bar-in-cells","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/progress-bar-in-cells\/","title":{"rendered":"DHTMLX Little-Known Features: Progress Bar in Cells"},"content":{"rendered":"<p>Last time we shared the information about how you can <a href=\"https:\/\/dhtmlx.com\/blog\/docking-undocking-cells\/\" target=\"_blank\">dock \/ undock cells<\/a> in accordion and layout. The next feature we are going to review is an ability to display <a href=\"https:\/\/docs.dhtmlx.com\/cell__progress.html\" target=\"_blank\">progress bar in cells<\/a>. <\/p>\n<p>Progress bar is a state indicator used to show the users that some action (for example, data loading) is currently in progress and other actions with this cell are disabled.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dhtmlx.com\/blog\/wp-content\/uploads\/2014\/10\/layout-cell-a-progress-on.png\" alt=\"progress-bar-grid\" width=\"600\" height=\"400\" class=\"aligncenter size-full wp-image-2480\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2014\/10\/layout-cell-a-progress-on.png 600w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2014\/10\/layout-cell-a-progress-on-300x200.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>To make it work, you need to call the appropriate API method:<\/p>\n<div class=\"codecolorer-container javascript default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"co1\">\/\/ turning progress on<\/span><br \/>\ndhxComponent.<span class=\"me1\">cells<\/span><span class=\"br0\">&#40;<\/span>id<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">progressOn<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<br \/>\n<span class=\"co1\">\/\/ turning progress off<\/span><br \/>\ndhxComponent.<span class=\"me1\">cells<\/span><span class=\"br0\">&#40;<\/span>id<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">progressOff<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><!--more--><\/p>\n<p>In the following example we place the <a href=\"https:\/\/docs.dhtmlx.com\/api__dhtmlxcell_progresson.html\" target=\"_blank\">progressOn()<\/a> call before loading data in some component, and <a href=\"https:\/\/docs.dhtmlx.com\/api__dhtmlxcell_progressoff.html\" target=\"_blank\">progressOff()<\/a> in data loading callback:<\/p>\n<div class=\"codecolorer-container javascript default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">var<\/span> myLayout<span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span> myGrid<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<br \/>\n<span class=\"co1\">\/\/ init layout and attach grid<\/span><br \/>\n<span class=\"kw1\">function<\/span> initControls<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; myLayout <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhtmlXLayoutObject<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; parent<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;layoutObj&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; pattern<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;2U&quot;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; myGrid <span class=\"sy0\">=<\/span> myLayout.<span class=\"me1\">cells<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;a&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">attachGrid<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; loadGridData<span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp;<br \/>\n<span class=\"co1\">\/\/ load\/reload grid data<\/span><br \/>\n<span class=\"kw1\">function<\/span> loadGridData<span class=\"br0\">&#40;<\/span>firstLoad<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; mylayout.<span class=\"me1\">cells<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;a&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">progressOn<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>firstLoad <span class=\"sy0\">==<\/span> <span class=\"kw2\">true<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; myGrid.<span class=\"me1\">load<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;server.php&quot;<\/span><span class=\"sy0\">,<\/span> doOnGridLoaded<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; myGrid.<span class=\"me1\">updateFromXML<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;server.php&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">,<\/span> doOnGridLoaded<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp;<br \/>\n<span class=\"co1\">\/\/ grid dataload callback<\/span><br \/>\n<span class=\"kw1\">function<\/span> doOnGridLoaded<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; myLayout.<span class=\"me1\">cells<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;a&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">progressOff<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"sy0\">&lt;<\/span>body onload<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;initControls();&quot;<\/span><span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>div id<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;layoutObj&quot;<\/span> style<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;width: 600px; height: 400px;&quot;<\/span><span class=\"sy0\">&gt;&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>input type<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;button&quot;<\/span> value<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;refresh grid&quot;<\/span> onclick<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;loadGridData();&quot;<\/span><span class=\"sy0\">&gt;&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span><br \/>\n<span class=\"sy0\">&lt;\/<\/span>body<span class=\"sy0\">&gt;<\/span><\/div><\/div>\n<p>When clicking on the button, the loadGridData() method will be called and you will see the progress of loading over the cell with grid.<\/p>\n<p>Check <a href=\"https:\/\/docs.dhtmlx.com\/cell__progress.html\" target=\"_blank\">this article<\/a> in documentation. Feel free to leave comments and ask your questions<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last time we shared the information about how you can dock \/ undock cells in accordion and layout. The next feature we are going to review is an ability &#8230;<\/p>\n","protected":false},"author":2,"featured_media":3322,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,71,1],"tags":[33,43,14],"class_list":["post-2479","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-posts-for-codeproject-com","category-tutorials","category-uncategorized","tag-all-posts","tag-dhtmlx-tips","tag-tips"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/2479","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=2479"}],"version-history":[{"count":3,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/2479\/revisions"}],"predecessor-version":[{"id":9004,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/2479\/revisions\/9004"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/3322"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=2479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=2479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=2479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}