<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>james young &#187; datatable</title>
	<atom:link href="http://psyjinx.com/jyoung/tag/datatable/feed/" rel="self" type="application/rss+xml" />
	<link>http://psyjinx.com/jyoung</link>
	<description>web application developer</description>
	<lastBuildDate>Fri, 05 Mar 2010 18:55:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>YUI DataTable &#8211; Using a dateCellEditor with an asyncSubmitter</title>
		<link>http://psyjinx.com/jyoung/2009/07/yui-datatable-using-a-datecelleditor-with-an-asyncsubmitter/</link>
		<comments>http://psyjinx.com/jyoung/2009/07/yui-datatable-using-a-datecelleditor-with-an-asyncsubmitter/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 03:02:26 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[yui]]></category>
		<category><![CDATA[asyncSubmitter]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[dateCellEditor]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://psyjinx.com/wp/?p=86</guid>
		<description><![CDATA[<p>If you are wondering what a dateCellEditor and asyncSubmitter are go check out http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html.  See the last_login column?  Click on that, you will get a cool calendar that pops up for you to change the date.  Pretty handy. That Inline Cell Editing page touches on how to implement that, but it doesn&#8217;t cover the actual [...]]]></description>
			<content:encoded><![CDATA[<p>If you are wondering what a dateCellEditor and asyncSubmitter are go check out http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html.  See the last_login column?  Click on that, you will get a cool calendar that pops up for you to change the date.  Pretty handy. That <a href="http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html">Inline Cell Editing</a> page touches on how to implement that, but it doesn&#8217;t cover the actual asyncSubmitter when using a dateCellEditor which is where I could have used a bit more information.  </p>
<p>This example uses five files:</p>
<ul>
<li>index.html &#8211; template for the page</li>
<li>javascript.js &#8211; javascript that powers the datatable</li>
<li>datatabledata.php &#8211; back end process that returns the data for the datatable in JSON format</li>
<li>update.php &#8211; back end process that updates the data in the database based on what the user changed</li>
</ul>
<p>Below is a code example that spells it all out.</p>
<p><span id="more-86"></span><br />
<em>index.html</em></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>DataTable inline cell editing with dateCellEditor and asyncSubmitter example<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/reset-fonts-grids/reset-fonts-grids.css&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/base/base-min.css&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/datatable/assets/skins/sam/datatable.css&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/calendar/assets/skins/sam/calendar.css&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">'yui-skin-sam'</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;datatable&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/yahoo-dom-event/yahoo-dom-event.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/connection/connection-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/calendar/calendar-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/json/json-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/element/element-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/datasource/datasource-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://yui.yahooapis.com/2.7.0/build/datatable/datatable-min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;javascript.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<p><em>javascript.js</em></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> STWPT <span style="color: #339933;">=</span> YAHOO.<span style="color: #003366; font-weight: bold;">namespace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;stwpt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
STWPT.<span style="color: #660066;">init</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    STWPT.<span style="color: #660066;">getDataTableData</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
STWPT.<span style="color: #660066;">getDataTableData</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> submitter <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>callback<span style="color: #339933;">,</span> newValue<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> record <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">getRecord</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> column <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">getColumn</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> oldValue <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
        <span style="color: #003366; font-weight: bold;">var</span> datatable <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">getDataTable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">// send the data to our update page to update the value in the database</span>
        YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">Connect</span>.<span style="color: #660066;">asyncRequest</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'POST'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'update.php'</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span>
            success<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #003366; font-weight: bold;">var</span> r <span style="color: #339933;">=</span> YAHOO.<span style="color: #660066;">lang</span>.<span style="color: #660066;">JSON</span>.<span style="color: #660066;">parse</span><span style="color: #009900;">&#40;</span>o.<span style="color: #660066;">responseText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">replyType</span> <span style="color: #339933;">===</span> <span style="color: #3366CC;">'date'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> r.<span style="color: #660066;">data</span> <span style="color: #339933;">=</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span>.<span style="color: #660066;">parseDate</span><span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
                <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">replyCode</span> <span style="color: #339933;">===</span> <span style="color: #3366CC;">'201'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> callback<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> r.<span style="color: #660066;">data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
                <span style="color: #000066; font-weight: bold;">else</span>
                <span style="color: #009900;">&#123;</span>
                    <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>r.<span style="color: #660066;">replyText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    callback<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
            failure<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>o<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>o.<span style="color: #660066;">statusText</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                callback<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
            scope<span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'action=cellEdit&amp;column='</span> <span style="color: #339933;">+</span> column.<span style="color: #660066;">key</span> <span style="color: #339933;">+</span>
                     <span style="color: #3366CC;">'&amp;newValue='</span> <span style="color: #339933;">+</span> escape<span style="color: #009900;">&#40;</span>newValue<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span>
                     <span style="color: #3366CC;">'&amp;oldValue='</span> <span style="color: #339933;">+</span> escape<span style="color: #009900;">&#40;</span>oldValue<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span>
                      <span style="color: #3366CC;">'&amp;team_id='</span> <span style="color: #339933;">+</span> record.<span style="color: #660066;">getData</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'team_id'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span>
                     <span style="color: #3366CC;">'&amp;type=team'</span>
        <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> textEditor <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">TextboxCellEditor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> disableBtns<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span> asyncSubmitter<span style="color: #339933;">:</span> submitter <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> myColumnDefs <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'team_id'</span><span style="color: #339933;">,</span> label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Id'</span><span style="color: #339933;">,</span> hidden<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'name'</span><span style="color: #339933;">,</span> label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Team Name'</span><span style="color: #339933;">,</span> sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> editor<span style="color: #339933;">:</span> textEditor <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'start_date'</span><span style="color: #339933;">,</span> label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Start Date'</span><span style="color: #339933;">,</span> sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> editor<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DateCellEditor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> asyncSubmitter<span style="color: #339933;">:</span> submitter <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> formatter<span style="color: #339933;">:</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span>.<span style="color: #660066;">formatDate</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'end_date'</span><span style="color: #339933;">,</span> label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'End Date'</span><span style="color: #339933;">,</span> sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> editor<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DateCellEditor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> asyncSubmitter<span style="color: #339933;">:</span> submitter <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> formatter<span style="color: #339933;">:</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span>.<span style="color: #660066;">formatDate</span> <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> myDataSource <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'datatabledata.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    myDataSource.<span style="color: #660066;">responseType</span> <span style="color: #339933;">=</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span>.<span style="color: #660066;">TYPE_JSON</span><span style="color: #339933;">;</span>
    myDataSource.<span style="color: #660066;">connXhrMode</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'queueRequests'</span><span style="color: #339933;">;</span>
    myDataSource.<span style="color: #660066;">connMethodPost</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
    myDataSource.<span style="color: #660066;">responseSchema</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
        resultsList<span style="color: #339933;">:</span> <span style="color: #3366CC;">'teams'</span><span style="color: #339933;">,</span>
        fields<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'team_id'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'name'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'start_date'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> <span style="color: #3366CC;">'date'</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'end_date'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> <span style="color: #3366CC;">'date'</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> myDataTable <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'datatable'</span><span style="color: #339933;">,</span> myColumnDefs<span style="color: #339933;">,</span> myDataSource<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> onCellClick <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>oArgs<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">onEventShowCellEditor</span><span style="color: #009900;">&#40;</span>oArgs<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    myDataTable.<span style="color: #660066;">subscribe</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'cellClickEvent'</span><span style="color: #339933;">,</span> onCellClick<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> mySuccessHandler <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
       <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">onDataReturnAppendRows</span>.<span style="color: #660066;">apply</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span> arguments<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> myFailureHandler <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'FAIL'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> callback <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
        success<span style="color: #339933;">:</span> mySuccessHandler<span style="color: #339933;">,</span>
        failure<span style="color: #339933;">:</span> myFailureHandler<span style="color: #339933;">,</span>
        scope<span style="color: #339933;">:</span> myDataTable
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">Event</span>.<span style="color: #660066;">onDOMReady</span><span style="color: #009900;">&#40;</span>STWPT.<span style="color: #660066;">init</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><em>datatabledata.php</em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// NOTE: if this wasn't an example, this would be done in CodeIgniter</span>
<span style="color: #990000;">mysql_pconnect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'msyql_username'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'mysql_password'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql_database_name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$user_id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>      <span style="color: #666666; font-style: italic;">// hardcoded for this example</span>
<span style="color: #000088;">$facility_id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// hardcoded for this example</span>
&nbsp;
<span style="color: #000088;">$teams</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT t.id AS team_id,
               t.name,
               t.datatable_key,
               DATE_FORMAT(t.start_date, '%m/<span style="color: #009933; font-weight: bold;">%d</span>/%Y') AS start_date,
               DATE_FORMAT(t.end_date, '%m/<span style="color: #009933; font-weight: bold;">%d</span>/%Y') AS end_date
          FROM teams AS t,
               user_facility_teams AS uft
         WHERE uft.user_id = <span style="color: #006699; font-weight: bold;">{$user_id}</span>
           AND uft.facility_id = <span style="color: #006699; font-weight: bold;">{$facility_id}</span>
           AND t.id = uft.team_id
&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">array_push</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$teams</span><span style="color: #339933;">,</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$response</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'{&quot;teams&quot; : '</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$response</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$teams</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$response</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'}'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$response</span><span style="color: #339933;">;</span></pre></div></div>

<p><em>update.php</em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// NOTE: if this wasn't an example, this would be done in CodeIgniter</span>
<span style="color: #990000;">mysql_pconnect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'msyql_username'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'mysql_password'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql_database_name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$user_id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>      <span style="color: #666666; font-style: italic;">// hardcoded for this example</span>
<span style="color: #000088;">$facility_id</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// hardcoded for this example</span>
&nbsp;
<span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'newValue'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'team_id'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'team_id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000088;">$json_response_value</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// if we are changing the 'name' we must also update the key used for datatable column definitions</span>
<span style="color: #000088;">$set_datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/[ -]/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'_'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/%/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'percent'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$datatable_key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$datatable_key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$set_datatable_key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;, datatable_key = '<span style="color: #006699; font-weight: bold;">{$datatable_key}</span>'&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;UPDATE teams
               SET <span style="color: #006699; font-weight: bold;">{$data['column']}</span> = '<span style="color: #006699; font-weight: bold;">{$data['value']}</span>' <span style="color: #006699; font-weight: bold;">{$set_datatable_key}</span>
             WHERE id = <span style="color: #006699; font-weight: bold;">{$data['team_id']}</span>
    &quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$replyType</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'string'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'start_date'</span> <span style="color: #339933;">||</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'column'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'end_date'</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;UPDATE teams
               SET <span style="color: #006699; font-weight: bold;">{$data['column']}</span> = STR_TO_DATE('<span style="color: #006699; font-weight: bold;">{$data['value']}</span>', '%a <span style="color: #009933; font-weight: bold;">%b</span> <span style="color: #009933; font-weight: bold;">%d</span> %Y')
             WHERE id = <span style="color: #006699; font-weight: bold;">{$data['team_id']}</span>
    &quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$replyType</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'date'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$response</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'replyCode'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'201'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'replyText'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Ok'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'replyType'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$replyType</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'data'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$json_response_value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$response</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/07/yui-datatable-using-a-datecelleditor-with-an-asyncsubmitter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>YUI Datatable &#8211; Custom Parser Example</title>
		<link>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-parser-example/</link>
		<comments>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-parser-example/#comments</comments>
		<pubDate>Sun, 24 May 2009 01:40:03 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[yui]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://psyjinx.com/wp/?p=16</guid>
		<description><![CDATA[<p>For entry, with my validator, I am validating that no matter what a user types in for a height, I convert it to a float to store in the database (5.10).  In retrospect, I should convert it to the inches value, but this example isn&#8217;t doing that.</p>
<p>For display, with my formatter, I am standardizing [...]]]></description>
			<content:encoded><![CDATA[<p>For entry, with my validator, I am validating that no matter what a user types in for a height, I convert it to a float to store in the database (5.10).  In retrospect, I should convert it to the inches value, but this example isn&#8217;t doing that.</p>
<p>For display, with my formatter, I am standardizing the format to display as a proper height (5&#8242; 10&#8243;).</p>
<p>All that is left is to get the column sort to not think someone that is 22&#8242; tall is shorter than someone that is 3&#8242; tall. For numbers to sort numerically, the type must be a Number, not a String.  This could be easily accomplished with YAHOO.widget.DataTable.formatNumber, but I was hoping to be able to fix my problem of 5.10 changing to 5.1 here.  I was not able to do that, as you can see by the commented out line below, so I took care of it in the validator (kinda).</p>
<p>Due to the lack of me finding, quickly, an example of a custom parser, I am posting this anyway, even though it is not really needed.</p>
<p>The parser is an object property defined in the array of objects defining the fields for the datasources responseSchema (assuming JSON).</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">STWPT.<span style="color: #660066;">parseHeight</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    oData <span style="color: #339933;">=</span> parseFloat<span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #006600; font-style: italic;">// convert to number (float)</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// force decimal precision (5.1 &amp;gt; 5.10)</span>
    <span style="color: #006600; font-style: italic;">// this converts it back to a string</span>
    <span style="color: #006600; font-style: italic;">// oData = oData.toFixed(2);     </span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">return</span> oData<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The following is a snippet out of a larger script that shows just the pieces that connect the datatable creation to the custom parser shown above.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myDataSource <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/path/to/datasource'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
myDataSource.<span style="color: #660066;">responseType</span> <span style="color: #339933;">=</span> YAHOO.<span style="color: #660066;">util</span>.<span style="color: #660066;">DataSource</span>.<span style="color: #660066;">TYPE_JSON</span><span style="color: #339933;">;</span>
myDataSource.<span style="color: #660066;">connMethodPost</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
myDataSource.<span style="color: #660066;">responseSchema</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    resultsList<span style="color: #339933;">:</span> <span style="color: #3366CC;">'athletes'</span><span style="color: #339933;">,</span>
    fields<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'first_name'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> <span style="color: #3366CC;">'string'</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'last_name'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> <span style="color: #3366CC;">'string'</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span> key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'height'</span><span style="color: #339933;">,</span> parser<span style="color: #339933;">:</span> STWPT.<span style="color: #660066;">parseHeight</span> <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> myDataTable <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'athletes-datatable'</span><span style="color: #339933;">,</span> myColumnDefs<span style="color: #339933;">,</span> myDataSource<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-parser-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI Datatable &#8211; Custom Validator Example</title>
		<link>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-validator-example/</link>
		<comments>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-validator-example/#comments</comments>
		<pubDate>Sun, 24 May 2009 01:37:12 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[yui]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://psyjinx.com/wp/?p=14</guid>
		<description><![CDATA[<p>This is the validator I am using to insure that a height (or float) was entered (5&#8217;10&#8243;, 5&#8242; 10&#8243;, 5.10 5 10), and that text (tall, short) was not entered and covert a valid  non-float value entered (5&#8217;10&#8243;, 5&#8242; 10&#8243;, 5 10) to a float (5.10), which is how I want to store the [...]]]></description>
			<content:encoded><![CDATA[<p>This is the validator I am using to insure that a height (or float) was entered (5&#8217;10&#8243;, 5&#8242; 10&#8243;, 5.10 5 10), and that text (tall, short) was not entered and covert a valid  non-float value entered (5&#8217;10&#8243;, 5&#8242; 10&#8243;, 5 10) to a float (5.10), which is how I want to store the value in the database for this example.</p>
<p>Now that we have a custom validator created, it would be helpful to know where to call it from. A validator is an object parameter to the object that is sent to a textboxCellEditor.</p>
<p>The textboxCellEditor is an object parameter to the object that defines the column, in the array of objects that is sent to the datatable constructor.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">STWPT.<span style="color: #660066;">validateHeight</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> pattern<span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// regexp pattern holder</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// heightFormat is expected to be a decimal number for height</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// add a space if none was provided (5'10&quot;)</span>
    <span style="color: #006600; font-style: italic;">// 5'10&quot; -&gt; 5' 10 - note the trailing non-digit characters are dropped</span>
    pattern <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/'(\d+)/g</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pattern.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>pattern<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot; $1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// turn a space into a decimal - 5 10, 5' 10&quot; -&gt; 5.10, 5' 10&quot;</span>
    pattern <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/ /g</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pattern.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>pattern<span style="color: #339933;">,</span> <span style="color: #3366CC;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// remove all single and double quotes - 5' 10&quot;, 5'.10&quot; -&gt; 5.10</span>
    pattern <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/[&quot;']/g</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pattern.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>pattern<span style="color: #339933;">,</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// enforce x.0x format - 5' 1&quot; -&gt; 5' 01&quot; -&gt; 5.01</span>
    pattern <span style="color: #339933;">=</span> <span style="color: #009966; font-style: italic;">/\.([1-9])$/</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pattern.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span>oData<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span>pattern<span style="color: #339933;">,</span> <span style="color: #3366CC;">'.0$1'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// at this point we should have a float, which should eval &gt; 0</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>oData <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> oData<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// validation only succeeds if a value is returned</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The following is a snippet out of a larger script that shows just the pieces that connect the datatable creation to the custom validator shown above.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> heightEditor <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">TextboxCellEditor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    disableBtns<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
    asyncSubmitter<span style="color: #339933;">:</span> submitter<span style="color: #339933;">,</span>
    validator<span style="color: #339933;">:</span> STWPT.<span style="color: #660066;">validateHeight</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> myColumnDefs <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#123;</span>
    key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'height'</span><span style="color: #339933;">,</span>
    label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Height'</span><span style="color: #339933;">,</span>
    sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    editor<span style="color: #339933;">:</span> heightEditor<span style="color: #339933;">,</span>
    formatter<span style="color: #339933;">:</span> STWPT.<span style="color: #660066;">formatHeight</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> myDataTable <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'athletes-datatable'</span><span style="color: #339933;">,</span> myColumnDefs<span style="color: #339933;">,</span> myDataSource<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-validator-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI Datatable &#8211; Custom Formatter Example</title>
		<link>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-formatter-example/</link>
		<comments>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-formatter-example/#comments</comments>
		<pubDate>Sun, 24 May 2009 01:29:35 +0000</pubDate>
		<dc:creator>James Young</dc:creator>
				<category><![CDATA[yui]]></category>
		<category><![CDATA[code example]]></category>
		<category><![CDATA[datatable]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://psyjinx.com/wp/?p=3</guid>
		<description><![CDATA[<p>I needed to create a custom formatter for a datatable that contained a cell for an individuals height. The height is stored in the database as a float. 5&#8242; 10&#8243; would be in the database as 5.10.   In retrospect I should be storing the height as inches and converting it to feet as [...]]]></description>
			<content:encoded><![CDATA[<p>I needed to create a custom formatter for a datatable that contained a cell for an individuals height. The height is stored in the database as a float. 5&#8242; 10&#8243; would be in the database as 5.10.   In retrospect I should be storing the height as inches and converting it to feet as needed.  We want to display 5&#8242; 10&#8243;, this is where our custom formatter comes in.</p>
<p>The formatter is an object property to the column definition in the array of objects that is sent to the datable when it is created.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">STWPT.<span style="color: #660066;">formatHeight</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>elCell<span style="color: #339933;">,</span> oRecord<span style="color: #339933;">,</span> oColumn<span style="color: #339933;">,</span> oData<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    oData <span style="color: #339933;">=</span> oData.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// oData must be a string</span>
    <span style="color: #003366; font-weight: bold;">var</span> part <span style="color: #339933;">=</span> oData.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// splitting the float on the decimal</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// take care of undefined - set it to 0</span>
    <span style="color: #006600; font-style: italic;">// if we have an int (like 5, not 5.1), part[1] is 'undefined'</span>
    part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">?</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// values like 5.10 are changed to 5.1</span>
    <span style="color: #006600; font-style: italic;">// if textboxCellEditor is used, 5.1 will show as the value (not 5.10)</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">'1'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'10'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    elCell.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'<span style="color: #000099; font-weight: bold;">\'</span> '</span> <span style="color: #339933;">+</span> part<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The following is a snippet out of a larger script that shows just the pieces that connect the datatable creation to the custom formatter shown above.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myColumnDefs <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#123;</span>
    key<span style="color: #339933;">:</span> <span style="color: #3366CC;">'height'</span><span style="color: #339933;">,</span>
    label<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Height'</span><span style="color: #339933;">,</span>
    sortable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    resizeable<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    editor<span style="color: #339933;">:</span> heightEditor<span style="color: #339933;">,</span>
    formatter<span style="color: #339933;">:</span> STWPT.<span style="color: #660066;">formatHeight</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> myDataTable <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #660066;">widget</span>.<span style="color: #660066;">DataTable</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'athletes-datatable'</span><span style="color: #339933;">,</span> myColumnDefs<span style="color: #339933;">,</span> myDataSource<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://psyjinx.com/jyoung/2009/05/yui-datatable-custom-formatter-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
