个人练习小项目开发日志postcard-maker

116 阅读7分钟

练习用小项目

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报错)会直接显示在页面报错上,需要修正为显示“未知错误!”