javascript - D3.js ब्रश के समाशोधन को अक्षम करें



user-interface brush (1)

डी 3 ब्रश डिजाइन ब्रश द्वारा 'ब्रशमाव ()' एक बार उपयोगकर्ता ब्रश तत्व पर माउस को दबाता है (यानी 'म्यूज़ेडवन.ब्रश' ईवेंट पर)। अगर प्रभावी ढंग से पिछले ब्रश की सीमा को रीसेट करने की ओर अग्रसर होता है

एक कस्टम समाधान के साथ मूल मूसुडाउन। ब्रश हैंडलर को बदलने के लिए एक संभावित समाधान है। कस्टम हेन्डलर केवल प्रारंभिक मूसुडाउन के बाद माउस को स्थानांतरित करने के बाद मूल हैंडलर्स को कॉल करेगा।

var brushNode = chart.append("g")
    .call(brush);

brushNode
    .selectAll("rect")
    .attr("y", -10)
    .attr("height", 10);

// store the reference to the original handler
var oldMousedown = brushNode.on('mousedown.brush');

// and replace it with our custom handler
brushNode.on('mousedown.brush', function () {
    brushNode.on('mouseup.brush', function () {
        clearHandlers();
    });

    brushNode.on('mousemove.brush', function () {
        clearHandlers();
        oldMousedown.call(this);
        brushNode.on('mousemove.brush').call(this);
    });

    function clearHandlers() {
        brushNode.on('mousemove.brush', null);
        brushNode.on('mouseup.brush', null);
    }
})

डेमो देखें

मैं एक D3.js ब्रश का उपयोग करना चाहूंगा ताकि उपयोगकर्ता अक्ष पर एक रेंज का चयन कर सकें। डिफ़ॉल्ट रूप से, ब्रश के बाहर क्लिक करने से यह साफ हो जाता है, ताकि कोई सीमा चयनित नहीं हो।

हालांकि, मैं इस व्यवहार को समायोजित करना चाहूंगा ताकि ब्रश के बाहर क्लिक ब्रश की सीमा को बदल नहीं सके। असल में, ब्रश को साफ करने का कोई रास्ता नहीं होना चाहिए, कुछ रेंज को हमेशा चुना जाना चाहिए।

मेरा मानना ​​है कि brush इवेंट में मुझे हुक करना होगा ताकि किसी तरह क्लियरिंग को अक्षम किया जा सके, लेकिन मैं वास्तव में यह नहीं जानता कि उसके बारे में कैसे जाना है

यहां इंटरफ़ेस के बारे में मैं उदाहरण के बारे में बात कर रहा हूं ( बाल्ड )। जब आप काली पट्टी के बायीं या दाएं क्लिक करते हैं, तो ब्रश साफ़ हो जाता है और बार गायब हो जाता है।

मैं इस व्यवहार को कैसे अक्षम कर सकता हूं?





brush