Fixed custom generator by fixing dependencies

This commit is contained in:
Pieter Vander Vennet 2020-11-05 13:34:48 +01:00
parent d326e56b15
commit 9c53fe9868
5 changed files with 88 additions and 78 deletions

23
UI/LanguagePicker.ts Normal file
View file

@ -0,0 +1,23 @@
import {UIElement} from "./UIElement";
import {DropDown} from "./Input/DropDown";
import Locale from "./i18n/Locale";
export default class LanguagePicker {
public static CreateLanguagePicker(
languages : string[] ,
label: string | UIElement = "") {
if (languages.length <= 1) {
return undefined;
}
return new DropDown(label, languages.map(lang => {
return {value: lang, shown: lang}
}
), Locale.language);
}
}

View file

@ -1,7 +1,6 @@
import {UIEventSource} from "../../Logic/UIEventSource"; import {UIEventSource} from "../../Logic/UIEventSource";
import {UIElement} from "../UIElement"; import {UIElement} from "../UIElement";
import {LocalStorageSource} from "../../Logic/Web/LocalStorageSource"; import {LocalStorageSource} from "../../Logic/Web/LocalStorageSource";
import {DropDown} from "../Input/DropDown";
export default class Locale { export default class Locale {
@ -18,21 +17,6 @@ export default class Locale {
} }
return source; return source;
} }
public static CreateLanguagePicker(
languages : string[] ,
label: string | UIElement = "") {
if (languages.length <= 1) {
return undefined;
}
return new DropDown(label, languages.map(lang => {
return {value: lang, shown: lang}
}
), Locale.language);
}
} }

View file

@ -131,7 +131,7 @@ export default class Translations {
for (const subKey in tr) { for (const subKey in tr) {
if (Translations.isTranslation(tr[subKey])) { if (Translations.isTranslation(tr[subKey])) {
copy[subKey] = new Translation(tr[subKey]); copy[subKey] = new Translation(tr[subKey]);
} else if(tr[subKey].translations === undefined /**should not be a translation alreay*/){ } else if(tr[subKey].translations === undefined /**should not be a translation already*/){
queue.push(tr[subKey]); queue.push(tr[subKey]);
} }
} }

View file

@ -1,6 +1,5 @@
import {UIElement} from "./UI/UIElement"; import {UIElement} from "./UI/UIElement";
import * as $ from "jquery" import * as $ from "jquery"
import {FixedUiElement} from "./UI/Base/FixedUiElement";
export class Utils { export class Utils {
@ -156,61 +155,4 @@ export class Utils {
} }
public static generateStats(action:(stats:string) => void) {
// Binary searches the latest changeset
function search(lowerBound: number,
upperBound: number,
onCsFound: ((id: number, lastDate: Date) => void),
depth = 0) {
if (depth > 30) {
return;
}
const tested = Math.floor((lowerBound + upperBound) / 2);
console.log("Testing", tested)
Utils.changesetDate(tested, (createdAtDate: Date) => {
new FixedUiElement(`Searching, value between ${lowerBound} and ${upperBound}. Queries till now: ${depth}`).AttachTo('maindiv')
if (lowerBound + 1 >= upperBound) {
onCsFound(lowerBound, createdAtDate);
return;
}
if (createdAtDate !== undefined) {
search(tested, upperBound, onCsFound, depth + 1)
} else {
search(lowerBound, tested, onCsFound, depth + 1);
}
})
}
search(91000000, 100000000, (last, lastDate: Date) => {
const link = "http://osm.org/changeset/" + last;
const delta = 100000;
Utils.changesetDate(last - delta, (prevDate) => {
const diff = (lastDate.getTime() - prevDate.getTime()) / 1000;
// Diff: seconds needed/delta changesets
const secsPerCS = diff / delta;
const stillNeeded = 1000000 - (last % 1000000);
const timeNeededSeconds = Math.floor(secsPerCS * stillNeeded);
const secNeeded = timeNeededSeconds % 60;
const minNeeded = Math.floor(timeNeededSeconds / 60) % 60;
const hourNeeded = Math.floor(timeNeededSeconds / (60 * 60)) % 24;
const daysNeeded = Math.floor(timeNeededSeconds / (24 * 60 * 60));
const result = `Last changeset: <a href='${link}'>${link}</a><br/>We needed ${(Math.floor(diff / 60))} minutes for the last ${delta} changesets.<br/>
This is around ${secsPerCS} seconds/changeset.<br/> The next million (still ${stillNeeded} away) will be broken in around ${daysNeeded} days ${hourNeeded}:${minNeeded}:${secNeeded}`
action(result);
})
}
);
}
} }

65
test.ts
View file

@ -1,4 +1,4 @@
//* /*
import {UIEventSource} from "./Logic/UIEventSource"; import {UIEventSource} from "./Logic/UIEventSource";
@ -21,7 +21,68 @@ new FeatureInfoBox(src, SharedLayers.sharedLayers["ghost_bike"]).AttachTo('maind
import {Utils} from "./Utils"; import {Utils} from "./Utils";
import {FixedUiElement} from "./UI/Base/FixedUiElement"; import {FixedUiElement} from "./UI/Base/FixedUiElement";
Utils.generateStats((stats) => {
function generateStats(action: (stats: string) => void) {
// Binary searches the latest changeset
function search(lowerBound: number,
upperBound: number,
onCsFound: ((id: number, lastDate: Date) => void),
depth = 0) {
if (depth > 30) {
return;
}
const tested = Math.floor((lowerBound + upperBound) / 2);
console.log("Testing", tested)
Utils.changesetDate(tested, (createdAtDate: Date) => {
new FixedUiElement(`Searching, value between ${lowerBound} and ${upperBound}. Queries till now: ${depth}`).AttachTo('maindiv')
if (lowerBound + 1 >= upperBound) {
onCsFound(lowerBound, createdAtDate);
return;
}
if (createdAtDate !== undefined) {
search(tested, upperBound, onCsFound, depth + 1)
} else {
search(lowerBound, tested, onCsFound, depth + 1);
}
})
}
search(91000000, 100000000, (last, lastDate: Date) => {
const link = "http://osm.org/changeset/" + last;
const delta = 100000;
Utils.changesetDate(last - delta, (prevDate) => {
const diff = (lastDate.getTime() - prevDate.getTime()) / 1000;
// Diff: seconds needed/delta changesets
const secsPerCS = diff / delta;
const stillNeeded = 1000000 - (last % 1000000);
const timeNeededSeconds = Math.floor(secsPerCS * stillNeeded);
const secNeeded = timeNeededSeconds % 60;
const minNeeded = Math.floor(timeNeededSeconds / 60) % 60;
const hourNeeded = Math.floor(timeNeededSeconds / (60 * 60)) % 24;
const daysNeeded = Math.floor(timeNeededSeconds / (24 * 60 * 60));
const result = `Last changeset: <a href='${link}'>${link}</a><br/>We needed ${(Math.floor(diff / 60))} minutes for the last ${delta} changesets.<br/>
This is around ${secsPerCS} seconds/changeset.<br/> The next million (still ${stillNeeded} away) will be broken in around ${daysNeeded} days ${hourNeeded}:${minNeeded}:${secNeeded}`
action(result);
})
}
);
}
generateStats((stats) => {
new FixedUiElement(stats).AttachTo('maindiv') new FixedUiElement(stats).AttachTo('maindiv')
}) })
//*/ //*/