@@ -253,53 +253,55 @@ define([
253253 }
254254 } ) ;
255255
256+ /** Apps Menu item click */
256257 /** Apps Menu item click */
257258 $ ( document ) . on ( STR_CLICK , '.vp-apiblock-menu-apps-item' , function ( ) {
258259 var menu = $ ( this ) . attr ( 'data-menu' ) ;
259260 switch ( menu )
260261 {
261262 case 'import' :
263+ blockContainer . createAppsPage ( '/nbextensions/visualpython/src/file_io/import.js' , {
264+ title : 'Import' ,
265+ width : '500px'
266+ } ) ;
262267 break ;
263268 case 'markdown' :
269+ // blockContainer.createAppsPage('/nbextensions/visualpython/src/markdown/markdown.js', {
270+ // title: 'Markdown'
271+ // }, function(funcJS) {
272+ // funcJS.bindOptionEventForPopup();
273+ // });
274+ blockContainer . createTextBlock ( ) ;
264275 break ;
265276 case 'snippets' :
266- var funcID = 'com_udf' ;
267- var naviInfo = getNavigationInfo ( funcID ) ;
268- /** board에 선택한 API List 블럭 생성 */
269- blockContainer . createAPIListBlock ( funcID , naviInfo ) ;
277+ blockContainer . createAppsPage ( '/nbextensions/visualpython/src/file_io/udf.js' , {
278+ title : 'Snippets'
279+ } ) ;
270280 break ;
271281 case 'variable' :
272- var funcID = 'com_variables' ;
273- var naviInfo = getNavigationInfo ( funcID ) ;
274- /** board에 선택한 API List 블럭 생성 */
275- blockContainer . createAPIListBlock ( funcID , naviInfo ) ;
282+ blockContainer . createAppsPage ( '/nbextensions/visualpython/src/file_io/variables.js' , {
283+ title : 'Variables'
284+ } ) ;
276285 break ;
277286 case 'file' :
278287 // TODO: file
288+ blockContainer . createAppsPage ( 'nbextensions/visualpython/src/common/vpFile' ) ;
279289 break ;
280290 case 'instance' :
281- var funcID = 'com_instance' ;
282- var naviInfo = getNavigationInfo ( funcID ) ;
283- /** board에 선택한 API List 블럭 생성 */
284- blockContainer . createAPIListBlock ( funcID , naviInfo ) ;
291+ blockContainer . createAppsPage ( '/nbextensions/visualpython/src/file_io/instance.js' , {
292+ title : 'Instance'
293+ } ) ;
285294 break ;
286295 case 'subset' :
287- var funcID = 'pd_subset' ;
288- var naviInfo = getNavigationInfo ( funcID ) ;
289- /** board에 선택한 API List 블럭 생성 */
290- blockContainer . createAPIListBlock ( funcID , naviInfo ) ;
296+ blockContainer . createAppsPage ( 'nbextensions/visualpython/src/common/vpSubsetEditor' ) ;
291297 break ;
292298 case 'frame' :
293- var funcID = 'pd_frameEditor' ;
294- var naviInfo = getNavigationInfo ( funcID ) ;
295- /** board에 선택한 API List 블럭 생성 */
296- blockContainer . createAPIListBlock ( funcID , naviInfo ) ;
299+ blockContainer . createAppsPage ( 'nbextensions/visualpython/src/common/vpFrameEditor' ) ;
297300 break ;
298301 case 'chart' :
299- var funcID = 'mp_plot' ;
300- var naviInfo = getNavigationInfo ( funcID ) ;
301- /** board에 선택한 API List 블럭 생성 */
302- blockContainer . createAPIListBlock ( funcID , naviInfo ) ;
302+ blockContainer . createAppsPage ( '/nbextensions/visualpython/src/matplotlib/plot.js' , {
303+ title : 'Chart'
304+ } ) ;
303305 break ;
304306 case 'merge' :
305307 // TODO: Merge
@@ -316,6 +318,77 @@ define([
316318 }
317319 } ) ;
318320
321+ /** Apps Menu Apply event */
322+ $ ( document ) . on ( 'popup_apply subset_apply frame_apply' , '#vp_appsCode' , function ( evt ) {
323+ var code = evt . code ;
324+ var title = evt . title ;
325+
326+ var isFirstBlock = false ;
327+ const blockList = blockContainer . getBlockList ( ) ;
328+ /** board에 블럭이 0개 일때
329+ * 즉 블럭이 처음으로 생성되는 경우
330+ */
331+ if ( blockList . length == 0 ) {
332+ isFirstBlock = true ;
333+ }
334+
335+ var createdBlock = undefined ;
336+ if ( title == 'Markdown' ) {
337+
338+ createdBlock = blockContainer . createTextBlock ( code ) ;
339+
340+ // createdBlock = blockContainer.createBlock(BLOCK_CODELINE_TYPE.TEXT);
341+ // createdBlock.apply();
342+ // createdBlock.setFuncID(STR_TEXT_BLOCK_MARKDOWN_FUNCID);
343+ // createdBlock.setOptionPageLoadCallback(optionPageLoadCallback_block);
344+ // createdBlock.setLoadOption(loadOption_block);
345+ // createdBlock.setState({
346+ // [STATE_codeLine]: code
347+ // });
348+
349+ // /** board에 블럭이 0개일 경우 */
350+ // if (isFirstBlock == true) {
351+ // createdBlock.setDirection(BLOCK_DIRECTION.ROOT);
352+ // blockContainer.reNewContainerDom();
353+ // /** board에 블럭이 1개 이상 일 경우 */
354+ // } else {
355+ // /** board의 가장 아래 블럭을 가져옴 */
356+ // var lastBottomBlock = blockContainer.getRootToLastBottomBlock();
357+ // lastBottomBlock.appendBlock(createdBlock, BLOCK_DIRECTION.DOWN);
358+ // }
359+ // blockContainer.reRenderAllBlock_asc();
360+ // blockContainer.resetBlockList();
361+ // blockContainer.setSelectBlock(createdBlock);
362+
363+ // createdBlock.writeCode(`<p>${code}</p>`);
364+ // createdBlock.renderSelectedBlockBorderColor(true);
365+ } else {
366+ // 1. add code block
367+ // create block as group block
368+ createdBlock = blockContainer . createBlock ( BLOCK_CODELINE_TYPE . CODE , null , null , true ) ;
369+ // set code
370+ createdBlock . setState ( {
371+ customCodeLine : code
372+ } ) ;
373+ createdBlock . writeCode ( code ) ;
374+ createdBlock . apply ( ) ;
375+ if ( isFirstBlock == true ) {
376+ // if it is first block, set as ROOT
377+ createdBlock . setDirection ( BLOCK_DIRECTION . ROOT ) ;
378+ } else {
379+ var lastBottomBlock = blockContainer . getRootToLastBottomBlock ( ) ;
380+ lastBottomBlock . appendBlock ( createdBlock , BLOCK_DIRECTION . DOWN ) ;
381+ }
382+ blockContainer . addNodeBlock ( createdBlock ) ;
383+ blockContainer . reRenderAllBlock_asc ( ) ;
384+ blockContainer . resetBlockListAndRenderThisBlock ( createdBlock ) ;
385+
386+ }
387+
388+ // 2. add cell and run cell
389+ createdBlock . runThisBlock ( ) ;
390+ } ) ;
391+
319392 /** Logic, API, Data Analysis 의 > 버튼 클릭 */
320393 $ ( document ) . on ( STR_CLICK , `.vp-apiblock-panel-area-vertical-btn` , function ( ) {
321394 if ( $ ( this ) . hasClass ( `vp-apiblock-arrow-down` ) ) {
0 commit comments