You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.2 KiB
51 lines
1.2 KiB
export class Echarts { |
|
eventMap = new Map() |
|
constructor(webview) { |
|
this.webview = webview |
|
this.options = null |
|
} |
|
setOption() { |
|
this.options = arguments |
|
this.webview.evalJs(`setOption(${JSON.stringify(arguments)})`); |
|
} |
|
getOption() { |
|
return this.options |
|
} |
|
showLoading() { |
|
this.webview.evalJs(`showLoading(${JSON.stringify(arguments)})`); |
|
} |
|
hideLoading() { |
|
this.webview.evalJs(`hideLoading()`); |
|
} |
|
clear() { |
|
this.webview.evalJs(`clear()`); |
|
} |
|
dispose() { |
|
this.webview.evalJs(`dispose()`); |
|
} |
|
resize(size) { |
|
if(size) { |
|
this.webview.evalJs(`resize(${JSON.stringify(size)})`); |
|
} else { |
|
this.webview.evalJs(`resize()`); |
|
} |
|
} |
|
on(type, ...args) { |
|
const query = args[0] |
|
const useQuery = query && typeof query != 'function' |
|
const param = useQuery ? [type, query] : [type] |
|
const key = `${type}${useQuery ? JSON.stringify(query): '' }` |
|
const callback = useQuery ? args[1]: args[0] |
|
if(typeof callback == 'function'){ |
|
this.eventMap.set(key, callback) |
|
} |
|
this.webview.evalJs(`on(${JSON.stringify(param)})`); |
|
console.warn('nvue 暂不支持事件') |
|
} |
|
dispatchAction(type, options){ |
|
const handler = this.eventMap.get(type) |
|
if(handler){ |
|
handler(options) |
|
} |
|
} |
|
} |