Refactoring: split NameSuggestionIndex into parts

This commit is contained in:
Pieter Vander Vennet 2025-04-27 22:54:51 +02:00
parent 4899065fc4
commit cf7e005fd1
5 changed files with 103 additions and 139 deletions

View file

@ -12,7 +12,7 @@ import TagInfo from "../src/Logic/Web/TagInfo"
import { TagsFilter } from "../src/Logic/Tags/TagsFilter"
class GenerateStats extends Script {
class GenerateNsiStats extends Script {
async createOptimizationFile(includeTags = true) {
ScriptUtils.fixUtils()
const layers = <LayerConfigJson[]>known_layers["layers"]
@ -139,7 +139,7 @@ class GenerateStats extends Script {
path
)
}
const nsi = await NameSuggestionIndex.getNsiIndex("./assets/data/nsi/")
const nsi = await NameSuggestionIndex.singleton()
const allBrandNames: string[] = Utils.Dedup(
nsi.allPossible(<any>type).map((item) => item.tags[type])
)
@ -182,7 +182,7 @@ class GenerateStats extends Script {
)
}
async main(_: string[]) {
async main() {
const target = "./public/assets/data/nsi/"
const basepath = target + "stats/"
{
@ -202,4 +202,4 @@ class GenerateStats extends Script {
}
}
new GenerateStats().run()
new GenerateNsiStats().run()

View file

@ -1,5 +1,5 @@
import Script from "./Script"
import NameSuggestionIndex, { NSIItem } from "../src/Logic/Web/NameSuggestionIndex"
import NameSuggestionIndex, { NamgeSuggestionWikidata, NSIItem } from "../src/Logic/Web/NameSuggestionIndex"
import * as nsiWD from "../node_modules/name-suggestion-index/dist/wikidata.min.json"
import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "fs"
import ScriptUtils from "./ScriptUtils"
@ -42,8 +42,8 @@ class NsiLogos extends Script {
let path = basePath + nsiItem.id
const logos = nsiWD["wikidata"][nsiItem?.tags?.[type + ":wikidata"]]?.logos
const nsi = await NameSuggestionIndex.getNsiIndex("./assets/data/nsi/")
if (nsi.isSvg(nsiItem, type)) {
const nsiWd = new NamgeSuggestionWikidata(nsiWD)
if (nsiWd.isSvg(nsiItem, type)) {
path = path + ".svg"
}
@ -99,13 +99,17 @@ class NsiLogos extends Script {
return false
}
private async getAllPossibleNsiItems(type: string): Promise<NSIItem[]> {
const nsi = await NameSuggestionIndex.singleton()
return nsi.allPossible(type)
}
/**
* Returns
* @param type
*/
async downloadFor(type: string): Promise<{ downloadCount: number; errored: number }> {
const nsi = await NameSuggestionIndex.getNsiIndex("./assets/data/nsi/")
const items = nsi.allPossible(type)
const items = await this.getAllPossibleNsiItems(type)
const basePath = "./public/assets/data/nsi/logos/"
let downloadCount = 0
let errored = 0
@ -158,8 +162,8 @@ class NsiLogos extends Script {
}
private async generateRendering(type: string) {
const nsi = await NameSuggestionIndex.getNsiIndex("./assets/data/nsi/")
const items = nsi.allPossible(type)
const nsi = await NameSuggestionIndex.singleton()
const items = await this.getAllPossibleNsiItems(type)
const filterOptions: FilterConfigOptionJson[] = items.map((item) => {
return {
question: item.displayName,