diff --git a/portality/static/js/doaj.fieldrender.edges.js b/portality/static/js/doaj.fieldrender.edges.js index a1799f220a..d15924e75e 100644 --- a/portality/static/js/doaj.fieldrender.edges.js +++ b/portality/static/js/doaj.fieldrender.edges.js @@ -1,5 +1,4 @@ -$.extend(true, doaj, { - filters: { +doaj.filters = { noCharges: function () { return { id: "no_charges", @@ -43,8 +42,9 @@ $.extend(true, doaj, { } } - }, - facets: { +}; + +doaj.facets = { inDOAJ: function () { return edges.newRefiningANDTermSelector({ id: "in_doaj", @@ -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', @@ -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, @@ -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); @@ -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); }, @@ -1325,9 +1525,9 @@ $.extend(true, doaj, { edge.context.html(frag); }; } - }, +}; - renderers: { +doaj.renderers = { newAdminBasicResultsRenderer: function (params) { if (!params) { params = {} @@ -5334,9 +5534,9 @@ $.extend(true, doaj, { this.component.setSort({field: field, dir: dir}); }; } - }, +}; - fieldRender: { +doaj.fieldRender = { fragment: { fullFlagHTML: ` @@ -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, @@ -5778,6 +5978,4 @@ $.extend(true, doaj, { } }); } - } - -}); +}; diff --git a/portality/static/js/edges/admin.alerts.edge.js b/portality/static/js/edges/admin.alerts.edge.js index b5e5f603cb..9d43c3aa82 100644 --- a/portality/static/js/edges/admin.alerts.edge.js +++ b/portality/static/js/edges/admin.alerts.edge.js @@ -1,242 +1,118 @@ // ~~ AdminAlerts:Edge ~~ // ~~-> Edges:Technology ~~ -$.extend(true, doaj, { - adminAlertsSearch : { - activeEdges : {}, +doaj.adminAlertsSearch = { - init : function(params) { - if (!params) { params = {} } + activeEdges: {}, - var current_domain = document.location.host; - var current_scheme = window.location.protocol; + init: function(params) { + if (!params) { params = {} } - var selector = params.selector || "#admin_alerts"; - var search_url = current_scheme + "//" + current_domain + doaj.adminAlertsSearchConfig.searchPath; + var selector = params.selector || "#admin_alerts"; - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - // facets - - edges.newRefiningANDTermSelector({ - id: "source", - category: "facet", - field: "source.exact", - display: "Source", - deactivateThreshold: 0, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "state", - category: "facet", - field: "state.exact", - display: "State", - orderBy: "term", - orderDir: "asc", - deactivateThreshold: 0, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newDateHistogramSelector({ - id: "created_date", - category: "facet", - field : "created_date", - interval: "month", - display: "Date", - displayFormatter : function(val) { - let 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: countFormat, - hideInactive: true - }) - }), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Alert Date','field':'created_date'} - ], - fieldOptions: [ - {'display':'Message','field':'message'}, - {'display':'Source','field':'source'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search All Alerts" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newResultsFieldsByRowRenderer({ - noResultsText: "Great news, there are no alerts!", - rowDisplay : [ - [ - { - pre : "[", - field: "state", - post: "] " - }, - { - pre : "From ", - field: "source", - post: "" - }, - { - pre: " at ", - field: "created_date", - post: "" - } - ], - [ - { - pre : "

", - field: "message", - post: "

" - } - ], - [ - { - valueFunction: function(val, res, component) { - let frag = ""; - if (res.audit) { - frag += ""; + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.adminAlertsSearchConfig.searchPath), + facets: [ + doaj.components.refiningAndFacet({id: "source", field: "source.exact", display: "Source"}), + doaj.components.refiningAndFacet({id: "state", field: "state.exact", display: "State", orderBy: "term", orderDir: "asc"}), + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Date"}) + ], + sortOptions: [ + {'display': 'Alert Date', 'field': 'created_date'} + ], + fieldOptions: [ + {'display': 'Message', 'field': 'message'}, + {'display': 'Source', 'field': 'source'} + ], + searchPlaceholder: "Search All Alerts", + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + noResultsText: "Great news, there are no alerts!", + rowDisplay: [ + [ + { pre: "[", field: "state", post: "] " }, + { pre: "From ", field: "source", post: "" }, + { pre: " at ", field: "created_date", post: "" } + ], + [ + { pre: "

", field: "message", post: "

" } + ], + [ + { + valueFunction: function(val, res) { + let frag = ""; + if (res.audit) { + frag += ""; } + return frag; } - ], - [ - { - valueFunction: function(val, res, component) { - let controlClass = edges.css_classes(component.namespace, "control"); - let in_progress = `Set In Progress`; - let resolved = `Mark Closed`; - let frag = ""; - if (res.state === "new") { - frag = in_progress + " " + resolved; - } else if (res.state === "in_progress") { - frag = resolved; - } - return frag; + } + ], + [ + { + valueFunction: function(val, res, component) { + let controlClass = edges.css_classes(component.namespace, "control"); + let in_progress = `Set In Progress`; + let resolved = `Mark Closed`; + let frag = ""; + if (res.state === "new") { + frag = in_progress + " " + resolved; + } else if (res.state === "in_progress") { + frag = resolved; } + return frag; } - ] + } ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "source.exact" : "Source", - "state.exact" : "State", - "created_date" : "Alert Date" - }, - rangeFunctions : { - "created_date" : doaj.valueMaps.displayYearMonthPeriod - } + ] }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - components: components, - openingQuery: es.newQuery({ - must: [es.newTermFilter({field: "state.exact", value: "new"})], - sort: [{field: "created_date", order: "desc"}], - size: 25 - }), - 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."); - }, - "edges:post-render" : function() { - let resultsComponent = doaj.adminAlertsSearch.activeEdges[selector].getComponent({id: "results"}); - let controllSelector = edges.css_class_selector(resultsComponent.renderer.namespace, "control"); - $(controllSelector).on("click", function(e) { - e.preventDefault(); - let a = e.currentTarget; - let link = a.getAttribute("href"); - $.ajax({ - method: "POST", - url: link, - success: function(data) { - // reload the page to see the changes - // window.location.reload(); - alert("Updated successfully, reload the page to see the changes"); - }, - error: function(xhr, status, error) { - alert("There was an unexpected error processing your request."); - } - }) + }), + fieldDisplays: { + "source.exact": "Source", + "state.exact": "State", + "created_date": "Alert Date" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + }, + openingQuery: es.newQuery({ + must: [es.newTermFilter({field: "state.exact", value: "new"})], + sort: [{field: "created_date", order: "desc"}], + size: 25 + }), + callbacks: { + "edges:post-render": function() { + let resultsComponent = doaj.adminAlertsSearch.activeEdges[selector].getComponent({id: "results"}); + let controllSelector = edges.css_class_selector(resultsComponent.renderer.namespace, "control"); + $(controllSelector).on("click", function(e) { + e.preventDefault(); + let link = e.currentTarget.getAttribute("href"); + $.ajax({ + method: "POST", + url: link, + success: function() { + alert("Updated successfully, reload the page to see the changes"); + }, + error: function() { + alert("There was an unexpected error processing your request."); + } }) - } + }) } - }); - doaj.adminAlertsSearch.activeEdges[selector] = e; - } - } -}); + } + }); + doaj.adminAlertsSearch.activeEdges[selector] = e; + } +}; -jQuery(document).ready(function($) { +jQuery(document).ready(function() { doaj.adminAlertsSearch.init(); }); diff --git a/portality/static/js/edges/admin.applications.edge.js b/portality/static/js/edges/admin.applications.edge.js index 77b7f4fafd..8bb7e82dac 100644 --- a/portality/static/js/edges/admin.applications.edge.js +++ b/portality/static/js/edges/admin.applications.edge.js @@ -1,39 +1,30 @@ // ~~ AdminApplicationsSearch:Feature ~~ -$.extend(true, doaj, { +doaj.adminApplicationsSearch = { - adminApplicationsSearch : { - activeEdges : {}, + activeEdges : {}, - init : function(params) { - if (!params) { params = {} } + init : function(params) { + if (!params) { params = {} } - var current_domain = document.location.host; - var current_scheme = window.location.protocol; + var selector = params.selector || "#admin_applications"; - var selector = params.selector || "#admin_applications"; - var search_url = current_scheme + "//" + current_domain + doaj.adminApplicationsSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - // filters + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.adminApplicationsSearchConfig.searchPath), + facets: [ edges.newFilterSetter({ - id : "see_applications_no_charges", + id: "see_applications_no_charges", category: "facet", - filters : [ + filters: [ doaj.filters.noCharges() ], - renderer : doaj.renderers.newFacetFilterSetterRenderer({ - facetTitle : "", + renderer: doaj.renderers.newFacetFilterSetterRenderer({ + facetTitle: "", open: true, togglable: false, showCount: false }) }), - // facets doaj.facets.openOrClosed(), doaj.facets.applicationStatus(), doaj.facets.hasEditorGroup(), @@ -46,7 +37,6 @@ $.extend(true, doaj, { doaj.facets.subject(), doaj.facets.publisher(), doaj.facets.journalLicence(), - doaj.components.newFacetDivider({ id: "reporting_tools_divider", category: "facet", @@ -62,56 +52,54 @@ $.extend(true, doaj, { ], autoLookupRange: true, category: "facet", - autoLookupFilters : [ - es.newRangeFilter({field: "last_manual_update", gte:"2000-01-01T00:00:00Z"}) + autoLookupFilters: [ + es.newRangeFilter({field: "last_manual_update", gte: "2000-01-01T00:00:00Z"}) ], renderer: doaj.renderers.newBSMultiDateRangeFacet({ open: true }) }), - doaj.components.newDateHistogramSelector({ id: "date_applied_histogram", category: "facet", field: "admin.date_applied", display: "Date Applied Histogram", interval: "year", - displayFormatter : function(val) { + displayFormatter: function(val) { let date = new Date(parseInt(val)); let interval = doaj.adminApplicationsSearch.activeEdges[selector].getComponent({id: "date_applied_histogram"}).interval; if (interval === "year") { - return date.toLocaleString('default', { year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {year: 'numeric', timeZone: "UTC"}); } else if (interval === "month") { - return date.toLocaleString('default', { month: 'long', year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {month: 'long', year: 'numeric', timeZone: "UTC"}); } }, - sortFunction : function(values) { + sortFunction: function(values) { values.reverse(); return values; }, renderer: doaj.renderers.newFlexibleDateHistogramSelectorRenderer({ showSelected: false, - countFormat: countFormat, + countFormat: doaj.valueMaps.countFormat, hideInactive: true }) }), - doaj.components.newDateHistogramSelector({ id: "last_updated_histogram", category: "facet", field: "last_manual_update", display: "Last Update Histogram", interval: "year", - displayFormatter : function(val) { + displayFormatter: function(val) { let date = new Date(parseInt(val)); let interval = doaj.adminApplicationsSearch.activeEdges[selector].getComponent({id: "last_updated_histogram"}).interval; if (interval === "year") { - return date.toLocaleString('default', { year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {year: 'numeric', timeZone: "UTC"}); } else if (interval === "month") { - return date.toLocaleString('default', { month: 'long', year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {month: 'long', year: 'numeric', timeZone: "UTC"}); } }, - sortFunction : function(values) { + sortFunction: function(values) { if (values.length > 0 && values[0].display === "1970") { values.shift(); } @@ -120,27 +108,26 @@ $.extend(true, doaj, { }, renderer: doaj.renderers.newFlexibleDateHistogramSelectorRenderer({ showSelected: false, - countFormat: countFormat, + countFormat: doaj.valueMaps.countFormat, hideInactive: true }) }), - doaj.components.newDateHistogramSelector({ id: "date_rejected_histogram", category: "facet", field: "admin.date_rejected", display: "Date Rejected Histogram", interval: "year", - displayFormatter : function(val) { + displayFormatter: function(val) { let date = new Date(parseInt(val)); let interval = doaj.adminApplicationsSearch.activeEdges[selector].getComponent({id: "date_rejected_histogram"}).interval; if (interval === "year") { - return date.toLocaleString('default', { year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {year: 'numeric', timeZone: "UTC"}); } else if (interval === "month") { - return date.toLocaleString('default', { month: 'long', year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {month: 'long', year: 'numeric', timeZone: "UTC"}); } }, - sortFunction : function(values) { + sortFunction: function(values) { if (values.length > 0 && values[0].display === "1970") { values.shift(); } @@ -149,11 +136,10 @@ $.extend(true, doaj, { }, renderer: doaj.renderers.newFlexibleDateHistogramSelectorRenderer({ showSelected: false, - countFormat: countFormat, + countFormat: doaj.valueMaps.countFormat, hideInactive: true }) }), - doaj.components.newReportExporter({ id: "report-exporter", category: "facet", @@ -175,259 +161,125 @@ $.extend(true, doaj, { {component_id: "last_updated_histogram", exporter: doaj.valueMaps.dateHistogramSelectorExporter}, {component_id: "date_rejected_histogram", exporter: doaj.valueMaps.dateHistogramSelectorExporter} ] - }), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Date applied','field':'admin.date_applied'}, - {'display':'Last updated','field':'last_manual_update'}, // Note: last updated on UI points to when last updated by a person (via form) - {'display':'Title','field':'index.unpunctitle.exact'}, - {'display':'Flag deadline', 'field': 'index.most_urgent_flag_deadline'}, - {'display': "Date Rejected", 'field': 'admin.date_rejected'} + }) + ], + sortOptions: [ + {'display': 'Date applied', 'field': 'admin.date_applied'}, + {'display': 'Last updated', 'field': 'last_manual_update'}, + {'display': 'Title', 'field': 'index.unpunctitle.exact'}, + {'display': 'Flag deadline', 'field': 'index.most_urgent_flag_deadline'}, + {'display': 'Date Rejected', 'field': 'admin.date_rejected'} + ], + fieldOptions: [ + {'display': 'Title', 'field': 'index.title'}, + {'display': 'Keywords', 'field': 'bibjson.keywords'}, + {'display': 'Classification', 'field': 'index.classification'}, + {'display': 'ISSN', 'field': 'index.issn.exact'}, + {'display': 'Country of publisher', 'field': 'index.country'}, + {'display': 'Journal language', 'field': 'index.language'}, + {'display': 'Publisher', 'field': 'bibjson.publisher.name'}, + {'display': 'Journal: alternative title', 'field': 'bibjson.alternative_title'}, + {'display': 'Notes', 'field': 'admin.notes.note'} + ], + searchPlaceholder: "Search All Applications", + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: doaj.renderers.newAdminBasicResultsRenderer({ + topRowDisplay: [ + [{valueFunction: doaj.fieldRender.titleField}], + [{valueFunction: doaj.fieldRender.editSuggestion({editUrl: doaj.adminApplicationsSearchConfig.applicationEditUrl})}] ], - fieldOptions: [ - {'display':'Title','field':'index.title'}, - {'display':'Keywords','field':'bibjson.keywords'}, - {'display':'Classification','field':'index.classification'}, - {'display':'ISSN', 'field':'index.issn.exact'}, - {'display':'Country of publisher','field':'index.country'}, - {'display':'Journal language','field':'index.language'}, - {'display':'Publisher','field':'bibjson.publisher.name'}, - {'display':'Journal: alternative title','field':'bibjson.alternative_title'}, - {'display':'Notes','field':'admin.notes.note'}, + leftRowDisplay: [ + [{pre: 'Alternative title: ', field: "bibjson.alternative_title"}], + [{valueFunction: doaj.fieldRender.issns}], + [{valueFunction: doaj.fieldRender.links}], + [{pre: "Classification: ", field: "index.classification"}], + [{pre: "Keywords: ", field: "bibjson.keywords"}], + [{pre: "Publisher: ", field: "bibjson.publisher.name"}], + [{pre: "Country of publisher: ", valueFunction: doaj.fieldRender.countryName}], + [{pre: "Journal language: ", field: "bibjson.language"}], + [{pre: "Publication charges?: ", valueFunction: doaj.fieldRender.authorPays}], + [{pre: "Journal license: ", valueFunction: doaj.fieldRender.journalLicense}] ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search All Applications" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - doaj.components.pager("top-pager", "top-pager"), - doaj.components.pager("bottom-pager", "bottom-pager"), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: doaj.renderers.newAdminBasicResultsRenderer({ - topRowDisplay : [ - [ - { - valueFunction: doaj.fieldRender.titleField - } - ], - [ - { - valueFunction: doaj.fieldRender.editSuggestion({ - editUrl : doaj.adminApplicationsSearchConfig.applicationEditUrl - }) - } - ], - ], - leftRowDisplay : [ - [ - { - "pre": 'Alternative title: ', - "field": "bibjson.alternative_title" - } - ], - [ - { - valueFunction: doaj.fieldRender.issns - } - ], - [ - { - valueFunction: doaj.fieldRender.links - } - ], - [ - { - "pre": "Classification: ", - "field": "index.classification" - } - ], - [ - { - "pre": "Keywords: ", - "field": "bibjson.keywords" - } - ], - [ - { - "pre": "Publisher: ", - "field": "bibjson.publisher.name" - } - ], - [ - { - "pre": "Country of publisher: ", - valueFunction: doaj.fieldRender.countryName - } - ], - [ - { - "pre": "Journal language: ", - "field": "bibjson.language" - } - ], - [ - { - "pre": "Publication charges?: ", - valueFunction: doaj.fieldRender.authorPays - } - ], - [ - { - "pre": "Journal license: ", - valueFunction: doaj.fieldRender.journalLicense - } - ] - ], - rightRowDisplay : [ - [ - { - "pre" : "Application status: ", - valueFunction: doaj.fieldRender.applicationStatus - } - ], - [ - { - "pre" : "Owner: ", - valueFunction: doaj.fieldRender.owner - } - ], - [ - { - "pre" : "Editor group: ", - "field" : "admin.editor_group" - } - ], - [ - { - valueFunction: doaj.fieldRender.deadline - } - ], - [ - { - "pre": "Date applied: ", - valueFunction: doaj.fieldRender.suggestedOn - } - ], - [ - { - "pre" : "Date Rejected: ", - valueFunction: doaj.fieldRender.dateRejected - } - ], - [ - { - "pre": "Last updated: ", - valueFunction: doaj.fieldRender.lastManualUpdate - } - ], - - ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - compoundDisplays : [ - { - filters : [ - es.newTermFilter({ - field: "bibjson.apc.has_apc", - value: false - }), - es.newTermFilter({ - field: "bibjson.other_charges.has_other_charges", - value: false - }) - ], - display : "Without article processing charges (APCs)" - } - ], - fieldDisplays: { - 'admin.application_status.exact': 'Status', - 'index.application_type.exact' : 'Application', - 'index.has_editor_group.exact' : 'Editor group', - 'index.has_editor.exact' : 'Associate Editor', - 'admin.editor_group.exact' : 'Editor group', - 'admin.editor.exact' : 'Editor', - 'index.classification.exact' : 'Classification', - 'index.language.exact' : 'Language', - 'index.country.exact' : 'Country', - 'index.subject.exact' : 'Subject', - 'bibjson.publisher.name.exact' : 'Publisher', - 'bibjson.provider.exact' : 'Platform, Host, Aggregator', - "index.has_apc.exact" : "Charges?", - 'index.license.exact' : 'License', - 'index.is_flagged': "Only Flagged Records", - 'index.flag_assignees.exact': "Flagged to me", - "admin.date_applied": "Date Applied", - "last_manual_update": "Last Updated", - "admin.date_rejected": "Date Rejected" - }, - valueMaps : { - "index.application_type.exact" : { - "finished application/update": "Closed", - "update request": "Open", - "new application": "Open" - } - }, - rangeFunctions : { - "admin.date_applied" : doaj.valueMaps.displayYearMonthPeriod, - "last_manual_update": doaj.valueMaps.displayYearMonthPeriod, - "admin.date_rejected": doaj.valueMaps.displayYearMonthPeriod - }, - renderer : doaj.renderers.newSelectedFiltersRenderer({ - omit : [ - "bibjson.apc.has_apc", - "bibjson.other_charges.has_other_charges" - ], - hideValues: [ - 'index.is_flagged', - 'index.flag_assignees.exact' - ] - }) + rightRowDisplay: [ + [{pre: "Application status: ", valueFunction: doaj.fieldRender.applicationStatus}], + [{pre: "Owner: ", valueFunction: doaj.fieldRender.owner}], + [{pre: "Editor group: ", field: "admin.editor_group"}], + [{valueFunction: doaj.fieldRender.deadline}], + [{pre: "Date applied: ", valueFunction: doaj.fieldRender.suggestedOn}], + [{pre: "Date Rejected: ", valueFunction: doaj.fieldRender.dateRejected}], + [{pre: "Last updated: ", valueFunction: doaj.fieldRender.lastManualUpdate}] + ] }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - openingQuery : es.newQuery({ - sort: {"field" : "admin.date_applied", "order" : "asc"} - }), - components: components, - 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."); - } + }), + compoundDisplays: [ + { + filters: [ + es.newTermFilter({field: "bibjson.apc.has_apc", value: false}), + es.newTermFilter({field: "bibjson.other_charges.has_other_charges", value: false}) + ], + display: "Without article processing charges (APCs)" } - }); - doaj.adminApplicationsSearch.activeEdges[selector] = e; + ], + fieldDisplays: { + 'admin.application_status.exact': 'Status', + 'index.application_type.exact': 'Application', + 'index.has_editor_group.exact': 'Editor group', + 'index.has_editor.exact': 'Associate Editor', + 'admin.editor_group.exact': 'Editor group', + 'admin.editor.exact': 'Editor', + 'index.classification.exact': 'Classification', + 'index.language.exact': 'Language', + 'index.country.exact': 'Country', + 'index.subject.exact': 'Subject', + 'bibjson.publisher.name.exact': 'Publisher', + 'bibjson.provider.exact': 'Platform, Host, Aggregator', + 'index.has_apc.exact': 'Charges?', + 'index.license.exact': 'License', + 'index.is_flagged': "Only Flagged Records", + 'index.flag_assignees.exact': "Flagged to me", + "admin.date_applied": "Date Applied", + "last_manual_update": "Last Updated", + "admin.date_rejected": "Date Rejected" + }, + valueMaps: { + "index.application_type.exact": { + "finished application/update": "Closed", + "update request": "Open", + "new application": "Open" + } + }, + rangeFunctions: { + "admin.date_applied": doaj.valueMaps.displayYearMonthPeriod, + "last_manual_update": doaj.valueMaps.displayYearMonthPeriod, + "admin.date_rejected": doaj.valueMaps.displayYearMonthPeriod + }, + selectedFiltersRenderer: doaj.renderers.newSelectedFiltersRenderer({ + omit: [ + "bibjson.apc.has_apc", + "bibjson.other_charges.has_other_charges" + ], + hideValues: [ + 'index.is_flagged', + 'index.flag_assignees.exact' + ] + }), + openingQuery: es.newQuery({ + sort: {"field": "admin.date_applied", "order": "asc"} + }), + callbacks: { + "edges:pre-render": function() { + doaj.multiFormBox.active.validate(); + } + } + }); - doaj.multiFormBox.active = doaj.bulk.applicationMultiFormBox(e, "applications"); - $(selector).on("edges:pre-render", function() { - doaj.multiFormBox.active.validate(); - }); - } + doaj.adminApplicationsSearch.activeEdges[selector] = e; + doaj.multiFormBox.active = doaj.bulk.applicationMultiFormBox(e, "applications"); } -}); - +}; -jQuery(document).ready(function($) { +jQuery(document).ready(function() { doaj.adminApplicationsSearch.init(); }); diff --git a/portality/static/js/edges/admin.autoassign.edge.js b/portality/static/js/edges/admin.autoassign.edge.js index 565e7b523c..538683affb 100644 --- a/portality/static/js/edges/admin.autoassign.edge.js +++ b/portality/static/js/edges/admin.autoassign.edge.js @@ -1,201 +1,78 @@ // ~~ AdminAlerts:Edge ~~ // ~~-> Edges:Technology ~~ -$.extend(true, doaj, { - - adminAutoassignSearch : { - activeEdges : {}, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#autoassign"; - var search_url = current_scheme + "//" + current_domain + doaj.adminAutoassignSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - // facets - edges.newRefiningANDTermSelector({ - id: "target", - category: "facet", - field: "target.exact", - display: "Editor Group", - orderBy: "term", - orderDir: "asc", - size: 50, - deactivateThreshold: 0, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - - edges.newRefiningANDTermSelector({ - id: "account", - category: "facet", - field: "account_id.exact", - display: "Publisher", - orderBy: "term", - orderDir: "asc", - deactivateThreshold: 0, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - - edges.newRefiningANDTermSelector({ - id: "country_name", - category: "facet", - field: "country_name.exact", - display: "Country Name", - orderBy: "term", - orderDir: "asc", - deactivateThreshold: 0, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Import Date','field':'created_date'}, - {'display':'Publisher','field':'account_id.exact'}, - {'display':'Country Name','field':'country_name.exact'}, - {'display':'Editor Group','field':'target.exact'} - ], - fieldOptions: [ - {'display':'Editor Group','field':'target'}, - {'display':'Publisher','field':'account_id'}, - {'display':'Country Name','field':'country_name'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search All Routers" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newTabularResultsRenderer({ - // the fields to display in the results table - fieldDisplay: [ - { - field: "account_id", - display: "Publisher", - valueFunction: function(value, result) { - if (value && value !== "-") { - return `${value}`; - } - return value; +doaj.adminAutoassignSearch = { + activeEdges : {}, + + init : function(params) { + if (!params) { params = {} } + + var selector = params.selector || "#autoassign"; + + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.adminAutoassignSearchConfig.searchPath), + facets: [ + doaj.components.refiningAndFacet({id: "target", field: "target.exact", display: "Editor Group", orderBy: "term", orderDir: "asc", size: 50}), + doaj.components.refiningAndFacet({id: "account", field: "account_id.exact", display: "Publisher", orderBy: "term", orderDir: "asc"}), + doaj.components.refiningAndFacet({id: "country_name", field: "country_name.exact", display: "Country Name", orderBy: "term", orderDir: "asc"}) + ], + sortOptions: [ + {'display': 'Import Date', 'field': 'created_date'}, + {'display': 'Publisher', 'field': 'account_id.exact'}, + {'display': 'Country Name', 'field': 'country_name.exact'}, + {'display': 'Editor Group', 'field': 'target.exact'} + ], + fieldOptions: [ + {'display': 'Editor Group', 'field': 'target'}, + {'display': 'Publisher', 'field': 'account_id'}, + {'display': 'Country Name', 'field': 'country_name'} + ], + searchPlaceholder: "Search All Routers", + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newTabularResultsRenderer({ + fieldDisplay: [ + { + field: "account_id", + display: "Publisher", + valueFunction: function(value, result) { + if (value && value !== "-") { + return `${value}`; } - }, - { - field: "country_name", - display: "Country Name", - }, - { - field: "country_code", - display: "Country Code" - }, - { - field: "target", - display: "Editor Group", - valueFunction: function(value, result) { - if (value && value !== "-") { - let source = doaj.searchQuerySource({ - queryString: value, - defaultField: "name", - }) - return `${value}`; - } - return value; + return value; + } + }, + {field: "country_name", display: "Country Name"}, + {field: "country_code", display: "Country Code"}, + { + field: "target", + display: "Editor Group", + valueFunction: function(value, result) { + if (value && value !== "-") { + let source = doaj.searchQuerySource({ + queryString: value, + defaultField: "name", + }); + return `${value}`; } - }, - { - field: "created_date", - display: "Import Date" + return value; } - ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "target.exact" : "Editor Group", - "country_name.exact" : "Country Name", - "account_id.exact" : "Publisher" - } + }, + {field: "created_date", display: "Import Date"} + ] }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - components: components, - openingQuery: es.newQuery({ - sort: [{field: "created_date", order: "desc"}], - size: 25 - }), - 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."); - } - } - }); - doaj.adminAutoassignSearch.activeEdges[selector] = e; - } + }), + fieldDisplays: { + "target.exact": "Editor Group", + "country_name.exact": "Country Name", + "account_id.exact": "Publisher" + } + }); + + doaj.adminAutoassignSearch.activeEdges[selector] = e; } -}); +} jQuery(document).ready(function($) { diff --git a/portality/static/js/edges/admin.background_jobs.edge.js b/portality/static/js/edges/admin.background_jobs.edge.js index ed94d43aa6..790ff83f7a 100644 --- a/portality/static/js/edges/admin.background_jobs.edge.js +++ b/portality/static/js/edges/admin.background_jobs.edge.js @@ -1,305 +1,173 @@ // ~~ BackgroundJobsSearch:Feature ~~ -$.extend(true, doaj, { - - adminBackgroundJobsSearch : { - activeEdges : {}, - - newBGResultsRenderer : function(params) { - return edges.instantiate(doaj.adminBackgroundJobsSearch.BGResultsRenderer, params, edges.newRenderer); - }, - BGResultsRenderer : function(params) { - this.noResultsText = edges.getParam(params.noResultsText, "No Results"); - - this.namespace = "doaj-bg-results"; - - this.draw = function(params) { - var frag = ""; - if (this.component.results !== false && this.component.results.length === 0) { - this.component.context.html(this.noResultsText); - return; +doaj.adminBackgroundJobsSearch = { + activeEdges : {}, + + newBGResultsRenderer : function(params) { + return edges.instantiate(doaj.adminBackgroundJobsSearch.BGResultsRenderer, params, edges.newRenderer); + }, + BGResultsRenderer : function(params) { + this.noResultsText = edges.getParam(params.noResultsText, "No Results"); + + this.namespace = "doaj-bg-results"; + + this.draw = function(params) { + var frag = ""; + if (this.component.results !== false && this.component.results.length === 0) { + this.component.context.html(this.noResultsText); + return; + } + + for (var k = 0; k < this.component.results.length; k++) { + var resultobj = this.component.results[k]; + var firstRow = ""; + if (resultobj.action) { + firstRow += "" + resultobj.action + ""; } - - for (var k = 0; k < this.component.results.length; k++) { - var resultobj = this.component.results[k]; - var firstRow = ""; - if (resultobj.action) { - firstRow += "" + resultobj.action + ""; - } - if (resultobj.user) { - firstRow += " by " + resultobj.user + ""; - } - if (resultobj.status) { - var color = "#000088"; - if (resultobj.status === "complete") { - color = "#008800" - } else if (resultobj.status === "error") { - color = "#880000"; - } else if (resultobj.status === "cancelled") { - color = "#b47e18"; - } - firstRow += " status: " + resultobj.status + ""; + if (resultobj.user) { + firstRow += " by " + resultobj.user + ""; + } + if (resultobj.status) { + var color = "#000088"; + if (resultobj.status === "complete") { + color = "#008800" + } else if (resultobj.status === "error") { + color = "#880000"; + } else if (resultobj.status === "cancelled") { + color = "#b47e18"; } + firstRow += " status: " + resultobj.status + ""; + } - var dateRow = ""; + var dateRow = ""; - // add the date added to doaj - if (resultobj.created_date) { - dateRow += "Job Created: " + doaj.dates.humanYearMonth(resultobj.created_date) + "
"; - } - if (resultobj.last_updated) { - dateRow += "Job Last Updated: " + doaj.dates.humanYearMonth(resultobj.last_updated) + "
"; - } - - var paramsBlock = ""; - if (resultobj.params) { - paramsBlock += "Parameters:
"; - for (var key in resultobj.params) { - var val = resultobj.params[key]; - if ($.isArray(val)) { - val = val.join(', '); - } - paramsBlock += key + " -- " + edges.escapeHtml(val) + "
"; - } - } + // add the date added to doaj + if (resultobj.created_date) { + dateRow += "Job Created: " + doaj.dates.humanYearMonth(resultobj.created_date) + "
"; + } + if (resultobj.last_updated) { + dateRow += "Job Last Updated: " + doaj.dates.humanYearMonth(resultobj.last_updated) + "
"; + } - var refsBlock = ""; - if (resultobj.reference) { - paramsBlock += "Reference:
"; - for (var key in resultobj.reference) { - var val = resultobj.reference[key]; - if ($.isArray(val) || $.isPlainObject(val)) { - val = JSON.stringify(val); - } - refsBlock += key + " -- " + edges.escapeHtml(val) + "
"; + var paramsBlock = ""; + if (resultobj.params) { + paramsBlock += "Parameters:
"; + for (var key in resultobj.params) { + var val = resultobj.params[key]; + if ($.isArray(val)) { + val = val.join(', '); } + paramsBlock += key + " -- " + edges.escapeHtml(val) + "
"; } + } - var auditBlock = ""; - if (resultobj.audit) { - auditBlock += "Audit Messages:
"; - for (var i = 0; i < resultobj.audit.length; i++) { - var audit = resultobj.audit[i]; - auditBlock += audit.timestamp + " -- " + edges.escapeHtml(audit.message) + "
"; + var refsBlock = ""; + if (resultobj.reference) { + paramsBlock += "Reference:
"; + for (var key in resultobj.reference) { + var val = resultobj.reference[key]; + if ($.isArray(val) || $.isPlainObject(val)) { + val = JSON.stringify(val); } + refsBlock += key + " -- " + edges.escapeHtml(val) + "
"; } - - var containerClass = edges.css_classes(this.namespace, "container", this); - var moreInfoClass = edges.css_classes(this.namespace, "more", this); - var toggleClass = edges.css_classes(this.namespace, "toggle", this); - - var expandBlock = ""; - - // start off the string to be rendered - var result = '
'; - - // start the main box that all the details go in - result += "
"; - - result += firstRow + "
"; - result += `Outcome Status: ${resultobj.outcome_status}
` - result += "Job ID: " + resultobj.id + "
"; - result += 'On Queue: ' + resultobj.queue_id + '
'; - result += dateRow + "
"; - - result += 'More Information
'; - result += expandBlock; - - // close off the result with the ending strings, and then return - result += "
"; - result += "
"; - - frag += result; } - this.component.context.html(frag); - - var moreInfoSelector = edges.css_class_selector(this.namespace, "toggle", this); - edges.on(moreInfoSelector, "click", this, "toggleMoreInformation"); - }; - - this.toggleMoreInformation = function(element) { - var moreSelector = edges.css_class_selector(this.namespace, "more", this); - var id = $(element).attr("data-id"); - var segment = this.component.context.find(moreSelector).filter("[data-id=" + id + "]"); - segment.slideToggle(300); - }; - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#background_jobs"; - var search_url = current_scheme + "//" + current_domain + doaj.adminBackgroundJobsSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - // facets - edges.newRefiningANDTermSelector({ - id: "action", - category: "facet", - field: "action.exact", - display: "Action", - deactivateThreshold : 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "user", - category: "facet", - field: "user.exact", - display: "Submitted By", - deactivateThreshold : 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "status", - category: "facet", - field: "status.exact", - display: "Status", - deactivateThreshold : 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "queue_id", - category: "facet", - field: "queue_id.exact", - display: "On Queue", - deactivateThreshold : 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "outcome_status", - category: "facet", - field: "outcome_status.exact", - display: "Outcome Status", - deactivateThreshold : 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Created Date','field':'created_date'}, - {'display':'Last Modified Date','field':'last_updated'} - ], - fieldOptions: [ - {'display':'ID','field':'id.exact'}, - {'display':'Action','field':'action.exact'}, - {'display':'Submitted By','field':'user.exact'}, - {'display':'Status','field':'status.exact'}, - {'display':'Outcome Status','field':'outcome_status.exact'}, - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search Background Jobs" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: doaj.adminBackgroundJobsSearch.newBGResultsRenderer() - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - 'action.exact': 'Action', - 'user.exact' : 'Submitted By', - 'status.exact' : 'Status', - 'outcome_status.exact' : 'Outcome Status', - 'queue_id.exact' : 'On Queue', - } - }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - openingQuery : es.newQuery({ - sort: {"field" : "created_date", "order" : "desc"} - }), - components: components, - 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 auditBlock = ""; + if (resultobj.audit) { + auditBlock += "Audit Messages:
"; + for (var i = 0; i < resultobj.audit.length; i++) { + var audit = resultobj.audit[i]; + auditBlock += audit.timestamp + " -- " + edges.escapeHtml(audit.message) + "
"; } } - }); - doaj.adminBackgroundJobsSearch.activeEdges[selector] = e; - } + + var containerClass = edges.css_classes(this.namespace, "container", this); + var moreInfoClass = edges.css_classes(this.namespace, "more", this); + var toggleClass = edges.css_classes(this.namespace, "toggle", this); + + var expandBlock = ""; + + var result = '
'; + result += "
"; + result += firstRow + "
"; + result += `Outcome Status: ${resultobj.outcome_status}
`; + result += "Job ID: " + resultobj.id + "
"; + result += 'On Queue: ' + resultobj.queue_id + '
'; + result += dateRow + "
"; + result += 'More Information
'; + result += expandBlock; + result += "
"; + result += "
"; + + frag += result; + } + + this.component.context.html(frag); + + var moreInfoSelector = edges.css_class_selector(this.namespace, "toggle", this); + edges.on(moreInfoSelector, "click", this, "toggleMoreInformation"); + }; + + this.toggleMoreInformation = function(element) { + var moreSelector = edges.css_class_selector(this.namespace, "more", this); + var id = $(element).attr("data-id"); + var segment = this.component.context.find(moreSelector).filter("[data-id=" + id + "]"); + segment.slideToggle(300); + }; + }, + + init : function(params) { + if (!params) { params = {} } + + var selector = params.selector || "#background_jobs"; + + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.adminBackgroundJobsSearchConfig.searchPath), + facets: [ + doaj.components.refiningAndFacet({id: "action", field: "action.exact", display: "Action", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "user", field: "user.exact", display: "Submitted By", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "status", field: "status.exact", display: "Status", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "queue_id", field: "queue_id.exact", display: "On Queue", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "outcome_status", field: "outcome_status.exact", display: "Outcome Status", deactivateThreshold: 1}) + ], + sortOptions: [ + {'display': 'Created Date', 'field': 'created_date'}, + {'display': 'Last Modified Date', 'field': 'last_updated'} + ], + fieldOptions: [ + {'display': 'ID', 'field': 'id.exact'}, + {'display': 'Action', 'field': 'action.exact'}, + {'display': 'Submitted By', 'field': 'user.exact'}, + {'display': 'Status', 'field': 'status.exact'}, + {'display': 'Outcome Status', 'field': 'outcome_status.exact'} + ], + searchPlaceholder: "Search Background Jobs", + sizeOptions: [10, 25, 50, 100], + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: doaj.adminBackgroundJobsSearch.newBGResultsRenderer() + }), + fieldDisplays: { + 'action.exact': 'Action', + 'user.exact': 'Submitted By', + 'status.exact': 'Status', + 'outcome_status.exact': 'Outcome Status', + 'queue_id.exact': 'On Queue' + }, + openingQuery: es.newQuery({ + sort: {"field": "created_date", "order": "desc"} + }) + }); + + doaj.adminBackgroundJobsSearch.activeEdges[selector] = e; } -}); +} jQuery(document).ready(function($) { doaj.adminBackgroundJobsSearch.init(); diff --git a/portality/static/js/edges/admin.editor_groups.edge.js b/portality/static/js/edges/admin.editor_groups.edge.js index ddcecc4b12..1974e958fa 100644 --- a/portality/static/js/edges/admin.editor_groups.edge.js +++ b/portality/static/js/edges/admin.editor_groups.edge.js @@ -1,228 +1,125 @@ // ~~ EditorGroupsSearch:Feature ~~ -$.extend(true, doaj, { - - adminEditorGroupSearch: { - activeEdges: {}, - - linkedAssociates : function (val, resultobj, renderer) { - if (resultobj.associates) { - var frag = "Associate Editors: "; - for (var i = 0; i < resultobj.associates.length; i++) { - if (i > 0) { - frag += ", " - } - var ass = resultobj.associates[i]; - frag += '' + edges.escapeHtml(ass) + '' +doaj.adminEditorGroupSearch = { + activeEdges: {}, + + linkedAssociates : function (val, resultobj, renderer) { + if (resultobj.associates) { + var frag = "Associate Editors: "; + for (var i = 0; i < resultobj.associates.length; i++) { + if (i > 0) { + frag += ", " } - return frag + var ass = resultobj.associates[i]; + frag += '' + edges.escapeHtml(ass) + '' } - return false - }, - - editEditorGroup : function (val, resultobj, renderer) { - var result = 'Edit this group'; - return result; - }, - - deleteEditorGroup : function (val, resultobj, renderer) { - var result = '
", - "field" : "name", - "post" : "" - } - ], - [ - { - "pre": 'Editor: ' - }, - { - "field": "editor", - "post" : "" - } - ], - [ - { - "valueFunction" : doaj.adminEditorGroupSearch.linkedAssociates - } - ], - [ - { - "pre": 'Managing Editor: ' - }, - { - "field": "maned", - "post" : "" - } - ], - [ - { - "valueFunction" : doaj.adminEditorGroupSearch.deleteEditorGroup - }, - { - "valueFunction": doaj.adminEditorGroupSearch.editEditorGroup - } - ] + return frag + } + return false + }, + + editEditorGroup : function (val, resultobj, renderer) { + var result = 'Edit this group'; + return result; + }, + + deleteEditorGroup : function (val, resultobj, renderer) { + var result = '
", field: "name", post: ""}], + [ + {pre: 'Editor: '}, + {field: "editor", post: ""} + ], + [{valueFunction: doaj.adminEditorGroupSearch.linkedAssociates}], + [ + {pre: 'Managing Editor: '}, + {field: "maned", post: ""} + ], + [ + {valueFunction: doaj.adminEditorGroupSearch.deleteEditorGroup}, + {valueFunction: doaj.adminEditorGroupSearch.editEditorGroup} ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "name.exact": "Name", - "maned.exact": "Managing Editor" - } + ] }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - openingQuery : es.newQuery({size: 25}), - manageUrl: true, - components: components, - 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."); - } + }), + fieldDisplays: { + "name.exact": "Name", + "maned.exact": "Managing Editor" + }, + openingQuery: es.newQuery({size: 25}), + callbacks: { + "edges:post-render": function() { + $(".delete_editor_group_link").unbind("click").click(function(event) { + event.preventDefault(); + + function success_callback(data) { + alert("The group was successfully deleted"); + doaj.adminEditorGroupSearch.activeEdges[selector].cycle(); + } + + function error_callback() { + alert("There was an error deleting the group"); + } + + var c = confirm("Are you really really sure? You can't undo this operation!"); + if (c) { + var href = $(this).attr("href"); + var obj = {"delete" : "true"}; + $.ajax({ + type: "POST", + url: href, + data: obj, + success: success_callback, + error: error_callback + }) + } + }); } - }); - doaj.adminEditorGroupSearch.activeEdges[selector] = e; - - // bind the delete button - $(selector).on("edges:post-render", function() { - // now add the handlers for the article delete - $(".delete_editor_group_link").unbind("click").click(function(event) { - event.preventDefault(); - - function success_callback(data) { - alert("The group was successfully deleted"); - doaj.adminEditorGroupSearch.activeEdges[selector].cycle(); - } - - function error_callback() { - alert("There was an error deleting the group"); - } + } + }); - var c = confirm("Are you really really sure? You can't undo this operation!"); - if (c) { - var href = $(this).attr("href"); - var obj = {"delete" : "true"}; - $.ajax({ - type: "POST", - url: href, - data: obj, - success : success_callback, - error: error_callback - }) - } - }); - }); - } + doaj.adminEditorGroupSearch.activeEdges[selector] = e; } -}); +} jQuery(document).ready(function($) { doaj.adminEditorGroupSearch.init(); diff --git a/portality/static/js/edges/admin.journalarticle.edge.js b/portality/static/js/edges/admin.journalarticle.edge.js index 31ca0cf58d..949d8d0a95 100644 --- a/portality/static/js/edges/admin.journalarticle.edge.js +++ b/portality/static/js/edges/admin.journalarticle.edge.js @@ -1,711 +1,318 @@ // ~~ AdminJournalsArticlesSearch:Feature ~~ -$.extend(true, doaj, { - - adminJournalArticleSearch : { - activeEdges : {}, - - journalSelected : function(selector) { - return function() { - var type = doaj.adminJournalArticleSearch.activeEdges[selector].currentQuery.listMust(es.newTermFilter({field: "es_type.exact"})); - // var type = doaj.currentFVOptions.active_filters._type; - if (type && type.length > 0) { - type = type[0]; - } - if (!type || type.value !== "journal") { - return { - valid: false, - error_id: "journal_type_error" - } - } - return {valid : true}; - } - }, - - anySelected : function(selector) { - return function() { - var type = doaj.adminJournalArticleSearch.activeEdges[selector].currentQuery.listMust(es.newTermFilter({field: "es_type.exact"})); - if (!type || type.length === 0) { - return { - valid: false, - error_id: "any_type_error" - } - } - return {valid: true}; +doaj.adminJournalArticleSearch = { + activeEdges : {}, + + journalSelected : function(selector) { + return function() { + var type = doaj.adminJournalArticleSearch.activeEdges[selector].currentQuery.listMust(es.newTermFilter({field: "es_type.exact"})); + if (type && type.length > 0) { + type = type[0]; } - }, - - typeSelected : function(selector) { - return function() { - var type = doaj.adminJournalArticleSearch.activeEdges[selector].currentQuery.listMust(es.newTermFilter({field: "es_type.exact"})); - if (type && type.length > 0) { - return type[0].value; - } - return null; - } - }, - - lastUpdated : function (val, resultobj, renderer) { - return doaj.dates.humanYearMonth(resultobj['last_updated']); - }, - - deleteArticle : function (val, resultobj, renderer) { - if (!resultobj.suggestion && resultobj.bibjson.journal) { - // if it's not a suggestion or a journal .. (it's an article!) - // we really need to expose _type ... - var result = '
' - result += ' 0) { + return type[0].value; } - return false; - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#admin_journals_and_articles"; - var search_url = current_scheme + "//" + current_domain + doaj.adminJournalArticleSearchConfig.searchPath; + return null; + } + }, + + lastUpdated : function(val, resultobj, renderer) { + return doaj.dates.humanYearMonth(resultobj['last_updated']); + }, + + deleteArticle : function(val, resultobj, renderer) { + if (!resultobj.suggestion && resultobj.bibjson.journal) { + var result = '
' + result += '
ID: ", - "field" : "id" - } - ], - // Journals - [ - { - valueFunction: doaj.fieldRender.titleField - } - ], - [ - { - "valueFunction": doaj.adminJournalArticleSearch.editArticle - } - ], - [ - { - "valueFunction": doaj.adminJournalArticleSearch.editJournal - } - ], - [ - { - "pre": 'Alternative title: ', - "field": "bibjson.alternative_title", - "post": "" - } - ], - [ - { - "pre" : "In DOAJ?: ", - "valueFunction" : doaj.fieldRender.inDoaj - } - ], - [ - { - "pre": "Classification: ", - "field": "index.classification" - } - ], - [ - { - "pre": "Publisher: ", - "field": "bibjson.publisher.name" - } - ], - [ - { - "pre": "Publication charges?: ", - "valueFunction": doaj.fieldRender.authorPays - } - ], - [ - { - "pre": "Journal language: ", - "field": "bibjson.language" - } - ], - // Articles - [ - { - "pre": "Authors: ", - "field": "bibjson.author.name" - } - ], - [ - { - "pre": "Publisher: ", - "field": "bibjson.journal.publisher" - } - ], - [ - { - "pre":'Date of publication: ', - "field": "bibjson.year" - }, - { - "pre":' ', - "field": "bibjson.month", - "post": "" - } - ], - [ - { - "pre": "Published in: ", - "field": "bibjson.journal.title", - "notrailingspace": true - }, - { - "pre": ", Vol ", - "field": "bibjson.journal.volume", - "notrailingspace": true - }, - { - "pre": ", Iss ", - "field": "bibjson.journal.number", - "notrailingspace": true - }, - { - "pre": ", Pp ", - "field": "bibjson.start_page", - "notrailingspace": true - }, - { - "pre": "-", - "field": "bibjson.end_page" - }, - { - "pre" : "(", - "field": "bibjson.year", - "post" : ")" - } - ], - [ - { - "valueFunction" : doaj.fieldRender.issns - } - ], - [ - { - "pre": "Keywords: ", - "field": "bibjson.keywords" - } - ], - [ - { - "pre": "Discontinued Date: ", - "field": "bibjson.discontinued_date" - } - ], - [ - { - "pre": "Date added to DOAJ: ", - "valueFunction": doaj.fieldRender.createdDateWithTime - } - ], - [ - { - "pre": "Last updated: ", - "valueFunction": doaj.adminJournalArticleSearch.lastUpdated - } - ], - [ - { - "pre": "DOI: ", - "valueFunction": doaj.fieldRender.doiLink - } - ], - [ - { - "valueFunction" : doaj.fieldRender.links - } - ], - [ - { - "pre": "Journal language(s): ", - "field": "bibjson.journal.language" - } - ], - [ - { - "pre": "Journal license: ", - "valueFunction": doaj.fieldRender.journalLicense - } - ], - [ - { - "pre": "Country of publisher: ", - "valueFunction": doaj.fieldRender.countryName - } - ], - [ - { - "pre": 'Abstract: ', - "valueFunction": doaj.fieldRender.abstract - } - ], - [ - { - "valueFunction": doaj.adminJournalArticleSearch.deleteArticle - } - ] - ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "es_type.exact": "Showing", - "admin.in_doaj" : "In DOAJ?", - "index.language.exact" : "Language", - "bibjson.publisher.name.exact" : "Publisher", - "index.classification.exact" : "Classification", - "index.subject.exact" : "Subject", - "index.country.exact" : "Country", - "index.license.exact" : "License", - "bibjson.year.exact" : "Year of publication", - "bibjson.journal.title.exact" : "Title", - "index.has_apc.exact" : "Charges?" - }, - valueMaps : { - "es_type.exact" : { - "journal" : "Journals", - "article" : "Articles" - }, - "admin.in_doaj" : { - true : "Yes", - false : "No" - } - } + doaj.components.refiningAndFacet({id: "author_pays", field: "index.has_apc.exact", display: "Publication charges?", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_language", field: "index.language.exact", display: "Journal language", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "publisher", field: "bibjson.publisher.name.exact", display: "Publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "classification", field: "index.classification.exact", display: "Classification", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "subject", field: "index.subject.exact", display: "Subject", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "country_publisher", field: "index.country.exact", display: "Country of publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_license", field: "index.license.exact", display: "Journal license", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "publication_year", field: "bibjson.year.exact", display: "Year of publication (Articles)", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_title", field: "bibjson.journal.title.exact", display: "Journal title (Articles)", deactivateThreshold: 1}) + ], + sortOptions: [ + {'display': 'Date added to DOAJ', 'field': 'created_date'}, + {'display': 'Last updated', 'field': 'last_updated'}, + {'display': 'Title', 'field': 'index.unpunctitle.exact'}, + {'display': 'Article: Publication date', 'field': 'index.date'} + ], + fieldOptions: [ + {'display': 'Title', 'field': 'index.title'}, + {'display': 'Keywords', 'field': 'bibjson.keywords'}, + {'display': 'Subject', 'field': 'index.classification'}, + {'display': 'Classification', 'field': 'index.classification'}, + {'display': 'ISSN', 'field': 'index.issn.exact'}, + {'display': 'DOI', 'field': 'bibjson.identifier.id'}, + {'display': 'Country of publisher', 'field': 'index.country'}, + {'display': 'Journal language', 'field': 'index.language'}, + {'display': 'Journal: Publisher', 'field': 'bibjson.publisher.name'}, + {'display': 'Article: Abstract', 'field': 'bibjson.abstract'}, + {'display': 'Article: Author\'s name', 'field': 'bibjson.author.name'}, + {'display': 'Article: Author\'s ORCID iD', 'field': 'bibjson.author.orcid_id'}, + {'display': 'Article: Year', 'field': 'bibjson.year'}, + {'display': 'Article: Journal title', 'field': 'bibjson.journal.title'}, + {'display': 'Journal: Alternative Title', 'field': 'bibjson.alternative_title'} + ], + searchPlaceholder: "Search all journals and articles", + sizeOptions: [10, 25, 50, 100], + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + rowDisplay: [ + [{pre: "ID: ", field: "id"}], + [{valueFunction: doaj.fieldRender.titleField}], + [{valueFunction: doaj.adminJournalArticleSearch.editArticle}], + [{valueFunction: doaj.adminJournalArticleSearch.editJournal}], + [{pre: 'Alternative title: ', field: "bibjson.alternative_title", post: ""}], + [{pre: "In DOAJ?: ", valueFunction: doaj.fieldRender.inDoaj}], + [{pre: "Classification: ", field: "index.classification"}], + [{pre: "Publisher: ", field: "bibjson.publisher.name"}], + [{pre: "Publication charges?: ", valueFunction: doaj.fieldRender.authorPays}], + [{pre: "Journal language: ", field: "bibjson.language"}], + [{pre: "Authors: ", field: "bibjson.author.name"}], + [{pre: "Publisher: ", field: "bibjson.journal.publisher"}], + [ + {pre: 'Date of publication: ', field: "bibjson.year"}, + {pre: ' ', field: "bibjson.month", post: ""} + ], + [ + {pre: "Published in: ", field: "bibjson.journal.title", notrailingspace: true}, + {pre: ", Vol ", field: "bibjson.journal.volume", notrailingspace: true}, + {pre: ", Iss ", field: "bibjson.journal.number", notrailingspace: true}, + {pre: ", Pp ", field: "bibjson.start_page", notrailingspace: true}, + {pre: "-", field: "bibjson.end_page"}, + {pre: "(", field: "bibjson.year", post: ")"} + ], + [{valueFunction: doaj.fieldRender.issns}], + [{pre: "Keywords: ", field: "bibjson.keywords"}], + [{pre: "Discontinued Date: ", field: "bibjson.discontinued_date"}], + [{pre: "Date added to DOAJ: ", valueFunction: doaj.fieldRender.createdDateWithTime}], + [{pre: "Last updated: ", valueFunction: doaj.adminJournalArticleSearch.lastUpdated}], + [{pre: "DOI: ", valueFunction: doaj.fieldRender.doiLink}], + [{valueFunction: doaj.fieldRender.links}], + [{pre: "Journal language(s): ", field: "bibjson.journal.language"}], + [{pre: "Journal license: ", valueFunction: doaj.fieldRender.journalLicense}], + [{pre: "Country of publisher: ", valueFunction: doaj.fieldRender.countryName}], + [{pre: 'Abstract: ', valueFunction: doaj.fieldRender.abstract}], + [{valueFunction: doaj.adminJournalArticleSearch.deleteArticle}] + ] }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - components: components, - 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."); - } - } - }); - doaj.adminJournalArticleSearch.activeEdges[selector] = e; - - var mfb = doaj.multiFormBox.newMultiFormBox({ - edge : e, - selector: "#admin-bulk-box", - bindings : { - editor_group : function(context) { - autocomplete($('#editor_group', context), 'name', 'editor_group', 1, false); - }, - edit_metadata : function(context) { - autocomplete($('#publisher_name', context), 'bibjson.publisher.name'); - $('#publisher_country', context).select2(); - autocomplete($('#owner', context), 'id', 'account'); - } + }), + fieldDisplays: { + "es_type.exact": "Showing", + "admin.in_doaj": "In DOAJ?", + "index.language.exact": "Language", + "bibjson.publisher.name.exact": "Publisher", + "index.classification.exact": "Classification", + "index.subject.exact": "Subject", + "index.country.exact": "Country", + "index.license.exact": "License", + "bibjson.year.exact": "Year of publication", + "bibjson.journal.title.exact": "Title", + "index.has_apc.exact": "Charges?" + }, + valueMaps: { + "es_type.exact": {"journal": "Journals", "article": "Articles"}, + "admin.in_doaj": {true: "Yes", false: "No"} + }, + callbacks: { + "edges:pre-render": function() { + doaj.multiFormBox.active.validate(); }, - validators : { - withdraw : journalSelected, - reinstate: journalSelected, - delete: anySelected, - note : function(context) { - var valid = journalSelected(); - if (!valid.valid) { - return valid; - } - var val = context.find("#note").val(); - if (val === "") { - return {valid: false}; - } - return {valid: true}; - }, - editor_group : function(context) { - var valid = journalSelected(); - if (!valid.valid) { - return valid; - } - var val = context.find("#editor_group").val(); - if (val === "") { - return {valid: false}; - } - return {valid: true}; - }, - edit_metadata : function(context) { - // first check that the journal has been selected - var valid = journalSelected(); - if (!valid.valid) { - return valid; + "edges:post-render": function() { + $(".abstract_action").off("click").on("click", function(event) { + event.preventDefault(); + var el = $(this); + var at = $(".abstract_text").filter('[rel="' + el.attr("rel") + '"]'); + at.slideToggle(300); + }); + + $(".delete_article_link").off("click").on("click", function(event) { + event.preventDefault(); + + function success_callback(data) { + alert("The article was successfully deleted"); + doaj.adminJournalArticleSearch.activeEdges[selector].cycle(); } - // now check that at least one field has been completed - var found = false; - var fields = ["#publisher_name", "#publisher_country", "#owner"]; - for (var i = 0; i < fields.length; i++) { - var val = context.find(fields[i]).val(); - if (val !== "") { - found = true; - } - } - if (!found) { - return {valid: false}; + function error_callback() { + alert("There was an error deleting the article") } - return {valid: true}; - } - }, - submit : { - delete : { - sure : 'Are you sure? This operation cannot be undone!' - }, - note : { - data: function(context) { - return { - note: $('#note', context).val() - }; - } - }, - editor_group : { - data : function(context) { - return { - editor_group: $('#editor_group', context).val() - }; - } - }, - edit_metadata : { - data : function(context) { - var data = { - metadata : { - publisher_name: $('#publisher_name', context).select2("val"), - publisher_country: $('#publisher_country', context).select2("val"), - owner: $('#owner', context).select2("val") - } - }; - return data; - } - } - }, - urls : { - withdraw: "/admin/journals/bulk/withdraw", - reinstate: "/admin/journals/bulk/reinstate", - delete : function() { - var type = typeSelected(); - if (type === "journal") { - return "/admin/journals/bulk/delete" - } else if (type === "article") { - return "/admin/articles/bulk/delete" + var c = confirm("Are you really really sure? You can't undo this operation!"); + if (c) { + var href = $(this).attr("href"); + var obj = {"delete": "true"}; + $.ajax({ + type: "POST", + url: href, + data: obj, + success: success_callback, + error: error_callback + }) } - return null; - }, - note : "/admin/journals/bulk/add_note", - editor_group : "/admin/journals/bulk/assign_editor_group", - edit_metadata : "/admin/journals/bulk/edit_metadata" + }); } - }); - doaj.multiFormBox.active = mfb; - - $(selector).on("edges:pre-render", function() { - doaj.multiFormBox.active.validate(); - }); - - // now bind the abstract expander - $(selector).on("edges:post-render", function() { - $(".abstract_action").off("click").on("click", function(event) { - event.preventDefault(); - var el = $(this); - var at = $(".abstract_text").filter('[rel="' + el.attr("rel") + '"]'); - at.slideToggle(300); - }); + } + }); - // now add the handlers for the article delete - $(".delete_article_link").off("click").on("click", function(event) { - event.preventDefault(); + doaj.adminJournalArticleSearch.activeEdges[selector] = e; - function success_callback(data) { - alert("The article was successfully deleted"); - doaj.adminJournalArticleSearch.activeEdges[selector].cycle(); + doaj.multiFormBox.active = doaj.multiFormBox.newMultiFormBox({ + edge: e, + selector: "#admin-bulk-box", + bindings: { + editor_group: function(context) { + autocomplete($('#editor_group', context), 'name', 'editor_group', 1, false); + }, + edit_metadata: function(context) { + autocomplete($('#publisher_name', context), 'bibjson.publisher.name'); + $('#publisher_country', context).select2(); + autocomplete($('#owner', context), 'id', 'account'); + } + }, + validators: { + withdraw: journalSelected, + reinstate: journalSelected, + delete: anySelected, + note: function(context) { + var valid = journalSelected(); + if (!valid.valid) { return valid; } + var val = context.find("#note").val(); + if (val === "") { return {valid: false}; } + return {valid: true}; + }, + editor_group: function(context) { + var valid = journalSelected(); + if (!valid.valid) { return valid; } + var val = context.find("#editor_group").val(); + if (val === "") { return {valid: false}; } + return {valid: true}; + }, + edit_metadata: function(context) { + var valid = journalSelected(); + if (!valid.valid) { return valid; } + var found = false; + var fields = ["#publisher_name", "#publisher_country", "#owner"]; + for (var i = 0; i < fields.length; i++) { + if (context.find(fields[i]).val() !== "") { found = true; } } - - function error_callback() { - alert("There was an error deleting the article") + if (!found) { return {valid: false}; } + return {valid: true}; + } + }, + submit: { + delete: {sure: 'Are you sure? This operation cannot be undone!'}, + note: { + data: function(context) { + return {note: $('#note', context).val()}; } - - var c = confirm("Are you really really sure? You can't undo this operation!"); - if (c) { - var href = $(this).attr("href"); - var obj = {"delete" : "true"}; - $.ajax({ - type: "POST", - url: href, - data: obj, - success : success_callback, - error: error_callback - }) + }, + editor_group: { + data: function(context) { + return {editor_group: $('#editor_group', context).val()}; } - }); - }); - } + }, + edit_metadata: { + data: function(context) { + return { + metadata: { + publisher_name: $('#publisher_name', context).select2("val"), + publisher_country: $('#publisher_country', context).select2("val"), + owner: $('#owner', context).select2("val") + } + }; + } + } + }, + urls: { + withdraw: "/admin/journals/bulk/withdraw", + reinstate: "/admin/journals/bulk/reinstate", + delete: function() { + var type = typeSelected(); + if (type === "journal") { return "/admin/journals/bulk/delete"; } + else if (type === "article") { return "/admin/articles/bulk/delete"; } + return null; + }, + note: "/admin/journals/bulk/add_note", + editor_group: "/admin/journals/bulk/assign_editor_group", + edit_metadata: "/admin/journals/bulk/edit_metadata" + } + }); } -}); +} jQuery(document).ready(function($) { diff --git a/portality/static/js/edges/admin.journals.edge.js b/portality/static/js/edges/admin.journals.edge.js index cbd7397ea3..9728a7ba91 100644 --- a/portality/static/js/edges/admin.journals.edge.js +++ b/portality/static/js/edges/admin.journals.edge.js @@ -1,87 +1,74 @@ // ~~ AdminJournalsSearch:Feature ~~ -$.extend(true, doaj, { +doaj.adminJournalsSearch = { + activeEdges : {}, - adminJournalsSearch : { - activeEdges : {}, + makeContinuation : function (val, resultobj, renderer) { + if (!resultobj.suggestion && !resultobj.bibjson.journal) { + var result = '
" + edges.escapeHtml(resultobj.admin.current_application) + ""; } - return false; - }, - - relatedApplications : function (val, resultobj, renderer) { - var result = ""; - if (resultobj.admin) { - if (resultobj.admin.current_application) { - var fvurl = doaj.adminJournalsSearchConfig.applicationsUrl + '?source=%7B"query"%3A%7B"query_string"%3A%7B"query"%3A"' + resultobj.admin.current_application + '"%2C"default_operator"%3A"AND"%7D%7D%2C"from"%3A0%2C"size"%3A10%7D'; - result += "Current Update Request: " + edges.escapeHtml(resultobj.admin.current_application) + ""; + if (resultobj.admin.related_applications && resultobj.admin.related_applications.length > 0) { + if (result != "") { + result += "
"; } - if (resultobj.admin.related_applications && resultobj.admin.related_applications.length > 0) { - if (result != "") { - result += "
"; + result += "Related Records: "; + for (var i = 0; i < resultobj.admin.related_applications.length; i++) { + if (i > 0) { + result += ", "; } - result += "Related Records: "; - for (var i = 0; i < resultobj.admin.related_applications.length; i++) { - if (i > 0) { - result += ", "; - } - var ra = resultobj.admin.related_applications[i]; - var fvurl = doaj.adminJournalsSearchConfig.applicationsUrl + '?source=%7B"query"%3A%7B"query_string"%3A%7B"query"%3A"' + ra.application_id + '"%2C"default_operator"%3A"AND"%7D%7D%2C"from"%3A0%2C"size"%3A10%7D'; - var linkName = ra.date_accepted; - if (!linkName) { - linkName = ra.application_id; - } - result += "" + linkName + ""; + var ra = resultobj.admin.related_applications[i]; + var fvurl = doaj.adminJournalsSearchConfig.applicationsUrl + '?source=%7B"query"%3A%7B"query_string"%3A%7B"query"%3A"' + ra.application_id + '"%2C"default_operator"%3A"AND"%7D%7D%2C"from"%3A0%2C"size"%3A10%7D'; + var linkName = ra.date_accepted; + if (!linkName) { + linkName = ra.application_id; } + result += "" + linkName + ""; } } - return result; - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#admin_journals"; - var search_url = current_scheme + "//" + current_domain + doaj.adminJournalsSearchConfig.searchPath; + } + return result; + }, - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); + init : function(params) { + if (!params) { params = {} } - var components = [ - doaj.components.searchingNotification(), + var selector = params.selector || "#admin_journals"; - // facets + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.adminJournalsSearchConfig.searchPath), + facets: [ edges.newFilterSetter({ - id : "flagged", + id: "flagged", category: "facet", showCount: true, - filters : [ + filters: [ doaj.filters.isFlagged(), doaj.filters.flaggedToMe() ], - renderer : doaj.renderers.newFacetFilterSetterRenderer({ - facetTitle : "", + renderer: doaj.renderers.newFacetFilterSetterRenderer({ + facetTitle: "", open: true, togglable: false, showCount: true, @@ -89,195 +76,21 @@ $.extend(true, doaj, { }) }), doaj.facets.inDOAJ(), - edges.newRefiningANDTermSelector({ - id: "owner", - category: "facet", - field: "admin.owner.exact", - display: "Owner", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "has_editor_group", - category: "facet", - field: "index.has_editor_group.exact", - display: "Has editor group?", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "has_associate_editor", - category: "facet", - field: "index.has_editor.exact", - display: "Has Associate Editor?", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "editor_group", - category: "facet", - field: "admin.editor_group.exact", - display: "Editor group", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "associate_editor", - category: "facet", - field: "admin.editor.exact", - display: "Associate Editor", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), + doaj.components.refiningAndFacet({id: "owner", field: "admin.owner.exact", display: "Owner", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "has_editor_group", field: "index.has_editor_group.exact", display: "Has editor group?", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "has_associate_editor", field: "index.has_editor.exact", display: "Has Associate Editor?", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "editor_group", field: "admin.editor_group.exact", display: "Editor group", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "associate_editor", field: "admin.editor.exact", display: "Associate Editor", deactivateThreshold: 1}), doaj.facets.adminHasAPC(), doaj.facets.adminHasOtherCharges(), - - edges.newRefiningANDTermSelector({ - id: "journal_license", - category: "facet", - field: "index.license.exact", - display: "Journal license", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "publisher", - category: "facet", - field: "bibjson.publisher.name.exact", - display: "Publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "classification", - category: "facet", - field: "index.classification.exact", - display: "Classification", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "subject", - category: "facet", - field: "index.subject.exact", - display: "Subject", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "journal_language", - category: "facet", - field: "index.language.exact", - display: "Journal language", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat - }) - }), - edges.newRefiningANDTermSelector({ - id: "country_publisher", - category: "facet", - field: "index.country.exact", - display: "Country of publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "continued", - category: "facet", - field: "index.continued.exact", - display: "Continued", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newDateHistogramSelector({ - id: "discontinued_date", - category: "facet", - field : "bibjson.discontinued_date", - interval: "year", - display: "Discontinued Year", - displayFormatter : function(val) { - return (new Date(parseInt(val))).getUTCFullYear(); - }, - sortFunction : function(values) { - values.reverse(); - return values; - }, - renderer: edges.bs3.newDateHistogramSelectorRenderer({ - countFormat: countFormat, - hideInactive: true - }) - }), - + doaj.components.refiningAndFacet({id: "journal_license", field: "index.license.exact", display: "Journal license", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "publisher", field: "bibjson.publisher.name.exact", display: "Publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "classification", field: "index.classification.exact", display: "Classification", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "subject", field: "index.subject.exact", display: "Subject", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_language", field: "index.language.exact", display: "Journal language", deactivateThreshold: 1, hideInactive: false}), + doaj.components.refiningAndFacet({id: "country_publisher", field: "index.country.exact", display: "Country of publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "continued", field: "index.continued.exact", display: "Continued", deactivateThreshold: 1}), + doaj.components.yearDateHistogramFacet({id: "discontinued_date", field: "bibjson.discontinued_date", display: "Discontinued Year"}), doaj.components.newFacetDivider({ id: "reporting_tools_divider", category: "facet", @@ -296,57 +109,55 @@ $.extend(true, doaj, { {"field": "admin.date_applied", "display": "Date Applied"}, ], autoLookupRange: true, - autoLookupFilters : [ - es.newRangeFilter({field: "last_manual_update", gte:"2000-01-01T00:00:00Z"}) + autoLookupFilters: [ + es.newRangeFilter({field: "last_manual_update", gte: "2000-01-01T00:00:00Z"}) ], category: "facet", renderer: doaj.renderers.newBSMultiDateRangeFacet({ open: true }) }), - doaj.components.newDateHistogramSelector({ id: "created_date_histogram", category: "facet", field: "created_date", display: "Date Added Histogram", interval: "year", - displayFormatter : function(val) { + displayFormatter: function(val) { let date = new Date(parseInt(val)); let interval = doaj.adminJournalsSearch.activeEdges[selector].getComponent({id: "created_date_histogram"}).interval; if (interval === "year") { - return date.toLocaleString('default', { year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {year: 'numeric', timeZone: "UTC"}); } else if (interval === "month") { - return date.toLocaleString('default', { month: 'long', year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {month: 'long', year: 'numeric', timeZone: "UTC"}); } }, - sortFunction : function(values) { + sortFunction: function(values) { values.reverse(); return values; }, renderer: doaj.renderers.newFlexibleDateHistogramSelectorRenderer({ showSelected: false, - countFormat: countFormat, + countFormat: doaj.valueMaps.countFormat, hideInactive: true }) }), - doaj.components.newDateHistogramSelector({ id: "last_updated_histogram", category: "facet", field: "last_manual_update", display: "Last Update Histogram", interval: "year", - displayFormatter : function(val) { + displayFormatter: function(val) { let date = new Date(parseInt(val)); let interval = doaj.adminJournalsSearch.activeEdges[selector].getComponent({id: "last_updated_histogram"}).interval; if (interval === "year") { - return date.toLocaleString('default', { year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {year: 'numeric', timeZone: "UTC"}); } else if (interval === "month") { - return date.toLocaleString('default', { month: 'long', year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {month: 'long', year: 'numeric', timeZone: "UTC"}); } }, - sortFunction : function(values) { + sortFunction: function(values) { if (values.length > 0 && values[0].display === "1970") { values.shift(); } @@ -355,27 +166,26 @@ $.extend(true, doaj, { }, renderer: doaj.renderers.newFlexibleDateHistogramSelectorRenderer({ showSelected: false, - countFormat: countFormat, + countFormat: doaj.valueMaps.countFormat, hideInactive: true }) }), - doaj.components.newDateHistogramSelector({ id: "last_full_review_histogram", category: "facet", field: "admin.last_full_review", display: "Last Full Review Histogram", interval: "year", - displayFormatter : function(val) { + displayFormatter: function(val) { let date = new Date(parseInt(val)); let interval = doaj.adminJournalsSearch.activeEdges[selector].getComponent({id: "last_full_review_histogram"}).interval; if (interval === "year") { - return date.toLocaleString('default', { year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {year: 'numeric', timeZone: "UTC"}); } else if (interval === "month") { - return date.toLocaleString('default', { month: 'long', year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {month: 'long', year: 'numeric', timeZone: "UTC"}); } }, - sortFunction : function(values) { + sortFunction: function(values) { if (values.length > 0 && values[0].display === "1970") { values.shift(); } @@ -384,11 +194,10 @@ $.extend(true, doaj, { }, renderer: doaj.renderers.newFlexibleDateHistogramSelectorRenderer({ showSelected: false, - countFormat: countFormat, + countFormat: doaj.valueMaps.countFormat, hideInactive: true }) }), - doaj.components.newReportExporter({ id: "report-exporter", category: "facet", @@ -414,309 +223,125 @@ $.extend(true, doaj, { {component_id: "last_updated_histogram", exporter: doaj.valueMaps.dateHistogramSelectorExporter}, {component_id: "last_full_review_histogram", exporter: doaj.valueMaps.dateHistogramSelectorExporter} ] - }), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Date added to DOAJ','field':'created_date'}, - {'display':'Last updated','field':'last_manual_update'}, // Note: last updated on UI points to when last updated by a person (via form) - {'display':'Title','field':'index.unpunctitle.exact'}, - {'display':'Flag deadline', 'field': 'index.most_urgent_flag_deadline'}, - {'display': "Last Full Review", "field": "admin.last_full_review"} + }) + ], + sortOptions: [ + {'display': 'Date added to DOAJ', 'field': 'created_date'}, + {'display': 'Last updated', 'field': 'last_manual_update'}, + {'display': 'Title', 'field': 'index.unpunctitle.exact'}, + {'display': 'Flag deadline', 'field': 'index.most_urgent_flag_deadline'}, + {'display': 'Last Full Review', 'field': 'admin.last_full_review'} + ], + fieldOptions: [ + {'display': 'Owner', 'field': 'admin.owner'}, + {'display': 'Title', 'field': 'index.title'}, + {'display': 'Alternative Title', 'field': 'bibjson.alternative_title'}, + {'display': 'Subject', 'field': 'index.subject'}, + {'display': 'Classification', 'field': 'index.classification'}, + {'display': 'ISSN', 'field': 'index.issn.exact'}, + {'display': 'Country of publisher', 'field': 'index.country'}, + {'display': 'Journal language', 'field': 'index.language'}, + {'display': 'Publisher', 'field': 'bibjson.publisher.name'}, + {'display': 'Notes', 'field': 'admin.notes.note'} + ], + searchPlaceholder: "Search All Journals", + sizeOptions: [10, 25, 50, 100], + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: doaj.renderers.newAdminBasicResultsRenderer({ + topRowDisplay: [ + [{valueFunction: doaj.fieldRender.titleField}], + [{valueFunction: doaj.fieldRender.editJournal({editUrl: doaj.adminJournalsSearchConfig.journalEditUrl})}] ], - fieldOptions: [ - {'display':'Owner','field':'admin.owner'}, - {'display':'Title','field':'index.title'}, - {'display':'Alternative Title','field':'bibjson.alternative_title'}, - {'display':'Subject','field':'index.subject'}, - {'display':'Classification','field':'index.classification'}, - {'display':'ISSN', 'field':'index.issn.exact'}, - {'display':'Country of publisher','field':'index.country'}, - {'display':'Journal language','field':'index.language'}, - {'display':'Publisher','field':'bibjson.publisher.name'}, - {'display':'Notes','field':'admin.notes.note'} + leftRowDisplay: [ + [{pre: 'Alternative title: ', field: "bibjson.alternative_title", post: ""}], + [{valueFunction: doaj.fieldRender.issns}], + [{valueFunction: doaj.fieldRender.links}], + [{pre: "Publisher: ", field: "bibjson.publisher.name"}], + [{pre: "Country: ", valueFunction: doaj.fieldRender.countryName}], + [{pre: "Language: ", field: "bibjson.language"}], + [{pre: "License: ", valueFunction: doaj.fieldRender.journalLicense}], + [{pre: "Publication charges?: ", valueFunction: doaj.fieldRender.authorPays}], + [{pre: "Classification: ", field: "index.classification"}], + [{pre: "Keywords: ", field: "bibjson.keywords"}] ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search All Journals" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: doaj.renderers.newAdminBasicResultsRenderer({ - topRowDisplay: [ - [ - { - valueFunction: doaj.fieldRender.titleField - } - ], - [ - { - valueFunction: doaj.fieldRender.editJournal({editUrl: doaj.adminJournalsSearchConfig.journalEditUrl}) - } - ], - ], - leftRowDisplay : [ - [ - { - "pre": 'Alternative title: ', - "field": "bibjson.alternative_title", - "post": "" - } - ], - [ - { - valueFunction : doaj.fieldRender.issns - } - ], - [ - { - valueFunction: doaj.fieldRender.links - } - ], - [ - { - "pre": "Publisher: ", - "field": "bibjson.publisher.name" - } - ], - [ - { - "pre": "Country: ", - valueFunction: doaj.fieldRender.countryName - } - ], - [ - { - "pre": "Language: ", - "field": "bibjson.language" - } - ], - [ - { - "pre": "License: ", - valueFunction: doaj.fieldRender.journalLicense - } - ], - [ - { - "pre": "Publication charges?: ", - valueFunction: doaj.fieldRender.authorPays - } - ], - [ - { - "pre": "Classification: ", - "field": "index.classification" - } - ], - [ - { - "pre": "Keywords: ", - "field": "bibjson.keywords" - } - ] - ], - rightRowDisplay : [ - [ - { - valueFunction: doaj.fieldRender.deadline - } - ], - [ - { - "pre" : "In DOAJ?: ", - valueFunction: doaj.fieldRender.inDoaj - } - ], - [ - { - "pre" : "Owner: ", - valueFunction: doaj.fieldRender.owner - } - ], - [ - { - "pre" : "Editor group: ", - "field" : "admin.editor_group" - } - ], - [ - { - "pre": "Date of Application: ", - valueFunction: doaj.fieldRender.suggestedOn - } - ], - [ - { - "pre": "Date published in DOAJ: ", - valueFunction: doaj.fieldRender.createdDateWithTime - } - ], - [ - { - "pre": "Last full review: ", - valueFunction: doaj.fieldRender.lastFullReview - } - ], - [ - { - "pre": "Last Withdrawn: ", - valueFunction: doaj.fieldRender.lastWithdrawn - } - ], - [ - { - "pre": "Last Reinstated: ", - valueFunction: doaj.fieldRender.lastReinstated - } - ], - [ - { - "pre": "Last Owner Transfer: ", - valueFunction: doaj.fieldRender.lastOwnerTransfer - } - ], - [ - { - "pre": "Discontinued Date: ", - "field": "bibjson.discontinued_date" - } - ], - [ - { - "pre": "Last updated: ", - valueFunction: doaj.fieldRender.lastManualUpdate - } - ] - ], - bottomRowDisplay: [ - [ - { - valueFunction: doaj.adminJournalsSearch.relatedApplications - } - ], - [ - { - valueFunction: doaj.adminJournalsSearch.makeContinuation - } - ] - ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "admin.in_doaj" : "In DOAJ?", - "admin.owner.exact" : "Owner", - "index.has_editor_group.exact" : "Editor group?", - "index.has_editor.exact" : "Associate Editor?", - "admin.editor_group.exact" : "Editor group", - "admin.editor.exact" : "Associate Editor", - "index.license.exact" : "License", - "bibjson.publisher.name.exact" : "Publisher", - "index.classification.exact" : "Classification", - "index.subject.exact" : "Subject", - "index.language.exact" : "Language", - "index.country.exact" : "Country", - "index.continued.exact" : "Continued", - "bibjson.discontinued_date" : "Discontinued Year", - "bibjson.apc.has_apc": "Has APC?", - "bibjson.other_charges.has_other_charges": "Has other charges?", - 'index.is_flagged': "Only Flagged Records", - 'index.flag_assignees.exact': "Flagged to me", - "created_date": "Created Date", - "last_manual_update": "Last Updated", - "admin.last_full_review": "Last Full Review", - "admin.date_applied": "Date Applied", - "admin.last_withdrawn": "Last Withdrawn", - "admin.last_reinstated": "Last Reinstated", - "admin.last_owner_transfer": "Last Owner Transfer" - }, - valueMaps : { - "admin.in_doaj" : { - true : "Yes", - false : "No" - }, - "bibjson.apc.has_apc" : { - true : "Yes", - false : "No" - }, - "bibjson.other_charges.has_other_charges" : { - true : "Yes", - false : "No" - } - }, - renderer : doaj.renderers.newSelectedFiltersRenderer({ - hideValues: [ - 'index.is_flagged', - 'index.flag_assignees.exact' - ] - }), - rangeFunctions : { - "bibjson.discontinued_date" : doaj.valueMaps.displayYearPeriod, - "created_date" : doaj.valueMaps.displayYearMonthPeriod, - "last_manual_update": doaj.valueMaps.displayYearMonthPeriod, - "admin.last_full_review": doaj.valueMaps.displayYearMonthPeriod, - "admin.date_applied": doaj.valueMaps.displayYearMonthPeriod, - "admin.last_withdrawn": doaj.valueMaps.displayYearMonthPeriod, - "admin.last_reinstated": doaj.valueMaps.displayYearMonthPeriod, - "admin.last_owner_transfer": doaj.valueMaps.displayYearMonthPeriod - } + rightRowDisplay: [ + [{valueFunction: doaj.fieldRender.deadline}], + [{pre: "In DOAJ?: ", valueFunction: doaj.fieldRender.inDoaj}], + [{pre: "Owner: ", valueFunction: doaj.fieldRender.owner}], + [{pre: "Editor group: ", field: "admin.editor_group"}], + [{pre: "Date of Application: ", valueFunction: doaj.fieldRender.suggestedOn}], + [{pre: "Date published in DOAJ: ", valueFunction: doaj.fieldRender.createdDateWithTime}], + [{pre: "Last full review: ", valueFunction: doaj.fieldRender.lastFullReview}], + [{pre: "Last Withdrawn: ", valueFunction: doaj.fieldRender.lastWithdrawn}], + [{pre: "Last Reinstated: ", valueFunction: doaj.fieldRender.lastReinstated}], + [{pre: "Last Owner Transfer: ", valueFunction: doaj.fieldRender.lastOwnerTransfer}], + [{pre: "Discontinued Date: ", field: "bibjson.discontinued_date"}], + [{pre: "Last updated: ", valueFunction: doaj.fieldRender.lastManualUpdate}] + ], + bottomRowDisplay: [ + [{valueFunction: doaj.adminJournalsSearch.relatedApplications}], + [{valueFunction: doaj.adminJournalsSearch.makeContinuation}] + ] }) - ]; + }), + fieldDisplays: { + "admin.in_doaj": "In DOAJ?", + "admin.owner.exact": "Owner", + "index.has_editor_group.exact": "Editor group?", + "index.has_editor.exact": "Associate Editor?", + "admin.editor_group.exact": "Editor group", + "admin.editor.exact": "Associate Editor", + "index.license.exact": "License", + "bibjson.publisher.name.exact": "Publisher", + "index.classification.exact": "Classification", + "index.subject.exact": "Subject", + "index.language.exact": "Language", + "index.country.exact": "Country", + "index.continued.exact": "Continued", + "bibjson.discontinued_date": "Discontinued Year", + "bibjson.apc.has_apc": "Has APC?", + "bibjson.other_charges.has_other_charges": "Has other charges?", + 'index.is_flagged': "Only Flagged Records", + 'index.flag_assignees.exact': "Flagged to me", + "created_date": "Created Date", + "last_manual_update": "Last Updated", + "admin.last_full_review": "Last Full Review", + "admin.date_applied": "Date Applied", + "admin.last_withdrawn": "Last Withdrawn", + "admin.last_reinstated": "Last Reinstated", + "admin.last_owner_transfer": "Last Owner Transfer" + }, + valueMaps: { + "admin.in_doaj": {true: "Yes", false: "No"}, + "bibjson.apc.has_apc": {true: "Yes", false: "No"}, + "bibjson.other_charges.has_other_charges": {true: "Yes", false: "No"} + }, + selectedFiltersRenderer: doaj.renderers.newSelectedFiltersRenderer({ + hideValues: [ + 'index.is_flagged', + 'index.flag_assignees.exact' + ] + }), + rangeFunctions: { + "bibjson.discontinued_date": doaj.valueMaps.displayYearPeriod, + "created_date": doaj.valueMaps.displayYearMonthPeriod, + "last_manual_update": doaj.valueMaps.displayYearMonthPeriod, + "admin.last_full_review": doaj.valueMaps.displayYearMonthPeriod, + "admin.date_applied": doaj.valueMaps.displayYearMonthPeriod, + "admin.last_withdrawn": doaj.valueMaps.displayYearMonthPeriod, + "admin.last_reinstated": doaj.valueMaps.displayYearMonthPeriod, + "admin.last_owner_transfer": doaj.valueMaps.displayYearMonthPeriod + }, + openingQuery: es.newQuery({ + sort: [{field: "created_date", order: "desc"}] + }) + }); - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - components: components, - openingQuery: es.newQuery({ - sort: [{field: "created_date", order: "desc"}] - }), - 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."); - } - } - }); - doaj.adminJournalsSearch.activeEdges[selector] = e; - } + doaj.adminJournalsSearch.activeEdges[selector] = e; } -}); - +} jQuery(document).ready(function($) { doaj.adminJournalsSearch.init(); diff --git a/portality/static/js/edges/admin.notifications.edge.js b/portality/static/js/edges/admin.notifications.edge.js index c83eb72aa9..0b3deefc6d 100644 --- a/portality/static/js/edges/admin.notifications.edge.js +++ b/portality/static/js/edges/admin.notifications.edge.js @@ -1,257 +1,101 @@ // ~~ AdminNotifications:Edge -> Notifications:Feature ~~ // ~~-> Edges:Technology ~~ -$.extend(true, doaj, { - - adminNotificationsSearch : { - activeEdges : {}, - - createdByMap : { - "application:assed:acceptreject:notify": "Application: AssEd: Accepted/Rejected", - "application:assed:assigned:notify" : "Application: AssEd: Assigned", - "application:assed:inprogress:notify" : "Application: AssEd: Referred back", - "application:editor:acceptreject:notify": "Application: Editor: Accepted/Rejected", - "application:editor:completed:notify" : "Application: Editor: Completed", - "application:editor_group:assigned:notify" : "Application: Editor: Group assigned", - "application:editor:inprogress:notify" : "Application: Editor: Referred back", - "application:maned:ready:notify" : "Application: ManEd: Editor Sets Ready", - "application:publisher:accepted:notify" : "Application: Publisher: Accepted", - "application:publisher:assigned:notify" : "Application: Publisher: Assigned Editor", - "application:publisher:created:notify" : "Application: Publisher: Received", - "application:publisher:inprogress:notify" : "Application: Publisher: In progress", - "application:publisher:rejected:notify" : "Application: Publisher: Rejected", - "application:publisher:quickreject:notify" : "Application: Publisher: Quick-rejected", - "application:publisher:revision:notify" : "Application: Publisher: Requires revisions", - "bg:job_finished:notify" : "Background Job: Admin: Finished", - "journal:assed:assigned:notify" : "Journal: AssEd: Assigned", - "journal:editor_group:assigned:notify": "Journal: Editor: Group assigned", - "update_request:maned:editor_group_assigned:notify": "UR: ManEd: Assigned", - "update_request:publisher:accepted:notify": "UR: Publisher: Accepted", - "update_request:publisher:assigned:notify": "UR: Publisher: Assigned Editor", - "update_request:publisher:rejected:notify": "UR: Publisher: Rejected", - "update_request:publisher:submitted:notify": "UR: Publisher: Submitted" - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#admin_notifications"; - var search_url = current_scheme + "//" + current_domain + doaj.adminNotificationsSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - let markdownConverter = new showdown.Converter({ - literalMidWordUnderscores: true - }); - - var components = [ - doaj.components.searchingNotification(), - - // facets - - edges.newRefiningANDTermSelector({ - id: "who", - category: "facet", - field: "who.exact", - display: "Notification For", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "created_by", - category: "facet", - field: "created_by.exact", - display: "Notification", - size: 20, - orderBy: "term", - orderDir: "asc", - deactivateThreshold: 1, - valueMap: doaj.adminNotificationsSearch.createdByMap, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "classification", - category: "facet", - field: "classification.exact", - display: "Type", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newDateHistogramSelector({ - id: "created_date", - category: "facet", - field : "created_date", - interval: "month", - display: "Notification Month", - displayFormatter : function(val) { - let 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: countFormat, - hideInactive: true - }) - }), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Notification Date','field':'created_date'} - ], - fieldOptions: [ - {'display':'Notification For','field':'who'}, - {'display':'Title','field':'short'}, - {'display':'Body Text','field':'long'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search All Notifications" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newResultsFieldsByRowRenderer({ - rowDisplay : [ - [ - { - pre : "For ", - field: "who", - post: "" - }, - { - pre: " at ", - field: "created_date", - post: "" - }, - { - pre: " by ", - field: "created_by", - post: "" - }, - { - pre: " (", - field: "classification", - post: ")

" - } - ], - [ - { - pre : "", - field: "short", - post: "" - } - ], - [ - { - valueFunction: function(val, res, component) { - return markdownConverter.makeHtml(res.long); - } - } - ], - [ - { - pre: 'See action' - } - ] +doaj.adminNotificationsSearch = { + activeEdges : {}, + + createdByMap : { + "application:assed:acceptreject:notify": "Application: AssEd: Accepted/Rejected", + "application:assed:assigned:notify" : "Application: AssEd: Assigned", + "application:assed:inprogress:notify" : "Application: AssEd: Referred back", + "application:editor:acceptreject:notify": "Application: Editor: Accepted/Rejected", + "application:editor:completed:notify" : "Application: Editor: Completed", + "application:editor_group:assigned:notify" : "Application: Editor: Group assigned", + "application:editor:inprogress:notify" : "Application: Editor: Referred back", + "application:maned:ready:notify" : "Application: ManEd: Editor Sets Ready", + "application:publisher:accepted:notify" : "Application: Publisher: Accepted", + "application:publisher:assigned:notify" : "Application: Publisher: Assigned Editor", + "application:publisher:created:notify" : "Application: Publisher: Received", + "application:publisher:inprogress:notify" : "Application: Publisher: In progress", + "application:publisher:rejected:notify" : "Application: Publisher: Rejected", + "application:publisher:quickreject:notify" : "Application: Publisher: Quick-rejected", + "application:publisher:revision:notify" : "Application: Publisher: Requires revisions", + "bg:job_finished:notify" : "Background Job: Admin: Finished", + "journal:assed:assigned:notify" : "Journal: AssEd: Assigned", + "journal:editor_group:assigned:notify": "Journal: Editor: Group assigned", + "update_request:maned:editor_group_assigned:notify": "UR: ManEd: Assigned", + "update_request:publisher:accepted:notify": "UR: Publisher: Accepted", + "update_request:publisher:assigned:notify": "UR: Publisher: Assigned Editor", + "update_request:publisher:rejected:notify": "UR: Publisher: Rejected", + "update_request:publisher:submitted:notify": "UR: Publisher: Submitted" + }, + + init : function(params) { + if (!params) { params = {} } + + var selector = params.selector || "#admin_notifications"; + + let markdownConverter = new showdown.Converter({ + literalMidWordUnderscores: true + }); + + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.adminNotificationsSearchConfig.searchPath), + facets: [ + doaj.components.refiningAndFacet({id: "who", field: "who.exact", display: "Notification For", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "created_by", field: "created_by.exact", display: "Notification", size: 20, orderBy: "term", orderDir: "asc", deactivateThreshold: 1, valueMap: doaj.adminNotificationsSearch.createdByMap}), + doaj.components.refiningAndFacet({id: "classification", field: "classification.exact", display: "Type", deactivateThreshold: 1}), + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Notification Month"}) + ], + sortOptions: [ + {'display': 'Notification Date', 'field': 'created_date'} + ], + fieldOptions: [ + {'display': 'Notification For', 'field': 'who'}, + {'display': 'Title', 'field': 'short'}, + {'display': 'Body Text', 'field': 'long'} + ], + searchPlaceholder: "Search All Notifications", + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + rowDisplay: [ + [ + {pre: "For ", field: "who", post: ""}, + {pre: " at ", field: "created_date", post: ""}, + {pre: " by ", field: "created_by", post: ""}, + {pre: " (", field: "classification", post: ")

"} + ], + [ + {pre: "", field: "short", post: ""} + ], + [ + {valueFunction: function(val, res) { return markdownConverter.makeHtml(res.long); }} + ], + [ + {pre: 'See action'} ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "who.exact" : "Who", - "created_by.exact" : "Action", - "classification.exact" : "Type", - "created_date" : "Notification Date" - }, - valueMaps : { - "created_by.exact" : doaj.adminNotificationsSearch.createdByMap, - }, - rangeFunctions : { - "created_date" : doaj.valueMaps.displayYearMonthPeriod - } + ] }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - components: components, - openingQuery: es.newQuery({ - sort: [{field: "created_date", order: "desc"}], - size: 25 - }), - 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."); - } - } - }); - doaj.adminNotificationsSearch.activeEdges[selector] = e; - } + }), + fieldDisplays: { + "who.exact": "Who", + "created_by.exact": "Action", + "classification.exact": "Type", + "created_date": "Notification Date" + }, + valueMaps: { + "created_by.exact": doaj.adminNotificationsSearch.createdByMap + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + } + }); + + doaj.adminNotificationsSearch.activeEdges[selector] = e; } -}); - +} jQuery(document).ready(function($) { doaj.adminNotificationsSearch.init(); diff --git a/portality/static/js/edges/admin.reports.edge.js b/portality/static/js/edges/admin.reports.edge.js index 3bfe5dc1e6..bff8e4b0f2 100644 --- a/portality/static/js/edges/admin.reports.edge.js +++ b/portality/static/js/edges/admin.reports.edge.js @@ -1,212 +1,123 @@ -$.extend(true, doaj, { +doaj.adminReportsSearch = { + activeEdges : {}, - adminReportsSearch : { - activeEdges : {}, + init : function(params) { + if (!params) { params = {} } - init : function(params) { - if (!params) { params = {} } + var selector = params.selector || "#reports"; - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#reports"; - var search_url = current_scheme + "//" + current_domain + doaj.adminReportsSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - // facets - - edges.newRefiningANDTermSelector({ - id: "requester", - category: "facet", - field: "requester.exact", - display: "Produced By", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.adminReportsSearchConfig.searchPath), + facets: [ + doaj.components.refiningAndFacet({id: "requester", field: "requester.exact", display: "Produced By", deactivateThreshold: 1}), edges.newDateHistogramSelector({ id: "generated_date", category: "facet", - field : "generated_date", + field: "generated_date", interval: "month", display: "Generated Date", - displayFormatter : function(val) { + displayFormatter: function(val) { let date = new Date(parseInt(val)); - return date.toLocaleString('default', { month: 'long', year: 'numeric', timeZone: "UTC" }); + return date.toLocaleString('default', {month: 'long', year: 'numeric', timeZone: "UTC"}); }, - sortFunction : function(values) { + sortFunction: function(values) { values.reverse(); return values; }, renderer: edges.bs3.newDateHistogramSelectorRenderer({ - countFormat: countFormat, + countFormat: doaj.valueMaps.countFormat, hideInactive: true }) - }), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Generated Date','field':'generated_date'}, - {"display": "Report Name", "field": "name.exact"} - ], - fieldOptions: [ - {'display':'Requested by','field':'requester'}, - {'display':'Report Name','field':'name'}, - {'display':'Filename','field':'filename'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search All Reports" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newResultsFieldsByRowRenderer({ - rowDisplay : [ - [ - { - pre: "", - field: "name", - post: "" - }, - { - pre: " (", - field: "generated_date", - post: ")", - valueFunction: function (val, resultobj, renderer) { - return doaj.humanDateTime(val); - } + }) + ], + sortOptions: [ + {'display': 'Generated Date', 'field': 'generated_date'}, + {'display': 'Report Name', 'field': 'name.exact'} + ], + fieldOptions: [ + {'display': 'Requested by', 'field': 'requester'}, + {'display': 'Report Name', 'field': 'name'}, + {'display': 'Filename', 'field': 'filename'} + ], + searchPlaceholder: "Search All Reports", + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + rowDisplay: [ + [ + {pre: "", field: "name", post: ""}, + { + pre: " (", + field: "generated_date", + post: ")", + valueFunction: function(val, resultobj, renderer) { + return doaj.humanDateTime(val); } - ], - [ - { - "pre": "A ", - field: "model", - post: " report " - }, - { - pre : "requested by ", - field: "requester", - post: "" - }, - { - pre: " on ", - field: "request_date", - post: "", - valueFunction: function (val, resultobj, renderer) { - return doaj.humanDateTime(val); - } - }, - { - pre: " and generated on ", - field: "generated_date", - post: "", - valueFunction: function (val, resultobj, renderer) { - return doaj.humanDateTime(val); - } + } + ], + [ + {pre: "A ", field: "model", post: " report "}, + {pre: "requested by ", field: "requester", post: ""}, + { + pre: " on ", + field: "request_date", + post: "", + valueFunction: function(val, resultobj, renderer) { + return doaj.humanDateTime(val); } - ], - [ - { - field: "constraints", - valueFunction: function(val, res, component) { - // let source = encodeURIComponent(val); - let modelMap = { - "journal" : "/admin", - "application": "/admin/applications", - } - let route = modelMap[res.model]; - if (route === undefined) { - route = "/admin"; - } - return `Search again `; - } - }, - { - field: "id", - valueFunction: function(val, res, component) { - return `Download report`; + }, + { + pre: " and generated on ", + field: "generated_date", + post: "", + valueFunction: function(val, resultobj, renderer) { + return doaj.humanDateTime(val); + } + } + ], + [ + { + field: "constraints", + valueFunction: function(val, res, component) { + let modelMap = { + "journal": "/admin", + "application": "/admin/applications" + }; + let route = modelMap[res.model]; + if (route === undefined) { + route = "/admin"; } + return `Search again `; } - ] + }, + { + field: "id", + valueFunction: function(val, res, component) { + return `Download report`; + } + } ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "requester.exact" : "Requested By", - "generated_date" : "Generated Date" - }, - rangeFunctions : { - "generated_date" : doaj.valueMaps.displayYearMonthPeriod - } + ] }) - ]; + }), + fieldDisplays: { + "requester.exact": "Requested By", + "generated_date": "Generated Date" + }, + rangeFunctions: { + "generated_date": doaj.valueMaps.displayYearMonthPeriod + }, + openingQuery: es.newQuery({ + sort: [{field: "generated_date", order: "desc"}], + size: 25 + }) + }); - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - components: components, - openingQuery: es.newQuery({ - sort: [{field: "generated_date", order: "desc"}], - size: 25 - }), - 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."); - } - } - }); - doaj.adminReportsSearch.activeEdges[selector] = e; - } + doaj.adminReportsSearch.activeEdges[selector] = e; } -}); - +} jQuery(document).ready(function($) { doaj.adminReportsSearch.init(); diff --git a/portality/static/js/edges/admin.ris.edge.js b/portality/static/js/edges/admin.ris.edge.js index c62b68d9f3..54a0bc7d12 100644 --- a/portality/static/js/edges/admin.ris.edge.js +++ b/portality/static/js/edges/admin.ris.edge.js @@ -1,172 +1,101 @@ // ~~ AdminAlerts:Edge ~~ // ~~-> Edges:Technology ~~ -$.extend(true, doaj, { +doaj.adminRISSearch = { + activeEdges : {}, - adminRISSearch : { - activeEdges : {}, + init : function(params) { + if (!params) { params = {} } - init : function(params) { - if (!params) { params = {} } + var selector = params.selector || "#ris"; - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#ris"; - var search_url = current_scheme + "//" + current_domain + doaj.adminRISSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Created Date','field':'created_date'}, - {'display':'Last Updated','field':'last_updated'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search All RIS Exports" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newResultsFieldsByRowRenderer({ - noResultsText: "No RIS exports match the selected criteria.", - // the fields to display in the results table - rowDisplay: [ - [{ - field: "created_date", - pre: "Created Date: " - }], - [{ - field: "created_date", - pre: "Last Updated: " - }], - [{ - field: "id", - pre: "Article ID: " - }], - [{ - field: "ris", - pre: "", - post: "", - valueFunction: function(val, res, component) { - return val.replace(/\n/g, "
"); - } - }], - [{ - valueFunction: function(val, res, renderer) { - const del_class = edges.css_classes(renderer.namespace, "delete", renderer); - const regen_class = edges.css_classes(renderer.namespace, "regenerate", renderer); - return ` - `; - } - }] - ] - }) + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.adminRISSearchConfig.searchPath), + sortOptions: [ + {'display': 'Created Date', 'field': 'created_date'}, + {'display': 'Last Updated', 'field': 'last_updated'} + ], + searchPlaceholder: "Search All RIS Exports", + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + noResultsText: "No RIS exports match the selected criteria.", + rowDisplay: [ + [{field: "created_date", pre: "Created Date: "}], + [{field: "created_date", pre: "Last Updated: "}], + [{field: "id", pre: "Article ID: "}], + [{ + field: "ris", + pre: "", + post: "", + valueFunction: function(val, res, component) { + return val.replace(/\n/g, "
"); + } + }], + [{ + valueFunction: function(val, res, renderer) { + const del_class = edges.css_classes(renderer.namespace, "delete", renderer); + const regen_class = edges.css_classes(renderer.namespace, "regenerate", renderer); + return ` + `; + } + }] + ] }) - ]; + }), + openingQuery: es.newQuery({ + sort: [{field: "last_updated", order: "desc"}], + size: 25 + }), + callbacks: { + "edges:post-render": function() { + let resultsComponent = doaj.adminRISSearch.activeEdges[selector].getComponent({id: "results"}); - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - components: components, - openingQuery: es.newQuery({ - sort: [{field: "last_updated", order: "desc"}], - size: 25 - }), - 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."); - }, - "edges:post-render" : function() { - let resultsComponent = doaj.adminRISSearch.activeEdges[selector].getComponent({id: "results"}); - let deleteSelector = edges.css_class_selector(resultsComponent.renderer.namespace, "delete"); - $(deleteSelector).on("click", function(e) { - e.preventDefault(); - let a = e.currentTarget; - let id = a.getAttribute("data-id"); - let proceed = confirm("Deleting the RIS export will cause it to be regenerated the next time it is requested, or the regular RIS export runs") - if (!proceed) { - return; + let deleteSelector = edges.css_class_selector(resultsComponent.renderer.namespace, "delete"); + $(deleteSelector).on("click", function(e) { + e.preventDefault(); + let a = e.currentTarget; + let id = a.getAttribute("data-id"); + let proceed = confirm("Deleting the RIS export will cause it to be regenerated the next time it is requested, or the regular RIS export runs") + if (!proceed) { return; } + $.ajax({ + method: "POST", + url: "/admin/ris/" + id + "/delete", + success: function(data) { + alert("Deleted successfully, reload the page to see the changes"); + }, + error: function(xhr, status, error) { + alert("There was an unexpected error processing your request."); } - $.ajax({ - method: "POST", - url: "/admin/ris/" + id + "/delete", - success: function(data) { - // reload the page to see the changes - // window.location.reload(); - alert("Deleted successfully, reload the page to see the changes"); - }, - error: function(xhr, status, error) { - alert("There was an unexpected error processing your request."); - } - }) }) + }); - let regenerateSelector = edges.css_class_selector(resultsComponent.renderer.namespace, "regenerate"); - $(regenerateSelector).on("click", function(e) { - e.preventDefault(); - let a = e.currentTarget; - let id = a.getAttribute("data-id"); - let proceed = confirm("Regenerate the RIS Export?") - if (!proceed) { - return; + let regenerateSelector = edges.css_class_selector(resultsComponent.renderer.namespace, "regenerate"); + $(regenerateSelector).on("click", function(e) { + e.preventDefault(); + let a = e.currentTarget; + let id = a.getAttribute("data-id"); + let proceed = confirm("Regenerate the RIS Export?") + if (!proceed) { return; } + $.ajax({ + method: "POST", + url: "/admin/ris/" + id + "/regenerate", + success: function(data) { + alert("Regenerated successfully, reload the page to see the changes"); + }, + error: function(xhr, status, error) { + alert("There was an unexpected error processing your request."); } - $.ajax({ - method: "POST", - url: "/admin/ris/" + id + "/regenerate", - success: function(data) { - // reload the page to see the changes - // window.location.reload(); - alert("Regenerated successfully, reload the page to see the changes"); - }, - error: function(xhr, status, error) { - alert("There was an unexpected error processing your request."); - } - }) }) - } + }); } - }); - doaj.adminRISSearch.activeEdges[selector] = e; - } - } -}); + } + }); + doaj.adminRISSearch.activeEdges[selector] = e; + } +} jQuery(document).ready(function($) { doaj.adminRISSearch.init(); diff --git a/portality/static/js/edges/admin.system_objects.edge.js b/portality/static/js/edges/admin.system_objects.edge.js new file mode 100644 index 0000000000..5c1bc7ba0a --- /dev/null +++ b/portality/static/js/edges/admin.system_objects.edge.js @@ -0,0 +1,356 @@ +// ~~ SystemObjectsSearch:Feature ~~ +// ~~-> Edges:Technology ~~ +// +// Admin-only search interfaces for system objects. +// Uses doaj.components.makeSearch() from doaj.fieldrender.edges.js - each search +// is defined with a few lines of config. + +doaj.systemObjectSearch = { + + activeEdges: {}, + + //----------------------------- + // Generic JSON results renderer + //----------------------------- + // Displays each result as pretty-printed JSON. + // Used as the default results display for system objects where no custom rendering is needed. + + newJSONResultsRenderer: function(params) { + return edges.instantiate(doaj.systemObjectSearch.JSONResultsRenderer, params, edges.newRenderer); + }, + + JSONResultsRenderer: function(params) { + this.namespace = "doaj-json-results"; + this.noResultsText = edges.getParam(params.noResultsText, "No results found."); + + this.draw = function() { + if (this.component.results === false || this.component.results.length === 0) { + this.component.context.html("

" + this.noResultsText + "

"); + return; + } + var frag = ""; + for (var i = 0; i < this.component.results.length; i++) { + var res = this.component.results[i]; + frag += '
'; + frag += '
';
+                frag += edges.escapeHtml(JSON.stringify(res, null, 2));
+                frag += '
'; + frag += '
'; + } + this.component.context.html(frag); + }; + }, + + // Builds a resultsDisplay component using the JSON renderer + jsonResultsDisplay: function() { + return edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: doaj.systemObjectSearch.newJSONResultsRenderer() + }); + }, + + //----------------------------- + // Per-object init functions + //----------------------------- + + initProvenance: function() { + var e = doaj.components.makeSearch({ + selector: "#provenance_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/provenance/_search"), + facets: [ + doaj.components.refiningAndFacet({id: "user", field: "user.exact", display: "User"}), + doaj.components.refiningAndFacet({id: "type", field: "type.exact", display: "Object Type"}), + doaj.components.refiningAndFacet({id: "subtype", field: "subtype.exact", display: "Subtype"}), + doaj.components.refiningAndFacet({id: "action", field: "action.exact", display: "Action"}), + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Date"}) + ], + sortOptions: [ + {"display": "Date Created", "field": "created_date"}, + {"display": "User", "field": "user.exact"} + ], + fieldOptions: [ + {"display": "User", "field": "user"}, + {"display": "Resource ID", "field": "resource_id"}, + {"display": "Action", "field": "action"}, + {"display": "Object Type", "field": "type"} + ], + searchPlaceholder: "Search Provenance Records", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + fieldDisplays: { + "user.exact": "User", + "type.exact": "Object Type", + "subtype.exact": "Subtype", + "action.exact": "Action", + "created_date": "Date" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + } + }); + doaj.systemObjectSearch.activeEdges["#provenance_search"] = e; + }, + + initFileUploads: function() { + var e = doaj.components.makeSearch({ + selector: "#file_uploads_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/upload/_search"), + facets: [ + doaj.components.refiningAndFacet({id: "status", field: "status.exact", display: "Status"}), + doaj.components.refiningAndFacet({id: "owner", field: "owner.exact", display: "Owner"}), + doaj.components.refiningAndFacet({id: "schema", field: "schema.exact", display: "Schema"}), + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Date"}) + ], + sortOptions: [ + {"display": "Date Created", "field": "created_date"}, + {"display": "Owner", "field": "owner.exact"} + ], + fieldOptions: [ + {"display": "Owner", "field": "owner"}, + {"display": "Filename", "field": "filename"}, + {"display": "Status", "field": "status.exact"} + ], + searchPlaceholder: "Search File Uploads", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + fieldDisplays: { + "status.exact": "Status", + "owner.exact": "Owner", + "schema.exact": "Schema", + "created_date": "Date" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + } + }); + doaj.systemObjectSearch.activeEdges["#file_uploads_search"] = e; + }, + + initBulkUploads: function() { + var e = doaj.components.makeSearch({ + selector: "#bulk_uploads_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/bulk_articles/_search"), + facets: [ + doaj.components.refiningAndFacet({id: "status", field: "status.exact", display: "Status"}), + doaj.components.refiningAndFacet({id: "owner", field: "owner.exact", display: "Owner"}), + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Date"}) + ], + sortOptions: [ + {"display": "Date Created", "field": "created_date"}, + {"display": "Owner", "field": "owner.exact"} + ], + fieldOptions: [ + {"display": "Owner", "field": "owner"}, + {"display": "Status", "field": "status.exact"} + ], + searchPlaceholder: "Search Bulk Uploads", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + fieldDisplays: { + "status.exact": "Status", + "owner.exact": "Owner", + "created_date": "Date" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + } + }); + doaj.systemObjectSearch.activeEdges["#bulk_uploads_search"] = e; + }, + + initCache: function() { + var e = doaj.components.makeSearch({ + selector: "#cache_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/cache/_search"), + sortOptions: [ + {"display": "Date Created", "field": "created_date"}, + {"display": "Last Updated", "field": "last_updated"} + ], + searchPlaceholder: "Search Cache", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + openingQuery: es.newQuery({size: 25}) + }); + doaj.systemObjectSearch.activeEdges["#cache_search"] = e; + }, + + initLocks: function() { + var e = doaj.components.makeSearch({ + selector: "#locks_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/lock/_search"), + facets: [ + doaj.components.refiningAndFacet({id: "type", field: "type.exact", display: "Type"}), + doaj.components.refiningAndFacet({id: "username", field: "username.exact", display: "Username"}), + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Date"}) + ], + sortOptions: [ + {"display": "Date Created", "field": "created_date"}, + {"display": "Expires", "field": "expires"}, + {"display": "Username", "field": "username.exact"} + ], + fieldOptions: [ + {"display": "Username", "field": "username"}, + {"display": "About (resource ID)", "field": "about"} + ], + searchPlaceholder: "Search Locks", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + fieldDisplays: { + "type.exact": "Type", + "username.exact": "Username", + "created_date": "Date" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + } + }); + doaj.systemObjectSearch.activeEdges["#locks_search"] = e; + }, + + initPreservation: function() { + var e = doaj.components.makeSearch({ + selector: "#preservation_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/preserve/_search"), + facets: [ + doaj.components.refiningAndFacet({id: "status", field: "status.exact", display: "Status"}), + doaj.components.refiningAndFacet({id: "owner", field: "owner.exact", display: "Owner"}), + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Date"}) + ], + sortOptions: [ + {"display": "Date Created", "field": "created_date"}, + {"display": "Owner", "field": "owner.exact"} + ], + fieldOptions: [ + {"display": "Owner", "field": "owner"}, + {"display": "Filename", "field": "filename"}, + {"display": "Status", "field": "status.exact"} + ], + searchPlaceholder: "Search Preservation Files", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + fieldDisplays: { + "status.exact": "Status", + "owner.exact": "Owner", + "created_date": "Date" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + } + }); + doaj.systemObjectSearch.activeEdges["#preservation_search"] = e; + }, + + initArticleTombstones: function() { + var e = doaj.components.makeSearch({ + selector: "#article_tombstones_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/article_tombstone/_search"), + facets: [ + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Date Deleted"}) + ], + sortOptions: [ + {"display": "Date Deleted", "field": "created_date"}, + {"display": "Last Updated", "field": "last_updated"} + ], + fieldOptions: [ + {"display": "DOI", "field": "bibjson.identifier.id"}, + {"display": "Title", "field": "bibjson.title"}, + {"display": "Author", "field": "bibjson.author.name"} + ], + searchPlaceholder: "Search Article Tombstones", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + fieldDisplays: { + "created_date": "Date Deleted" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + } + }); + doaj.systemObjectSearch.activeEdges["#article_tombstones_search"] = e; + }, + + initDraftApplications: function() { + var e = doaj.components.makeSearch({ + selector: "#draft_applications_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/draft_application/_search"), + facets: [ + doaj.components.refiningAndFacet({id: "owner", field: "admin.owner.exact", display: "Owner"}), + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Date"}) + ], + sortOptions: [ + {"display": "Date Created", "field": "created_date"}, + {"display": "Last Updated", "field": "last_updated"} + ], + fieldOptions: [ + {"display": "Title", "field": "bibjson.title"}, + {"display": "ISSN", "field": "bibjson.identifier.id"}, + {"display": "Owner", "field": "admin.owner"} + ], + searchPlaceholder: "Search Draft Applications", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + fieldDisplays: { + "admin.owner.exact": "Owner", + "created_date": "Date" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + } + }); + doaj.systemObjectSearch.activeEdges["#draft_applications_search"] = e; + }, + + initHarvesterState: function() { + var e = doaj.components.makeSearch({ + selector: "#harvester_state_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/harvester_state/_search"), + facets: [ + doaj.components.refiningAndFacet({id: "status", field: "status.exact", display: "Status"}), + doaj.components.refiningAndFacet({id: "account", field: "account.exact", display: "Account"}) + ], + sortOptions: [ + {"display": "Last Updated", "field": "last_updated"}, + {"display": "Date Created", "field": "created_date"}, + {"display": "Account", "field": "account.exact"} + ], + fieldOptions: [ + {"display": "Account", "field": "account"}, + {"display": "ISSN", "field": "issn"}, + {"display": "Status", "field": "status.exact"} + ], + searchPlaceholder: "Search Harvester State", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + fieldDisplays: { + "status.exact": "Status", + "account.exact": "Account" + }, + openingQuery: es.newQuery({ + sort: [{field: "last_updated", order: "desc"}], + size: 25 + }) + }); + doaj.systemObjectSearch.activeEdges["#harvester_state_search"] = e; + }, + + initAutochecks: function() { + var e = doaj.components.makeSearch({ + selector: "#autochecks_search", + searchUrl: doaj.edgeUtil.url.build("/admin_query/autocheck/_search"), + facets: [ + doaj.components.refiningAndFacet({id: "checked_by", field: "checks.checked_by.exact", display: "Checked By"}), + doaj.components.monthDateHistogramFacet({id: "created_date", field: "created_date", display: "Date"}) + ], + sortOptions: [ + {"display": "Date Created", "field": "created_date"}, + {"display": "Last Updated", "field": "last_updated"} + ], + fieldOptions: [ + {"display": "Application ID", "field": "application"}, + {"display": "Journal ID", "field": "journal"} + ], + searchPlaceholder: "Search Autochecks", + resultsDisplay: doaj.systemObjectSearch.jsonResultsDisplay(), + fieldDisplays: { + "checks.checked_by.exact": "Checked By", + "created_date": "Date" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearMonthPeriod + } + }); + doaj.systemObjectSearch.activeEdges["#autochecks_search"] = e; + } +}; diff --git a/portality/static/js/edges/admin.update_requests.edge.js b/portality/static/js/edges/admin.update_requests.edge.js index 7123273c59..34439cdaee 100644 --- a/portality/static/js/edges/admin.update_requests.edge.js +++ b/portality/static/js/edges/admin.update_requests.edge.js @@ -1,45 +1,39 @@ // ~~ AdminUpdateRequestSearch:Feature ~~ -$.extend(true, doaj, { +doaj.adminApplicationsSearch = { + activeEdges : {}, - adminApplicationsSearch : { - activeEdges : {}, - - relatedJournal : function (val, resultobj, renderer) { - var result = ""; - if (resultobj.admin) { - var journals_url = doaj.adminApplicationsSearchConfig.journalsUrl; - if (resultobj.admin.current_journal) { - var fvurl = journals_url + '?source=%7B"query"%3A%7B"query_string"%3A%7B"query"%3A"' + edges.escapeHtml(resultobj.admin.current_journal) + '"%2C"default_operator"%3A"AND"%7D%7D%2C"from"%3A0%2C"size"%3A10%7D'; - result += "Update Request For: " + edges.escapeHtml(resultobj.admin.current_journal) + ''; + relatedJournal : function (val, resultobj, renderer) { + var result = ""; + if (resultobj.admin) { + var journals_url = doaj.adminApplicationsSearchConfig.journalsUrl; + if (resultobj.admin.current_journal) { + var fvurl = journals_url + '?source=%7B"query"%3A%7B"query_string"%3A%7B"query"%3A"' + edges.escapeHtml(resultobj.admin.current_journal) + '"%2C"default_operator"%3A"AND"%7D%7D%2C"from"%3A0%2C"size"%3A10%7D'; + result += "Update Request For: " + edges.escapeHtml(resultobj.admin.current_journal) + ''; + } + if (resultobj.admin.related_journal) { + var fvurl = journals_url + '?source=%7B"query"%3A%7B"query_string"%3A%7B"query"%3A"' + resultobj.admin.related_journal + '"%2C"default_operator"%3A"AND"%7D%7D%2C"from"%3A0%2C"size"%3A10%7D'; + if (result != "") { + result += "
"; } - if (resultobj.admin.related_journal) { - var fvurl = journals_url + '?source=%7B"query"%3A%7B"query_string"%3A%7B"query"%3A"' + resultobj.admin.related_journal + '"%2C"default_operator"%3A"AND"%7D%7D%2C"from"%3A0%2C"size"%3A10%7D'; - if (result != "") { - result += "
"; - } - let label = "Produced Journal"; - if (resultobj.admin.application_status === "rejected") { - label = "Originally For Journal"; - } - result += "" + label + ": " + edges.escapeHtml(resultobj.admin.related_journal) + ''; + let label = "Produced Journal"; + if (resultobj.admin.application_status === "rejected") { + label = "Originally For Journal"; } + result += "" + label + ": " + edges.escapeHtml(resultobj.admin.related_journal) + ''; } - return result; - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; + } + return result; + }, - var selector = params.selector || "#admin_applications"; - var search_url = current_scheme + "//" + current_domain + doaj.adminApplicationsSearchConfig.searchPath; + init : function(params) { + if (!params) { params = {} } - var components = [ - doaj.components.searchingNotification(), + var selector = params.selector || "#admin_applications"; - // facets + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.adminApplicationsSearchConfig.searchPath), + facets: [ doaj.facets.openOrClosed(), doaj.facets.applicationStatus(), doaj.facets.hasEditorGroup(), @@ -52,223 +46,98 @@ $.extend(true, doaj, { doaj.facets.countryPublisher(), doaj.facets.subject(), doaj.facets.publisher(), - doaj.facets.journalLicence(), - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Date applied','field':'admin.date_applied'}, - {'display':'Last updated','field':'last_manual_update'}, // Note: last updated on UI points to when last updated by a person (via form) - {'display':'Title','field':'index.unpunctitle.exact'}, - {'display':'Flag deadline', 'field': 'index.most_urgent_flag_deadline'} - ], - fieldOptions: [ - {'display':'Title','field':'index.title'}, - {'display':'Keywords','field':'bibjson.keywords'}, - {'display':'Classification','field':'index.classification'}, - {'display':'ISSN', 'field':'index.issn.exact'}, - {'display':'Country of publisher','field':'index.country'}, - {'display':'Journal language','field':'index.language'}, - {'display':'Publisher','field':'bibjson.publisher.name'}, - {'display':'Journal: Alternative Title','field':'bibjson.alternative_title'}, - {'display':'Notes','field':'admin.notes.note'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search All Applications" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - doaj.components.pager("top-pager", "top-pager"), - doaj.components.pager("bottom-pager", "bottom-pager"), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newResultsFieldsByRowRenderer({ - rowDisplay : [ - [ - { - valueFunction: doaj.fieldRender.titleField - } - ], - [ - { - valueFunction: doaj.fieldRender.editSuggestion({ - editUrl : doaj.adminApplicationsSearchConfig.applicationEditUrl - }) - } - ], - [ - { - "pre": 'Alternative title: ', - "field": "bibjson.alternative_title", - "post": "" - } - ], - [ - { - valueFunction: doaj.fieldRender.deadline - } - ], - [ - { - "pre": "Date applied: ", - valueFunction: doaj.fieldRender.suggestedOn - } - ], - [ - { - "pre": "Last updated: ", - valueFunction: doaj.fieldRender.lastManualUpdate - } - ], - [ - { - "pre" : "Owner: ", - valueFunction: doaj.fieldRender.owner - } - ], - [ - { - valueFunction: doaj.fieldRender.issns - } - ], - [ - { - "pre" : "Application status: ", - valueFunction: doaj.fieldRender.applicationStatus - } - ], - [ - { - "pre" : "Editor Group: ", - "field" : "admin.editor_group" - } - ], - [ - { - "pre": "Classification: ", - "field": "index.classification" - } - ], - [ - { - "pre": "Keywords: ", - "field": "bibjson.keywords" - } - ], - [ - { - "pre": "Publisher: ", - "field": "bibjson.publisher.name" - } - ], - [ - { - "pre": "Publication charges?: ", - valueFunction: doaj.fieldRender.authorPays - } - ], - [ - { - "pre": "Country of publisher: ", - valueFunction: doaj.fieldRender.countryName - } - ], - [ - { - "pre": "Journal language: ", - "field": "bibjson.language" - } - ], - [ - { - "pre": "Journal license: ", - valueFunction: doaj.fieldRender.journalLicense - } - ], - [ - { - valueFunction: doaj.fieldRender.links - } - ], - [ - { - valueFunction: doaj.adminApplicationsSearch.relatedJournal - } - ] - ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - 'admin.application_status.exact': 'Status', - 'index.application_type.exact' : 'Update Request', - 'index.has_editor_group.exact' : 'Editor Group?', - 'index.has_editor.exact' : 'Associate Editor?', - 'admin.editor_group.exact' : 'Editor Group', - 'admin.editor.exact' : 'Editor', - 'index.classification.exact' : 'Classification', - 'index.language.exact' : 'Language', - 'index.country.exact' : 'Country', - 'index.subject.exact' : 'Subject', - 'bibjson.publisher.name.exact' : 'Publisher', - 'bibjson.provider.exact' : 'Platform, Host, Aggregator', - "index.has_apc.exact" : "Charges?", - 'index.license.exact' : 'License', - 'index.is_flagged': "Only Flagged Records", - 'index.flag_assignees.exact': "Flagged to me" - }, - valueMaps : { - "index.application_type.exact" : { - "finished application/update": "Closed", - "update request": "Open", - "new application": "Open" - } - }, - renderer : doaj.renderers.newSelectedFiltersRenderer({ - hideValues: [ - 'index.is_flagged', - 'index.flag_assignees.exact' - ] - }) + doaj.facets.journalLicence() + ], + sortOptions: [ + {'display': 'Date applied', 'field': 'admin.date_applied'}, + {'display': 'Last updated', 'field': 'last_manual_update'}, + {'display': 'Title', 'field': 'index.unpunctitle.exact'}, + {'display': 'Flag deadline', 'field': 'index.most_urgent_flag_deadline'} + ], + fieldOptions: [ + {'display': 'Title', 'field': 'index.title'}, + {'display': 'Keywords', 'field': 'bibjson.keywords'}, + {'display': 'Classification', 'field': 'index.classification'}, + {'display': 'ISSN', 'field': 'index.issn.exact'}, + {'display': 'Country of publisher', 'field': 'index.country'}, + {'display': 'Journal language', 'field': 'index.language'}, + {'display': 'Publisher', 'field': 'bibjson.publisher.name'}, + {'display': 'Journal: Alternative Title', 'field': 'bibjson.alternative_title'}, + {'display': 'Notes', 'field': 'admin.notes.note'} + ], + searchPlaceholder: "Search All Applications", + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + rowDisplay: [ + [{valueFunction: doaj.fieldRender.titleField}], + [{valueFunction: doaj.fieldRender.editSuggestion({editUrl: doaj.adminApplicationsSearchConfig.applicationEditUrl})}], + [{pre: 'Alternative title: ', field: "bibjson.alternative_title", post: ""}], + [{valueFunction: doaj.fieldRender.deadline}], + [{pre: "Date applied: ", valueFunction: doaj.fieldRender.suggestedOn}], + [{pre: "Last updated: ", valueFunction: doaj.fieldRender.lastManualUpdate}], + [{pre: "Owner: ", valueFunction: doaj.fieldRender.owner}], + [{valueFunction: doaj.fieldRender.issns}], + [{pre: "Application status: ", valueFunction: doaj.fieldRender.applicationStatus}], + [{pre: "Editor Group: ", field: "admin.editor_group"}], + [{pre: "Classification: ", field: "index.classification"}], + [{pre: "Keywords: ", field: "bibjson.keywords"}], + [{pre: "Publisher: ", field: "bibjson.publisher.name"}], + [{pre: "Publication charges?: ", valueFunction: doaj.fieldRender.authorPays}], + [{pre: "Country of publisher: ", valueFunction: doaj.fieldRender.countryName}], + [{pre: "Journal language: ", field: "bibjson.language"}], + [{pre: "Journal license: ", valueFunction: doaj.fieldRender.journalLicense}], + [{valueFunction: doaj.fieldRender.links}], + [{valueFunction: doaj.adminApplicationsSearch.relatedJournal}] + ] }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - openingQuery : es.newQuery({ - sort: {"field" : "admin.date_applied", "order" : "asc"} - }), - components: components, - 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."); - } + }), + fieldDisplays: { + 'admin.application_status.exact': 'Status', + 'index.application_type.exact': 'Update Request', + 'index.has_editor_group.exact': 'Editor Group?', + 'index.has_editor.exact': 'Associate Editor?', + 'admin.editor_group.exact': 'Editor Group', + 'admin.editor.exact': 'Editor', + 'index.classification.exact': 'Classification', + 'index.language.exact': 'Language', + 'index.country.exact': 'Country', + 'index.subject.exact': 'Subject', + 'bibjson.publisher.name.exact': 'Publisher', + 'bibjson.provider.exact': 'Platform, Host, Aggregator', + 'index.has_apc.exact': 'Charges?', + 'index.license.exact': 'License', + 'index.is_flagged': "Only Flagged Records", + 'index.flag_assignees.exact': "Flagged to me" + }, + valueMaps: { + "index.application_type.exact": { + "finished application/update": "Closed", + "update request": "Open", + "new application": "Open" + } + }, + selectedFiltersRenderer: doaj.renderers.newSelectedFiltersRenderer({ + hideValues: [ + 'index.is_flagged', + 'index.flag_assignees.exact' + ] + }), + openingQuery: es.newQuery({ + sort: {"field": "admin.date_applied", "order": "asc"} + }), + callbacks: { + "edges:pre-render": function() { + doaj.multiFormBox.active.validate(); } - }); - doaj.adminApplicationsSearch.activeEdges[selector] = e; + } + }); - doaj.multiFormBox.active = doaj.bulk.applicationMultiFormBox(e, "update_requests"); - $(selector).on("edges:pre-render", function() { - doaj.multiFormBox.active.validate(); - }); - } + doaj.adminApplicationsSearch.activeEdges[selector] = e; + doaj.multiFormBox.active = doaj.bulk.applicationMultiFormBox(e, "update_requests"); } -}); +} jQuery(document).ready(function($) { diff --git a/portality/static/js/edges/admin.users.edge.js b/portality/static/js/edges/admin.users.edge.js index ae089976b6..da072feee4 100644 --- a/portality/static/js/edges/admin.users.edge.js +++ b/portality/static/js/edges/admin.users.edge.js @@ -1,33 +1,23 @@ // ~~ AdminUserSearch:Feature ~~ -$.extend(true, doaj, { - - userSearch: { - activeEdges: {}, - - editUserLink : function (val, resultobj, renderer) { - var result = 'Edit this user'; - return result; - }, - - userJournalsLink : function (val, resultobj, renderer) { - var q = { - "query": { - "bool": { - "must": [{ - "term": {"admin.owner.exact": resultobj.id} - }] - } +doaj.userSearch = { + activeEdges: {}, + + editUserLink : function (val, resultobj, renderer) { + var result = 'Edit this user'; + return result; + }, + + userJournalsLink : function (val, resultobj, renderer) { + var q = { + "query": { + "bool": { + "must": [{ + "term": {"admin.owner.exact": resultobj.id} + }] } - }; - return '
View Journals' - }, - - init : function(params) { - if (!params) { - params = {} } var current_domain = document.location.host; @@ -175,40 +165,22 @@ $.extend(true, doaj, { } ] ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "role.exact": "Role", - "created_date": "Created Date" - }, - rangeFunctions : { - "created_date" : doaj.valueMaps.displayYearPeriod - } + ] }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - openingQuery : es.newQuery({size: 25}), - manageUrl: true, - components: components, - 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."); - } - } - }); - doaj.userSearch.activeEdges[selector] = e; - } + }), + fieldDisplays: { + "role.exact": "Role", + "created_date": "Created Date" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearPeriod + }, + openingQuery: es.newQuery({size: 25}) + }); + + doaj.userSearch.activeEdges[selector] = e; } -}); +} jQuery(document).ready(function($) { doaj.userSearch.init(); diff --git a/portality/static/js/edges/associate.applications.edge.js b/portality/static/js/edges/associate.applications.edge.js index 60b9433bf6..3a2edda005 100644 --- a/portality/static/js/edges/associate.applications.edge.js +++ b/portality/static/js/edges/associate.applications.edge.js @@ -1,338 +1,96 @@ -$.extend(true, doaj, { +doaj.associateApplicationsSearch = { + activeEdges : {}, - associateApplicationsSearch : { - activeEdges : {}, - - editorStatusMap: function(value) { - if (doaj.valueMaps.applicationStatus.hasOwnProperty(value)) { - return doaj.valueMaps.applicationStatus[value]; - } - return value; - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; + editorStatusMap: function(value) { + if (doaj.valueMaps.applicationStatus.hasOwnProperty(value)) { + return doaj.valueMaps.applicationStatus[value]; + } + return value; + }, - var selector = params.selector || "#associate_applications"; - var search_url = current_scheme + "//" + current_domain + doaj.associateApplicationsSearchConfig.searchPath; + init : function(params) { + if (!params) { params = {} } - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); + var selector = params.selector || "#associate_applications"; - var components = [ - doaj.components.searchingNotification(), - // facets + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.associateApplicationsSearchConfig.searchPath), + facets: [ doaj.facets.openOrClosed(), - - edges.newRefiningANDTermSelector({ - id: "application_status", - category: "facet", - field: "admin.application_status.exact", - display: "Application Status", - deactivateThreshold: 1, - valueFunction : doaj.associateApplicationsSearch.editorStatusMap, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "author_pays", - category: "facet", - field: "index.has_apc.exact", - display: "Publication charges?", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "classification", - category: "facet", - field: "index.classification.exact", - display: "Classification", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "language", - category: "facet", - field: "index.language.exact", - display: "Journal language", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "country_publisher", - category: "facet", - field: "index.country.exact", - display: "Country of publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "subject", - category: "facet", - field: "index.subject.exact", - display: "Subject", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "publisher", - category: "facet", - field: "bibjson.publisher.name.exact", - display: "Publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "journal_license", - category: "facet", - field: "index.license.exact", - display: "Journal license", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Date applied','field':'admin.date_applied'}, - {'display':'Last updated','field':'last_manual_update'}, // Note: last updated on UI points to when last updated by a person (via form) - {'display':'Title','field':'index.unpunctitle.exact'} - ], - fieldOptions: [ - {'display':'Title','field':'index.title'}, - {'display':'Keywords','field':'bibjson.keywords'}, - {'display':'Classification','field':'index.classification'}, - {'display':'ISSN', 'field':'index.issn.exact'}, - {'display':'Country of publisher','field':'index.country'}, - {'display':'Journal language','field':'index.language'}, - {'display':'Publisher','field':'bibjson.publisher.name'}, - {'display':'Alternative Title','field':'bibjson.alternative_title'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search Applications assigned to you" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newResultsFieldsByRowRenderer({ - noResultsText: "

There are no applications assigned to you that meet the search criteria

" + - "

If you have not set any search criteria, this means there are no applications currently assigned to you

", - rowDisplay : [ - [ - { - valueFunction: doaj.fieldRender.titleField - } - ], - [ - { - "pre": 'Alternative title: ', - "field": "bibjson.alternative_title", - "post": "" - } - ], - [ - { - "pre": "Date applied: ", - valueFunction: doaj.fieldRender.suggestedOn - } - ], - [ - { - "pre": "Last updated: ", - valueFunction: doaj.fieldRender.lastManualUpdate - } - ], - [ - { - valueFunction: doaj.fieldRender.issns - } - ], - [ - { - "pre" : "Application status: ", - valueFunction: doaj.fieldRender.applicationStatus - } - ], - [ - { - "pre": "Classification: ", - "field": "index.classification" - } - ], - [ - { - "pre": "Keywords: ", - "field": "bibjson.keywords" - } - ], - [ - { - "pre": "Publisher: ", - "field": "bibjson.publisher.name" - } - ], - [ - { - "pre": "Publication charges?: ", - valueFunction: doaj.fieldRender.authorPays - } - ], - [ - { - "pre": "Country of publisher: ", - valueFunction: doaj.fieldRender.countryName - } - ], - [ - { - "pre": "Journal language: ", - "field": "bibjson.language" - } - ], - [ - { - "pre": "Journal license: ", - valueFunction: doaj.fieldRender.journalLicense - } - ], - [ - { - valueFunction: doaj.fieldRender.links - } - ], - [ - { - valueFunction: doaj.fieldRender.readOnlyJournal({ - readOnlyJournalUrl : doaj.associateApplicationsSearchConfig.readOnlyJournalUrl - }) - }, - { - valueFunction: doaj.fieldRender.editSuggestion({ - editUrl : doaj.associateApplicationsSearchConfig.applicationEditUrl - }) - } - ] + doaj.components.refiningAndFacet({id: "application_status", field: "admin.application_status.exact", display: "Application Status", deactivateThreshold: 1, valueFunction: doaj.associateApplicationsSearch.editorStatusMap}), + doaj.components.refiningAndFacet({id: "author_pays", field: "index.has_apc.exact", display: "Publication charges?", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "classification", field: "index.classification.exact", display: "Classification", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "language", field: "index.language.exact", display: "Journal language", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "country_publisher", field: "index.country.exact", display: "Country of publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "subject", field: "index.subject.exact", display: "Subject", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "publisher", field: "bibjson.publisher.name.exact", display: "Publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_license", field: "index.license.exact", display: "Journal license", deactivateThreshold: 1}) + ], + sortOptions: [ + {'display': 'Date applied', 'field': 'admin.date_applied'}, + {'display': 'Last updated', 'field': 'last_manual_update'}, + {'display': 'Title', 'field': 'index.unpunctitle.exact'} + ], + fieldOptions: [ + {'display': 'Title', 'field': 'index.title'}, + {'display': 'Keywords', 'field': 'bibjson.keywords'}, + {'display': 'Classification', 'field': 'index.classification'}, + {'display': 'ISSN', 'field': 'index.issn.exact'}, + {'display': 'Country of publisher', 'field': 'index.country'}, + {'display': 'Journal language', 'field': 'index.language'}, + {'display': 'Publisher', 'field': 'bibjson.publisher.name'}, + {'display': 'Alternative Title', 'field': 'bibjson.alternative_title'} + ], + searchPlaceholder: "Search Applications assigned to you", + sizeOptions: [10, 25, 50, 100], + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + noResultsText: "

There are no applications assigned to you that meet the search criteria

" + + "

If you have not set any search criteria, this means there are no applications currently assigned to you

", + rowDisplay: [ + [{valueFunction: doaj.fieldRender.titleField}], + [{pre: 'Alternative title: ', field: "bibjson.alternative_title", post: ""}], + [{pre: "Date applied: ", valueFunction: doaj.fieldRender.suggestedOn}], + [{pre: "Last updated: ", valueFunction: doaj.fieldRender.lastManualUpdate}], + [{valueFunction: doaj.fieldRender.issns}], + [{pre: "Application status: ", valueFunction: doaj.fieldRender.applicationStatus}], + [{pre: "Classification: ", field: "index.classification"}], + [{pre: "Keywords: ", field: "bibjson.keywords"}], + [{pre: "Publisher: ", field: "bibjson.publisher.name"}], + [{pre: "Publication charges?: ", valueFunction: doaj.fieldRender.authorPays}], + [{pre: "Country of publisher: ", valueFunction: doaj.fieldRender.countryName}], + [{pre: "Journal language: ", field: "bibjson.language"}], + [{pre: "Journal license: ", valueFunction: doaj.fieldRender.journalLicense}], + [{valueFunction: doaj.fieldRender.links}], + [ + {valueFunction: doaj.fieldRender.readOnlyJournal({readOnlyJournalUrl: doaj.associateApplicationsSearchConfig.readOnlyJournalUrl})}, + {valueFunction: doaj.fieldRender.editSuggestion({editUrl: doaj.associateApplicationsSearchConfig.applicationEditUrl})} ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - 'admin.application_status.exact': 'Status', - 'index.application_type.exact': "Record type", - 'index.classification.exact' : 'Classification', - 'index.language.exact' : 'Language', - 'index.country.exact' : 'Country', - 'index.subject.exact' : 'Subject', - 'bibjson.publisher.name.exact' : 'Publisher', - 'index.license.exact' : 'License', - "index.has_apc.exact" : "Charges?" - } + ] }) - ]; + }), + fieldDisplays: { + 'admin.application_status.exact': 'Status', + 'index.application_type.exact': 'Record type', + 'index.classification.exact': 'Classification', + 'index.language.exact': 'Language', + 'index.country.exact': 'Country', + 'index.subject.exact': 'Subject', + 'bibjson.publisher.name.exact': 'Publisher', + 'index.license.exact': 'License', + 'index.has_apc.exact': 'Charges?' + }, + openingQuery: es.newQuery({ + sort: {"field": "admin.date_applied", "order": "asc"} + }) + }); - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - openingQuery : es.newQuery({ - sort: {"field" : "admin.date_applied", "order" : "asc"} - }), - components: components, - 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."); - } - } - }); - doaj.associateApplicationsSearch.activeEdges[selector] = e; - } + doaj.associateApplicationsSearch.activeEdges[selector] = e; } -}); - +} jQuery(document).ready(function($) { doaj.associateApplicationsSearch.init(); diff --git a/portality/static/js/edges/associate.journals.edge.js b/portality/static/js/edges/associate.journals.edge.js index 782990f589..9de1686251 100644 --- a/portality/static/js/edges/associate.journals.edge.js +++ b/portality/static/js/edges/associate.journals.edge.js @@ -1,352 +1,93 @@ -$.extend(true, doaj, { +doaj.associateJournalsSearch = { + activeEdges : {}, - associateJournalsSearch : { - activeEdges : {}, + init : function(params) { + if (!params) { params = {} } - init : function(params) { - if (!params) { params = {} } + var selector = params.selector || "#associate_journals"; - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#associate_journals"; - var search_url = current_scheme + "//" + current_domain + doaj.associateJournalsSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - // facets + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.associateJournalsSearchConfig.searchPath), + facets: [ doaj.facets.inDOAJ(), - edges.newRefiningANDTermSelector({ - id: "owner", - category: "facet", - field: "admin.owner.exact", - display: "Owner", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "author_pays", - category: "facet", - field: "index.has_apc.exact", - display: "Publication charges?", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "journal_license", - category: "facet", - field: "index.license.exact", - display: "Journal license", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "publisher", - category: "facet", - field: "bibjson.publisher.name.exact", - display: "Publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "classification", - category: "facet", - field: "index.classification.exact", - display: "Classification", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "subject", - category: "facet", - field: "index.subject.exact", - display: "Subject", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "journal_language", - category: "facet", - field: "index.language.exact", - display: "Journal language", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "country_publisher", - category: "facet", - field: "index.country.exact", - display: "Country of publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "journal_title", - category: "facet", - field: "index.title.exact", - display: "Journal title", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Date added to DOAJ','field':'created_date'}, - {'display':'Last updated','field':'last_manual_update'}, // Note: last updated on UI points to when last updated by a person (via form) - {'display':'Title','field':'index.unpunctitle.exact'} - ], - fieldOptions: [ - {'display':'Owner','field':'admin.owner'}, - {'display':'Title','field':'index.title'}, - {'display':'Alternative Title','field':'bibjson.alternative_title'}, - {'display':'Subject','field':'index.subject'}, - {'display':'Classification','field':'index.classification'}, - {'display':'ISSN', 'field':'index.issn.exact'}, - {'display':'Country of publisher','field':'index.country'}, - {'display':'Journal language','field':'index.language'}, - {'display':'Publisher','field':'bibjson.publisher.name'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search Journals assigned to you" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newResultsFieldsByRowRenderer({ - noResultsText: "

There are no journals assigned to you that meet the search criteria

" + - "

If you have not set any search criteria, this means there are no journals currently assigned to you

", - rowDisplay : [ - [ - { - valueFunction: doaj.fieldRender.titleField - } - ], - [ - { - "pre": 'Alternative title: ', - "field": "bibjson.alternative_title", - "post": "" - } - ], - [ - { - "pre" : "In DOAJ?: ", - valueFunction: doaj.fieldRender.inDoaj - } - ], - [ - { - "pre" : "Owner: ", - valueFunction: doaj.fieldRender.owner - } - ], - [ - { - valueFunction : doaj.fieldRender.issns - } - ], - [ - { - "pre": "Date added to DOAJ: ", - valueFunction: doaj.fieldRender.createdDateWithTime - } - ], - [ - { - "pre": "Last updated: ", - valueFunction: doaj.fieldRender.lastManualUpdate - } - ], - [ - { - valueFunction: doaj.fieldRender.links - } - ], - [ - { - "pre": "License: ", - valueFunction: doaj.fieldRender.journalLicense - } - ], - [ - { - "pre": "Publisher: ", - "field": "bibjson.publisher.name" - } - ], - [ - { - "pre": "Publication charges?: ", - valueFunction: doaj.fieldRender.authorPays - } - ], - [ - { - "pre": "Classification: ", - "field": "index.classification" - } - ], - [ - { - "pre": "Keywords: ", - "field": "bibjson.keywords" - } - ], - [ - { - "pre": "Country: ", - valueFunction: doaj.fieldRender.countryName - } - ], - [ - { - "pre": "Language: ", - "field": "bibjson.language" - } - ], - [ - { - valueFunction: doaj.fieldRender.editJournal({editUrl: doaj.associateJournalsSearchConfig.journalEditUrl}) - } - ] - ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "admin.in_doaj" : "In DOAJ?", - "admin.owner.exact" : "Owner", - "index.license.exact" : "License", - "bibjson.publisher.name.exact" : "Publisher", - "index.classification.exact" : "Classification", - "index.subject.exact" : "Subject", - "index.language.exact" : "Language", - "index.country.exact" : "Country", - "index.title.exact" : "Title", - "index.has_apc.exact" : "Charges?" - }, - valueMaps : { - "admin.in_doaj" : { - true : "True", - false : "False" - } - } + doaj.components.refiningAndFacet({id: "owner", field: "admin.owner.exact", display: "Owner", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "author_pays", field: "index.has_apc.exact", display: "Publication charges?", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_license", field: "index.license.exact", display: "Journal license", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "publisher", field: "bibjson.publisher.name.exact", display: "Publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "classification", field: "index.classification.exact", display: "Classification", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "subject", field: "index.subject.exact", display: "Subject", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_language", field: "index.language.exact", display: "Journal language", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "country_publisher", field: "index.country.exact", display: "Country of publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_title", field: "index.title.exact", display: "Journal title", deactivateThreshold: 1}) + ], + sortOptions: [ + {'display': 'Date added to DOAJ', 'field': 'created_date'}, + {'display': 'Last updated', 'field': 'last_manual_update'}, + {'display': 'Title', 'field': 'index.unpunctitle.exact'} + ], + fieldOptions: [ + {'display': 'Owner', 'field': 'admin.owner'}, + {'display': 'Title', 'field': 'index.title'}, + {'display': 'Alternative Title', 'field': 'bibjson.alternative_title'}, + {'display': 'Subject', 'field': 'index.subject'}, + {'display': 'Classification', 'field': 'index.classification'}, + {'display': 'ISSN', 'field': 'index.issn.exact'}, + {'display': 'Country of publisher', 'field': 'index.country'}, + {'display': 'Journal language', 'field': 'index.language'}, + {'display': 'Publisher', 'field': 'bibjson.publisher.name'} + ], + searchPlaceholder: "Search Journals assigned to you", + sizeOptions: [10, 25, 50, 100], + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + noResultsText: "

There are no journals assigned to you that meet the search criteria

" + + "

If you have not set any search criteria, this means there are no journals currently assigned to you

", + rowDisplay: [ + [{valueFunction: doaj.fieldRender.titleField}], + [{pre: 'Alternative title: ', field: "bibjson.alternative_title", post: ""}], + [{pre: "In DOAJ?: ", valueFunction: doaj.fieldRender.inDoaj}], + [{pre: "Owner: ", valueFunction: doaj.fieldRender.owner}], + [{valueFunction: doaj.fieldRender.issns}], + [{pre: "Date added to DOAJ: ", valueFunction: doaj.fieldRender.createdDateWithTime}], + [{pre: "Last updated: ", valueFunction: doaj.fieldRender.lastManualUpdate}], + [{valueFunction: doaj.fieldRender.links}], + [{pre: "License: ", valueFunction: doaj.fieldRender.journalLicense}], + [{pre: "Publisher: ", field: "bibjson.publisher.name"}], + [{pre: "Publication charges?: ", valueFunction: doaj.fieldRender.authorPays}], + [{pre: "Classification: ", field: "index.classification"}], + [{pre: "Keywords: ", field: "bibjson.keywords"}], + [{pre: "Country: ", valueFunction: doaj.fieldRender.countryName}], + [{pre: "Language: ", field: "bibjson.language"}], + [{valueFunction: doaj.fieldRender.editJournal({editUrl: doaj.associateJournalsSearchConfig.journalEditUrl})}] + ] }) - ]; + }), + fieldDisplays: { + "admin.in_doaj": "In DOAJ?", + "admin.owner.exact": "Owner", + "index.license.exact": "License", + "bibjson.publisher.name.exact": "Publisher", + "index.classification.exact": "Classification", + "index.subject.exact": "Subject", + "index.language.exact": "Language", + "index.country.exact": "Country", + "index.title.exact": "Title", + "index.has_apc.exact": "Charges?" + }, + valueMaps: { + "admin.in_doaj": {true: "True", false: "False"} + }, + openingQuery: es.newQuery({ + sort: [{field: "created_date", order: "desc"}] + }) + }); - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - components: components, - openingQuery: es.newQuery({ - sort: [{field: "created_date", order: "desc"}] - }), - 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."); - } - } - }); - doaj.associateJournalsSearch.activeEdges[selector] = e; - } + doaj.associateJournalsSearch.activeEdges[selector] = e; } -}); - +} jQuery(document).ready(function($) { doaj.associateJournalsSearch.init(); diff --git a/portality/static/js/edges/editor.groupapplications.edge.js b/portality/static/js/edges/editor.groupapplications.edge.js index 6e7e9f5578..41dcfc0811 100644 --- a/portality/static/js/edges/editor.groupapplications.edge.js +++ b/portality/static/js/edges/editor.groupapplications.edge.js @@ -1,409 +1,104 @@ -$.extend(true, doaj, { +doaj.editorGroupApplicationsSearch = { + activeEdges : {}, - editorGroupApplicationsSearch : { - activeEdges : {}, - - editorStatusMap: function(value) { - if (doaj.valueMaps.applicationStatus.hasOwnProperty(value)) { - return doaj.valueMaps.applicationStatus[value]; - } - return value; - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#group_applications"; - var search_url = current_scheme + "//" + current_domain + doaj.editorGroupApplicationsSearchConfig.searchPath; + editorStatusMap: function(value) { + if (doaj.valueMaps.applicationStatus.hasOwnProperty(value)) { + return doaj.valueMaps.applicationStatus[value]; + } + return value; + }, - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); + init : function(params) { + if (!params) { params = {} } - var components = [ - doaj.components.searchingNotification(), + var selector = params.selector || "#group_applications"; - // facets + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.editorGroupApplicationsSearchConfig.searchPath), + facets: [ doaj.facets.openOrClosed(), - - edges.newRefiningANDTermSelector({ - id: "application_status", - category: "facet", - field: "admin.application_status.exact", - display: "Application Status", - deactivateThreshold: 1, - valueFunction : doaj.editorGroupApplicationsSearch.editorStatusMap, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - // edges.newRefiningANDTermSelector({ - // id: "application_type", - // category: "facet", - // field: "index.application_type.exact", - // display: "Record type", - // deactivateThreshold: 1, - // renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - // controls: true, - // open: false, - // togglable: true, - // countFormat: countFormat, - // hideInactive: true - // }) - // }), - edges.newRefiningANDTermSelector({ - id: "has_editor", - category: "facet", - field: "index.has_editor.exact", - display: "Has Associate Editor?", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "editor_group", - category: "facet", - field: "admin.editor_group.exact", - display: "Editor Group", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "editor", - category: "facet", - field: "admin.editor.exact", - display: "Editor", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "author_pays", - category: "facet", - field: "index.has_apc.exact", - display: "Publication charges?", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "classification", - category: "facet", - field: "index.classification.exact", - display: "Classification", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "language", - category: "facet", - field: "index.language.exact", - display: "Journal language", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "country_publisher", - category: "facet", - field: "index.country.exact", - display: "Country of publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "subject", - category: "facet", - field: "index.subject.exact", - display: "Subject", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "publisher", - category: "facet", - field: "bibjson.publisher.name.exact", - display: "Publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "journal_license", - category: "facet", - field: "index.license.exact", - display: "Journal license", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Date applied','field':'admin.date_applied'}, - {'display':'Last updated','field':'last_manual_update'}, // Note: last updated on UI points to when last updated by a person (via form) - {'display':'Title','field':'index.unpunctitle.exact'} - ], - fieldOptions: [ - {'display':'Title','field':'index.title'}, - {'display':'Keywords','field':'bibjson.keywords'}, - {'display':'Classification','field':'index.classification'}, - {'display':'ISSN', 'field':'index.issn.exact'}, - {'display':'Country of publisher','field':'index.country'}, - {'display':'Journal language','field':'index.language'}, - {'display':'Publisher','field':'bibjson.publisher.name'}, - {'display':'Alternative Title','field':'bibjson.alternative_title'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search Applications in your Group(s)" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newResultsFieldsByRowRenderer({ - noResultsText: "

There are no applications for your editor group(s) that meet the search criteria

" + - "

If you have not set any search criteria, this means there are no applications currently allocated to your group

", - rowDisplay : [ - [ - { - valueFunction: doaj.fieldRender.titleField - } - ], - [ - { - "pre": 'Alternative title: ', - "field": "bibjson.alternative_title", - "post": "" - } - ], - [ - { - "pre": "Date applied: ", - valueFunction: doaj.fieldRender.suggestedOn - } - ], - [ - { - "pre": "Last updated: ", - valueFunction: doaj.fieldRender.lastManualUpdate - } - ], - [ - { - valueFunction: doaj.fieldRender.issns - } - ], - [ - { - "pre" : "Application status: ", - valueFunction: doaj.fieldRender.applicationStatus - } - ], - [ - { - "pre" : "Editor Group: ", - "field" : "admin.editor_group" - } - ], - [ - { - "pre" : "Editor: ", - "field" : "admin.editor" - } - ], - [ - { - "pre": "Classification: ", - "field": "index.classification" - } - ], - [ - { - "pre": "Keywords: ", - "field": "bibjson.keywords" - } - ], - [ - { - "pre": "Publisher: ", - "field": "bibjson.publisher.name" - } - ], - [ - { - "pre": "Publication charges?: ", - valueFunction: doaj.fieldRender.authorPays - } - ], - [ - { - "pre": "Country of publisher: ", - valueFunction: doaj.fieldRender.countryName - } - ], - [ - { - "pre": "Journal language: ", - "field": "bibjson.language" - } - ], - [ - { - "pre": "Journal license: ", - valueFunction: doaj.fieldRender.journalLicense - } - ], - [ - { - valueFunction: doaj.fieldRender.links - } - ], - [ - { - valueFunction: doaj.fieldRender.readOnlyJournal({ - readOnlyJournalUrl : doaj.editorGroupApplicationsSearchConfig.readOnlyJournalUrl - }) - }, - { - valueFunction: doaj.fieldRender.editSuggestion({ - editUrl : doaj.editorGroupApplicationsSearchConfig.applicationEditUrl - }) - } - ] + doaj.components.refiningAndFacet({id: "application_status", field: "admin.application_status.exact", display: "Application Status", deactivateThreshold: 1, valueFunction: doaj.editorGroupApplicationsSearch.editorStatusMap}), + doaj.components.refiningAndFacet({id: "has_editor", field: "index.has_editor.exact", display: "Has Associate Editor?", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "editor_group", field: "admin.editor_group.exact", display: "Editor Group", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "editor", field: "admin.editor.exact", display: "Editor", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "author_pays", field: "index.has_apc.exact", display: "Publication charges?", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "classification", field: "index.classification.exact", display: "Classification", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "language", field: "index.language.exact", display: "Journal language", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "country_publisher", field: "index.country.exact", display: "Country of publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "subject", field: "index.subject.exact", display: "Subject", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "publisher", field: "bibjson.publisher.name.exact", display: "Publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_license", field: "index.license.exact", display: "Journal license", deactivateThreshold: 1}) + ], + sortOptions: [ + {'display': 'Date applied', 'field': 'admin.date_applied'}, + {'display': 'Last updated', 'field': 'last_manual_update'}, + {'display': 'Title', 'field': 'index.unpunctitle.exact'} + ], + fieldOptions: [ + {'display': 'Title', 'field': 'index.title'}, + {'display': 'Keywords', 'field': 'bibjson.keywords'}, + {'display': 'Classification', 'field': 'index.classification'}, + {'display': 'ISSN', 'field': 'index.issn.exact'}, + {'display': 'Country of publisher', 'field': 'index.country'}, + {'display': 'Journal language', 'field': 'index.language'}, + {'display': 'Publisher', 'field': 'bibjson.publisher.name'}, + {'display': 'Alternative Title', 'field': 'bibjson.alternative_title'} + ], + searchPlaceholder: "Search Applications in your Group(s)", + sizeOptions: [10, 25, 50, 100], + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + noResultsText: "

There are no applications for your editor group(s) that meet the search criteria

" + + "

If you have not set any search criteria, this means there are no applications currently allocated to your group

", + rowDisplay: [ + [{valueFunction: doaj.fieldRender.titleField}], + [{pre: 'Alternative title: ', field: "bibjson.alternative_title", post: ""}], + [{pre: "Date applied: ", valueFunction: doaj.fieldRender.suggestedOn}], + [{pre: "Last updated: ", valueFunction: doaj.fieldRender.lastManualUpdate}], + [{valueFunction: doaj.fieldRender.issns}], + [{pre: "Application status: ", valueFunction: doaj.fieldRender.applicationStatus}], + [{pre: "Editor Group: ", field: "admin.editor_group"}], + [{pre: "Editor: ", field: "admin.editor"}], + [{pre: "Classification: ", field: "index.classification"}], + [{pre: "Keywords: ", field: "bibjson.keywords"}], + [{pre: "Publisher: ", field: "bibjson.publisher.name"}], + [{pre: "Publication charges?: ", valueFunction: doaj.fieldRender.authorPays}], + [{pre: "Country of publisher: ", valueFunction: doaj.fieldRender.countryName}], + [{pre: "Journal language: ", field: "bibjson.language"}], + [{pre: "Journal license: ", valueFunction: doaj.fieldRender.journalLicense}], + [{valueFunction: doaj.fieldRender.links}], + [ + {valueFunction: doaj.fieldRender.readOnlyJournal({readOnlyJournalUrl: doaj.editorGroupApplicationsSearchConfig.readOnlyJournalUrl})}, + {valueFunction: doaj.fieldRender.editSuggestion({editUrl: doaj.editorGroupApplicationsSearchConfig.applicationEditUrl})} ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - 'admin.application_status.exact': 'Application Status', - 'index.application_type.exact' : 'Record type', - 'index.has_editor.exact' : 'Has Associate Editor?', - 'admin.editor_group.exact' : 'Editor Group', - 'admin.editor.exact' : 'Editor', - 'index.classification.exact' : 'Classification', - 'index.language.exact' : 'Journal language', - 'index.country.exact' : 'Country of publisher', - 'index.subject.exact' : 'Subject', - 'bibjson.publisher.name.exact' : 'Publisher', - 'index.license.exact' : 'Journal license', - "index.has_apc.exact" : "Publication charges?" - } + ] }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - openingQuery : es.newQuery({ - sort: {"field" : "admin.date_applied", "order" : "asc"} - }), - components: components, - 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."); - } - } - }); - doaj.editorGroupApplicationsSearch.activeEdges[selector] = e; - } + }), + fieldDisplays: { + 'admin.application_status.exact': 'Application Status', + 'index.application_type.exact': 'Record type', + 'index.has_editor.exact': 'Has Associate Editor?', + 'admin.editor_group.exact': 'Editor Group', + 'admin.editor.exact': 'Editor', + 'index.classification.exact': 'Classification', + 'index.language.exact': 'Journal language', + 'index.country.exact': 'Country of publisher', + 'index.subject.exact': 'Subject', + 'bibjson.publisher.name.exact': 'Publisher', + 'index.license.exact': 'Journal license', + 'index.has_apc.exact': 'Publication charges?' + }, + openingQuery: es.newQuery({ + sort: {"field": "admin.date_applied", "order": "asc"} + }) + }); + + doaj.editorGroupApplicationsSearch.activeEdges[selector] = e; } -}); +} jQuery(document).ready(function($) { diff --git a/portality/static/js/edges/editor.groupjournals.edge.js b/portality/static/js/edges/editor.groupjournals.edge.js index 277c9b02c4..1f5ae79998 100644 --- a/portality/static/js/edges/editor.groupjournals.edge.js +++ b/portality/static/js/edges/editor.groupjournals.edge.js @@ -1,409 +1,101 @@ -$.extend(true, doaj, { +doaj.editorGroupJournalsSearch = { + activeEdges : {}, - editorGroupJournalsSearch : { - activeEdges : {}, + init : function(params) { + if (!params) { params = {} } - init : function(params) { - if (!params) { params = {} } + var selector = params.selector || "#group_journals"; - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#group_journals"; - var search_url = current_scheme + "//" + current_domain + doaj.editorGroupJournalsSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - // facets + var e = doaj.components.makeSearch({ + selector: selector, + searchUrl: doaj.edgeUtil.url.build(doaj.editorGroupJournalsSearchConfig.searchPath), + facets: [ doaj.facets.inDOAJ(), - edges.newRefiningANDTermSelector({ - id: "owner", - category: "facet", - field: "admin.owner.exact", - display: "Owner", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "has_associate_editor", - category: "facet", - field: "index.has_editor.exact", - display: "Has Associate Editor?", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "editor_group", - category: "facet", - field: "admin.editor_group.exact", - display: "Editor Group", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "associate_editor", - category: "facet", - field: "admin.editor.exact", - display: "Associate Editor", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "author_pays", - category: "facet", - field: "index.has_apc.exact", - display: "Publication charges?", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "journal_license", - category: "facet", - field: "index.license.exact", - display: "Journal license", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "publisher", - category: "facet", - field: "bibjson.publisher.name.exact", - display: "Publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "classification", - category: "facet", - field: "index.classification.exact", - display: "Classification", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "subject", - category: "facet", - field: "index.subject.exact", - display: "Subject", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "journal_language", - category: "facet", - field: "index.language.exact", - display: "Journal language", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "country_publisher", - category: "facet", - field: "index.country.exact", - display: "Country of publisher", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - edges.newRefiningANDTermSelector({ - id: "journal_title", - category: "facet", - field: "index.title.exact", - display: "Journal title", - deactivateThreshold: 1, - renderer: edges.bs3.newRefiningANDTermSelectorRenderer({ - controls: true, - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true - }) - }), - - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - sortOptions: [ - {'display':'Date added to DOAJ','field':'created_date'}, - {'display':'Last updated','field':'last_manual_update'}, // Note: last updated on UI points to when last updated by a person (via form) - {'display':'Title','field':'index.unpunctitle.exact'} - ], - fieldOptions: [ - {'display':'Owner','field':'admin.owner'}, - {'display':'Title','field':'index.title'}, - {'display':'Alternative Title','field':'bibjson.alternative_title'}, - {'display':'Subject','field':'index.subject'}, - {'display':'Classification','field':'index.classification'}, - {'display':'ISSN', 'field':'index.issn.exact'}, - {'display':'Country of publisher','field':'index.country'}, - {'display':'Journal language','field':'index.language'}, - {'display':'Publisher','field':'bibjson.publisher.name'} - ], - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search Journals in your Group(s)" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer: edges.bs3.newPagerRenderer({ - sizeOptions: [10, 25, 50, 100], - numberFormat: countFormat, - scroll: false - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: edges.bs3.newResultsFieldsByRowRenderer({ - noResultsText: "

There are no journals for your editor group(s) that meet the search criteria

" + - "

If you have not set any search criteria, this means there are no journals currently allocated to your group

", - rowDisplay : [ - [ - { - valueFunction: doaj.fieldRender.titleField - } - ], - [ - { - "pre": 'Alternative title: ', - "field": "bibjson.alternative_title", - "post": "" - } - ], - [ - { - "pre" : "In DOAJ?: ", - valueFunction: doaj.fieldRender.inDoaj - } - ], - [ - { - "pre" : "Owner: ", - valueFunction: doaj.fieldRender.owner - } - ], - [ - { - "pre" : "Editor Group: ", - "field" : "admin.editor_group" - } - ], - [ - { - "pre" : "Editor: ", - "field" : "admin.editor" - } - ], - [ - { - valueFunction : doaj.fieldRender.issns - } - ], - [ - { - "pre": "Date added to DOAJ: ", - valueFunction: doaj.fieldRender.createdDateWithTime - } - ], - [ - { - "pre": "Last updated: ", - valueFunction: doaj.fieldRender.lastManualUpdate - } - ], - [ - { - valueFunction: doaj.fieldRender.links - } - ], - [ - { - "pre": "License: ", - valueFunction: doaj.fieldRender.journalLicense - } - ], - [ - { - "pre": "Publisher: ", - "field": "bibjson.publisher.name" - } - ], - [ - { - "pre": "Publication charges?: ", - valueFunction: doaj.fieldRender.authorPays - } - ], - [ - { - "pre": "Classification: ", - "field": "index.classification" - } - ], - [ - { - "pre": "Keywords: ", - "field": "bibjson.keywords" - } - ], - [ - { - "pre": "Country: ", - valueFunction: doaj.fieldRender.countryName - } - ], - [ - { - "pre": "Language: ", - "field": "bibjson.language" - } - ], - [ - { - valueFunction: doaj.fieldRender.editJournal({editUrl: doaj.editorGroupJournalsSearchConfig.journalEditUrl}) - } - ] - ] - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - "admin.in_doaj" : "In DOAJ?", - "admin.owner.exact" : "Owner", - "index.has_editor.exact" : "Associate Editor?", - "admin.editor_group.exact" : "Editor group", - "admin.editor.exact" : "Associate Editor", - "index.license.exact" : "License", - "bibjson.publisher.name.exact" : "Publisher", - "index.classification.exact" : "Classification", - "index.subject.exact" : "Subject", - "index.language.exact" : "Language", - "index.country.exact" : "Country", - "index.title.exact" : "Title", - "index.has_apc.exact" : "Charges?" - }, - valueMaps : { - "admin.in_doaj" : { - true : "True", - false : "False" - } - } + doaj.components.refiningAndFacet({id: "owner", field: "admin.owner.exact", display: "Owner", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "has_associate_editor", field: "index.has_editor.exact", display: "Has Associate Editor?", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "editor_group", field: "admin.editor_group.exact", display: "Editor Group", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "associate_editor", field: "admin.editor.exact", display: "Associate Editor", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "author_pays", field: "index.has_apc.exact", display: "Publication charges?", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_license", field: "index.license.exact", display: "Journal license", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "publisher", field: "bibjson.publisher.name.exact", display: "Publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "classification", field: "index.classification.exact", display: "Classification", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "subject", field: "index.subject.exact", display: "Subject", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_language", field: "index.language.exact", display: "Journal language", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "country_publisher", field: "index.country.exact", display: "Country of publisher", deactivateThreshold: 1}), + doaj.components.refiningAndFacet({id: "journal_title", field: "index.title.exact", display: "Journal title", deactivateThreshold: 1}) + ], + sortOptions: [ + {'display': 'Date added to DOAJ', 'field': 'created_date'}, + {'display': 'Last updated', 'field': 'last_manual_update'}, + {'display': 'Title', 'field': 'index.unpunctitle.exact'} + ], + fieldOptions: [ + {'display': 'Owner', 'field': 'admin.owner'}, + {'display': 'Title', 'field': 'index.title'}, + {'display': 'Alternative Title', 'field': 'bibjson.alternative_title'}, + {'display': 'Subject', 'field': 'index.subject'}, + {'display': 'Classification', 'field': 'index.classification'}, + {'display': 'ISSN', 'field': 'index.issn.exact'}, + {'display': 'Country of publisher', 'field': 'index.country'}, + {'display': 'Journal language', 'field': 'index.language'}, + {'display': 'Publisher', 'field': 'bibjson.publisher.name'} + ], + searchPlaceholder: "Search Journals in your Group(s)", + sizeOptions: [10, 25, 50, 100], + resultsDisplay: edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: edges.bs3.newResultsFieldsByRowRenderer({ + noResultsText: "

There are no journals for your editor group(s) that meet the search criteria

" + + "

If you have not set any search criteria, this means there are no journals currently allocated to your group

", + rowDisplay: [ + [{valueFunction: doaj.fieldRender.titleField}], + [{pre: 'Alternative title: ', field: "bibjson.alternative_title", post: ""}], + [{pre: "In DOAJ?: ", valueFunction: doaj.fieldRender.inDoaj}], + [{pre: "Owner: ", valueFunction: doaj.fieldRender.owner}], + [{pre: "Editor Group: ", field: "admin.editor_group"}], + [{pre: "Editor: ", field: "admin.editor"}], + [{valueFunction: doaj.fieldRender.issns}], + [{pre: "Date added to DOAJ: ", valueFunction: doaj.fieldRender.createdDateWithTime}], + [{pre: "Last updated: ", valueFunction: doaj.fieldRender.lastManualUpdate}], + [{valueFunction: doaj.fieldRender.links}], + [{pre: "License: ", valueFunction: doaj.fieldRender.journalLicense}], + [{pre: "Publisher: ", field: "bibjson.publisher.name"}], + [{pre: "Publication charges?: ", valueFunction: doaj.fieldRender.authorPays}], + [{pre: "Classification: ", field: "index.classification"}], + [{pre: "Keywords: ", field: "bibjson.keywords"}], + [{pre: "Country: ", valueFunction: doaj.fieldRender.countryName}], + [{pre: "Language: ", field: "bibjson.language"}], + [{valueFunction: doaj.fieldRender.editJournal({editUrl: doaj.editorGroupJournalsSearchConfig.journalEditUrl})}] + ] }) - ]; + }), + fieldDisplays: { + "admin.in_doaj": "In DOAJ?", + "admin.owner.exact": "Owner", + "index.has_editor.exact": "Associate Editor?", + "admin.editor_group.exact": "Editor group", + "admin.editor.exact": "Associate Editor", + "index.license.exact": "License", + "bibjson.publisher.name.exact": "Publisher", + "index.classification.exact": "Classification", + "index.subject.exact": "Subject", + "index.language.exact": "Language", + "index.country.exact": "Country", + "index.title.exact": "Title", + "index.has_apc.exact": "Charges?" + }, + valueMaps: { + "admin.in_doaj": {true: "True", false: "False"} + }, + openingQuery: es.newQuery({ + sort: [{field: "created_date", order: "desc"}] + }) + }); - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: true, - components: components, - openingQuery: es.newQuery({ - sort: [{field: "created_date", order: "desc"}] - }), - 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."); - } - } - }); - doaj.editorGroupJournalsSearch.activeEdges[selector] = e; - } + doaj.editorGroupJournalsSearch.activeEdges[selector] = e; } -}); - +} jQuery(document).ready(function($) { doaj.editorGroupJournalsSearch.init(); diff --git a/portality/static/js/edges/notifications.edge.js b/portality/static/js/edges/notifications.edge.js index 0b70fe52f1..86747aa7fc 100644 --- a/portality/static/js/edges/notifications.edge.js +++ b/portality/static/js/edges/notifications.edge.js @@ -2,255 +2,247 @@ // ~~-> Notifications:Model ~~ // ~~-> Elasticsearch:Technology ~~ // ~~-> Notifications:Feature ~~ -$.extend(true, doaj, { +doaj.notificationsSearch = { + activeEdges: {}, - notificationsSearch: { - activeEdges: {}, + seen_url: "/dashboard/notifications/{notification_id}/seen", - seen_url: "/dashboard/notifications/{notification_id}/seen", - - icons: { - alert: ` - - - `, - finished: ` - - - `, - status_change: ` - - `, - assign: ` - - - `, - unknown: ` - - + icons: { + alert: ` + + `, - seen: ` - - `, - unseen: ` - - ` - }, - - classifications: { - alert: "Requires attention", - finished: "Task has completed", - status_change: "Application status change", - assign: "Assigned to user" - }, - - init: function (params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#notifications"; - var search_url = current_scheme + "//" + current_domain + doaj.notificationsSearchConfig.searchPath; - - var components = [ - doaj.components.searchingNotification(), - - // configure the search controller - edges.newFullSearchController({ - id: "search-controller", - category: "controller", - defaultOperator: "AND", - renderer: doaj.renderers.newFullSearchControllerRenderer({ - freetextSubmitDelay: -1, - searchButton: true, - searchPlaceholder: "Search All Notifications", - clearButton: false - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - doaj.components.pager("top-pager", "top-pager"), - doaj.components.pager("bottom-pager", "bottom-pager"), - - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer: doaj.notificationsSearch.newNotificationResultRenderer() - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: {} + finished: ` + + + `, + status_change: ` + + `, + assign: ` + + + `, + unknown: ` + + + `, + seen: ` + + `, + unseen: ` + + ` + }, + + classifications: { + alert: "Requires attention", + finished: "Task has completed", + status_change: "Application status change", + assign: "Assigned to user" + }, + + init: function (params) { + if (!params) { params = {} } + + var selector = params.selector || "#notifications"; + + var components = [ + doaj.components.searchingNotification(), + + // configure the search controller + edges.newFullSearchController({ + id: "search-controller", + category: "controller", + defaultOperator: "AND", + renderer: doaj.renderers.newFullSearchControllerRenderer({ + freetextSubmitDelay: -1, + searchButton: true, + searchPlaceholder: "Search All Notifications", + clearButton: false }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: edges.bs3.newFacetview(), - search_url: search_url, - manageUrl: false, - openingQuery : es.newQuery({ - sort: {"field" : "created_date", "order" : "desc"}, - size: 25 - }), - components: components, - 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."); - }, - "edges:post-render": function() { - $(".notification_action_button").on("click", doaj.notifications.notificationClicked); - } + }), + + // the pager, with the explicitly set page size options (see the openingQuery for the initial size) + doaj.components.pager("top-pager", "top-pager"), + doaj.components.pager("bottom-pager", "bottom-pager"), + + edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: doaj.notificationsSearch.newNotificationResultRenderer() + }), + + // selected filters display, with all the fields given their display names + edges.newSelectedFilters({ + id: "selected-filters", + category: "selected-filters", + fieldDisplays: {} + }) + ]; + + var e = edges.newEdge({ + selector: selector, + template: edges.bs3.newFacetview(), + search_url: doaj.edgeUtil.url.build(doaj.notificationsSearchConfig.searchPath), + manageUrl: false, + openingQuery : es.newQuery({ + sort: {"field" : "created_date", "order" : "desc"}, + size: 25 + }), + components: components, + 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."); + }, + "edges:post-render": function() { + $(".notification_action_button").on("click", doaj.notifications.notificationClicked); } - }); - doaj.notificationsSearch.activeEdges[selector] = e; - }, - - newNotificationResultRenderer : function(params) { - return edges.instantiate(doaj.notificationsSearch.NotificationResultRenderer, params, edges.newRenderer); - }, - NotificationResultRenderer : function(params) { - this.namespace = "doaj-notifications-search"; - - this.currentQueryString = ""; - - this.markdownConverter = new showdown.Converter({ - literalMidWordUnderscores: true - }); - - this.actionClass = false; - this.markAsSeenClass = false; - this.seenStatusSpan = false; - - this.draw = function () { - if (this.component.edge.currentQuery){ - let qs = this.component.edge.currentQuery.getQueryString(); - if (qs) { - this.currentQueryString = qs.queryString || ""; - } - } - var frag = "
  • You searched for ‘"; - frag += edges.escapeHtml(this.currentQueryString); - frag += "’ and we found no results.

    "; - frag += "

    Please try the following:

  • \ - "; - - if (this.component.results === false) { - frag = ""; + } + }); + doaj.notificationsSearch.activeEdges[selector] = e; + }, + + newNotificationResultRenderer : function(params) { + return edges.instantiate(doaj.notificationsSearch.NotificationResultRenderer, params, edges.newRenderer); + }, + NotificationResultRenderer : function(params) { + this.namespace = "doaj-notifications-search"; + + this.currentQueryString = ""; + + this.markdownConverter = new showdown.Converter({ + literalMidWordUnderscores: true + }); + + this.actionClass = false; + this.markAsSeenClass = false; + this.seenStatusSpan = false; + + this.draw = function () { + if (this.component.edge.currentQuery){ + let qs = this.component.edge.currentQuery.getQueryString(); + if (qs) { + this.currentQueryString = qs.queryString || ""; } + } + var frag = "
  • You searched for ‘"; + frag += edges.escapeHtml(this.currentQueryString); + frag += "’ and we found no results.

    "; + frag += "

    Please try the following:

  • \ + "; + + if (this.component.results === false) { + frag = ""; + } + + this.actionClass = edges.css_classes(this.namespace, "action", this); + this.markAsSeenClass = edges.css_classes(this.namespace, "seen", this); + this.seenStatusSpan = edges.css_classes(this.namespace, "seen_status", this); - this.actionClass = edges.css_classes(this.namespace, "action", this); - this.markAsSeenClass = edges.css_classes(this.namespace, "seen", this); - this.seenStatusSpan = edges.css_classes(this.namespace, "seen_status", this); - - var results = this.component.results; - if (results && results.length > 0) { - // now call the result renderer on each result to build the records - frag = ""; - for (var i = 0; i < results.length; i++) { - frag += this._renderResult(results[i]); - } + var results = this.component.results; + if (results && results.length > 0) { + // now call the result renderer on each result to build the records + frag = ""; + for (var i = 0; i < results.length; i++) { + frag += this._renderResult(results[i]); } + } - this.component.context.html(frag); - feather.replace(); + this.component.context.html(frag); + feather.replace(); - let actionSelector = edges.css_class_selector(this.namespace, "action", this); - edges.on(actionSelector, "click", this, "markAsSeen", false, false, false); + let actionSelector = edges.css_class_selector(this.namespace, "action", this); + edges.on(actionSelector, "click", this, "markAsSeen", false, false, false); - let markAsSeenSelector = edges.css_class_selector(this.namespace, "seen", this); - edges.on(markAsSeenSelector, "click", this, "markAsSeen") - }; + let markAsSeenSelector = edges.css_class_selector(this.namespace, "seen", this); + edges.on(markAsSeenSelector, "click", this, "markAsSeen") + }; - this._renderResult = function(notification) { - let seen_icon = this._seenIcon(notification.seen_date); + this._renderResult = function(notification) { + let seen_icon = this._seenIcon(notification.seen_date); - let typeIcon = doaj.notificationsSearch.icons[notification.classification]; - if (!typeIcon) { - typeIcon = doaj.notificationsSearch.icons.unknown; - } + let typeIcon = doaj.notificationsSearch.icons[notification.classification]; + if (!typeIcon) { + typeIcon = doaj.notificationsSearch.icons.unknown; + } - let typeTitle = doaj.notificationsSearch.classifications[notification.classification]; - if (!typeTitle) { - typeTitle = "Notification"; - } + let typeTitle = doaj.notificationsSearch.classifications[notification.classification]; + if (!typeTitle) { + typeTitle = "Notification"; + } - let actionFrag = `No action required` - if (notification.action) { - actionFrag = `See action`; - } else { - if (!notification.seen_date) { - actionFrag += `
    Mark as seen`; - } + let actionFrag = `No action required` + if (notification.action) { + actionFrag = `See action`; + } else { + if (!notification.seen_date) { + actionFrag += `
    Mark as seen`; } - - var body = this.markdownConverter.makeHtml(notification.long); - - var frag = `
    -
    -
    - ${seen_icon} ${typeIcon} -
    -
    -
    -

    ${notification.short}

    -
    -
    - ${body} -
    -
    -
    - - `; - - return frag; - }; - - this._seenIcon = function(seen_date) { - let seenIcon = seen_date ? doaj.notificationsSearch.icons.seen : doaj.notificationsSearch.icons.unseen; - let seenTitle = seen_date ? `Read on ${doaj.dates.humanDate(seen_date)}` : "Unread" - let frag = `${seenIcon}`; - return frag; } - this.markAsSeen = function(element) { - let notificationId = $(element).attr("data-notification-id"); - $.ajax({ - method: "post", - url: doaj.notificationsSearch.seen_url.replace("{notification_id}", notificationId), - contentType: "application/json", - dataType: "jsonp" - }); - let frag = this._seenIcon((new Date()).toString()) - - let row = $(`div[data-notification-id=${notificationId}]`); - - let seenSelector = edges.css_class_selector(this.namespace, "seen_status", this); - let icon = row.find(seenSelector); - icon.html(frag); - - let markSelector = edges.css_class_selector(this.namespace, "seen", this); - row.find(markSelector).remove(); - }; + var body = this.markdownConverter.makeHtml(notification.long); + + var frag = `
    +
    +
    + ${seen_icon} ${typeIcon} +
    +
    +
    +

    ${notification.short}

    +
    +
    + ${body} +
    +
    +
    + + `; + + return frag; + }; + + this._seenIcon = function(seen_date) { + let seenIcon = seen_date ? doaj.notificationsSearch.icons.seen : doaj.notificationsSearch.icons.unseen; + let seenTitle = seen_date ? `Read on ${doaj.dates.humanDate(seen_date)}` : "Unread" + let frag = `${seenIcon}`; + return frag; } - } -}); + this.markAsSeen = function(element) { + let notificationId = $(element).attr("data-notification-id"); + $.ajax({ + method: "post", + url: doaj.notificationsSearch.seen_url.replace("{notification_id}", notificationId), + contentType: "application/json", + dataType: "jsonp" + }); + let frag = this._seenIcon((new Date()).toString()) + + let row = $(`div[data-notification-id=${notificationId}]`); + + let seenSelector = edges.css_class_selector(this.namespace, "seen_status", this); + let icon = row.find(seenSelector); + icon.html(frag); + + let markSelector = edges.css_class_selector(this.namespace, "seen", this); + row.find(markSelector).remove(); + }; + } +} jQuery(document).ready(function($) { doaj.notificationsSearch.init(); diff --git a/portality/static/js/edges/public.article.edge.js b/portality/static/js/edges/public.article.edge.js index bb7157194f..3f52c563b4 100644 --- a/portality/static/js/edges/public.article.edge.js +++ b/portality/static/js/edges/public.article.edge.js @@ -1,229 +1,217 @@ -$.extend(true, doaj, { +doaj.publicSearch = { + activeEdges : {}, - publicSearch : { - activeEdges : {}, - - embedSnippet : function(renderer) { - var snip = `
    `; - var query = renderer.component.edge.cloneQuery(); - query.addMust(es.newTermFilter({field: "_type", value: "article"})) - query = query.objectify({ - include_query_string : true, - include_filters : true, - include_paging : true, - include_sort : true, - include_fields : false, - include_aggregations : false - }); - snip = snip.replace(/{{QUERY}}/g, JSON.stringify(query)); - return snip; - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#public-article-search"; - var search_url = current_scheme + "//" + current_domain + doaj.publicSearchConfig.publicSearchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - edges.newFullSearchController({ - id: "search-input-bar", - category: "controller", - fieldOptions : [ - {'display':'Title','field':'bibjson.title'}, - {'display':'Abstract','field':'bibjson.abstract'}, - {'display':'Keywords','field':'bibjson.keywords'}, - {'display':'Subject','field':'index.classification'}, - {'display':'Author','field':'bibjson.author.name'}, - {'display':'ORCID','field':'bibjson.author.orcid_id'}, - {'display':'DOI', 'field' : 'bibjson.identifier.id'}, - {'display':'Language','field':'index.language'} - ], - defaultOperator : "AND", - renderer : doaj.renderers.newSearchBarRenderer({ - freetextSubmitDelay: -1, - clearButton: false, - searchButton: true, - searchPlaceholder: "", - }) - }), - - edges.newPager({ - id: "result-count", - category: "pager", - renderer : edges.bs3.newResultCountRenderer({ - countFormat: countFormat, - suffix: " indexed articles", - htmlContainerWrapper: false - }) - }), - - // Subject Browser - /////////////////////////////////// - doaj.components.subjectBrowser({ - tree: doaj.publicSearchConfig.lccTree - }), - - edges.newORTermSelector({ - id: "journals", - category: "facet", - field: "bibjson.journal.title.exact", - display: "Journals", - size: 100, - syncCounts: false, - lifecycle: "update", - updateType: "fresh", - orderBy: "count", - orderDir: "desc", - renderer : doaj.renderers.newORTermSelectorRenderer({ - showCount: true, - hideEmpty: true, - open: false, - togglable: true - }) - }), - - edges.newDateHistogramSelector({ - id : "year_published", - category: "facet", - field: "index.date", - interval: "year", - display: "Year of publication", - displayFormatter : function(val) { - return (new Date(parseInt(val))).getUTCFullYear(); - }, - sortFunction : function(values) { - values.reverse(); - return values; - }, - renderer : doaj.renderers.newDateHistogramSelectorRenderer({ - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: false, - hideEmpty: true - }) - }), - - edges.newFullSearchController({ - id: "share_embed", - category: "controller", - urlShortener : doaj.doajUrlShortener, - embedSnippet : doaj.publicSearch.embedSnippet, - renderer: doaj.renderers.newShareEmbedRenderer({ - shareLinkText: ' Share or embed' - }) - }), - - edges.newFullSearchController({ - id: "sort_by", - category: "controller", - sortOptions : [ - {'display':'Added to DOAJ (newest first)','field':'created_date', "dir" : "desc"}, - {'display':'Added to DOAJ (oldest first)','field':'created_date', "dir" : "asc"}, - {'display':'Publication date (most recent first)','field':'index.date', "dir" : "desc"}, - {'display':'Publication date (less recent first)','field':'index.date', "dir" : "asc"}, - {'display':'Title (A-Z)','field':'index.unpunctitle.exact', "dir" : "asc"}, - {'display':'Title (Z-A)','field':'index.unpunctitle.exact', "dir" : "desc"}, - {'display':'Relevance','field':'_score'} - ], - renderer: doaj.renderers.newSortRenderer({ - prefix: "Sort by", - dirSwitcher: false - }) - }), - - edges.newPager({ - id: "rpp", - category: "pager", - renderer : doaj.renderers.newPageSizeRenderer({ - sizeOptions: [50, 100, 200], - sizeLabel: "Results per page" - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays : { - "index.schema_codes_tree.exact" : "Subject", - "bibjson.journal.title.exact" : "Journal", - "index.date" : "Year of publication" - }, - rangeFunctions : { - "index.date" : doaj.valueMaps.displayYearPeriod - }, - valueFunctions : { - "index.schema_codes_tree.exact" : doaj.valueMaps.schemaCodeToNameClosure(doaj.publicSearchConfig.lccTree) - }, - renderer : doaj.renderers.newSelectedFiltersRenderer({}) - }), - - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer : doaj.renderers.newPublicSearchResultRenderer() - }), - - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) + var query = renderer.component.edge.cloneQuery(); + query.addMust(es.newTermFilter({field: "_type", value: "article"})) + query = query.objectify({ + include_query_string : true, + include_filters : true, + include_paging : true, + include_sort : true, + include_fields : false, + include_aggregations : false + }); + snip = snip.replace(/{{QUERY}}/g, JSON.stringify(query)); + return snip; + }, + + init : function(params) { + if (!params) { params = {} } + + var selector = params.selector || "#public-article-search"; + + var components = [ + doaj.components.searchingNotification(), + + edges.newFullSearchController({ + id: "search-input-bar", + category: "controller", + fieldOptions : [ + {'display':'Title','field':'bibjson.title'}, + {'display':'Abstract','field':'bibjson.abstract'}, + {'display':'Keywords','field':'bibjson.keywords'}, + {'display':'Subject','field':'index.classification'}, + {'display':'Author','field':'bibjson.author.name'}, + {'display':'ORCID','field':'bibjson.author.orcid_id'}, + {'display':'DOI', 'field' : 'bibjson.identifier.id'}, + {'display':'Language','field':'index.language'} + ], + defaultOperator : "AND", + renderer : doaj.renderers.newSearchBarRenderer({ + freetextSubmitDelay: -1, + clearButton: false, + searchButton: true, + searchPlaceholder: "", + }) + }), + + edges.newPager({ + id: "result-count", + category: "pager", + renderer : edges.bs3.newResultCountRenderer({ + countFormat: doaj.valueMaps.countFormat, + suffix: " indexed articles", + htmlContainerWrapper: false + }) + }), + + // Subject Browser + /////////////////////////////////// + doaj.components.subjectBrowser({ + tree: doaj.publicSearchConfig.lccTree + }), + + edges.newORTermSelector({ + id: "journals", + category: "facet", + field: "bibjson.journal.title.exact", + display: "Journals", + size: 100, + syncCounts: false, + lifecycle: "update", + updateType: "fresh", + orderBy: "count", + orderDir: "desc", + renderer : doaj.renderers.newORTermSelectorRenderer({ + showCount: true, + hideEmpty: true, + open: false, + togglable: true + }) + }), + + edges.newDateHistogramSelector({ + id : "year_published", + category: "facet", + field: "index.date", + interval: "year", + display: "Year of publication", + displayFormatter : function(val) { + return (new Date(parseInt(val))).getUTCFullYear(); + }, + sortFunction : function(values) { + values.reverse(); + return values; + }, + renderer : doaj.renderers.newDateHistogramSelectorRenderer({ + open: false, + togglable: true, + countFormat: doaj.valueMaps.countFormat, + hideInactive: false, + hideEmpty: true + }) + }), + + edges.newFullSearchController({ + id: "share_embed", + category: "controller", + urlShortener : doaj.doajUrlShortener, + embedSnippet : doaj.publicSearch.embedSnippet, + renderer: doaj.renderers.newShareEmbedRenderer({ + shareLinkText: ' Share or embed' + }) + }), + + edges.newFullSearchController({ + id: "sort_by", + category: "controller", + sortOptions : [ + {'display':'Added to DOAJ (newest first)','field':'created_date', "dir" : "desc"}, + {'display':'Added to DOAJ (oldest first)','field':'created_date', "dir" : "asc"}, + {'display':'Publication date (most recent first)','field':'index.date', "dir" : "desc"}, + {'display':'Publication date (less recent first)','field':'index.date', "dir" : "asc"}, + {'display':'Title (A-Z)','field':'index.unpunctitle.exact', "dir" : "asc"}, + {'display':'Title (Z-A)','field':'index.unpunctitle.exact', "dir" : "desc"}, + {'display':'Relevance','field':'_score'} + ], + renderer: doaj.renderers.newSortRenderer({ + prefix: "Sort by", + dirSwitcher: false }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: doaj.templates.newPublicSearch({ - title: "Articles" - }), - search_url: search_url, - manageUrl : true, - openingQuery: es.newQuery({ - sort: [{"field" : "created_date", "order" : "desc"}], - size: 50 - }), - components : components, - callbacks : { - "edges:query-fail" : function() { - alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); - }, - "edges:post-init" : function() { - feather.replace(); - } + }), + + edges.newPager({ + id: "rpp", + category: "pager", + renderer : doaj.renderers.newPageSizeRenderer({ + sizeOptions: [50, 100, 200], + sizeLabel: "Results per page" + }) + }), + + // selected filters display, with all the fields given their display names + edges.newSelectedFilters({ + id: "selected-filters", + category: "selected-filters", + fieldDisplays : { + "index.schema_codes_tree.exact" : "Subject", + "bibjson.journal.title.exact" : "Journal", + "index.date" : "Year of publication" + }, + rangeFunctions : { + "index.date" : doaj.valueMaps.displayYearPeriod + }, + valueFunctions : { + "index.schema_codes_tree.exact" : doaj.valueMaps.schemaCodeToNameClosure(doaj.publicSearchConfig.lccTree) + }, + renderer : doaj.renderers.newSelectedFiltersRenderer({}) + }), + + edges.newPager({ + id: "top-pager", + category: "top-pager", + renderer : doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat + }) + }), + + // results display + edges.newResultsDisplay({ + id: "results", + category: "results", + renderer : doaj.renderers.newPublicSearchResultRenderer() + }), + + edges.newPager({ + id: "bottom-pager", + category: "bottom-pager", + renderer : doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat + }) + }) + ]; + + var e = edges.newEdge({ + selector: selector, + template: doaj.templates.newPublicSearch({ + title: "Articles" + }), + search_url: doaj.edgeUtil.url.build(doaj.publicSearchConfig.publicSearchPath), + manageUrl : true, + openingQuery: es.newQuery({ + sort: [{"field" : "created_date", "order" : "desc"}], + size: 50 + }), + components : components, + callbacks : { + "edges:query-fail" : function() { + alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); + }, + "edges:post-init" : function() { + feather.replace(); } - }); - doaj.publicSearch.activeEdges[selector] = e; - } + } + }); + doaj.publicSearch.activeEdges[selector] = e; } - -}); +} jQuery(document).ready(function($) { doaj.publicSearch.init(); diff --git a/portality/static/js/edges/public.journal.edge.js b/portality/static/js/edges/public.journal.edge.js index 42a9f7e874..c6d7902c3e 100644 --- a/portality/static/js/edges/public.journal.edge.js +++ b/portality/static/js/edges/public.journal.edge.js @@ -1,349 +1,337 @@ -$.extend(true, doaj, { +doaj.publicSearch = { + activeEdges : {}, - publicSearch : { - activeEdges : {}, - - embedSnippet : function(renderer) { - var snip = + embedSnippet : function(renderer) { + var snip = `
    `; - var query = renderer.component.edge.cloneQuery(); - query.addMust(es.newTermFilter({field: "_type", value: "journal"})) - query = query.objectify({ - include_query_string : true, - include_filters : true, - include_paging : true, - include_sort : true, - include_fields : false, - include_aggregations : false - }); - snip = snip.replace(/{{QUERY}}/g, JSON.stringify(query)); - return snip; - }, - - init : function(params) { - if (!params) { params = {} } + var query = renderer.component.edge.cloneQuery(); + query.addMust(es.newTermFilter({field: "_type", value: "journal"})) + query = query.objectify({ + include_query_string : true, + include_filters : true, + include_paging : true, + include_sort : true, + include_fields : false, + include_aggregations : false + }); + snip = snip.replace(/{{QUERY}}/g, JSON.stringify(query)); + return snip; + }, - var current_domain = document.location.host; - var current_scheme = window.location.protocol; + init : function(params) { + if (!params) { params = {} } - var selector = params.selector || "#public-journal-search"; - var search_url = current_scheme + "//" + current_domain + doaj.publicSearchConfig.publicSearchPath; + var selector = params.selector || "#public-journal-search"; - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - edges.newFullSearchController({ - id: "search-input-bar", - category: "controller", - fieldOptions : [ - {'display':'Title','field':'bibjson.title'}, - {'display':'Keywords','field':'bibjson.keywords'}, - {'display':'Subject','field':'index.classification'}, - {'display':'ISSN', 'field':'index.issn.exact'}, - {'display':'Publisher','field':'bibjson.publisher.name'}, - {'display':'Country of publisher','field':'index.country'}, - {'display':'Journal language','field':'index.language'} - ], - defaultOperator : "AND", - renderer : doaj.renderers.newSearchBarRenderer({ - freetextSubmitDelay: -1, - clearButton: false, - searchButton: true, - searchPlaceholder: "", - }) - }), + var components = [ + doaj.components.searchingNotification(), + edges.newFullSearchController({ + id: "search-input-bar", + category: "controller", + fieldOptions : [ + {'display':'Title','field':'bibjson.title'}, + {'display':'Keywords','field':'bibjson.keywords'}, + {'display':'Subject','field':'index.classification'}, + {'display':'ISSN', 'field':'index.issn.exact'}, + {'display':'Publisher','field':'bibjson.publisher.name'}, + {'display':'Country of publisher','field':'index.country'}, + {'display':'Journal language','field':'index.language'} + ], + defaultOperator : "AND", + renderer : doaj.renderers.newSearchBarRenderer({ + freetextSubmitDelay: -1, + clearButton: false, + searchButton: true, + searchPlaceholder: "", + }) + }), - edges.newPager({ - id: "result-count", - category: "pager", - renderer : edges.bs3.newResultCountRenderer({ - countFormat: countFormat, - suffix: " indexed journals", - htmlContainerWrapper: false - }) - }), + edges.newPager({ + id: "result-count", + category: "pager", + renderer : edges.bs3.newResultCountRenderer({ + countFormat: doaj.valueMaps.countFormat, + suffix: " indexed journals", + htmlContainerWrapper: false + }) + }), - edges.newFilterSetter({ - id : "see_journals", - category: "facet", - filters : [ - doaj.filters.noCharges(), - { - id : "retains_copyrigths", - display: "Author retains all rights", - must : [ - es.newTermFilter({ - field: "bibjson.copyright.author_retains", - value: true - }) - ] - } - ], - renderer : doaj.renderers.newFacetFilterSetterRenderer({ - facetTitle : "See journals...", - open: true, - togglable: false, - showCount: false - }) - }), + edges.newFilterSetter({ + id : "see_journals", + category: "facet", + filters : [ + doaj.filters.noCharges(), + { + id : "retains_copyrigths", + display: "Author retains all rights", + must : [ + es.newTermFilter({ + field: "bibjson.copyright.author_retains", + value: true + }) + ] + } + ], + renderer : doaj.renderers.newFacetFilterSetterRenderer({ + facetTitle : "See journals...", + open: true, + togglable: false, + showCount: false + }) + }), - // Subject Browser - /////////////////////////////////// - doaj.components.subjectBrowser({tree: doaj.publicSearchConfig.lccTree}), + // Subject Browser + /////////////////////////////////// + doaj.components.subjectBrowser({tree: doaj.publicSearchConfig.lccTree}), - edges.newORTermSelector({ - id: "language", - category: "facet", - field: "index.language.exact", - display: "Languages", - size: 100, - syncCounts: false, - lifecycle: "update", - updateType: "fresh", - orderBy: "count", - orderDir: "desc", - renderer : doaj.renderers.newORTermSelectorRenderer({ - showCount: true, - hideEmpty: false, - open: false, - togglable: true - }) - }), + edges.newORTermSelector({ + id: "language", + category: "facet", + field: "index.language.exact", + display: "Languages", + size: 100, + syncCounts: false, + lifecycle: "update", + updateType: "fresh", + orderBy: "count", + orderDir: "desc", + renderer : doaj.renderers.newORTermSelectorRenderer({ + showCount: true, + hideEmpty: false, + open: false, + togglable: true + }) + }), - edges.newORTermSelector({ - id: "journal_licence", - category: "facet", - field: "index.license.exact", - display: "Licenses", - size: 99, - syncCounts: false, - lifecycle: "update", - updateType: "fresh", - renderer : doaj.renderers.newORTermSelectorRenderer({ - showCount: true, - hideEmpty: false, - open: false, - togglable: true - }) - }), + edges.newORTermSelector({ + id: "journal_licence", + category: "facet", + field: "index.license.exact", + display: "Licenses", + size: 99, + syncCounts: false, + lifecycle: "update", + updateType: "fresh", + renderer : doaj.renderers.newORTermSelectorRenderer({ + showCount: true, + hideEmpty: false, + open: false, + togglable: true + }) + }), - edges.newORTermSelector({ - id: "publisher", - category: "facet", - field: "bibjson.publisher.name.exact", - display: "Publishers", - size: 100, - syncCounts: false, - lifecycle: "update", - updateType: "fresh", - orderBy: "count", - orderDir: "desc", - renderer : doaj.renderers.newORTermSelectorRenderer({ - showCount: true, - hideEmpty: false, - open: false, - togglable: true - }) - }), + edges.newORTermSelector({ + id: "publisher", + category: "facet", + field: "bibjson.publisher.name.exact", + display: "Publishers", + size: 100, + syncCounts: false, + lifecycle: "update", + updateType: "fresh", + orderBy: "count", + orderDir: "desc", + renderer : doaj.renderers.newORTermSelectorRenderer({ + showCount: true, + hideEmpty: false, + open: false, + togglable: true + }) + }), - edges.newORTermSelector({ - id: "country_publisher", - category: "facet", - field: "index.country.exact", - display: "Publishers' countries", - size: 200, - syncCounts: false, - lifecycle: "update", - updateType: "fresh", - orderBy: "count", - orderDir: "desc", - renderer : doaj.renderers.newORTermSelectorRenderer({ - showCount: true, - hideEmpty: false, - open: false, - togglable: true - }) - }), + edges.newORTermSelector({ + id: "country_publisher", + category: "facet", + field: "index.country.exact", + display: "Publishers' countries", + size: 200, + syncCounts: false, + lifecycle: "update", + updateType: "fresh", + orderBy: "count", + orderDir: "desc", + renderer : doaj.renderers.newORTermSelectorRenderer({ + showCount: true, + hideEmpty: false, + open: false, + togglable: true + }) + }), - edges.newORTermSelector({ - id: "peer_review", - category: "facet", - field: "bibjson.editorial.review_process.exact", - display: "Peer review types", - size: 99, - syncCounts: false, - lifecycle: "update", - updateType: "fresh", - renderer : doaj.renderers.newORTermSelectorRenderer({ - showCount: true, - hideEmpty: false, - open: false, - togglable: true - }) - }), + edges.newORTermSelector({ + id: "peer_review", + category: "facet", + field: "bibjson.editorial.review_process.exact", + display: "Peer review types", + size: 99, + syncCounts: false, + lifecycle: "update", + updateType: "fresh", + renderer : doaj.renderers.newORTermSelectorRenderer({ + showCount: true, + hideEmpty: false, + open: false, + togglable: true + }) + }), - edges.newDateHistogramSelector({ - id : "year_added", - category: "facet", - field: "created_date", - interval: "year", - display: "Date added", - displayFormatter : function(val) { - return (new Date(parseInt(val))).getUTCFullYear(); - }, - sortFunction : function(values) { - values.reverse(); - return values; - }, - renderer : doaj.renderers.newDateHistogramSelectorRenderer({ - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: false - }) - }), + edges.newDateHistogramSelector({ + id : "year_added", + category: "facet", + field: "created_date", + interval: "year", + display: "Date added", + displayFormatter : function(val) { + return (new Date(parseInt(val))).getUTCFullYear(); + }, + sortFunction : function(values) { + values.reverse(); + return values; + }, + renderer : doaj.renderers.newDateHistogramSelectorRenderer({ + open: false, + togglable: true, + countFormat: doaj.valueMaps.countFormat, + hideInactive: false + }) + }), - edges.newFullSearchController({ - id: "share_embed", - category: "controller", - urlShortener : doaj.doajUrlShortener, - embedSnippet : doaj.publicSearch.embedSnippet, - renderer: doaj.renderers.newShareEmbedRenderer({ - shareLinkText: ' Share or embed' - }) - }), + edges.newFullSearchController({ + id: "share_embed", + category: "controller", + urlShortener : doaj.doajUrlShortener, + embedSnippet : doaj.publicSearch.embedSnippet, + renderer: doaj.renderers.newShareEmbedRenderer({ + shareLinkText: ' Share or embed' + }) + }), - edges.newFullSearchController({ - id: "sort_by", - category: "controller", - sortOptions : [ - {'display':'Added to DOAJ (newest first)','field':'created_date', "dir" : "desc"}, - {'display':'Added to DOAJ (oldest first)','field':'created_date', "dir" : "asc"}, - {'display':'Last updated (most recent first)','field':'last_manual_update', "dir" : "desc"}, - {'display':'Last updated (less recent first)','field':'last_manual_update', "dir" : "asc"}, - {'display':'Title (A-Z)','field':'index.unpunctitle.exact', "dir" : "asc"}, - {'display':'Title (Z-A)','field':'index.unpunctitle.exact', "dir" : "desc"}, - {'display':'Relevance','field':'_score'} - ], - renderer: doaj.renderers.newSortRenderer({ - prefix: "Sort by", - dirSwitcher: false - }) - }), + edges.newFullSearchController({ + id: "sort_by", + category: "controller", + sortOptions : [ + {'display':'Added to DOAJ (newest first)','field':'created_date', "dir" : "desc"}, + {'display':'Added to DOAJ (oldest first)','field':'created_date', "dir" : "asc"}, + {'display':'Last updated (most recent first)','field':'last_manual_update', "dir" : "desc"}, + {'display':'Last updated (less recent first)','field':'last_manual_update', "dir" : "asc"}, + {'display':'Title (A-Z)','field':'index.unpunctitle.exact', "dir" : "asc"}, + {'display':'Title (Z-A)','field':'index.unpunctitle.exact', "dir" : "desc"}, + {'display':'Relevance','field':'_score'} + ], + renderer: doaj.renderers.newSortRenderer({ + prefix: "Sort by", + dirSwitcher: false + }) + }), - edges.newPager({ - id: "rpp", - category: "pager", - renderer : doaj.renderers.newPageSizeRenderer({ - sizeOptions: [50, 100, 200], - sizeLabel: "Results per page" - }) - }), + edges.newPager({ + id: "rpp", + category: "pager", + renderer : doaj.renderers.newPageSizeRenderer({ + sizeOptions: [50, 100, 200], + sizeLabel: "Results per page" + }) + }), - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - compoundDisplays : [ - { - filters : [ - es.newTermFilter({ - field: "bibjson.apc.has_apc", - value: false - }), - es.newTermFilter({ - field: "bibjson.other_charges.has_other_charges", - value: false - }) - ], - display : "Without any fees" - } - ], - fieldDisplays : { - "index.schema_codes_tree.exact" : "Subject", - "index.license.exact" : "Licenses", - "bibjson.publisher.name.exact" : "Publishers", - "index.country.exact" : "Publishers' countries", - "index.language.exact" : "Languages", - "bibjson.editorial.review_process.exact" : "Peer review", - "bibjson.copyright.author_retains" : "Author retains all rights", - "created_date" : "Date added" - }, - rangeFunctions : { - "created_date" : doaj.valueMaps.displayYearPeriod - }, - valueFunctions : { - "index.schema_codes_tree.exact" : doaj.valueMaps.schemaCodeToNameClosure(doaj.publicSearchConfig.lccTree) - }, - renderer : doaj.renderers.newSelectedFiltersRenderer({ - hideValues : [ - "bibjson.copyright.author_retains" + // selected filters display, with all the fields given their display names + edges.newSelectedFilters({ + id: "selected-filters", + category: "selected-filters", + compoundDisplays : [ + { + filters : [ + es.newTermFilter({ + field: "bibjson.apc.has_apc", + value: false + }), + es.newTermFilter({ + field: "bibjson.other_charges.has_other_charges", + value: false + }) ], - omit : [ - "bibjson.apc.has_apc", - "bibjson.other_charges.has_other_charges" - ] - }) - }), + display : "Without any fees" + } + ], + fieldDisplays : { + "index.schema_codes_tree.exact" : "Subject", + "index.license.exact" : "Licenses", + "bibjson.publisher.name.exact" : "Publishers", + "index.country.exact" : "Publishers' countries", + "index.language.exact" : "Languages", + "bibjson.editorial.review_process.exact" : "Peer review", + "bibjson.copyright.author_retains" : "Author retains all rights", + "created_date" : "Date added" + }, + rangeFunctions : { + "created_date" : doaj.valueMaps.displayYearPeriod + }, + valueFunctions : { + "index.schema_codes_tree.exact" : doaj.valueMaps.schemaCodeToNameClosure(doaj.publicSearchConfig.lccTree) + }, + renderer : doaj.renderers.newSelectedFiltersRenderer({ + hideValues : [ + "bibjson.copyright.author_retains" + ], + omit : [ + "bibjson.apc.has_apc", + "bibjson.other_charges.has_other_charges" + ] + }) + }), - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) - }), + edges.newPager({ + id: "top-pager", + category: "top-pager", + renderer : doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat + }) + }), - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer : doaj.renderers.newPublicSearchResultRenderer() - }), + // results display + edges.newResultsDisplay({ + id: "results", + category: "results", + renderer : doaj.renderers.newPublicSearchResultRenderer() + }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) + edges.newPager({ + id: "bottom-pager", + category: "bottom-pager", + renderer : doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat }) - ]; + }) + ]; - var e = edges.newEdge({ - selector: selector, - template: doaj.templates.newPublicSearch({ - title: "Journals" - }), - search_url: search_url, - manageUrl : true, - openingQuery: es.newQuery({ - sort: [{"field" : "created_date", "order" : "desc"}], - size: 50 - }), - components : components, - callbacks : { - "edges:query-fail" : function() { - alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); - }, - "edges:post-init" : function() { - feather.replace(); - } + var e = edges.newEdge({ + selector: selector, + template: doaj.templates.newPublicSearch({ + title: "Journals" + }), + search_url: doaj.edgeUtil.url.build(doaj.publicSearchConfig.publicSearchPath), + manageUrl : true, + openingQuery: es.newQuery({ + sort: [{"field" : "created_date", "order" : "desc"}], + size: 50 + }), + components : components, + callbacks : { + "edges:query-fail" : function() { + alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); + }, + "edges:post-init" : function() { + feather.replace(); } - }); - doaj.publicSearch.activeEdges[selector] = e; - } + } + }); + doaj.publicSearch.activeEdges[selector] = e; } - -}); +} jQuery(document).ready(function($) { doaj.publicSearch.init(); diff --git a/portality/static/js/edges/public.toc.edge.js b/portality/static/js/edges/public.toc.edge.js index 3ec7c8f22f..85c877e140 100644 --- a/portality/static/js/edges/public.toc.edge.js +++ b/portality/static/js/edges/public.toc.edge.js @@ -1,267 +1,255 @@ -$.extend(true, doaj, { +doaj.publicToC = { + activeEdges : {}, - publicToC : { - activeEdges : {}, + dynamicFacets : { + volume : [ + "issue" + ], + year_published : [ + "month_published" + ] + }, - dynamicFacets : { - volume : [ - "issue" - ], - year_published : [ - "month_published" - ] - }, + embedSnippet : function(renderer) { + var snip = '
    '; + var query = renderer.component.edge.currentQuery.objectify({ + include_query_string : true, + include_filters : true, + include_paging : true, + include_sort : true, + include_fields : false, + include_aggregations : false + }); + snip = snip.replace(/{{QUERY}}/g, JSON.stringify(query)); + return snip; + }, - embedSnippet : function(renderer) { - var snip = '
    '; - var query = renderer.component.edge.currentQuery.objectify({ - include_query_string : true, - include_filters : true, - include_paging : true, - include_sort : true, - include_fields : false, - include_aggregations : false - }); - snip = snip.replace(/{{QUERY}}/g, JSON.stringify(query)); - return snip; - }, + displayYearPeriod : function(params) { + var from = params.from; + var to = params.to; + var field = params.field; + var display = (new Date(parseInt(from))).getUTCFullYear(); + return {to: to, toType: "lt", from: from, fromType: "gte", display: display} + }, - displayYearPeriod : function(params) { - var from = params.from; - var to = params.to; - var field = params.field; - var display = (new Date(parseInt(from))).getUTCFullYear(); - return {to: to, toType: "lt", from: from, fromType: "gte", display: display} - }, + displayMonthPeriod : function(params) { + var from = params.from; + var to = params.to; + var field = params.field; + var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + var mi = (new Date(parseInt(from))).getUTCMonth(); + return {to: to, toType: "lt", from: from, fromType: "gte", display: months[mi]} + }, - displayMonthPeriod : function(params) { - var from = params.from; - var to = params.to; - var field = params.field; - var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - var mi = (new Date(parseInt(from))).getUTCMonth(); - return {to: to, toType: "lt", from: from, fromType: "gte", display: months[mi]} - }, + init : function(params) { + if (!params) { params = {} } - init : function(params) { - if (!params) { params = {} } + var selector = params.selector || "#journal_toc_articles"; - var current_domain = document.location.host; - var current_scheme = window.location.protocol; + var components = [ + doaj.components.searchingNotification(), - var selector = params.selector || "#journal_toc_articles"; - var search_url = current_scheme + "//" + current_domain + doaj.publicToCConfig.publicSearchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - edges.newPager({ - id: "result-count", - category: "pager", - renderer : edges.bs3.newResultCountRenderer({ - countFormat: countFormat, - suffix: " indexed articles", - htmlContainerWrapper: false - }) - }), + edges.newPager({ + id: "result-count", + category: "pager", + renderer : edges.bs3.newResultCountRenderer({ + countFormat: doaj.valueMaps.countFormat, + suffix: " indexed articles", + htmlContainerWrapper: false + }) + }), - edges.newFullSearchController({ - id: "search-controller", - category: "facet", - renderer : doaj.renderers.newSearchBoxFacetRenderer({ - freetextSubmitDelay: -1, - searchPlaceholder: "Additional keywords", - title: "Search within the results" - }) - }), + edges.newFullSearchController({ + id: "search-controller", + category: "facet", + renderer : doaj.renderers.newSearchBoxFacetRenderer({ + freetextSubmitDelay: -1, + searchPlaceholder: "Additional keywords", + title: "Search within the results" + }) + }), - edges.newDateHistogramSelector({ - id : "year_published", - category: "facet", - field: "index.date", - interval: "year", - display: "Year of publication", - displayFormatter : function(val) { - return (new Date(parseInt(val))).getUTCFullYear(); - }, - sortFunction : function(values) { - values.reverse(); - return values; - }, - renderer : doaj.renderers.newDateHistogramSelectorRenderer({ - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: false - }) - }), + edges.newDateHistogramSelector({ + id : "year_published", + category: "facet", + field: "index.date", + interval: "year", + display: "Year of publication", + displayFormatter : function(val) { + return (new Date(parseInt(val))).getUTCFullYear(); + }, + sortFunction : function(values) { + values.reverse(); + return values; + }, + renderer : doaj.renderers.newDateHistogramSelectorRenderer({ + open: false, + togglable: true, + countFormat: doaj.valueMaps.countFormat, + hideInactive: false + }) + }), - edges.newDateHistogramSelector({ - id : "month_published", - category: "facet", - field: "index.date_toc_fv_month", - interval: "month", - display: "Month", - deactivateThreshold: 1, - active: true, - displayFormatter : function(val) { - var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - var mi = (new Date(parseInt(val))).getUTCMonth(); - return months[mi] - }, - sortFunction : function(values) { - return values; - }, - renderer : doaj.renderers.newDateHistogramSelectorRenderer({ - open: false, - togglable: true, - countFormat: countFormat, - hideInactive: true, - hideEmpty: true - }) - }), - - edges.newFullSearchController({ - id: "sort_by", - category: "controller", - sortOptions : [ - {'display':'Added to DOAJ (newest first)','field':'created_date', "dir" : "desc"}, - {'display':'Added to DOAJ (oldest first)','field':'created_date', "dir" : "asc"}, - {'display':'Publication date (most recent first)','field':'index.date', "dir" : "desc"}, - {'display':'Publication date (less recent first)','field':'index.date', "dir" : "asc"}, - {'display':'Title (A-Z)','field':'index.unpunctitle.exact', "dir" : "asc"}, - {'display':'Title (Z-A)','field':'index.unpunctitle.exact', "dir" : "desc"} - ], - renderer: doaj.renderers.newSortRenderer({ - prefix: "Sort by", - dirSwitcher: false - }) - }), + edges.newDateHistogramSelector({ + id : "month_published", + category: "facet", + field: "index.date_toc_fv_month", + interval: "month", + display: "Month", + deactivateThreshold: 1, + active: true, + displayFormatter : function(val) { + var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + var mi = (new Date(parseInt(val))).getUTCMonth(); + return months[mi] + }, + sortFunction : function(values) { + return values; + }, + renderer : doaj.renderers.newDateHistogramSelectorRenderer({ + open: false, + togglable: true, + countFormat: doaj.valueMaps.countFormat, + hideInactive: true, + hideEmpty: true + }) + }), + + edges.newFullSearchController({ + id: "sort_by", + category: "controller", + sortOptions : [ + {'display':'Added to DOAJ (newest first)','field':'created_date', "dir" : "desc"}, + {'display':'Added to DOAJ (oldest first)','field':'created_date', "dir" : "asc"}, + {'display':'Publication date (most recent first)','field':'index.date', "dir" : "desc"}, + {'display':'Publication date (less recent first)','field':'index.date', "dir" : "asc"}, + {'display':'Title (A-Z)','field':'index.unpunctitle.exact', "dir" : "asc"}, + {'display':'Title (Z-A)','field':'index.unpunctitle.exact', "dir" : "desc"} + ], + renderer: doaj.renderers.newSortRenderer({ + prefix: "Sort by", + dirSwitcher: false + }) + }), - edges.newPager({ - id: "rpp", - category: "pager", - renderer : doaj.renderers.newPageSizeRenderer({ - sizeOptions: [50, 100, 200], - sizeLabel: "Results per page" - }) - }), + edges.newPager({ + id: "rpp", + category: "pager", + renderer : doaj.renderers.newPageSizeRenderer({ + sizeOptions: [50, 100, 200], + sizeLabel: "Results per page" + }) + }), - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - ignoreUnknownFilters: true, - fieldDisplays : { - //"bibjson.journal.volume.exact" : "Volume", - //"bibjson.journal.number.exact" : "Issue", - "index.date" : "Year", - "index.date_toc_fv_month" : "Month" - }, - rangeFunctions : { - "index.date" : doaj.publicToC.displayYearPeriod, - "index.date_toc_fv_month" : doaj.publicToC.displayMonthPeriod - }, - renderer : doaj.renderers.newSelectedFiltersRenderer({}) - }), + edges.newSelectedFilters({ + id: "selected-filters", + category: "selected-filters", + ignoreUnknownFilters: true, + fieldDisplays : { + //"bibjson.journal.volume.exact" : "Volume", + //"bibjson.journal.number.exact" : "Issue", + "index.date" : "Year", + "index.date_toc_fv_month" : "Month" + }, + rangeFunctions : { + "index.date" : doaj.publicToC.displayYearPeriod, + "index.date_toc_fv_month" : doaj.publicToC.displayMonthPeriod + }, + renderer : doaj.renderers.newSelectedFiltersRenderer({}) + }), - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) - }), - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer : doaj.renderers.newPublicSearchResultRenderer() - }), + edges.newPager({ + id: "top-pager", + category: "top-pager", + renderer : doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat + }) + }), + // results display + edges.newResultsDisplay({ + id: "results", + category: "results", + renderer : doaj.renderers.newPublicSearchResultRenderer() + }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) + edges.newPager({ + id: "bottom-pager", + category: "bottom-pager", + renderer : doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat }) - ]; + }) + ]; - var e = edges.newEdge({ - selector: selector, - template: doaj.templates.newPublicSearch({ - titleBar: false - }), - search_url: search_url, - baseQuery : es.newQuery({ - must : [ - es.newTermsFilter({field: "index.issn.exact", values: doaj.publicToCConfig.tocIssns}) - ] - }), - openingQuery : es.newQuery({ - sort: [{"field" : "created_date", "order" : "desc"}], - size: 100 - }), - manageUrl : true, - components : components, - callbacks : { - "edges:query-fail" : function() { - alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); - }, - "edges:post-init" : function() { - feather.replace(); - } + var e = edges.newEdge({ + selector: selector, + template: doaj.templates.newPublicSearch({ + titleBar: false + }), + search_url: doaj.edgeUtil.url.build(doaj.publicToCConfig.publicSearchPath), + baseQuery : es.newQuery({ + must : [ + es.newTermsFilter({field: "index.issn.exact", values: doaj.publicToCConfig.tocIssns}) + ] + }), + openingQuery : es.newQuery({ + sort: [{"field" : "created_date", "order" : "desc"}], + size: 100 + }), + manageUrl : true, + components : components, + callbacks : { + "edges:query-fail" : function() { + alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); + }, + "edges:post-init" : function() { + feather.replace(); } - }); - doaj.publicToC.activeEdges[selector] = e; + } + }); + doaj.publicToC.activeEdges[selector] = e; - $(selector).on("edges:pre-render", function() { - var yearPublished = e.getComponent({id: "year_published"}); + $(selector).on("edges:pre-render", function() { + var yearPublished = e.getComponent({id: "year_published"}); - var deactivate = []; - var activate = []; + var deactivate = []; + var activate = []; - if (yearPublished.filters.length === 0) { - deactivate = deactivate.concat(doaj.publicToC.dynamicFacets.year_published); - } else { - activate = activate.concat(doaj.publicToC.dynamicFacets.year_published); - } + if (yearPublished.filters.length === 0) { + deactivate = deactivate.concat(doaj.publicToC.dynamicFacets.year_published); + } else { + activate = activate.concat(doaj.publicToC.dynamicFacets.year_published); + } - for (var i = 0; i < e.components.length; i++) { - var component = e.components[i]; - if ($.inArray(component.id, deactivate) !== -1) { - component.active = false; - } else if ($.inArray(component.id, activate) !== -1) { - component.active = true; - } + for (var i = 0; i < e.components.length; i++) { + var component = e.components[i]; + if ($.inArray(component.id, deactivate) !== -1) { + component.active = false; + } else if ($.inArray(component.id, activate) !== -1) { + component.active = true; } - }); + } + }); - $(selector).on("edges:pre-query", function() { - var yearPublished = e.getComponent({id: "year_published"}); - var yearMusts = e.currentQuery.listMust(es.newRangeFilter({field: yearPublished.field})); + $(selector).on("edges:pre-query", function() { + var yearPublished = e.getComponent({id: "year_published"}); + var yearMusts = e.currentQuery.listMust(es.newRangeFilter({field: yearPublished.field})); - var deactivate = []; - if (yearMusts.length === 0) { - deactivate = deactivate.concat(doaj.publicToC.dynamicFacets.year_published); - } + var deactivate = []; + if (yearMusts.length === 0) { + deactivate = deactivate.concat(doaj.publicToC.dynamicFacets.year_published); + } - for (var i = 0; i < e.components.length; i++) { - var component = e.components[i]; - if ($.inArray(component.id, deactivate) !== -1) { - // remove the filters - component.clearFilters({triggerQuery: false}); - } + for (var i = 0; i < e.components.length; i++) { + var component = e.components[i]; + if ($.inArray(component.id, deactivate) !== -1) { + // remove the filters + component.clearFilters({triggerQuery: false}); } - }); - } + } + }); } - -}); +} jQuery(document).ready(function($) { doaj.publicToC.init(); diff --git a/portality/static/js/edges/publisher.journals.edge.js b/portality/static/js/edges/publisher.journals.edge.js index 64e90f1f41..995405cf69 100644 --- a/portality/static/js/edges/publisher.journals.edge.js +++ b/portality/static/js/edges/publisher.journals.edge.js @@ -1,219 +1,198 @@ -$.extend(true, doaj, { +doaj.publisherJournalsSearch = { + activeEdges : {}, - publisherJournalsSearch : { - activeEdges : {}, - - makeUpdateRequest : function (resultobj) { - if (resultobj.admin && resultobj.admin.hasOwnProperty("in_doaj")) { - if (resultobj.admin.in_doaj === false) { - return false; - } + makeUpdateRequest : function (resultobj) { + if (resultobj.admin && resultobj.admin.hasOwnProperty("in_doaj")) { + if (resultobj.admin.in_doaj === false) { + return false; } + } - var result = {label : "", link : ""}; - if (resultobj.admin && resultobj.admin.current_application) { - var idquery = '%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A%22' + resultobj['id'] + '%22%7D%7D%7D'; - result.link = doaj.publisherJournalsSearchConfig.journalUpdateRequestsUrl + "?source=" + idquery; - result.label = 'View Update'; - } else { - result.link = doaj.publisherJournalsSearchConfig.journalUpdateUrl + resultobj['id']; - result.label = 'Update'; - } - return result; - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#publisher_journals"; - var search_url = current_scheme + "//" + current_domain + doaj.publisherJournalsSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - edges.newPager({ - id: "result-count", - category: "pager", - renderer : edges.bs3.newResultCountRenderer({ - countFormat: countFormat, - suffix: " indexed journals", - htmlContainerWrapper: false - }) - }), - - edges.newORTermSelector({ - id: "journal_licence", - category: "facet", - field: "index.license.exact", - display: "Licenses", - size: 99, - syncCounts: false, - lifecycle: "update", - updateType: "fresh", - renderer : doaj.renderers.newORTermSelectorRenderer({ - showCount: true, - hideEmpty: false, - open: false, - togglable: true - }) - }), - - // Subject Browser - /////////////////////////////////// - doaj.components.subjectBrowser({ - tree: doaj.publisherJournalsSearchConfig.lccTree, - hideEmpty: true - }), - - edges.newORTermSelector({ - id: "keywords", - category: "facet", - field: "bibjson.keywords.exact", - display: "Keywords", - size: 99, - syncCounts: false, - lifecycle: "update", - updateType: "fresh", - renderer : doaj.renderers.newORTermSelectorRenderer({ - showCount: true, - hideEmpty: false, - open: false, - togglable: true - }) - }), - - edges.newFullSearchController({ - id: "sort_by", - category: "controller", - sortOptions : [ - {'display':'Added to DOAJ (newest first)','field':'created_date', "dir" : "desc"}, - {'display':'Added to DOAJ (oldest first)','field':'created_date', "dir" : "asc"}, - {'display':'Last updated (most recent first)','field':'last_updated', "dir" : "desc"}, - {'display':'Last updated (less recent first)','field':'last_updated', "dir" : "asc"}, - {'display':'Title (A-Z)','field':'index.unpunctitle.exact', "dir" : "asc"}, - {'display':'Title (Z-A)','field':'index.unpunctitle.exact', "dir" : "desc"}, - {'display':'Relevance','field':'_score'} - ], - renderer: doaj.renderers.newSortRenderer({ - prefix: "Sort by", - dirSwitcher: false - }) - }), - - edges.newPager({ - id: "rpp", - category: "pager", - renderer : doaj.renderers.newPageSizeRenderer({ - sizeOptions: [50, 100, 200], - sizeLabel: "Results per page" - }) - }), - - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - compoundDisplays : [ - { - filters : [ - es.newTermFilter({ - field: "bibjson.apc.has_apc", - value: false - }), - es.newTermFilter({ - field: "bibjson.other_charges.has_other_charges", - value: false - }) - ], - display : "Without publication fees" - } - ], - fieldDisplays : { - "index.schema_codes_tree.exact" : "Subject", - "index.license.exact" : "Licenses", - "bibjson.publisher.name.exact" : "Publishers", - "index.country.exact" : "Publishers' countries", - "index.language.exact" : "Languages", - "bibjson.editorial.review_process.exact" : "Peer review", - "created_date" : "Date added" - }, - rangeFunctions : { - "created_date" : doaj.valueMaps.displayYearPeriod - }, - valueFunctions : { - "index.schema_codes_tree.exact" : doaj.valueMaps.schemaCodeToNameClosure(doaj.publisherJournalsSearchConfig.lccTree) - }, - renderer : doaj.renderers.newSelectedFiltersRenderer({ - hideValues : [ - ], - omit : [ - "bibjson.apc.has_apc", - "bibjson.other_charges.has_other_charges" - ] - }) - }), - - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer : doaj.renderers.newPublicSearchResultRenderer({ - actions: [ - doaj.publisherJournalsSearch.makeUpdateRequest, - ] - }) - }), - - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) + var result = {label : "", link : ""}; + if (resultobj.admin && resultobj.admin.current_application) { + var idquery = '%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A%22' + resultobj['id'] + '%22%7D%7D%7D'; + result.link = doaj.publisherJournalsSearchConfig.journalUpdateRequestsUrl + "?source=" + idquery; + result.label = 'View Update'; + } else { + result.link = doaj.publisherJournalsSearchConfig.journalUpdateUrl + resultobj['id']; + result.label = 'Update'; + } + return result; + }, + + init : function(params) { + if (!params) { params = {} } + + var selector = params.selector || "#publisher_journals"; + + var components = [ + doaj.components.searchingNotification(), + + edges.newPager({ + id: "result-count", + category: "pager", + renderer: edges.bs3.newResultCountRenderer({ + countFormat: doaj.valueMaps.countFormat, + suffix: " indexed journals", + htmlContainerWrapper: false + }) + }), + + edges.newORTermSelector({ + id: "journal_licence", + category: "facet", + field: "index.license.exact", + display: "Licenses", + size: 99, + syncCounts: false, + lifecycle: "update", + updateType: "fresh", + renderer: doaj.renderers.newORTermSelectorRenderer({ + showCount: true, + hideEmpty: false, + open: false, + togglable: true + }) + }), + + doaj.components.subjectBrowser({ + tree: doaj.publisherJournalsSearchConfig.lccTree, + hideEmpty: true + }), + + edges.newORTermSelector({ + id: "keywords", + category: "facet", + field: "bibjson.keywords.exact", + display: "Keywords", + size: 99, + syncCounts: false, + lifecycle: "update", + updateType: "fresh", + renderer: doaj.renderers.newORTermSelectorRenderer({ + showCount: true, + hideEmpty: false, + open: false, + togglable: true + }) + }), + + edges.newFullSearchController({ + id: "sort_by", + category: "controller", + sortOptions: [ + {'display': 'Added to DOAJ (newest first)', 'field': 'created_date', "dir": "desc"}, + {'display': 'Added to DOAJ (oldest first)', 'field': 'created_date', "dir": "asc"}, + {'display': 'Last updated (most recent first)', 'field': 'last_updated', "dir": "desc"}, + {'display': 'Last updated (less recent first)', 'field': 'last_updated', "dir": "asc"}, + {'display': 'Title (A-Z)', 'field': 'index.unpunctitle.exact', "dir": "asc"}, + {'display': 'Title (Z-A)', 'field': 'index.unpunctitle.exact', "dir": "desc"}, + {'display': 'Relevance', 'field': '_score'} + ], + renderer: doaj.renderers.newSortRenderer({ + prefix: "Sort by", + dirSwitcher: false }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: doaj.templates.newPublicSearch({ - titleBar: false, - title: "Journals" - }), - search_url: search_url, - manageUrl: true, - openingQuery: es.newQuery({ - sort: [{"field" : "created_date", "order" : "desc"}], - size: 50 - }), - components: components, - callbacks : { - "edges:query-fail" : function() { - alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); - }, - "edges:post-init" : function() { - feather.replace(); + }), + + edges.newPager({ + id: "rpp", + category: "pager", + renderer: doaj.renderers.newPageSizeRenderer({ + sizeOptions: [50, 100, 200], + sizeLabel: "Results per page" + }) + }), + + edges.newSelectedFilters({ + id: "selected-filters", + category: "selected-filters", + compoundDisplays: [ + { + filters: [ + es.newTermFilter({field: "bibjson.apc.has_apc", value: false}), + es.newTermFilter({field: "bibjson.other_charges.has_other_charges", value: false}) + ], + display: "Without publication fees" } + ], + fieldDisplays: { + "index.schema_codes_tree.exact": "Subject", + "index.license.exact": "Licenses", + "bibjson.publisher.name.exact": "Publishers", + "index.country.exact": "Publishers' countries", + "index.language.exact": "Languages", + "bibjson.editorial.review_process.exact": "Peer review", + "created_date": "Date added" + }, + rangeFunctions: { + "created_date": doaj.valueMaps.displayYearPeriod + }, + valueFunctions: { + "index.schema_codes_tree.exact": doaj.valueMaps.schemaCodeToNameClosure(doaj.publisherJournalsSearchConfig.lccTree) + }, + renderer: doaj.renderers.newSelectedFiltersRenderer({ + hideValues: [], + omit: [ + "bibjson.apc.has_apc", + "bibjson.other_charges.has_other_charges" + ] + }) + }), + + edges.newPager({ + id: "top-pager", + category: "top-pager", + renderer: doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat + }) + }), + + edges.newResultsDisplay({ + id: "results", + category: "results", + renderer: doaj.renderers.newPublicSearchResultRenderer({ + actions: [ + doaj.publisherJournalsSearch.makeUpdateRequest + ] + }) + }), + + edges.newPager({ + id: "bottom-pager", + category: "bottom-pager", + renderer: doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat + }) + }) + ]; + + var e = edges.newEdge({ + selector: selector, + template: doaj.templates.newPublicSearch({ + titleBar: false, + title: "Journals" + }), + search_url: doaj.edgeUtil.url.build(doaj.publisherJournalsSearchConfig.searchPath), + manageUrl: true, + openingQuery: es.newQuery({ + sort: [{"field": "created_date", "order": "desc"}], + size: 50 + }), + components: components, + callbacks: { + "edges:query-fail": function() { + alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); + }, + "edges:post-init": function() { + feather.replace(); } - }); - doaj.publisherJournalsSearch.activeEdges[selector] = e; - } + } + }); + + doaj.publisherJournalsSearch.activeEdges[selector] = e; } -}); +} jQuery(document).ready(function($) { diff --git a/portality/static/js/edges/publisher.mydrafts.edge.js b/portality/static/js/edges/publisher.mydrafts.edge.js index 836169bef9..42c682f59d 100644 --- a/portality/static/js/edges/publisher.mydrafts.edge.js +++ b/portality/static/js/edges/publisher.mydrafts.edge.js @@ -1,83 +1,70 @@ -$.extend(true, doaj, { +doaj.publisherApplicationsSearch = { + activeEdges : {}, - publisherApplicationsSearch : { - activeEdges : {}, - - editUpdateRequest : function (value, resultobj, renderer) { - if (resultobj['suggestion']) { - if (resultobj.admin && resultobj.admin.application_status) { - var status = resultobj.admin.application_status; - var result = ""; - var view = '(view request)'; - if (status === "update_request" || status === "revisions_required") { - var actionUrl = doaj.publisherUpdatesSearchConfig.journalUpdateUrl + resultobj.admin.current_journal; - result = 'Delete this update request'; - } else if (status !== "rejected" && status !== "accepted") { - result = 'This update request is currently being reviewed by an Editor ' + view + '.'; - } else if (status === "rejected") { - result = 'This update request has been rejected ' + view + '.'; - } else if (status === "accepted") { - result = 'This update request has been accepted, and your journal in DOAJ updated ' + view + '.'; - } - return result; + editUpdateRequest : function (value, resultobj, renderer) { + if (resultobj['suggestion']) { + if (resultobj.admin && resultobj.admin.application_status) { + var status = resultobj.admin.application_status; + var result = ""; + var view = '(view request)'; + if (status === "update_request" || status === "revisions_required") { + var actionUrl = doaj.publisherUpdatesSearchConfig.journalUpdateUrl + resultobj.admin.current_journal; + result = 'Delete this update request'; + } else if (status !== "rejected" && status !== "accepted") { + result = 'This update request is currently being reviewed by an Editor ' + view + '.'; + } else if (status === "rejected") { + result = 'This update request has been rejected ' + view + '.'; + } else if (status === "accepted") { + result = 'This update request has been accepted, and your journal in DOAJ updated ' + view + '.'; } + return result; } - return false; - }, - - init : function(params) { - if (!params) { params = {} } - - var current_domain = document.location.host; - var current_scheme = window.location.protocol; + } + return false; + }, - var selector = params.selector || "#publisher_applications"; - var search_url = current_scheme + "//" + current_domain + doaj.publisherApplicationsSearchConfig.searchPath; + init : function(params) { + if (!params) { params = {} } - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); + var selector = params.selector || "#publisher_applications"; - var components = [ - // results display + var e = edges.newEdge({ + selector: selector, + template: doaj.templates.newPublisherApplications(), + search_url: doaj.edgeUtil.url.build(doaj.publisherApplicationsSearchConfig.searchPath), + manageUrl: true, + baseQuery: es.newQuery({ + must: [ + es.newTermsFilter({ + field: "admin.application_status.exact", + values: ["revisions_required", "pending", "in progress", "completed", "on hold", "ready", "draft"] + }) + ], + sort: [{"field": "last_updated", "order": "desc"}], + size: 50 + }), + components: [ edges.newResultsDisplay({ id: "results", category: "results", - renderer : doaj.renderers.newPublisherApplicationRenderer() + renderer: doaj.renderers.newPublisherApplicationRenderer() }) - ]; - var e = edges.newEdge({ - selector: selector, - template: doaj.templates.newPublisherApplications(), - search_url: search_url, - manageUrl: true, - baseQuery: es.newQuery({ - must: [ - es.newTermsFilter({ - field: "admin.application_status.exact", - values: ["revisions_required", "pending", "in progress", "completed", "on hold", "ready", "draft"] - }) - ], - sort: [{"field" : "last_updated", "order" : "desc"}], - size: 50 - }), - components: components, - callbacks : { - "edges:query-fail" : function() { - alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); - }, - "edges:post-init" : function() { - feather.replace(); - } + ], + callbacks: { + "edges:query-fail": function() { + alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); + }, + "edges:post-init": function() { + feather.replace(); } - }); - doaj.publisherApplicationsSearch.activeEdges[selector] = e; - } - } -}); + } + }); + doaj.publisherApplicationsSearch.activeEdges[selector] = e; + } +} jQuery(document).ready(function($) { doaj.publisherApplicationsSearch.init(); diff --git a/portality/static/js/edges/publisher.update_requests.edge.js b/portality/static/js/edges/publisher.update_requests.edge.js index b4d9a64ba6..cb3879b620 100644 --- a/portality/static/js/edges/publisher.update_requests.edge.js +++ b/portality/static/js/edges/publisher.update_requests.edge.js @@ -1,159 +1,147 @@ -$.extend(true, doaj, { +doaj.publisherUpdatesSearch = { + activeEdges : {}, - publisherUpdatesSearch : { - activeEdges : {}, - - publisherStatusMap: function(value) { - if (doaj.valueMaps.applicationStatus.hasOwnProperty(value)) { - return doaj.valueMaps.applicationStatus[value]; - } - return value; - }, - - editUpdateRequest : function (resultobj) { - if (resultobj.admin && resultobj.admin.application_status) { - var result = {label : "", link : ""}; - var status = resultobj.admin.application_status; - result.link = doaj.publisherUpdatesSearchConfig.journalReadOnlyUrl + resultobj['id']; - result.label = 'View'; - - if (status === "post_submission_review" || status === "update_request" || status === "revisions_required") { - result.link = doaj.publisherUpdatesSearchConfig.journalUpdateUrl + resultobj.admin.current_journal; - result.label = 'Edit'; - } - return result; - } - return false; - }, - - init : function(params) { - if (!params) { - params = {}; + publisherStatusMap: function(value) { + if (doaj.valueMaps.applicationStatus.hasOwnProperty(value)) { + return doaj.valueMaps.applicationStatus[value]; + } + return value; + }, + + editUpdateRequest : function (resultobj) { + if (resultobj.admin && resultobj.admin.application_status) { + var result = {label : "", link : ""}; + var status = resultobj.admin.application_status; + result.link = doaj.publisherUpdatesSearchConfig.journalReadOnlyUrl + resultobj['id']; + result.label = 'View'; + + if (status === "post_submission_review" || status === "update_request" || status === "revisions_required") { + result.link = doaj.publisherUpdatesSearchConfig.journalUpdateUrl + resultobj.admin.current_journal; + result.label = 'Edit'; } + return result; + } + return false; + }, - var current_domain = document.location.host; - var current_scheme = window.location.protocol; - - var selector = params.selector || "#publisher_update_requests"; - var search_url = current_scheme + "//" + current_domain + doaj.publisherUpdatesSearchConfig.searchPath; - - var countFormat = edges.numFormat({ - thousandsSeparator: "," - }); - - var components = [ - doaj.components.searchingNotification(), - - // facets - edges.newORTermSelector({ - id: "application_status", - category: "facet", - field: "admin.application_status.exact", - display: "Application Status", - size: 99, - valueFunction: doaj.publisherUpdatesSearch.publisherStatusMap, - syncCounts: false, - lifecycle: "update", - renderer : doaj.renderers.newORTermSelectorRenderer({ - showCount: true, - hideEmpty: true, - open: true, - togglable: false - }) - }), - - edges.newFullSearchController({ - id: "sort_by", - category: "controller", - sortOptions : [ - {'display':'Added to DOAJ (newest first)','field':'created_date', "dir" : "desc"}, - {'display':'Added to DOAJ (oldest first)','field':'created_date', "dir" : "asc"}, - {'display':'Last updated (most recent first)','field':'last_manual_update', "dir" : "desc"}, - {'display':'Last updated (less recent first)','field':'last_manual_update', "dir" : "asc"}, - {'display':'Title (A-Z)','field':'index.unpunctitle.exact', "dir" : "asc"}, - {'display':'Title (Z-A)','field':'index.unpunctitle.exact', "dir" : "desc"}, - {'display':'Relevance','field':'_score'} - ], - renderer: doaj.renderers.newSortRenderer({ - prefix: "Sort by", - dirSwitcher: false - }) - }), - - edges.newPager({ - id: "rpp", - category: "pager", - renderer : doaj.renderers.newPageSizeRenderer({ - sizeOptions: [50, 100, 200], - sizeLabel: "Results per page" - }) - }), - - // the pager, with the explicitly set page size options (see the openingQuery for the initial size) - edges.newPager({ - id: "top-pager", - category: "top-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) - }), - edges.newPager({ - id: "bottom-pager", - category: "bottom-pager", - renderer : doaj.renderers.newPagerRenderer({ - numberFormat: countFormat - }) - }), - - // results display - edges.newResultsDisplay({ - id: "results", - category: "results", - renderer : doaj.renderers.newPublisherUpdateRequestRenderer({ - actions: [ - doaj.publisherUpdatesSearch.editUpdateRequest - ] - }) - }), + init : function(params) { + if (!params) { + params = {}; + } - // selected filters display, with all the fields given their display names - edges.newSelectedFilters({ - id: "selected-filters", - category: "selected-filters", - fieldDisplays: { - 'admin.application_status.exact': 'Application Status' - }, - renderer : doaj.renderers.newSelectedFiltersRenderer() + var selector = params.selector || "#publisher_update_requests"; + + var components = [ + doaj.components.searchingNotification(), + + // facets + edges.newORTermSelector({ + id: "application_status", + category: "facet", + field: "admin.application_status.exact", + display: "Application Status", + size: 99, + valueFunction: doaj.publisherUpdatesSearch.publisherStatusMap, + syncCounts: false, + lifecycle: "update", + renderer : doaj.renderers.newORTermSelectorRenderer({ + showCount: true, + hideEmpty: true, + open: true, + togglable: false }) - ]; - - var e = edges.newEdge({ - selector: selector, - template: doaj.templates.newPublicSearch({ - titleBar: false, - title: "Update requests" - }), - search_url: search_url, - manageUrl: true, - openingQuery: es.newQuery({ - sort: [{"field" : "last_manual_update", "order" : "desc"}], - size: 50 - }), - components: components, - callbacks : { - "edges:query-fail" : function() { - alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); - }, - "edges:post-init" : function() { - feather.replace(); - } + }), + + edges.newFullSearchController({ + id: "sort_by", + category: "controller", + sortOptions : [ + {'display':'Added to DOAJ (newest first)','field':'created_date', "dir" : "desc"}, + {'display':'Added to DOAJ (oldest first)','field':'created_date', "dir" : "asc"}, + {'display':'Last updated (most recent first)','field':'last_manual_update', "dir" : "desc"}, + {'display':'Last updated (less recent first)','field':'last_manual_update', "dir" : "asc"}, + {'display':'Title (A-Z)','field':'index.unpunctitle.exact', "dir" : "asc"}, + {'display':'Title (Z-A)','field':'index.unpunctitle.exact', "dir" : "desc"}, + {'display':'Relevance','field':'_score'} + ], + renderer: doaj.renderers.newSortRenderer({ + prefix: "Sort by", + dirSwitcher: false + }) + }), + + edges.newPager({ + id: "rpp", + category: "pager", + renderer : doaj.renderers.newPageSizeRenderer({ + sizeOptions: [50, 100, 200], + sizeLabel: "Results per page" + }) + }), + + // the pager, with the explicitly set page size options (see the openingQuery for the initial size) + edges.newPager({ + id: "top-pager", + category: "top-pager", + renderer : doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat + }) + }), + edges.newPager({ + id: "bottom-pager", + category: "bottom-pager", + renderer : doaj.renderers.newPagerRenderer({ + numberFormat: doaj.valueMaps.countFormat + }) + }), + + // results display + edges.newResultsDisplay({ + id: "results", + category: "results", + renderer : doaj.renderers.newPublisherUpdateRequestRenderer({ + actions: [ + doaj.publisherUpdatesSearch.editUpdateRequest + ] + }) + }), + + // selected filters display, with all the fields given their display names + edges.newSelectedFilters({ + id: "selected-filters", + category: "selected-filters", + fieldDisplays: { + 'admin.application_status.exact': 'Application Status' + }, + renderer : doaj.renderers.newSelectedFiltersRenderer() + }) + ]; + + var e = edges.newEdge({ + selector: selector, + template: doaj.templates.newPublicSearch({ + titleBar: false, + title: "Update requests" + }), + search_url: doaj.edgeUtil.url.build(doaj.publisherUpdatesSearchConfig.searchPath), + manageUrl: true, + openingQuery: es.newQuery({ + sort: [{"field" : "last_manual_update", "order" : "desc"}], + size: 50 + }), + components: components, + callbacks : { + "edges:query-fail" : function() { + alert("There was an unexpected error. Please reload the page and try again. If the issue persists please contact us."); + }, + "edges:post-init" : function() { + feather.replace(); } - }); - doaj.publisherUpdatesSearch.activeEdges[selector] = e; - } + } + }); + doaj.publisherUpdatesSearch.activeEdges[selector] = e; } -}); - +} jQuery(document).ready(function($) { doaj.publisherUpdatesSearch.init(); diff --git a/portality/static/js/edges/util/url.js b/portality/static/js/edges/util/url.js new file mode 100644 index 0000000000..d6c374f583 --- /dev/null +++ b/portality/static/js/edges/util/url.js @@ -0,0 +1,21 @@ +// ~~ Edge URL Utilities ~~ +doaj.edgeUtil = doaj.edgeUtil || {}; + +doaj.edgeUtil.url = { + + /** + * Returns base URL including scheme + host + * Example: https://doaj.org + */ + getBaseURL: function() { + return window.location.protocol + "//" + document.location.host; + }, + + /** + * Builds full URL from provided path + * @param {string} path + */ + build: function(path) { + return this.getBaseURL() + path; + } +}; \ No newline at end of file diff --git a/portality/templates-v2/includes/_edges_common_js.html b/portality/templates-v2/includes/_edges_common_js.html index 29723bbff4..84737583ec 100644 --- a/portality/templates-v2/includes/_edges_common_js.html +++ b/portality/templates-v2/includes/_edges_common_js.html @@ -23,4 +23,7 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/portality/templates-v2/management/admin/system_objects/_search.html b/portality/templates-v2/management/admin/system_objects/_search.html new file mode 100644 index 0000000000..883abd8b1f --- /dev/null +++ b/portality/templates-v2/management/admin/system_objects/_search.html @@ -0,0 +1,28 @@ +{% extends "management/admin/base.html" %} +{# ~~ AdminSystemObjectsSearch:Page -> SystemObjectsSearch:Feature ~~ #} +{# + Shared template for all system-object search pages. + Rendered via render_template(..., container_id="...", init_function="...", page_title="...") +#} + +{% block admin_stylesheets %} + {% include "management/includes/_edges_common_css.html" %} + +{% endblock %} + +{% block page_title %}{{ page_title }}{% endblock %} + +{% block admin_content %} +

    {{ page_title }}

    +
    +{% endblock %} + +{% block admin_js %} + {% include "includes/_edges_common_js.html" %} + + +{% endblock %}