/* future reference */ /* function isValidDate(d) { if ( Object.prototype.toString.call(d) !== "[object Date]" ) return false; return !isNaN(d.getTime()); } function _convertOperand(operand, data_type) { switch (data_type) { case 'numeric_int': operand = operand.replace(/,/g, '').replace(/\./g, ''); operand = parseInt(operand.replace(/[^\d.-]/g, '')); if (isNaN(operand)) return false; else return operand; break; case 'numeric_period': operand = operand.replace(/,/g, ''); operand = parseFloat(operand.replace(/[^\d.-]/g, '')); if (isNaN(operand)) return false; else return operand; break; case 'numeric_comma': operand = operand.replace(/\./g, ''); operand = operand.replace(',', '.'); operand = parseFloat(operand.replace(/[^\d.-]/g, '')); if (isNaN(operand)) return false; else return operand; break; case 'date_auto': operand = Date.parse(operand); if (isNaN(operand)) return false; else return operand; break; case 'date_ymd': var parts = operand.split(/[-.\/]+/) if (parts.length == 3) { // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]]) var operand = new Date(parts[0], parts[1]-1, parts[2]); // Note: months are 0-based if (isValidDate(operand)) return operand.getTime(); else return false; } else return false; break; case 'date_ydm': var parts = operand.split(/[-.\/]+/) if (parts.length == 3) { // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]]) var operand = new Date(parts[0], parts[2]-1, parts[1]); // Note: months are 0-based if (isValidDate(operand)) return operand.getTime(); else return false; } else return false; break; case 'date_dmy': var parts = operand.split(/[-.\/]+/) if (parts.length == 3) { // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]]) var operand = new Date(parts[2], parts[1]-1, parts[0]); // Note: months are 0-based if (isValidDate(operand)) return operand.getTime(); else return false; } else return false; break; case 'date_mdy': var parts = operand.split(/[-.\/]+/) if (parts.length == 3) { // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]]) var operand = new Date(parts[2], parts[0]-1, parts[1]); // Note: months are 0-based if (isValidDate(operand)) return operand.getTime(); else return false; } else return false; break; } } function _compareOperands(operation, operand_1, operand_2, data_type, entry) { if (entry === false) return false; switch (operation) { case 'greater': if (operand_1 === false) return true; if (entry >= operand_1) return true; else return false; break; case 'less': if (operand_1 === false) return true; if (entry <= operand_1) return true; else return false; break; case 'equal': if (operand_1 === false) return true; if (entry == operand_1) return true; else return false; break; case 'between': if ((operand_1 === false)&&(operand_2 === false)) { return true; } else if (operand_1 === false) { if (entry <= operand_2) return true; else return false; } else if (operand_2 === false) { if (entry >= operand_1) return true; else return false; } else { if ((entry >= operand_1)&&(entry <= operand_2)) return true; else return false; } break; } } function Ha ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive ) { if ( sInput === "" ) { return; } if ((bRegex !== true)&&(bRegex !== false)) { sCompare = true; data_type = bRegex; } else { sCompare = false; } if ( sCompare ) { var iIndexCorrector = 0; var matches, operation = false, operand_1 = null, operand_2 = null, entry = null; var regex_greater = />(.+)/g; var regex_less = /<(.+)/g; var regex_between = /(.+)&(.+)/gi; matches = regex_greater.exec(sInput); if (matches) { operation = 'greater'; operand_1 = _convertOperand(matches[1].replace(/ /g,''), data_type); operand_2 = null; } matches = regex_less.exec(sInput); if (matches) { operation = 'less'; operand_1 = _convertOperand(matches[1].replace(/ /g,''), data_type); operand_2 = null; } matches = regex_between.exec(sInput); if (matches) { operation = 'between'; operand_1 = _convertOperand(matches[1].replace(/ /g,''), data_type); operand_2 = _convertOperand(matches[2].replace(/ /g,''), data_type); } if (operation === false) { operation = 'equal'; operand_1 = _convertOperand(sInput.replace(/ /g,''), data_type); } if (operation) { for ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- ) { var sData = Ja( v( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ), oSettings.aoColumns[iColumn].sType ); if (sData === '') entry = false; else entry = _convertOperand(sData, data_type); if ( (entry === false) || ( ! _compareOperands(operation, operand_1, operand_2, data_type, entry ) ) ) { oSettings.aiDisplay.splice( i, 1 ); iIndexCorrector++; } } } return; } var iIndexCorrector = 0; var rpSearch = ma( sInput, bRegex, bSmart, bCaseInsensitive, sCompare ); for ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- ) { var sData = Ja( v( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ), oSettings.aoColumns[iColumn].sType ); if ( ! rpSearch.test( sData ) ) { oSettings.aiDisplay.splice( i, 1 ); iIndexCorrector++; } } } function updatePlotByHeaderSelection(plot_id, header_id, data ) { var plot1 = graph_plots[plot_id]; var i, num_of_series = plot1.series.length; if (data) { var new_data = []; for (i=0;i< num_of_series;i++) { plot1.series[i].data.push(data[i]); new_data[i] = plot1.series[i].data.push(data[i]); } plot1.resetAxesScale(); plot1.replot({graph_data: new_data}); } else { for (i=0;i< num_of_series;i++) { plot1.series[i].data.splice(header_id,1); } plot1.resetAxesScale(); plot1.replot(); } return; } function datatablesFixVerticalHeaderAlignment(table_id) { var dt_scroller = jtQuery("#" + table_id).closest(".dataTables_scroll"); if (dt_scroller) { var scroll_header = dt_scroller.find(".dataTables_scrollHead"); var scroll_innerheader = dt_scroller.find(".dataTables_scrollHeadInner"); var scroll_body = dt_scroller.find(".dataTables_scrollBody"); var header_table = dt_scroller.find(".dataTables_scrollHeadInner > table.dataTable"); var data_table = dt_scroller.find(".dataTables_scrollBody > table.dataTable"); var table_width = scroll_body.innerWidth() + "px"; var helperDiv = jtQuery('
'); scroll_body.append(helperDiv); table_width = helperDiv.width(); helperDiv.remove(); header_table.css("width", table_width); data_table.css("width", table_width); scroll_innerheader.css("width", table_width); header_table.css("table-layout", "fixed"); data_table.css("table-layout", "fixed"); var header_widths = []; data_table.find("tr").each(function() { var tr = jtQuery(this); tr.find("td").each(function(i) { td_width = jtQuery(this).width(); td_width = getComputedStyle(this, null).width; if (!header_widths[i]) header_widths[i] = td_width; else if (header_widths[i] < td_width) header_widths[i] = td_width; }); }); data_table.find("tr").each(function() { var tr = jtQuery(this); tr.find("td").each(function(i) { if (header_widths[i]) jtQuery(this).css("width", header_widths[i] + "px"); }); }); header_table.find("tr").each(function() { var tr = jtQuery(this); tr.find("td").each(function(i) { if (header_widths[i]) jtQuery(this).css("width", header_widths[i] + "px"); }); }); } } function datatablesFixVerticalScroll(table_id) { var dt_scroller = jtQuery("#" + table_id).closest(".dataTables_scroll"); if (dt_scroller) { var top_scroll = dt_scroller.find(".dataTables_scrollHead"); var bottom_scroll = dt_scroller.find(".dataTables_scrollBody"); var sync_bound = bottom_scroll.hasClass( "sync_bound" ); if (top_scroll && bottom_scroll) { if (!sync_bound) { bottom_scroll.on("scroll", function () { top_scroll.scrollLeft(jtQuery(this).scrollLeft()); }); bottom_scroll.addClass("sync_bound"); } } setInterval(function() { datatablesFixVerticalHeaderAlignment(table_id)}, 650); } } function datatablesVerticalScrollFix(table_id) { var dt_scroller = jtQuery("#" + table_id).closest(".dataTables_scroll"); if (dt_scroller) { var scroll_header = dt_scroller.find(".dataTables_scrollHeadInner"); var scroll_body = dt_scroller.find(".dataTables_scrollBody"); var header_table = dt_scroller.find(".dataTables_scrollHeadInner > table.dataTable"); var data_table = dt_scroller.find(".dataTables_scrollBody > table.dataTable"); var td_width, inner_width = scroll_body.innerWidth()+"px", outer_width = scroll_header.outerWidth()+"px", table_width=scroll_header.width()+"px" header_table.css("width", table_width); data_table.css("width", table_width); var header_widths = []; data_table.find("tr").each(function() { var tr = jtQuery(this); tr.find("td").each(function(i) { td_width = jtQuery(this).innerWidth(); if (!header_widths[i]) header_widths[i] = td_width; else if (header_widths[i] < td_width) header_widths[i] = td_width; }); }); data_table.find("tr").each(function() { var tr = jtQuery(this); tr.find("td").each(function(i) { if (header_widths[i]) jtQuery(this).css("width", header_widths[i] + "px"); }); }); header_table.find("tr").each(function() { tr = jtQuery(this); tr.find("td").each(function(i) { if (header_widths[i]) jtQuery(this).css("width", header_widths[i] + "px"); }); }); } } */ /* Current solutions (1) Using javascript, creating virtual div tag and get the text function remove_tags(html) { var tmp = document.createElement("DIV"); tmp.innerHTML = html; return tmp.textContent||tmp.innerText; } (2) Using regex function remove_tags(html) { return html.replace(/<(?:.|\n)*?>/gm, ''); } (3) Using JQuery function remove_tags(html) { return jQuery(html).text(); } These three solutions are working correctly, but if the string is like this
hello
*/