2 "name" : "Roo.tree.AsyncTreeNode",
16 "desc" : "list of events and functions to call for this object, \nFor example :\n<pre><code>\n listeners : { \n 'click' : function(e) {\n ..... \n } ,\n .... \n } \n </code></pre>",
17 "memberOf" : "Roo.util.Observable",
22 "name" : "hrefTarget",
24 "desc" : "target frame for the link",
25 "memberOf" : "Roo.tree.TreeNode",
32 "desc" : "The id for this node. If one is not specified, one is generated.",
33 "memberOf" : "Roo.data.Node",
40 "desc" : "The text for this node",
41 "memberOf" : "Roo.tree.TreeNode",
46 "name" : "uiProvider",
48 "desc" : "A UI <b>class</b> to use for this node (defaults to Roo.tree.TreeNodeUI)",
49 "memberOf" : "Roo.tree.TreeNode",
56 "desc" : "true to start the node expanded",
57 "memberOf" : "Roo.tree.TreeNode",
64 "desc" : "An Ext QuickTip config for the node (used instead of qtip)",
65 "memberOf" : "Roo.tree.TreeNode",
72 "desc" : "false if this node cannot be drop on",
73 "memberOf" : "Roo.tree.TreeNode",
80 "desc" : "true to start the node disabled",
81 "memberOf" : "Roo.tree.TreeNode",
88 "desc" : "A css class to be added to the node",
89 "memberOf" : "Roo.tree.TreeNode",
96 "desc" : "A css class to be added to the nodes icon element for applying css background images",
97 "memberOf" : "Roo.tree.TreeNode",
102 "name" : "allowDrag",
104 "desc" : "false to make this node undraggable if DD is on (defaults to true)",
105 "memberOf" : "Roo.tree.TreeNode",
111 "type" : "TreeLoader",
112 "desc" : "A TreeLoader to be used by this node (defaults to the loader defined on the tree)",
113 "memberOf" : "Roo.tree.AsyncTreeNode",
120 "desc" : "The path to an icon for the node. The preferred way to do this",
121 "memberOf" : "Roo.tree.TreeNode",
126 "name" : "singleClickExpand",
128 "desc" : "True for single click expand on this node",
129 "memberOf" : "Roo.tree.TreeNode",
136 "desc" : "An Ext QuickTip for the node",
137 "memberOf" : "Roo.tree.TreeNode",
144 "desc" : "True to render a checked checkbox for this node, false to render an unchecked checkbox\n(defaults to undefined with no checkbox rendered)",
145 "memberOf" : "Roo.tree.TreeNode",
152 "desc" : "URL of the link used for the node (defaults to #)",
153 "memberOf" : "Roo.tree.TreeNode",
160 "desc" : "true if this node is a leaf and does not have children",
161 "memberOf" : "Roo.data.Node",
169 "desc" : "Returns true if this node has been loaded",
171 "isConstructor" : false,
173 "memberOf" : "Roo.tree.AsyncTreeNode",
189 "name" : "isLoading",
190 "desc" : "Returns true if this node is currently loading",
192 "isConstructor" : false,
194 "memberOf" : "Roo.tree.AsyncTreeNode",
211 "desc" : "Trigger a reload for this node",
213 "isConstructor" : false,
215 "memberOf" : "Roo.tree.AsyncTreeNode",
233 "desc" : "Triggers selection of this node",
235 "isConstructor" : false,
237 "memberOf" : "Roo.tree.TreeNode",
249 "desc" : "Enables this node",
251 "isConstructor" : false,
253 "memberOf" : "Roo.tree.TreeNode",
264 "name" : "collapseChildNodes",
265 "desc" : "Collapse all child nodes",
267 "isConstructor" : false,
269 "memberOf" : "Roo.tree.TreeNode",
278 "desc" : "(optional) true if the child nodes should also collapse their child nodes",
286 "name" : "ensureVisible",
287 "desc" : "Ensures all parent nodes are expanded",
289 "isConstructor" : false,
291 "memberOf" : "Roo.tree.TreeNode",
302 "name" : "isSelected",
303 "desc" : "Returns true if this node is selected",
305 "isConstructor" : false,
307 "memberOf" : "Roo.tree.TreeNode",
324 "desc" : "Disables this node",
326 "isConstructor" : false,
328 "memberOf" : "Roo.tree.TreeNode",
340 "desc" : "Returns the UI object for this node",
342 "isConstructor" : false,
344 "memberOf" : "Roo.tree.TreeNode",
354 "type" : "TreeNodeUI",
361 "desc" : "Sets the text for this node",
363 "isConstructor" : false,
365 "memberOf" : "Roo.tree.TreeNode",
383 "desc" : "Toggles expanded/collapsed state of the node",
385 "isConstructor" : false,
387 "memberOf" : "Roo.tree.TreeNode",
399 "desc" : "Triggers deselection of this node",
401 "isConstructor" : false,
403 "memberOf" : "Roo.tree.TreeNode",
414 "name" : "isExpanded",
415 "desc" : "Returns true if this node is expanded",
417 "isConstructor" : false,
419 "memberOf" : "Roo.tree.TreeNode",
435 "name" : "expandChildNodes",
436 "desc" : "Expand all child nodes",
438 "isConstructor" : false,
440 "memberOf" : "Roo.tree.TreeNode",
449 "desc" : "(optional) true if the child nodes should also expand their child nodes",
458 "desc" : "Expand this node.",
460 "isConstructor" : false,
462 "memberOf" : "Roo.tree.TreeNode",
471 "desc" : "(optional) True to expand all children as well",
477 "desc" : "(optional) false to cancel the default animation",
483 "desc" : "(optional) A callback to be called when\nexpanding this node completes (does not wait for deep expand to complete).\nCalled with 1 parameter, this node.",
492 "desc" : "Collapse this node.",
494 "isConstructor" : false,
496 "memberOf" : "Roo.tree.TreeNode",
505 "desc" : "(optional) True to collapse all children as well",
511 "desc" : "(optional) false to cancel the default animation",
520 "desc" : "Sorts this nodes children using the supplied sort function",
522 "isConstructor" : false,
524 "memberOf" : "Roo.data.Node",
539 "desc" : "(optional)",
547 "name" : "removeChild",
548 "desc" : "Removes a child node from this node.",
550 "isConstructor" : false,
552 "memberOf" : "Roo.data.Node",
561 "desc" : "The node to remove",
569 "desc" : "The removed node"
574 "name" : "isAncestor",
575 "desc" : "Returns true if the passed node is an ancestor (at any point) of this node.",
577 "isConstructor" : false,
579 "memberOf" : "Roo.data.Node",
602 "desc" : "Returns true if this node is an ancestor (at any point) of the passed node.",
604 "isConstructor" : false,
606 "memberOf" : "Roo.data.Node",
629 "desc" : "Cascades down the tree from this node, calling the specified function with each node. The scope (<i>this</i>) of\nfunction call will be the scope provided or the current node. The arguments to the function\nwill be the args provided or the current node. If the function returns false at any point,\nthe cascade is stopped on that branch.",
631 "isConstructor" : false,
633 "memberOf" : "Roo.data.Node",
642 "desc" : "The function to call",
648 "desc" : "(optional) The scope of the function (defaults to current node)",
654 "desc" : "(optional) The args to call the function with (default to passing the current node)",
663 "desc" : "Returns depth of this node (the root node has a depth of 0)",
665 "isConstructor" : false,
667 "memberOf" : "Roo.data.Node",
684 "desc" : "Returns the path for this node. The path can be used to expand or select this node programmatically.",
686 "isConstructor" : false,
688 "memberOf" : "Roo.data.Node",
697 "desc" : "(optional) The attr to use for the path (defaults to the node's id)",
711 "desc" : "Returns the index of a child node",
713 "isConstructor" : false,
715 "memberOf" : "Roo.data.Node",
732 "desc" : "The index of the node or -1 if it was not found"
738 "desc" : "Returns true if this node is the first child of its parent",
740 "isConstructor" : false,
742 "memberOf" : "Roo.data.Node",
759 "desc" : "Returns true if this node is the last child of its parent",
761 "isConstructor" : false,
763 "memberOf" : "Roo.data.Node",
780 "desc" : "Returns true if this node is a leaf",
782 "isConstructor" : false,
784 "memberOf" : "Roo.data.Node",
800 "name" : "insertBefore",
801 "desc" : "Inserts the first node before the second node in this nodes childNodes collection.",
803 "isConstructor" : false,
805 "memberOf" : "Roo.data.Node",
814 "desc" : "The node to insert",
820 "desc" : "The node to insert before (if null the node is appended)",
828 "desc" : "The inserted node"
834 "desc" : "Returns the child node at the specified index.",
836 "isConstructor" : false,
838 "memberOf" : "Roo.data.Node",
860 "name" : "getOwnerTree",
861 "desc" : "Returns the tree this node is in.",
863 "isConstructor" : false,
865 "memberOf" : "Roo.data.Node",
881 "name" : "appendChild",
882 "desc" : "Insert node(s) as the last child node of this node.",
884 "isConstructor" : false,
886 "memberOf" : "Roo.data.Node",
894 "type" : "Node/Array",
895 "desc" : "The node or Array of nodes to append",
903 "desc" : "The appended node if single append, or null if an array was passed"
908 "name" : "findChildBy",
909 "desc" : "Finds the first child by a custom function. The child matches if the function passed\nreturns true.",
911 "isConstructor" : false,
913 "memberOf" : "Roo.data.Node",
928 "desc" : "(optional)",
936 "desc" : "The found child or null if none was found"
941 "name" : "replaceChild",
942 "desc" : "Replaces one child node in this node with another.",
944 "isConstructor" : false,
946 "memberOf" : "Roo.data.Node",
955 "desc" : "The replacement node",
961 "desc" : "The node to replace",
969 "desc" : "The replaced node"
975 "desc" : "Bubbles up the tree from this node, calling the specified function with each node. The scope (<i>this</i>) of\nfunction call will be the scope provided or the current node. The arguments to the function\nwill be the args provided or the current node. If the function returns false at any point,\nthe bubble is stopped.",
977 "isConstructor" : false,
979 "memberOf" : "Roo.data.Node",
988 "desc" : "The function to call",
994 "desc" : "(optional) The scope of the function (defaults to current node)",
1000 "desc" : "(optional) The args to call the function with (default to passing the current node)",
1001 "isOptional" : false
1008 "name" : "eachChild",
1009 "desc" : "Interates the child nodes of this node, calling the specified function with each node. The scope (<i>this</i>) of\nfunction call will be the scope provided or the current node. The arguments to the function\nwill be the args provided or the current node. If the function returns false at any point,\nthe iteration stops.",
1011 "isConstructor" : false,
1012 "isPrivate" : false,
1013 "memberOf" : "Roo.data.Node",
1021 "type" : "Function",
1022 "desc" : "The function to call",
1023 "isOptional" : false
1028 "desc" : "(optional) The scope of the function (defaults to current node)",
1029 "isOptional" : false
1034 "desc" : "(optional) The args to call the function with (default to passing the current node)",
1035 "isOptional" : false
1042 "name" : "findChild",
1043 "desc" : "Finds the first child that has the attribute with the specified value.",
1045 "isConstructor" : false,
1046 "isPrivate" : false,
1047 "memberOf" : "Roo.data.Node",
1054 "name" : "attribute",
1056 "desc" : "The attribute name",
1057 "isOptional" : false
1062 "desc" : "The value to search for",
1063 "isOptional" : false
1070 "desc" : "The found child or null if none was found"
1075 "name" : "purgeListeners",
1076 "desc" : "Removes all listeners for this object",
1078 "isConstructor" : false,
1079 "isPrivate" : false,
1080 "memberOf" : "Roo.util.Observable",
1092 "desc" : "Appends an event handler to this element (shorthand for addListener)",
1094 "isConstructor" : false,
1095 "isPrivate" : false,
1096 "memberOf" : "Roo.util.Observable",
1103 "name" : "eventName",
1105 "desc" : "The type of event to listen for",
1106 "isOptional" : false
1110 "type" : "Function",
1111 "desc" : "The method the event invokes",
1112 "isOptional" : false
1117 "desc" : "(optional) The scope in which to execute the handler\nfunction. The handler function's \"this\" context.",
1118 "isOptional" : false
1123 "desc" : "(optional)",
1124 "isOptional" : false
1132 "desc" : "Removes a listener (shorthand for removeListener)",
1134 "isConstructor" : false,
1135 "isPrivate" : false,
1136 "memberOf" : "Roo.util.Observable",
1143 "name" : "eventName",
1145 "desc" : "The type of event to listen for",
1146 "isOptional" : false
1150 "type" : "Function",
1151 "desc" : "The handler to remove",
1152 "isOptional" : false
1157 "desc" : "(optional) The scope (this object) for the handler",
1158 "isOptional" : false
1165 "name" : "addEvents",
1166 "desc" : "Used to define events on this Observable",
1168 "isConstructor" : false,
1169 "isPrivate" : false,
1170 "memberOf" : "Roo.util.Observable",
1179 "desc" : "The object with the events defined",
1180 "isOptional" : false
1187 "name" : "releaseCapture",
1188 "desc" : "Removes <b>all</b> added captures from the Observable.",
1190 "isConstructor" : false,
1191 "isPrivate" : false,
1192 "memberOf" : "Roo.util.Observable",
1200 "type" : "Observable",
1201 "desc" : "The Observable to release",
1202 "isOptional" : false
1209 "name" : "removeListener",
1210 "desc" : "Removes a listener",
1212 "isConstructor" : false,
1213 "isPrivate" : false,
1214 "memberOf" : "Roo.util.Observable",
1221 "name" : "eventName",
1223 "desc" : "The type of event to listen for",
1224 "isOptional" : false
1228 "type" : "Function",
1229 "desc" : "The handler to remove",
1230 "isOptional" : false
1235 "desc" : "(optional) The scope (this object) for the handler",
1236 "isOptional" : false
1243 "name" : "fireEvent",
1244 "desc" : "Fires the specified event with the passed parameters (minus the event name).",
1246 "isConstructor" : false,
1247 "isPrivate" : false,
1248 "memberOf" : "Roo.util.Observable",
1255 "name" : "eventName",
1258 "isOptional" : false
1262 "type" : "Object...",
1263 "desc" : "Variable number of parameters are passed to handlers",
1264 "isOptional" : false
1271 "desc" : "returns false if any of the handlers return false otherwise it returns true"
1276 "name" : "hasListener",
1277 "desc" : "Checks to see if this object has any listeners for a specified event",
1279 "isConstructor" : false,
1280 "isPrivate" : false,
1281 "memberOf" : "Roo.util.Observable",
1288 "name" : "eventName",
1290 "desc" : "The name of the event to check for",
1291 "isOptional" : false
1298 "desc" : "True if the event is being listened for, else false"
1304 "desc" : "Starts capture on the specified Observable. All events will be passed\nto the supplied function with the event name + standard signature of the event\n<b>before</b> the event is fired. If the supplied function returns false,\nthe event will not fire.",
1306 "isConstructor" : false,
1307 "isPrivate" : false,
1308 "memberOf" : "Roo.util.Observable",
1316 "type" : "Observable",
1317 "desc" : "The Observable to capture",
1318 "isOptional" : false
1322 "type" : "Function",
1323 "desc" : "The function to call",
1324 "isOptional" : false
1329 "desc" : "(optional) The scope (this object) for the fn",
1330 "isOptional" : false
1337 "name" : "addListener",
1338 "desc" : "Appends an event handler to this component",
1340 "isConstructor" : false,
1341 "isPrivate" : false,
1342 "memberOf" : "Roo.util.Observable",
1349 "name" : "eventName",
1351 "desc" : "The type of event to listen for",
1352 "isOptional" : false
1356 "type" : "Function",
1357 "desc" : "The method the event invokes",
1358 "isOptional" : false
1363 "desc" : "(optional) The scope in which to execute the handler\nfunction. The handler function's \"this\" context.",
1364 "isOptional" : false
1369 "desc" : "(optional) An object containing handler configuration\nproperties. This may contain any of the following properties:<ul>\n<li>scope {Object} The scope in which to execute the handler function. The handler function's \"this\" context.</li>\n<li>delay {Number} The number of milliseconds to delay the invocation of the handler after te event fires.</li>\n<li>single {Boolean} True to add a handler to handle just the next firing of the event, and then remove itself.</li>\n<li>buffer {Number} Causes the handler to be scheduled to run in an {@link Roo.util.DelayedTask} delayed\nby the specified number of milliseconds. If the event fires again within that time, the original\nhandler is <em>not</em> invoked, but the new handler is scheduled in its place.</li>\n</ul><br>\n<p>\n<b>Combining Options</b><br>\nUsing the options argument, it is possible to combine different types of listeners:<br>\n<br>\nA normalized, delayed, one-time listener that auto stops the event and passes a custom argument (forumId)\n\t\t<pre><code>\n\t\tel.on('click', this.onClick, this, {\n \t\t\tsingle: true,\n \t\tdelay: 100,\n \t\tforumId: 4\n\t\t});\n\t\t</code></pre>\n<p>\n<b>Attaching multiple handlers in 1 call</b><br>\nThe method also allows for a single argument to be passed which is a config object containing properties\nwhich specify multiple handlers.\n<pre><code>\n\t\tel.on({\n\t\t\t'click': {\n \t\tfn: this.onClick,\n \t\tscope: this,\n \t\tdelay: 100\n \t\t}, \n \t\t'mouseover': {\n \t\tfn: this.onMouseOver,\n \t\tscope: this\n \t\t},\n \t\t'mouseout': {\n \t\tfn: this.onMouseOut,\n \t\tscope: this\n \t\t}\n\t\t});\n\t\t</code></pre>\n<p>\nOr a shorthand syntax which passes the same scope object to all handlers:\n \t<pre><code>\n\t\tel.on({\n\t\t\t'click': this.onClick,\n \t\t'mouseover': this.onMouseOver,\n \t\t'mouseout': this.onMouseOut,\n \t\tscope: this\n\t\t});\n\t\t</code></pre>",
1370 "isOptional" : false
1380 "desc" : "Fires when this node is loaded",
1390 "desc" : "This node",
1391 "isOptional" : false
1398 "name" : "beforeload",
1399 "desc" : "Fires before this node is loaded, return false to cancel",
1409 "desc" : "This node",
1410 "isOptional" : false
1417 "name" : "beforecollapse",
1418 "desc" : "Fires before this node is collapsed, return false to cancel.",
1419 "memberOf" : "Roo.tree.TreeNode",
1428 "desc" : "This node",
1429 "isOptional" : false
1435 "isOptional" : false
1441 "isOptional" : false
1448 "name" : "dblclick",
1449 "desc" : "Fires when this node is double clicked",
1450 "memberOf" : "Roo.tree.TreeNode",
1459 "desc" : "This node",
1460 "isOptional" : false
1464 "type" : "Roo.EventObject",
1465 "desc" : "The event object",
1466 "isOptional" : false
1473 "name" : "disabledchange",
1474 "desc" : "Fires when the disabled status of this node changes",
1475 "memberOf" : "Roo.tree.TreeNode",
1484 "desc" : "This node",
1485 "isOptional" : false
1488 "name" : "disabled",
1491 "isOptional" : false
1498 "name" : "beforechildrenrendered",
1499 "desc" : "Fires right before the child nodes for this node are rendered",
1500 "memberOf" : "Roo.tree.TreeNode",
1509 "desc" : "This node",
1510 "isOptional" : false
1517 "name" : "beforeclick",
1518 "desc" : "Fires before click processing. Return false to cancel the default action.",
1519 "memberOf" : "Roo.tree.TreeNode",
1528 "desc" : "This node",
1529 "isOptional" : false
1533 "type" : "Roo.EventObject",
1534 "desc" : "The event object",
1535 "isOptional" : false
1542 "name" : "checkchange",
1543 "desc" : "Fires when a node with a checkbox's checked property changes",
1544 "memberOf" : "Roo.tree.TreeNode",
1553 "desc" : "This node",
1554 "isOptional" : false
1560 "isOptional" : false
1567 "name" : "collapse",
1568 "desc" : "Fires when this node is collapsed",
1569 "memberOf" : "Roo.tree.TreeNode",
1578 "desc" : "This node",
1579 "isOptional" : false
1586 "name" : "textchange",
1587 "desc" : "Fires when the text for this node is changed",
1588 "memberOf" : "Roo.tree.TreeNode",
1597 "desc" : "This node",
1598 "isOptional" : false
1603 "desc" : "The new text",
1604 "isOptional" : false
1609 "desc" : "The old text",
1610 "isOptional" : false
1617 "name" : "beforeexpand",
1618 "desc" : "Fires before this node is expanded, return false to cancel.",
1619 "memberOf" : "Roo.tree.TreeNode",
1628 "desc" : "This node",
1629 "isOptional" : false
1635 "isOptional" : false
1641 "isOptional" : false
1649 "desc" : "Fires when this node is clicked",
1650 "memberOf" : "Roo.tree.TreeNode",
1659 "desc" : "This node",
1660 "isOptional" : false
1664 "type" : "Roo.EventObject",
1665 "desc" : "The event object",
1666 "isOptional" : false
1673 "name" : "contextmenu",
1674 "desc" : "Fires when this node is right clicked",
1675 "memberOf" : "Roo.tree.TreeNode",
1684 "desc" : "This node",
1685 "isOptional" : false
1689 "type" : "Roo.EventObject",
1690 "desc" : "The event object",
1691 "isOptional" : false
1699 "desc" : "Fires when this node is expanded",
1700 "memberOf" : "Roo.tree.TreeNode",
1709 "desc" : "This node",
1710 "isOptional" : false
1717 "name" : "beforeappend",
1718 "desc" : "Fires before a new child is appended, return false to cancel the append.",
1719 "memberOf" : "Roo.data.Node",
1728 "desc" : "The owner tree",
1729 "isOptional" : false
1734 "desc" : "This node",
1735 "isOptional" : false
1740 "desc" : "The child node to be appended",
1741 "isOptional" : false
1749 "desc" : "Fires when this node is moved to a new location in the tree",
1750 "memberOf" : "Roo.data.Node",
1759 "desc" : "The owner tree",
1760 "isOptional" : false
1765 "desc" : "This node",
1766 "isOptional" : false
1769 "name" : "oldParent",
1771 "desc" : "The old parent of this node",
1772 "isOptional" : false
1775 "name" : "newParent",
1777 "desc" : "The new parent of this node",
1778 "isOptional" : false
1783 "desc" : "The index it was moved to",
1784 "isOptional" : false
1792 "desc" : "Fires when a new child node is appended",
1793 "memberOf" : "Roo.data.Node",
1802 "desc" : "The owner tree",
1803 "isOptional" : false
1808 "desc" : "This node",
1809 "isOptional" : false
1814 "desc" : "The newly appended node",
1815 "isOptional" : false
1820 "desc" : "The index of the newly appended node",
1821 "isOptional" : false
1828 "name" : "beforeremove",
1829 "desc" : "Fires before a child is removed, return false to cancel the remove.",
1830 "memberOf" : "Roo.data.Node",
1839 "desc" : "The owner tree",
1840 "isOptional" : false
1845 "desc" : "This node",
1846 "isOptional" : false
1851 "desc" : "The child node to be removed",
1852 "isOptional" : false
1860 "desc" : "Fires when a child node is removed",
1861 "memberOf" : "Roo.data.Node",
1870 "desc" : "The owner tree",
1871 "isOptional" : false
1876 "desc" : "This node",
1877 "isOptional" : false
1882 "desc" : "The removed node",
1883 "isOptional" : false
1890 "name" : "beforeinsert",
1891 "desc" : "Fires before a new child is inserted, return false to cancel the insert.",
1892 "memberOf" : "Roo.data.Node",
1901 "desc" : "The owner tree",
1902 "isOptional" : false
1907 "desc" : "This node",
1908 "isOptional" : false
1913 "desc" : "The child node to be inserted",
1914 "isOptional" : false
1919 "desc" : "The child node the node is being inserted before",
1920 "isOptional" : false
1928 "desc" : "Fires when a new child node is inserted.",
1929 "memberOf" : "Roo.data.Node",
1938 "desc" : "The owner tree",
1939 "isOptional" : false
1944 "desc" : "This node",
1945 "isOptional" : false
1950 "desc" : "The child node inserted",
1951 "isOptional" : false
1956 "desc" : "The child node the node was inserted before",
1957 "isOptional" : false
1964 "name" : "beforemove",
1965 "desc" : "Fires before this node is moved to a new location in the tree. Return false to cancel the move.",
1966 "memberOf" : "Roo.data.Node",
1975 "desc" : "The owner tree",
1976 "isOptional" : false
1981 "desc" : "This node",
1982 "isOptional" : false
1985 "name" : "oldParent",
1987 "desc" : "The parent of this node",
1988 "isOptional" : false
1991 "name" : "newParent",
1993 "desc" : "The new parent this node is moving to",
1994 "isOptional" : false
1999 "desc" : "The index it is being moved to",
2000 "isOptional" : false