making all Matrix datatables templatable
This commit is contained in:
parent
b0a1e20053
commit
398f5203f4
10 changed files with 20 additions and 635 deletions
Binary file not shown.
Binary file not shown.
BIN
docs/upgrades/packages-7.7.9/matrix-default-view-template.wgpkg
Normal file
BIN
docs/upgrades/packages-7.7.9/matrix-default-view-template.wgpkg
Normal file
Binary file not shown.
BIN
docs/upgrades/packages-7.7.9/matrix-search-template.wgpkg
Normal file
BIN
docs/upgrades/packages-7.7.9/matrix-search-template.wgpkg
Normal file
Binary file not shown.
|
|
@ -710,8 +710,6 @@ sub view {
|
|||
{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/matrixListing.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'});
|
||||
|
||||
|
|
|
|||
|
|
@ -635,8 +635,6 @@ sub view {
|
|||
'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'});
|
||||
|
||||
my ($varStatistics,$varStatisticsEncoded);
|
||||
my $var = $self->get;
|
||||
|
|
@ -646,7 +644,7 @@ sub view {
|
|||
$var->{exportAttributes_url} = $self->getUrl('func=exportAttributes');
|
||||
$var->{listAttributes_url} = $self->getUrl('func=listAttributes');
|
||||
$var->{search_url} = $self->getUrl('func=search');
|
||||
$var->{compareForm_url} = $self->getUrl();
|
||||
$var->{matrix_url} = $self->getUrl();
|
||||
|
||||
my $maxComparisons;
|
||||
if($self->session->user->isVisitor){
|
||||
|
|
@ -658,10 +656,7 @@ sub view {
|
|||
else{
|
||||
$maxComparisons = $self->get('maxComparisonsPrivileged');
|
||||
}
|
||||
$var->{javascript} = "<script type='text/javascript'>\n".
|
||||
"var maxComparisons = ".$maxComparisons.";\n".
|
||||
"var matrixUrl = '".$self->getUrl."';\n".
|
||||
"</script>";
|
||||
$var->{maxComparisons} = $maxComparisons;
|
||||
|
||||
if ($self->canEdit){
|
||||
# Get all the MatrixListings that are still pending.
|
||||
|
|
@ -880,8 +875,6 @@ sub www_compare {
|
|||
{type =>'text/javascript'});
|
||||
$self->session->style->setScript($self->session->url->extras('yui/build/container/container-min.js'),
|
||||
{type =>'text/javascript'});
|
||||
$self->session->style->setScript($self->session->url->extras('wobject/Matrix/matrixCompareList.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'});
|
||||
$self->session->style->setScript($self->session->url->extras('hoverhelp.js'), {type =>
|
||||
|
|
@ -905,13 +898,12 @@ sub www_compare {
|
|||
$listingId_safe =~ s/-/_____/g;
|
||||
push(@responseFields, $listingId_safe, $listingId_safe."_compareColor");
|
||||
}
|
||||
|
||||
$var->{javascript} = "<script type='text/javascript'>\n".
|
||||
'var listingIds = new Array('.join(", ",map {'"'.$_.'"'} @listingIds).");\n".
|
||||
'var responseFields = new Array("attributeId", "name", "description","fieldType", "checked", '.join(", ",map {'"'.$_.'"'} @responseFields).");\n".
|
||||
"var maxComparisons = ".$maxComparisons.";\n".
|
||||
"var matrixUrl = '".$self->getUrl."';\n".
|
||||
"</script>";
|
||||
|
||||
$var->{maxComparisons} = $maxComparisons;
|
||||
$var->{matrixUrl} = $self->getUrl;
|
||||
$var->{listingIds} = join(", ",map {'"'.$_.'"'} @listingIds);
|
||||
$var->{responseFields} = '"attributeId", "name", "description","fieldType", "checked", '
|
||||
.join(", ",map{'"'.$_.'"'} @responseFields);
|
||||
|
||||
return $self->processStyle($self->processTemplate($var,$self->get("compareTemplateId")));
|
||||
}
|
||||
|
|
@ -1170,7 +1162,8 @@ sub www_getCompareFormData {
|
|||
|
||||
my @results;
|
||||
if($form->process("search")){
|
||||
while (my $result = $self->getListings) {
|
||||
if ($searchParamList){
|
||||
foreach my $result (@{$self->getListings}) {
|
||||
my $matrixListing_attributes = $session->db->buildHashRefOfHashRefs("
|
||||
select value, fieldType, attributeId from Matrix_attribute
|
||||
left join MatrixListing_attribute as listing using(attributeId)
|
||||
|
|
@ -1192,8 +1185,16 @@ sub www_getCompareFormData {
|
|||
$result->{checked} = 'checked';
|
||||
}
|
||||
}
|
||||
$result->{assetId} =~ s/-/_____/g;
|
||||
push @results, $result;
|
||||
$result->{assetId} =~ s/-/_____/g;
|
||||
push @results, $result;
|
||||
}
|
||||
}
|
||||
else{
|
||||
foreach my $result (@{$self->getListings}) {
|
||||
$result->{checked} = 'checked';
|
||||
$result->{assetId} =~ s/-/_____/g;
|
||||
push @results, $result;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
foreach my $result (@{$self->getListings}) {
|
||||
|
|
@ -1382,8 +1383,6 @@ sub www_search {
|
|||
{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/matrixSearch.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'});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,141 +0,0 @@
|
|||
YAHOO.util.Event.addListener(window, "load", function() {
|
||||
YAHOO.example.XHR_JSON = new function() {
|
||||
this.formatUrl = function(elCell, oRecord, oColumn, sData) {
|
||||
elCell.innerHTML = "<a href='" + oRecord.getData("url") + "'>" + sData + "</a>";
|
||||
};
|
||||
this.formatCheckBox = function(elCell, oRecord, oColumn, sData) {
|
||||
var innerHTML = "<input type='checkbox' name='listingId' value='" + sData + "' id='" + sData + "_checkBox'";
|
||||
if(typeof(oRecord.getData("checked")) != 'undefined' && oRecord.getData("checked") == 'checked'){
|
||||
innerHTML = innerHTML + " checked='checked'";
|
||||
}
|
||||
innerHTML = innerHTML + " class='compareCheckBox'>";
|
||||
elCell.innerHTML = innerHTML;
|
||||
};
|
||||
|
||||
var myColumnDefs = [
|
||||
{key:"assetId",label:"",sortable:false, formatter:this.formatCheckBox},
|
||||
{key:"title", label:"", sortable:true, formatter:this.formatUrl},
|
||||
{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";
|
||||
if(typeof(listingIds) != 'undefined'){
|
||||
uri = uri + ';__listingId_isIn=1';
|
||||
for (var i = 0; i < listingIds.length; i++) {
|
||||
uri = uri+';listingId='+listingIds[i];
|
||||
}
|
||||
}
|
||||
|
||||
this.myDataSource = new YAHOO.util.DataSource(YAHOO.util.Dom.get("compareFormTable"));
|
||||
this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
|
||||
this.myDataSource.responseSchema = {
|
||||
fields: [{key: "checked"},"assetId","title",{key: "views", parser: "number"},{key: "clicks", parser: "number"},{key: "compares", parser: "number"},{key: "lastUpdated", parser: "number"},"url"]
|
||||
};
|
||||
|
||||
this.myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs,
|
||||
this.myDataSource);
|
||||
|
||||
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));
|
||||
|
||||
if(document.getElementById("sortByViews")){
|
||||
var btnSortByViews = new YAHOO.widget.Button("sortByViews");
|
||||
btnSortByViews.on("click", function(e) {
|
||||
this.myDataTable.sortColumn(this.myDataTable.getColumn(2));
|
||||
var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=views");
|
||||
},this,true);
|
||||
}
|
||||
|
||||
if(document.getElementById("sortByClicks")){
|
||||
var btnSortByClicks = new YAHOO.widget.Button("sortByClicks");
|
||||
btnSortByClicks.on("click", function(e) {
|
||||
this.myDataTable.sortColumn(this.myDataTable.getColumn(3));
|
||||
var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=clicks");
|
||||
},this,true);
|
||||
}
|
||||
|
||||
if(document.getElementById("sortByCompares")){
|
||||
var btnSortByCompares = new YAHOO.widget.Button("sortByCompares");
|
||||
btnSortByCompares.on("click", function(e) {
|
||||
this.myDataTable.sortColumn(this.myDataTable.getColumn(4));
|
||||
var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=compares");
|
||||
},this,true);
|
||||
}
|
||||
|
||||
if(document.getElementById("sortByUpdated")){
|
||||
var btnSortByUpdated = new YAHOO.widget.Button("sortByUpdated");
|
||||
btnSortByUpdated.on("click", function(e) {
|
||||
this.myDataTable.sortColumn(this.myDataTable.getColumn(5));
|
||||
var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=lastUpdated");
|
||||
},this,true);
|
||||
}
|
||||
|
||||
if(document.getElementById("sortByName")){
|
||||
var btnSortByName = new YAHOO.widget.Button("sortByName");
|
||||
btnSortByName.on("click", function(e) {
|
||||
this.myDataTable.sortColumn(this.myDataTable.getColumn(1));
|
||||
var request = YAHOO.util.Connect.asyncRequest('POST', matrixUrl + "?func=setSort;sort=lastUpdated");
|
||||
},this,true);
|
||||
}
|
||||
|
||||
|
||||
var myCallback = function() {
|
||||
this.set("sortedBy", null);
|
||||
this.onDataReturnAppendRows.apply(this,arguments);
|
||||
};
|
||||
|
||||
var compareFormButton = function() {
|
||||
var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input');
|
||||
var checked = 0;
|
||||
var checkedCompareBoxes = new Object();
|
||||
for (var i = compareCheckBoxes.length; i--; ) {
|
||||
if(compareCheckBoxes[i].checked){
|
||||
checked++;
|
||||
checkedCompareBoxes[compareCheckBoxes[i].value] = true;
|
||||
}
|
||||
}
|
||||
if (checked < 2){
|
||||
alert(tooFewMessage);
|
||||
}else if (checked > maxComparisons){
|
||||
alert(tooManyMessage);
|
||||
}else{
|
||||
window.document.forms['doCompare'].submit();
|
||||
}
|
||||
var elements = window.compareDataTable.getRecordSet().getRecords();
|
||||
for(j=0; j<elements.length; j++){
|
||||
var assetId = elements[j].getData('assetId');
|
||||
if(assetId in checkedCompareBoxes){
|
||||
elements[j].setData('checked','checked');
|
||||
}else{
|
||||
elements[j].setData('checked',null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(document.getElementById("compare")){
|
||||
var btnCompare = new YAHOO.widget.Button("compare",{id:"compareButton"});
|
||||
btnCompare.on("click", compareFormButton);
|
||||
}
|
||||
|
||||
if(document.getElementById("compare2")){
|
||||
var btnCompare2 = new YAHOO.widget.Button("compare2",{id:"compareButton2"});
|
||||
btnCompare2.on("click", compareFormButton);
|
||||
}
|
||||
|
||||
if(document.getElementById("search")){
|
||||
var btnSearch = new YAHOO.widget.Button("search");
|
||||
btnSearch.on("click", function(e) {
|
||||
window.location.href = matrixUrl + '?func=search';
|
||||
},this,true);
|
||||
}
|
||||
|
||||
window.compareDataTable = this.myDataTable;
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
|
|
@ -1,251 +0,0 @@
|
|||
YAHOO.util.Event.addListener(window, "load", function() {
|
||||
YAHOO.example.XHR_JSON = new function() {
|
||||
var Dom = YAHOO.util.Dom;
|
||||
var hideStickies = 0;
|
||||
|
||||
this.formatStickied = function(elCell, oRecord, oColumn, sData) {
|
||||
if(!(oRecord.getData("fieldType") in {'category':'','lastUpdated':''})){
|
||||
var innerHTML = "<input type='checkBox' class='stickieCheckbox' id='" + oRecord.getData("attributeId") + "_stickied' name='" + oRecord.getData("attributeId") + "' onChange='setStickied(this)'";
|
||||
if(typeof(oRecord.getData("checked")) != 'undefined' && oRecord.getData("checked") == 'checked'){
|
||||
innerHTML = innerHTML + " checked='checked'";
|
||||
}
|
||||
innerHTML = innerHTML + ">";
|
||||
elCell.innerHTML = innerHTML;
|
||||
}
|
||||
};
|
||||
|
||||
this.formatColors = function(elCell, oRecord, oColumn, sData) {
|
||||
if(!(oRecord.getData("fieldType") in {'category':'','lastUpdated':''})){
|
||||
var colorField = oColumn.key + "_compareColor";
|
||||
var color = oRecord.getData(colorField);
|
||||
if(color){
|
||||
Dom.setStyle(elCell.parentNode, "background-color", color);
|
||||
}
|
||||
elCell.innerHTML = sData;
|
||||
}else{
|
||||
elCell.innerHTML = sData;
|
||||
}
|
||||
};
|
||||
this.formatLabel = function(elCell, oRecord, oColumn, sData) {
|
||||
if(oRecord.getData("fieldType") == 'category'){
|
||||
elCell.innerHTML = "<b>" +sData + "</b>";
|
||||
}else{
|
||||
elCell.innerHTML = sData;
|
||||
if(oRecord.getData("description")){
|
||||
elCell.innerHTML = elCell.innerHTML + "<div class='wg-hoverhelp'>" + oRecord.getData("description") +"</div>";
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
YAHOO.widget.DataTable.Formatter.formatColors = this.formatColors;
|
||||
|
||||
var myColumnDefs = [
|
||||
{key:"stickied",formatter:this.formatStickied,label:""},
|
||||
{key:"name",formatter:this.formatLabel,label:""}
|
||||
];
|
||||
|
||||
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: responseFields
|
||||
};
|
||||
|
||||
var uri = "func=getCompareListData";
|
||||
for (var i = 0; i < listingIds.length; i++) {
|
||||
uri = uri+';listingId='+listingIds[i];
|
||||
}
|
||||
|
||||
var initAttributeHoverHelp = function() {
|
||||
initHoverHelp('compareList');
|
||||
}
|
||||
|
||||
var myDataTable = new YAHOO.widget.DataTable("compareList", myColumnDefs,
|
||||
this.myDataSource, {initialRequest:uri});
|
||||
myDataTable.subscribe("initEvent", initAttributeHoverHelp);
|
||||
|
||||
|
||||
window.removeListing = function(key) {
|
||||
myDataTable.hideColumn(myDataTable.removeColumn(key));
|
||||
}
|
||||
|
||||
this.myDataSource.doBeforeParseData = function (oRequest, oFullResponse) {
|
||||
this.responseSchema.fields = oFullResponse.ResponseFields;
|
||||
var existingColumns = myDataTable.getColumnSet().keys;
|
||||
for (var i = 0; i < existingColumns.length; i++) {
|
||||
if(i > 1){
|
||||
// after deleting a column the next column will
|
||||
// allways be no. 2 (the third in the array)
|
||||
myDataTable.removeColumn(existingColumns[2]);
|
||||
}
|
||||
}
|
||||
if (oFullResponse.ColumnDefs) {
|
||||
var len = oFullResponse.ColumnDefs.length;
|
||||
|
||||
for (var i = 0; i < len; i++) {
|
||||
var c = oFullResponse.ColumnDefs[i];
|
||||
oFullResponse.ColumnDefs[i].label = "<a href='"+ oFullResponse.ColumnDefs[i].url +"'>" + oFullResponse.ColumnDefs[i].label + "</a> <a href='javascript:removeListing(\""+oFullResponse.ColumnDefs[i].key+"\")'><img src='/extras/toolbar/bullet/delete.gif' border='0'></a>"
|
||||
myDataTable.insertColumn(c);
|
||||
}
|
||||
}
|
||||
return oFullResponse;
|
||||
}
|
||||
|
||||
var myCallback = function() {
|
||||
this.set("sortedBy", null);
|
||||
this.onDataReturnAppendRows.apply(this,arguments);
|
||||
initHoverHelp('compareList');
|
||||
};
|
||||
|
||||
var callback2 = {
|
||||
success : myCallback,
|
||||
failure : myCallback,
|
||||
scope : myDataTable
|
||||
};
|
||||
|
||||
if(document.getElementById("compare3")){
|
||||
var btnCompare3 = new YAHOO.widget.Button("compare3",{id:"compareButton3"});
|
||||
btnCompare3.on("click", function(e) {
|
||||
var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input');
|
||||
var checked = 0;
|
||||
var checkedCompareBoxes = new Object();
|
||||
for (var i = compareCheckBoxes.length; i--; ) {
|
||||
if(compareCheckBoxes[i].checked){
|
||||
checked++;
|
||||
checkedCompareBoxes[compareCheckBoxes[i].value] = true;
|
||||
}
|
||||
}
|
||||
if (checked < 2){
|
||||
alert(tooFewMessage);
|
||||
}else if (checked > maxComparisons){
|
||||
alert(tooManyMessage);
|
||||
}else{
|
||||
//window.document.forms['doCompare'].submit();
|
||||
var uri = "func=getCompareListData";
|
||||
for (var i = compareCheckBoxes.length; i--; ) {
|
||||
if(compareCheckBoxes[i].checked == true){
|
||||
uri = uri+';listingId='+compareCheckBoxes[i].value;
|
||||
}
|
||||
}
|
||||
myDataTable.getRecordSet().reset();
|
||||
myDataTable.refreshView();
|
||||
myDataTable.showTableMessage('Loading...');
|
||||
this.myDataSource.sendRequest(uri,callback2);
|
||||
}
|
||||
|
||||
},this,true);
|
||||
}
|
||||
|
||||
if(document.getElementById("stickied")){
|
||||
var btnStickied = new YAHOO.widget.Button("stickied");
|
||||
btnStickied.on("click", function(e) {
|
||||
var elements = myDataTable.getRecordSet().getRecords();
|
||||
if(hideStickies == 0){
|
||||
// hide non-selected attributes
|
||||
for(i=0; i<elements.length; i++){
|
||||
if(!(elements[i].getData('fieldType') in {'category':'','lastUpdated':''})){
|
||||
var attributeId = elements[i].getData('attributeId');
|
||||
var checkBox = Dom.get(attributeId+"_stickied");
|
||||
if (checkBox.checked == false){
|
||||
elRow = myDataTable.getTrEl(elements[i]);
|
||||
Dom.setStyle(elRow, "display", "none");
|
||||
}
|
||||
}
|
||||
}
|
||||
hideStickies = 1;
|
||||
}else{
|
||||
// show all attributes
|
||||
for(i=0; i<elements.length; i++){
|
||||
if(!(elements[i].getData('fieldType') in {'category':'','lastUpdated':''})){
|
||||
var attributeId = elements[i].getData('attributeId');
|
||||
var checkBox = Dom.get(attributeId+"_stickied");
|
||||
if (checkBox.checked == false){
|
||||
elRow = myDataTable.getTrEl(elements[i]);
|
||||
Dom.setStyle(elRow, "display", "table-row");
|
||||
}
|
||||
}
|
||||
}
|
||||
hideStickies = 0;
|
||||
}
|
||||
},this,true);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
YAHOO.util.Event.addListener(window, "load", function() {
|
||||
YAHOO.example.XHR_JSON2 = new function() {
|
||||
this.formatUrl = function(elCell, oRecord, oColumn, sData) {
|
||||
elCell.innerHTML = "<a href='" + oRecord.getData("url") + "'>" + sData + "</a>";
|
||||
};
|
||||
this.formatCheckBox = function(elCell, oRecord, oColumn, sData) {
|
||||
var innerHTML = "<input type='checkbox' name='listingId' value='" + sData + "' id='" + sData + "_checkBox'";
|
||||
if(typeof(oRecord.getData("checked")) != 'undefined' && oRecord.getData("checked") == 'checked'){
|
||||
innerHTML = innerHTML + " checked='checked'";
|
||||
}
|
||||
innerHTML = innerHTML + " class='compareCheckBox'>";
|
||||
elCell.innerHTML = innerHTML;
|
||||
};
|
||||
|
||||
var myColumnDefs = [
|
||||
{key:"assetId",label:"",sortable:false, formatter:this.formatCheckBox},
|
||||
{key:"title", label:"", sortable:true, formatter:this.formatUrl},
|
||||
{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";
|
||||
if(typeof(listingIds) != 'undefined'){
|
||||
uri = uri + ';__listingId_isIn=1';
|
||||
for (var i = 0; i < listingIds.length; i++) {
|
||||
uri = uri+';listingId='+listingIds[i];
|
||||
}
|
||||
}
|
||||
|
||||
this.myDataSource = new YAHOO.util.DataSource(matrixUrl + "?");
|
||||
this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
|
||||
this.myDataSource.connXhrMode = "queueRequests";
|
||||
this.myDataSource.responseSchema = {
|
||||
resultsList: "ResultSet.Result",
|
||||
fields: ["title",{key: "views", parser: "number"},{key: "clicks", parser: "number"},{key: "compares", parser: "number"},{key: "checked"},{key: "lastUpdated", parser: "number"},"url","assetId"]
|
||||
};
|
||||
|
||||
this.myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs,
|
||||
this.myDataSource, {initialRequest:uri});
|
||||
|
||||
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 myCallback = function() {
|
||||
this.set("sortedBy", null);
|
||||
this.onDataReturnAppendRows.apply(this,arguments);
|
||||
};
|
||||
|
||||
if(document.getElementById("search")){
|
||||
var btnSearch = new YAHOO.widget.Button("search");
|
||||
btnSearch.on("click", function(e) {
|
||||
window.location.href = matrixUrl + '?func=search';
|
||||
},this,true);
|
||||
}
|
||||
|
||||
window.compareDataTable = this.myDataTable;
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
function setStickied (checkbox) {
|
||||
if(checkbox.checked == true){
|
||||
var request = YAHOO.util.Connect.asyncRequest('POST', "?func=setStickied;attributeId="+checkbox.name);
|
||||
}else{
|
||||
var request = YAHOO.util.Connect.asyncRequest('POST', "?func=deleteStickied;attributeId="+checkbox.name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,126 +0,0 @@
|
|||
YAHOO.util.Event.addListener(window, "load", function() {
|
||||
YAHOO.example.XHR_JSON = new function() {
|
||||
var Dom = YAHOO.util.Dom;
|
||||
var hideStickies = 0;
|
||||
|
||||
this.formatStickied = function(elCell, oRecord, oColumn, sData) {
|
||||
if(oRecord.getData("fieldType") != 'category'){
|
||||
var innerHTML = "<input type='checkBox' class='stickieCheckbox' id='" + oRecord.getData("attributeId") + "_stickied' name='" + oRecord.getData("attributeId") + "' onChange='setStickied(this)'";
|
||||
if(typeof(oRecord.getData("checked")) != 'undefined' && oRecord.getData("checked") == 'checked'){
|
||||
innerHTML = innerHTML + " checked='checked'";
|
||||
}
|
||||
innerHTML = innerHTML + ">";
|
||||
elCell.innerHTML = innerHTML;
|
||||
}
|
||||
};
|
||||
this.formatLabel = function(elCell, oRecord, oColumn, sData) {
|
||||
if(oRecord.getData("fieldType") == 'category'){
|
||||
elCell.innerHTML = "<b>" +sData + "</b>";
|
||||
}else{
|
||||
elCell.innerHTML = sData + "<div class='wg-hoverhelp'>" + oRecord.getData("description") +"</div>";
|
||||
}
|
||||
};
|
||||
this.formatColors = function(elCell, oRecord, oColumn, sData) {
|
||||
if(oRecord.getData("fieldType") != 'category'){
|
||||
var color = oRecord.getData("compareColor");
|
||||
if(color){
|
||||
Dom.setStyle(elCell.parentNode, "background-color", color);
|
||||
}
|
||||
elCell.innerHTML = sData;
|
||||
}
|
||||
};
|
||||
var myColumnDefs = [
|
||||
{key:"stickied",formatter:this.formatStickied,label:""},
|
||||
{key:"label",formatter:this.formatLabel,label:""},
|
||||
{key:"value",label:"",formatter:this.formatColors}
|
||||
];
|
||||
|
||||
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: ["label","value","attributeId","fieldType","checked","description","compareColor"]
|
||||
};
|
||||
|
||||
var uri = "func=getAttributes";
|
||||
if(typeof(revision) != 'undefined'){
|
||||
uri = uri + ';revision=' + revision;
|
||||
}
|
||||
|
||||
var initAttributeHoverHelp = function() {
|
||||
initHoverHelp('attributes');
|
||||
}
|
||||
|
||||
var myDataTable = new YAHOO.widget.DataTable("attributes", myColumnDefs,
|
||||
this.myDataSource, {initialRequest:uri});
|
||||
myDataTable.subscribe("initEvent", initAttributeHoverHelp);
|
||||
|
||||
|
||||
this.myDataSource.doBeforeParseData = function (oRequest, oFullResponse) {
|
||||
myDataTable.getRecordSet().reset();
|
||||
return oFullResponse;
|
||||
}
|
||||
|
||||
var myCallback = function() {
|
||||
this.set("sortedBy", null);
|
||||
this.onDataReturnAppendRows.apply(this,arguments);
|
||||
};
|
||||
|
||||
var myCallback2 = function() {
|
||||
this.set("sortedBy", null);
|
||||
this.onDataReturnAppendRows.apply(this,arguments);
|
||||
};
|
||||
|
||||
var callback2 = {
|
||||
success : myCallback,
|
||||
failure : myCallback,
|
||||
scope : myDataTable
|
||||
};
|
||||
|
||||
var btnStickied = new YAHOO.widget.Button("stickied");
|
||||
btnStickied.on("click", function(e) {
|
||||
var elements = myDataTable.getRecordSet().getRecords();
|
||||
if(hideStickies == 0){
|
||||
// hide non-selected attributes
|
||||
for(i=0; i<elements.length; i++){
|
||||
if(elements[i].getData('fieldType') != 'category'){
|
||||
var attributeId = elements[i].getData('attributeId');
|
||||
var checkBox = Dom.get(attributeId+"_stickied");
|
||||
if (checkBox.checked == false){
|
||||
elRow = myDataTable.getTrEl(elements[i]);
|
||||
Dom.setStyle(elRow, "display", "none");
|
||||
}
|
||||
}
|
||||
}
|
||||
hideStickies = 1;
|
||||
}else{
|
||||
// show all attributes
|
||||
for(i=0; i<elements.length; i++){
|
||||
if(elements[i].getData('fieldType') != 'category'){
|
||||
var attributeId = elements[i].getData('attributeId');
|
||||
var checkBox = Dom.get(attributeId+"_stickied");
|
||||
if (checkBox.checked == false){
|
||||
elRow = myDataTable.getTrEl(elements[i]);
|
||||
Dom.setStyle(elRow, "display", "table-row");
|
||||
}
|
||||
}
|
||||
}
|
||||
hideStickies = 0;
|
||||
}
|
||||
},this,true);
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
function setStickied (checkbox) {
|
||||
if(checkbox.checked == true){
|
||||
var request = YAHOO.util.Connect.asyncRequest('POST', "?func=setStickied;attributeId="+checkbox.name);
|
||||
}else{
|
||||
var request = YAHOO.util.Connect.asyncRequest('POST', "?func=deleteStickied;attributeId="+checkbox.name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
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 = "<a href='" + oRecord.getData("url") + "'>" + sData + "</a>";
|
||||
};
|
||||
this.formatCheckBox = function(elCell, oRecord, oColumn, sData) {
|
||||
var innerHTML = "<input type='checkbox' name='listingId' value='" + sData + "' id='" + sData + "_checkBox'";
|
||||
if(typeof(oRecord.getData("checked")) != 'undefined' && oRecord.getData("checked") == 'checked'){
|
||||
innerHTML = innerHTML + " checked='checked'";
|
||||
}
|
||||
innerHTML = innerHTML + " class='compareCheckBox'>";
|
||||
elCell.innerHTML = innerHTML;
|
||||
};
|
||||
|
||||
var myColumnDefs = [
|
||||
{key:"assetId",label:"",sortable:false, formatter:this.formatCheckBox},
|
||||
{key:"title", label:"Name", sortable:true, formatter:this.formatUrl}
|
||||
];
|
||||
|
||||
var uri = "func=getCompareFormData";
|
||||
if(typeof(listingIds) != 'undefined'){
|
||||
for (var i = 0; i < listingIds.length; i++) {
|
||||
uri = uri+';listingId='+listingIds[i];
|
||||
}
|
||||
}
|
||||
|
||||
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","checked","url","assetId"]
|
||||
};
|
||||
|
||||
var myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs,
|
||||
this.myDataSource, {initialRequest:uri});
|
||||
|
||||
var myDataSource = this.myDataSource;
|
||||
|
||||
var myCallback = function() {
|
||||
this.set("sortedBy", null);
|
||||
this.onDataReturnAppendRows.apply(this,arguments);
|
||||
};
|
||||
|
||||
var callback2 = {
|
||||
success : myCallback,
|
||||
failure : myCallback,
|
||||
scope : myDataTable
|
||||
};
|
||||
|
||||
var reloadCompareForm = function() {
|
||||
var attributeSelects = YAHOO.util.Dom.getElementsByClassName('attributeSelect','select');
|
||||
var newUri = "func=getCompareFormData;search=1";
|
||||
for (var i = attributeSelects.length; i--; ) {
|
||||
var selectedIndex = attributeSelects[i].selectedIndex;
|
||||
if(attributeSelects[i].value != 'blank' && !(attributeSelects[i].value == '0' && attributeSelects[i][selectedIndex].text == 'No')){
|
||||
newUri = newUri + ';search_' + attributeSelects[i].id + '=' + attributeSelects[i].value;
|
||||
}
|
||||
}
|
||||
myDataTable.getRecordSet().reset();
|
||||
myDataTable.refreshView();
|
||||
myDataTable.showTableMessage('Loading...');
|
||||
|
||||
myDataSource.sendRequest(newUri,callback2);
|
||||
|
||||
}
|
||||
var attributeSelects = YAHOO.util.Dom.getElementsByClassName('attributeSelect','select');
|
||||
for (var i = attributeSelects.length; i--; ) {
|
||||
attributeSelects[i].onchange = reloadCompareForm;
|
||||
}
|
||||
|
||||
var btnCompare = new YAHOO.widget.Button("compare",{id:"compareButton"});
|
||||
btnCompare.on("click", function(e) {
|
||||
var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input');
|
||||
var checked = 0;
|
||||
for (var i = compareCheckBoxes.length; i--; ) {
|
||||
if(compareCheckBoxes[i].checked){
|
||||
checked++;
|
||||
}
|
||||
}
|
||||
if (checked < 2){
|
||||
alert(tooFewMessage);
|
||||
}else if (checked > maxComparisons){
|
||||
alert(tooManyMessage);
|
||||
}else{
|
||||
window.document.forms['doCompare'].submit();
|
||||
}
|
||||
},this,true);
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue