diff --git a/lib/WebGUI/Asset/MatrixListing.pm b/lib/WebGUI/Asset/MatrixListing.pm
index 528331e8b..68da4beed 100644
--- a/lib/WebGUI/Asset/MatrixListing.pm
+++ b/lib/WebGUI/Asset/MatrixListing.pm
@@ -16,7 +16,9 @@ package WebGUI::Asset::MatrixListing;
use strict;
use Tie::IxHash;
-use base 'WebGUI::Asset';
+use Class::C3;
+use base qw(WebGUI::AssetAspect::Comments WebGUI::Asset);
+#use base 'WebGUI::Asset';
use WebGUI::Utility;
@@ -53,7 +55,7 @@ These methods are available from this class:
sub addRevision {
my $self = shift;
- my $newSelf = $self->SUPER::addRevision(@_);
+ my $newSelf = $self->next::method(@_);
return $newSelf;
}
@@ -110,6 +112,11 @@ sub definition {
label =>$i18n->get("version label"),
hoverHelp =>$i18n->get("version description")
},
+ score => {
+ defaultValue =>0,
+ autoGenerate =>0,
+ noFormPost =>1,
+ },
views => {
defaultValue =>0,
autoGenerate =>0,
@@ -182,7 +189,7 @@ sub definition {
className=>'WebGUI::Asset::MatrixListing',
properties=>\%properties
});
- return $class->SUPER::definition($session, $definition);
+ return $class->next::method($session, $definition);
}
@@ -198,7 +205,7 @@ sub definition {
sub duplicate {
my $self = shift;
- my $newAsset = $self->SUPER::duplicate(@_);
+ my $newAsset = $self->next::method(@_);
return $newAsset;
}
@@ -229,7 +236,7 @@ sub getEditForm {
my $session = $self->session;
my $db = $session->db;
my $matrixId = $self->getParent->getId;
- my $tabform = $self->SUPER::getEditForm();
+ my $tabform = $self->next::method();#SUPER::getEditForm();
my $i18n = WebGUI::International->new($session, 'Asset_MatrixListing');
#$self->session->style->setScript($self->session->url->extras('FileUploadControl.js'), {type =>'text/javascript'});
@@ -339,7 +346,7 @@ Making private. See WebGUI::Asset::indexContent() for additonal details.
sub indexContent {
my $self = shift;
- my $indexer = $self->SUPER::indexContent;
+ my $indexer = $self->next::method;
$indexer->setIsPublic(0);
}
@@ -354,7 +361,7 @@ See WebGUI::Asset::prepareView() for details.
sub prepareView {
my $self = shift;
- $self->SUPER::prepareView();
+ $self->next::method();
my $template = WebGUI::Asset::Template->new($self->session, $self->getParent->get('detailTemplateId'));
$template->prepare;
$self->{_viewTemplate} = $template;
@@ -372,18 +379,26 @@ Used to process properties from the form posted.
sub processPropertiesFromFormPost {
my $self = shift;
my $session = $self->session;
+ my $score = 0;
- $self->SUPER::processPropertiesFromFormPost;
+ $self->next::method(@_);#SUPER::processPropertiesFromFormPost;
my $attributes = $session->db->read("select * from Matrix_attribute where assetId = ?",[$self->getParent->getId]);
while (my $attribute = $attributes->hashRef) {
my $name = 'attribute_'.$attribute->{attributeId};
- #my $value = $session->form->process($name);
- my $value = $session->form->process($name,$attribute->{fieldType},$attribute->{defaultValue},$attribute);
+ my $value;
+ if ($attribute->{fieldType} eq 'MatrixCompare'){
+ $value = $session->form->process($name);
+ $score = $score + $value;
+ }
+ else{
+ $value = $session->form->process($name,$attribute->{fieldType},$attribute->{defaultValue},$attribute);
+ }
$session->db->write("replace into MatrixListing_attribute (matrixId, matrixListingId, attributeId, value)
values (?, ?, ?, ?)",
[$self->getParent->getId,$self->getId,$attribute->{attributeId},$value]);
}
+ $self->update({score => $score});
$self->requestAutoCommit;
}
@@ -407,7 +422,7 @@ sub purge {
$db->write("delete from MatrixListing_rating where listingId=?" ,[$self->getId]);
$db->write("delete from MatrixListing_ratingSummary where listingId=?" ,[$self->getId]);
- return $self->SUPER::purge;
+ return $self->next::method;
}
#-------------------------------------------------------------------
@@ -420,7 +435,7 @@ This method is called when data is purged by the system.
sub purgeRevision {
my $self = shift;
- return $self->SUPER::purgeRevision;
+ return $self->next::method;
}
#-------------------------------------------------------------------
@@ -495,6 +510,7 @@ sub view {
$var->{emailSent} = 1;
}
$var->{controls} = $self->getToolbar;
+ $var->{comments} = $self->getFormattedComments(),
$var->{productName} = $var->{title};
$var->{lastUpdated_epoch} = $self->get('lastUpdated');
$var->{lastUpdated_date} = $self->session->datetime->epochToHuman($self->get('lastUpdated'),"%z");
@@ -536,8 +552,57 @@ sub view {
my $storage = $file->getStorageLocation;
my @files = @{ $storage->getFiles } if (defined $storage);
if (scalar(@files)) {
- $var->{screenshots} = $file->getFilePreview($storage);
+ #$var->{screenshots} = $file->getFilePreview($storage);
}
+ $var->{screenshots} = qq|
+
+
+
+
+|;
}
# Rating form
@@ -641,7 +706,7 @@ sub view {
);
$var->{emailForm} = $mailForm->print;
- return $self->processTemplate($var,undef, $self->{_viewTemplate});
+ return $self->getParent->processStyle($self->processTemplate($var,undef, $self->{_viewTemplate}));
}
@@ -655,6 +720,9 @@ Redirects to the manufacturerUrl or productUrl and increments clicks.
sub www_click {
my $self = shift;
+
+ return $self->session->privilege->noAccess() unless $self->canView;
+
my $session = $self->session;
$self->incrementCounter('clicks');
@@ -688,6 +756,118 @@ sub www_edit {
#-------------------------------------------------------------------
+=head2 www_getScreenshots ( )
+
+Returns the screenshots as xml.
+
+=cut
+
+sub www_getScreenshots {
+ my $self = shift;
+
+ return $self->session->privilege->noAccess() unless $self->canView;
+
+ $self->session->http->setMimeType('text/xml');
+
+ my $xml = qq |
+
+
+|;
+
+ if ( $self->get('screenshots') ) {
+ my $fileObject = WebGUI::Form::File->new($self->session,{ value=>$self->get('screenshots') });
+ my $storage = $fileObject->getStorageLocation;
+ my $path = $storage->getPath;
+ my @files = @{ $storage->getFiles } if (defined $storage);
+ foreach my $file (@files) {
+ unless ($file =~ m/^thumb-/){
+ my $thumb = 'thumb-'.$file;
+ $xml .= "
+
+ 400
+ 300
+ Slide One]]>
+
+ ".$storage->getUrl($file)."
+ 5
+ ".$storage->getUrl($thumb)."
+
+ ";
+ }
+ }
+ }
+
+ $xml .= qq |
+
+
+|;
+
+ return $xml;
+}
+
+#-------------------------------------------------------------------
+
+=head2 www_getScreenshotsConfig ( )
+
+Returns the xml config file for the ukplayer that displays the screenshots.
+
+=cut
+
+sub www_getScreenshotsConfig {
+ my $self = shift;
+
+ return $self->session->privilege->noAccess() unless $self->canView;
+
+ $self->session->http->setMimeType('text/xml');
+
+ my $xml = qq|
+
+
+ ?func=getScreenshots
+
+ 400
+ 300
+ 0xDDDDEE
+ 20
+ 100
+ 100
+
+ Verdana
+ 12
+ 0xCCCCCC
+ 0xCCCCCC
+ 0x000000
+ true
+
+ 0xCCCCCC
+ 0xCCCCCC
+ 0x000000
+ false
+
+ 48
+ 36
+ 0x000000
+ true
+ 100
+ 5
+
+ false
+ true
+ false
+ false
+
+
+
+
+|;
+
+ return $xml;
+}
+
+#-------------------------------------------------------------------
+
=head2 www_rate ( )
Saves a rating of a matrix listing and returns the listing view.
diff --git a/lib/WebGUI/Asset/Wobject/Matrix.pm b/lib/WebGUI/Asset/Wobject/Matrix.pm
index c4173421a..cc45f4033 100644
--- a/lib/WebGUI/Asset/Wobject/Matrix.pm
+++ b/lib/WebGUI/Asset/Wobject/Matrix.pm
@@ -15,8 +15,10 @@ $VERSION = "2.0.0";
use strict;
use warnings;
use Tie::IxHash;
+use JSON;
use WebGUI::International;
use WebGUI::Utility;
+use WebGUI::Asset::MatrixListing;
use base 'WebGUI::Asset::Wobject';
#----------------------------------------------------------------------------
@@ -94,14 +96,14 @@ sub definition {
hoverHelp =>$i18n->get('detail template description'),
label =>$i18n->get('detail template label'),
},
- ratingDetailTemplateId=>{
- defaultValue =>"matrixtmpl000000000004",
- fieldType =>"template",
- tab =>"display",
- namespace =>"Matrix/RatingDetail",
- hoverHelp =>$i18n->get('rating detail template description'),
- label =>$i18n->get('rating detail template label'),
- },
+# ratingDetailTemplateId=>{
+# defaultValue =>"matrixtmpl000000000004",
+# fieldType =>"template",
+# tab =>"display",
+# namespace =>"Matrix/RatingDetail",
+# hoverHelp =>$i18n->get('rating detail template description'),
+# label =>$i18n->get('rating detail template label'),
+# },
compareTemplateId=>{
defaultValue =>"matrixtmpl000000000002",
fieldType =>"template",
@@ -328,27 +330,16 @@ sub getCompareForm {
my (%options, @listings);
tie %options, 'Tie::IxHash';
- if ($self->get('defaultSort') eq 'score'){
- my @unorderedListings = @{ $self->getLineage(['descendants'], {
- includeOnlyClasses => ['WebGUI::Asset::MatrixListing'],
- returnObjects => 1,
- }) };
- foreach my $listing (@unorderedListings) {
- }
- # sort an array of hashrefs:
- # @listings = sort { $$a{'ques'} <=> $$b{'ques'} } @listings;
- }
- else{
- my $sortDirection = " asc";
- if ($self->get('defaultSort') eq "revisionDate"){
- $sortDirection = " desc";
- }
- @listings = @{ $self->getLineage(['descendants'], {
- includeOnlyClasses => ['WebGUI::Asset::MatrixListing'],
- orderByClause => $self->get('defaultSort').$sortDirection,
- returnObjects => 1,
- }) };
+ my $sortDirection = " asc";
+ if ( WebGUI::Utility::isIn($self->get('defaultSort'),qw(revisionDate score)) ){
+ $sortDirection = " desc";
}
+ @listings = @{ $self->getLineage(['descendants'], {
+ includeOnlyClasses => ['WebGUI::Asset::MatrixListing'],
+ joinClass => "WebGUI::Asset::MatrixListing",
+ orderByClause => $self->get('defaultSort').$sortDirection,
+ returnObjects => 1,
+ }) };
# Create an options hash based on the orderd array of listings.
foreach my $listing (@listings){
$options{$listing->getId} = ''.$listing->get('title').'';
@@ -365,17 +356,19 @@ sub getCompareForm {
name=>"func",
value=>"compare"
})
- .WebGUI::Form::checkList($self->session, {
- name=>"listingId",
- vertical=>1,
- value=>\@selectedListingIds,
- options=>\%options,
- })
+ .'
'
+# .WebGUI::Form::checkList($self->session, {
+# name=>"listingId",
+# vertical=>1,
+# value=>\@selectedListingIds,
+# options=>\%options,
+# })
."
"
.WebGUI::Form::submit($self->session,{
value=>"compare"
})
.WebGUI::Form::formFooter($self->session);
+ #.' ';
return $form;
}
@@ -449,6 +442,24 @@ sub view {
my $session = $self->session;
my $db = $session->db;
+ # javascript and css files for compare form datatable
+ $self->session->style->setScript($self->session->url->extras('yui/build/json/json-min.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/connection/connection-min.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/get/get-min.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/element/element-beta-min.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/datasource/datasource-beta-min.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/datatable/datatable-beta-min.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('wobject/Matrix/matrix.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setLink($self->session->url->extras('yui/build/datatable/assets/skins/sam/datatable.css'),
+ {type =>'text/css', rel=>'stylesheet'});
+
#This automatically creates template variables for all of your wobject's properties.
my $var = $self->get;
$var->{isLoggedIn} = ($self->session->user->userId ne "1");
@@ -610,6 +621,66 @@ assetData.revisionDate
#-------------------------------------------------------------------
+=head2 www_compare ( )
+
+Returns the compare screen
+
+=cut
+
+sub www_compare {
+
+ my $self = shift;
+ my $var = $self->get;
+ my @listingIds = @_;
+ my @columnKeys = ['name'];
+ #my @listingIds = ['AwioUvaZXmAEaFw20t-x3Q', 'CWNjAHcmh0pEF6WJooomJA'];
+ unless (scalar(@listingIds)) {
+ @listingIds = $self->session->form->checkList("listingId");
+ }
+
+ $self->session->style->setScript($self->session->url->extras('yui/build/yahoo/yahoo-min.js'),
+ {type => 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/dom/dom-min.js'),
+ {type => 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/event/event-min.js'),
+ {type => 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/json/json-min.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/connection/connection-min.js'),
+ {type => 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/get/get-min.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/element/element-beta-min.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/datasource/datasource-beta-min.js'),
+ {type => 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/datatable/datatable-beta-min.js'),
+ {type =>'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('yui/build/button/button-min.js'),
+ {type =>'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('wobject/Matrix/matrixCompareList.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setScript($self->session->url->extras('wobject/Matrix/matrix.js'), {type =>
+ 'text/javascript'});
+ $self->session->style->setLink($self->session->url->extras('yui/build/datatable/assets/skins/sam/datatable.css'),
+ {type =>'text/css', rel=>'stylesheet'});
+
+ foreach my $listingId (@listingIds){
+ my $listingId_safe = $listingId;
+ $listingId_safe =~ s/-//g;
+ push(@columnKeys, $listingId_safe);
+ }
+
+ $var->{javascript} = "";
+
+ return $self->processStyle($self->processTemplate($var,$self->get("compareTemplateId")));;
+}
+
+#-------------------------------------------------------------------
+
=head2 www_deleteAttribute ( )
Deletes an Attribute, including listing data for this attribute.
@@ -805,6 +876,161 @@ sub www_editAttributeSave {
#-------------------------------------------------------------------
+=head2 www_getCompareFormData ( )
+
+Returns the compare form data as JSON.
+
+=cut
+
+sub www_getCompareFormData {
+
+ my $self = shift;
+ my @results;
+ my $sortDirection = ' asc';
+
+ $self->session->http->setMimeType("application/json");
+=cut
+ my @listings = @{ $self->getLineage(['descendants'], {
+ includeOnlyClasses => ['WebGUI::Asset::MatrixListing'],
+ joinClass => "WebGUI::Asset::MatrixListing",
+ orderByClause => $self->get('defaultSort').$sortDirection,
+ returnObjects => 1,
+ }) };
+=cut
+ my $sql = "
+ select
+ assetData.title,
+ assetData.url,
+ listing.assetId,
+ listing.views,
+ listing.compares,
+ listing.clicks,
+ listing.lastUpdated
+ from MatrixListing as listing
+ left join asset on listing.assetId = asset.assetId
+ left join assetData on assetData.assetId = listing.assetId and listing.revisionDate =
+assetData.revisionDate
+ where
+ asset.parentId=?
+ and asset.state='published'
+ and asset.className='WebGUI::Asset::MatrixListing'
+ and assetData.revisionDate=(
+ select
+ max(revisionDate)
+ from
+ assetData
+ where
+ assetData.assetId=asset.assetId
+ and (status='approved' or status='archived')
+ )
+ and status='approved'
+ group by
+ assetData.assetId
+ order by ".$self->get('defaultSort').$sortDirection;
+
+ my $results = $self->session->db->buildArrayRefOfHashRefs($sql,[$self->getId]);
+=cut
+push(@results,{
+ Title=>$data->{title},
+ Views=>$data->{views},
+ Compares=>$data->{compares},
+ Clicks=>$data->{clicks}
+ });
+=cut
+ # Create an options hash based on the orderd array of listings.
+=cut
+ foreach my $listing (@listings){
+ push(@results,{Title=>$listing->get('title'),Phone=>'123'})
+ #$options{$listing->getId} = ''.$listing->get('title').'';
+ }
+=cut
+ my $jsonOutput;
+ $jsonOutput->{ResultSet} = {Result=>$results};
+
+ return JSON->new->utf8->encode($jsonOutput);
+=cut
+ return JSON->new->utf8->encode({
+ ResultSet=>{
+ totalResultsAvailable=>1,
+ totalResultsReturned=>1,
+ firstResultPosition=>1,
+ Result=>[{
+ Title=>"Pizza Depot",
+ Phone=>"(408) 245-7760",
+ City=>"Sunnyvale",
+ ClickUrl=>"http:\/\/local.yahoo.com\/details?id=21332021&stx=pizza&csz=Sunnyvale+CA"
+ }]
+ }
+ });
+=cut
+}
+
+#-------------------------------------------------------------------
+
+=head2 www_getCompareListData ( )
+
+Returns the compare list data as JSON.
+
+=cut
+
+sub www_getCompareListData {
+
+ my $self = shift;
+ my @listingIds = @_;
+ unless (scalar(@listingIds)) {
+ @listingIds = $self->session->form->checkList("listingId");
+ }
+
+ my $session = $self->session;
+ my (@results,$results,@columnDefs);
+ my $sortDirection = ' asc';
+
+ foreach my $listingId (@listingIds){
+ my $listing = WebGUI::Asset::MatrixListing->new($session,$listingId);
+ my $listingId_safe = $listingId;
+ $listingId_safe =~ s/-//g;
+ push(@columnDefs,{key=>$listingId_safe,label=>$listing->get('title')});
+ }
+
+ my $jsonOutput;
+ $jsonOutput->{ColumnDefs} = \@columnDefs;
+
+ foreach my $category (keys %{$self->getCategories}) {
+ my $fields = " a.name, a.fieldType ";
+ my $from = "from Matrix_attribute a";
+ my $tableCount = "b";
+ foreach my $listingId (@listingIds) {
+ my $listingId_safe = $listingId;
+ $listingId_safe =~ s/-//g;
+ $fields .= ", ".$tableCount.".value as `$listingId_safe`";
+ $from .= " left join MatrixListing_attribute ".$tableCount." on a.attributeId="
+ .$tableCount.".attributeId and ".$tableCount.".matrixListingId=? ";
+ $tableCount++;
+ }
+ push(@results, @{ $self->session->db->buildArrayRefOfHashRefs(
+ "select $fields $from where a.category=? and a.assetId=? order by a.name",
+ [@listingIds,$category,$self->getId]
+ ) });
+ }
+ foreach my $result (@results){
+ foreach my $listingId (@listingIds) {
+ my $listingId_safe = $listingId;
+ $listingId_safe =~ s/-//g;
+ if ($result->{fieldType} eq 'MatrixCompare'){
+ $result->{$listingId_safe} = WebGUI::Form::MatrixCompare->new( $self->session,
+ { value=>$result->{$listingId_safe} },defaultValue=>0)->getValueAsHtml;
+ }
+ }
+ }
+
+ $jsonOutput->{ResultSet} = {Result=>\@results};
+
+ $session->http->setMimeType("application/json");
+
+ return JSON->new->utf8->encode($jsonOutput);
+}
+#-------------------------------------------------------------------
+
=head2 www_listAttributes ( )
Lists all attributes of this Matrix.
diff --git a/www/extras/wobject/Matrix/matrix.js b/www/extras/wobject/Matrix/matrix.js
new file mode 100644
index 000000000..824d6c42a
--- /dev/null
+++ b/www/extras/wobject/Matrix/matrix.js
@@ -0,0 +1,74 @@
+var myCompareTable;
+
+YAHOO.util.Event.addListener(window, "load", function() {
+ YAHOO.example.XHR_JSON = new function() {
+ this.formatUrl = function(elCell, oRecord, oColumn, sData) {
+ elCell.innerHTML = "" + sData + "";
+ };
+
+ this.formatCheckBox = function(elCell, oRecord, oColumn, sData) {
+ elCell.innerHTML = "";
+ };
+
+ var myColumnDefs = [
+ {key:"assetId",label:"",sortable:false,formatter:this.formatCheckBox},
+ {key:"title", label:"Name", sortable:true, formatter:this.formatUrl},
+ {key:"views", sortable:true},
+ {key:"clicks", sortable:true},
+ {key:"compares", sortable:true}
+ ];
+
+ this.myDataSource = new YAHOO.util.DataSource("?");
+ this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ this.myDataSource.connXhrMode = "queueRequests";
+ this.myDataSource.responseSchema = {
+ resultsList: "ResultSet.Result",
+ fields: ["title","views","clicks","compares","assetId"]
+ };
+
+ this.myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs,
+ this.myDataSource, {initialRequest:"func=getCompareFormData"});
+
+ var oColumn = this.myDataTable.getColumn(3);
+ this.myDataTable.hideColumn(oColumn);
+
+
+ var btnAddRows = new YAHOO.widget.Button("hidecolumn");
+ btnAddRows.on("click", function(e) {
+
+ //var oColumn = this.myDataTable.getColumn(3);
+ this.myDataTable.sortColumn(oColumn);
+ },this,true);
+
+
+ var myCallback = function() {
+ this.set("sortedBy", null);
+ this.onDataReturnAppendRows.apply(this,arguments);
+ };
+
+ };
+});
+
+//function sort() {
+// myCompareTable.sortColumn()
+// var oColumn = myCompareTable.getColumn(3);
+// myCompareTable.hideColumn(oColumn);
+//}
+
+function bla() {
+ var callback1 = {
+ success : myCallback,
+ failure : myCallback,
+ scope : this.myDataTable
+ };
+ this.myDataSource.sendRequest("func=getCompareFormData",
+ callback1);
+
+ var callback2 = {
+ success : myCallback,
+ failure : myCallback,
+ scope : this.myDataTable
+ };
+ this.myDataSource.sendRequest("func=getCompareFormData",
+ callback2);
+}
\ No newline at end of file
diff --git a/www/extras/wobject/Matrix/matrixCompareList.js b/www/extras/wobject/Matrix/matrixCompareList.js
new file mode 100644
index 000000000..f613dbbd3
--- /dev/null
+++ b/www/extras/wobject/Matrix/matrixCompareList.js
@@ -0,0 +1,86 @@
+//var myCompareTable;
+
+YAHOO.util.Event.addListener(window, "load", function() {
+ YAHOO.example.XHR_JSON = new function() {
+
+ var myColumnDefs = [
+ {key:"name"}
+ ];
+
+ this.myDataSource = new YAHOO.util.DataSource("?");
+ this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ this.myDataSource.connXhrMode = "queueRequests";
+ this.myDataSource.responseSchema = {
+ resultsList: "ResultSet.Result",
+ fields: columnKeys //["name","AwioUvaZXmAEaFw20tx3Q","CWNjAHcmh0pEF6WJooomJA"]
+ };
+
+ var uri = "func=getCompareListData";
+ for (var i = 0; i < listingIds.length; i++) {
+ uri = uri+';listingId='+listingIds[i];
+ }
+
+ var myDataTable = new YAHOO.widget.DataTable("compareList", myColumnDefs,
+ this.myDataSource, {initialRequest:uri});
+
+ //var oColumn = this.myDataTable.getColumn(3);
+ //this.myDataTable.hideColumn(oColumn);
+
+
+ //var btnAddRows = new YAHOO.widget.Button("hidecolumn");
+ //btnAddRows.on("click", function(e) {
+
+ //var oColumn = this.myDataTable.getColumn(3);
+ // this.myDataTable.sortColumn(oColumn);
+ //},this,true);
+
+ this.myDataSource.doBeforeParseData = function (oRequest, oFullResponse) {
+ myDataTable.getRecordSet().reset();
+ var existingColumns = myDataTable.getColumnSet().keys;
+ for (var i = 0; i < existingColumns.length; i++) {
+ if(i > 0){
+ myDataTable.removeColumn(existingColumns[1]);
+ }
+ }
+ if (oFullResponse.ColumnDefs) {
+ var len = oFullResponse.ColumnDefs.length;
+
+ for (var i = 0; i < len; i++) {
+ var c = oFullResponse.ColumnDefs[i];
+ myDataTable.insertColumn(c);
+ }
+ }
+ return oFullResponse;
+ }
+
+ var myCallback = function() {
+ this.set("sortedBy", null);
+ this.onDataReturnAppendRows.apply(this,arguments);
+ };
+
+ var myCallback2 = function() {
+ this.getRecordSet().reset();
+ //this.render();
+ this.set("sortedBy", null);
+ this.onDataReturnAppendRows.apply(this,arguments);
+ this.getRecordSet().reset();
+ };
+
+
+ var callback2 = {
+ success : myCallback,
+ failure : myCallback,
+ scope : myDataTable
+ };
+ this.myDataSource.sendRequest("func=getCompareListData;listingId=CWNjAHcmh0pEF6WJooomJA",
+ callback2);
+
+ };
+});
+
+//function sort() {
+// myCompareTable.sortColumn()
+// var oColumn = myCompareTable.getColumn(3);
+// myCompareTable.hideColumn(oColumn);
+//}
+