[[Projects:projects]]:[[voyc]] ====== todo ====== Commit history: * 27 Feb 2023 - fix Antarctica and latClamp * 27 Feb 2023 - small-circle clipping for iteratorCustom as subclass of iteratorClip * 28 Feb 2023 - replace projtype with mix * 2 Mar 2023 - mixer table, soupcan projection * 2 Mar 2023 - replace Geo class with function lib * 2 Mar 2023 - rename geo to geolib, rename DualProjection to Projection * 4 Mar 2023 - option devmix, touch zoom and mousewheel zoom fasttwitch * 4 Mar 2023 - fix scale of cities * 4 Mar 2023 - let invert accommodate cylindrical stitch * 11 Mar 2023 - cover layer * 11 Mar 2023 - reorg voyc to global, geosketch to geo * 12 Mar 2023 - add layout submodule * 12 Mar 2023 - move geolib to submodule * 15 Mar 2023 - create and load schema geo, load osmtilemill, fix deserts * 15 Mar 2023 - reorg sql * 17 Apr 2023 - on save, create custom layer and add shapes * 23 Apr 2023 - on save, write to usergeo table todo: save sketch * on save, * require login * require layername (fc) * on new layer * add layer * make the layer visible * add layer menu button * on startup * extract and load usergeo layers * add layer menu buttons * fix localStorage layers sketch * draw across antimeridian general * db backup script cron: backup geo * change title to voyc * pt voyc.com docroot symlink to geo * db design for custom user data * palette table, defaults, named, user-custom * layer table, base, user-custom * custom geo data, within layers * grep: rewrite accounts to use config.ini instead of config.php * move and zoom don't work right for hires layer * cylindrical stitch not implemented for empire, animation, cover load data to schema geo * x load ground-cover from osmtilemill-georegions * fixup ground-cover from osmtilemill-georegions * x deserts * mountains * load data from natural earth data * fixup data from natural earth data * rivers * lakes * cities * load data from plunder * load data from voyc/fpd * empire * generate alpha table layer extraction scripts * extraction sql: sr, fc, lat, lng * ST_GeomFromGeoJSON, add Caspian Sea to lakes, simplify Caspian sea * Column show vs search * Layer features. * Caspian * Mountains * Tundra, plateau, steppe, * Empire: plunder vs fpd * sql for layer extraction, fpd * sql for search, plunder * Kush, Mongols Bugs * loading order, land first, add importance to list.sort and renametiles * pointInPolygon() does not always work, see Crystal Mountains * rank 1,2 gridlines hit only sometimes, seems to always work at intersection with other geoms * timepicker, arrow keys attempt string instead of numeric addition, until after first use of slider * timeslider appears on startup even when history layer is disabled * tile loading gets slower with every restart, until browser is cycled * hilite of cities * sets moved true, redraws whole screen ? * hittest on close group of cities returns the wrong one * hagstrand/lab is too big, move media out of git Features * setup ctx ahead of time, not at draw time, after layer creation, "fixup layer palettes" * db update for editing base layers * db update for custom layers * cities and treasure layers with point medalions * Little x to close label, main menu, search results * North button, appears when gamma non-zero * time * add << >> fast forward * when touching mouse to date, resolve to slider * clear hilite on zoom (or reposition label on every move/zoom redraw) * layer choice: * water, land, mountains, deserts - fast-twitch, quick draw * lores - when ready * hires - when ready and scale > 2.4 * animate projection switch * adjust latClamp along with mf * adjust co upwards during mercatorStretch and vice-versa * finish soupcan * mix globe-soupcan * mix soupcan-equirectangular * bookmarks, share Sketch * grep: rename sketchpad.js to sketch.js, we now have two versions of voyc.Sketch object * sketch custom objects crossing antimeridian * mask land https://stackoverflow.com/questions/18379818/canvas-image-masking-overlapping, ctx.clip() * auto close, and start new shape * double click (line and polygon) * drop the next point on the first point (polygon only) * distance * Globe: great circle * Mercator: rhumb line * https://javascript.hotexamples.com/examples/%40turf.rhumb-distance/-/default/javascript-default-function-examples.html * https://stackoverflow.com/questions/4541134/rhumb-line-calculation-javascript-to-php Palette * City icons * palette by x, scale, fc, c, * palette options * blur (feather) a border https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/filter * multi shapes * GeoIterator Callbacks * Drawing * Qualify * Choose palette * Scaling * Drawing pipeline (palette choices) * per group, * Per scale * per geom * editable palette * consider base palette vs custom palette * KEEP data and presentation separate * data goes in database, palette in local storage. * custom layers require 1 palette for each layer * named palettes * put palette in local storage * save user data * save custom layers to db, svc writeLayer * read custom layers from db, svc readLayer * store palettes in db, svc writePalette * read palettes from db, svc readPalette * save localStorage in db * Palette Editor * checkboxes: line,poly,point ^ ^ line ^ poly ^ point ^ | lineWidth | x | x | x | | Dash | x | x | x | | Radius | | | x | | Line color | x | x | x | | Fill color | | x | x | | Pattern | | x | | | Blur | | x | | | Opacity | | x | | Layer Editor * name * description * palettes (line/point/poly), scaling, multicolored * (Sketch and custom use three palettes) * Edit layer * x. save geom in custom01 * 2. save geom in any custom layer, from menu of custom layers * 3. edit an already existing shape * how do we select a shape for editing? * before saving, you can grab any point and move it * you can select any object on the page and begin editing it, moving points, close it if not already * how do we select a layer for editing? * 4. save in base layer, restricted shape type * setting: allow base layer editing * Edit custom layers * x put layer menu in local storage * new layer * attributes and data saved in database by userid * Public, private * Description, tags * custom palettes * Search engine Custom Layer Examples * Oceans: hand crafted * Countries historical * Continents, europe, Asia * Cities, metro, pop, historical * Boundaries for metro and megalopolis, zoom in metro for component cities * Marianna Trench * Rift valley, africa, home to birthplace of homo sapiens * CIA puppets * china expansion * international dateline * wars, battles * Groups: Balkans yugoslavakia, * stans, western Russia, * Where did WW1 start? * Tobacco to food industry * mountains, google "list of mountain ranges", "list of highest mountains", himalaya, karakorum, hindu kush * KHABIB NURMAGOMEDOV, dagestan, russia * Borat, Kazakhastan * mythological utopia * xanadu, marco polo, kublai khan, https://www.worldhistory.org/Xanadu/ * tibet (Lost horizon?, 7 years) * timbuktu * katmandu * Chokepoints * Cumberland * Two horns, Africa, Arabia, straits * Capes, good hope, cod, * Strait Malacca, piracy * Natural vs man-made, canal, bridge, turnpike, borders Crossing * Miles Davis twice * Berlin * Athens school * Kuyber Pass * greece-turkey * crusades, ghengis khan, marco polo (kublai khan) (chokepoint or coincidence?)