/* global initData, authorizationToken */ // List of HTML entities for escaping. var htmlEscapes = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '/': '/' }; // Regex containing the keys listed immediately above. var htmlEscaper = /[&<>"'\/]/g; // Escape a string for HTML interpolation. escape = function(string) { return ('' + string).replace(htmlEscaper, function(match) { return htmlEscapes[match]; }); }; var urlRegex = /(\S+): (https?://[^\s]+)/g; url = function(string){ return ''+string.replace(urlRegex, '$1'); }; var titleRegex = /^(.*\n)/; title = function(string){ return ''+string.replace(titleRegex, '$1'); }; var cmdRegex = /```([^`]*?)```/g; cmd = function(string) { return ''+string.replace(cmdRegex, '$1'); }; date = function(string){ var D = new Date(string); return D.toLocaleDateString()+" "+D.toLocaleTimeString(); }; mailRegexp = /(.*) <(.+@.+)>/; mail = function( string ){ return ''+string.replace(mailRegexp, '$1'); }; function updatePage(data){ var content = ""; var item = {}; var id = ''; // If the log entry is unique, simulate a search result if( ! data['hits'] ){ data = {hits:{hits:[data]}}; } $.each(data.hits.hits, (k,v)=>{ item = v._source; id = v._id; content += `

${escape(item.server)}

${date(escape(item.created_at))}

${mail(escape(item.author))}

Actions

 ${cmd(title(url(escape(item.content))))}
`; }); $("#content").html(content); } $("input").on("keyup",function(e){ const el = $(e.target); const val = el.val(); if( val.length < 3 ){ return; } $.ajax("/search",{ beforeSend: function(request) { request.setRequestHeader("authorizationToken", authorizationToken); }, data: { q:val, } }) .done(function(data) { updatePage(data); }) .fail(function() { alert( "error" ); }); }); updatePage( initData ); $(".actions-toggle").on("click",(e) => { var el=e.target; $(el).parent().siblings('.actions').show(); $(el).hide(); } )