UNPKG

wpsjs

Version:

用于开发wps加载项的工具包

175 lines (161 loc) 5.41 kB
import Util from './js/util.js' import SystemDemo from './js/systemdemo.js' //这个函数在整个wps加载项中是第一个执行的 function OnAddinLoad(ribbonUI) { if (typeof window.Application.ribbonUI != 'object') { window.Application.ribbonUI = ribbonUI } if (typeof window.Application.Enum != 'object') { // 如果没有内置枚举值 window.Application.Enum = Util.WPS_Enum } //这几个导出函数是给外部业务系统调用的 window.openOfficeFileFromSystemDemo = SystemDemo.openOfficeFileFromSystemDemo window.InvokeFromSystemDemo = SystemDemo.InvokeFromSystemDemo window.Application.PluginStorage.setItem('EnableFlag', false) //往PluginStorage中设置一个标记,用于控制两个按钮的置灰 window.Application.PluginStorage.setItem('ApiEventFlag', false) //往PluginStorage中设置一个标记,用于控制ApiEvent的按钮label return true } var WebNotifycount = 0 function OnAction(control) { const eleId = control.Id switch (eleId) { case 'btnShowMsg': { const doc = window.Application.ActiveDocument if (!doc) { alert('当前没有打开任何文档') return } alert(doc.Name) } break case 'btnIsEnbable': { let bFlag = window.Application.PluginStorage.getItem('EnableFlag') window.Application.PluginStorage.setItem('EnableFlag', !bFlag) //通知wps刷新以下几个按饰的状态 window.Application.ribbonUI.InvalidateControl('btnIsEnbable') window.Application.ribbonUI.InvalidateControl('btnShowDialog') window.Application.ribbonUI.InvalidateControl('btnShowTaskPane') //window.Application.ribbonUI.Invalidate(); 这行代码打开则是刷新所有的按钮状态 break } case 'btnShowDialog': { window.Application.ShowDialog( Util.GetUrlPath() + Util.GetRouterHash() + '/dialog', '这是一个对话框网页', 400 * window.devicePixelRatio, 400 * window.devicePixelRatio, false ) break } case 'btnShowTaskPane': { let tsId = window.Application.PluginStorage.getItem('taskpane_id') if (!tsId) { let tskpane = window.Application.CreateTaskPane(Util.GetUrlPath() + Util.GetRouterHash() + '/taskpane') let id = tskpane.ID window.Application.PluginStorage.setItem('taskpane_id', id) tskpane.Visible = true } else { let tskpane = window.Application.GetTaskPane(tsId) tskpane.Visible = !tskpane.Visible } } break case 'btnApiEvent': { let bFlag = window.Application.PluginStorage.getItem('ApiEventFlag') let bRegister = bFlag ? false : true window.Application.PluginStorage.setItem('ApiEventFlag', bRegister) if (bRegister) { window.Application.ApiEvent.AddApiEventListener('DocumentNew', 'ribbon.OnNewDocumentApiEvent') } else { window.Application.ApiEvent.RemoveApiEventListener('DocumentNew', 'ribbon.OnNewDocumentApiEvent') } window.Application.ribbonUI.InvalidateControl('btnApiEvent') } break case 'btnWebNotify': { let currentTime = new Date() let timeStr = currentTime.getHours() + ':' + currentTime.getMinutes() + ':' + currentTime.getSeconds() window.Application.OAAssist.WebNotify( '这行内容由wps加载项主动送达给业务系统,可以任意自定义, 比如时间值:' + timeStr + ',次数:' + ++WebNotifycount, true ) } break default: break } return true } function GetImage(control) { const eleId = control.Id switch (eleId) { case 'btnShowMsg': return 'images/1.svg' case 'btnShowDialog': return 'images/2.svg' case 'btnShowTaskPane': return 'images/3.svg' default: } return 'images/newFromTemp.svg' } function OnGetEnabled(control) { const eleId = control.Id switch (eleId) { case 'btnShowMsg': return true case 'btnShowDialog': { let bFlag = window.Application.PluginStorage.getItem('EnableFlag') return bFlag } case 'btnShowTaskPane': { let bFlag = window.Application.PluginStorage.getItem('EnableFlag') return bFlag } default: break } return true } function OnGetVisible(control) { const eleId = control.Id console.log(eleId) return true } function OnGetLabel(control) { const eleId = control.Id switch (eleId) { case 'btnIsEnbable': { let bFlag = window.Application.PluginStorage.getItem('EnableFlag') return bFlag ? '按钮Disable' : '按钮Enable' } case 'btnApiEvent': { let bFlag = window.Application.PluginStorage.getItem('ApiEventFlag') return bFlag ? '清除新建文件事件' : '注册新建文件事件' } } return '' } function OnNewDocumentApiEvent(doc) { alert('新建文件事件响应,取文件名: ' + doc.Name) } //这些函数是给wps客户端调用的 export default { OnAddinLoad, OnAction, GetImage, OnGetEnabled, OnGetVisible, OnGetLabel, OnNewDocumentApiEvent }