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/common/component/vpSuggestInputText' , 'nbextensions/visualpython/src/pandas/common/pandasGenerator' ], function (requirejs, $, vpCommon, vpConst, sb, vpFuncJS, vpSuggestInputText, pdGen) { // ìµì ìì± const funcOptProp = { funcName : "len()" , funcID : "pyBuilt_len" } /** * html load ì½ë°±. ê³ ì id ìì±íì¬ ë¶ê³¼íë©° js ê°ì²´ í´ëì¤ ìì±íì¬ ì»¨í ì´ëë¡ ì ë¬ * @param {function} callback í¸ì¶ì(컨í ì´ë) ì ì½ë°±í¨ì * @param {JSON} meta ë©í ë°ì´í° */ 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 osSample = new PythonCommon(uuid); osSample.metadata = meta; // ìµì ìì± í ë¹. osSample.setOptionProp(funcOptProp); // html ì¤ì . osSample.initHtml(); // TODO: meta load ì²ë¦¬ ë°©ì ê²í . // ë°©ì 1. callback ìì ì²ë¦¬ // ë°©ì 2. initHtml ë´ìì meta ì¡´ì¬ ì initê³¼ ëìì ì²ë¦¬. // ë°©ì 3. initHtml íì ìµì ë´ìì load í¨ì í¸ì¶. callback(osSample); // ê°ì²´ë¥¼ callback ì¸ìë¡ ì ë¬ } } /** * html ë¡ë. * @param {function} callback í¸ì¶ì(컨í ì´ë) ì ì½ë°±í¨ì * @param {JSON} meta ë©í ë°ì´í° */ var initOption = function(callback, meta) { vpCommon.loadHtml(vpCommon.wrapSelector(vpCommon.formatString("#{0}", vpConst.OPTION_GREEN_ROOM)), "python_common/index.html", optionLoadCallback, callback, meta); } /** * 본 ìµì ì²ë¦¬ ìí í´ëì¤ * @param {String} uuid ê³ ì id */ var PythonCommon = function(uuid) { this.uuid = uuid; // Load html ììì uuid. this.state = { } this.package = { input: [ { name: 'vp_pyReturn' }, { name: 'vp_pyLen' } ] } } /** * vpFuncJS ìì ìì */ PythonCommon.prototype = Object.create(vpFuncJS.VpFuncJS.prototype); /** * ì í¨ì± ê²ì¬ * @returns ì í¨ì± ê²ì¬ ê²°ê³¼. ì í©ì true */ PythonCommon.prototype.optionValidation = function() { var required = [ 'vp_pyLen' ]; for (var i=0; i < required.length; i++) { var tag = $(this.wrapSelector('#' + required[i])); var value = $(tag).val(); if (value == '') { var label = $(tag).closest('tr').find('th').text().trim(); vpCommon.renderAlertModal("'" + label + "' is required."); return false; } } return true; } /** * html ë´ë¶ binding ì²ë¦¬ */ PythonCommon.prototype.initHtml = function() { this.loadCss(Jupyter.notebook.base_url + vpConst.BASE_PATH + vpConst.STYLE_PATH + "python_common/index.css"); var sbPageContent = new sb.StringBuilder(); var sbTagString = new sb.StringBuilder(); // íì ìµì í ì´ë¸ ë ì´ìì var tblLayoutRequire = this.createVERSimpleLayout("25%"); sbTagString.clear(); sbTagString.appendFormat('', 'vp_pyLen', 'vp-input'); tblLayoutRequire.addReqRow("Input Data", sbTagString.toString()); sbTagString.clear(); sbTagString.appendFormat('', 'vp_pyReturn', 'vp-input l'); tblLayoutRequire.addRow("Return to", sbTagString.toString()); // íì ìµì ìì (ìì½ëì¸ ë°ì¤) var accBoxRequire = this.createOptionContainer(vpConst.API_REQUIRE_OPTION_BOX_CAPTION); accBoxRequire.setOpenBox(true); accBoxRequire.appendContent(tblLayoutRequire.toTagString()); sbPageContent.appendLine(accBoxRequire.toTagString()); // ì¶ê° ìµì í ì´ë¸ ë ì´ìì // var tblLayoutAdditional = this.createVERSimpleLayout("30%"); // // ì¶ê° ìµì ìì // var accBoxAdditional = this.createOptionContainer(vpConst.API_ADDITIONAL_OPTION_BOX_CAPTION); // accBoxAdditional.appendContent(tblLayoutAdditional.toTagString()); // sbPageContent.appendLine(accBoxAdditional.toTagString()); this.setPage(sbPageContent.toString()); sbPageContent.clear(); var that = this; // async bind suggest input pdGen.vp_searchVarList([], function(result) { var varList = JSON.parse(result); varList = varList.map(function(v) { return { label: v.varName + ' (' + v.varType + ')', value: v.varName }; }); var suggestInput = new vpSuggestInputText.vpSuggestInputText(); suggestInput.setComponentID('vp_pyLen'); suggestInput.addClass('vp-input'); suggestInput.setSuggestList(function() { return varList; }); suggestInput.setNormalFilter(false); suggestInput.setValue($(that.wrapSelector('#vp_pyLen')).val()); $(that.wrapSelector('#vp_pyLen')).replaceWith(function() { return suggestInput.toTagString(); }) }); } /** * ì½ë ìì± * @param {boolean} addCell ì ì ì¶ê° * @param {boolean} exec ì¤íì¬ë¶ * @returns ìì±ë ì½ë */ PythonCommon.prototype.generateCode = function(addCell = false, exec = false) { var code = new sb.StringBuilder(); var returnVar = $(this.wrapSelector('#vp_pyReturn')).val(); if (returnVar != '') { code.appendFormat("{0} = ", returnVar); } code.appendFormat('len({0})', $(this.wrapSelector('#vp_pyLen')).val()); if (addCell) { this.cellExecute(code.toString(), exec); } return code.toString(); } return { initOption: initOption }; });