(function ($) {
Drupal.behaviors.chadoNodeApiFieldsetSummaries = {
attach: function (context) {
// Properties Tab
$('fieldset.chado-node-api.properties', context).drupalSetSummary(function (context) {
return ChadoNodeApi_getSummary({
machineName: {
plural: 'properties',
singular:'property'
},
readableName: {
plural: 'properties',
singular:'property'
}
});
});
// External References Tab
$('fieldset.chado-node-api.dbxrefs', context).drupalSetSummary(function (context) {
return ChadoNodeApi_getSummary({
machineName: {
plural: 'dbxrefs',
singular:'dbxref'
},
readableName: {
plural: 'references',
singular:'reference'
}
});
});
// Relationships Tab
$('fieldset.chado-node-api.relationships', context).drupalSetSummary(function (context) {
return ChadoNodeApi_getSummary({
machineName: {
plural: 'relationships',
singular:'relationship'
},
readableName: {
plural: 'relationships',
singular:'relationship'
}
});
});
function ChadoNodeApi_getSummary(api) {
var numCurrent = $('tr.' + api.machineName.singular).length;
var numOriginal = $('input.num-' + api.machineName.plural, context).val();
var numSaved = $('tr.saved.' + api.machineName.singular).length;
var numUnsaved = $('tr.unsaved.' + api.machineName.singular).length;
var numRemoved = numOriginal - numSaved;
// If there are no rows then tell the user that.
if (numCurrent == 0) {
if (numRemoved == 0) {
return Drupal.t('No ' + api.readableName.plural);
}
else {
return Drupal.t('No ' + api.readableName.plural + ' (' + numRemoved + ' removed)');
}
}
// Otherwise, give them a breakdown of the current, new and removed rows
// NOTE: Removed rows include only those that were original and have since been removed.
else {
var apiReadable = api.readableName.plural;
if (numCurrent == 1) {
apiReadable = api.readableName.singular;
}
if (numUnsaved != 0 && numRemoved != 0) {
return Drupal.t(numCurrent + ' ' + apiReadable + ' (' + numUnsaved + ' new; ' + numRemoved + ' removed)');
}
else if (numRemoved != 0) {
return Drupal.t(numCurrent + ' ' + apiReadable + ' (' + numRemoved + ' removed)');
}
else if (numUnsaved != 0) {
return Drupal.t(numCurrent + ' ' + apiReadable + ' (' + numUnsaved + ' new)');
}
else {
return Drupal.t(numCurrent + ' ' + apiReadable);
}
}
}
}};
})(jQuery);