Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
265a3a0
Alert is moved from $.extend to proper function
varadekd Mar 2, 2026
ff8591c
admin-application moved from $.extend
varadekd Mar 3, 2026
93742c9
autoassign moved from $.extend
varadekd Mar 3, 2026
037d040
admin.journal moved from $.extend
varadekd Mar 3, 2026
6ddc47a
admin.users moved from $.extend
varadekd Mar 3, 2026
20fae5d
admin.background moved from $.extend
varadekd Mar 3, 2026
cc968cd
admin.editor moved from $.extend
varadekd Mar 3, 2026
e4a7cbb
admin.journalarticle moved from $.extend
varadekd Mar 3, 2026
3dfa03e
admin.notification moved from $.extend
varadekd Mar 3, 2026
c65b296
admin.reports moved from $.extend
varadekd Mar 3, 2026
69593a9
admin.reports moved from $.extend
varadekd Mar 3, 2026
fa86fd8
admin.ris moved from $.extend
varadekd Mar 3, 2026
b9f1a91
admin.update_request moved from $.extend
varadekd Mar 3, 2026
3378f6a
associate files moved from $.extend
varadekd Mar 3, 2026
1d67879
associate files moved from $.extend
varadekd Mar 3, 2026
522c905
editor.groupapp files moved from $.extend
varadekd Mar 3, 2026
8f5bad7
editor.groupjournal files moved from $.extend
varadekd Mar 3, 2026
6005f5a
notification moved from $.extend
varadekd Mar 3, 2026
ac07fff
public.article is moved from $.extend
varadekd Mar 3, 2026
59e063f
public.journal is moved from $.extend
varadekd Mar 3, 2026
19bc5fa
public.toc is moved from $.extend
varadekd Mar 3, 2026
cddd064
publisher.journal is moved from $.extend
varadekd Mar 3, 2026
2df6887
publisher.mydraft is moved from $.extend
varadekd Mar 3, 2026
45ff7fd
pub.update_req is moved from $.extend
varadekd Mar 3, 2026
9bf1edf
Moved search build url to a factory
varadekd Mar 3, 2026
8577158
Moved search build url to a factory
varadekd Mar 3, 2026
c7c71ec
Moved admin.application to search build url to a factory
varadekd Mar 3, 2026
7d819dc
Moved admin.autoassign to search build url to a factory
varadekd Mar 3, 2026
d72c115
search_url for admin.background moved to factory
varadekd Mar 10, 2026
f13216a
search_url for admin.editor moved to factory
varadekd Mar 10, 2026
9a80f56
search_url for admin.journal moved to factory
varadekd Mar 10, 2026
302ee7c
search_url for admin.journals moved to factory
varadekd Mar 10, 2026
359447f
search_url for admin.notifcations moved to factory
varadekd Mar 10, 2026
406debb
search_url for admin.reportss moved to factory
varadekd Mar 10, 2026
efadac5
search_url for admin.ris moved to factory
varadekd Mar 10, 2026
8baae88
search_url for admin.update_req moved to factory
varadekd Mar 10, 2026
1209a24
search_url for admin.users moved to factory
varadekd Mar 10, 2026
d635690
search_url for associate.app moved to factory
varadekd Mar 10, 2026
ca07dce
search_url for associate.journals moved to factory
varadekd Mar 10, 2026
6f3766c
search_url for editor.groupapp moved to factory
varadekd Mar 10, 2026
3821ee2
search_url for editor.groupjournals moved to factory
varadekd Mar 10, 2026
ef0d214
search_url for notifications moved to factory
varadekd Mar 10, 2026
8b620b5
search_url for public.article moved to factory
varadekd Mar 10, 2026
a70558d
search_url for public.journal moved to factory
varadekd Mar 10, 2026
306fc72
search_url for public.toc moved to factory
varadekd Mar 10, 2026
a95bc7f
search_url for publisher.journals moved to factory
varadekd Mar 10, 2026
6761486
search_url for publisher.mydrafts moved to factory
varadekd Mar 10, 2026
2ab9fd8
search_url for publisher.update_req moved to factory
varadekd Mar 10, 2026
74d206d
search_url factory moved to edges common
varadekd Mar 10, 2026
118332d
broken search_url handled
varadekd Mar 10, 2026
99f0fd7
broken search_url handled
varadekd Mar 10, 2026
b6048ed
broken search_url handled
varadekd Mar 10, 2026
5808a29
broken search_url handled
varadekd Mar 10, 2026
8a4f66a
Search factory added
varadekd Mar 12, 2026
09e4a4d
admin notifications updated
varadekd Mar 25, 2026
053487c
admin users updated
varadekd Mar 25, 2026
81b2f46
admin update request updated
varadekd Mar 25, 2026
5326682
admin journals updated
varadekd Mar 25, 2026
964283e
admin application updated
varadekd Mar 25, 2026
20ac508
admin autoassign updated to makeSearch
varadekd Mar 25, 2026
e67db8a
admin bg_jobs updated to makeSearch
varadekd Mar 25, 2026
5b94263
admin editor_groups updated to makeSearch
varadekd Mar 25, 2026
f453fc1
admin ris updated to makeSearch
varadekd Mar 25, 2026
2a0a082
admin reports updated
varadekd Mar 25, 2026
1637876
admin journal article updated
varadekd Mar 25, 2026
bce9061
associate app article updated
varadekd Mar 25, 2026
e8e7087
associate journals updated
varadekd Mar 25, 2026
4e813a7
editor groupapp updated
varadekd Mar 25, 2026
11682c9
editor group journals updated
varadekd Mar 25, 2026
5a6bdfa
pub journals journals updated
varadekd Mar 25, 2026
0fadc79
pub update req updated
varadekd Mar 25, 2026
af408a2
notifications updated
varadekd Mar 25, 2026
bd2d268
pubn article updated
varadekd Mar 25, 2026
7ab2259
pubn journal updated
varadekd Mar 25, 2026
945fae7
pub toc updated
varadekd Mar 25, 2026
4760eb0
$.extend is remove
varadekd Mar 25, 2026
446f3e9
Merge branch 'develop' into feature/4185_code_refactor
varadekd Mar 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
236 changes: 217 additions & 19 deletions portality/static/js/doaj.fieldrender.edges.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
$.extend(true, doaj, {
filters: {
doaj.filters = {
noCharges: function () {
return {
id: "no_charges",
Expand Down Expand Up @@ -43,8 +42,9 @@ $.extend(true, doaj, {
}
}

},
facets: {
};

doaj.facets = {
inDOAJ: function () {
return edges.newRefiningANDTermSelector({
id: "in_doaj",
Expand Down Expand Up @@ -336,9 +336,9 @@ $.extend(true, doaj, {
})
})
}
},
};

valueMaps: {
doaj.valueMaps = {
// This must be updated in line with the list in formcontext/choices.py
applicationStatus: {
'update_request': 'Update Request',
Expand Down Expand Up @@ -440,8 +440,9 @@ $.extend(true, doaj, {
dateHistogramSelectorExporter: function(component) {
return component.values;
}
},
components: {
};

doaj.components = {
pager: function (id, category) {
return edges.newPager({
id: id,
Expand Down Expand Up @@ -520,6 +521,205 @@ $.extend(true, doaj, {
})
},

//-----------------------------
// Reusable facet helpers
//-----------------------------

// Standard RefiningAND term facet - replaces the ~10-line repeated block across all edge files.
// Required params: id, field, display
// Optional params: deactivateThreshold (default 0), orderBy, orderDir, open (default false)
refiningAndFacet: function(params) {
return edges.newRefiningANDTermSelector({
id: params.id,
category: "facet",
field: params.field,
display: params.display,
deactivateThreshold: edges.getParam(params.deactivateThreshold, 0),
orderBy: edges.getParam(params.orderBy, undefined),
orderDir: edges.getParam(params.orderDir, undefined),
size: edges.getParam(params.size, undefined),
valueMap: edges.getParam(params.valueMap, undefined),
valueFunction: edges.getParam(params.valueFunction, undefined),
renderer: edges.bs3.newRefiningANDTermSelectorRenderer({
controls: true,
open: edges.getParam(params.open, false),
togglable: edges.getParam(params.togglable, true),
countFormat: doaj.valueMaps.countFormat,
hideInactive: edges.getParam(params.hideInactive, true)
})
});
},

// Month-interval date histogram facet.
// Required params: id, field, display
// Optional params: open (default false), togglable (default false)
monthDateHistogramFacet: function(params) {
return edges.newDateHistogramSelector({
id: params.id,
category: "facet",
field: params.field,
interval: "month",
display: params.display,
displayFormatter: function(val) {
var d = new Date(parseInt(val));
return d.getUTCFullYear().toString() + "-" + doaj.valueMaps.monthPadding(d.getUTCMonth() + 1);
},
sortFunction: function(values) {
values.reverse();
return values;
},
renderer: edges.bs3.newDateHistogramSelectorRenderer({
countFormat: doaj.valueMaps.countFormat,
hideInactive: true,
open: edges.getParam(params.open, false),
togglable: edges.getParam(params.togglable, false)
})
});
},

// Year-interval date histogram facet.
// Required params: id, field, display
// Optional params: open (default false), togglable (default false)
yearDateHistogramFacet: function(params) {
return edges.newDateHistogramSelector({
id: params.id,
category: "facet",
field: params.field,
interval: "year",
display: params.display,
displayFormatter: function(val) {
return (new Date(parseInt(val))).getUTCFullYear().toString();
},
sortFunction: function(values) {
values.reverse();
return values;
},
renderer: edges.bs3.newDateHistogramSelectorRenderer({
countFormat: doaj.valueMaps.countFormat,
hideInactive: true,
open: edges.getParam(params.open, false),
togglable: edges.getParam(params.togglable, false)
})
});
},

//-----------------------------
// makeSearch factory
//-----------------------------
// Builds a complete Edges search interface from a declarative config, handling all
// repeated boilerplate (searching notification, pagers, search controller, selected filters,
// error callback) so individual search definitions only need to specify what's unique.
//
// Required params:
// selector {string} CSS selector for the container div, e.g. "#admin_alerts"
// searchUrl {string} Full search URL (use doaj.edgeUtil.url.build(path) to construct)
//
// Optional params:
// facets {Array} Pre-built component objects (use refiningAndFacet / monthDateHistogramFacet)
// sortOptions {Array} [{display, field}] for the sort menu
// fieldOptions {Array} [{display, field}] for the field search menu
// searchPlaceholder {string} Search box placeholder text
// sizeOptions {Array} Page size options, default [25, 50, 100]
// resultsDisplay {Object} A pre-built edges.newResultsDisplay(...) component
// fieldDisplays {Object} Field name -> label map for the selected-filters bar
// rangeFunctions {Object} Field name -> range display function map
// openingQuery {Object} es.newQuery(...) for the initial page load
// callbacks {Object} Edge callbacks; edges:query-fail is always added if absent
makeSearch: function(params) {
var selector = params.selector;
var search_url = params.searchUrl;

var sortOptions = edges.getParam(params.sortOptions, [{"display": "Date Created", "field": "created_date"}]);
var fieldOptions = edges.getParam(params.fieldOptions, []);
var sizeOptions = edges.getParam(params.sizeOptions, [25, 50, 100]);
var fieldDisplays = edges.getParam(params.fieldDisplays, {});
var rangeFunctions = edges.getParam(params.rangeFunctions, {});
var valueMaps = edges.getParam(params.valueMaps, {});
var compoundDisplays = edges.getParam(params.compoundDisplays, undefined);
var selectedFiltersRenderer = edges.getParam(params.selectedFiltersRenderer, undefined);
var openingQuery = edges.getParam(params.openingQuery, es.newQuery({
sort: [{field: "created_date", order: "desc"}],
size: 25
}));

var callbacks = edges.getParam(params.callbacks, {});
if (!callbacks["edges:query-fail"]) {
callbacks["edges:query-fail"] = function() {
alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact an administrator.");
};
}

var components = [doaj.components.searchingNotification()];

var facets = edges.getParam(params.facets, []);
for (var i = 0; i < facets.length; i++) {
components.push(facets[i]);
}

components.push(edges.newFullSearchController({
id: "search-controller",
category: "controller",
sortOptions: sortOptions,
fieldOptions: fieldOptions,
defaultOperator: "AND",
renderer: doaj.renderers.newFullSearchControllerRenderer({
freetextSubmitDelay: -1,
searchButton: true,
searchPlaceholder: edges.getParam(params.searchPlaceholder, "Search")
})
}));

components.push(edges.newPager({
id: "top-pager",
category: "top-pager",
renderer: edges.bs3.newPagerRenderer({
sizeOptions: sizeOptions,
numberFormat: doaj.valueMaps.countFormat,
scroll: false
})
}));
components.push(edges.newPager({
id: "bottom-pager",
category: "bottom-pager",
renderer: edges.bs3.newPagerRenderer({
sizeOptions: sizeOptions,
numberFormat: doaj.valueMaps.countFormat,
scroll: false
})
}));

if (params.resultsDisplay) {
components.push(params.resultsDisplay);
}

if (Object.keys(fieldDisplays).length > 0) {
var sfParams = {
id: "selected-filters",
category: "selected-filters",
fieldDisplays: fieldDisplays,
rangeFunctions: rangeFunctions,
valueMaps: valueMaps
};
if (compoundDisplays) {
sfParams.compoundDisplays = compoundDisplays;
}
if (selectedFiltersRenderer) {
sfParams.renderer = selectedFiltersRenderer;
}
components.push(edges.newSelectedFilters(sfParams));
}

return edges.newEdge({
selector: selector,
template: edges.bs3.newFacetview(),
search_url: search_url,
manageUrl: true,
components: components,
openingQuery: openingQuery,
callbacks: callbacks
});
},

newDateHistogramSelector : function(params) {
if (!params) { params = {} }
doaj.components.DateHistogramSelector.prototype = edges.newSelector(params);
Expand Down Expand Up @@ -1197,9 +1397,9 @@ $.extend(true, doaj, {
this.drawn = true;
};
}
},
};

templates: {
doaj.templates = {
newPublicSearch: function (params) {
return edges.instantiate(doaj.templates.PublicSearch, params, edges.newTemplate);
},
Expand Down Expand Up @@ -1325,9 +1525,9 @@ $.extend(true, doaj, {
edge.context.html(frag);
};
}
},
};

renderers: {
doaj.renderers = {
newAdminBasicResultsRenderer: function (params) {
if (!params) {
params = {}
Expand Down Expand Up @@ -5334,9 +5534,9 @@ $.extend(true, doaj, {
this.component.setSort({field: field, dir: dir});
};
}
},
};

fieldRender: {
doaj.fieldRender = {
fragment:
{
fullFlagHTML: `<span class="flag flag--full" title="Record flagged to me"><svg width="18" height="20" viewBox="0 0 18 20" fill="none" xmlns="http://www.w3.org/2000/svg">
Expand Down Expand Up @@ -5713,9 +5913,9 @@ $.extend(true, doaj, {
return false;
}
},
},
};

bulk: {
doaj.bulk = {
applicationMultiFormBox: function (edge_instance, doaj_type) {
return doaj.multiFormBox.newMultiFormBox({
edge: edge_instance,
Expand Down Expand Up @@ -5778,6 +5978,4 @@ $.extend(true, doaj, {
}
});
}
}

});
};
Loading
Loading