练习用小项目
2023/6/16 (front)
-
1. 解决postcard区域移动后出现重影的问题
原因: 读取明信片并设置宽度高度时,拿到的宽度高度是undefined。(canvas此种情况会造成重影)stringfy canvas后,其中并没有宽度高度数据。
解决: 方案1: 数据库除了content外,增加width和height两列。
方案2: 还是只存储一个content对象,但是将width和height以及content本身都作为属性。选择方案2.
-
6/18补充:
stringfy单针对于canvas对象时,是没有问题的,但如果是一个obj的一个属性是canvas,此时stringfy会栈溢出,使用外部的一个js包似乎parse又会出现问题。最终选择的解决方案是:先将canvas进行stringfy,再存入到obj的属性中,再将obj进行stringfy, parse时同样也是进行双重parse。
-
-
2. 增加没有读取到明信片信息时的处理
(1)前端: 读取到的最近明信片为空 -> return
2023/6/18
(front)
- 1. 解决缩小方法画布失效问题(之前是好的,尴尬)
原因:zoom的基准变量是data中变量的属性,它的初使值为data中另一个var的属性,我直接用了
data() {
return{
var1: {
property1: xx,
},
var2:{
property1: this.property1 // 应该是代码修改中导致的错误,但是即使再修改为:this.var1.property1,也会出现报错。
}
}
}
解决:改成在方法中为var2的属性赋值。
- 2. 修正折叠按钮不能点击的问题 难度:1
- 3. 实现明信片自动保存功能; 难度:5
3.1 修改前端方法为能传递明信片id(8:35 -8:50 15min )
3.2 实现修改尺寸背景后自动保存(8:50 - 10:17 未完成 1h27min- 修正isFirstLoaded属性加错位置导致每次刷新都调用保存方法的问题;10min
- 修正更新时版本后未更新的问题(前段参数属性位置加错);5min
- 解决设定尺寸背景后fabricjs报错Maximum call stack size exceeded 原因:要stringfy的obj太大了,导致报错; 解决:双重parse
- 解决后端报错:mybatis漏掉了resulttype
2023/6/19
- 3.3 修正后端更新postcard版本号时的问题;(又测试下似乎没问题)
- 3.4 实现自动保存时出现loading图标; 保存后显示对勾图标; (完成了加入这块区域的部分)3
2023/6/20
- 3.4 图标和状态变量加入成功;
2023/6/21
- 3.4 实现根据api调用情况控制图标状态;
2023/6/22
- 3.5 实现插入图片自动保存;
- 3.6 实现删除元素自动保存;
- 3.7.1实现修改元素(尺寸/位置等)的自动保存
- 3.7.2实现其他方面事件的自动保存:
1.插入文本框ok;2.插入形状ok; 3.修改形状颜色; 4.修改文字字体颜色等大小
2023/6/23
- 3.7.3实现按钮字体大小的修改和自动保存
- 3.7.4实现元素前后顺序的改变和自动保存;
竟然两天都没有做吗!!
2023/6/26
- 3.7.3 实现输入字号后按下回车字体大小的改变(限制只能输入数字);
2023/6/27
- perf: 实现连续点击+-号改变字体时只在最后调用电文;
- fix: 刚载入空白画布不要保存(x刚载入数据库画布不要显示已保存)
- perf: 保存上次的缩放数据(1)(把vux文件部分写完啦。)
2023/6/28
- perf: 保存上次的缩放数据(2)
初期载入: 假如vuex中有保存postcard id 对应的zoom数据,则按照数据进行zoom;(read)
当新建明信片或是更换时,清除zoom数据;()clear
页面关闭刷新时存储zoom
2023/6/29
- perf: 保存上次的缩放数据(2)实现上面的思路;
- fix:上面的小数点问题
- 加入新建按钮
- 测试新建后的clear效果
- 晚上todo:init方法需要调整,现在点击新建后zoom数据不是100,但是刚开始载入别的明信片时,也调了init,一开始zoom会是100.
加入post card id的必要性?
假设不加入id,如果用户在明信片选择窗口点击一个明信片,都会将zoom初始化为1, 假设用户点击的是当前选中的,也是如此。
当前还有一种处理是:用户当前选中的会处于无法点击状态,并标注“当前”字样。感觉好像这种处理更好。
- 宽高input框的同步; // 需要触发它的时机: // 1. 载入数据库画布时; // 2. 新建画布的时候 // 2 很好解决,1分为:初次载入和点击postcards一览中的明信片进行载入;但是1的这些情况本质上也是一样的,之后可以考虑一些方法内容合并;暂且先不考虑一览的情况;
自己直接改vuex的state数据是不会有效果的,因为并没有commit到local storage里。 初次在vuex中写时,会自动commit一次(初始化)。所以即使有的state之后删了,local storage还是有之前的数据;
2023/6/30
- fix: 点击一次画布信息提交,保存会被触发3次? (6/30测试又是正常的...)
- chore: git最近的前端内容提交一下
- perf: 将字体编辑和形状编辑区放在页面层级最上面;
2023/7/1
- perf: 画布背景白色的时候,会看不到显示颜色的区域(解决方案是加上shadow →自分がSHADOWのCSSを上書きました)
- perf: bar先显示100,然后才显示上次的zoom数据; perf: bar先显示100,然后才显示上次的zoom数据;(在mount之前就把这个数据设置好)
目前是把restore zoom数据的步骤放在了读取db明信片中,但是这步完全可以放到更早之前做, 读取db甚至都可以更早之前做;也就是mount之前把明信片读好;
又发现它们本来就在created中...
zoom的数值的初始值似乎始终会显示,即使设置为空,也会有一个屏幕闪动的过程;
把恢复上次数据的方法放在了bar中,而不是放在canvas中然后emit,这样解决了blink的问题,canvas和bar里各放一个restore方法,bar负责恢复bar上的百分比数据,canvas负责恢复画布缩放效果;
2023/7/2
- perf: 画布blink的问题,先显示100%,然后才显示上次的缩放效果;
不完全确定,目前不先显示100%,但是还是会有blink的过程,疑似是fabricjs本身; - perf: 颜色区域blink的问题(改成初始值清空);
这些blink的问题一开始就应该注意到(当然需要经验); - fix: 更改画布尺寸后,画布 显示的是100%比例的,但是bar还是显示的是之前的缩放数据;(择一而行);(但是更改颜色不影响)
- fix: 目前画布信息只要点提交,即使未变更信息也会保存画布;
- perf: 收起菜单后,箭头按钮不应消失;
- perf: 新建按钮的样式
2023/7/3
- fix: 查看读取明信片的问题; (sql排序少写了个desc)
2023/7/5
3.8 实现撤销重做功能; 难点在于5步。
假设在version10, 此时点撤销可以点到version5,然后不可以点。version5需要做一个标记,即使下次载入时是version5, 撤销按钮也是不可用的。
假设是version5, 最多可以前进到version10,
每次撤销,需要更新postcard的当前版本号,并载入新的版本。
假设用户回退到version5, 这时做了一步新操作,是version11, 此时点撤销,因为version5有标记,所以最多只能回退到version5, 此时撤销不是verison-1的问题, 所以还需要别的标记,isvalid标记,
理论上。每次连续更新5次,前面的就变成了not valid,它们对用户来说已经消失在了数据长河。
如果由10回到5, 这次加入新操作,此时version时11,此时如果撤销,是到5;
- undo和redo是否可以合并一个方法?
3.9 vip图片权限功能;
实现文字大小修改; todo: 后台错误(例如mybatis报错)会直接显示在页面报错上,需要修正为显示“未知错误!”