Hi Ray,

   I tried to run the code you sent, before trying to understand it. Here
is the message I got:


   - An expression beginning with arrayAppend, on line 37, column

Thanks,
Lewis


On Sat, May 18, 2013 at 11:37 AM, Raymond Camden <[email protected]>wrote:

>
> Here is a sample I created. It loops over an original array (you could make
> it work with a list of course) and creates a new array that has 'combined'
> data. Ie, singlular dates + ranges.
>
> It then does a final loop just to make the 'pretty' formatted text.
>
> <cfscript>
> dates = [
> createDate(2013, 6, 10),
> createDate(2013, 6, 11),
> createDate(2013, 6, 14),
> createDate(2013, 6, 16),
> createDate(2013, 6, 17),
> createDate(2013, 6, 18),
> createDate(2013, 6, 22),
> createDate(2013, 6, 25),
> createDate(2013, 6, 29)
> ];
>
> writeDump(var=dates, label="Initial data");
>
> //new array for our formatted data
> newDates = [];
>
> for(x=1; x<=arrayLen(dates); x++) {
>
> if(x == 1) {
> arrayAppend(newDates, {first:dates[1],last:dates[1]});
> continue;
> }
>
> //is our date 1d past last date of previous?
> if(dateDiff("d", newDates[arrayLen(newDates)].last, dates[x]) == 1) {
> writeoutput('date diff is one');
> newDates[arrayLen(newDates)].last = dates[x];
> } else {
> arrayAppend(newDates, {first:dates[x], last:dates[x]});
> }
>
> }
>
> //At this point we are done...
> writeDump(var=newdates, label="New data");
>
> //But let's make it prettier
> for(x=1; x<=arrayLen(newDates); x++) {
> if(newDates[x].first == newDates[x].last) {
> newDates[x].formatted = dateFormat(newDates[x].first, "long");
> } else {
> newDates[x].formatted = dateFormat(newDates[x].first, "long") & " - " &
> dateFormat(newDates[x].last, "long");
> }
> }
>
> //At this point we are done...
> writeDump(var=newdates, label="Pretty New data");
>
> </cfscript>
>
>
> On Sat, May 18, 2013 at 9:40 AM, Lewis Billingsley <
> [email protected]> wrote:
>
> >
> > Hello,
> >
> >   I’ve been tasked to display, in a table dates from a database, but the
> > difficulty is that whenever there are 2 or more in a row, a range should
> be
> > displayed.
> >
> > The table now looks like this:
> >
> > May 27, 2013
> > June 1, 2013
> > June 2, 2013
> > June 3, 2013
> > July 4, 2013
> >
> > It should look like this:
> > May 27, 2013
> > June 1, 2013 - June 3, 2013
> > July 4, 2013
> >
> > I tried to get it into a list, so I could display listFirst, List,Last,
> > but I can’t find a way to compare the last record to the current record
> to
> > get into a loop (if indeed, my loop is right)
> > Here’s the code:
> > <tbody>
> >   <cfoutput query="currentClosures">
> >   <cfset thisDate = #holidayDate#>
> >       <cfset lastDate = #thisDate#>
> >      <cfset rangeList = ValueList(currentClosures.holidayDate)>
> >                     <cfif DateDiff( "d", thisDate, lastDate) EQ 1>
> >                     <cfloop query="currentClosures">
> >                         <cfset rangeList = ListAppend(rangeList,
> > #holidayDate#)>
> >                         <cfset showDate = ListFirst(rangeList)>
> >                         <cfset lastDate = DateAdd("d", -1, thisDate)>
> >                     </cfloop>
> >                      <cfelse>
> >                        <cfset showDate = #holidayDate#>
> >                   </cfif>
> >     <tr>
> >                <td class="left" scope="row">
> >
> >              #showDate#
> > </td>
> >
> > Thanks much,
> > Lewis
> >
> >
>
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion
Archive: 
http://www.houseoffusion.com/groups/cf-newbie/message.cfm/messageid:6059
Subscription: http://www.houseoffusion.com/groups/cf-newbie/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-newbie/unsubscribe.cfm

Reply via email to