Compare commits

...

2 Commits

Author SHA1 Message Date
zzs
d3b4b92a85 wip: style change 2025-03-24 18:19:27 +08:00
zzs
0926eaa56f wip: insert table and delete table 2025-03-24 15:55:22 +08:00
2 changed files with 167 additions and 32 deletions

View File

@ -21,8 +21,8 @@ html,
body { body {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: visible; //overflow: visible;
overflow-x: hidden; //overflow-x: hidden;
color: var(--text-color); color: var(--text-color);
&.color-weak { &.color-weak {

View File

@ -75,8 +75,8 @@ onMounted(async () => {
let ActionId = '' let ActionId = ''
let MessageId = '' let MessageId = ''
if (data.content) if (data)
ActionId = data.content.ActionId ActionId = data.ActionId
if (data.MessageId) if (data.MessageId)
MessageId = data.MessageId MessageId = data.MessageId
@ -101,6 +101,18 @@ onMounted(async () => {
case 'LocateBookmark': case 'LocateBookmark':
handleLocateBookmark(data) handleLocateBookmark(data)
break break
case 'DeleteBookmark':
handleDeleteBookmark(data)
break
case 'InsertRowWithJSON':
handleInsertRowWithJSON(data)
break
case 'DeleteRowWithJSON':
handleDeleteRowWithJSON(data)
break
case 'ModifyStatus':
handleSendModifyStatus()
break
} }
// WOPI Client // WOPI Client
switch (MessageId) { switch (MessageId) {
@ -225,7 +237,7 @@ async function downloadAndSendCurrentEditFile() {
* @param data * @param data
*/ */
async function handleFileBinary(data: any) { async function handleFileBinary(data: any) {
const { name, type, buffer } = data.content.Payload const { name, type, buffer } = data.Payload
const blob = base64ToBlob(buffer, type) const blob = base64ToBlob(buffer, type)
const uploadResult = await uploadOneFile({ const uploadResult = await uploadOneFile({
filename: name, filename: name,
@ -260,7 +272,7 @@ function proxyReplaceWithJSON(data: any) {
Values: { Values: {
params: { params: {
type: 'string', type: 'string',
value: JSON.stringify(data.content.Payload), value: JSON.stringify(data.Payload),
}, },
}, },
}) })
@ -322,31 +334,38 @@ function sendMessageToCaller(data: any, ignore: boolean = false) {
* @param data * @param data
*/ */
function handlePythonScriptCallBack(data: any) { function handlePythonScriptCallBack(data: any) {
console.warn('======handlePythonScriptCallBack') try {
const Values = data.Values const Values = data?.Values
const success = Values.success as boolean const success = Values?.success as boolean
const commandName = Values.commandName const commandName = Values?.commandName
if (success) { if (success && Values) {
const jsonData = JSON.parse(Values.result.value) if (Values?.result?.value) {
sendMessageToCaller({ const jsonData = JSON.parse(Values.result.value)
ActionId: extractMethodName(commandName), sendMessageToCaller({
Success: success, ActionId: extractMethodName(commandName),
Payload: jsonData, Success: success,
Message: null, Payload: jsonData,
Timestamp: Date.now(), Message: null,
}) Timestamp: Date.now(),
} })
else { }
console.error(data) }
createMessage.error(`执行Python脚本失败: ${data.Values.result.value}`) else {
console.error(data)
createMessage.error(`执行Python脚本失败: ${data.Values.result.value}`)
sendMessageToCaller({ sendMessageToCaller({
ActionId: extractMethodName(commandName), ActionId: extractMethodName(commandName),
Success: success, Success: success,
Payload: null, Payload: null,
Message: data.Values.result.value, Message: data.Values.result.value,
Timestamp: Date.now(), Timestamp: Date.now(),
}) })
}
}
catch (e) {
console.error(e)
createMessage.error(`消息发送失败,查看控制台日志!`)
} }
} }
@ -371,7 +390,8 @@ function handleSaveFile() {
*/ */
function handleAddBookmark(data: any) { function handleAddBookmark(data: any) {
try { try {
const bookmarkName = data.content.Payload.bookmarkName const Payload = data.Payload
const bookmarkName = Payload.bookmarkName
if (!bookmarkName) if (!bookmarkName)
return return
sendMessageToWopiClient({ sendMessageToWopiClient({
@ -399,7 +419,8 @@ function handleAddBookmark(data: any) {
*/ */
function handleLocateBookmark(data: any) { function handleLocateBookmark(data: any) {
try { try {
const bookmarkName = data.content.Payload.bookmarkName const Payload = data.Payload
const bookmarkName = Payload.bookmarkName
if (!bookmarkName) if (!bookmarkName)
return return
sendMessageToWopiClient({ sendMessageToWopiClient({
@ -421,6 +442,120 @@ function handleLocateBookmark(data: any) {
} }
} }
/**
* 删除指定名称的书签
* @param data
*/
function handleDeleteBookmark(data: any) {
try {
const Payload = data.Payload
const bookmarkName = Payload.bookmarkName
if (!bookmarkName)
return
sendMessageToWopiClient({
MessageId: 'CallPythonScript',
SendTime: Date.now(),
ScriptFile: 'BookmarkOP.py',
Function: 'DeleteBookmark',
Values: {
params: {
type: 'string',
value: bookmarkName,
},
},
})
}
catch (e) {
console.error(e)
createMessage.error('执行失败,请查看控制台日志!')
}
}
/**
* 使用二维数组 + 任意标签名称给表格插入行
* @param data
*/
function handleInsertRowWithJSON(data: any) {
try {
const Payload = data.Payload
const bookmarkName = Payload.bookmarkName
const startRowIndex = Payload.startRowIndex
const dataArray = Payload.data
if (!bookmarkName || !dataArray)
return
sendMessageToWopiClient({
MessageId: 'CallPythonScript',
SendTime: Date.now(),
ScriptFile: 'BookmarkOP.py',
Function: 'InsertRowWithJSON',
Values: {
params: {
type: 'string',
value: JSON.stringify({
location_bookmark_name: bookmarkName,
data: dataArray,
start_row_index: startRowIndex,
}),
},
},
})
}
catch (e) {
console.error(e)
createMessage.error('执行失败,请查看控制台日志!')
}
}
/**
* 删除表格行
* @param data
*/
function handleDeleteRowWithJSON(data: any) {
try {
const Payload = data.Payload
const bookmarkName = Payload.bookmarkName
const startRowIndex = Payload.startRowIndex
const deleteRowCount = Payload.deleteRowCount
if (!bookmarkName || !startRowIndex)
return
sendMessageToWopiClient({
MessageId: 'CallPythonScript',
SendTime: Date.now(),
ScriptFile: 'BookmarkOP.py',
Function: 'DeleteRowWithJSON',
Values: {
params: {
type: 'string',
value: JSON.stringify({
location_bookmark_name: bookmarkName,
start_row_index: startRowIndex,
delete_row_count: deleteRowCount,
}),
},
},
})
}
catch (e) {
console.error(e)
createMessage.error('执行失败,请查看控制台日志!')
}
}
/**
* 第三方主动调用获取文件是否被修改
*/
function handleSendModifyStatus() {
sendMessageToCaller({
ActionId: 'ModifyStatus',
Payload: {
modify: editStatus.value.Modified,
},
Timestamp: Date.now(),
}, true)
}
function logEvent(e: MessageEvent) { function logEvent(e: MessageEvent) {
console.log('=============receive message start=======') console.log('=============receive message start=======')
console.log(typeof e.data) console.log(typeof e.data)