{"id":49329,"date":"2020-06-16T03:01:10","date_gmt":"2020-06-15T17:01:10","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=49329"},"modified":"2020-06-15T20:57:03","modified_gmt":"2020-06-15T10:57:03","slug":"php-blog-summary-fixed-titles-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/php-blog-summary-fixed-titles-tutorial\/","title":{"rendered":"PHP Blog Summary Fixed Titles Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/rjmprogramming.com.au\/getmelist.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"PHP Blog Summary Fixed Titles Tutorial\" src=\"http:\/\/rjmprogramming.com.au\/PHP\/blog_summary_fixed.jpg\" title=\"PHP Blog Summary Fixed Titles Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">PHP Blog Summary Fixed Titles Tutorial<\/p><\/div>\n<p>Sometimes with a webpage depicting a long tabular report such as our <a target=_blank title='RJM Programming GETME Report' href='http:\/\/www.rjmprogramming.com.au\/getmelist.htm'>RJM Programming GETME Report<\/a> one used by this blog&#8217;s All Posts menu&#8217;s <a target_blank title='Code Download Table' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/all-posts\/code-download-table\/'>Code Download Table<\/a> submenu link (you can read more about with <a title='PHP Blog Summary Follow Up Tutorial' href='#phpbsfut'>PHP Blog Summary Follow Up Tutorial<\/a>), if the column titles were up the top, and not repeated, a user can &#8220;lose their way&#8221;.  There are two approaches to remedying this, to our minds &#8230;<\/p>\n<ul>\n<li>in the tabular data repeat the (perhaps &#8220;th&#8221; tag) cells of the header row, regularly, in rows further down the tabular report &#8230; or &#8230;<\/li>\n<li>detect the position of tabular report&#8217;s header row and use that to create new &#8220;table element with the one row with the one header set in columns of the same width&#8221; that can effectively float in front of the users of the user as they scroll through the report<\/li>\n<\/ul>\n<p> &#8230; and we decided on the latter strategy above.<\/p>\n<p>That latter strategy works in two methodologies for the two dimensions <font size=1>(unusually)<\/font> &#8230;<\/p>\n<ul>\n<li>x (or left) aligns document.body.scrollLeft to a negative CSS [element].style.marginLeft application (though for the existent &#8220;in your face&#8221; dropdown it becomes a positive CSS [element].style.marginLeft application) catering for any user horizontal scrolling performed as they peruse the tabular report<\/li>\n<li>y (or top) works with (CSS <a target=_blank title='CSS position:fixed' href='https:\/\/www.w3schools.com\/css\/css_positioning.asp'>position:fixed<\/a>) or Javascript DOM  [element].style.position=&#8217;fixed&#8217; (as we discussed with <a target=_blank title='Fixed Sticky Header Top Window Document Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/fixed-sticky-header-top-window-document-tutorial\/'>Fixed Sticky Header Top Window Document Tutorial<\/a>) keeping the header row at a consistent y (or top) position as the user does any vertical scrolling through the tabular report<\/li>\n<\/ul>\n<p>To make this happen, the PHP that dovetails with RJM Programming web server&#8217;s once a day <a target=_blank title='crontab' href='http:\/\/www.computerhope.com\/unix\/ucrontab.htm'>crontab<\/a>\/<a target=_blank href='http:\/\/en.wikipedia.org\/wiki\/CURL' title='Curl information from Wikipedia ... thanks'>curl<\/a> report update needed to start calling some new document.body (delayed) onload event Javascript logic contained in <a target=_blank href=\"http:\/\/rjmprogramming.com.au\/getmelist.js_GETME\">getmelist.js<\/a> (called by <a target=_blank href=\"http:\/\/rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/rjmprogramming.com.au\/getmelist.php----GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/rjmprogramming.com.au\/getmelist.php----GETME\">getmelist.php<\/a>) &#8230;<\/p>\n<p><code><br \/>\nfunction placefixedtable() {<br \/>\n  if (document.URL.toLowerCase().indexOf('https:') == 0) { location.href='http:' + document.URL.substring(6); }<br \/>\n  var thsws=[], ith, kth=0;<br \/>\n  var ths=document.getElementsByTagName('th');<br \/>\n  for (ith=0; ith&lt;ths.length; ith++) {<br \/>\n    thsws.push(ths[ith].getBoundingClientRect().width);<br \/>\n    kth++;<br \/>\n  }<br \/>\n  var fixedtrrect=document.getElementById('myt').getBoundingClientRect();<br \/>\n  var fixedtableoh='&lt;table id=fttop class=fixedtable style=\\\"visibility:hidden;position:fixed;opacity:0.5;z-index:-50;top:' + eval(100 + eval('' + fixedtrrect.top)) + 'px;left:' + fixedtrrect.left + 'px;width:' + document.getElementById('myt').getBoundingClientRect().width + 'px;\\\"&gt;&lt;tr style=width:' + fixedtrrect.width + 'px;&gt;&lt;th&gt;Date (GMT)&lt;\/th&gt;&lt;th&gt;File&lt;\/th&gt;&lt;th&gt;Path off http:\/\/www.rjmprogramming.com.au\/&lt;\/th&gt;&lt;th&gt;Extension&lt;\/th&gt;&lt;th&gt;Blog Search Link&lt;\/th&gt;&lt;th&gt;Code Difference Link&lt;\/th&gt;&lt;\/tr&gt;&lt;\/table&gt;';<br \/>\n  for (ith=0; ith&lt;ths.length; ith++) {<br \/>\n    fixedtableoh=fixedtableoh.replace('&lt;th', '&lt;TH style=background-color:#626975;color:#FFF;width:' + thsws[ith] + 'px;');<br \/>\n  }<br \/>\n  document.getElementById('lastdiv').innerHTML=fixedtableoh.replace(\/\\&lt;TH\/g, '&lt;td').replace(\/\\&lt;\\\/th\\&gt;\/g, '&lt;\/td&gt;');<br \/>\n}<br \/>\n<\/code><\/p>\n<p> &#8230; and have the <font color=blue>scrolling watcher code change<\/font> as per &#8230;<\/p>\n<p><code><br \/>\nfunction everysecond() {<br \/>\n  document.getElementById('ourselabs').style.top = eval(eval(f400) + document.body.scrollTop) + 'px';<br \/>\n  <font color=blue>if (document.getElementById('fttop')) {<br \/>\n     document.getElementById('fttop').style.visibility='visible';<br \/>\n     document.getElementById('fttop').style.marginLeft='-0' + document.body.scrollLeft + 'px';<br \/>\n     if (('' + lastl) != ('' + document.body.scrollLeft)) {<br \/>\n     lastl=('' + document.body.scrollLeft);<br \/>\n     document.getElementById('ourselabs').style.marginLeft='0' + document.body.scrollLeft + 'px';<br \/>\n     document.getElementById('fttop').style.zIndex=('-' + document.getElementById('fttop').style.zIndex).replace('--','');<br \/>\n     }<br \/>\n  }<\/font><br \/>\n}<br \/>\n<\/code><\/p>\n<p>We wanted the <a target=_blank title='Overlay postings' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/overlay'>overlay<\/a>ed column headers be unobtrusive as a default, and yet be able to be brought forward (in Z) via CSS <a target=_blank title='CSS z-index information from w3schools' href='http:\/\/www.w3schools.com\/cssref\/pr_pos_z-index.asp'>z-index<\/a> property (or Javascript DOM [element].style.zIndex=[plusMinusZindexIntegerValue]) at the user&#8217;s discretion.  Did you notice with &#8230;<\/p>\n<p><code><br \/>\n     document.getElementById('fttop').style.zIndex=('-' + document.getElementById('fttop').style.zIndex).replace('--','');<br \/>\n<\/code><\/p>\n<p> &#8230; how this toggling of column header overlays was achieved?  Yes, for the first time we can remember, we used (the detection of) a scrolling action (a horizontal one) to allow the user this subtle control.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/php-blog-summary-fixed-titles-tutorial\/'>PHP Blog Summary Fixed Titles Tutorial<\/a>.<\/p-->\n<hr>\n<p id='phpbsfut'>Previous relevant <a target=_blank title='PHP Blog Summary Follow Up Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/php-blog-summary-follow-up-tutorial\/'>PHP Blog Summary Follow Up Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a id='xzapbspt' target=_blank href=\"http:\/\/rjmprogramming.com.au\/getmelist.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"PHP Blog Summary Follow Up Tutorial\" src=\"http:\/\/rjmprogramming.com.au\/PHP\/blog_summary_followup.png\" title=\"PHP Blog Summary Follow Up Tutorial\" style=\"float:left;\" onmouseover=\" this.src = this.src.replace('.jpg','.PNG').replace('.png','.jpg').replace('.PNG','.png');     \" \/><\/a><p class=\"wp-caption-text\">PHP Blog Summary Follow Up Tutorial<\/p><\/div>\n<p>To my mind there are two big advantages to the use of the <i>id=<\/i> HTML parameter usage:<\/p>\n<ol>\n<li>you can manipulate HTML via Javascript DOM in terms of individual HTML objects or elements (or tags, if you like)<\/li>\n<li>you can use them to navigate in a <a target=_blank title='Hashtag information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Hashtag'>&#8220;hashtag&#8221;<\/a> way via <i>#[id]<\/i> syntax &#8230; by repositioning yourself on your current webpage (as is so readily used in online essays or books in their Table of Contents, perhaps)<\/li>\n<\/ol>\n<p>We probably learn to think that the <i>id=<\/i>&#8216;s we define should all be unique, and who am I to argue &#8230; but &#8230; and this is a pragmatic <i>but<\/i> &#8230; if we have a webpage exhausted of usage for individual HTML Javascript DOM manipulation possibilities, and there is sorting going on in a table, like we&#8217;ve been doing recently here at this blog with its Blog Summary, as we talked about with <a target=_blank href='#pbspt' title='PHP Blog Summary Primer Tutorial'>PHP Blog Summary Primer Tutorial<\/a> as seen below, couldn&#8217;t we open up the possibility for <i>id=<\/i>&#8216;s being repeated so that you can still go places despite the fact that you just used one of the (jQuery) sortable table methods to change the order of everything?<\/p>\n<p>Okay, let me put it this way, we know our filename of interest in our Blog Summary starts with a <i>&#8220;j&#8221;<\/i> and it is very recent, so we&#8217;ve first done a (jQuery) sort via date, but don&#8217;t immediately see our <i>&#8220;j&#8221;<\/i> file in our field of view, it would be good to use a hashtag search of <i>#j<\/i> and lob at the most recent one &#8230; that is what we are trying to achieve, and it is achieved here, today, by ditching the idea that all <i>id=<\/i>&#8216;s should be unique and allowing the navigation aspects of <i>id=<\/i>&#8216;s to take precedence (because we will not be needing this particular <i>id=<\/i> (repeated) system to be used for any Javascript DOM purposes).<\/p>\n<p>All of this is best seen by using the <a target=_blank title='live run' href='http:\/\/www.rjmprogramming.com.au\/getmelist.htm'>live run<\/a>, and hopefully you noticed improved navigation aspects to this webpage&#8217;s functionality.  If you&#8217;re looking for north, though, think maybe you should get a compass &#8230; chortle, chortle.<\/p>\n<p>The HTML programming source code for this now could be called <a target=_blank title='getmelist.php' href='http:\/\/www.rjmprogramming.com.au\/PHP\/getme_list.php--GETME'>getmelist.php<\/a> and the differences <a target=_blank title='Code differences from tutorial below to arrive here at this tutorial' href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/getme_list.php--GETME'>link<\/a> shows how we got there from the tutorial below.<\/p>\n<hr \/>\n<p id=\"pbspt\">Previous relevant <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=9504' title='PHP Blog Summary Primer Tutorial'>PHP Blog Summary Primer Tutorial<\/a> is shown below.<\/p>\n<p><div style=\"width: 230px\" class=\"wp-caption alignnone\"><a id='apbspt' target=_blank href=\"http:\/\/rjmprogramming.com.au\/getmelist.htm\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"PHP Blog Summary Primer Tutorial\" src=\"http:\/\/rjmprogramming.com.au\/PHP\/blog_summary.jpg\" title=\"PHP Blog Summary Primer Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">PHP Blog Summary Primer Tutorial<\/p><\/div><br \/>\nThere are two things that often happen for programmers:<\/p>\n<ul>\n<li>they break a job into its components (often immediately jumping to list the biggest &#8220;worry&#8221;)<\/li>\n<li>they look for ways to achieve the job faster and more reliably (ideas regarding code reuse both internally or externally)<\/li>\n<\/ul>\n<p>With this in mind today&#8217;s job, which is a <i>GETME code lister for this blog<\/i> (like a blog summary (updated every day, via cron\/curl)) had (or I wanted):<\/p>\n<ul>\n<li>sortable HTML tables<\/li>\n<li>data from Linux operating system<\/li>\n<\/ul>\n<p>To me the biggest &#8220;worry&#8221; with this job is the &#8220;sortable HTML tables&#8221; (spend far more time on client side work (&#8220;front end&#8221;) per unit of time of productivity than server-side work (&#8220;back end&#8221;)).  So, how about we start with a good code basis of &#8220;sortable HTML tables&#8221; &#8230; that&#8217;s why we&#8217;re showing you the <a target=_blank href='#pjjfoadpt' title='PHP\/Javascript JSON Feed or Array Data Primer Tutorial'>PHP\/Javascript JSON Feed or Array Data Primer Tutorial<\/a> below that we are.  Although it looks off-topic, it is very close code-wise, and this leads to another quality (or not) you may want, or not, to do with programming:<\/p>\n<ul>\n<li>do you mind the old <i><code>if (1 == 1) { }<\/code><\/i> (for code you show to be &#8220;back in favour&#8221;) vs <i><code>if (7 != 7) { }<\/code><\/i> or <i><code>if ((\"to be\" || \"not to be\") == \"that is the question\") { }<\/code><\/i> perhaps (for code that is &#8220;deliberately out of favour, but may be of interest, or come back into play later&#8221;)<\/i> ? &#8230; lots of programmers will not like this, some will be fine with this &#8230; am in the latter group, because, to me, it is like &#8220;the comment you make when you&#8217;re not making a comment&#8221;<\/li>\n<\/ul>\n<p>Back to the idea &#8230; we do a lot of code download offers with *GETME files here at this blog &#8230; so why not summarize all this in a sortable table?<\/p>\n<p>Link to some downloadable PHP programming code &#8230; rename to <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/getmelist.php_GETME' title='getmelist.php'>getmelist.php<\/a> as you wish and here is a link to the <a id='ahuh' target=_blank href=\"http:\/\/rjmprogramming.com.au\/getmelist.htm\" title=\"Click picture\">live run<\/a> and will leave you with the difference in code between this idea and the one of the code below with <a target=_blank title='getmelist.php differences' href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/getme_list.php-GETME'>getmelist.php<\/a>.<\/p>\n<hr \/>\n<p id='pjjfoadpt'>Previous code-relevant tutorial called <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=9150' title='PHP\/Javascript JSON Feed or Array Data Primer Tutorial'>PHP\/Javascript JSON Feed or Array Data Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/rjmprogramming.com.au\/PHP\/JSON\/ArrayData\/json_array_post.php?ask=y\"><img decoding=\"async\" style=\"border: 15px solid pink;\" id='jsoni' onmouseover=' this.src = this.src.replace(\".jpg\",\".PNG\").replace(\".png\",\".jpg\").replace(\".PNG\",\".png\"); ' alt=\"PHP\/Javascript JSON Feed or Array Data Primer Tutorial\" src=\"http:\/\/rjmprogramming.com.au\/PHP\/JSON\/ArrayData\/PHP_JSON_ArrayData.png\" title=\"PHP\/Javascript JSON Feed or Array Data Primer Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">PHP\/Javascript JSON Feed or Array Data Primer Tutorial<\/p><\/div>\n<p><a target=_blank title='JSON information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/JSON'>JSON<\/a> is a very useful protocol because:<\/p>\n<ul>\n<li>There is a lot of support in Javascript and the server-side languages, such as PHP or ASP.Net, for JSON-friendly functionality.<\/li>\n<li>Many website <a target=_blank title='Feed information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Data_feed'>feeds<\/a> use JSON as their protocol (format) of choice.<\/li>\n<\/ul>\n<p><a target=_blank href=\"http:\/\/rjmprogramming.com.au\/PHP\/JSON\/ArrayData\/json_array_post.php?ask=y\" title='Click picture'>Today<\/a>&#8216;s live run is a simple interface to JSON incoming data and its presentation back to you, either as an HTML table element, or as a validator.  Of interest, are the two previous tutorials below.  We use an optional method of the first, and the same default input data (via <a target=_blank href='http:\/\/code.google.com\/apis\/ajax\/playground\/?type=visualization#json_data_table' title='Google Json Data Table'>Google Charts<\/a>) as the second:<\/p>\n<ol>\n<li><a target=_blank href='#jstpt' title='jQuery Sortable Table Primer Tutorial'>jQuery Sortable Table Primer Tutorial<\/a><\/li>\n<li><a target=_blank href='#pjhgcjdtet' title='PHP\/Javascript\/HTML Google Chart JSON Data Table Event Tutorial'>PHP\/Javascript\/HTML Google Chart JSON Data Table Event Tutorial<\/a><\/li>\n<\/ol>\n<p>Along the way, wanted to point out use of:<\/p>\n<ul>\n<li>Format of JSON data regarding <a target=_blank title='Array information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Array_data_type'>array<\/a> data &#8230; eg. <a target=_blank title='JSON data example live run, as a validator' href='http:\/\/rjmprogramming.com.au\/PHP\/JSON\/ArrayData\/json_array_post.php?jsondatais={\"a\":1,\"b\":2,\"c\":3,\"d\":4,\"e\":5}'><code>'{\"a\":1,\"b\":2,\"c\":3,\"d\":4,\"e\":5}'<\/code><\/a><\/li>\n<li>PHP <a target=_blank title='json_decode' href='http:\/\/php.net\/manual\/en\/function.json-decode.php'>json_decode()<\/a> method<\/li>\n<li>PHP <a target=_blank title='http_build_query' href='http:\/\/au2.php.net\/manual\/en\/function.http-build-query.php'>http_build_query()<\/a> method<\/li>\n<li>PHP <a target=_blank title='urldecode' href='http:\/\/php.net\/manual\/en\/function.urldecode.php'>urldecode()<\/a> method<\/li>\n<li>Use of an HTML onload Javascript click of an HTML form&#8217;s submit button to automate the use of <i>post<\/i>ed data &#8230; why <i>post<\/i> rather than <i>get<\/i>? &#8230; two reasons:<\/li>\n<ol>\n<li>better security<\/li>\n<li>there are limits to the amount of <i>get<\/i> data applied to your address bar urls that comes into play with <i>get<\/i> scenarios, but not with <i>post<\/i> scenarios\n<\/ol>\n<li>Usefulness of online resources such as the <a target=_blank title='JSONLint' href='http:\/\/jsonlint.com\/'>JSONLint<\/a> validator<\/li>\n<li>The attempts at genericity in the interface by converting <i>post<\/i>ed feed url data into an HTML table presentation (with sortable column data) via the recognition of search specifications for:<\/li>\n<ol>\n<li>table ID<\/li>\n<li>table heading data<\/li>\n<li>table cell data<\/li>\n<\/ol>\n<\/ul>\n<p>Here is a download link for some PHP programming source code you could call <a target=_blank title='json_array_post.php' href='http:\/\/rjmprogramming.com.au\/PHP\/JSON\/ArrayData\/json_array_post.php_GETME'>json_array_post.php<\/a><\/p>\n<p>Perhaps Ajax functionality with local JSON data sources is of interest to you, and if this is the case, have a peruse of <a target=_blank href='http:\/\/rjmprogramming.com.au\/wordpress\/?p=8052' title='Ajax Local JSON Primer Tutorial'>Ajax Local JSON Primer Tutorial<\/a> &#8230; anyway, hope something here is of interest to you.<\/p>\n<hr \/>\n<p id='jstpt'>Previous relevant <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=9094' title='jQuery Sortable Table Primer Tutorial'>jQuery Sortable Table Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Javascript\/jQuery\/SortableTable\/\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"jQuery Sortable Table Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Javascript\/jQuery\/SortableTable\/Sortable_Table.jpg\" title=\"jQuery Sortable Table Primer Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">jQuery Sortable Table Primer Tutorial<\/p><\/div>\n<p>A lot of the things people like about the Web are to do with JavaScript and client-side activities. Adding to that experience are Javascript libraries packed full of features. Probably the best known of these is jQuery.<\/p>\n<p><p>Read more about the powerful jQuery Javascript library <a target=_blank title='jQuery spiritual home' href='http:\/\/jquery.com\/'>here<\/a> (at its spiritual home) and <a target=_blank title='jQuery information' href='http:\/\/en.wikipedia.org\/wiki\/jQuery'>here<\/a> (at Wikipedia).<\/p>\n<p>Regarding this topic I really like <em>&#8220;JavaScript &amp; Ajax&#8221; seventh edition by Tom Negrino and Dori Smith<\/em> pages 437 to 441. The code in this book was followed with quite a few changes. Why change a good thing &#8230; welllllll, want to show you some concepts\/ideas\/<strike>buffoonery<\/strike> which we&#8217;d like to present in pointy form below (you thought we were going to say &#8220;above&#8221; didn&#8217;t you? &#8230; go on! &#8230; admit it):<\/p>\n<ol>\n<li>Can include &#8220;old style&#8221; Javascript <i>&#8220;body onload&#8221;<\/i> code within jQuery <i>ready<\/i> functionality (just checking &#8230; because, personally, feel shy about combining the two worlds, but there is nothing wrong doing this, as we do today) &#8230;<\/li>\n<li>Function <i>onloading()<\/i> which is &#8220;old style&#8221; Javascript is the first thing called from jQuery <i>ready<\/i> code &#8230; why?<\/li>\n<ul>\n<li>First off please refer to today&#8217;s downloadable HTML\/Javascript\/jQuery code you could call <a target=_blank title='jQuery information' href='http:\/\/www.rjmprogramming.com.au\/Javascript\/jQuery\/SortableTable\/conjunction_sortable_table.html_GETME' title='conjunction_sortable_table'>conjunction_sortable_table.html<\/a><\/li>\n<li>Sometimes you want to use Javascript DOM techniques to dynamically load your document.body.innerHTML contents &#8230; so that, perhaps, you can read off a data source of some kind &#8230; wouldn&#8217;t PHP be sooooo great here?! &#8230; <i><b>Subtext translation: <\/b><\/i> the programmer is lazy and wanted to save coding time by taking an array from the previous tutorial called <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=8555' title='HTML\/Javascript Sentence Conjunction Game Tutorial'>HTML\/Javascript Sentence Conjunction Game Tutorial<\/a><\/li>\n<li>The jQuery <i>ready<\/i> code fires at the webpage&#8217;s body <i>onload<\/i> event, and you lose the ability to go <i>&lt;body onload=&#8217;onloading();&#8217;&gt;<\/i> but this doesn&#8217;t stop you plugging in onloading() up the top of your <i>ready<\/i> code &#8230; are you still awake?!<\/li>\n<li>Alternative approach is static HTML, and this is presented to you, but is commented out down the bottom of our <a target=_blank title='jQuery information' href='http:\/\/www.rjmprogramming.com.au\/Javascript\/jQuery\/SortableTable\/conjunction_sortable_table.html_GETME' title='conjunction_sortable_table'>code<\/a> provided today &#8230; by the way, HTML comment goes &lt;!&#8211; &#8230; &#8211;&gt;<\/li>\n<li> &#8230; and how was this derived when a View->Page Source doesn&#8217;t show it? &#8230;<\/li>\n<li> &#8230; use Firebug (or something like it) and point at the body tag and use &#8220;Copy innerHTML&#8221; to derive this (as per the tutorial&#8217;s <a target=_blank title='Tutorail picture' href='http:\/\/www.rjmprogramming.com.au\/Javascript\/jQuery\/SortableTable\/Sortable_Table.jpg'>picture<\/a>)<\/li>\n<\/ul>\n<li>Use of <i>cursor:pointer<\/i> style property to make a <i>span<\/i> tag, within an <i>h1<\/i> tag act like an <i>a<\/i> tag<\/li>\n<li>Recall of ready function for the addsome() Javascript bit awkward, in that code is repeated<\/li>\n<ul>\n<li>Maybe start reading <a target=_blank title='http:\/\/stackoverflow.com\/questions\/999092\/can-i-call-the-function-ready-again-in-jquery' href='http:\/\/stackoverflow.com\/questions\/999092\/can-i-call-the-function-ready-again-in-jquery'>http:\/\/stackoverflow.com\/questions\/999092\/can-i-call-the-function-ready-again-in-jquery<\/a> to see if you can do better<\/li>\n<\/ul>\n<\/ol>\n<p> Click <a target=_blank title='click picture' href='http:\/\/www.rjmprogramming.com.au\/Javascript\/jQuery\/SortableTable\/'>on picture above<\/a> to go to jQuery page for a (live run) tutorial on the jQuery concept called Sortable Table. <\/p>\n<p>Link to jQuery information <a target=_blank title='jQuery information' href='http:\/\/en.wikipedia.org\/wiki\/jQuery'> &#8230; via Wikipedia<\/a>.<\/p>\n<p>Link to jQuery spiritual home page <a target=_blank title='jQuery spiritual home' href='http:\/\/jquery.com\/'> &#8230; via jQuery Foundation<\/a>.<\/p>\n<p>Link to the great third-party jQuery Sortable Table code is available from the <a target=_blank title='GitHub source control' href='https:\/\/github.com\/'>GitHub<\/a> source control resource <a target=_blank title='jQuery Sortable Table download from GitHib' href='https:\/\/github.com\/christianbach\/tablesorter'>here<\/a> which is a link from <a target=_blank title='jQuery Sortable Table project' href='http:\/\/tablesorter.com\/docs\/'>here<\/a> &#8230; thanks heaps &#8230; isn&#8217;t Open Source great?!<\/p>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>The tutorial picture today features the <a target=_blank href='http:\/\/www.mozilla.org\/en-US\/firefox\/new\/' title='Firefox home page'>Firefox<\/a> web browser and a very useful add-on called <a target=_blank title='Firebug home page' href='https:\/\/getfirebug.com\/'>Firebug<\/a> which you may want more information about <a target=_blank title='Firebug tutorials at this blog' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Firebug'>here<\/a>, which is commonly used to debug client-side Javascript and HTML.   As for today&#8217;s usage, Firebug is also extremely useful in deconstructing how a web page was created.   The other simple wonderful tool for this is the web browser&#8217;s equivalent menu command like View->Page Source (or sometimes equivalent of right-click Page Source).   Firebug has a sister product called <a target=_blank title='FirePHP home page' href='http:\/\/www.firephp.org\/'>FirePHP<\/a> which helps debug server-side PHP and Ajax <a target=_blank title='FirePHP tutorials at this blog' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Firephp'>work<\/a>.<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d9094' onclick='var dv=document.getElementById(\"d9094\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?s=jQuery\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d9094' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p id='pjhgcjdtet'>Previous relevant <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=8464' title='PHP\/Javascript\/HTML Google Chart JSON Data Table Event Tutorial'>PHP\/Javascript\/HTML Google Chart JSON Data Table Event Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/json_data_table_events.php?infile=Google_Chart_Intensity_Chart_Tutorial_as.CSV\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"PHP\/Javascript\/HTML Google Chart JSON Data Table Event Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/Json_Data_Table_Events.jpg\" title=\"PHP\/Javascript\/HTML Google Chart JSON Data Table Event Tutorial\" \/><\/a><p class=\"wp-caption-text\">PHP\/Javascript\/HTML Google Chart JSON Data Table Event Tutorial<\/p><\/div>\n<p>Here is a tutorial that re-introduces you to Google Graphs API, or Google Chart Tools, and its JSON Data Table functionality which we talked about last time with <a href=\"#pjhgcjdtioct\"  title=\"PHP\/Javascript\/HTML Google Chart JSON Data Table Import of CSV Tutorial\">PHP\/Javascript\/HTML Google Chart JSON Data Table Import of CSV Tutorial<\/a> as shown below.  Today we extend the functionality talk by adding some event logic for when we click on a table row.<\/p>\n<blockquote><p>Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.<\/p><\/blockquote>\n<p>Thanks to the World Bank for some <a target=_blank title='World Bank data' href='http:\/\/wdi.worldbank.org\/table\/2.1'>statistics<\/a> which helped a lot.<\/p>\n<p>Let&#8217;s see some  <a target=_blank title='click picture' href='http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/json_data_table_events.php?infile=Google_Chart_Intensity_Chart_Tutorial_as.CSV'>PHP<\/a> code in live action for this tutorial where you see a JSON Data Table derived from a filename passed as a parameter in the URL.   The data shown is based on a CSV file of a previous <a <a href=\"#pjhgcimt\">PHP\/Javascript\/HTML Google Chart Intensity Map Tutorial<\/a> shown below.<\/p>\n<p>Link to Google Chart Tools &#8220;spiritual home&#8221; &#8230; <a target=_blank href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.\n'>via Google<\/a>.<br \/>\nLink to Google Chart Tools JSON Data Table information &#8230; <a target=_blank href='http:\/\/code.google.com\/apis\/ajax\/playground\/?type=visualization#json_data_table' title='Google Json Data Table'>via Google<\/a>.<br \/>\nLink to Google Chart Tools Event information &#8230; <a target=_blank href='https:\/\/developers.google.com\/chart\/interactive\/docs\/events' title='Google Data Table Events'>via Google<\/a>.<\/p>\n<p>Link to some downloadable PHP programming code &#8230; rename to <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/chart_editor_in.php_GETME' title='Download me'>chart_editor_in.php<\/a>.<br \/>\nLink to some downloadable PHP programming code &#8230; rename to <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/json_data_table_events.php-GETME' title='Download me'>json_data_table_events.php<\/a>.<br \/>\nLink to some downloadable input CSV data &#8230; rename to <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/intensity_chart.csv_GETME' title='Download me'>Google_Chart_Intensity_Chart_Tutorial_as.CSV<\/a>.\n<\/p>\n<p>Here is the way we got from the tutorial logic below to this tutorial&#8217;s source code&#8217;s logic <a target=_blank title='mystore.html' href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/json_data_table_events.php-GETME\">here<\/a>.<\/p>\n<hr \/>\n<p id='pjhgcjdtioct'>Previous  <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=3770\" title=\"PHP\/Javascript\/HTML Google Chart JSON Data Table Import of CSV Tutorial\">PHP\/Javascript\/HTML Google Chart JSON Data Table Import of CSV Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/json_data_table.php?infile=Google_Chart_Intensity_Chart_Tutorial_as.CSV\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"PHP\/Javascript\/HTML Google Chart JSON Data Table Import of CSV Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/Json_Data_Table.jpg\" title=\"PHP\/Javascript\/HTML Google Chart JSON Data Table Import of CSV Tutorial\" \/><\/a><p class=\"wp-caption-text\">PHP\/Javascript\/HTML Google Chart JSON Data Table Import of CSV Tutorial<\/p><\/div>\n<p>Here is a tutorial that introduces you to Google Graphs API, or Google Chart Tools, and its JSON Data Table functionality.<\/p>\n<blockquote><p>Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.<\/p><\/blockquote>\n<p>Thanks to the World Bank for some <a target=_blank title='World Bank data' href='http:\/\/wdi.worldbank.org\/table\/2.1'>statistics<\/a> which helped a lot.<\/p>\n<p>Let&#8217;s see some  <a target=_blank title='click picture' href='http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/json_data_table.php?infile=Google_Chart_Intensity_Chart_Tutorial_as.CSV'>PHP<\/a> code in live action for this tutorial where you see a JSON Data Table derived from a filename passed as a parameter in the URL.   The data shown is based on a CSV file of a previous <a <a href=\"#pjhgcimt\">PHP\/Javascript\/HTML Google Chart Intensity Map Tutorial<\/a> shown below.<\/p>\n<p>Link to Google Chart Tools &#8220;spiritual home&#8221; &#8230; <a target=_blank href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.\n'>via Google<\/a>.<br \/>\nLink to Google Chart Tools JSON Data Table information &#8230; <a target=_blank href='http:\/\/code.google.com\/apis\/ajax\/playground\/?type=visualization#json_data_table' title='Google Json Data Table'>via Google<\/a>.<\/p>\n<p>Link to some downloadable PHP programming code &#8230; rename to <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/chart_editor_in.php_GETME' title='Download me'>chart_editor_in.php<\/a>.<br \/>\nLink to some downloadable PHP programming code &#8230; rename to <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/json_data_table.php_GETME' title='Download me'>json_data_table.php<\/a>.<br \/>\nLink to some downloadable input CSV data &#8230; rename to <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/ChartEditor\/intensity_chart.csv_GETME' title='Download me'>Google_Chart_Intensity_Chart_Tutorial_as.CSV<\/a>.\n<\/p>\n<hr \/>\n<p id='pjhgcimt'>Previous  <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/IntensityChart\/intensity_chart.php\" title=\"PHP\/Javascript\/HTML Google Chart Intensity Map Tutorial\">PHP\/Javascript\/HTML Google Chart Intensity Map Tutorial<\/a> below &#8230;<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/IntensityChart\/intensity_chart.php\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"PHP\/Javascript\/HTML Google Chart Intensity Map Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/IntensityChart\/Intensity_Map.jpg\" title=\"PHP\/Javascript\/HTML Google Chart Intensity Map Tutorial\" \/><\/a><p class=\"wp-caption-text\">PHP\/Javascript\/HTML Google Chart Intensity Map Tutorial<\/p><\/div>\n<p>Here is a tutorial that introduces you to Google Graphs API, or Google Chart Tools, and its Intensity Map functionality.<\/p>\n<blockquote><p>Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.<\/p><\/blockquote>\n<p>Thanks to the World Bank for some <a target=_blank title='World Bank data' href='http:\/\/wdi.worldbank.org\/table\/2.1'>statistics<\/a> which helped a lot.<\/p>\n<p>Let&#8217;s see some  <a target=_blank title='click picture' href='http:\/\/www.rjmprogramming.com.au\/PHP\/IntensityChart\/intensity_chart.php'>PHP<\/a> code in live action for this tutorial where you define your intensity map characteristics and data.<\/p>\n<p>Now part of an Android App called <a target=_blank title='Android App GeoChart++' href='https:\/\/play.google.com\/store\/apps\/details?id=com.rjmprogramming.geochart.plusplus#?t=W251bGwsMSwyLDIxMiwiY29tLnJqbXByb2dyYW1taW5nLmdlb2NoYXJ0LnBsdXNwbHVzIl0.'>Geo Chart++<\/a> in July 2013.<\/p>\n<p>Link to Google Chart Tools &#8220;spiritual home&#8221; &#8230; <a target=_blank href='https:\/\/developers.google.com\/chart\/interactive\/docs\/index' title='Google Chart Tools provide a perfect way to visualize data on your website. From simple line charts to complex hierarchical tree maps, the chart galley provides a large number of well-designed chart types. Populating your data is easy using the provided client- and server-side tools.\n'>via Google<\/a>.<br \/>\nLink to Google Chart Tools Intensity Map information &#8230; <a target=_blank href='http:\/\/code.google.com\/apis\/ajax\/playground\/?type=visualization#intensity_map' title='Google Geo Charts'>via Google<\/a>.<\/p>\n<p>Link to some downloadable PHP programming code &#8230; rename to <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/IntensityChart\/intensity_chart.php_GETME' title='Download me'>intensity_chart.php<\/a>.\n<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d2995' onclick='var dv=document.getElementById(\"d2995\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?s=Google+Chart#content\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d2995' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d3770' onclick='var dv=document.getElementById(\"d3770\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?s=Google+Chart#content\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d3770' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d8464' onclick='var dv=document.getElementById(\"d8464\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=PHP + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d8464' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d9150' onclick='var dv=document.getElementById(\"d9150\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=JSON\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d9150' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p><script type='text\/javascript'>\n var currentdate = new Date();\n var xdatetime = currentdate.getDay()+currentdate.getMonth() + currentdate.getFullYear() + currentdate.getHours() + currentdate.getMinutes() + currentdate.getSeconds();\n document.getElementById('apbspt').href =  document.getElementById('apbspt').href + '?datetime=' + xdatetime;\n document.getElementById('ahuh').href =  document.getElementById('ahuh').href + '?datetime=0' + xdatetime;\n<\/script><\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d9504' onclick='var dv=document.getElementById(\"d9504\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=exec\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d9504' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d9686' onclick='var dv=document.getElementById(\"d9686\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=DOM\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d9686' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d49329' onclick='var dv=document.getElementById(\"d49329\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/table\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d49329' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Sometimes with a webpage depicting a long tabular report such as our RJM Programming GETME Report one used by this blog&#8217;s All Posts menu&#8217;s Code Download Table submenu link (you can read more about with PHP Blog Summary Follow Up &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/php-blog-summary-fixed-titles-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,37],"tags":[274,281,284,354,3288,576,652,894,932,1988,997,1054,1893,1917,1107,1238,3312,1319,3332,1496],"class_list":["post-49329","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-crontab","tag-css","tag-curl","tag-dom","tag-horizontal-scrolling","tag-html","tag-javascript","tag-overlay","tag-php","tag-position","tag-programming","tag-report","tag-schedule","tag-scroll","tag-scrolling","tag-table","tag-tabular","tag-tutorial","tag-vertical-scrolling","tag-z-index"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/49329"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=49329"}],"version-history":[{"count":10,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/49329\/revisions"}],"predecessor-version":[{"id":49331,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/49329\/revisions\/49331"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=49329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=49329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=49329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}