Ellia.Duan 发表于 2024-6-27 10:01:25

在线表格编辑器修改“文件”菜单(二)

本帖最后由 Ellia.Duan 于 2024-7-1 10:00 编辑

接上文介绍的内容,本文将介绍如何设置“导入”为默认选中。
第一步还是先获取文件template
var fileMenuPanelTemplate = GC.Spread.Sheets.Designer.getTemplate(GC.Spread.Sheets.Designer.TemplateNames.FileMenuPanelTemplate);

第二步,修改node的visibleWhen。
我们观察下图

“新建”按钮对应的visibleWhen是"activeCategory_main=New",而“导入”对应的visibleWhen对应的是"activeCategory_main=Import"
我们可以重设这两个值。因为默认选中的是"activeCategory_main=New"。
好的,我们接下来开始遍历node

findNode(fileMenuPanelTemplate.content)

      function findNode(node) {
            if (node instanceof Array) {
                for (let i = 0; i < node.length; i++) {
                  findNode(node)
                }
            } else if (node.children) {
                if (node.visibleWhen == "activeCategory_main=New") {
                  node.visibleWhen = "activeCategory_main=New_Other"
                } else if (node.visibleWhen == "activeCategory_main=Import") {
                  node.visibleWhen = "activeCategory_main=New"
                }
                findNode(node.children)
            }
      }

通过上述代码,我们将“新建”的visibleWhen 修改为activeCategory_main=New_Other ,而“导入”的visibleWhen 修改为activeCategory_main=New。
我们重新注册Template
GC.Spread.Sheets.Designer.registerTemplate(GC.Spread.Sheets.Designer.TemplateNames.FileMenuPanelTemplate, fileMenuPanelTemplate);
   
执行代码,发现不生效,点击“文件” 进来的默认选中还是“新建”,这个是怎么回事呢?
我们再来看下左侧结点:全局搜索"新建",找到左侧的菜单结点

我们观察上图,发现“新建”对应的value是“New” ,而“导入”对应的value是“import” 与上文中visibleWhen 等于号后面的内容一致。
我们试着修改下这个value .
function findNode(node) {
    if (node instanceof <em>Array</em>) {
      for (let i = 0; i < node.length; i++) {
            findNode(node)
      }
    } else if (node.children) {
      if (node.visibleWhen == "activeCategory_main=New") {
            node.visibleWhen = "activeCategory_main=New_Other"
      } else if (node.visibleWhen == "activeCategory_main=Import") {
            node.visibleWhen = "activeCategory_main=New"
      }
      findNode(node.children)
    } else if (node.items) {
      node.items.forEach(item => {
            if (item.text == '新建') {
                item.value = 'New_Other'
            } else if (item.text == '导入') {
                item.value = 'New'
            }
      })
    }
}
在上述代码中,我们增加了node.items的判断,对新建的value修改为'New_Other',对导入的value修改为'New'
我们刷新下页面,看下是否已经实现了我们的需求:

我们观察上面的动图,当点击“文件”时,已经实现了“导入”的默认选中。
本文的demo:



在下篇文章中,我们将介绍,如何在文件菜单中,只显示“打印预览”。


页: [1]
查看完整版本: 在线表格编辑器修改“文件”菜单(二)