मैं अपनी ड्रॉपडाउन सूची में एकाधिक चयनों का समर्थन करने के लिए हैंडॉन्टेबल प्लगइन का विस्तार करने की कोशिश कर रहा हूं। मैंने https://github.com/trebuchetty/Handsontable-select2-editor/issues/7 सुझाए गए 'ड्रॉपडाउन एडिटर' को संशोधित करके लाइब्रेरी में बनाए गए मूल संपादक को विस्तारित करने का प्रयास कर लिया है। मैंने खोजशब्दों के स्रोत के माध्यम से पढ़ने और खोजने में घंटों बिताए लेकिन मैं वास्तविक उपयोग के कुछ भी नहीं आ रहा हूं।एकाधिक चयनों के साथ हैंडसोंटेबल ड्रॉपडाउन
मुझे कोई फर्क नहीं पड़ता कि अगर अंगुलर एक्सटेंशन या किसी अन्य मूल ईसीएमए 5 या https://github.com/handsontable/handsontable प्लगइन को विस्तारित करने के 6 तरीके का उपयोग किया जाता है तो मुझे कोई फर्क नहीं पड़ता।
अभी तक मेरे एकमात्र विचार वास्तव में मौजूद पैटर्न के बाद कोड के इस बिट के साथ ढांचे का विस्तार करना था। मैंने नीचे दिए गए सभी एलओसी को इंगित किया है: multiselect
या Handsontable.MultiselectDropdownCell
ने dropdown
विधि की प्रतिलिपि बनाई, जिसे नया नाम और सबकुछ काम करता है, हालांकि अभी भी यह नहीं देख सकता कि मैं जो खोज रहा हूं उसे ढूंढना शुरू कर सकता हूं।
Handsontable.MultiselectDropdownCell = {
editor: getEditorConstructor('multiselectdropdown'),
renderer: getRenderer('autocomplete')
};
Handsontable.cellTypes = {
text: Handsontable.TextCell,
date: Handsontable.DateCell,
numeric: Handsontable.NumericCell,
checkbox: Handsontable.CheckboxCell,
autocomplete: Handsontable.AutocompleteCell,
handsontable: Handsontable.HandsontableCell,
password: Handsontable.PasswordCell,
dropdown: Handsontable.DropdownCell,
multiselect: Handsontable.MultiselectDropdownCell
};
Handsontable.cellLookup = { validator: {
numeric: Handsontable.NumericValidator,
autocomplete: Handsontable.AutocompleteValidator
}};
मैं जगह ऐसा दिखता है जैसे में लटकती संपादक का एक संशोधित संस्करण पर है:
import {getEditor, registerEditor} from './../editors.js';
import {AutocompleteEditor} from './autocompleteEditor.js';
/**
* @private
* @editor MultiSelectDropdownEditor
* @class MultiSelectDropdownEditor
* @dependencies AutocompleteEditor
*/
class MultiSelectDropdownEditor extends AutocompleteEditor {
prepare(row, col, prop, td, originalValue, cellProperties) {
super.prepare(row, col, prop, td, originalValue, cellProperties);
this.cellProperties.filter = false;
this.cellProperties.strict = true;
}
}
export {MultiSelectDropdownEditor};
registerEditor('multiselectdropdown', MultiSelectDropdownEditor);
इस बिंदु पर मैं कोई सुराग नहीं है जहां क्लिक करें घटना है जब उपयोगकर्ता से किसी आइटम का चयन करता है हो रहा है है ड्राॅप डाउन लिस्ट। डिबगिंग मेरे लिए दर्दनाक रहा है क्योंकि यह ट्रेसेर के माध्यम से है। मॉड्यूल तैयार होने के बाद मैंने एक क्लिक इवेंट सेट करने का प्रयास किया और डीओएम भी है, हालांकि मुझे चुनिंदा ड्रॉपडाउन कोशिकाओं में से किसी एक पर क्लिक के आधार पर आग के लिए भी एक चेतावनी नहीं मिल सकती है। मेनू सामग्री के लिए ऐसा नहीं
$('body').on('click','#handsontable td', someAlert)
हालांकि,: 'सामान्य' कोशिकाओं मैं एक साधारण के साथ एक क्लिक प्राप्त कर सकते हैं। ड्रॉपडाउन मेनू का निरीक्षण करने के लिए राइट क्लिक करने का अर्थ है पहले संदर्भ मेनू को http://handsontable.com/ पर अक्षम करना। फिर आप देखेंगे कि किसी भी चीज का निरीक्षण करने के लिए राइट क्लिक करने से उस ईवेंट को आग लग जाएगी जो ड्रॉपडाउन मेनू को बंद कर देता है जिसे आप निरीक्षण करने का प्रयास कर रहे हैं।
मैंने पुस्तकालयों स्रोत कोड के माध्यम से सभी को ब्रेकपॉइंट्स डाल दिया है, मैं इसे एक नहीं समझ सकता।
एकमात्र चीज जो मैं करना चाहता हूं वह यह पता लगाने के लिए है कि मेनू आइटम को हाइलाइट करने वाले कोड का हिस्सा कहां है और इसे सक्रिय चयन में सेट करता है, इसे उस विधि में बदल दें जो एकाधिक चयन स्वीकार करता है (पूरे सरणी तक उपलब्ध विकल्प, एक सक्रिय आइटम पर क्लिक करने से यह अक्षम हो जाएगा बस कहें)।
फिर यह सुनिश्चित करना कि वे चयन वास्तव में हैंडोंटेबल 'डेटा स्कोप' में हैं।
यह बात करता है, मुझे सेल में भी प्रस्तुत करने की आवश्यकता नहीं है कि चीजें क्या चुनी गई हैं, हालांकि कोई मदद बहुत अच्छी होगी क्योंकि दुर्भाग्यवश, मुझे अभी भी स्पॉट नहीं मिला है जब ड्रॉपडाउन में विकल्प प्रदान किए जाते हैं या तो।
मैंने देखा 0Eऔर https://github.com/trebuchetty/Handsontable-select2-editor/issues/3 के रूप में हैंडसोटेबल के लिए चयन 2Editor का उपयोग करने का भी प्रयास किया है, हालांकि यह मेरे कारण को ज्यादा मदद नहीं करता है। यहाँ handsontable में लटकती सेल कैसा दिखता है:
http://docs.handsontable.com/0.15.1/demo-dropdown.html
अंत में, यहाँ एक बेला: http://jsfiddle.net/tjrygch6/
मैं अगर किसी ने मुझे यहाँ से बाहर मदद कर सकता है सुपर सराहना होगी। धन्यवाद और!
अद्यतन
मैं सेल में मूल्यों को पार्स और एक सरणी मूल्यों से युक्त में प्रकार बारी में कामयाब रहे हैं (ताकि टाइपिंग लाल, नीले ['red','blue']
युक्त एक सरणी हो जाएगा)। मैंने इस सरणी को आंतरिक सॉर्ट एल्गोरिदम के माध्यम से चलाया है जो विकल्पों को पार करता है और मेल खाने वाले आइटम की अनुक्रमणिका देता है। मुझे यह काम ठीक लगता है और अब मैं सरणी को हाइलाइट विधि में पास कर रहा हूं। यह विधि कोर लाइब्रेरी WalkOnTable के मानों को पास करती है। मैं नहीं देखता कि मैं पहले विकल्प को हाइलाइट करने के बजाय एक से अधिक मान चुनने के लिए तर्क को कहां बदल सकता हूं।
this.selectCell = function(row, col, endRow, endCol, scrollToCell, changeListener) {
var coords;
changeListener = typeof changeListener === 'undefined' || changeListener === true;
if (typeof row !== 'number' && !Array.isArray(row) || row < 0 || row >= instance.countRows()) {
return false;
}
if (typeof col !== 'number' || col < 0 || col >= instance.countCols()) {
return false;
}
if (typeof endRow !== 'undefined') {
if (typeof endRow !== 'number' || endRow < 0 || endRow >= instance.countRows()) {
return false;
}
if (typeof endCol !== 'number' || endCol < 0 || endCol >= instance.countCols()) {
return false;
}
}
// Normal number value, one item typed in
if (!Array.isArray(row) && typeof row === 'number'){
coords = new WalkontableCellCoords(row, col);
walkSelection(coords);
}
यही वह स्थान था जहाँ मैं लगता है कि मैं WalkontableCellCoords
जरूरत संशोधित करने की एक सरणी स्वीकार करते हैं और उसके बाद उजागर करने और जब लटकती खोला और बंद कर दिया है दोनों मान चुनने के लिए है। मुझे स्पर्श या ईवेंट पर क्लिक करके कई विकल्पों का चयन करने में सक्षम होना चाहिए।
else {
// Array found, apply to each value
new WalkontableCellCoords(row[0], col);
new WalkontableCellCoords(row[1], col);
}
function walkSelection(coords){
priv.selRange = new WalkontableCellRange(coords, coords, coords);
if (document.activeElement && document.activeElement !== document.documentElement && document.activeElement !== document.body) {
document.activeElement.blur();
}
if (changeListener) {
instance.listen();
}
if (typeof endRow === 'undefined') {
selection.setRangeEnd(priv.selRange.from, scrollToCell);
} else {
selection.setRangeEnd(new WalkontableCellCoords(endRow, endCol), scrollToCell);
}
instance.selection.finish();
}
return true;
};
अद्यतन 2
मैं डोम में पहचान करने के लिए और आंशिक रूप से दोनों का चयन मूल्यों आंतरिक तरीकों मिल गया है लेकिन यह अभी भी सही से दूर है।
यहाँ सांत्वना उत्पादन विधि WalkOnTableCellCords
के नाम से जाना जो क्या इस मामले में जहां सेल केवल 1 मूल्य (डिफ़ॉल्ट कार्यक्षमता) शामिल हैं में लटकती शृंखला को हाइलाइट हो रहा है द्वारा उत्पन्न होता है। यह आउटपुट काले नीले रंग को एक ड्रॉपडाउन सेल में टाइप करने से है जिसमें सूची में व्यक्तिगत विकल्प के रूप में नीले और काले दोनों होते हैं।
extended_hot_v15-01.js:5041 DropdownEditor {
"highlight": {
"row": 6,
"col": 0
},
"from":
{
"row": 4,
"col": 0
},
"to": {
"row": 6,
"col": 0
}
}
अद्यतन किसी को भी इस को हल करती है, तो मैं व्यक्तिगत रूप से भी आप व्यक्तिगत रूप से कर रहे हैं के लिए उड़ान भरने जाएगा, और अपने हाथ हिला। दो बार।
वाह मैं चाहता हूं कि मैं यह कर सकता था! –