define([ 'require' , 'jquery' , 'nbextensions/visualpython/src/common/vpCommon' , 'nbextensions/visualpython/src/common/constant' , 'nbextensions/visualpython/src/common/StringBuilder' , 'nbextensions/visualpython/src/common/vpFuncJS' , './api.js' , './constData.js' , './init.js' ], function (requirejs, $, vpCommon, vpConst, sb, vpFuncJS, api, constData, init) { const { API_BLOCK_HTML_URL_PATH , API_BLOCK_INDEX_CSS } = constData; // ìµì ìì± const funcOptProp = { stepCount : 1 , funcName : "api_block" , funcID : "api_block" // TODO: ID ê·ì¹ ìì± íì } /** * html load ì½ë°±. ê³ ì id ìì±íì¬ ë¶ê³¼íë©° js ê°ì²´ í´ëì¤ ìì±íì¬ ì»¨í ì´ëë¡ ì ë¬ * @param {function} callback í¸ì¶ì(컨í ì´ë) ì ì½ë°±í¨ì */ var optionLoadCallback = function(callback, meta) { // document.getElementsByTagName("head")[0].appendChild(link); // 컨í ì´ëìì ì ë¬ë callback í¨ìê° ì¡´ì¬íë©´ ì¤í. if (typeof(callback) == 'function') { var uuid = vpCommon.getUUID(); // ìµë 10í ì¤ë³µëì§ ìëë¡ ì²´í¬ for (var idx = 0; idx < 10; idx++) { // ì´ë¯¸ ì¬ì©ì¤ì¸ uuid ì¸ ê²½ì° ë¤ì ìì± if ($(vpConst.VP_CONTAINER_ID).find("." + uuid).length > 0) { uuid = vpCommon.getUUID(); } } $(vpCommon.wrapSelector(`#${vpConst.OPTION_GREEN_ROOM}`)).find(`.${vpConst.API_OPTION_PAGE}`).addClass(uuid); // ìµì ê°ì²´ ìì± var ipImport = new ImportPackage(uuid); ipImport.metadata = meta; // ìµì ìì± í ë¹. ipImport.setOptionProp(funcOptProp); // html ì¤ì . ipImport.initHtml(); callback(ipImport); // ê³µíµ ê°ì²´ë¥¼ callback ì¸ìë¡ ì ë¬ } } /** * html ë¡ë. * @param {function} callback í¸ì¶ì(컨í ì´ë) ì ì½ë°±í¨ì */ var initOption = function(callback, meta) { var htmlUrlPath = API_BLOCK_HTML_URL_PATH; vpCommon.loadHtml(vpCommon.wrapSelector(`#${vpConst.OPTION_GREEN_ROOM}`), htmlUrlPath, optionLoadCallback, callback, meta); } /** * 본 ìµì ì²ë¦¬ ìí í´ëì¤ * @param {String} uuid ê³ ì id */ var ImportPackage = function(uuid) { this.uuid = uuid; // Load html ììì uuid. this.blockContainer = null; this.funcID = funcOptProp.funcID; this.metadata = null; } /** * vpFuncJS ìì ìì */ ImportPackage.prototype = Object.create(vpFuncJS.VpFuncJS.prototype); /** * ì í¨ì± ê²ì¬ * @returns ì í¨ì± ê²ì¬ ê²°ê³¼. ì í©ì true */ ImportPackage.prototype.optionValidation = function() { return true; } /** * html ë´ë¶ binding ì²ë¦¬ */ ImportPackage.prototype.initHtml = function() { var that = this; this.loadCss(Jupyter.notebook.base_url + vpConst.BASE_PATH + vpConst.STYLE_PATH + API_BLOCK_INDEX_CSS); this.blockContainer = init(this); this.blockContainer.setAPIBlockMetadataHandler(); if (this.metadata) { // metadata ìì; this.blockContainer.loadAPIBlockMetadata(this.metadata); } else { // metadata ìì -> ìë¡ ë§ë¬; this.blockContainer.setAPIBlockMetadata(); } /** API Block íë©´ ì¢ì°ë¡ resize í ê²½ì° option page width ê³ì° */ $( window ).resize( function() { if (that.blockContainer.getIsOptionPageResize() == false) { that.blockContainer.resizeAPIblock(); } }); } /** * ë©íë°ì´í° ë¡ë * @param {funcJS} option * @param {JSON} meta */ ImportPackage.prototype.loadMeta = function(funcJS, meta) { this.metadata = meta; this.blockContainer.loadAPIBlockMetadata(this.metadata); } /** * íì´ì§ì ìì±ë uuid를 ê°ì ¸ì¨ë¤ */ ImportPackage.prototype.getUUID = function() { return this.uuid; } ImportPackage.prototype.getBlockContainer = function() { return this.blockContainer; } /** * ì½ë ìì± * @param {boolean} addCell * @param {boolean} exec ì¤íì¬ë¶ * @param {boolean} isClicked trueë©´ node ë¨ìì ì½ë ì¤í, falseë©´ ì ì²´ ë¨ìì ì½ë ì¤í */ ImportPackage.prototype.generateCode = function( addCell, exec, isClicked ) { // validate code if (!this.optionValidation()) return; // make code var result = ''; if (isClicked) { result = this.blockContainer.getAPIBlockCode(); } else { result = this.blockContainer.makeAllCode(); } if (this.blockContainer.getBlockList().length == 0 || !result) { result = ''; } /** add code */ if ( !addCell ) { // code addì ë©íë°ì´í° ìì± this.blockContainer.saveAPIBlockMetadata(); return result; } // execute code this.cellExecute(result, exec); } return { initOption: initOption }; });