@shijiu/jsview-vue 2.0.1021 → 2.0.1073

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 (33) hide show
  1. package/package.json +4 -3
  2. package/utils/JsViewEngineWidget/CheckType.js +82 -0
  3. package/utils/JsViewEngineWidget/MetroWidget/AnimationManager.ts +72 -0
  4. package/utils/JsViewEngineWidget/MetroWidget/Const.ts +24 -0
  5. package/utils/JsViewEngineWidget/MetroWidget/ListWidget.vue +295 -0
  6. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +110 -1651
  7. package/utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js +1867 -0
  8. package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.ts +111 -0
  9. package/utils/JsViewEngineWidget/MetroWidget/RenderItem.ts +153 -0
  10. package/utils/JsViewEngineWidget/MetroWidget/VisibleInfo.ts +43 -0
  11. package/utils/JsViewEngineWidget/MetroWidget/WidgetRectInfo.ts +49 -0
  12. package/utils/JsViewEngineWidget/TemplateParser/CommonMetroTemplate.ts +1424 -0
  13. package/utils/JsViewEngineWidget/TemplateParser/Fence.ts +135 -0
  14. package/utils/JsViewEngineWidget/TemplateParser/ListMetroTemplate.ts +177 -0
  15. package/utils/JsViewEngineWidget/TemplateParser/MetroTemplate.ts +334 -0
  16. package/utils/JsViewEngineWidget/TemplateParser/TemplateItemAdder.ts +147 -0
  17. package/utils/JsViewEngineWidget/TemplateParser/index.ts +4 -0
  18. package/utils/JsViewEngineWidget/{WidgetCommon.js → WidgetCommon.ts} +64 -71
  19. package/utils/JsViewEngineWidget/index.js +2 -1
  20. package/utils/JsViewPlugin/JsvAudio/AudioProxy.js +26 -1
  21. package/utils/JsViewPlugin/JsvAudio/JsvAudio.vue +120 -133
  22. package/utils/JsViewPlugin/JsvAudio/JsvAudioBrowser.vue +11 -7
  23. package/utils/JsViewPlugin/JsvPlayer/GetVersion.js +1 -1
  24. package/utils/JsViewPlugin/JsvPlayer/JsvPlayerBrowser.vue +379 -41
  25. package/utils/JsViewPlugin/JsvPlayer/version.mjs +5 -5
  26. package/utils/JsViewVueTools/JsvHashHistory.js +2 -1
  27. package/utils/JsViewVueWidget/JsvRadarChart.vue +220 -0
  28. package/utils/JsViewVueWidget/JsvSystemAudio.vue +76 -44
  29. package/utils/JsViewVueWidget/index.js +1 -0
  30. package/utils/JsViewEngineWidget/MetroWidget/Const.js +0 -11
  31. package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.js +0 -136
  32. package/utils/JsViewEngineWidget/MetroWidget/ToolFunctions.js +0 -18
  33. package/utils/JsViewEngineWidget/TemplateParser.js +0 -2004
@@ -13,10 +13,6 @@ export default {
13
13
  * 属性,Boolean类型,true表示自动播放,默认false。
14
14
  */
15
15
  autoplay: { type: Boolean, default: false },
16
- /**
17
- * 属性,String类型,播放器实例索引,同样的key使用同一个播放器实例。
18
- */
19
- playerKey: { type: String, default: null },
20
16
  /**
21
17
  * 属性,Boolean类型,true表示静音,默认false。
22
18
  */
@@ -107,46 +103,7 @@ export default {
107
103
  };
108
104
  },
109
105
  mounted() {
110
- let key = "JsvAudio_" + Math.floor(Math.random() * 10000);
111
- if (this.playerKey) {
112
- key = this.playerKey;
113
- }
114
- console.log("player key:" + key);
115
-
116
- this.audio = new Audio();
117
- this.registerEvent();
118
- if (this.src && this.src !== "") {
119
- let realUrl
120
- if (window.JsView) {
121
- // jsview上
122
- realUrl = new window.JsView.Dom.UrlRef(this.src).href;
123
- } else {
124
- realUrl = this.src;
125
- }
126
- this.audio.src = realUrl;
127
- }
128
-
129
- if (this.autoplay) {
130
- this.audio.autoplay = this.autoplay;
131
- }
132
-
133
- if (this.muted) {
134
- this.audio.muted = this.muted;
135
- }
136
-
137
- if (this.loop) {
138
- this.audio.loop = this.loop;
139
- }
140
- if (this.preDownload) {
141
- this.audio.predownload = this.preDownload;
142
- }
143
- this.onRef?.(this.audio);
144
- //初始化
145
- Promise.resolve().then(() => {
146
- if (this.audio) {
147
- this.audio.confirmInitSetup?.();
148
- }
149
- });
106
+ this.Jsvinit()
150
107
  },
151
108
 
152
109
  beforeUnmount() {
@@ -155,6 +112,7 @@ export default {
155
112
  this.audio.releaseResource?.();
156
113
  this.audio.onPlatformDestroy?.();
157
114
  this.onRef?.(null);
115
+ this.unregisterOnVisibilityChange()
158
116
  }
159
117
  },
160
118
 
@@ -170,6 +128,80 @@ export default {
170
128
  this.audio.addEventListener("audiofocusgain", this.onAudioFocusGain);
171
129
  }
172
130
  },
131
+ onVisibilityChange(status) {
132
+ if (status.status === "show") {
133
+ this.onJsViewShow();
134
+ } else if (status.status === "hide") {
135
+ this.onJsViewHide();
136
+ }
137
+ },
138
+ registerOnVisibilityChange() {
139
+ if (window.JsView) {
140
+ window.JsView.onVisibilityChange(this.onVisibilityChange);
141
+ }
142
+ },
143
+ unregisterOnVisibilityChange() {
144
+ if (window.JsView) {
145
+ window.JsView.removeEventCallback(this.onVisibilityChange);
146
+ }
147
+ },
148
+ onJsViewHide() {
149
+ if (this.audio) {
150
+ //释放
151
+ if (!this.audio.paused) {
152
+ this.stopByOnHide = true;
153
+ }
154
+ this.audio.unload();
155
+ }
156
+ },
157
+ onJsViewShow() {
158
+ //重新加载
159
+ if (!this.audio) {
160
+ this.Jsvinit()
161
+ }
162
+
163
+ if (this.stopByOnHide) {
164
+ this.stopByOnHide = false;
165
+ this.Jsvinit()
166
+ }
167
+ },
168
+ Jsvinit() {
169
+ this.audio = new Audio();
170
+ this.registerEvent();
171
+ if (this.src && this.src !== "") {
172
+ let realUrl
173
+ if (window.JsView) {
174
+ // jsview上
175
+ realUrl = new window.JsView.Dom.UrlRef(this.src).href;
176
+ } else {
177
+ realUrl = this.src;
178
+ }
179
+ this.audio.src = realUrl;
180
+ }
181
+
182
+ if (this.autoplay) {
183
+ this.audio.autoplay = this.autoplay;
184
+ }
185
+
186
+ if (this.muted) {
187
+ this.audio.muted = this.muted;
188
+ }
189
+
190
+ if (this.loop) {
191
+ this.audio.loop = this.loop;
192
+ }
193
+ if (this.preDownload) {
194
+ this.audio.predownload = this.preDownload;
195
+ }
196
+ this.onRef?.(this.audio);
197
+ //初始化
198
+ Promise.resolve().then(() => {
199
+ if (this.audio) {
200
+ this.audio.confirmInitSetup?.();
201
+ }
202
+ });
203
+ this.registerOnVisibilityChange()
204
+ }
173
205
  },
174
206
  };
175
207
  </script>
@@ -41,3 +41,4 @@ export { default as JsvTouchContainer } from "./JsvTouchContainer.vue";
41
41
  export { default as JsvTransparentDiv } from "./JsvTransparentDiv.vue";
42
42
  export { default as JsvVideo } from "./JsvVideo.vue";
43
43
  export { default as JsvSystemAudio } from "./JsvSystemAudio.vue";
44
+ export { default as JsvRadarChart} from "./JsvRadarChart.vue";
@@ -1,11 +0,0 @@
1
- /*
2
- * @Author: ChenChanghua
3
- * @Date: 2022-09-21 10:09:15
4
- * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-09-21 10:15:34
6
- * @Description: file content
7
- */
8
- export const METRO_WIDGET = {
9
- SLIDE: 0x1,
10
- CHILD_SLIDE_EVENT: 0x1 << 1,
11
- };
@@ -1,136 +0,0 @@
1
- /*
2
- * @Author: ChenChanghua
3
- * @Date: 2022-06-10 10:17:35
4
- * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-06-10 10:17:36
6
- * @Description: file content
7
- */
8
- class ItemRange {
9
- constructor(start, end) {
10
- this.start = start;
11
- this.end = end;
12
- }
13
-
14
- _merge(from, to) {
15
- if (to.ifOverlap(from)) {
16
- to.start = Math.min(from.start, to.start);
17
- to.end = Math.max(from.end, to.end);
18
- return true;
19
- }
20
- return false;
21
- }
22
-
23
- merge(from) {
24
- let to = this.clone();
25
- this._merge(from, to);
26
- return to;
27
- }
28
-
29
- selfMerge(from) {
30
- return this._merge(from, this);
31
- }
32
-
33
- ifOverlap(range) {
34
- return this.start <= range.end && range.start <= this.end;
35
- }
36
-
37
- clone() {
38
- return new ItemRange(this.start, this.end);
39
- }
40
- }
41
-
42
- function mergeRangeList(list_1, list_2) {
43
- const result_list = list_1.concat();
44
- for (let list_2_item of list_2) {
45
- let item = list_2_item.clone();
46
- for (let i = result_list.length - 1; i >= 0; i--) {
47
- if (item.selfMerge(result_list[i])) {
48
- result_list.splice(i, 1);
49
- }
50
- }
51
- result_list.push(item);
52
- }
53
- return result_list;
54
- }
55
-
56
- class PageUpdater {
57
- constructor(update_func) {
58
- this.tmpRangeList = [];
59
- this.rangeList = [];
60
-
61
- this._updateFunc = update_func;
62
- }
63
-
64
- update(
65
- template,
66
- visible_start,
67
- visible_end,
68
- anchor_id,
69
- merge_tmp,
70
- permanent_list,
71
- extension_range = 0
72
- ) {
73
- if (!template || template.GetLength() === 0) return;
74
- let visible_range = template.GetVisibleItemList(
75
- visible_start - extension_range,
76
- visible_end + extension_range,
77
- anchor_id
78
- );
79
- if (!visible_range) {
80
- return;
81
- }
82
- let pre_tmp = this.tmpRangeList;
83
- let pre_list = this.rangeList;
84
- let range = new ItemRange(
85
- visible_range.visibleStart,
86
- visible_range.visibleEnd
87
- );
88
- this.rangeList = [range];
89
- if (permanent_list) {
90
- let permanent_show_list = permanent_list.filter((item) => {
91
- let result = false;
92
- if (item.alreadyShow || item.index <= range.end) {
93
- item.alreadyShow = true;
94
- result = true;
95
- }
96
- return result;
97
- });
98
- let permanent_range_list = permanent_show_list.map((item) => {
99
- return new ItemRange(item.index, item.index);
100
- });
101
- this.rangeList = mergeRangeList([range], permanent_range_list);
102
- }
103
- if (pre_list.length > 0) {
104
- this.tmpRangeList = mergeRangeList(this.rangeList, pre_list);
105
- if (merge_tmp) {
106
- this.tmpRangeList = mergeRangeList(this.tmpRangeList, pre_tmp);
107
- }
108
- }
109
- }
110
-
111
- debugPrint() {
112
- return (
113
- "list: " +
114
- JSON.stringify(this.rangeList) +
115
- ", tmplist: " +
116
- JSON.stringify(this.tmpRangeList)
117
- );
118
- }
119
-
120
- apply() {
121
- this.tmpRangeList = [];
122
- this._updateFunc(this.rangeList);
123
- }
124
-
125
- applyTmp() {
126
- if (this.tmpRangeList.length > 0) {
127
- this._updateFunc(this.tmpRangeList);
128
- }
129
- }
130
-
131
- getRange() {
132
- return this.rangeList[0];
133
- }
134
- }
135
-
136
- export { PageUpdater };
@@ -1,18 +0,0 @@
1
- /*
2
- * @Author: ChenChanghua
3
- * @Date: 2022-06-17 15:51:19
4
- * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-06-17 16:02:28
6
- * @Description: file content
7
- */
8
- const bindFunctions = (obj, target) => {
9
- for (let key in obj) {
10
- if (typeof obj[key] === "function") {
11
- obj[key] = obj[key].bind(target);
12
- } else if (typeof obj[key] === "object") {
13
- bindFunctions(obj[key], target);
14
- }
15
- }
16
- };
17
-
18
- export { bindFunctions };