Cutter's Crossing - Learning ExtJShttps://www.cutterscrossing.com/index.cfm
We talk about web development, often covering the three core pillars: HTML, CSS, and Javascript. There is a lot of legacy content here, discussing everything from ColdFusion to ExtJs, as well as more current stuff like modern EcmaScript, etc.en-usSun, 15 Sep 2019 15:43:43 -0000Wed, 09 May 2012 10:16:00 -0000BlogCFChttp://blogs.law.harvard.edu/tech/rssweb.admin@cutterscrossing.comweb.admin@cutterscrossing.comweb.admin@cutterscrossing.comnoCFQueryReader v2.1: Now with metaData supporthttps://www.cutterscrossing.com/index.cfm/2012/5/9/CFQueryReader-v21-Now-with-metaData-support
The <a href="http://www.sencha.com" target="_blank">Sencha</a> guys just keep upping the bar, and <a href="http://www.sencha.com/products/extjs/" target="_blank">Ext JS 4.1</a> is no exception. I've been reading <a href="http://www.google.com/url?sa=t&rct=j&q=loianne%20groner&source=web&cd=1&ved=0CFcQFjAA&url=http%3A%2F%2Floianegroner.com%2F&ei=c1yqT8TFCoeS9gTniejwAQ&usg=AFQjCNFHEfwzMDmN70PtX3h_cGxx2HFKkg&cad=rja" target="_blank">Loiane Groner</a>'s <a href="http://www.packtpub.com/ext-js-4-first-look/book/mid/100412vj65lg" target="_blank">Ext JS 4 First Look</a>, to review it, and continually find new, cool stuff. 4.1, however, takes it even further. While upgrading <a href="http://cfqueryreader.cutterscrossing.com">CFQueryReader</a>, I was working with 4.1 RC2. And, while extending the base classes, I came across a new feature that wasn't fully documented yet: adding <em>metaData</em> to a server-side store response for changing configuration on the fly. Sometimes it would be nice to just...change up. Now that 4.1 is fully released, I had to make sure that this worked in CFQueryReader.
So, last night I sat down and hammered out this functionality. It took a lot more than I realised, and I learned a lot more about the Ext JS internal code, but I think CFQueryReader is better for it. Consider the following ColdFusion method:
<code>
/**
* FUNCTION getWithMeta
* This function returns the ColdFusion Query object as part of a struct object.
*
* @access remote
* @returnType struct
* @output false
*/
function getWithMeta(numeric pageIndex = 1, numeric pageSize = 50, string sort = "", string search = "") {
var retVal = {"success" = true, "pageIndex" = ARGUMENTS.pageIndex, "pageCount" = 0, "recordCount" = 0, "message" = "", "getEntries" = "", "metaData" = {"root" = "getEntries", "totalProperty" = "recordCount", "successProperty" = "success", "messageProperty" = "message", "idProperty" = "id", "fields" = []}};
StructAppend(LOCAL.retVal, GetEntries(argumentCollection: ARGUMENTS), true);
var colArr = ListToArray(LOCAL.retVal.getEntries.columnList);
LOCAL.retVal.metaData.fields = [
{"name" = "id", "type" = "string", "mapping" = JavaCast("int",0)},
{"name" = "title", "type" = "string", "mapping" = JavaCast("int",3)},
{"name" = "posted", "type" = "date", "mapping" = JavaCast("int",2)},
{"name" = "views", "type" = "int", "mapping" = JavaCast("int",1)}
];
return LOCAL.retVal;
}
</code>
I reused my <em>getEntries</em> method, to get my query. Here, I'm creating a <em>metaData</em> object, at the root of the return, to define the dataset. Configuration options that I normally define client side (root, totalProperty, etc) I put in to the <em>metaData</em> key. When the response is received by the client, the reader will pass this <em>metaData</em> in to our app, applying this configuration to our reader, store, model, and so on. In the above method, we let the <em>metaData</em> <a href="http://www.cutterscrossing.com/index.cfm/2012/5/5/ColdFusion-Query-Column-Order-Did-You-Know">map our columns to fields</a>, rather than doing it client side (CFQueryReader will automatically skip the column mapping if <em>metaData.fields</em> is present in the response.) Our client side store might now look like this:
<code>
Ext.create('Ext.data.Store', {
storeId: 'entryStore',
model: 'Entry',
remoteSort: true,
proxy: {
type: 'ajax',
url: '/com/cc/Blog/Entries.cfc',
extraParams: {
returnFormat: 'json',
method: 'getWithMeta'
},
limitParam: 'pageSize',
pageParam: 'pageIndex',
sortParam: 'sort',
reader: {
type: 'cfquery'
}
},
autoLoad: true
});
</code>
A full example of this, in action, can be seen on <a href="http://cfqueryreader.cutterscrossing.com/index-5.html">a demo page</a> of the CFQueryReader site. The full source code, of the example, can be found in the <a href="https://github.com/cutterbl/CFQueryReader" target="_blank">CFQueryReader GitHub repository</a>.
Learning ExtJSCFQueryReaderAjaxColdFusionExtJSWed, 09 May 2012 10:16:00 -0000https://www.cutterscrossing.com/index.cfm/2012/5/9/CFQueryReader-v21-Now-with-metaData-supportExt JS 4.1 Grid: Part1: Basic Confighttps://www.cutterscrossing.com/index.cfm/2012/5/7/Ext-JS-41-Grid-Part1-Basic-Config
Many moons ago, I wrote a series on <a href="http://www.cutterscrossing.com/index.cfm/My-First-ExtJS-DataGrid">My First Ext JS Data Grid</a>. It was very popular. In fact, it got me the gig co-authoring <a href="http://www.amazon.com/s/ref=ntt_athr_dp_sr_3?_encoding=UTF8&sort=relevancerank&search-alias=books&ie=UTF8&field-author=Steve%20%27Cutter%27%20Blades" target="_blank">two books on Ext JS</a> and spawned an <a href="https://github.com/cutterbl/CFQueryReader" target="_blank">open source project</a> targeted at integrating <a href="http://www.sencha.com/products/extjs/" target="_blank">Ext JS</a> with <a href="http://www.adobe.com/products/coldfusion" target="_blank">ColdFusion</a>. But, I did that series back in 2007, using Ext JS 1.1 (maybe?), and an update is long overdue.Today I'll start that update. Well, actually it began almost two weeks back, when <a href="http://www.cutterscrossing.com/index.cfm/2012/4/23/Ext-JS-4-and-ColdFusion-CFQueryReader-20">I announced the update to CFQueryReader</a>. In that post, and in the demo code in the GitHub download, I show you how to define a data <a href="http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Model" target="_blank">Model</a> and a data <a href="http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store" target="_blank">Store</a>, using <a href="http://cfqueryreader.cutterscrossing.com">CFQueryReader</a> as a custom data <a href="http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.reader.Reader" target="_blank">Reader</a>. What isn't in the post (though it is in the GitHub download), is how easy it is to create a data grid with Ext JS 4.1
<code>
Ext.create('Ext.grid.Panel', {
title: 'Testing: getWithMeta (query as part of custom struct)',
store: Ext.getStore('entryStore'),
renderTo: 'demo',
columns: [
{header: 'ID', dataIndex: 'id'},
{header: 'Title', dataIndex: 'title'},
{header: 'Posted', dataIndex: 'posted'},
{header: 'Views', dataIndex: 'views'}
],
width: 380,
height: 600
});
</code>
The really important pieces here are the <em>store</em>, <em>renderTo</em>, and <em>columns</em> configuration options. The <em>store</em> references the <em>storeId</em> of the data store you create to feed the grid. The <em>renderTo</em> references the id of a div element to render the grid within, on your page. The <em>columns</em> option defines, in order, the columns to display within the grid. In this configuration we have the minimum information needed: the header title of the column and the data field the column will map to. That's it! Oh, sure, there's a lot more you can do: paging bars and column renderers and grouping and stuff. We'll get into it. But, for now, this is all you need to create a very basic grid in Ext JS 4.1. You can download the demo code from the <a href="https://github.com/cutterbl/CFQueryReader" target="_blank">CFQueryReader GitHub repository</a>.
Learning ExtJSCFQueryReaderDevelopmentColdFusionMy First ExtJS DataGridExtJSMon, 07 May 2012 23:00:00 -0000https://www.cutterscrossing.com/index.cfm/2012/5/7/Ext-JS-41-Grid-Part1-Basic-ConfigCFQueryReader 2.0: Site and Demo Updateshttps://www.cutterscrossing.com/index.cfm/2012/4/26/CFQueryReader-20-Site-and-Demo-Updates
<i>Note: I mistakenly posted this under the wrong title. I must get more sleep ;)</i>
I finally got around to a major overhaul of the <a href="http://cfqueryreader.cutterscrossing.com">CFQueryReader site</a>, including all new demos and documentation of the latest build for Ext JS 4.x.
The new demos for Ext JS 2.x and 3.x include links to legacy API's for both versions of the library. The 3.x version includes an example of using Ext Direct, and the new 4.x demo includes paging data grids.
(Big thanks to Loiane's <a href="http://www.packtpub.com/ext-js-4-first-look/book/mid/100412vj65lg" target="_blank">Ext JS 4 First Look</a>, which showed me very quickly how dead simple Ext JS grids and data stores have become.)
I have not yet tested CFQueryReader with <a href="http://www.sencha.com/products/touch/" target="_blank">Sencha Touch</a>, but it should work. Any feedback just let me know.
Learning ExtJSCFQueryReaderDevelopmentColdFusionMy First ExtJS DataGridExtJSThu, 26 Apr 2012 01:09:00 -0000https://www.cutterscrossing.com/index.cfm/2012/4/26/CFQueryReader-20-Site-and-Demo-Updates2011 In Review, and the View for 2012https://www.cutterscrossing.com/index.cfm/2012/1/2/2011-In-Review-and-the-View-for-2012
My, how time flies when you're having fun! It seems like only yesterday that I was <a href="http://www.cutterscrossing.com/index.cfm/2011/1/3/Out-With-the-Old-In-With-the-New-Welcome-2011">welcoming in 2011</a>, and now we're here a year later. So many things have happened in the last year, and rereading that post I see that I missed some things I should've done, but let's take a look in retrospect.
I wrote 27 blog posts in 2011. This is nothing, compared to guys like <a href="http://www.raymondcamden.com" target="_blank">Ray Camden</a> or <a href="http://www.bennadel.com" target="_blank">Ben Nadel</a>, but for me it was quite a bit, especially when you consider that between March and August I released only one post. Very early in the year, I began a series on creating<a href="http://www.cutterscrossing.com/index.cfm/2011/1/13/Many-Sites-One-Codebase">many sites with one codebase</a>. In the process, the series has evolved to contain a fairly detailed primer in <a href="http://www.adobe.com/products/coldfusion" target="_blank">ColdFusion</a> application architecture (because of it's importance to this process), has currently spanned <a href="http://www.cutterscrossing.com/index.cfm/MSOC">8 separate posts</a>, and was even referenced by <a href="http://corfield.org/blog/" target="_blank">Sean Corfield</a> in his great presentations on the same topic. 2012 will see the completion of that CF app discussion, and gradually move it back to the MSOC topic itself, as there is still a ton to talk about there, and a lot of interest in the topic. I also began a series on the <a href="http://www.cutterscrossing.com/index.cfm/jqGrid">jqGrid</a> JQuery plugin. jqGrid is another Data Grid visualization tool (I have now written about three, including <a href="http://www.sencha.com/products/extjs" target="_blank">Ext JS</a> and <a href="http://www.datatables.net" target="_blank">DataTables</a>), and is a clear choice for those who must use JQuery. (To be fair, <a href="http://www.jqueryui.com" target="_blank">JQueryUI</a> is working on a grid component, but they are still behind the curve, and way behind Sencha.) Finally, one common thread seen in the majority of my posts, is how much I've embraced <a href="http://www.cutterscrossing.com/index.cfm/cfscript">cfscript</a>. I wrote a lot of things, on a variety of topics, but most of my code examples were pure scripted examples.
Now let's talk about some other departures from the norm for Cutter.
You did not see a lot of content around Ext JS. In fact, <a href="http://www.cutterscrossing.com/index.cfm/2011/8/13/New-Job-New-Home-A-Lot-of-Work">I stopped writing Ext JS books</a>. This is not, in any way, a reflection on my feelings for Ext JS. I still believe that <a href="http://www.sencha.com" target="_blank">Sencha</a> has built one of the best client-side libraries for web application development. In evaluating the overall ROI, I realized that I was writing more for the community than the money, and that my reach was greater through my blog, while giving me flexibility on when and what I deliver from a content standpoint. That said, I didn't have a single project this year that used Ext JS, so had very little time to experiment and write about it. This year, I'm going to expand on a personal project, and get back to some great Ext JS content for my readers.
You, also, did not see me speak at any conferences this past year. Nor at any user group meetings. This wasn't because I didn't want to, but because of some more personal reasons. I'm not going to go in depth here, other than to say that I've had some long standing health issues that required me to have some surgery done on my mouth. (Mark Drew is making a joke right now...) Aside from the fact that this has been very costly (chewing up any conference/travel budget), it also meant that my speech has been affected for a good part of the year. Thankfully this experience is (mostly) over now, and I hope to get back to presenting sometime this year. Any user group looking for a speaker this year, please contact me through the Contact link on this blog.
One group I am hoping to speak to this year is the <a href="http://jaxfusion.groups.adobe.com/" target="_blank">Northeast Florida CFUG</a>. I have to call Mike back, but he's looking to get things kicked off again, and I want to help it be successful. If you're in or around the Jacksonville area, make sure to keep an eye on the site for upcoming events.
One other thing I'm looking to do is to migrate all of my projects into <a href="http://www.github.com/cutterbl" target="_blank">GitHub</a>. I've been using Git at work, and I am loving it, and I think combining GitHub with <a href="http://www.riaforge.org" target="_blank">RIAForge</a> is a great way to promote the terrific technologies we work with every day. I will make the time, I promise.
This comes to the final discussion of this post, <a href="http://www.adobe.com" target="_blank">Adobe</a>. I again had the pleasure of being an <a href="http://www.cutterscrossing.com/index.cfm/2011/1/28/Im-an-ACP-again-for-2011">Adobe Community Professional</a> this past year. Due to my health issues, I didn't get to do everything I would've wanted to this year, but I've tried to be a good supporter. There are some fabulous things coming in ColdFusion Zeus and, by extension, to ColdFusion Builder as well. There has been a lot of hub-bub over Adobe's communications flubs regarding Flash, mobile, and Flex. I've avoided much of the discussion, other than to say "be patient and watch". Flash isn't going away, and neither is Flex. HTML 5 is a beautiful thing, if you aren't developing desktop browser applications (i.e. You're only writing for mobile/tablet development). There, that is my whole contribution to that discussion. Give it a rest.
2012 will be a fantastic year. Set yourself some clear, definable goals. Break them down, step by step, and write the steps down on paper. Each successive step, print out in large letters and place it somewhere where you will see it each and every day. Set yourself up to succeed, and you will. Have a great year, everyone, and I can't wait to hear what <em>you</em> have planned for 2012.
MSOCDataTablesHTML5jqGridCFScriptLearning ExtJSSenchaAjaxDevelopmentJQueryColdFusionMy 2 centsThis BlogApplication SetupMy First ExtJS DataGridAdobeWho I AmExtJSMon, 02 Jan 2012 11:01:00 -0000https://www.cutterscrossing.com/index.cfm/2012/1/2/2011-In-Review-and-the-View-for-2012New Job, New Home, A Lot of Workhttps://www.cutterscrossing.com/index.cfm/2011/8/13/New-Job-New-Home-A-Lot-of-Work
It's been a very busy year, up til now. Work ramped up in February, contracting me for additional hours for a month and a half straight, after which I've worked on a sting of side projects. This helped me finance a move to Jacksonville, Florida. My new (daytime) job is full-time telecommute, which allows me to put my desk anywhere. Teresa wanted to get back to sunshine and beaches, being tired of the cold and snow of Tennessee winters, and chose Jacksonville for it's location and proximity to family and friends. Jacksonville is a great area, and we nailed a terrific place in Fleming Island. I like it because there's lots of tech (user groups and such), and it's not far from other tech centers (Orlando, Tampa, Atlanta, etc). It doesn't hurt that I can maintain a year around tan or that the beach is a short drive away.
A lot of work has come my way, often tacking an additional 40 to 60 hours a week on top of my normal day job schedule. Often I'll take a project that takes a week or two, then take a few weeks off to spend with the family (and <a href="http://www.goodreads.com/cutterbl" target="_blank">catch up on my reading</a>). I have a list of posts I need to write, due to exposure to some projects I hadn't previously been exposed to. Part of that <a href="/index.cfm/2011/2/7/Using-The-DataTables-JQuery-Plugin">already started</a> with some exposure to the <a href="http://www.datatables.net/" target="_blank">DataTables</a> JQuery plugin, but I'm also lining up posts for <a href="http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jqgriddocs" target="_blank">jqGrid</a>, <a href="http://www.jstree.com/" target="_blank">jsTree</a>, and the <a href="http://cfuniform.riaforge.org/" target="_blank">cfUniForm</a> project. <a href="http://www.evernote.com" target="_blank">Evernote</a> is filling up with little tidbits. The most difficult piece is coming up with the time to write examples. I'm particular about writing well formed code and documentation, which is why my posts sometimes get spaced out a bit.
One of the things I have discovered, in my exposure to these other projects, is how much I miss working with <a href="http://www.sencha.com/products/extjs/" target="_blank">Ext JS</a> day-to-day. <a href="http://jqueryui.com/" target="_blank">JQuery UI</a> is a good project, but lacks the maturity of Ext JS, and is missing too many key components for writing web <em>applications</em> (Data Stores, Grid, Tree, Menus, Tooltips, etc). My exposure to those other projects was an attempt to fill needs for which Ext JS would have been better suited, while locked into using JQuery UI. The JQuery UI team is working on closing that gap, but there is a lot of catch up necessary to match the breadth and power of Ext JS.
Speaking of Ext JS, <a href="http://www.packtpub.com" target="_blank">Packt Publishing</a> asked me to write the next Ext JS book on my own. While very flattered, I had to carefully weigh what that commitment would mean. Ultimately, I could not justify committing seven and a half months to writing the book with all of the other responsibilities I have right now. I will write a few articles for Packt (as part of my contract on the <a href="https://www.packtpub.com/learning-ext-js-3-2-for-building-dynamic-desktop-style-user-interfaces/book" target="_blank">last book</a>), but feel like I can continue to create blog content that would be more timely (no six month editorial process) and have a greater reach, and do so as my schedule permits without being a burden on my family. <a href="http://www.sencha.com" target="_blank">Sencha</a> has already announced <a href="http://www.sencha.com/blog/what-to-expect-in-ext-js-4-1/" target="_blank">What to Expect in Ext JS 4.1</a>, and recently put <a href="http://www.sencha.com/blog/ext-designer-1-2-beta/" target="_blank">Ext Designer 1.2 in Beta</a>, so there's a lot to talk about here.
Last, but definitely not least, I'm following all the buzz about the upcoming <a href="http://blogs.adobe.com/coldfusion/2011/06/08/next-version-of-coldfusion-is-codenamed-zeus/" target="_blank">ColdFusion "Zeus"</a>. A quick <a href="http://www.google.com/search?q=coldfusion+zeus" target="_blank">Google Search</a> already brings up a ton of info that <a href="http://www.adobe.com" target="_blank">Adobe</a> has put out regarding the next version of the ColdFusion server platform, and it looks to once again be a significant release. Some of the big things already mentioned have been the move from JRun to Tomcat, the retirement of Verity in favor of Solr, the upgrade to Axis 2, and the inclusion of closures in CFML. That's just some of what's coming, as Adobe appears to be giving more and more detail during the various conferences through the year (and you never know the whole story until it's released).
Learning ExtJSSenchaDevelopmentJQueryColdFusionThis BlogAdobeWho I AmSat, 13 Aug 2011 12:54:00 -0000https://www.cutterscrossing.com/index.cfm/2011/8/13/New-Job-New-Home-A-Lot-of-WorkNew Book: Learning Ext JS 3.2https://www.cutterscrossing.com/index.cfm/2010/10/18/New-Book-Learning-Ext-JS-32
<a href="https://www.packtpub.com/learning-ext-js-3-2-for-building-dynamic-desktop-style-user-interfaces/book" target="_blank"><img src="/images/1209OS_MockupCover.jpg" style="position: relative; float: left;border:0;margin:0 5px 5px 0;width:125px" /></a>I've been pretty busy this year, starting with my new position at work. And, having worked on major side projects the last three years running, I also took my after work time to spend some overdue quality time with my family. But, I did make time to work with <a href="http://www.vinylfox.com" target="_blank">Shea</a>, <a href="http://colinramsay.co.uk/diary/" target="_blank">Colin</a>, and new author Nigel White, to work on the second edition of our Ext JS book, now titled <a href="https://www.packtpub.com/learning-ext-js-3-2-for-building-dynamic-desktop-style-user-interfaces/book" target="_blank">Learning Ext JS 3.2</a>. Released last Monday by <a href="http://packtpub.com" target="_blank">Packt Publishing</a>, our latest book brings Ext JS developers up to date in working with the 3.x framework, updating the content to cover many changes to the library as well as introducing several new chapters on key bits about Menus and Buttons, Plugins, Charting, and <a href="https://www.packtpub.com/article/marshalling-data-services-with-ext-direct" target="_blank">Ext.Direct</a>.
<a href="http://www.sencha.com" target="_blank">Sencha</a> (formerly Ext LLC) released <a href="http://www.sencha.com/blog/2010/10/11/ext-js-3-3-final-released/" target="_blank">Ext JS 3.3</a> on the same day that <i>Learning Ext JS 3.2</i> shipped from Packt. There are several new and exciting features added in 3.3, but the core content of the book still aligns with the core of the framework itself, giving developers the tools and information they need to get off the ground running. There were several important changes to the framework between the last book (finalized just before the release of 2.2) and this one, and it was important to get that information out to those ready to learn. In the new chapter about Ext.Direct, I dissect the <a href="http://www.adobe.com/products/coldfusion" target="_blank">ColdFusion</a> Server-side Stack, written by Sencha's Aaron Conran, to give the bare bones info needed for writing one's own server-side data marshalling services, going through the pieces step-by-step. Changes to the Data package were just one of the reasons to write this book. I know that Colin, Nigel, Shea, and myself, hope that everyone enjoys our latest work.
Learning ExtJSCFQueryReaderDevelopmentColdFusionExtJSMon, 18 Oct 2010 23:56:00 -0000https://www.cutterscrossing.com/index.cfm/2010/10/18/New-Book-Learning-Ext-JS-32My CF + ExtJs Preso for cf.Objective() 2010https://www.cutterscrossing.com/index.cfm/2010/4/24/My-CF--ExtJs-Preso-for-cfObjective-2010
<img src="/images/cfplusext.jpg" alt="ColdFusion + ExtJs" style="position: relative; float: left;margins: 10px" />Attached to this is my slide deck and sample code from my ColdFusion + ExtJs presentation here at cf.Objective() 2010. Overall it seemed to go really well, despite the typical technical difficulties, and though <a href="http://www.coldfusionjedi.com">Ray</a> said I needed to be a little more introductory (Thanks Ray. I appreciate the feedback.) I heavily commented the JavaScript in my source code, so hopefully that will help to fill in the gaps for people. If anyone has any questions, feel free to use the contact link at the bottom of the page.
I want to shout out to Aaron Conran of <a href="http://www.extjs.com">ExtJs</a>, for providing me with a license for their new <a href="http://www.extjs.com/products/designer/?ref=family">ExtDesigner</a> to giveaway in my presentation. I pinged him last minute on this, and he really came through (Hope you like it Lance. Drop me your info to give back to Aaron.) For those who haven't checked it out yet, it's a fantastic tool, really well done, and more than worth the small price tag on it.
On a side note, I'm using a "work-in-progress" version of <a href="http://cfqueryreader.riaforge.org">CFQueryReader</a> in this sample. I'm in the process of refactoring to support some advanced features of Ext.Direct, and the new version will only be compatible with 3.2 and above. When I put it into SVN I'll add some notes on which revision is the cutoff for previous versions of ExtJs.
Update: I've added notes to the readme.txt file of the sample download with instructions on how to make the examples work in ColdFusion 8 as well.
cfObjectiveLearning ExtJSCFQueryReaderDevelopmentColdFusionExtJSSat, 24 Apr 2010 10:50:00 -0000https://www.cutterscrossing.com/index.cfm/2010/4/24/My-CF--ExtJs-Preso-for-cfObjective-2010I Am Speaking at cf.Objective() 2010https://www.cutterscrossing.com/index.cfm/2010/1/6/I-Am-Speaking-at-cfObjective-2010
<img src="/images/CFObjective_09_banner_3-31deadline_468x62.jpg" style="float:right;margin:5px" />I'll be speaking on building applications with <a href="http://www.adobe.com/products/coldfusion" target="_blank">ColdFusion</a> and <a href="http://www.extjs.com" target="_blank">ExtJs</a> at <a href="http://www.cfobjective.com" target="_blank">cf.Objective 2010</a>. I was very honored to be asked to submit a topic alongside so many fantastic speakers and developers. I'll post more as the details are refined.
cfObjectiveLearning ExtJSDevelopmentColdFusionExtJSWed, 06 Jan 2010 17:59:00 -0000https://www.cutterscrossing.com/index.cfm/2010/1/6/I-Am-Speaking-at-cfObjective-2010CFQueryReader v1.2 - Critical Update Supporting ExtJS 3.xhttps://www.cutterscrossing.com/index.cfm/2009/7/29/CFQueryReader-v12--Update-Supporting-ExtJS-3x
I have updated <a href="http://cfqueryreader.riaforge.org" target="_blank">CFQueryReader</a>, addressing issues that had arisen with new builds of ExtJs 3.x. This new build should cover sporadic issues with loading a new Ext.data.Store. There is also a simple example of using Aaron Conran's <a href="http://extjs.com/forum/showthread.php?t=67983" target="_blank">DirectCFM</a> Ext.Direct ColdFusion API stack.
The CFQueryReader <a href="http://cfqueryreader.cutterscrossing.com" target="_blank">Example Site</a> has been updated as well. You can update CFQueryReader from <a href="http://cfqueryreader.riaforge.org" target="_blank">RIAForge</a>.
Learning ExtJSCFQueryReaderColdFusion 8DevelopmentColdFusionExtJSWed, 29 Jul 2009 18:04:14 -0000https://www.cutterscrossing.com/index.cfm/2009/7/29/CFQueryReader-v12--Update-Supporting-ExtJS-3xExt Js 3.0 is Finally Released!https://www.cutterscrossing.com/index.cfm/2009/7/7/Ext-Js-30-is-Finally-Released
Yes, <a href="http://www.extjs.com" target="_blank">Ext Js</a> 3.0 has finally arrived! This long awaited update to the popular library has finally hit the <a href="http://extjs.com/products/extjs/download.php" target="_blank">download page</a> as a production ready build (though the Release Candidates have been pretty stable as it is). There are many great enhancements to Ext, including an even more consistent underlying model (how could it get <em>more</em> consistent?), and some exciting new data marshalling features.
A quick perusal of the updated <a href="http://extjs.com/deploy/dev/examples/samples.html" target="_blank">Samples &amp; Demos</a> page gives us immediate insight into some of the new features that are available:
<ul>
<li><a href="http://extjs.com/deploy/dev/examples/grid/row-editor.html" target="_blank">Row Editor Grid</a> - for full record edits</li>
<li><a href="http://extjs.com/deploy/dev/examples/grid/buffer.html" target="_blank">Buffered Grid View</a> - for faster rendering of large datasets</li>
<li><a href="http://extjs.com/deploy/dev/examples/tabs/tab-scroller-menu.html" target="_blank">Tab Panel Scroller Menu</a> - for Tab Panels with lots of tabs</li>
<li><a href="http://extjs.com/deploy/dev/examples/grouptabs/grouptabs.html" target="_blank">Group Tabs</a> - a vertical tab implementation</li>
<li><a href="http://extjs.com/deploy/dev/examples/chart/charts.html" target="_blank">Charts</a> - several different chart types</li>
<li><a href="http://extjs.com/deploy/dev/examples/tree/check-tree.html" target="_blank">Check Tree</a> - a tree view with a twist</li>
<li><a href="http://extjs.com/deploy/dev/examples/layout/hbox.html" target="_blank">HBox</a> and <a href="http://extjs.com/deploy/dev/examples/layout/vbox.html" target="_blank">VBox</a> layouts</li>
<li><a href="http://extjs.com/deploy/dev/examples/toolbar/overflow.html" target="_blank">Toolbar Overflow</a></li>
<li><a href="http://extjs.com/deploy/dev/examples/toolbar/toolbars.html" target="_blank">Toolbar Button Groups</a></li>
<li><a href="http://extjs.com/deploy/dev/examples/view/list-view.html" target="_blank">ListView</a> - a very lightweight grid implementation</li>
<li>Updated <a href="http://extjs.com/deploy/dev/examples/simple-widgets/qtips.html" target="_blank">QuickTips</a></li>
</ul>
There's a lot more that you'll have to dig to see, like improved browser support, a better container model, and (experimental) ARIA support (for accessabiltiy). Some of the greatest enhancements come in the way of the data marshalling capabilities added via the new <a href="http://extjs.com/blog/2009/05/13/introducing-ext-direct/" target="_blank">Ext Direct</a>. With Direct, Ext is providing the <a href="http://extjs.com/products/extjs/direct.php" target="_blank">remoting specifications</a> so that anyone can write data marshalling services around their favorite backend language. Ext has even published <a href="" target="_blank">Example Server Side Stacks</a> as a jumping off point to beginning with data marshalling via Direct. [Side Note: Aaron Conran, the team lead on the Ext Js team, is a long time <a href="http://www.adobe.com/products/coldfusion" target="_blank">ColdFusion</a> guy, and he wrote the example CF stack.) By configuring your Direct API, you can utilize data readers and writers (they're new!) easily, even passing multiple requests within a single Ajax request. [Another Side Note: <a href="http://cfqueryreader.riaforge.org" target="_blank">CFQueryReader</a> is fully functional with and without Direct.]
One of the nicest features of this release is the backwards compatability. There are little to few changes that most will have to make, to upgrade their applications from 2.x to 3.0. And, it was announced, on a recent <a href="http://groups.adobe.com/groups/ab704331ab/summary" target="_blank">User Group Tour</a> stop, that Adobe is including Ext Js 3.0 in ColdFusion 9. This opens up the possability of some very nice, new CFAjax components to come.
All in all a fantastic release. I've had the opportunity to play with 3.0 for a while now, watching the SVN updates daily, and my hat's off to the Ext Js crew for another excellent release.
Learning ExtJSCFQueryReaderCentaur TourDevelopmentColdFusionExtJSTue, 07 Jul 2009 01:08:00 -0000https://www.cutterscrossing.com/index.cfm/2009/7/7/Ext-Js-30-is-Finally-ReleasedCFQueryReader v1.1https://www.cutterscrossing.com/index.cfm/2009/5/13/CFQueryReader-v11
A while back, <a href="http://www.madfellas.com/blog/" target="_blank">Justin Carter</a> contacted me about some updates he was making to the <a href="http://coldext.riaforge.org/" target="_blank">ColdExt</a>, a wrapper for the <a href="http://www.extjs.com" target="_blank">Ext JS</a> library for <a href="http://www.adobe.com/products/coldfusion/" target="_blank">ColdFusion</a>. He had been looking at my <a href="http://cfqueryreader.cutterscrossing.com" target="_blank">CFQueryReader</a>, as a reader for ColdFusion's JSON data return, and had noticed that there was no support for the 'root' attribute that's associated with most JSON readers in Ext. CFQueryReader is specifically designed for use with Query objects of ColdFusion 8's native JSON return type.
When I first wrote CFQueryReader, I was replacing the CFJsonReader with something better suited to the array structure used in the ColdFusion JSON return of a Query Object, and really did a one-for-one port. So, I took a deeper look at the issue Justin wanted resolved.
I did a deep comparison of Ext's ArrayReader and JsonReader source code, following everything that was being accomplished. What I found was how it used an internal accessor method to pull certain information on demand. I was able to refactor the reader to now support all of the base level meta attributes that are currently available to the ArrayReader: id, root, successProperty, and totalProperty.
In the previous version of CFQueryReader, when defining your fieldsets you were also required to uppercase the entire value of the column names. This is no longer a requirement either, although casing is important in identifying your 'root' and 'totalProperty' attributes.
The download below includes the reader, as well as some sample code showing how to implement it. I also setup these sample in a <a href="http://cfqueryreader.cutterscrossing.com" target="_blank">subdomain</a> to show it working (requires Firefox with Firebug for full effect). There is a fair amount of comment documentation directly within the <a href="http://cfqueryreader.cutterscrossing.com/js/custom/CFQueryReader.js" target="_blank">CFQueryReader.js</a> file. A big shout out to Justin, Adam Bellas, and a few others, for helping me out with the testing.
Learning ExtJSCFQueryReaderColdFusion 8DevelopmentColdFusionExtJSWed, 13 May 2009 16:08:00 -0000https://www.cutterscrossing.com/index.cfm/2009/5/13/CFQueryReader-v11Ext.Direct: Details on Data Marshallinghttps://www.cutterscrossing.com/index.cfm/2009/5/13/ExtDirect-Details-on-Data-Marshalling
<img src="/images/DirectLogoNoChrome.gif" style="float:left" />One of the core focuses, in the development of <a href="http://www.extjs.com" target="_blank">Ext JS</a> 3.0, is the marshalling of data services under a centralized location. The intent is to make for a more portable application, where you can have a single touch point for data I/O that could easily be switched from one platform to another.
This is done through the new Ext.Direct package of classes, and many have been waiting on some detailed information on what it is and how to use it. This morning the Ext Blog got an update: <a href="http://extjs.com/blog/2009/05/13/introducing-ext-direct/" target="_blank">Ext JS 3.0 - Remoting for Everyone</a>. This explains Ext.Direct fairly well, even giving you a sample app to learn from, some sample code, <a href="http://extjs.com/forum/showthread.php?t=67992" target="_blank">links to some pre-constructed routers for several platforms</a>, as well as a link to the <a href="http://extjs.com/products/extjs/direct.php" target="_blank">Remoting Specification</a> to write your own custom routers. Aaron Conran, Senior Software Architect and Ext Services Team Lead, wrote the <a href="http://extjs.com/forum/showthread.php?t=67983" target="_blank">ColdFusion Router</a>. That's fitting, as Aaron's a long time <a href="http://www.adobe.com/products/coldfusion/" target="_blank">ColdFusion</a> guy, having contributed to the <a href="http://www.coldboxframework.com/" target="_blank">ColdBox</a> project back in it's early days.
I'm excited about what Ext.Direct can mean for Ext - ColdFusion based applications, and I'll be deep diving this integration soon. I'll be curious to see how I can integrate <a href="/index.cfm/2009/2/13/Ext-Custom-Data-Reader-for-ColdFusion-More-Info" target="_blank">CFQueryReader</a> into the mix. I have an update to that which I hope to get out in the next few days.
Learning ExtJSColdFusion 8DevelopmentColdFusionExtJSWed, 13 May 2009 11:48:00 -0000https://www.cutterscrossing.com/index.cfm/2009/5/13/ExtDirect-Details-on-Data-MarshallingExt Conference: Day 1https://www.cutterscrossing.com/index.cfm/2009/4/15/Ext-Conference-Day-1
Day 1 of the <a href="http://www.extjs.com" target="_blank">Ext JS</a> Conference has been busy. Last night I had dinner and drinks with Jeff, a really nice guy who heads up development for a group writing web based interfaces to hardware appliances. Turns out Jeff is also the guy who introduced <a href="http://en.wikipedia.org/wiki/JavaScript" target="_blank">JavaScript</a> to <a href="http://www.crockford.com/" target="_blank">Douglas Crockford</a>, who was today's keynote speaker. Douglas made sure to recognize Jeff at the beginning of his keynote, which I thought was a nice nod to the guy who helped give him direction in his career. Douglas ran us through a brief history of hypertext, the evolution of the web, JavaScipt, and the browser wars, before touching on the future of the web, some of the things in the new JavaScript specs being worked on through <a href="http://www.ecma-international.org/" target="_blank">ECMA</a>, and the fact that none of it would matter for years until the browser manufacturers would implement it. He did give props to Flash, AIR and SilverLight for trying to further the web experience where it has lagged so much over the years. He also spoke about the pitfalls of security in Web 2.0 applications, and the primary culprits of those issues (the browser manufacturers).
Before I go a whole lot further, let me tell you that the conference center, and their service to us, is fantastic. Held at the <a href="http://www.ritzcarlton.com/en/Properties/Orlando/Default.htm" target="_blank">Ritz-Carlton Orlando</a>, the location is beautiful with it's palm lined drives, a well groomed golf course winding around several 'water traps', and a huge pool with several fountains. The food has been exceptional, with an incredible meal at lunch, complete with salad, brazed chicken, and desert with complete table service (this as part of the conference). No buffet sandwhiches here, though a breakfast buffet would have been nice before that 830 session this morning. My room is about half the size of the one I had at the <a href="http://www.rougehotel.com/" target="_blank">Hotel Rouge</a> last year for WebManiacs, but it is very comfortable and service keeps it nice. The shower did flood the entire bathroom this morning and the in-room coffee is horribly weak (and small), but everything can't be perfect. I've also carried on my conference tradition of bringing a sinus infection with me, which is keeping me from the after-session activities this evening, but the concierge was able to get me covered with some NyQuil for the evening to try to knock this stuff out of me.
Aaron Conran, fellow <a href="http://www.adobe.com/products/coldfusion/" target="_blank">ColdFusion</a> developer and one of the original contributors to <a href="http://www.coldboxframework.com/" target="_blank">ColdBox</a>, delivered the session covering what has changed and what's new within the 3.0 release, which is officially released tomorrow by Jack Slocum during his keynote. A great deal of work has been spent to make the upgrade fairly painless, with attention payed to backwards compatability, improvements to overall memory management (always important), and an eye towards keeping the code lean and mean, doing what is necessary to keep code size to a minimum and eliminate any unnecessary bloat. Menus and Toolbars have been converted into true Container objects, and the only significant markup changes appear to be to the Button objects.
There are several new visual components, maintaining the professional feel and consistency that has made Ext JS so compelling. Two that attracted a great deal of attention were the ListView and the Buffered Grid View. Sometimes you want the basic view afforded by a Grid, without having the need for (or the overhead of) things like drag and drop column ordering, sorting, and the like. The ListView gives you a basic grid style layout without all of that overhead, and a very trim DOM footprint as well, providing your view without unnecessary code bloat and browser memory overhead. The Buffered Grid View is a full Grid implementation that allows the browser to only render DOM for records in actual view, plus a few extra to make smooth transitions on scrolling, that automatically adds and removes DOM items when scrolling through your recordsets. The memory management improvements with this, and other changes, are very nice to see. Like the new .mon(), or 'managed on', methods that allow you to bind events in a temporary fashion, getting a proper cleanup from browser memory when that component gets destroyed. This was actually a method of Ext prior to it's 1.0 release, and has been heavily requested for this return.
Being the server-side guy that I've been for the last decade, the important new components came to the Ext.data package, with the addition of the Ext.data.Direct and Ext.data.DataWriter classes. Direct provides the ability to marshall your remote service call definitions into one container, calling your Ajax data requests from a centralized location with the ability to make multiple commands through a single Ajax request as well as call listeners on specific actions performed by Direct. Chris Scott did a presentation on Direct this afternoon, explaining how the developer has to create a server side Router to which Direct can attach it's requests, and showing us all a nice and very simple example (even if it was written in Ruby). The Ext Team provides a Reference for development of Routers in a number of server-side languages, including ColdFusion, PHP, Ruby, and .NET. The DataWriter class, covered in more depth in a future session, does for POST requests what the DataReader does for your GET requests, allowing a developer to define your routing of requests to send data back to the server. The combination of these classes with the existing classes of the Ext.data package really improves upon the power of using Ext with any server-side technology.
I was able to see the presentation on the Direct class because of a snafu with a scheduling change of the presentation of the Ext.air package. Originally these two sessions were the one conflict in my schedule, but they moved the Ext.air presentation session up a time slot (a change I didn't know of until after the fact) which allowed me the opportunity to sit in on Chris's session. Luckily the presentations are being recorded and are supposed to be available online after the conference. I'm glad they're doing this, since I had to leave during my final session of the day, on Ext.Core, due to the sinus issues that progressively worsened through the day. The Ext.air session is one I am very looking forward to watching.
The members of the Ext Team are a great group of guys. Abe, again, congratulated me on the book, and invited me to sit in on the Industry Experts panel tomorrow. I've had several people say they wished they had brought their copies of the <a href="http://www.packtpub.com/learning-ext-js/book" target="_blank">book</a> so Shea and I could have signed them for them. One attendee asked why <a href="http://www.packtpub.com" target="_blank">PackT</a> didn't have a booth setup somewhere, which is when I first noticed that their don't appear to be any outside sponsors for the conference. Ext appears to have financed the conference solely through the registration of the 200+ attending, which is pretty impressive considering the facility and it's services. On another note, ColdFusion has been publicly mentioned in several presentations, and with so many different server-side programmers represented here it is refreshing to hear so many comment that they should give ColdFusion a hard look.
And with that, I'm going to pack it in for the evening and pray that the NyQuil does it's job to kick the junk out of my head. Tomorrow looks to be an exciting day, with Jack's keynote releasing Ext 3.0, sessions on User Experience Design, Theming, and Performance Optimization. I'll be posting updates to <a href="http://www.twitter.com/cutterbl" target="_blank">Twitter</a> and my Facebook profile throughout the day. If you're here, make sure to come up and say hi.
Learning ExtJSColdFusion 8DevelopmentColdFusionAIRMy First ExtJS DataGridExtJSWed, 15 Apr 2009 01:55:00 -0000https://www.cutterscrossing.com/index.cfm/2009/4/15/Ext-Conference-Day-1Orlando Bound...https://www.cutterscrossing.com/index.cfm/2009/4/13/Orlando-Bound
So, in about an hour I head to the airport to attend the first ever <a href="http://www.extjs.com" target="_blank">Ext</a> Conference in Orlando, FL. I'll be posting updates throughout the conference, both here and on <a href="http://www.twitter.com/cutterbl" target="_blank">Twitter</a>. Jack Slocum and the Team will be releasing the long awaited 3.0, which looks to be a very compelling upgrade to the library. I'll be touching down around 6pm, and should get to the hotel sometime around 7 (I hope), so if you're already there look me up.
Learning ExtJSDevelopmentExtJSMon, 13 Apr 2009 15:47:00 -0000https://www.cutterscrossing.com/index.cfm/2009/4/13/Orlando-BoundLearning Ext JS Released, and Getting Presshttps://www.cutterscrossing.com/index.cfm/2008/12/8/Learning-Ext-JS-Released-and-Getting-Press
<iframe src="http://rcm.amazon.com/e/cm?t=cutterscrossi-20&o=1&p=8&l=as1&asins=1847195148&md=10FE9736YVPPT7A0FBG2&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px; float:left;margin:0 10px 10px 0;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>It's been a busy week, with a flood of feedback coming in on the newly released <a href="http://www.packtpub.com/learning-ext-js/book" target="_blank">Learning Ext JS</a>. In fact, I've been so busy that I forgot to tell my own readers that it was released! <a href="http://www.pbell.com/index.cfm/2008/11/24/Learning-ExtJS--New-Book" target="_blank">Peter</a>, <a href="http://www.bryantwebconsulting.com/blog/index.cfm/2008/11/17/CFBlogPicks-November-17-2008" target="_blank">Steve</a>, and <a href="http://jeremiahx.com/2008/12/02/coldfusion-blogger-now-a-published-author/" target="_blank">J.J.</a> all put up posts about the book coming out, for which I am grateful. Then <a href="http://www.trajiklyhip.com" target="_blank">Aaron</a> followed after the release, with a <a href="http://www.trajiklyhip.com/blog/index.cfm/2008/12/4/Congrats-to-Cutter-Blades--Learning-ExtJS-Released" target="_blank">post</a> on the <a href="http://www.webdevelopmentlive.com/web-development-classes/dealerskins-developer-makes-a-mark-in-the-tech-community.html" target="_blank">Press Release</a> that my employer put out about my involvement with the book. <a href="http://www.vinylfox.com/learning-extjs-book-due-mid-december/" target="_blank">Shea</a> and <a href="http://colinramsay.co.uk/diary/2008/12/04/learning-ext-js-ready-for-pre-order/" target="_blank">Colin</a> both have put up entries on the book, including a breakdown of the chapters. Then Shea announced it within the <a href="http://extjs.com/forum/showthread.php?t=54091" target="_blank">Ext JS Forums</a>, which really brought some positive response, and led to the first review on <a href="http://www.amazon.com/gp/product/1847195148?ie=UTF8&tag=cutterscrossi-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1847195148" target="_blank">Amazon</a><img src="http://www.assoc-amazon.com/e/ir?t=cutterscrossi-20&l=as2&o=1&a=1847195148" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.
<a href="http://www.packtpub.com/learning-ext-js/book" target="_blank"><img src="/images/BookCover_125x152.jpg" width="125" height="152" alt="Learning Ext JS Book Cover (photo)" style="float:right;margin:0 0 10px 10px;border:0;" /></a>But for me, the biggest thing about this rollercoaster was when my copies of the book came in on Friday. I was at work, but my wife calls, and she and my daughter are in tears after reading the book's dedication. When I came home that night, Teresa put the book in my hands and said "You did it!" It's an odd moment, standing there with this book in my hands, just staring at this cover with my name on the bottom. One of the coolest things. I IM'd about it with <a href="http://www.coldfusionjedi.com" target="_blank">Ray</a> on Saturday morning, who I had asked authoring advice of before taking on the project, and he said "The hard copy makes it real."
So, now I'm on to finishing off a huge side project. I'm "eating my own dogfood", so to speak, as it's a rather large application with a single page <a href="http://www.extjs.com" target="_blank">Ext</a> interface, communicating with <a href="http://www.adobe.com/products/coldfusion" target="_blank">ColdFusion</a> via Ajax. I hope everyone enjoys the book as much as Shea, Colin, and myself enjoyed writing it. Let us know what you think.
<InvalidTag type="text/javascript" src="http://www.assoc-amazon.com/s/link-enhancer?tag=cutterscrossi-20&o=1">
</script>
<noscript>
<img src="http://www.assoc-amazon.com/s/noscript?tag=cutterscrossi-20" alt="" />
</noscript>
Learning ExtJSColdFusion 8DevelopmentColdFusionExtJSMon, 08 Dec 2008 11:14:00 -0000https://www.cutterscrossing.com/index.cfm/2008/12/8/Learning-Ext-JS-Released-and-Getting-Press