52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
import jsMind from '../jsmind/jsmind.js'
|
|
import '../jsmind/plugins/jsmind.draggable-node.js'
|
|
import { JsmindSearch } from './custom.search.js'
|
|
import { JsmindToolbar } from './custom.toolbar.js'
|
|
import { mockSearchApi } from './custom.config.js'
|
|
|
|
/**
|
|
* 初始化 jsMind 心智圖
|
|
* Initialize jsMind mind map
|
|
* @param {Object} mind - 心智圖的資料 (Mind map data)
|
|
* @param {Object} options - 配置選項 (Configuration options)
|
|
* @param {boolean} isEditable - 是否可編輯 (Is editable)
|
|
* @returns {Object} - jsMind 實例 (jsMind instance)
|
|
*/
|
|
export function initJsmind(mind, options, isEditable) {
|
|
const container = document.getElementById(options.container)
|
|
container.innerHTML = ''
|
|
|
|
options.editable = isEditable
|
|
const jm = new jsMind(options)
|
|
|
|
// 依據是否可編輯調整顯示為連結或文字
|
|
// Adjust display as a link or text based on editability
|
|
const formattedData = mind.data.map((node) => {
|
|
node.topic =
|
|
!isEditable && node.link
|
|
? `<a href="${node.link}" target="_blank">${node.text}</a>`
|
|
: node.text || node.topic
|
|
return node
|
|
})
|
|
jm.show({ meta: mind.meta, format: 'node_array', data: formattedData })
|
|
|
|
// 掛載附加模組(遠程搜尋 & 工具列)
|
|
// Attach additional modules (Remote search & Toolbar)
|
|
if (isEditable) {
|
|
new JsmindSearch(jm, mockSearchApi, options.tableUID);
|
|
new JsmindToolbar(jm, options)
|
|
}
|
|
|
|
return jm
|
|
}
|
|
|
|
/**
|
|
* 獲取當前心智圖數據
|
|
* Get the current mind map data
|
|
* @param {Object} jm - jsMind 實例 (jsMind instance)
|
|
* @returns {Object} - 心智圖數據 (Mind map data)
|
|
*/
|
|
export function getJsmindData(jm) {
|
|
return jm.get_data('node_array')
|
|
}
|