diff --git a/lib/WebGUI/Asset/MatrixListing.pm b/lib/WebGUI/Asset/MatrixListing.pm
index 68da4beed..27416611d 100644
--- a/lib/WebGUI/Asset/MatrixListing.pm
+++ b/lib/WebGUI/Asset/MatrixListing.pm
@@ -325,9 +325,9 @@ sub incrementCounter {
my $counter = shift;
my $currentIp = $self->session->env->get("HTTP_X_FORWARDED_FOR");
- print "current ip: ".$currentIp."
";
+ #print "current ip: ".$currentIp."
";
- print "dsfsdf lastIp : ".$self->get($counter."LastIp")."
";
+ #print "dsfsdf lastIp : ".$self->get($counter."LastIp")."
";
unless ($self->get($counter."LastIp") eq $currentIp) {
$self->update({
$counter."LastIp" => $currentIp,
diff --git a/lib/WebGUI/Asset/Wobject/Matrix.pm b/lib/WebGUI/Asset/Wobject/Matrix.pm
index 4eaab8331..c4bf353ca 100644
--- a/lib/WebGUI/Asset/Wobject/Matrix.pm
+++ b/lib/WebGUI/Asset/Wobject/Matrix.pm
@@ -478,6 +478,8 @@ sub view {
my $db = $session->db;
# javascript and css files for compare form datatable
+ $self->session->style->setLink($self->session->url->extras('yui/build/datatable/assets/skins/sam/datatable.css'),
+ {type =>'text/css', rel=>'stylesheet'});
$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 =>
@@ -490,12 +492,11 @@ sub view {
'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/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");
$var->{addMatrixListing_url} = $self->getUrl('func=add;class=WebGUI::Asset::MatrixListing');
@@ -509,9 +510,10 @@ sub view {
limit => 1,
returnObjects => 1,
}) };
- $var->{bestViews_url} = $bestViews_listing->getUrl;
- $var->{bestViews_count} = $bestViews_listing->get('views');
- $var->{bestViews_name} = $bestViews_listing->get('title');
+ $var->{bestViews_url} = $bestViews_listing->getUrl;
+ $var->{bestViews_count} = $bestViews_listing->get('views');
+ $var->{bestViews_name} = $bestViews_listing->get('title');
+ $var->{bestViews_sortButton} = "
";
# Get the MatrixListing with the most compares as an object using getLineage.
@@ -522,9 +524,10 @@ sub view {
limit => 1,
returnObjects => 1,
}) };
- $var->{bestCompares_url} = $bestCompares_listing->getUrl;
- $var->{bestCompares_count} = $bestCompares_listing->get('views');
- $var->{bestCompares_name} = $bestCompares_listing->get('title');
+ $var->{bestCompares_url} = $bestCompares_listing->getUrl;
+ $var->{bestCompares_count} = $bestCompares_listing->get('views');
+ $var->{bestCompares_name} = $bestCompares_listing->get('title');
+ $var->{bestCompares_sortButton} = "
";
# Get the MatrixListing with the most clicks as an object using getLineage.
my ($bestClicks_listing) = @{ $self->getLineage(['descendants'], {
@@ -534,10 +537,12 @@ sub view {
limit => 1,
returnObjects => 1,
}) };
- $var->{bestClicks_url} = $bestClicks_listing->getUrl;
- $var->{bestClicks_count} = $bestClicks_listing->get('views');
- $var->{bestClicks_name} = $bestClicks_listing->get('title');
+ $var->{bestClicks_url} = $bestClicks_listing->getUrl;
+ $var->{bestClicks_count} = $bestClicks_listing->get('views');
+ $var->{bestClicks_name} = $bestClicks_listing->get('title');
+ $var->{bestClicks_sortButton} = "
";
+=cut
# Get the MatrixListing that was last updated as an object using getLineage.
my ($bestUpdated_listing) = @{ $self->getLineage(['descendants'], {
@@ -546,9 +551,11 @@ sub view {
limit => 1,
returnObjects => 1,
}) };
- $var->{bestUpdated_url} = $bestUpdated_listing->getUrl;
- $var->{bestUpdated_date} = $session->datetime->epochToHuman( $bestUpdated_listing->get('revisionDate') );
- $var->{bestUpdated_name} = $bestUpdated_listing->get('title');
+ $var->{bestUpdated_url} = $bestUpdated_listing->getUrl;
+ $var->{bestUpdated_date} = $session->datetime->epochToHuman( $bestUpdated_listing->get('revisionDate') );
+ $var->{bestUpdated_name} = $bestUpdated_listing->get('title');
+ $var->{bestUpdated_sortButton} = "
";
+=cut
# Get the 5 MatrixListings that were last updated as objects using getLineage.
@@ -565,6 +572,8 @@ sub view {
lastUpdated => $self->session->datetime->epochToHuman($lastUpdatedListing->get('revisionDate'),"%z")
});
}
+ $var->{lastUpdated_sortButton} = "
";
+
# Get all the MatrixListings that are still pending.
@@ -702,7 +711,7 @@ sub www_compare {
foreach my $listingId (@listingIds){
my $listingId_safe = $listingId;
- $listingId_safe =~ s/-/_/g;
+ $listingId_safe =~ s/-/_____/g;
push(@columnKeys, $listingId_safe);
push(@columnKeys, $listingId_safe."_compareColor");
}
@@ -978,28 +987,42 @@ assetData.revisionDate
if($param =~ m/^search_/){
my $attributeId = $param;
$attributeId =~ s/^search_//;
- $attributeId =~ s/_/-/;
- my $listingValue = $session->db->quickScalar("
- select value from MatrixListing_attribute
- where attributeId = ? and matrixListingId = ?
+ $attributeId =~ s/_____/-/;
+ my ($listingValue,$fieldType) = $session->db->quickArray("
+ select value, fieldType from MatrixListing_attribute as listing
+ left join Matrix_attribute using(attributeId)
+ where listing.attributeId = ? and listing.matrixListingId = ?
",[$attributeId,$result->{assetId}]);
- $self->session->errorHandler->warn("attributeValue: ".$form->process($param).", listingvalue: ".$listingValue);
- if($form->process($param) eq $listingValue){
- $self->session->errorHandler->warn("--Checked--");
- $result->{checked} = 'checked';
+ $self->session->errorHandler->warn("fieldType:".$fieldType.", attributeValue: ".$form->process($param).", listingvalue: ".$listingValue);
+ if(($fieldType eq 'MatrixCompare') && ($listingValue < $form->process($param))){
+ undef $result->{checked};
+ last;
+ }
+ elsif(($fieldType ne 'MatrixCompare') && ($form->process($param) ne $listingValue)){
+ undef $result->{checked};
+ last;
}
else{
- undef $result->{checked};
+ $self->session->errorHandler->warn("--Checked--");
+ $result->{checked} = 'checked';
}
}
}
}
else{
+ $result->{assetId} =~ s/-/_____/g;
if(WebGUI::Utility::isIn($result->{assetId},@listingIds)){
$result->{checked} = 'checked';
}
}
- $result->{assetId} =~ s/-/_/g;
+ $result->{assetId} =~ s/-/_____/g;
+ $result->{url} = "/".$result->{url};
+ $result->{checkBox} = "{checked}){
+ $result->{checkBox} .= " checked='checked'";
+ }
+ $result->{checkBox} .= " onChange='javascript:compareFormButton()' class='compareCheckBox'>";
}
=cut
push(@results,{
@@ -1043,10 +1066,11 @@ sub www_getCompareListData {
my $sortDirection = ' asc';
foreach my $listingId (@listingIds){
- $listingId =~ s/_/-/g;
+ $listingId =~ s/_____/-/g;
my $listing = WebGUI::Asset::MatrixListing->new($session,$listingId);
+ $listing->incrementCounter("compares");
my $listingId_safe = $listingId;
- $listingId_safe =~ s/-/_/g;
+ $listingId_safe =~ s/-/_____/g;
push(@columnDefs,{key=>$listingId_safe,label=>$listing->get('title'),formatter=>"formatColors"});
}
@@ -1059,7 +1083,7 @@ sub www_getCompareListData {
my $tableCount = "b";
foreach my $listingId (@listingIds) {
my $listingId_safe = $listingId;
- $listingId_safe =~ s/-/_/g;
+ $listingId_safe =~ s/-/_____/g;
$fields .= ", ".$tableCount.".value as `$listingId_safe`";
$from .= " left join MatrixListing_attribute ".$tableCount." on a.attributeId="
.$tableCount.".attributeId and ".$tableCount.".matrixListingId=? ";
@@ -1072,9 +1096,9 @@ sub www_getCompareListData {
}
foreach my $result (@results){
foreach my $listingId (@listingIds) {
- $result->{attributId} =~ s/-/_/g;
+ $result->{attributId} =~ s/-/_____/g;
my $listingId_safe = $listingId;
- $listingId_safe =~ s/-/_/g;
+ $listingId_safe =~ s/-/_____/g;
if ($result->{fieldType} eq 'MatrixCompare'){
my $originalValue = $result->{$listingId_safe};
$result->{$listingId_safe.'_compareColor'} = $self->getCompareColor($result->{$listingId_safe});
@@ -1132,7 +1156,7 @@ sub www_search {
my $self = shift;
my $var = $self->get;
- #$var->{compareForm} = $self->getCompareForm;
+ $var->{compareForm} = $self->getCompareForm;
$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'),
@@ -1169,7 +1193,7 @@ sub www_search {
while (my $attribute = $attributes->hashRef) {
$attribute->{label} = $attribute->{name};
$attribute->{id} = $attribute->{attributeId};
- $attribute->{id} =~ s/-/_/g;
+ $attribute->{id} =~ s/-/_____/g;
$attribute->{extras} = " class='attributeSelect'";
if($attribute->{fieldType} eq 'Combo'){
$attribute->{fieldType} = 'SelectBox';
diff --git a/www/extras/wobject/Matrix/matrix.js b/www/extras/wobject/Matrix/matrix.js
index e37275de2..0783fd0e2 100644
--- a/www/extras/wobject/Matrix/matrix.js
+++ b/www/extras/wobject/Matrix/matrix.js
@@ -3,7 +3,7 @@ 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 + "";
+ elCell.innerHTML = "" + sData + "";
};
this.formatCheckBox = function(elCell, oRecord, oColumn, sData) {
@@ -16,11 +16,12 @@ YAHOO.util.Event.addListener(window, "load", function() {
};
var myColumnDefs = [
- {key:"assetId",label:"",sortable:false,formatter:this.formatCheckBox},
+ {key:"checkBox",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}
+ {key:"views", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
+ {key:"clicks", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
+ {key:"compares", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
+ {key:"lastUpdated", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}}
];
var uri = "func=getCompareFormData";
@@ -35,31 +36,65 @@ YAHOO.util.Event.addListener(window, "load", function() {
this.myDataSource.connXhrMode = "queueRequests";
this.myDataSource.responseSchema = {
resultsList: "ResultSet.Result",
- fields: ["title","views","clicks","compares","assetId","checked"]
+ fields: ["title","views","clicks","compares","checkBox","checked","lastUpdated","url"]
};
this.myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs,
this.myDataSource, {initialRequest:uri});
- var oColumn = this.myDataTable.getColumn(3);
- this.myDataTable.hideColumn(oColumn);
+ //var oColumn = this.myDataTable.getColumn(3);
+ this.myDataTable.hideColumn(this.myDataTable.getColumn(2));
+ this.myDataTable.hideColumn(this.myDataTable.getColumn(3));
+ this.myDataTable.hideColumn(this.myDataTable.getColumn(4));
+ this.myDataTable.hideColumn(this.myDataTable.getColumn(5));
+
-
- var btnAddRows = new YAHOO.widget.Button("hidecolumn");
- btnAddRows.on("click", function(e) {
-
- //var oColumn = this.myDataTable.getColumn(3);
- this.myDataTable.sortColumn(oColumn);
+ var btnSortByViews = new YAHOO.widget.Button("sortByViews");
+ btnSortByViews.on("click", function(e) {
+ this.myDataTable.sortColumn(this.myDataTable.getColumn(2));
},this,true);
+ var btnSortByClicks = new YAHOO.widget.Button("sortByClicks");
+ btnSortByClicks.on("click", function(e) {
+ this.myDataTable.sortColumn(this.myDataTable.getColumn(3));
+ },this,true);
+
+ var btnSortByCompares = new YAHOO.widget.Button("sortByCompares");
+ btnSortByCompares.on("click", function(e) {
+ this.myDataTable.sortColumn(this.myDataTable.getColumn(4));
+ },this,true);
+
+ var btnSortByUpdated = new YAHOO.widget.Button("sortByUpdated");
+ btnSortByUpdated.on("click", function(e) {
+ this.myDataTable.sortColumn(this.myDataTable.getColumn(5));
+ },this,true);
var myCallback = function() {
this.set("sortedBy", null);
this.onDataReturnAppendRows.apply(this,arguments);
};
+
+
+
+ //var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox');
+ //for (var i = compareCheckBoxes.length; i--; ) {
+ // alert('bla');
+ // compareCheckBoxes[i].onchange = compareFormButton;
+ //}
};
});
+ function compareFormButton () {
+ var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input');
+ //alert(compareCheckBoxes.length);
+ var checked = 0;
+ for (var i = compareCheckBoxes.length; i--; ) {
+ if(compareCheckBoxes[i].checked){
+ checked++;
+ }
+ }
+ //alert(checked);
+ }
//function sort() {
// myCompareTable.sortColumn()
diff --git a/www/extras/wobject/Matrix/matrixCompareList.js b/www/extras/wobject/Matrix/matrixCompareList.js
index d3228b363..c24f95761 100644
--- a/www/extras/wobject/Matrix/matrixCompareList.js
+++ b/www/extras/wobject/Matrix/matrixCompareList.js
@@ -93,7 +93,7 @@ YAHOO.util.Event.addListener(window, "load", function() {
scope : myDataTable
};
- var btnCompare = new YAHOO.widget.Button("compare");
+ var btnCompare = new YAHOO.widget.Button("compare",{disabled:true,id:"compareButton"});
btnCompare.on("click", function(e) {
var uri = "func=getCompareListData";
for (var i = 0; i < columnKeys.length; i++) {
@@ -107,6 +107,25 @@ YAHOO.util.Event.addListener(window, "load", function() {
this.myDataSource.sendRequest(uri,callback2);
},this,true);
+ //btnCompare.set("disabled",true);
+ alert(btnCompare.get("disabled"));
+
+
+ window.compareFormButton = function() {
+ var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input');
+ var checked = 0;
+ for (var i = compareCheckBoxes.length; i--; ) {
+ if(compareCheckBoxes[i].checked){
+ checked++;
+ }
+ }
+ if (checked > 1){
+ btnCompare.set("disabled",false);
+ }else{
+ btnCompare.set("disabled",true);
+ }
+ }
+
var btnStickied = new YAHOO.widget.Button("stickied");
btnStickied.on("click", function(e) {
var elements = myDataTable.getRecordSet().getRecords();
@@ -117,9 +136,7 @@ YAHOO.util.Event.addListener(window, "load", function() {
var checkBox = Dom.get(attributeId+"_stickied");
if (checkBox.checked == false){
elRow = myDataTable.getTrEl(elements[i]);
- //var styleNow = Dom.getStyle(elRow, "display");
- //alert(styleNow);
- Dom.setStyle(elRow, "display", "none");
+ Dom.setStyle(elRow, "display", "none");
}
}
hideStickies = 1;
diff --git a/www/extras/wobject/Matrix/matrixSearch.js b/www/extras/wobject/Matrix/matrixSearch.js
index e649479f3..3380ca361 100644
--- a/www/extras/wobject/Matrix/matrixSearch.js
+++ b/www/extras/wobject/Matrix/matrixSearch.js
@@ -1,10 +1,12 @@
-var myCompareTable;
+//var myCompareTable;
//var search;
YAHOO.util.Event.addListener(window, "load", function() {
YAHOO.example.XHR_JSON = new function() {
+ var Dom = YAHOO.util.Dom;
+
this.formatUrl = function(elCell, oRecord, oColumn, sData) {
- elCell.innerHTML = "" + sData + "";
+ elCell.innerHTML = "" + sData + "";
};
this.formatCheckBox = function(elCell, oRecord, oColumn, sData) {
@@ -19,7 +21,7 @@ YAHOO.util.Event.addListener(window, "load", function() {
};
var myColumnDefs = [
- {key:"assetId",label:"",sortable:false,formatter:this.formatCheckBox},
+ {key:"checkBox",label:""},//,sortable:false,formatter:this.formatCheckBox
{key:"title", label:"Name", sortable:true, formatter:this.formatUrl},
{key:"views", sortable:true},
{key:"clicks", sortable:true},
@@ -33,26 +35,27 @@ YAHOO.util.Event.addListener(window, "load", function() {
}
}
- var myDataSource = new YAHOO.util.DataSource("?");
- myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
- myDataSource.connXhrMode = "queueRequests";
- myDataSource.responseSchema = {
+ 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","checked"]
+ fields: ["title","views","clicks","compares","checkBox","checked","url"]
};
var myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs,
- myDataSource, {initialRequest:uri});
+ this.myDataSource, {initialRequest:uri});
- myDataSource.doBeforeParseData = function (oRequest, oFullResponse) {
+ this.myDataSource.doBeforeParseData = function (oRequest, oFullResponse) {
myDataTable.getRecordSet().reset();
return oFullResponse;
}
+ var myDataSource = this.myDataSource;
- var oColumn = myDataTable.getColumn(3);
- myDataTable.hideColumn(oColumn);
+ //var oColumn = myDataTable.getColumn(3);
+ //myDataTable.hideColumn(oColumn);
var myCallback = function() {
@@ -66,29 +69,27 @@ YAHOO.util.Event.addListener(window, "load", function() {
failure : myCallback,
scope : myDataTable
};
-
- var attributeSelects = YAHOO.util.Dom.getElementsByClassName('attributeSelect','select');
+
var reloadCompareForm = function() {
- myDataTable.getRecordSet().reset();
- myDataTable.initializeTable;
-
+ var attributeSelects = YAHOO.util.Dom.getElementsByClassName('attributeSelect','select');
+ var newUri = "func=getCompareFormData;search=1";
+ for (var i = attributeSelects.length; i--; ) {
+ newUri = newUri + ';search_' + attributeSelects[i].id + '=' + attributeSelects[i].value;
+ }
var elements = myDataTable.getRecordSet().getRecords();
alert(elements.length);
- // hide non-selected attributes
for(i=0; i