define([ 'require' , 'jquery' , 'nbextensions/visualpython/src/common/vpCommon' , 'nbextensions/visualpython/src/common/constant' , 'nbextensions/visualpython/src/common/StringBuilder' , 'nbextensions/visualpython/src/common/vpFuncJS' , 'nbextensions/visualpython/src/pandas/common/commonPandas' , 'nbextensions/visualpython/src/pandas/common/pandasGenerator' ], function (requirejs, $, vpCommon, vpConst, sb, vpFuncJS, libPandas, pdGen) { // ìµì ìì± const funcOptProp = { stepCount : 1 , funcName : "Is Null" , funcID : "pdFunc_isNull" , libID : "pd033" } /** * 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(vpCommon.formatString("#{0}", vpConst.OPTION_GREEN_ROOM))).find(vpCommon.formatString(".{0}", vpConst.API_OPTION_PAGE)).addClass(uuid); // ìµì ê°ì²´ ìì± var pdPackage = new PandasPackage(uuid); pdPackage.metadata = meta; // ìµì ìì± í ë¹. pdPackage.setOptionProp(funcOptProp); // html ì¤ì . pdPackage.initHtml(); callback(pdPackage); // ê³µíµ ê°ì²´ë¥¼ callback ì¸ìë¡ ì ë¬ } } /** * html ë¡ë. * @param {function} callback í¸ì¶ì(컨í ì´ë) ì ì½ë°±í¨ì */ var initOption = function(callback, meta) { vpCommon.loadHtml(vpCommon.wrapSelector(vpCommon.formatString("#{0}", vpConst.OPTION_GREEN_ROOM)), "pandas/common/commonPandas.html", optionLoadCallback, callback, meta); } /** * 본 ìµì ì²ë¦¬ ìí í´ëì¤ * @param {String} uuid ê³ ì id */ var PandasPackage = function(uuid) { this.uuid = uuid; // Load html ììì uuid. // pandas í¨ì this.package = libPandas._PANDAS_FUNCTION[funcOptProp.libID]; } /** * vpFuncJS ìì ìì */ PandasPackage.prototype = Object.create(vpFuncJS.VpFuncJS.prototype); /** * ì í¨ì± ê²ì¬ * @returns ì í¨ì± ê²ì¬ ê²°ê³¼. ì í©ì true */ PandasPackage.prototype.optionValidation = function() { return true; // ë¶ëª¨ í´ëì¤ ì í¨ì± ê²ì¬ í¸ì¶. // vpFuncJS.VpFuncJS.prototype.optionValidation.apply(this); } /** * html ë´ë¶ binding ì²ë¦¬ */ PandasPackage.prototype.initHtml = function() { this.showFunctionTitle(); this.bindOptions(); this.loadCss(Jupyter.notebook.base_url + vpConst.BASE_PATH + vpConst.STYLE_PATH + "pandas/commonPandas.css"); } /** * ì íí í¨í¤ì§ëª ì ë ¥ */ PandasPackage.prototype.showFunctionTitle = function() { $(this.wrapSelector('.vp_functionName')).text(this.package.name); } /** * Pandas 기본 í¨í¤ì§ ë°ì¸ë© */ PandasPackage.prototype.bindOptions = function() { // HTML êµ¬ì± pdGen.vp_showInterface(this); // if it has no additional options, remove that box if (this.package.variable == undefined || this.package.variable.length <= 0) { $(this.wrapSelector('#vp_optionBox')).closest('div.vp-accordion-container').remove(); } }; /** * ì½ë ìì± * @param {boolean} exec ì¤íì¬ë¶ */ PandasPackage.prototype.generateCode = function(addCell, exec) { var sbCode = new sb.StringBuilder(); // ì½ë ìì± var result = pdGen.vp_codeGenerator(this.uuid, this.package); if (result == null) return "BREAK_RUN"; // ì½ë ìì± ì¤ ì¤ë¥ ë°ì sbCode.append(result); // cell metadata ìì±í기 // pdGen.vp_setCellMetadata(_VP_CODEMD); if (addCell) this.cellExecute(sbCode.toString(), exec); return sbCode.toString(); } return { initOption: initOption }; });