{"id":49,"date":"2017-05-26T22:11:00","date_gmt":"2017-05-26T22:11:00","guid":{"rendered":"http:\/\/www.rienkstuut.nl\/?page_id=49"},"modified":"2024-04-14T11:55:05","modified_gmt":"2024-04-14T09:55:05","slug":"links","status":"publish","type":"page","link":"https:\/\/www.rienkstuut.nl\/?page_id=49","title":{"rendered":"Links"},"content":{"rendered":"<p>This list of links is developed, maintained and regularly expanded by the subcommittee for Documentation of the European Committee for Homeopathy (ECH). A sophisticated tool helps to find information about different fields of Homeopathy\u00a0 and also related CAM and General information. Every link is accompanied by a short description.\u00a0 Selections can be made by main category, subcategory, country\/region and by &#8220;free tex search&#8221; . Combining criteria narrows\u00a0 down your search.<\/p>\n<style type=\"text\/css\">\r\n\r\n#listtype,#name,#country,#category,#freetext,#orderby,#subcategory.inputbox {\r\n\r\n  display: inline-block;\r\n\r\n  margin-top: 0px;\r\n\r\n} \r\n\r\n.linklisttable {\r\n\r\n    display: flex;           display: -webkit-flex;\r\n\r\n    flex-direction: row;     -webkit-flex-direction: row;\r\n\r\n    flex-grow: 0;            -webkit-flex-grow: 0;\r\n\r\n    flex-wrap: wrap;         -webkit-flex-wrap: wrap;\r\n\r\n\twidth:100%;\r\n\r\n\tborder-width: 0px 0px 0px 0px;\r\n\r\n\tborder-spacing: 5px;\r\n\r\n\tborder-collapse: separate;\r\n\r\n} \r\n\r\n.linklisttable div {\r\n\r\n    flex-grow: 1;            -webkit-flex-grow: 1;\r\n\r\n    width: 50%;\r\n\r\n    border: 3px solid white;\r\n\r\n    padding: 3px 3px 3px 3px;\r\n\r\n    background-color: #f5f5f5;\r\n\r\n    box-sizing: border-box;\r\n\t\r\n\tposition: relative;\r\n\r\n} \r\n\r\n.pagination a {\r\n\r\n  color: black;\r\n\r\n  float: left;\r\n\r\n  padding: 8px 16px;\r\n\r\n  text-decoration: none;\r\n\r\n  transition: background-color .3s;\r\n\r\n  cursor:pointer;\r\n\r\n}\r\n\r\n\r\n\r\n.pagination a.active {\r\n\r\n  background-color: dodgerblue;\r\n\r\n  color: white;\r\n\r\n}\r\n\r\n\r\n\r\n.pagination a:hover:not(.active) {background-color: #ddd;}\r\n\r\n\r\n\r\n\r\n\r\n@media screen and (max-device-width: 640px) {\r\n\r\n\t.linklisttable div {\r\n\r\n\t\twidth:100%;\r\n\r\n\t} \r\n\r\n\t#freetext {\r\n\r\n\t\twidth:90%;\r\n\r\n\t}\r\n\r\n}\r\n\r\nselect {\r\n    background: -webkit-gradient(linear, left top, left bottom, from(#D4D4D4), to(#FFFFFF));\r\n    background: -moz-linear-gradient(top, #D4D4D4, #FFFFFF);\r\n}\r\n\r\n\r\n<\/style>\r\n\r\n<!-- This is a new jQuery front end for the existing Link Library plugin.  -->\r\n\r\n<p>\u00a0<\/p>\r\n\r\n<!-- It reads the RSS feed and then performs filtering and sorting using jQuery -->\r\n\r\n<p><script type=\"text\/javascript\">\r\n\r\n\t\tvar currentPage = 1;\r\n\r\n\t\tvar itemsPerPage = 10;\r\n\r\n        (function (jQuery, window) {\r\n\r\n            jQuery.fn.replaceOptions = function (options) {\r\n\r\n                var self, $option;\r\n\r\n                this.empty();\r\n\r\n                self = this;\r\n\r\n                jQuery.each(options, function (index, option) {\r\n\r\n                    $option = jQuery(\"<option><\/option>\")\r\n\r\n                      .attr(\"value\", option.value)\r\n\r\n                      .text(option.text);\r\n\r\n                    self.append($option);\r\n\r\n                });\r\n\r\n            };\r\n\r\n        })(jQuery, window);\r\n\r\n        var _xml;\r\n\r\n        jQuery(function () {\r\n\r\n            jQuery(\"#listtype\").change(function () {\r\n\r\n                GetLinkFeed(true);\r\n\r\n            });\r\n\r\n\r\n\r\n            jQuery(\"#category,#subcategory,#country,#orderby\").change(function () {\r\n\t\t\t\t\r\n\t\t\t\t\/\/ Reset page\r\n\t\t\t\tcurrentPage = 1;\r\n                FilterLinks(true);\r\n\r\n            });\r\n\r\n\r\n\r\n            jQuery(\"#freetext\").keyup(function () {\r\n\r\n                FilterLinks(true);\r\n\r\n            });\r\n\r\n\t\t\t\r\n\r\n            \/*\r\n\r\n            .map(function () {\r\n\r\n                    return {\r\n\r\n                        text: jQuery(this),\r\n\r\n                        value: jQuery(this)\r\n\r\n                    };\r\n\r\n                })\r\n\r\n            *\/\r\n\r\n            \r\n\r\n\r\n\r\n            htmlData = jQuery('#resultcache').val();\r\n\r\n\r\n\r\n            if(htmlData) {\r\n\r\n                  GetLinkFeed(false);\r\n\r\n                  jQuery(\"#result\").html(htmlData);\r\n\r\n            } else {\r\n\r\n                   GetLinkFeed(true);\r\n\r\n             }\r\n\r\n       });\r\n\r\n\r\n\r\n      function unique(array) {\r\n\r\n            return jQuery.grep(array, function (el, index) {\r\n\r\n                return index == jQuery.inArray(el, array);\r\n\r\n            });\r\n\r\n        }\r\n\r\n\r\n\r\n\r\n\r\n        var countrymap = {\r\n\r\n            \"belgian.gif\": \"Belgium\",\r\n\r\n            \"australia_flag.gif\": \"Australia\",\r\n\r\n            \"\": \"Other\",\r\n\r\n            \"icon-globe.jpg\": \"Global\",\r\n\r\n            \"NL_sm.png\": \"Netherlands\",\r\n\r\n            \"gb-mini.png\": \"United Kingdom\",\r\n\r\n            \"flag_us.gif\": \"United States\",\r\n\r\n            \"slovakflag.png\": \"Slovakia\",\r\n\r\n            \"flag-greece.png\": \"Greece\",\r\n\r\n            \"Bulgaria.gif\": \"Bulgaria\",\r\n\r\n            \"de.gif\": \"Germany\",\r\n\r\n            \"intl_hub_flags_pl.jpg\": \"Poland\",\r\n\r\n            \"norway_flag.jpg\": \"Norway\",\r\n\r\n            \"flag-canada-flagge-rechteckig-10x15.gif\": \"Canada\",\r\n\r\n            \"fr-mini.png\": \"France\",\r\n\r\n            \"flag-swiss.gif.jpg\": \"Switzerland\",\r\n\r\n            \"Romania.gif\": \"Romania\",\r\n\r\n            \"italy.png\": \"Italy\",\r\n\r\n            \"flags_pt.gif\": \"Portugal\",\r\n\r\n            \"flag.gif\": \"Slovenia\",\r\n\r\n            \"flag_icon_spain.gif\": \"Spain\",\r\n\r\n            \"Austrian-Flag-15x10.jpg\": \"Austria\",\r\n\r\n            \"flag-armenia-flagge-button-10x15.gif\": \"Armenia\",\r\n\r\n            \"huns.gif\": \"Hungary\",\r\n\r\n            \"flag-icon-1.jpg\": \"India\",\r\n\r\n            \"flag-brazil-flagge-rechteckig-10x15.gif\": \"Brazil\",\r\n\r\n            \"flag_eu.gif\": \"Europe\",\r\n\r\n            \"Flag_of_China.png\": \"China\",\r\n\r\n            \"flag-icon-2.png\": \"Australia\",\r\n\r\n            \"iceland_flag-icon.png\": \"Iceland\",\r\n\r\n            \"Latvia.gif\": \"Latvia\",\r\n\r\n            \"turkey-flag.png\": \"Turkey\",\r\n\r\n            \"Czech-Republic.gif\": \"Czech Republic\"\r\n\r\n        };\r\n\r\n\r\n\r\n\r\n\r\n        function GetLinkFeed(filterlinks) {\r\n\r\n            jQuery(\"#category\").replaceOptions([{text:'Loading...', value:''}]);\r\n\r\n            jQuery(\"#country\").replaceOptions([{text:'Loading...', value:''}]);\r\n\r\n            jQuery.get(\"?feed=linklibraryfeed\", function (xml) {  \/\/ \/feed\/linklibraryfeed?settingsset=1  \/\/ \r\n\r\n\r\n\r\n                _xml = jQuery(xml).find(\"item\");\r\n\r\n                \/\/.filter(function (entry) {\r\n\r\n                \/\/    var link = jQuery(entry).find(\"title\");\r\n\r\n                \/\/    console.log(link);\r\n\r\n                \/\/    if (flags[link]) {\r\n\r\n                \/\/        return false;\r\n\r\n                \/\/    }\r\n\r\n                \/\/    flags[link] = true;\r\n\r\n                \/\/    return true;\r\n\r\n                \/\/});\r\n\r\n\r\n\r\n                var categories = unique(jQuery(_xml)\r\n\r\n                        .find(\"category\")\r\n\r\n                        .map(function () {\r\n\r\n                            return jQuery.trim(jQuery(this).text()).split(\",\");\r\n\r\n                        })\r\n\r\n                        .map(function () {\r\n\r\n                            return jQuery.trim(this);\r\n\r\n                        })\r\n\r\n                        .get())\r\n\r\n                    .map(function (value) {\r\n\r\n                        return {\r\n\r\n                            text: value.replace(\/^\\d\\. \/g, \"\"),\r\n\r\n                            value: value\r\n\r\n                        };\r\n\r\n                    })\r\n\r\n                    .sort(function (a, b) {\r\n\r\n                        return a.text.localeCompare(b.text);\r\n\r\n                    });\r\n\r\n                categories.unshift({ text: 'All', value: 'All' });\r\n\r\n                jQuery(\"#category\").replaceOptions(jQuery.grep( categories, function( n, i ) { return n.value === \"All\" || n.value.indexOf(\"1.\") >= 0; }));\r\n\r\n                jQuery(\"#subcategory\").replaceOptions(jQuery.grep( categories, function( n, i ) { return n.value === \"All\" || n.value.indexOf(\"2.\") >= 0; }));\r\n\r\n                jQuery(\"#country\").replaceOptions(jQuery.grep( categories, function( n, i ) { return n.value === \"All\" || n.value.indexOf(\"3.\") >= 0; }));\r\n\r\n\r\n\r\n                if (filterlinks) FilterLinks();\r\n\r\n\r\n\r\n\r\n\r\n                if (jQuery('#categorycache').val()) jQuery('#category').val(jQuery('#categorycache').val());\r\n\r\n                if (jQuery('#countrycache').val())                   \r\n\r\njQuery('#country').val(jQuery('#countrycache').val());\r\n\r\n            });\r\n\r\n        }\r\n\r\n\r\n\r\n        function FilterLinks() {\r\n\r\n\r\n\r\n            var flags = {};\r\n\r\n\r\n\r\n            var category = jQuery(\"#category option:selected\").val();\r\n\r\n\t\t    var regexCategory = new RegExp(\"(, |^)\" + category);\r\n\r\n            jQuery('#categorycache').val(category);\r\n\r\n            var subcategory = jQuery(\"#subcategory option:selected\").val();\r\n\r\n\t\t    var regexSubcategory = new RegExp(\"(, |^)\" + subcategory);\r\n\r\n            jQuery('#subcategorycache').val(subcategory);\r\n\r\n            var country = jQuery(\"#country option:selected\").val();\r\n\r\n\t\t    var regexCountry = new RegExp(\"(, |^)\" + country);\r\n\r\n            jQuery('#countrycache').val(country);\r\n\r\n            var freetext = jQuery(\"#freetext\").val();\r\n\r\n            var orderby = jQuery(\"#orderby\").val();\r\n\r\n            var items = jQuery(_xml).filter(function (index) {\r\n\r\n                return jQuery(this).find(\"category\").text().search(regexCategory) >= 0 || (category === 'All');\r\n\r\n            }).filter(function (index) {\r\n\r\n                return jQuery(this).find(\"category\").text().search(regexSubcategory) >= 0 || (subcategory === 'All');\r\n\r\n            }).filter(function (index) {\r\n\r\n                return jQuery(this).find(\"category\").text().search(regexCountry) >= 0 || (country === 'All');\r\n\r\n            }).filter(function (index) {\r\n\r\n                return jQuery(this).find(\"title\").text().toLowerCase().indexOf(freetext.toLowerCase()) >= 0 || (freetext === '');\r\n\r\n            }).sort(function (a, b) {\r\n\r\n                switch (orderby) {\r\n\r\n                    case \"name\":\r\n\r\n                        return jQuery(a).find(\"title\").text().localeCompare(jQuery(b).find(\"title\").text());\r\n\r\n                    case \"country\":\r\n\r\n                        return jQuery(a).find(\"category\").text().replace(\/.*(3\\.[^,$]*).*\/, \"$1\").localeCompare(jQuery(b).find(\"category\").text().replace(\/.*(3\\.[^,$]*).*\/, \"$1\"));\r\n\r\n                    case \"category\":\r\n\r\n                        return jQuery(a).find(\"category\").text().replace(\/.*(1\\.[^,$]*).*\/, \"$1\").localeCompare(jQuery(b).find(\"category\").text().replace(\/.*(1\\.[^,$]*).*\/, \"$1\"));\r\n\r\n                    case \"subcategory\":\r\n\r\n                        return jQuery(a).find(\"category\").text().replace(\/.*(2\\.[^,$]*).*\/, \"$1\").localeCompare(jQuery(b).find(\"category\").text().replace(\/.*(2\\.[^,$]*).*\/, \"$1\"));\r\n\r\n                }\r\n\r\n                \r\n\r\n            });\r\n\r\n              var html = \"\";\r\n\r\n            if (items.length === 0) {\r\n\r\n                html = \"No search results.\";\r\n\r\n            } else {\r\n\t\t\t\thtml += \"<p>Results: \" + items.length + \"<\/p>\";\r\n\t\t\t\t\r\n                html += \"<div class='linklisttable'>\";\r\n\r\n                jQuery.each(items.slice((currentPage - 1) * itemsPerPage, currentPage * itemsPerPage),\r\n\r\n                    function(i, val) {\r\n\r\n                        var link = jQuery(val).find(\"link\").text();\r\n\r\n                       \/\/ if (!flags[link]) {\r\n\r\n                            html += \"<div><a href='\" + link + \"'>\" + jQuery(val).find(\"title\").text() + \"<\/a><\/div>\";\r\n\r\n                            html += \"<div>\" + jQuery(val).find(\"description\").text() + \r\n\t\t\t\t\t\t\t\t\"<div style='position:absolute;top:0px;right:-15%;background-color: #f5f5f5;height:100%;border:0;border-left:6px solid white;padding:0;width:15%'>\" + jQuery(val).find(\"category\").text().replace(\/.*(3\\.[^,$]*).*\/, \"$1\").replace(\"3. \", \"\") + \"<\/div>\"\r\n\t\t\t\t\t\t\t\t+ \"<\/div>\";\r\n\t\t\t\t\t\r\n                            flags[link] = true;\r\n\r\n                        \/\/}\r\n\r\n                    });\r\n\r\n                html += \"<\/div><br \/><div class='pagination'>\";\r\n\r\n            }\r\n\r\n\t\t\t\r\n\r\n\t\t\tvar page = 1;\r\n\r\n\t\t\tfor (i = 0; i < items.length; i += itemsPerPage) {\r\n\r\n\t\t\t\thtml += \"<a\";\r\n\r\n\t\t\t\tif (currentPage === page) {html += \" class='active'\"};\r\n\r\n\t\t\t\thtml += \" data-page='\" + page + \"'>\" + page + \"<\/a> \";\r\n\r\n\t\t\t\tpage ++;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\r\n\r\n\t\t\thtml += \"<\/div>\"\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n            jQuery(\"#result\").html(html);\r\n\r\n            jQuery('#resultcache').val(html);\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\tjQuery(\".pagination a\").on(\"click\", function() {\r\n\r\n\t\t\t\tcurrentPage = jQuery(this).data(\"page\");\r\n\r\n                FilterLinks(true);\r\n\r\n\t\t\t\tjQuery('html,body').scrollTop(0);\r\n\r\n\t\t\t});\r\n\r\n\r\n\r\n        }\r\n\r\n\r\n\r\n    <\/script> <\/p>\r\n\r\n\r\n<div>\r\n<div style=\"display: inline-block;white-space: nowrap; margin-right:8px;\"><label>Category<\/label><br\/><select id=\"category\">\r\n\r\n<option>Loading...<\/option>\r\n\r\n<\/select><\/div>\r\n\r\n<div style=\"display: inline-block;white-space: nowrap; margin-right:8px;\"><label>Subcategory<\/label><br\/><select id=\"subcategory\">\r\n\r\n<option>Loading...<\/option>\r\n\r\n<\/select><\/div>\r\n\r\n<div style=\"display: inline-block;white-space: nowrap; margin-right:8px;\"><label>Country<\/label><br\/><select id=\"country\" style=\"width: 80px;\">\r\n\r\n<option>Loading...<\/option>\r\n\r\n<\/select><\/div>\r\n\r\n<div style=\"display: inline-block;white-space: nowrap; margin-right:8px;\"><label>Free Text Search<\/label><br\/><input id=\"freetext\" type=\"text\" size=\"10\"\/><\/div>\r\n\r\n<div style=\"float: right;\"><label>Order by<\/label><br\/><select id=\"orderby\">\r\n\r\n<option value=\"name\">Name<\/option>\r\n\r\n<option value=\"category\">Category<\/option>\r\n\r\n<option value=\"subcategory\">Subategory<\/option>\r\n\r\n<option value=\"country\">Country<\/option>\r\n\r\n<\/select><\/div>\r\n<\/div>\r\n<p>\u00a0<\/p>\r\n\r\n<div id=\"result\" class=\"result\">\u00a0<\/div>\r\n\r\n<input type=\"hidden\" id=\"resultcache\" value=\"\">\r\n\r\n<input type=\"hidden\" id=\"categorycache\" value=\"\">\r\n\r\n<input type=\"hidden\" id=\"subcategorycache\" value=\"\">\r\n\r\n<input type=\"hidden\" id=\"countrycache\" value=\"\">\n\n\n<style>\r\n    th {\r\n        text-align: left;\r\n        vertical-align: top;\r\n    }\r\n    td {\r\n        vertical-align: top;\r\n    }      \r\n<\/style>\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/4.7.0\/css\/font-awesome.min.css\">    \r\n<script>\r\n    function capitalizeFirstLetter(str) {\r\n        return str.charAt(0).toUpperCase() + str.slice(1);\r\n    }\r\n    function removeUnderscores(str) {\r\n        return str.replaceAll(\"_\", \" \");\r\n    }\r\n    function updateTable() {\r\n        const headers = JSON.parse(document.getElementById('data-for-viewer').textContent)[0];\r\n        let filters = '[';\r\n        let sorts = '[';\r\n        for (header in headers) {\r\n            columnInfo = getColumnInfo(header);\r\n            if (columnInfo && columnInfo.show) {  \r\n                filters += '[\"' + header + '\", \"' + columnInfo.filterType + '\", \"' + document.getElementById('input_' + header).value + '\", \"' + columnInfo.multiValueSeparator + '\"],';\r\n                if (document.getElementById('sort_' + header) && document.getElementById('sort_' + header).getAttribute('data-sort') !== '0') {\r\n                    sorts += '{\"field\":\"' + header + '\",\"dir\":' + document.getElementById('sort_' + header).getAttribute('data-sort') + '},';\r\n                }\r\n            }\r\n        }\r\n        filters = filters.length > 1 ? JSON.parse(filters.slice(0,-1) + ']') : [];\r\n        sorts = sorts.length > 1 ? JSON.parse(sorts.slice(0,-1) + ']') : [];\r\n        document.getElementById('viewbody').replaceWith(createTableBody(sortTable(\r\n            filter(JSON.parse(document.getElementById('data-for-viewer').textContent),\r\n            filters), sorts),Object.keys(headers)));    \r\n    }\r\n    function createFilterField(filterId, columnInfo) {\r\n        const th = document.createElement(\"th\");\r\n        let input;\r\n        if (columnInfo.filterType === \"contains\") {\r\n            input = document.createElement(\"input\");\r\n            input.setAttribute(\"style\", \"height: 1.5em; font-size: 0.7rem;\");\r\n            input.setAttribute(\"type\", \"text\");\r\n            input.setAttribute(\"id\", \"input_\" + filterId);\r\n            input.setAttribute(\"onkeyup\", \"updateTable()\");\r\n        }\r\n        if (columnInfo.filterType === \"eq\") {\r\n            const data = JSON.parse(document.getElementById('data-for-viewer').textContent);\r\n            let list = [];\r\n            data.forEach((item, index) => {\r\n                let subList = [];\r\n                if (columnInfo.multiValueSeparator !== \"\") {\r\n                    subList = item[filterId].split(\";\");                        \r\n                } else {\r\n                    subList.push(item[filterId]);\r\n                }\r\n                list = list.concat(subList);\r\n            });\r\n            const unique = [...new Set(list.filter(item => item))].sort();\r\n            \/\/ const unique = [...new Set(data.map(item => item[filterId].split(\";\")))].sort();\r\n            input = document.createElement(\"select\");\r\n            input.setAttribute(\"id\", \"input_\" + filterId);\r\n            input.setAttribute(\"onchange\", \"updateTable()\");\r\n            input.setAttribute(\"style\", \"height: 1.5em; font-size: 0.7rem;\");\r\n            let option = document.createElement(\"option\");\r\n            option.setAttribute(\"value\", '');\r\n            input.appendChild(option);\r\n            for (let i = 0; i < unique.length; i++) {\r\n                option = document.createElement(\"option\");\r\n                option.setAttribute(\"value\", unique[i]);\r\n                option.innerText = unique[i];\r\n                input.appendChild(option);\r\n            }\r\n        }\r\n        th.innerHTML = removeUnderscores(capitalizeFirstLetter(filterId)) + \"<br\/>\";\r\n        th.appendChild(input);                \r\n        return th;\r\n    }\r\n    function createTableBody(data, headers) {\r\n        const tbody = document.createElement(\"tbody\");\r\n        tbody.setAttribute(\"id\", \"viewbody\");\r\n        for (rowData of data) {\r\n            const row = document.createElement(\"tr\");\r\n            for (header of headers) {\r\n                columnInfo = getColumnInfo(header);\r\n                if (columnInfo && columnInfo.show) {                    \r\n                    const td = document.createElement(\"td\");\r\n                    td.textContent = rowData[header];\r\n                    row.appendChild(td);\r\n                }\r\n            }\r\n            tbody.appendChild(row);\r\n        }\r\n        return tbody;\r\n    }\r\n    function getColumnInfo(columnName) {\r\n        const columnInfo = JSON.parse(document.getElementById('headers-for-viewer').textContent);\r\n        for (let column of columnInfo) {\r\n            if (column.key === columnName) {\r\n                return column;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function createTable(data) {\r\n        if (data.length === 0) {\r\n            const p = document.createElement(\"p\");\r\n            p.textContent = \"No data found\";\r\n            return p;\r\n        }\r\n        const headers = Object.keys(data[0]);\r\n        let table = document.createElement(\"table\");\r\n        let tableStyle = document.createAttribute(\"style\");\r\n        tableStyle.value = \"table-layout: fixed;border-collapse: separate; border-spacing: 0;text-align: left;position: relative; font-size: x-small;\";\r\n        table.setAttributeNode(tableStyle);\r\n        let thead = document.createElement(\"thead\");\r\n        let theadStyle = document.createAttribute(\"style\");\r\n        theadStyle.value = \"position: sticky;top: 0;background: var(--global--color-background, white);\";\r\n        thead.setAttributeNode(theadStyle);           \r\n        let row = document.createElement(\"tr\");\r\n        for (let header of headers) {\r\n            columnInfo = getColumnInfo(header);\r\n            if (columnInfo && columnInfo.show) {\r\n                const th = document.createElement(\"th\");\r\n                th.textContent = removeUnderscores(capitalizeFirstLetter(header));\r\n                if (columnInfo.showSort) {\r\n                    th.innerHTML += '<i id=\"sort_' + header + '\" data-sort=\"0\" class=\"fa fa-sort\" style=\"float: right\" onclick=\"let currentSort = this.getAttribute(\\'data-sort\\'); this.setAttribute(\\'data-sort\\',currentSort ? (currentSort == 1 ? -1 : (currentSort == 0 ? 1 : 0)) : 1); currentSort = this.getAttribute(\\'data-sort\\'); if (currentSort == 1) this.setAttribute(\\'class\\', \\'fa fa-sort-up\\'); if (currentSort == -1) this.setAttribute(\\'class\\', \\'fa fa-sort-down\\');  if (currentSort == 0) this.setAttribute(\\'class\\', \\'fa fa-sort\\');updateTable();\"><\/i>';\r\n                }\r\n                row.appendChild(th);\r\n            }\r\n        }\r\n        thead.appendChild(row);\r\n        row = document.createElement(\"tr\");\r\n        for (let header of headers) {\r\n            columnInfo = getColumnInfo(header);\r\n            if (columnInfo && columnInfo.showFilter) {\r\n                const th = createFilterField(header, columnInfo);\r\n                row.appendChild(th);\r\n            }\r\n        }\r\n        thead.appendChild(row);\r\n        table.appendChild(thead);\r\n        table.appendChild(createTableBody(data, headers));\r\n        return table;\r\n    }\r\n    function filter(data, filters) {\r\n        if (filters && filters.length > 0) {\r\n            return data.filter(function (val) {\r\n                for (let i = 0; i < filters.length; i++) {\r\n                    switch (filters[i][1]) {\r\n                        case \"eq\":\r\n                            if (filters[i][2].toLowerCase() !== \"\") {\r\n                                let splitted = \"\";\r\n                                if (filters[i][3] !== \"\") {\r\n                                    splitted = String(val[filters[i][0]]).toLowerCase().split(filters[i][3]);\r\n                                    const total = splitted.length;\r\n                                    let counter = 0;\r\n                                    for (let split in splitted) {\r\n                                        if (splitted[split] !== filters[i][2].toLowerCase()) {\r\n                                            counter++;\r\n                                        }\r\n                                    }\r\n                                    if (counter === total) {\r\n                                        return false;\r\n                                    }\r\n                                } else {\r\n                                    splitted = String(val[filters[i][0]]).toLowerCase();\r\n                                    if (splitted !== filters[i][2].toLowerCase()) {\r\n                                        return false;\r\n                                    }\r\n                                }\r\n\r\n                            }\r\n                            break;\r\n                        case \"contains\":\r\n                            if (!String(val[filters[i][0]]).toLowerCase().includes(filters[i][2].toLowerCase())) {\r\n                                return false;\r\n                            }\r\n                            break;\r\n                    }\r\n                }\r\n                return true;\r\n            });\r\n        } else {\r\n            return data;\r\n        }\r\n    }\r\n    function sortTable(arr, fieldNames) {\r\n        arr.sort((a, b) => {\r\n          for (const field of fieldNames) {\r\n            if (a[field.field] > b[field.field]) return 1 * field.dir;\r\n            if (a[field.field] < b[field.field]) return -1 * field.dir;\r\n          }\r\n        });\r\n        return arr;\r\n      }\r\n<\/script>\r\n    <div id=\"view\" style=\"height: calc(100vh - 200px);overflow: auto;\"><\/div>\r\n    <script id=\"data-for-viewer\" type=\"application\/json\"><\/script>\r\n    <script id=\"headers-for-viewer\">[{\"key\":\"ID-Nr\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Autor\",\"show\":true,\"showFilter\":true,\"showSort\":true,\"filterType\":\"eq\",\"multiValueSeparator\":\"\"},{\"key\":\"beteiligte Person\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Titel\",\"show\":true,\"showFilter\":true,\"showSort\":true,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Titelzusatz\",\"show\":true,\"showFilter\":true,\"showSort\":true,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Verlag\",\"show\":false,\"showFilter\":false,\"showSort\":true,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Publikationstyp\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Ort\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Seiten\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Standort\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Jahr\",\"show\":true,\"showFilter\":true,\"showSort\":true,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Bemerkungen\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Dissech_Freie Schlagworte\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Erfassungsdatum\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Dissech_Sprache\",\"show\":true,\"showFilter\":true,\"showSort\":true,\"filterType\":\"eq\",\"multiValueSeparator\":\"\"},{\"key\":\"Signatur\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"ID\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Entry Terms\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Key Terms\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Minor Terms\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Language\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Deskriptoren\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Diss_dhu2_Freie Schlagworte\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Pr\\u00e4parat\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"Diss_dhu2_Sprache\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"},{\"key\":\"standort2\",\"show\":false,\"showFilter\":false,\"showSort\":false,\"filterType\":\"contains\",\"multiValueSeparator\":\"\"}]<\/script>\r\n    <script>\r\n        \/\/ json = filter(json, [['place_of_publication','contains','Universit\u00e9']]);\r\n        fetch('https:\/\/www.rienkstuut.nl\/wp-content\/uploads\/2024\/04\/list.csv')\r\n.then((response) => response.json())\r\n.then((json) => { document.getElementById('data-for-viewer').textContent = JSON.stringify(json); document.getElementById('view').appendChild(createTable(json)); });\r\n    <\/script>\n","protected":false},"excerpt":{"rendered":"<p>This list of links is developed, maintained and regularly expanded by the subcommittee for Documentation of the European Committee for Homeopathy (ECH). A sophisticated tool helps to find information about different fields of Homeopathy\u00a0 and also related CAM and General information. Every link is accompanied by a short description.\u00a0 Selections can be made by main &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.rienkstuut.nl\/?page_id=49\" class=\"more-link\">Lees verder <span class=\"screen-reader-text\">&#8220;Links&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-49","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.rienkstuut.nl\/index.php?rest_route=\/wp\/v2\/pages\/49","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rienkstuut.nl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.rienkstuut.nl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.rienkstuut.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rienkstuut.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=49"}],"version-history":[{"count":11,"href":"https:\/\/www.rienkstuut.nl\/index.php?rest_route=\/wp\/v2\/pages\/49\/revisions"}],"predecessor-version":[{"id":5214,"href":"https:\/\/www.rienkstuut.nl\/index.php?rest_route=\/wp\/v2\/pages\/49\/revisions\/5214"}],"wp:attachment":[{"href":"https:\/\/www.rienkstuut.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=49"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}