Skip to content

Commit d9c8ea4

Browse files
author
minjk-bl
committed
Fix varSelector, add column to value_counts
1 parent 96039cc commit d9c8ea4

File tree

6 files changed

+250
-62
lines changed

6 files changed

+250
-62
lines changed

data/libraries.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2393,8 +2393,7 @@
23932393
"path": "visualpython - library - pandas - data info - get value counts",
23942394
"desc": "values counts",
23952395
"tag": "GET VALUE COUNTS, .VALUE_COUNTS",
2396-
"file": "m_library/m_pandas/getValueCounts.js",
2397-
"useAuto" : true
2396+
"file": "m_library/m_pandas/getValueCounts"
23982397
},
23992398
{
24002399
"id": "pdIdt_info",

data/m_library/pandasLibrary.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1927,8 +1927,8 @@ define([
19271927
name: 'i0',
19281928
type: 'var',
19291929
label: 'Target Variable',
1930-
component: 'var_select',
1931-
var_type: ['DataFrame', 'Series', 'Index']
1930+
// component: 'var_select',
1931+
// var_type: ['DataFrame', 'Series', 'Index']
19321932
}
19331933
],
19341934
variable: [],

js/com/com_generator.js

Lines changed: 70 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,20 @@ define([
2424
*/
2525
var vp_showInterfaceOnPage = function(selector, package) {
2626

27+
let autoCols = {};
28+
2729
// generate input variable tag
2830
var tblInput = $(selector+' #vp_inputOutputBox table tbody');
2931
package.input && package.input.forEach(function(o, i) {
3032
var obj = JSON.parse(JSON.stringify(o));
3133
tblInput.append(vp_createTag(selector, obj, true, (obj.required == false? false: true)));
34+
if (obj.component === 'col_select') {
35+
if (autoCols[obj.target] != undefined) {
36+
autoCols[obj.target].push(obj.name);
37+
} else {
38+
autoCols[obj.target] = [ obj.name ];
39+
}
40+
}
3241
});
3342

3443
// generate option variable tag
@@ -37,13 +46,38 @@ define([
3746
// cell metadata test
3847
var obj = JSON.parse(JSON.stringify(o)); // deep copy
3948
tblOption.append(vp_createTag(selector, obj, true, (obj.required == true)));
49+
if (obj.component === 'col_select') {
50+
if (autoCols[obj.target] != undefined) {
51+
autoCols[obj.target].push(obj.name);
52+
} else {
53+
autoCols[obj.target] = [ obj.name ];
54+
}
55+
}
4056
});
4157

4258
// generate output variable tag
4359
var tblOutput = $(selector+' #vp_inputOutputBox table tbody');
4460
package.output && package.output.forEach(function(o, i) {
4561
var obj = JSON.parse(JSON.stringify(o)); // deep copy
4662
tblOutput.append(vp_createTag(selector, obj, true, (obj.required == true)));
63+
if (obj.component === 'col_select') {
64+
if (autoCols[obj.target] != undefined) {
65+
autoCols[obj.target].push(obj.name);
66+
} else {
67+
autoCols[obj.target] = [ obj.name ];
68+
}
69+
}
70+
});
71+
72+
// bind column list FIXME: change event not triggered on changing df input
73+
Object.keys(autoCols).forEach(target => {
74+
let targetSelector = selector + ' #' + target;
75+
vp_bindColumnSource(selector, targetSelector, autoCols[target]);
76+
// on change event
77+
$(targetSelector).on('change', function() {
78+
console.log('change event ', selector, targetSelector, autoCols[target]);
79+
vp_bindColumnSource(selector, this, autoCols[target]);
80+
});
4781
});
4882
}
4983

@@ -135,6 +169,15 @@ define([
135169
vp_generateVarSelect(tag, obj.var_type, obj.value);
136170
tblInput.appendChild(tag);
137171
break;
172+
case 'col_select':
173+
var tag = document.createElement('input');
174+
$(tag).attr({
175+
'type': 'text',
176+
'id': obj.name,
177+
'class': 'vp-input vp-state'
178+
});
179+
tblInput.appendChild(tag);
180+
break;
138181
case 'textarea':
139182
var textarea = $(`<textarea id="${obj.name}" class="vp-textarea vp-state">${(obj.default==undefined?'':obj.default)}</textarea>`);
140183
// cell metadata test
@@ -209,7 +252,7 @@ define([
209252
suggestInput.setSelectEvent(function(selectedValue) {
210253
// trigger change
211254
$(divTag + ' #' + obj.name).val(selectedValue);
212-
$(divTag + ' #' + obj.name).trigger('select_suggestvalue');
255+
$(divTag + ' #' + obj.name).trigger('change');
213256
});
214257
$(divTag + ' #' + obj.name).replaceWith(function() {
215258
return suggestInput.toTagString();
@@ -320,6 +363,9 @@ define([
320363
case 'var_multi':
321364
value = $(vp_wrapSelector(pageId, '#'+obj.name)).val();
322365
break;
366+
case 'col_select':
367+
value = $(vp_wrapSelector(pageId, '#'+obj.name)).val();
368+
break;
323369
case 'table':
324370
case 'file':
325371
default:
@@ -424,26 +470,28 @@ define([
424470

425471
/**
426472
* Bind columns source function
427-
* @param {object} pageThis
473+
* @param {string} selector thisWrapSelector
428474
* @param {object} target
429475
* @param {array} columnInputIdList
430476
* Usage :
431477
* $(document).on('change', this.wrapSelector('#dataframe_tag_id'), function() {
432-
* pdGen.vp_bindColumnSource(that, this, ['column_input_id']);
478+
* pdGen.vp_bindColumnSource(that.wrapSelector(), this, ['column_input_id']);
433479
* });
434480
*/
435-
var vp_bindColumnSource = function(pageThis, target, columnInputIdList) {
436-
var varName = $(target).val();
437-
481+
var vp_bindColumnSource = function(selector, target, columnInputIdList) {
482+
var varName = '';
483+
if ($(target).length > 0) {
484+
varName = $(target).val();
485+
}
438486
if (varName === '') {
439487
// reset with no source
440488
columnInputIdList && columnInputIdList.forEach(columnInputId => {
441489
var suggestInputX = new SuggestInput();
442490
suggestInputX.setComponentID(columnInputId);
443-
suggestInputX.addClass('vp-input');
491+
suggestInputX.addClass('vp-input vp-state');
444492
suggestInputX.setNormalFilter(false);
445-
suggestInputX.setValue($(pageThis.wrapSelector('#' + columnInputId)).val());
446-
$(pageThis.wrapSelector('#' + columnInputId)).replaceWith(function() {
493+
suggestInputX.setValue($(selector + ' #' + columnInputId).val());
494+
$(selector + ' #' + columnInputId).replaceWith(function() {
447495
return suggestInputX.toTagString();
448496
});
449497
});
@@ -454,22 +502,20 @@ define([
454502
try {
455503
let { result, type, msg } = resultObj;
456504
var varResult = JSON.parse(result);
457-
458-
if (varResult.length > 0) {
459-
// columns using suggestInput
460-
columnInputIdList && columnInputIdList.forEach(columnInputId => {
461-
var suggestInputX = new SuggestInput();
462-
suggestInputX.setComponentID(columnInputId);
463-
suggestInputX.addClass('vp-input');
464-
suggestInputX.setPlaceholder("column name");
465-
suggestInputX.setSuggestList(function() { return varResult; }); //FIXME:
466-
suggestInputX.setNormalFilter(false);
467-
suggestInputX.setValue($(pageThis.wrapSelector('#' + columnInputId)).val());
468-
$(pageThis.wrapSelector('#' + columnInputId)).replaceWith(function() {
469-
return suggestInputX.toTagString();
470-
});
505+
506+
// columns using suggestInput
507+
columnInputIdList && columnInputIdList.forEach(columnInputId => {
508+
var suggestInputX = new SuggestInput();
509+
suggestInputX.setComponentID(columnInputId);
510+
suggestInputX.addClass('vp-input vp-state');
511+
suggestInputX.setPlaceholder("column name");
512+
suggestInputX.setSuggestList(function() { return varResult; }); //FIXME:
513+
suggestInputX.setNormalFilter(false);
514+
suggestInputX.setValue($(selector + ' #' + columnInputId).val());
515+
$(selector + ' #' + columnInputId).replaceWith(function() {
516+
return suggestInputX.toTagString();
471517
});
472-
}
518+
});
473519
} catch (e) {
474520
vpLog.display(VP_LOG_TYPE.ERROR, 'com_generator - bindColumnSource: not supported data type. ', e);
475521
}

0 commit comments

Comments
 (0)