OO-PG0018

Plug-In: Expand Rows to Level

Expands rows up to and including the level chosen by the user.

expand rows to level dialog

Return to: OmniOutliner Plug-In Collection

Expand Rows to Level
  

/*{ "type": "action", "targets": ["omnioutliner"], "author": "Otto Automator", "identifier": "com.omni-automation.oo.expand-rows-to-level", "version": "1.0", "description": "Expands rows up to and including the level chosen by the user.", "label": "Expand Rows to Level", "shortLabel": "Expand to Level", "paletteLabel": "Expand to Level", "image": "square.3.layers.3d" }*/ (() => { const action = new PlugIn.Action(async function(selection, sender){ try { editor = document.editors[0] tree = document.outline lvlStyles = document.outline.levelStyles levelIndexes = Array(lvlStyles.length).fill().map((element, index) => index + 1) levelTitles = levelIndexes.map(String) levelsMenu = new Form.Field.Option( "levelIndex", null, levelIndexes, levelTitles, 1 ) inputForm = new Form() inputForm.addField(levelsMenu) formPrompt = "Expand rows up to and including level:" buttonTitle = "Continue" formObject = await inputForm.show(formPrompt, buttonTitle) levelIndex = formObject.values["levelIndex"] rootItem.apply(item => { itemLevel = item.level console.log("ITEM LEVEL:", itemLevel) if(itemLevel !== 0){ node = editor.nodeForObject(item) if (itemLevel >= levelIndex){ if(node.canCollapse){ node.collapse() } } if (itemLevel < levelIndex){ if(node.canExpand){ node.expand() } } } }) } catch(err){ if(!causedByUserCancelling){ new Alert(err.name, err.message).show() } } }); action.validate = function(selection, sender){ return true }; return action; })();