-
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 = $(`
`);
$(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();