|
@@ -1,129 +0,0 @@
|
|
|
-// assets/js/widgets/select2.js
|
|
|
-
|
|
|
-// pour le widget select2
|
|
|
-import 'select2';
|
|
|
-//require('./select2-fr.js');
|
|
|
-import 'select2/dist/js/i18n/fr.js';
|
|
|
-
|
|
|
-(function ($) {
|
|
|
- $.fn.select2entity = function (options) {
|
|
|
- this.each(function () {
|
|
|
- var request;
|
|
|
-
|
|
|
- // Keep a reference to the element so we can keep the cache local to this instance and so we can
|
|
|
- // fetch config settings since select2 doesn't expose its options to the transport method.
|
|
|
- var $s2 = $(this),
|
|
|
- limit = $s2.data('page-limit') || 0,
|
|
|
- scroll = $s2.data('scroll'),
|
|
|
- prefix = Date.now(),
|
|
|
- cache = [];
|
|
|
-
|
|
|
- var reqParams = $s2.data('req_params');
|
|
|
- if (reqParams) {
|
|
|
- $.each(reqParams, function (key, value) {
|
|
|
- $('*[name="' + value + '"]').on('change', function () {
|
|
|
- $s2.val(null);
|
|
|
- $s2.trigger('change');
|
|
|
- });
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- // Deep-merge the options
|
|
|
- $s2.select2($.extend(true, {
|
|
|
- // Tags support
|
|
|
- createTag: function (data) {
|
|
|
- if ($s2.data('tags') && data.term.length > 0) {
|
|
|
- var text = data.term + $s2.data('tags-text');
|
|
|
- return {id: $s2.data('new-tag-prefix') + data.term, text: text};
|
|
|
- }
|
|
|
- },
|
|
|
- ajax: {
|
|
|
- url: $s2.data('ajax--url'),
|
|
|
- transport: function (params, success, failure) {
|
|
|
- // is caching enabled?
|
|
|
- if ($s2.data('ajax--cache')) {
|
|
|
- // try to make the key unique to make it less likely for a page+q to match a real query
|
|
|
- var key = prefix + ' page:' + (params.data.page || 1) + ' ' + params.data.q,
|
|
|
- cacheTimeout = $s2.data('ajax--cacheTimeout');
|
|
|
- // no cache entry for 'term' or the cache has timed out?
|
|
|
- if (typeof cache[key] == 'undefined' || (cacheTimeout && Date.now() >= cache[key].time)) {
|
|
|
- $.ajax(params).fail(failure).done(function (data) {
|
|
|
- cache[key] = {
|
|
|
- data: data,
|
|
|
- time: cacheTimeout ? Date.now() + cacheTimeout : null
|
|
|
- };
|
|
|
- success(data);
|
|
|
- });
|
|
|
- } else {
|
|
|
- // return cached data with no ajax request
|
|
|
- success(cache[key].data);
|
|
|
- }
|
|
|
- } else {
|
|
|
- // no caching enabled. just do the ajax request
|
|
|
- if (request) {
|
|
|
- request.abort();
|
|
|
- }
|
|
|
- request = $.ajax(params).fail(failure).done(success).always(function () {
|
|
|
- request = undefined;
|
|
|
- });
|
|
|
- }
|
|
|
- },
|
|
|
- data: function (params) {
|
|
|
- var ret = {
|
|
|
- 'q': params.term,
|
|
|
- 'field_name': $s2.data('name')
|
|
|
- };
|
|
|
-
|
|
|
- var reqParams = $s2.data('req_params');
|
|
|
- if (reqParams) {
|
|
|
- $.each(reqParams, function (key, value) {
|
|
|
- ret[key] = $('*[name="' + value + '"]').val()
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- // only send the 'page' parameter if scrolling is enabled
|
|
|
- if (scroll) {
|
|
|
- ret['page'] = params.page || 1;
|
|
|
- }
|
|
|
-
|
|
|
- return ret;
|
|
|
- },
|
|
|
- processResults: function (data, params) {
|
|
|
- var results, more = false, response = {};
|
|
|
- params.page = params.page || 1;
|
|
|
-
|
|
|
- if ($.isArray(data)) {
|
|
|
- results = data;
|
|
|
- } else if (typeof data == 'object') {
|
|
|
- // assume remote result was proper object
|
|
|
- results = data.results;
|
|
|
- more = data.more;
|
|
|
- } else {
|
|
|
- // failsafe
|
|
|
- results = [];
|
|
|
- }
|
|
|
-
|
|
|
- if (scroll) {
|
|
|
- response.pagination = {more: more};
|
|
|
- }
|
|
|
- response.results = results;
|
|
|
-
|
|
|
- return response;
|
|
|
- }
|
|
|
- },
|
|
|
- placeholder: $s2.data('placeholder'),
|
|
|
- minimumInputLength: $s2.data('minimum-input-length'),
|
|
|
- language: $s2.data('language'),
|
|
|
-// theme: 'bootstrap4',
|
|
|
- tags: $s2.data('tags')
|
|
|
- }, options || {}));
|
|
|
- });
|
|
|
- return this;
|
|
|
- };
|
|
|
-})(jQuery);
|
|
|
-
|
|
|
-(function ($) {
|
|
|
- $(document).ready(function () {
|
|
|
- $('.select2entity[data-autostart="true"]').select2entity();
|
|
|
- });
|
|
|
-})(jQuery);
|