Ich versuche gerade, das instantsearch.js "rangslider" Widget zu verwenden, um einen Altersbereich Slider aus dem Geburtsdatum innerhalb meiner Indexdaten zu erstellen. Überprüft die Dokumentation und scheint, dass es keine Transformationsdatenfunktion gibt, die ich verwenden kann, um das Geburtsdatum in numerische Alterszahlen umzuwandeln, wie das "Hits" Widget tun kann.Algolia instantsearch age rangslider Basis am Geburtsdatum
Eine Möglichkeit, wie ich eine Altersspalte im Index erstellen und einen Cron-Job täglich ausführen, um die Altersspalte für jede Datensatzbasis am Geburtsdatum zu aktualisieren, aber das scheint nicht eine elegante Lösung.
Ich frage mich, gibt es irgendwelche Workarounds oder bestehende Lösungen für dieses Szenario?
Lösung mit Laravel as backend (Credits Jerska):
public function getAlgoliaRecord()
{
/**
* Load the categories relation so that it's available
* in the laravel toArray method
*/
$this->dob_timestamp = strtotime('01-01-2100') - strtotime($this->dob);
return $this->toArray();
}
Im Frontend:
function _calculateAge(birthday) { // birthday is a date
var ageDifMs = Date.now() - birthday.getTime();
var ageDate = new Date(ageDifMs); // miliseconds from epoch
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
search.addWidget(
instantsearch.widgets.rangeSlider({
container: '#age',
attributeName: 'dob_timestamp',
tooltips: {
format: function(formattedValue) {
var dob = new Date((4102444800-formattedValue)*1000);
var age =_calculateAge(dob);
return age;
}
}
})
);
CSS:
.ais-range-slider--value{ display:none; }
Niemals daran gedacht, Zeitstempel zu verwenden, danke, dass Ihre Lösung wunderbar funktioniert! Meine Frage mit Lösung aktualisiert. – user3364008
@ user3364008 Ich bin froh, dass dies für Sie funktioniert hat. :) – Jerska