cache sort name function
parent
ed9137e382
commit
31f439597e
|
|
@ -1,3 +1,4 @@
|
||||||
|
import NodeCache from 'node-cache';
|
||||||
import { config as cemeteryConfig } from './config.cemetery.ontario.js';
|
import { config as cemeteryConfig } from './config.cemetery.ontario.js';
|
||||||
export const config = Object.assign({}, cemeteryConfig);
|
export const config = Object.assign({}, cemeteryConfig);
|
||||||
config.aliases.occupancyStartDate = 'Purchase Date';
|
config.aliases.occupancyStartDate = 'Purchase Date';
|
||||||
|
|
@ -7,36 +8,45 @@ config.settings.lot.lotNamePattern =
|
||||||
config.settings.lot.lotNameHelpText = `Two digit cemetery-Block-Range-Lot-Grave, Interment number\n
|
config.settings.lot.lotNameHelpText = `Two digit cemetery-Block-Range-Lot-Grave, Interment number\n
|
||||||
ex. XX-BA-R41-L15-G3A, Interment 1`;
|
ex. XX-BA-R41-L15-G3A, Interment 1`;
|
||||||
const numericPadding = '00000';
|
const numericPadding = '00000';
|
||||||
|
const lotNameSortNameCache = new NodeCache({
|
||||||
|
stdTTL: 5 * 60,
|
||||||
|
useClones: false
|
||||||
|
});
|
||||||
export function lotNameSortNameFunction(lotName) {
|
export function lotNameSortNameFunction(lotName) {
|
||||||
try {
|
let sortName = lotNameSortNameCache.get(lotName) ?? '';
|
||||||
const lotNameSplit = lotName.toUpperCase().split('-');
|
if (sortName === '') {
|
||||||
const cleanLotNamePieces = [];
|
try {
|
||||||
for (let lotNamePiece of lotNameSplit) {
|
const lotNameSplit = lotName.toUpperCase().split('-');
|
||||||
if (cleanLotNamePieces.length === 0) {
|
const cleanLotNamePieces = [];
|
||||||
cleanLotNamePieces.push(lotNamePiece);
|
for (let lotNamePiece of lotNameSplit) {
|
||||||
continue;
|
if (cleanLotNamePieces.length === 0) {
|
||||||
}
|
cleanLotNamePieces.push(lotNamePiece);
|
||||||
let numericPiece = numericPadding;
|
continue;
|
||||||
let letterPiece = '';
|
|
||||||
const firstLetter = lotNamePiece.charAt(0);
|
|
||||||
lotNamePiece = lotNamePiece.slice(1);
|
|
||||||
for (const letter of lotNamePiece) {
|
|
||||||
if (letterPiece === '' && '0123456789'.includes(letter)) {
|
|
||||||
numericPiece += letter;
|
|
||||||
}
|
}
|
||||||
else {
|
let numericPiece = numericPadding;
|
||||||
letterPiece += letter;
|
let letterPiece = '';
|
||||||
|
const firstLetter = lotNamePiece.charAt(0);
|
||||||
|
lotNamePiece = lotNamePiece.slice(1);
|
||||||
|
for (const letter of lotNamePiece) {
|
||||||
|
if (letterPiece === '' && '0123456789'.includes(letter)) {
|
||||||
|
numericPiece += letter;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
letterPiece += letter;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
cleanLotNamePieces.push(firstLetter +
|
||||||
|
numericPiece.slice(-1 * numericPadding.length) +
|
||||||
|
letterPiece);
|
||||||
}
|
}
|
||||||
cleanLotNamePieces.push(firstLetter +
|
sortName = cleanLotNamePieces.join('-');
|
||||||
numericPiece.slice(-1 * numericPadding.length) +
|
|
||||||
letterPiece);
|
|
||||||
}
|
}
|
||||||
return cleanLotNamePieces.join('-');
|
catch {
|
||||||
}
|
sortName = lotName;
|
||||||
catch {
|
}
|
||||||
return lotName;
|
lotNameSortNameCache.set(lotName, sortName);
|
||||||
}
|
}
|
||||||
|
return sortName;
|
||||||
}
|
}
|
||||||
config.settings.lot.lotNameSortNameFunction = lotNameSortNameFunction;
|
config.settings.lot.lotNameSortNameFunction = lotNameSortNameFunction;
|
||||||
config.settings.lotOccupancy.occupantCityDefault = 'Sault Ste. Marie';
|
config.settings.lotOccupancy.occupantCityDefault = 'Sault Ste. Marie';
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import NodeCache from 'node-cache'
|
||||||
|
|
||||||
import { config as cemeteryConfig } from './config.cemetery.ontario.js'
|
import { config as cemeteryConfig } from './config.cemetery.ontario.js'
|
||||||
|
|
||||||
export const config = Object.assign({}, cemeteryConfig)
|
export const config = Object.assign({}, cemeteryConfig)
|
||||||
|
|
@ -13,43 +15,56 @@ config.settings.lot.lotNameHelpText = `Two digit cemetery-Block-Range-Lot-Grave,
|
||||||
|
|
||||||
const numericPadding = '00000'
|
const numericPadding = '00000'
|
||||||
|
|
||||||
|
const lotNameSortNameCache = new NodeCache({
|
||||||
|
stdTTL: 5 * 60,
|
||||||
|
useClones: false
|
||||||
|
})
|
||||||
|
|
||||||
export function lotNameSortNameFunction(lotName: string): string {
|
export function lotNameSortNameFunction(lotName: string): string {
|
||||||
try {
|
let sortName: string = lotNameSortNameCache.get(lotName) ?? ''
|
||||||
const lotNameSplit = lotName.toUpperCase().split('-')
|
|
||||||
|
|
||||||
const cleanLotNamePieces: string[] = []
|
if (sortName === '') {
|
||||||
|
try {
|
||||||
|
const lotNameSplit = lotName.toUpperCase().split('-')
|
||||||
|
|
||||||
for (let lotNamePiece of lotNameSplit) {
|
const cleanLotNamePieces: string[] = []
|
||||||
if (cleanLotNamePieces.length === 0) {
|
|
||||||
cleanLotNamePieces.push(lotNamePiece)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
let numericPiece = numericPadding
|
for (let lotNamePiece of lotNameSplit) {
|
||||||
let letterPiece = ''
|
if (cleanLotNamePieces.length === 0) {
|
||||||
|
cleanLotNamePieces.push(lotNamePiece)
|
||||||
const firstLetter = lotNamePiece.charAt(0)
|
continue
|
||||||
lotNamePiece = lotNamePiece.slice(1)
|
|
||||||
|
|
||||||
for (const letter of lotNamePiece) {
|
|
||||||
if (letterPiece === '' && '0123456789'.includes(letter)) {
|
|
||||||
numericPiece += letter
|
|
||||||
} else {
|
|
||||||
letterPiece += letter
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let numericPiece = numericPadding
|
||||||
|
let letterPiece = ''
|
||||||
|
|
||||||
|
const firstLetter = lotNamePiece.charAt(0)
|
||||||
|
lotNamePiece = lotNamePiece.slice(1)
|
||||||
|
|
||||||
|
for (const letter of lotNamePiece) {
|
||||||
|
if (letterPiece === '' && '0123456789'.includes(letter)) {
|
||||||
|
numericPiece += letter
|
||||||
|
} else {
|
||||||
|
letterPiece += letter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanLotNamePieces.push(
|
||||||
|
firstLetter +
|
||||||
|
numericPiece.slice(-1 * numericPadding.length) +
|
||||||
|
letterPiece
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanLotNamePieces.push(
|
sortName = cleanLotNamePieces.join('-')
|
||||||
firstLetter +
|
} catch {
|
||||||
numericPiece.slice(-1 * numericPadding.length) +
|
sortName = lotName
|
||||||
letterPiece
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return cleanLotNamePieces.join('-')
|
lotNameSortNameCache.set(lotName, sortName)
|
||||||
} catch {
|
|
||||||
return lotName
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return sortName
|
||||||
}
|
}
|
||||||
|
|
||||||
config.settings.lot.lotNameSortNameFunction = lotNameSortNameFunction
|
config.settings.lot.lotNameSortNameFunction = lotNameSortNameFunction
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue