{"database": "fishbowl_archive", "table": "biscript", "rows": [[4, "_binary \u0001", "const UTIL = {\r\n    \"convertHex\": function(hex,opacity) {\r\n        hex = hex.replace('#','');\r\n        r = parseInt(hex.substring(0,2), 16);\r\n        g = parseInt(hex.substring(2,4), 16);\r\n        b = parseInt(hex.substring(4,6), 16);\r\n\r\n        const result = 'rgba('+r+','+g+','+b+','+opacity/100+')';\r\n        return result;\r\n    },\r\n    \r\n    \"dollarify\": function (amount, decimalCount = 2, decimal = \".\", thousands = \",\") {\r\n        decimalCount = Math.abs(decimalCount);\r\n        decimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n    \r\n        const negativeSign = amount < 0 ? \"-\" : \"\";\r\n    \r\n        let i = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString();\r\n        let j = (i.length > 3) ? i.length % 3 : 0;\r\n    \r\n        return '$' + negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : \"\");\r\n    },\r\n    \r\n    \"uomify\" : function(qty, uom){\r\n        return qty.toString() + \" \" + uom;\r\n    },\r\n    \r\n    \"convertDate\": function(date, isFromDate) {\r\n        const parsed = new Date(Date.parse(date));\r\n        if (isFromDate) {\r\n            return moment(parsed.setDate(parsed.getDate() + 1)).format('MM/DD/YYYY');\r\n        }\r\n        return moment(parsed.setDate(parsed.getDate())).format('MM/DD/YYYY');\r\n    },\r\n\r\n    \"makeTable\": function (query, headersArray, dontShow = []) {\r\n        var tr = \"<tr style=\\\"border-bottom:2pt solid black;\\\" >\";\r\n\r\n        // SET COLUMN HEADERS\r\n        for (var h = 0; h < headersArray.length; h++) {\r\n            tr += \"<td>\" + headersArray[h] + \"</td>\";\r\n        }\r\n\r\n        //ADD ROW DATA FROM QUERY\r\n        for (var i = 0; i < query.length; i++) {\r\n            // ADD NEW ROW\r\n            tr += \"<tr>\";\r\n            // PRINT COLUMN DATA FOR THIS ROW\r\n            for (var j in query[i]) {\r\n                // CHECK TO SEE IF IT IS IN DONT SHOW LIST\r\n                if (dontShow.includes(j)) {\r\n                    continue;\r\n                }\r\n                else {\r\n                    if (query[i].hasOwnProperty(j)) {\r\n                        tr += \"<td>\" + query[i][j] + \"</td>\";\r\n                    }\r\n                }\r\n            }\r\n            tr += \"</tr>\"\r\n        }\r\n        return tr;\r\n    },\r\n    \r\n    \"unflatten\" :  function(data) {\r\n        \"use strict\";\r\n        if (Object(data) !== data || Array.isArray(data)) {\r\n            return data;\r\n        }\r\n        \r\n        var result = {}, cur, prop, idx, last, temp;\r\n        for(var p in data) {\r\n            cur = result, prop = \"\", last = 0;\r\n            do {\r\n                idx = p.indexOf(\".\", last);\r\n                temp = p.substring(last, idx !== -1 ? idx : undefined);\r\n                cur = cur[prop] || (cur[prop] = (!isNaN(parseInt(temp)) ? [] : {}));\r\n                prop = temp;\r\n                last = idx + 1;\r\n            } while(idx >= 0);\r\n            cur[prop] = data[p];\r\n        }\r\n        return result[\"\"];\r\n    },\r\n    \r\n    \"flatten\" : function(data) {\r\n        var result = {};\r\n        function recurse (cur, prop) {\r\n            if (Object(cur) !== cur) {\r\n                result[prop] = cur;\r\n            } else if (Array.isArray(cur)) {\r\n                for(var i=0, l=cur.length; i<l; i++) {\r\n                    recurse(cur[i], prop ? prop+\".\"+i : \"\"+i);\r\n                }\r\n                if (l == 0) {\r\n                    result[prop] = [];\r\n                }\r\n            } else {\r\n                var isEmpty = true;\r\n                for (var p in cur) {\r\n                    isEmpty = false;\r\n                    recurse(cur[p], prop ? prop+\".\"+p : p);\r\n                }\r\n                if (isEmpty) {\r\n                    result[prop] = {};\r\n                }\r\n            }\r\n        }\r\n    },\r\n    \r\n    \"objContains\" : function (obj, key) {\r\n        var x;\r\n        for (x in obj) {\r\n            if (obj.hasOwnProperty(x) && x === key) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n}", "2023-01-05 17:28:06.927000", "Helper JavaScript functions for manipulating data", "Util", "", 20, 3, "fb-util", 0]], "columns": ["id", "active", "data", "dateLastModified", "description", "name", "note", "typeId", "fbVersion", "fbName", "published"], "primary_keys": ["id"], "primary_key_values": ["4"], "units": {}, "query_ms": 1.70532101765275}