crabatool 1.0.415 → 1.0.416

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/tool/client.js +72 -25
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crabatool",
3
- "version": "1.0.415",
3
+ "version": "1.0.416",
4
4
  "description": "crabatool",
5
5
  "main": "index.js",
6
6
  "bin": {
package/tool/client.js CHANGED
@@ -34,38 +34,85 @@
34
34
 
35
35
  $addHandler(window, 'focus', function() {
36
36
  //$common.alert('浏览器被激活');
37
- if (files.length > 0) {
38
- // 更新了平台 全部刷新
39
- var mainPanel = $common.getMainPanel();
40
- if (!mainPanel || files.includes('js/craba.min.js') || files.includes('js/crabaEx.min.js') || files.includes('js/agency.js') || files.includes('skins/craba.min.css')) {
41
- window.location.reload();
42
- return;
43
- }
37
+ if (files.length <= 0)
38
+ return;
44
39
 
45
- var updateJs = false;
46
- var loadedJs = $jsLoader._getLoadedScripts();
47
- files.forEach(function(js) {
48
- if (loadedJs.includes(js)) {
49
- updateJs = true;
50
- }
51
- });
40
+ // 更新了平台 全部刷新
41
+ var mainPanel = $common.getMainPanel();
42
+ if (!mainPanel || files.includes('js/craba.min.js') || files.includes('js/crabaEx.min.js') || files.includes('js/agency.js')) {
43
+ window.location.reload();
44
+ return;
45
+ }
52
46
 
53
- if (updateJs) {
54
- window.location.reload();
55
- return;
47
+ console.log('文件变动:', files);
48
+ $app.isHotRefresh = true;
49
+ $craba._mods.def = new Date().getTime(); // 重置版本号,防止浏览器缓存
50
+
51
+ var cssLinks = [];
52
+ var gspxLinks = [];
53
+ var jsLinks = [];
54
+ var loadedJs = $jsLoader._getLoadedScripts();
55
+ files.forEach(function(filePath) {
56
+ // 没有加载过的js,不需要刷新
57
+ var index = loadedJs.findIndex(function(ls) {
58
+ return ls.includes(filePath);
59
+ });
60
+ if (index > -1) {
61
+ Array.removeAt(loadedJs, index);
62
+ jsLinks.push(filePath);
63
+ } else if (filePath.includes('.css')) {
64
+ cssLinks.push(filePath);
65
+ } else if (filePath.includes('.gspx')) {
66
+ gspxLinks.push(filePath);
56
67
  }
68
+ });
57
69
 
58
- //$typeCaches = {}; // 重置
59
- $app.gspxCacheList = {}; // 重置缓存
60
- $app.closeLoadingForm();
61
- $app.closeAlert();
70
+ // 1. 热更新css
71
+ cssLinks.forEach(function(url) {
72
+ var style = $skin._checkStyle('null', url);
73
+ if (style) $removeNode(style); // 删除老的css
74
+ });
75
+ var cssCount = cssLinks.length;
76
+ // 加载新的css
77
+ $skin.loadCss(cssLinks);
78
+ // 仅有css,不用刷新页面
79
+ if (cssCount == files.length) {
80
+ delete $app.isHotRefresh;
81
+ files = [];
82
+ $common.showOk('css热更新成功');
83
+ return;
84
+ }
62
85
 
63
- var activeForm = mainPanel.get_activeForm();
64
- activeForm.refresh(activeForm.get_url());
86
+ // 3. 热更新gspx
87
+ //$typeCaches = {}; // 重置
88
+ $app.gspxCacheList = {}; // 重置缓存
89
+ $app.closeLoadingForm();
90
+ $app.closeAlert();
91
+
92
+ var activeForm = mainPanel.get_activeForm();
93
+ if (!activeForm._firstAction) {
94
+ var action = activeForm._firstAction = activeForm.get_action();
95
+ action._parentAction = action.get_parent(); // 弹窗是动态获取的没有手动关联过
96
+ }
65
97
 
66
- $common.showOk('当前页面gspx热更新成功,js修改只能刷新浏览器');
98
+ // 先释放页面和action类型
99
+ activeForm.destroyContent();
67
100
 
68
- files = []; // 重置
101
+ // 2. 热更新js
102
+ if (jsLinks.length > 0) {
103
+ $common.loadScript({
104
+ srcs: jsLinks,
105
+ loadedFun: function() {
106
+ delete $app.isHotRefresh;
107
+ activeForm.refresh(activeForm.get_url());
108
+ $common.showOk('js热更新成功');
109
+ }
110
+ });
111
+ } else {
112
+ delete $app.isHotRefresh;
113
+ activeForm.refresh(activeForm.get_url());
69
114
  }
115
+ files = []; // 重置
116
+ $common.showOk('gspx热更新成功');
70
117
  });
71
118
  })();