diff --git a/visualpython/css/component/multiSelector.css b/visualpython/css/component/multiSelector.css index 3d6fb3ae..391a87c2 100644 --- a/visualpython/css/component/multiSelector.css +++ b/visualpython/css/component/multiSelector.css @@ -80,10 +80,4 @@ left: calc(100% - 25px); bottom: 23px; cursor: pointer; -} -.vp-cs-del-item { - position: relative; - float: right; - top: 4px; - cursor: pointer; } \ No newline at end of file diff --git a/visualpython/css/m_ml/modelInfo.css b/visualpython/css/m_ml/modelInfo.css index 2bd9d885..2975f521 100644 --- a/visualpython/css/m_ml/modelInfo.css +++ b/visualpython/css/m_ml/modelInfo.css @@ -1,7 +1,3 @@ -.vp-model-select-box { - grid-column-gap: 5px; - align-items: start; -} .vp-ins-select-title { font-weight: bold; color: var(--vp-font-highlight); diff --git a/visualpython/html/component/dataSelector.html b/visualpython/html/component/dataSelector.html index 2e402219..8090aace 100644 --- a/visualpython/html/component/dataSelector.html +++ b/visualpython/html/component/dataSelector.html @@ -8,7 +8,7 @@
-
+
@@ -22,7 +22,7 @@
-
+
diff --git a/visualpython/html/m_apps/file.html b/visualpython/html/m_apps/file.html index c9d92782..07bd8d82 100644 --- a/visualpython/html/m_apps/file.html +++ b/visualpython/html/m_apps/file.html @@ -74,7 +74,7 @@ - + diff --git a/visualpython/js/MainFrame.js b/visualpython/js/MainFrame.js index 37981c13..b7601fee 100644 --- a/visualpython/js/MainFrame.js +++ b/visualpython/js/MainFrame.js @@ -478,10 +478,10 @@ define([ let parentBlock = null; let prevBlock = null; loadStateList.forEach(obj => { - let { file, blockType, menuId, menuState, menuConfig, argIdx, position, afterAction } = obj; + let { blockType, menuId, menuState, menuConfig, argIdx, position, afterAction } = obj; // get OptionComponent Object // LAB: relative path needed - let OptionComponent = require('./' + file); + let OptionComponent = require('./' + menuConfig.file); if (OptionComponent) { let taskState = menuState.taskState; let blockState = menuState.blockState; diff --git a/visualpython/js/com/com_Config.js b/visualpython/js/com/com_Config.js index 24c48868..9c38f813 100644 --- a/visualpython/js/com/com_Config.js +++ b/visualpython/js/com/com_Config.js @@ -216,7 +216,8 @@ define([ vp_config_version: '1.0.0', vp_signature: 'VisualPython', vp_position: {}, - vp_section_display: false, + // CHROME: default to display vp + vp_section_display: true, vp_note_display: false, vp_menu_width: Config.MENU_MIN_WIDTH, vp_note_width: Config.BOARD_MIN_WIDTH @@ -492,7 +493,7 @@ define([ that._checkMounted().then(function() { that._readFromColab(configKey).then(function(result) { let data = result; - if (data == undefined || (data instanceof Object && Object.keys(data).length === 0)) { + if (data == undefined || data == {}) { resolve(data); return; } @@ -500,7 +501,7 @@ define([ resolve(data); return; } - if (data instanceof Object && Object.keys(data).length > 0) { + if (Object.keys(data).length > 0) { resolve(data[dataKey]); return; } @@ -516,7 +517,7 @@ define([ // LAB: use local .visualpython files that._readFromLab(configKey).then(function(result) { let data = result; - if (data == undefined || (data instanceof Object && Object.keys(data).length === 0)) { + if (data == undefined || data == {}) { resolve(data); return; } @@ -524,7 +525,7 @@ define([ resolve(data); return; } - if (data instanceof Object && Object.keys(data).length > 0) { + if (Object.keys(data).length > 0) { resolve(data[dataKey]); return; } @@ -786,40 +787,6 @@ define([ return Config.version; } - checkVersionTimestamp = function() { - let that = this; - // check version timestamp - let nowDate = new Date(); - this.getData('version_timestamp', 'vpcfg').then(function(data) { - let doCheckVersion = false; - vpLog.display(VP_LOG_TYPE.DEVELOP, 'Checking its version timestamp... : ' + data); - if (data == undefined || (data instanceof Object && Object.keys(data).length === 0)) { - // no timestamp, check version - doCheckVersion = true; - } else if (data != '') { - let lastCheck = new Date(parseInt(data)); - let diffCheck_now = new Date(nowDate.getFullYear(), nowDate.getMonth() + 1, nowDate.getDate()); - let diffCheck_last = new Date(lastCheck.getFullYear(), lastCheck.getMonth() + 1, lastCheck.getDate()); - - let diff = Math.abs(diffCheck_now.getTime() - diffCheck_last.getTime()); - diff = Math.ceil(diff / (1000 * 3600 * 24)); - - if (diff >= 1) { - // if More than 1 day passed, check version - doCheckVersion = true; - } - } - - // check version and update version_timestamp - if (doCheckVersion == true) { - that.checkVpVersion(true); - } - - }).catch(function(err) { - vpLog.display(VP_LOG_TYPE.ERROR, err); - }) - } - checkVpVersion(background=false) { let that = this; let nowVersion = this.getVpInstalledVersion(); @@ -859,8 +826,6 @@ define([ switch (clickedBtnIdx) { case 0: // cancel - // update version_timestamp - that.setData({ 'version_timestamp': new Date().getTime() }, 'vpcfg'); break; case 1: // update diff --git a/visualpython/js/com/com_generatorV2.js b/visualpython/js/com/com_generatorV2.js index dcbfaf2f..c05b8988 100644 --- a/visualpython/js/com/com_generatorV2.js +++ b/visualpython/js/com/com_generatorV2.js @@ -137,7 +137,7 @@ define([ package.options && package.options.forEach(function(o, i) { var obj = JSON.parse(JSON.stringify(o)); let newTag = vp_createTag(pageThis, obj, state); - if (obj.required === true || obj.output === true) { + if (obj.required) { tblInput.append(newTag); } else { tblOption.append(newTag); @@ -145,9 +145,6 @@ define([ }); // TODO: userOption - if (package.code.includes('${etc}')) { - - } bindAutoComponentEvent(pageThis); } @@ -169,7 +166,7 @@ define([ let value = state[name]; var requiredFontStyle = required == true? 'vp-orange-text' : ''; - var lblTag = $(``).attr({ + var lblTag = $(``).attr({ 'for': name, 'class': requiredFontStyle, 'title': '(' + name + ')' diff --git a/visualpython/js/com/component/MultiSelector.js b/visualpython/js/com/component/MultiSelector.js index 4ae50c2d..f31bc0ea 100644 --- a/visualpython/js/com/component/MultiSelector.js +++ b/visualpython/js/com/component/MultiSelector.js @@ -380,6 +380,62 @@ define([ that.bindDraggable(); }); + // item indexing + $(this.wrapSelector('.' + APP_SELECT_ITEM)).on('click', function(event) { + var dataIdx = $(this).attr('data-idx'); + var idx = $(this).index(); + var added = $(this).hasClass('added'); // right side added item? + var selector = ''; + + // remove selection for select box on the other side + if (added) { + // remove selection for left side + $(that.wrapSelector('.' + APP_SELECT_ITEM + ':not(.added)')).removeClass('selected'); + // set selector + selector = '.added'; + } else { + // remove selection for right(added) side + $(that.wrapSelector('.' + APP_SELECT_ITEM + '.added')).removeClass('selected'); + // set selector + selector = ':not(.added)'; + } + + if (vpEvent.keyManager.keyCheck.ctrlKey) { + // multi-select + that.pointer = { start: idx, end: -1 }; + $(this).toggleClass('selected'); + } else if (vpEvent.keyManager.keyCheck.shiftKey) { + // slicing + var startIdx = that.pointer.start; + + if (startIdx == -1) { + // no selection + that.pointer = { start: idx, end: -1 }; + } else if (startIdx > idx) { + // add selection from idx to startIdx + var tags = $(that.wrapSelector('.' + APP_SELECT_ITEM + selector)); + for (var i = idx; i <= startIdx; i++) { + $(tags[i]).addClass('selected'); + } + that.pointer = { start: startIdx, end: idx }; + } else if (startIdx <= idx) { + // add selection from startIdx to idx + var tags = $(that.wrapSelector('.' + APP_SELECT_ITEM + selector)); + for (var i = startIdx; i <= idx; i++) { + $(tags[i]).addClass('selected'); + } + that.pointer = { start: startIdx, end: idx }; + } + } else { + // single-select + that.pointer = { start: idx, end: -1 }; + // un-select others + $(that.wrapSelector('.' + APP_SELECT_ITEM + selector)).removeClass('selected'); + // select this + $(this).addClass('selected'); + } + }); + // item indexing - add all $(this.wrapSelector('.' + APP_SELECT_ADD_ALL_BTN)).on('click', function(event) { $(that.wrapSelector('.' + APP_SELECT_BOX + '.left .' + APP_SELECT_ITEM)).appendTo( @@ -454,75 +510,6 @@ define([ that._addNewItem(newItemName); } }); - - this._bindItemClickEvent(); - } - - _bindItemClickEvent() { - let that = this; - // item indexing - $(this.wrapSelector('.' + APP_SELECT_ITEM)).off('click'); - $(this.wrapSelector('.' + APP_SELECT_ITEM)).on('click', function(event) { - var dataIdx = $(this).attr('data-idx'); - var idx = $(this).index(); - var added = $(this).hasClass('added'); // right side added item? - var selector = ''; - - // remove selection for select box on the other side - if (added) { - // remove selection for left side - $(that.wrapSelector('.' + APP_SELECT_ITEM + ':not(.added)')).removeClass('selected'); - // set selector - selector = '.added'; - } else { - // remove selection for right(added) side - $(that.wrapSelector('.' + APP_SELECT_ITEM + '.added')).removeClass('selected'); - // set selector - selector = ':not(.added)'; - } - - if (vpEvent.keyManager.keyCheck.ctrlKey) { - // multi-select - that.pointer = { start: idx, end: -1 }; - $(this).toggleClass('selected'); - } else if (vpEvent.keyManager.keyCheck.shiftKey) { - // slicing - var startIdx = that.pointer.start; - - if (startIdx == -1) { - // no selection - that.pointer = { start: idx, end: -1 }; - } else if (startIdx > idx) { - // add selection from idx to startIdx - var tags = $(that.wrapSelector('.' + APP_SELECT_ITEM + selector)); - for (var i = idx; i <= startIdx; i++) { - $(tags[i]).addClass('selected'); - } - that.pointer = { start: startIdx, end: idx }; - } else if (startIdx <= idx) { - // add selection from startIdx to idx - var tags = $(that.wrapSelector('.' + APP_SELECT_ITEM + selector)); - for (var i = startIdx; i <= idx; i++) { - $(tags[i]).addClass('selected'); - } - that.pointer = { start: startIdx, end: idx }; - } - } else { - // single-select - that.pointer = { start: idx, end: -1 }; - // un-select others - $(that.wrapSelector('.' + APP_SELECT_ITEM + selector)).removeClass('selected'); - // select this - $(this).addClass('selected'); - } - }); - - // item deleting (manually added item only) - $(this.wrapSelector('.vp-cs-del-item')).off('click'); - $(this.wrapSelector('.vp-cs-del-item')).on('click', function(event) { - $(this).closest('.' + APP_SELECT_ITEM).remove(); - that.pointer = { start: -1, end: -1 }; - }); } _addNewItem(newItemName) { @@ -564,7 +551,6 @@ define([ let newItemIndex = this.dataList.length; var targetTag = $(`
${newItemName} -
`); $(targetTag).appendTo( $(this.wrapSelector('.' + APP_SELECT_BOX + '.right')) @@ -574,8 +560,6 @@ define([ $(this.wrapSelector('.' + APP_SELECT_ITEM)).removeClass('selected'); // clear item input $(this.wrapSelector('.vp-cs-add-item-name')).val(''); - // bind click event - this._bindItemClickEvent(); // bind draggable this.bindDraggable(); } diff --git a/visualpython/js/com/component/PopupComponent.js b/visualpython/js/com/component/PopupComponent.js index 7415b0f2..356c93ce 100644 --- a/visualpython/js/com/component/PopupComponent.js +++ b/visualpython/js/com/component/PopupComponent.js @@ -96,7 +96,6 @@ define([ this.name = name; this.path = path; this.category = category; - this.config = { sizeLevel: 0, // 0: 400x400 / 1: 500x500 / 2: 600x500 / 3: 750x500 diff --git a/visualpython/js/loadVisualpython.js b/visualpython/js/loadVisualpython.js index 2e8ecc69..5d401bb7 100644 --- a/visualpython/js/loadVisualpython.js +++ b/visualpython/js/loadVisualpython.js @@ -206,6 +206,38 @@ define([ } } + var _checkVersion = function() { + // check version timestamp + let nowDate = new Date(); + vpConfig.getData('version_timestamp', 'vpcfg').then(function(data) { + let doCheckVersion = false; + if (data == undefined) { + // no timestamp, check version + doCheckVersion = true; + } else if (data != '') { + let lastCheck = new Date(parseInt(data)); + let diffCheck_now = new Date(nowDate.getFullYear(), nowDate.getMonth() + 1, nowDate.getDate()); + let diffCheck_last = new Date(lastCheck.getFullYear(), lastCheck.getMonth() + 1, lastCheck.getDate()); + + let diff = Math.abs(diffCheck_now.getTime() - diffCheck_last.getTime()); + diff = Math.ceil(diff / (1000 * 3600 * 24)); + + if (diff >= 1) { + // if More than 1 day passed, check version + doCheckVersion = true; + } + } + + // check version and update version_timestamp + if (doCheckVersion == true) { + vpConfig.checkVpVersion(true); + } + + }).catch(function(err) { + vpLog.display(VP_LOG_TYPE.ERROR, err); + }) + } + //======================================================================== // External call function //======================================================================== @@ -258,10 +290,9 @@ define([ _addToolBarVpButton(); } _loadVpResource(cfg); - vpConfig.checkVersionTimestamp(); + _checkVersion(); - if ((cfg.vp_section_display && vpFrame) - || vpConfig.extensionType === 'colab') { // CHROME: default to display vp + if (cfg.vp_section_display && vpFrame) { vpFrame.openVp(); } @@ -288,13 +319,11 @@ define([ if (newValue.sessionContext.isReady) { vpLog.display(VP_LOG_TYPE.LOG, 'vp operations for kernel ready...'); vpConfig.readKernelFunction(); - vpConfig.checkVersionTimestamp(); } newValue.sessionContext._connectionStatusChanged.connect(function(s2, status) { if (status === 'connected') { vpLog.display(VP_LOG_TYPE.LOG, 'vp operations for kernel ready...'); vpConfig.readKernelFunction(); - vpConfig.checkVersionTimestamp(); } }); } else { diff --git a/visualpython/js/m_apps/File.js b/visualpython/js/m_apps/File.js index 95cd0e39..be00f7ad 100644 --- a/visualpython/js/m_apps/File.js +++ b/visualpython/js/m_apps/File.js @@ -22,10 +22,9 @@ define([ 'vp_base/js/com/com_generatorV2', 'vp_base/data/m_library/pandasLibrary', 'vp_base/js/com/component/FileNavigation', - 'vp_base/js/com/component/SuggestInput', - 'vp_base/js/com/component/DataSelector' + 'vp_base/js/com/component/SuggestInput' ], function(fileHtml, fileCss, com_String, com_util, com_Const, PopupComponent - , pdGen, pandasLibrary, FileNavigation, SuggestInput, DataSelector) { + , pdGen, pandasLibrary, FileNavigation, SuggestInput) { /** * File @@ -287,14 +286,7 @@ define([ templateForBody() { /** Implement generating template */ - let page = $(fileHtml); - - let allocateSelector = new DataSelector({ - pageThis: this, id: 'vp_sampleReturn', placeholder: 'Variable name' - }); - $(page).find('#vp_sampleReturn').replaceWith(allocateSelector.toTagString()); - - return page; + return fileHtml; } renderPage(pageType) { diff --git a/visualpython/js/menu/MenuFrame.js b/visualpython/js/menu/MenuFrame.js index 998e6146..76aab784 100644 --- a/visualpython/js/menu/MenuFrame.js +++ b/visualpython/js/menu/MenuFrame.js @@ -199,19 +199,19 @@ define([ return {}; } - getMenuLibrary(menuId, libraries=this.menuLibrariesFlatten) { + getMenuLibrary(menuId, libraries=this.menuLibraries) { for (var i=0; i < libraries.length; i++) { var item = libraries[i]; if (item) { if (item.id === menuId) { return item; } - // if (item.type === 'package') { - // var result = this.getMenuLibrary(menuId, item.item); - // if (result) { - // return result; - // } - // } + if (item.type === 'package') { + var result = this.getMenuLibrary(menuId, item.item); + if (result) { + return result; + } + } } } return null; @@ -243,12 +243,7 @@ define([ var that = this; var body = group.getBody(); var item = group.getItem(); - var state = group.getState(); item && item.forEach(child => { - // remember parent to navigate its parent menu - var category = state.category?(state.category + ' > ' + state.name):state.name; - child['category'] = category; - if (child.type == 'package') { // packages : MenuGroup var menuGroup = new MenuGroup($(body), child); @@ -294,7 +289,7 @@ define([ }); let functionList = this.menuLibrariesFlatten.map(menu => { - return { label: menu.name, value: menu.name, dtype: menu.category, ...menu } + return { label: menu.name, value: menu.name, ...menu } }); // render searchbox let searchBox = new SuggestInput();