{"id":11914,"date":"2026-01-07T14:14:49","date_gmt":"2026-01-07T14:14:49","guid":{"rendered":"https:\/\/onecpm.com\/?page_id=11914"},"modified":"2026-01-14T14:10:20","modified_gmt":"2026-01-14T14:10:20","slug":"food-machinery-grease-comparison","status":"publish","type":"page","link":"https:\/\/onecpm.com\/id\/food-machinery-grease-comparison","title":{"rendered":"Perbandingan Gemuk untuk Mesin Makanan"},"content":{"rendered":"\n\n\n\n\t\n\n\t\t\t\t\n\t\n<div id=\"block_12ddefabe20ab95a09db37c49f52e678\" class=\"nmc-block nmc-block--masthead-basic block-container alignwide\">\n\t\n\t\t\n\t\t\t<div class=\"blockbody\">\n\t\t\t\t<div class=\"masthead-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h1 class=\"page-title\">Food Machinery <strong>Grease Comparison<\/strong><\/h1>\n\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t\t\n\t<\/div>\n\n\n\n\n\n\t\n\n\t\t\t\n\t\n<div id=\"block_c40cebd923fd262bdf90da156c7de7e2\" class=\"nmc-block nmc-block--split block-container -Width alignfull\">\n\t\n\t\t\n\t\t\t<div class=\"blockbody\">\n\t\t\t\t\t<div class=\"bound boundwider\">\n\t\t\n\n<div class=\"split-half\">\n\t<div class=\"split-half-content\">\n\n\t\t\n\n<h2 class=\"wp-block-heading\" id=\"headline-2436-390\">Key Factors for Comparing<\/h2>\n\n\n\n<p>To compare grease for compatibility you should consider these key factors: base oil type, the type of thickener used in both greases, the type and amount of additives, and certifications such as NSF H1.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"headline-2430-390\">Overview<\/h2>\n\n\n\n<p>Pro-Roll\u2122 food grade grease provides essential, adequate lubrication and protection to ensure your pellet mill is running at optimal performance, reducing the need for maintenance and repairs. Our grease meets the requirements to withstand the high temperatures and extreme pressure generated during the operation of the pellet mill. Other benefits include high load-carrying capability, more forgiveness for accidental operator neglect, and is proven to reduce roll failure by 72%. We offer our grease in tubes, kegs, and barrels to satisfy your needs.<\/p>\n\n\n\t\t\n\t<\/div>\n<\/div>\n\n\n<div class=\"split-half\">\n\t<div class=\"split-half-content\">\n\n\t\t\n\n<div class=\"split-half-image\">\n\t\t\t\t\t\t\t<picture>\n\t\t<source media=\"(max-width: 400px)\" srcset=\"https:\/\/img.nmcdn.io\/e1\/w:500,h:593,v:1\/cpm\/wp-content\/uploads\/2025\/11\/grease-comparison-intro.jpg?s=f21a2375\">\n\t\t<img decoding=\"async\" loading=\"lazy\" style=\"aspect-ratio: 0.84395604395604;\" src=\"https:\/\/img.nmcdn.io\/e1\/w:800,h:948,v:1\/cpm\/wp-content\/uploads\/2025\/11\/grease-comparison-intro.jpg?s=2fd33345\" width=\"800\" height=\"948\" alt=\"Jacobs Pro Roll grease\">\n\t<\/picture>\n<\/div>\n\n\n\t\t\n\t<\/div>\n<\/div>\n\n\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t\t\n\t<\/div>\n\n\n\n\t\n\n\t\t\t\t\t\t\t\n\n<div id=\"block_543dfbdf03f8470e39808aacee340673\" class=\"nmc-block nmc-block--comparison-block block-container alignfull\">\n\t\n\t\t\n\t\t\t<div class=\"blockbody\">\n\t\t\t\t\n<div class=\"bound boundwider\">\n    <div class=\"intro\">\n                                                                                                                                                                                            <h2 class=\"block-title\">Performance Test &#038; <strong>Grease Comparison<\/strong><\/h2>        <p>Please select a grease from each of the dropdowns to compare the available data.<\/p>\n<p>CPM Pro-Roll Food Grade Grease is NSF certified Food Grade (H1) and Orthodox Union-certified Kosher for Passover and year-round use. You can view the SDS by clicking here.<\/p>\n\n    <\/div>\n\n    <div class=\"comparison-block\">\n        \n        <div id=\"csv-container\">Loading&#8230;<\/div>\n        \n                <script>\n        \n        const container = document.getElementById('csv-container');\n        \n        const schemaUrl = 'https:\/\/onecpm.com\/wp-content\/uploads\/2025\/12\/CPM-Comparison-Table-Block-schemav2.csv';\n        const leftColUrl = 'https:\/\/onecpm.com\/wp-content\/uploads\/2026\/01\/CPM-Comparison-Table-Block-Lcolv2_2026-01-07.csv';\n        const rightColUrl = 'https:\/\/onecpm.com\/wp-content\/uploads\/2026\/01\/CPM-Comparison-Table-Block-Rcolv2_2026-01-07.csv';\n                \n        var schemaData, leftColData, rightColData;\n        var leftProductNames, rightProductNames;\n        \n        \n        Promise.all([\n            fetch(schemaUrl).then(function(response) {\n                if (!response.ok) {\n                    throw new Error('HTTP ' + response.status);\n                }\n                return response.text();\n            }),\n            fetch(leftColUrl).then(function(response) {\n                if (!response.ok) {\n                    throw new Error('HTTP ' + response.status);\n                }\n                return response.text();\n            }),\n            fetch(rightColUrl).then(function(response) {\n                if (!response.ok) {\n                    throw new Error('HTTP ' + response.status);\n                }\n                return response.text();\n            })\n        ])\n        .then(function(results) {\n            \n            var schemaCSV = results[0];\n            var leftColCSV = results[1];\n            var rightColCSV = results[2];\n            \n            \n            function parseCSVLine(line) {\n                var regex = \/(\"(?:[^\"]|\"\")*\"|[^,]*)(,|$)\/g;\n                var result = [];\n                var match;\n                \n                while ((match = regex.exec(line)) !== null) {\n                    var value = match[1];\n                    if (value.charAt(0) === '\"' && value.charAt(value.length - 1) === '\"') {\n                        value = value.slice(1, -1);\n                    }\n                    result.push(value);\n                    \n                    if (match[2] === '') break;\n                }\n                \n                return result;\n            }\n\n            schemaData = schemaCSV.split('\\n').map(function(line) {\n                return parseCSVLine(line);\n            });\n\n            leftColData = leftColCSV.split('\\n').map(function(line) {\n                return parseCSVLine(line);\n            });\n\n            rightColData = rightColCSV.split('\\n').map(function(line) {\n                return parseCSVLine(line);\n            });\n            \n            \n            \n            leftProductNames = leftColData[0];\n            rightProductNames = rightColData[0];\n\n            \n            renderTable(0, 0);\n\n        })\n        .catch(function(error) {\n            console.error('ERROR:', error);\n        });\n        \n        function renderTable(selectedLeftIndex, selectedRightIndex) {\n            \n            var html = '<table>';\n            \n            html += '<tr>';\n            html += '<th class=\"schema-main-title\">Product Information<\/th>';\n            \n            html += '<td class=\"left-col-filter\">';\n            html += '<label for=\"left-product-select\">Left Product:<\/label>';\n            html += '<select id=\"left-product-select\" class=\"product-select\">';\n            html += '<option value=\"\">-- Select a Product --<\/option>';\n            for (var i = 0; i < leftProductNames.length; i++) {\n                if (leftProductNames[i]) {\n                    if (leftProductNames[i].trim()) {\n                        var selected = (i === selectedLeftIndex) ? ' selected' : '';\n                        html += '<option value=\"' + i + '\"' + selected + '>' + leftProductNames[i] + '<\/option>';\n                    }\n                }\n            }\n            html += '<\/select>';\n            html += '<\/td>';\n            \n            html += '<td class=\"right-col-filter\">';\n            html += '<label for=\"right-product-select\">Right Product:<\/label>';\n            html += '<select id=\"right-product-select\" class=\"product-select\">';\n            html += '<option value=\"\">-- Select a Product --<\/option>';\n            for (var i = 0; i < rightProductNames.length; i++) {\n                if (rightProductNames[i]) {\n                    if (rightProductNames[i].trim()) {\n                        var selected = (i === selectedRightIndex) ? ' selected' : '';\n                        html += '<option value=\"' + i + '\"' + selected + '>' + rightProductNames[i] + '<\/option>';\n                    }\n                }\n            }\n            html += '<\/select>';\n            html += '<\/td>';\n            \n            html += '<\/tr>';\n            \n            for (var i = 0; i < schemaData.length; i++) {\n                html += '<tr>';\n                \n                if (schemaData[i]) {\n                    if (schemaData[i][0]) {\n                        \/\/ Check if third column has \"Compatible with Pro-Roll\u2122\"\n                        var hasProRoll = schemaData[i][2] && schemaData[i][2].includes('Pro-Roll');\n                        console.log(schemaData[i][2])\n                        var proRollClass = hasProRoll ? ' pro-roll' : '';\n                        \n                        \/\/ Check if second column has a link\n                        var schemaText = schemaData[i][0];\n                        var link = schemaData[i][1];\n                        \n                        if (link && link.trim().startsWith('http')) {\n                            schemaText = '<a href=\"' + link.trim() + '\" target=\"_blank\">' + schemaText + '<\/a>';\n                        }\n                        \n                        html += '<th class=\"schema-details' + proRollClass + '\">' + schemaText + '<\/th>';\n                    } else {\n                        html += '<th class=\"schema-details\"><\/th>';\n                    }\n                } else {\n                    html += '<th class=\"schema-details\"><\/th>';\n                }\n                \n                var leftDataRow = i;\n                var leftValue = '';\n                if (selectedLeftIndex >= 0) {\n                    if (leftColData[leftDataRow]) {\n                        if (leftColData[leftDataRow][selectedLeftIndex] !== undefined) {\n                            leftValue = leftColData[leftDataRow][selectedLeftIndex];\n                        }\n                    }\n                }\n                html += '<td class=\"left-col-details\">' + leftValue + '<\/td>';\n                \n                var rightDataRow = i;\n                var rightValue = '';\n                if (selectedRightIndex >= 0) {\n                    if (rightColData[rightDataRow]) {\n                        if (rightColData[rightDataRow][selectedRightIndex] !== undefined) {\n                            rightValue = rightColData[rightDataRow][selectedRightIndex];\n                        }\n                    }\n                }\n                html += '<td class=\"right-col-details\">' + rightValue + '<\/td>';\n                \n                html += '<\/tr>';\n            }\n            \n            html += '<\/table>';\n            \n            container.innerHTML = html;\n            \n            var leftProductSelect = document.getElementById('left-product-select');\n            var rightProductSelect = document.getElementById('right-product-select');\n            \n            \n            if (leftProductSelect) {\n                leftProductSelect.addEventListener('change', function() {\n                    var leftIndex = parseInt(this.value);\n                    var rightIndex = parseInt(rightProductSelect.value);\n                    \n                    if (isNaN(leftIndex)) leftIndex = -1;\n                    if (isNaN(rightIndex)) rightIndex = -1;\n                    \n                    renderTable(leftIndex, rightIndex);\n                });\n            }\n            \n            if (rightProductSelect) {\n                rightProductSelect.addEventListener('change', function() {\n                    var leftIndex = parseInt(leftProductSelect.value);\n                    var rightIndex = parseInt(this.value);\n                    \n                    if (isNaN(leftIndex)) leftIndex = -1;\n                    if (isNaN(rightIndex)) rightIndex = -1;\n                    \n                    renderTable(leftIndex, rightIndex);\n                });\n            }\n            \n        }\n        \/\/]]>\n        <\/script>\n            <\/div>\n\n<\/div>\n\n\n   \n\n\n\t\t\t<\/div>\n\n\t\t\t\t\n\t<\/div>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-11914","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/onecpm.com\/id\/wp-json\/wp\/v2\/pages\/11914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/onecpm.com\/id\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/onecpm.com\/id\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/onecpm.com\/id\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/onecpm.com\/id\/wp-json\/wp\/v2\/comments?post=11914"}],"version-history":[{"count":7,"href":"https:\/\/onecpm.com\/id\/wp-json\/wp\/v2\/pages\/11914\/revisions"}],"predecessor-version":[{"id":11949,"href":"https:\/\/onecpm.com\/id\/wp-json\/wp\/v2\/pages\/11914\/revisions\/11949"}],"wp:attachment":[{"href":"https:\/\/onecpm.com\/id\/wp-json\/wp\/v2\/media?parent=11914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}