FossilRepo

fossilrepo / assets / admin / js / prepopulate.bd2361dfd64d.js
Source Blame History 43 lines
afe42d0… ragelink 1 /*global URLify*/
afe42d0… ragelink 2 'use strict';
afe42d0… ragelink 3 {
afe42d0… ragelink 4 const $ = django.jQuery;
afe42d0… ragelink 5 $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) {
afe42d0… ragelink 6 /*
afe42d0… ragelink 7 Depends on urlify.js
afe42d0… ragelink 8 Populates a selected field with the values of the dependent fields,
afe42d0… ragelink 9 URLifies and shortens the string.
afe42d0… ragelink 10 dependencies - array of dependent fields ids
afe42d0… ragelink 11 maxLength - maximum length of the URLify'd string
afe42d0… ragelink 12 allowUnicode - Unicode support of the URLify'd string
afe42d0… ragelink 13 */
afe42d0… ragelink 14 return this.each(function() {
afe42d0… ragelink 15 const prepopulatedField = $(this);
afe42d0… ragelink 16
afe42d0… ragelink 17 const populate = function() {
afe42d0… ragelink 18 // Bail if the field's value has been changed by the user
afe42d0… ragelink 19 if (prepopulatedField.data('_changed')) {
afe42d0… ragelink 20 return;
afe42d0… ragelink 21 }
afe42d0… ragelink 22
afe42d0… ragelink 23 const values = [];
afe42d0… ragelink 24 $.each(dependencies, function(i, field) {
afe42d0… ragelink 25 field = $(field);
afe42d0… ragelink 26 if (field.val().length > 0) {
afe42d0… ragelink 27 values.push(field.val());
afe42d0… ragelink 28 }
afe42d0… ragelink 29 });
afe42d0… ragelink 30 prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode));
afe42d0… ragelink 31 };
afe42d0… ragelink 32
afe42d0… ragelink 33 prepopulatedField.data('_changed', false);
afe42d0… ragelink 34 prepopulatedField.on('change', function() {
afe42d0… ragelink 35 prepopulatedField.data('_changed', true);
afe42d0… ragelink 36 });
afe42d0… ragelink 37
afe42d0… ragelink 38 if (!prepopulatedField.val()) {
afe42d0… ragelink 39 $(dependencies.join(',')).on('keyup change focus', populate);
afe42d0… ragelink 40 }
afe42d0… ragelink 41 });
afe42d0… ragelink 42 };
afe42d0… ragelink 43 }

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button