define([ 'jquery' , 'nbextensions/visualpython/src/common/vpCommon' , 'nbextensions/visualpython/src/common/constant' , 'nbextensions/visualpython/src/common/StringBuilder' , 'nbextensions/visualpython/src/common/vpXMLHandler' , 'nbextensions/visualpython/src/common/component/vpAccordionBox' , 'nbextensions/visualpython/src/common/component/vpLineNumberTextArea' , 'nbextensions/visualpython/src/common/component/vpIconInputText' , 'nbextensions/visualpython/src/common/vpFuncJS' , './constData.js' ], function ( $, vpCommon, vpConst, sb, xmlHandler, vpAccordionBox, vpLineNumberTextArea,vpIconInputText, vpFuncJS , constData ) { const { BLOCK_CODELINE_TYPE , VP_ID_APIBLOCK_LEFT_TAB_API , VP_CLASS_APIBLOCK_OPTION_TAB_SELECTOR } = constData; let xmlLibraries; let loadedFuncJS; let generatedMetaData; let loadedFuncID; var events; let librarySearchComplete = new Array(); let searchBoxUUID; let block_closure; try { // events ì ëí ìì¸ ë°ì ê°ë¥í ê²ì¼ë¡ ìì. // console.log('requirejs',requirejs); events = requirejs('base/js/events'); } catch (err) { if (window.events === undefined) { var Events = function () { }; window.events = $([new Events()]); } events = window.events; } // mathjaxutils ê²½ë¡ ë¬¸ì ì²ë¦¬ - notebook í¨í¤ì§ ë²ì 6.1.6ë¶í°ë base/jsë¡ ì´ëë¨ try { // 6.1.6 version path for mathjaxutils mathjaxutils = requirejs('base/js/mathjaxutils'); } catch (err) { // console.log('behind 6.1.6... reload mathjaxutils.'); mathjaxutils = requirejs('notebook/js/mathjaxutils') } var getOptionPageURL = function(funcID) { // console.log('funcID', funcID); var sbURL = new sb.StringBuilder(); sbURL.append(Jupyter.notebook.base_url); sbURL.append(vpConst.BASE_PATH); sbURL.append(vpConst.SOURCE_PATH); // í¨ì ê²½ë¡ ë°ì¸ë© var optionData = $(xmlLibraries.getXML()).find(vpConst.LIBRARY_ITEM_TAG + "[" + vpConst.LIBRARY_ITEM_ID_ATTR + "=" + funcID + "]"); var filePath = $(optionData).find(vpConst.LIBRARY_ITEM_FILE_URL_NODE).text(); sbURL.append(filePath); return sbURL.toString(); } var addAutoCompleteItem = function(item) { // ì´ë¯¸ ë±ë¡ë í목ì ì ì¸íë¤. if (!librarySearchComplete.includes(item)) { librarySearchComplete.push(item); } } var setLibraryLoadComplete = function() { libraryLoadComplete = true; events.trigger('library_load_complete.vp'); } var librariesBind = function(node, container) { $(node).children(vpConst.LIBRARY_ITEM_TAG + "[" + vpConst.LIBRARY_ITEM_TYPE_ATTR + "=" + vpConst.LIBRARY_ITEM_TYPE_PACKAGE + "]").each(function() { var thisNode = $(this); var accboxTopGrp; if ($(thisNode).attr(vpConst.LIBRARY_ITEM_DEPTH_ATTR) == 0) { accboxTopGrp = makeLibraryTopGroupBox($(thisNode)); $(container).append(accboxTopGrp.toTagString()); } }); } var bindSearchAutoComplete = function() { $(xmlLibraries.getXML()).find(vpConst.LIBRARY_ITEM_TAG + "[" + vpConst.LIBRARY_ITEM_TYPE_ATTR + "=" + vpConst.LIBRARY_ITEM_TYPE_FUNCTION + "]").each(function() { addAutoCompleteItem($(this).attr(vpConst.LIBRARY_ITEM_NAME_ATTR)); $(this).attr(vpConst.LIBRARY_ITEM_TAG_ATTR).split(",").forEach(function(tag) { addAutoCompleteItem(tag.trim()); }); }); $(vpCommon.wrapSelector(vpCommon.formatString(".{0} input", searchBoxUUID))).autocomplete({ source: librarySearchComplete , classes: { "ui-autocomplete": "vp-search-autocomplete" } }); } var libraryLoadCallback = function(container) { setLibraryLoadComplete(); librariesBind($(xmlLibraries.getXML()).children(vpConst.LIBRARY_ITEM_WRAP_NODE), container); bindSearchAutoComplete(); }; var loadLibraries = function(container) { var libraryURL = window.location.origin + vpConst.PATH_SEPARATOR + vpConst.BASE_PATH + vpConst.DATA_PATH + vpConst.VP_LIBRARIES_XML_URL; xmlLibraries = new xmlHandler.VpXMLHandler(libraryURL); xmlLibraries.loadFile(libraryLoadCallback, container); /** ì¶ê° */ return xmlLibraries; } var loadLibrariesToJson = function(callback, param) { var libraryURL = window.location.origin + vpConst.PATH_SEPARATOR + vpConst.BASE_PATH + vpConst.DATA_PATH + vpConst.VP_LIBRARIES_XML_URL; xmlLibraries = new xmlHandler.VpXMLHandler(libraryURL); param = xmlLibraries; xmlLibraries.loadFile(callback, param); } /** * ìµìì í¨í¤ì§ë ìì½ëì¸ ë°ì¤ë¡ ìì±íë¤. * @param {xmlNode} topGrpNode ìµìì íí¤ì§ */ var makeLibraryTopGroupBox = function(topGrpNode) { var accBox = new vpAccordionBox.vpAccordionBox($(topGrpNode).attr(vpConst.LIBRARY_ITEM_NAME_ATTR), false, true); // ì¶ê° í´ëì¤ ì¤ì // accBox.addClass(vpConst.ACCORDION_GRAY_BGCOLOR); accBox.addClass(vpConst.ACCORDION_SMALL_ARROW); // ìì± ë¶ì¬ accBox.addAttribute(vpConst.LIBRARY_ITEM_DATA_ID, $(topGrpNode).attr(vpConst.LIBRARY_ITEM_ID_ATTR)); // ìì 그룹 ë ¸ë ìì± accBox.appendContent(makeLibraryListsGroupNode(topGrpNode)); return accBox; } /** * api list 그룹 íì íì í ê¸ * @param {object} trigger ì´ë²¤í¸ í¸ë¦¬ê±° ê°ì²´ */ var toggleApiListSubGroupShow = function(trigger) { $(trigger).parent().children(vpCommon.formatString("li.{0}", vpConst.LIST_ITEM_LIBRARY_GROUP)).not($(trigger)).find(vpCommon.formatString(".{0}", vpConst.LIST_ITEM_LIBRARY)).hide(); $(trigger).children(vpCommon.formatString(".{0}", vpConst.LIST_ITEM_LIBRARY)).toggle(); // íì´ë¼ì´í¸ ì²ë¦¬ $(vpCommon.wrapSelector(vpCommon.formatString("#{0}", VP_ID_APIBLOCK_LEFT_TAB_API))) .find(vpCommon.formatString(".{0}", vpConst.COLOR_FONT_ORANGE)) .not($(trigger)).removeClass(vpConst.COLOR_FONT_ORANGE); $(trigger).addClass(vpConst.COLOR_FONT_ORANGE); } /** * ìµì íì´ì§ ë¡ë ìë£ callback. * @param {funcJS} funcJS ìµì js ê°ì²´ */ var optionPageLoadCallback_block = function(funcJS) { /** --------------- 기존ì optionPageLoadCallbackì½ë ìì ë³ê²½í ì½ë --------------------- */ /** ë¸ëì´ package를 ì§ìë³ìë¡ ì¡ì * package(== funcJS)ë API List(common, numpy, pandas... ë±ë±) í¹ì Markdown ì ì미 */ block_closure.setImportPakage(funcJS); const importPakage = block_closure.getImportPakage(); /** Text ë¸ëì¼ ê²½ì° */ if (block_closure.getBlockType() == BLOCK_CODELINE_TYPE.TEXT) { /** Markdown packageì Text ë¸ëì´ ë°ì´í°ë¥¼ íµì í기 ìí´ ìë¡ì this í¬ì¸í¸ë¥¼ ì§ìë³ìë¡ ì°¸ì¡° í¨*/ importPakage.setBlock(block_closure); } /** ---------------- ì´í 기존ì optionPageLoadCallbackì½ë -----------------------------*/ $(vpCommon.wrapSelector(vpCommon.formatString("#{0}", vpConst.OPTION_LOAD_AREA))).empty(); $(vpCommon.wrapSelector(vpCommon.formatString("#{0}", vpConst.OPTION_NAVIGATOR_INFO_PANEL), vpCommon.formatString(".{0}", vpConst.OPTION_NAVIGATOR_INFO_NODE))).remove(); $(vpCommon.wrapSelector(vpConst.OPTION_CONTAINER)).children(vpConst.OPTION_PAGE).remove(); // load ìµì ë³ê²½ì 기존 ìµì ì´ë²¤í¸ ì¸ë°ì¸ë í¸ì¶. if (loadedFuncJS != undefined) { // loadedFuncJS.unbindOptionEvent(); } loadedFuncJS = funcJS; var naviInfoTag = makeOptionPageNaviInfo($(xmlLibraries.getXML()).find(vpConst.LIBRARY_ITEM_TAG + "[" + vpConst.LIBRARY_ITEM_ID_ATTR + "=" + loadedFuncID + "]")); $(vpCommon.wrapSelector(vpCommon.formatString("#{0}", vpConst.OPTION_NAVIGATOR_INFO_PANEL))).append(naviInfoTag); // metadata ì¡´ì¬íë©´ load if (loadedFuncJS.metadata !== undefined && loadedFuncJS.metadata != "") { loadedFuncJS.loadMeta(loadedFuncJS, generatedMetaData); } var blockOptionPageDom = makeUpGreenRoomHTML(); /** --------------- ë¤ì 기존ì optionPageLoadCallbackì½ë ìì ë³ê²½í ì½ë --------------------- */ block_closure.setBlockOptionPageDom(blockOptionPageDom); block_closure.renderOptionPage(); loadedFuncJS.bindOptionEvent(); } /** * 그룹 ë ¸ë 리ì¤í¸ ìì´í ì¼ë¡ ìì± * @param {xmlNode} grpNode 그룹 ë ¸ë */ var makeLibraryListsGroupNode = function(grpNode) { var sbGrpNode = new sb.StringBuilder(); sbGrpNode.appendLine(makeLibraryListsFunctionNode(grpNode)); sbGrpNode.appendFormatLine("