Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
facets
Manage
Activity
Members
Labels
Plan
Wiki
Custom issue tracker
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Model registry
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
project
facets
Merge requests
!26
Issue
#3052574
: Facets with AJAX not working in most of situations
Code
Review changes
Check out branch
Download
Patches
Plain diff
Open
Issue
#3052574
: Facets with AJAX not working in most of situations
issue/facets-3052574:3052574-facets-with-ajax
into
8.x-1.x
Overview
1
Commits
11
Pipelines
0
Changes
8
Open
eduardo morales alberti
requested to merge
issue/facets-3052574:3052574-facets-with-ajax
into
8.x-1.x
3 years ago
Overview
1
Commits
11
Pipelines
0
Changes
8
Expand
0
0
Merge request reports
Compare
8.x-1.x
version 11
6b339a91
3 years ago
version 10
c4bbea5c
3 years ago
version 9
e76409fb
3 years ago
version 8
e48abb86
3 years ago
version 7
a9386871
3 years ago
version 6
b115efe9
3 years ago
version 5
c36db92e
3 years ago
version 4
1824e667
3 years ago
version 3
8ac5cab7
3 years ago
version 2
f5248934
3 years ago
version 1
2f438310
3 years ago
8.x-1.x (HEAD)
and
latest version
latest version
b7afb394
11 commits,
3 years ago
version 11
6b339a91
10 commits,
3 years ago
version 10
c4bbea5c
9 commits,
3 years ago
version 9
e76409fb
8 commits,
3 years ago
version 8
e48abb86
7 commits,
3 years ago
version 7
a9386871
6 commits,
3 years ago
version 6
b115efe9
5 commits,
3 years ago
version 5
c36db92e
4 commits,
3 years ago
version 4
1824e667
3 commits,
3 years ago
version 3
8ac5cab7
2 commits,
3 years ago
version 2
f5248934
1 commit,
3 years ago
version 1
2f438310
1 commit,
3 years ago
8 files
+
336
−
104
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
8
Search (e.g. *.vue) (Ctrl+P)
js/facets-views-ajax.js
+
80
−
25
Options
@@ -37,17 +37,72 @@
return
;
}
// Update view on summary block click.
if
(
updateFacetsSummaryBlock
()
&&
(
facetId
===
'
facets_summary_ajax
'
))
{
$
(
'
[data-drupal-facets-summary-id=
'
+
facetSettings
.
facets_summary_id
+
'
]
'
).
children
(
'
ul
'
).
children
(
'
li
'
).
once
().
click
(
function
(
e
)
{
e
.
preventDefault
();
var
facetLink
=
$
(
this
).
find
(
'
a
'
);
updateFacetsView
(
facetLink
.
attr
(
'
href
'
),
current_dom_id
,
view_path
);
});
// Update view on range slider stop event
if
(
typeof
settings
.
facets
!==
"
undefined
"
&&
settings
.
facets
.
sliders
&&
settings
.
facets
.
sliders
[
facetId
])
{
settings
.
facets
.
sliders
[
facetId
].
stop
=
function
(
e
,
ui
)
{
var
href
=
settings
.
facets
.
sliders
[
facetId
].
url
.
replace
(
'
__range_slider_min__
'
,
ui
.
values
[
0
]).
replace
(
'
__range_slider_max__
'
,
ui
.
values
[
1
]);
// Update facet query params on the request.
var
currentHref
=
window
.
location
.
href
;
var
currentQueryParams
=
Drupal
.
Views
.
parseQueryString
(
currentHref
);
var
newQueryParams
=
Drupal
.
Views
.
parseQueryString
(
href
);
var
queryParams
=
{};
var
facetPositions
=
[];
var
fCount
=
0
;
var
value
=
''
;
var
facetKey
=
''
;
for
(
var
paramName
in
currentQueryParams
)
{
if
(
paramName
.
substr
(
0
,
1
)
===
'
f
'
)
{
value
=
currentQueryParams
[
paramName
];
// Store the facet position so we can override it later.
facetKey
=
value
.
substr
(
0
,
value
.
indexOf
(
'
:
'
));
facetPositions
[
facetKey
]
=
fCount
;
queryParams
[
'
f[
'
+
fCount
+
'
]
'
]
=
value
;
fCount
++
;
}
else
{
queryParams
[
paramName
]
=
currentQueryParams
[
paramName
];
}
}
var
paramKey
=
''
;
for
(
let
paramName
in
newQueryParams
)
{
if
(
paramName
.
substr
(
0
,
1
)
===
'
f
'
)
{
value
=
newQueryParams
[
paramName
];
// replace
facetKey
=
value
.
substr
(
0
,
value
.
indexOf
(
'
:
'
));
if
(
typeof
facetPositions
[
facetKey
]
!==
'
undefined
'
)
{
paramKey
=
'
f[
'
+
facetPositions
[
facetKey
]
+
'
]
'
;
}
else
{
paramKey
=
'
f[
'
+
fCount
+
'
]
'
;
fCount
++
;
}
queryParams
[
paramKey
]
=
newQueryParams
[
paramName
];
}
else
{
queryParams
[
paramName
]
=
newQueryParams
[
paramName
];
}
}
href
=
'
/
'
+
Drupal
.
Views
.
getPath
(
href
)
+
'
?
'
+
$
.
param
(
queryParams
);
updateFacetsView
(
href
,
current_dom_id
,
view_path
);
};
}
else
if
(
facetId
==
'
facets_summary_ajax_summary
'
||
facetId
==
'
facets_summary_ajax_summary_count
'
)
{
if
(
updateFacetsSummaryBlock
())
{
$
(
'
[data-drupal-facets-summary-id=
'
+
facetSettings
.
facets_summary_id
+
'
]
'
).
children
(
'
ul
'
).
children
(
'
li
'
).
once
().
click
(
function
(
e
)
{
e
.
preventDefault
();
var
facetLink
=
$
(
this
).
find
(
'
a
'
);
updateFacetsView
(
facetLink
.
attr
(
'
href
'
),
current_dom_id
,
view_path
);
});
}
}
// Update view on facet item click.
else
{
$
(
'
[data-drupal-facet-id
=
'
+
facetId
+
'
]
'
).
each
(
function
(
index
,
facet_item
)
{
$
(
'
[data-drupal-facet-id
|=
'
+
facetId
+
'
]
'
).
each
(
function
(
index
,
facet_item
)
{
if
(
$
(
facet_item
).
hasClass
(
'
js-facets-widget
'
))
{
$
(
facet_item
).
unbind
(
'
facets_filter.facets
'
);
$
(
facet_item
).
on
(
'
facets_filter.facets
'
,
function
(
event
,
url
)
{
@@ -104,8 +159,8 @@
var
facets_blocks
=
facetsBlocks
();
// Remove All Range Input Form Facet Blocks from being updated.
if
(
settings
.
facets
&&
settings
.
facets
.
rangeInput
)
{
$
.
each
(
settings
.
facets
.
rangeInput
,
function
(
index
,
value
){
if
(
settings
.
facets
&&
settings
.
facets
.
rangeInput
)
{
$
.
each
(
settings
.
facets
.
rangeInput
,
function
(
index
,
value
)
{
delete
facets_blocks
[
value
.
facetId
];
});
}
@@ -121,17 +176,17 @@
// Update facets summary block.
if
(
updateFacetsSummaryBlock
())
{
var
facet_summary_wrapper_id
=
$
(
'
[data-drupal-facets-summary-id=
'
+
settings
.
facets_views_ajax
.
facets_summary_ajax
.
facets_summary_id
+
'
]
'
).
attr
(
'
id
'
);
var
facet_summary_block_id
=
''
;
if
(
facet_summary_wrapper_id
.
indexOf
(
'
--
'
)
!==
-
1
)
{
facet_summary_block_id
=
facet_summary_wrapper_id
.
substring
(
0
,
facet_summary_wrapper_id
.
indexOf
(
'
--
'
)).
replace
(
'
block-
'
,
''
);
}
else
{
facet_summary_block_id
=
facet_summary_wrapper_id
.
replace
(
'
block-
'
,
''
);
}
facet_settings
.
submit
.
update_summary_block
=
true
;
facet_settings
.
submit
.
facet_summary_block_id
=
facet_summary_block_id
;
facet_settings
.
submit
.
facet_summary_wrapper_id
=
settings
.
facets_views_ajax
.
facets_summary_ajax
.
facets_summary_id
;
facet_settings
.
submit
.
facet_summary_plugin_ids
=
{};
let
summary_selector
=
'
[data-drupal-facets-summary-id=
'
+
settings
.
facets_views_ajax
.
facets_summary_ajax_summary
.
facets_summary_id
+
'
]
'
;
if
(
settings
.
facets_views_ajax
.
facets_summary_ajax_summary_count
!==
undefined
)
{
summary_selector
+=
'
, [data-drupal-facets-summary-id=
'
+
settings
.
facets_views_ajax
.
facets_summary_ajax_summary_count
.
facets_summary_id
+
'
]
'
;
}
$
(
summary_selector
).
each
(
function
(
index
,
summaryWrapper
)
{
let
summaryPluginId
=
$
(
summaryWrapper
).
attr
(
'
data-drupal-facets-summary-plugin-id
'
);
let
summaryPluginIdWrapper
=
$
(
summaryWrapper
).
attr
(
'
id
'
);
facet_settings
.
submit
.
facet_summary_plugin_ids
[
summaryPluginIdWrapper
]
=
summaryPluginId
;
});
}
Drupal
.
ajax
(
facet_settings
).
execute
();
@@ -143,7 +198,7 @@
var
settings
=
drupalSettings
;
var
update_summary
=
false
;
if
(
settings
.
facets_views_ajax
.
facets_summary_ajax
)
{
if
(
settings
.
facets_views_ajax
.
facets_summary_ajax
_summary
||
settings
.
facets_views_ajax
.
facets_summary_ajax_summary_count
)
{
update_summary
=
true
;
}
@@ -162,8 +217,8 @@
return
v
.
slice
(
block_id_start
.
length
,
v
.
length
);
}
}).
join
();
var
block_selector
=
'
#
'
+
$
(
this
).
attr
(
'
id
'
);
facets_blocks
[
block_
id
]
=
block_
selector
;
var
block_selector
=
$
(
this
).
attr
(
'
id
'
);
facets_blocks
[
block_
selector
]
=
block_
id
;
});
return
facets_blocks
;
@@ -204,12 +259,12 @@
}
// Helper function to add exposed form data to facets url
var
addExposedFiltersToFacetsUrl
=
function
(
href
,
view_name
,
view_display_id
)
{
var
addExposedFiltersToFacetsUrl
=
function
(
href
,
view_name
,
view_display_id
)
{
var
$exposed_form
=
$
(
'
form#views-exposed-form-
'
+
view_name
.
replace
(
/_/g
,
'
-
'
)
+
'
-
'
+
view_display_id
.
replace
(
/_/g
,
'
-
'
));
var
params
=
Drupal
.
Views
.
parseQueryString
(
href
);
$
.
each
(
$exposed_form
.
serializeArray
(),
function
()
{
$
.
each
(
$exposed_form
.
serializeArray
(),
function
()
{
params
[
this
.
name
]
=
this
.
value
;
});
Loading