Added a helper function to sort selectable option lists.

master
Pacman Ghost 4 years ago
parent 71667f0ee2
commit a892ac62d0
  1. 7
      web/src/ArticleSearchResult2.js
  2. 11
      web/src/PublicationSearchResult2.js
  3. 9
      web/src/utils.js

@ -1,11 +1,10 @@
import React from "react" ;
import ReactDOMServer from "react-dom/server" ;
import Select from "react-select" ;
import CreatableSelect from "react-select/creatable" ;
import { PublicationSearchResult } from "./PublicationSearchResult.js" ;
import { gAppRef } from "./index.js" ;
import { ImageFileUploader } from "./FileUploader.js" ;
import { makeScenarioDisplayName, parseScenarioDisplayName, unloadCreatableSelect } from "./utils.js" ;
import { makeScenarioDisplayName, parseScenarioDisplayName, sortSelectableOptions, unloadCreatableSelect } from "./utils.js" ;
// --------------------------------------------------------------------
@ -52,9 +51,7 @@ export class ArticleSearchResult2
label: <span dangerouslySetInnerHTML={{__html: pub_display_name}} />
} ) ;
}
publications.sort( (lhs,rhs) => {
return ReactDOMServer.renderToStaticMarkup( lhs.label ).localeCompare( ReactDOMServer.renderToStaticMarkup( rhs.label ) ) ;
} ) ;
sortSelectableOptions( publications ) ;
let currPub = publications[0] ;
for ( let i=1; i < publications.length ; ++i ) {
if ( publications[i].value === vals.pub_id ) {

@ -1,10 +1,9 @@
import React from "react" ;
import ReactDOMServer from "react-dom/server" ;
import Select from "react-select" ;
import CreatableSelect from "react-select/creatable" ;
import { gAppRef } from "./index.js" ;
import { ImageFileUploader } from "./FileUploader.js" ;
import { unloadCreatableSelect } from "./utils.js" ;
import { sortSelectableOptions, unloadCreatableSelect } from "./utils.js" ;
// --------------------------------------------------------------------
@ -53,9 +52,7 @@ export class PublicationSearchResult2
if ( p[1].publ_id === vals.publ_id )
currPubl = publishers.length - 1 ;
}
publishers.sort( (lhs,rhs) => {
return ReactDOMServer.renderToStaticMarkup( lhs.label ).localeCompare( ReactDOMServer.renderToStaticMarkup( rhs.label ) ) ;
} ) ;
sortSelectableOptions( publishers ) ;
// initialize the publications
// NOTE: As a convenience, we provide a droplist of known publication names (without edition #'s),
@ -68,9 +65,7 @@ export class PublicationSearchResult2
const pub = publications[ pub_name ] ;
publications2.push( { value: pub.pub_id, label: pub.pub_name } ) ;
}
publications2.sort( (lhs,rhs) => {
return ReactDOMServer.renderToStaticMarkup( lhs.label ).localeCompare( ReactDOMServer.renderToStaticMarkup( rhs.label ) ) ;
} ) ;
sortSelectableOptions( publications2 ) ;
let currPub = null ;
for ( let pub of publications2 ) {
if ( pub.label === vals.pub_name ) {

@ -1,7 +1,16 @@
import React from "react" ;
import ReactDOMServer from "react-dom/server" ;
// --------------------------------------------------------------------
export function sortSelectableOptions( options ) {
options.sort( (lhs,rhs) => {
lhs = ReactDOMServer.renderToStaticMarkup( lhs.label ) ;
rhs = ReactDOMServer.renderToStaticMarkup( rhs.label ) ;
return lhs.localeCompare( rhs ) ;
} ) ;
}
export function unloadCreatableSelect( sel ) {
// unload the values from a CreatableSelect
if ( ! sel.state.value )

Loading…
Cancel
Save