记忆:后台显示区编辑器(地图点选)+ HasMap 陷阱 + 记忆索引压缩到 8919
This commit is contained in:
@@ -1204,7 +1204,36 @@ HTML,一行里必然带 `</script>`,一拒就把正常用法挡死了(我
|
||||
并集也亮(无洞)**,整体集合差异 0.013%;迷雾掩码 86,776 px 按并集解析式判**圆外 0 个**,
|
||||
两个圆内分别 52,609 / 46,757 px ⇒ 第二个圆真的被认了。
|
||||
|
||||
### 待办
|
||||
### 后台编辑器:地图点选(2026-10-12 当天补完)
|
||||
|
||||
后台的**地图点选编辑器**(专题表单内嵌地图、多圆增删拖拽)还没做 —— 这是用户诉求的
|
||||
第二半,专题表单目前仍是三个手填输入框(走兼容桥:合成一个圆写进 areas)。
|
||||
三个手填输入框(中心纬度/经度/半径)换成**地图 + 圆列表**(`static/js/topic-areas.js`:
|
||||
点地图加圆、拖圆心移动、拖圆边改半径、列表里可改半径/定位/删除/清空)。改动立刻写进
|
||||
隐藏字段 `areas`(JSON) 与 `crs`,随专题表单一起提交。复用 `/admin/fog-mask` 那套约定
|
||||
(`/api/map-config` 取底图、底图坐标系随表单带上、后端换算 GCJ-02)。
|
||||
地图初始视野取生效数据集的地点包围盒(`placesBounds`),一上来就落在自己的地界上。
|
||||
|
||||
⚠️ **三条容易再踩的**:
|
||||
|
||||
- 🔴 **`/admin/topics` 必须 `p.HasMap = true`**(`topicsAdminPage`)。漏了的表现极隐蔽:
|
||||
脚本加载了、`rondTopicAreas` 也在,就是 `window.L` 永远 undefined,`init` 静默返回、
|
||||
**控制台不报错**、页面看着像「什么都没发生」。守卫 `TestTopicsAdminPageLoadsLeaflet`
|
||||
(按函数体截取后断言含 `HasMap = true`)。
|
||||
- 🔴 **`areas` 的初值要渲染进隐藏字段**(`value="{{.Form.AreasJSON}}"`),JS 也从隐藏字段
|
||||
读初值而不是另传一份:脚本没加载上时提交的仍是服务端渲染的原值,否则**一次保存就把
|
||||
已有显示区静默清空**。守卫 `TestTopicAdminUsesMapEditorNotCoordInputs` 钉住初值来源、
|
||||
挂点 id 齐全、以及「三个旧输入框必须没了」(留着就是第二套只写第 1 个圆的入口)。
|
||||
- **上限两边各写一份**(JS `MAX_AREAS/MIN_KM/MAX_KM` vs Go `maxTopicAreas` 等),
|
||||
守卫 `TestTopicAreaLimitsMatchBetweenGoAndJS` 直接比对数字;前端还据此**禁用提交**。
|
||||
不一致的表现是「前端放行、后端拒绝,用户看到红字却不知道改哪里」。
|
||||
|
||||
小坑:半径输入框得套一层**定宽容器**(`.area-km-box`)——站点全局 input 规则是
|
||||
`width:100%` 且带 10 个 `:not()`(特异性 (0,11,1)),直接给 input 写宽度压不过。
|
||||
`topic-areas.js` 只把**纯函数**暴露给 node 单测,另加最小测试钩子 `api._map`
|
||||
供无头验证(同 `window.rondMap._state` 惯例)—— 不留把手就只能真拿鼠标点地图。
|
||||
|
||||
### gofmt / 行尾(同一天的附带结论)
|
||||
|
||||
`gofmt -l` 报「整文件重写」有两层原因:① Go 1.19 起 gofmt 会重排**文档注释**里的缩进列表
|
||||
(`// ① …` 要改成 tab 缩进块);② 工作区 CRLF 而 `.gitattributes` 声明 `eol=lf`。
|
||||
`gofmt -w` 归一后 `git diff` **没有额外噪声** ⇒ **blob 本来就是 LF,CRLF 只是检出产物**,
|
||||
而不是仓库内容问题(之前担心的「模板 CRLF 冲突」可以放下了)。
|
||||
|
||||
Reference in New Issue
Block a user