2017-05-19 9 views
9

पर स्क्रॉलबार जोड़ें मैं अपनी कंपनी के लिए संगठन चार्ट बनाने के लिए GetOrgChart का उपयोग कर रहा हूं, लेकिन मैं थोड़ी सी समस्या में भाग गया।svg कंटेनर

यदि SVG कंटेनर से बड़ा है तो हम एक स्क्रॉलबार जोड़ना चाहते हैं ताकि आप इसे स्क्रॉल करने के लिए उपयोग कर सकें क्योंकि यह आपके माउस के साथ इसे खींचने से बहुत तेज़ होगा।

मैंने इस example को आजमाया है लेकिन यह काम करने में असमर्थ था।

क्या मैं जो खोज रहा हूं उसे हासिल करने का कोई तरीका है?

नीचे दिया गया उदाहरण हमारे वास्तविक चार्ट से छोटा रास्ता है, लेकिन यह समस्या का प्रतिनिधित्व करने के लिए पर्याप्त होना चाहिए।

var peopleElement = document.getElementById("people"); 
 
var orgChart = new getOrgChart(peopleElement, { 
 
    primaryFields: ["name", "title", "phone", "mail"], 
 
    photoFields: ["image"], 
 
    scale: 0.4, 
 
    dataSource: [{ 
 
     id: 1, 
 
     parentId: null, 
 
     name: "Amber McKenzie", 
 
     title: "CEO", 
 
     phone: "678-772-470", 
 
     mail: "[email protected]", 
 
     adress: "Atlanta, GA 30303", 
 
     image: "images/f-11.jpg" 
 
    }, 
 
    { 
 
     id: 2, 
 
     parentId: 1, 
 
     name: "Ava Field", 
 
     title: "Paper goods machine setter", 
 
     phone: "937-912-4971", 
 
     mail: "[email protected]", 
 
     image: "images/f-10.jpg" 
 
    }, 
 
    { 
 
     id: 3, 
 
     parentId: 1, 
 
     name: "Evie Johnson", 
 
     title: "Employer relations representative", 
 
     phone: "314-722-6164", 
 
     mail: "[email protected]", 
 
     image: "images/f-9.jpg" 
 
    }, 
 
    { 
 
     id: 4, 
 
     parentId: 1, 
 
     name: "Paul Shetler", 
 
     title: "Teaching assistant", 
 
     phone: "330-263-6439", 
 
     mail: "[email protected]", 
 
     image: "images/f-5.jpg" 
 
    }, 
 
    { 
 
     id: 11, 
 
     parentId: 1, 
 
     name: "Paul Shetler", 
 
     title: "Teaching assistant", 
 
     phone: "330-263-6439", 
 
     mail: "[email protected]", 
 
     image: "images/f-5.jpg" 
 
    }, 
 
    { 
 
     id: 12, 
 
     parentId: 1, 
 
     name: "Paul Shetler", 
 
     title: "Teaching assistant", 
 
     phone: "330-263-6439", 
 
     mail: "[email protected]", 
 
     image: "images/f-5.jpg" 
 
    }, 
 
    { 
 
     id: 5, 
 
     parentId: 2, 
 
     name: "Rebecca Francis", 
 
     title: "Welding machine setter", 
 
     phone: "408-460-0589", 
 
     image: "images/f-4.jpg" 
 
    }, 
 
    { 
 
     id: 6, 
 
     parentId: 2, 
 
     name: "Rebecca Randall", 
 
     title: "Optometrist", 
 
     phone: "801-920-9842", 
 
     mail: "[email protected]", 
 
     image: "images/f-8.jpg" 
 
    }, 
 
    { 
 
     id: 7, 
 
     parentId: 2, 
 
     name: "Spencer May", 
 
     title: "System operator", 
 
     phone: "Conservation scientist", 
 
     mail: "[email protected]", 
 
     image: "images/f-7.jpg" 
 
    }, 
 
    { 
 
     id: 8, 
 
     parentId: 6, 
 
     name: "Max Ford", 
 
     title: "Budget manager", 
 
     phone: "989-474-8325", 
 
     mail: "[email protected]", 
 
     image: "images/f-6.jpg" 
 
    }, 
 
    { 
 
     id: 9, 
 
     parentId: 7, 
 
     name: "Riley Bray", 
 
     title: "Structural metal fabricator", 
 
     phone: "479-359-2159", 
 
     image: "images/f-3.jpg" 
 
    }, 
 
    { 
 
     id: 10, 
 
     parentId: 7, 
 
     name: "Callum Whitehouse", 
 
     title: "Radar controller", 
 
     phone: "847-474-8775", 
 
     image: "images/f-2.jpg" 
 
    } 
 
    ] 
 
}); 
 

 
$('.get-left,.get-down,.get-up,.get-right').remove(); 
 

 
$(document).ready(function() { 
 
    $(".get-oc-c").css("overflow","scroll"); 
 
})
#people { 
 
    width: 90%; 
 
    height: 90%; 
 
    border:1px solid #000; 
 
}
<link href="http://www.getorgchart.com/GetOrgChart/getorgchart/getorgchart.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://www.getorgchart.com/GetOrgChart/getorgchart/getorgchart.js"></script> 
 
<div id="people"></div>

उत्तर

6

आप this jsfiddle पर एक नज़र ले जा सकते हैं। .get-oc-c कंटेनर स्क्रॉल पट्टी यदि आवश्यक हो तो पता चलता है:

function wrapChart() { 
    ... 
    $("svg").wrap("<div id='svgContainer'></div>"); 
    ... 
} 

#svgContainer { 
    overflow: visible; 
} 

wrapChart विधि में कहा जाता है:

.get-oc-c { 
    overflow: auto !important; 
} 

और एसवीजी चार्ट तत्व एक div कि पूरा चार्ट समायोजित करने के लिए आकार दिया जाता है में लपेटा जाता है updatedEvent

var orgChart = new getOrgChart(peopleElement, { 
    enableMove: false, 
    ... 
}); 

मूल प्रदर्शन काम करने के लिए, लेकिन आवरण तत्व के लिए सही आकार मान रही मुश्किल है लगता है (jsfiddle में इस्तेमाल अभिव्यक्ति: चार्ट चाल विकल्प पक्षों पर तीर को दूर करने और पैनिंग को रोकने के लिए अक्षम किया गया है बहुत अनुभवी है), और खिड़की का आकार बदलते समय यह और भी जटिल हो जाता है, जब लिंक का विस्तार/ढह जाता है और जब चार्ट ज़ूम किया जाता है। कुछ आकार बदलने वाले एनिमेशन का उपयोग करते हैं, इसलिए अंतिम मान प्राप्त करने से पहले देरी के लिए गणना करना होगा।

जेएसफ़िल्ड नोड्स को विस्तार/ढहने के बाद स्क्रॉल स्थिति को पुनर्स्थापित करने के लिए कुछ सरल कोड दिखाता है लेकिन इसे सुधारने की आवश्यकता होगी। मैंने विंडो आकार बदलने और ज़ूम करने के लिए खाते में कोड नहीं लिखा है।

स्क्रॉल बार सही तरीके से व्यवहार करने के लिए आवश्यक काम की मात्रा को देखते हुए, संभवतः घटक द्वारा आपूर्ति की गई पैनिंग और चलती सुविधाओं का उपयोग करना बेहतर होता है। आप घटक के रचनाकारों से भी संपर्क कर सकते हैं और स्क्रॉल बार विकल्प जोड़ने के लिए कह सकते हैं।

2

महत्वपूर्ण सीएसएस यहाँ लापता नियम हैं:

max-height और overflow-y

overflow-y ऊंचाई तक ऑटो और अधिकतम ऊंचाई सेट किया जाना चाहिए एसवीजी कभी नहीं पार (जो ऊंचाई हम स्क्रॉलबार ट्रिगर किया जाएगा है चाहिए)

एक 'स्थैतिक' दृष्टिकोण अलग-अलग स्क्रीन के लिए अनुमानित आकार निर्धारित करने के लिए मीडिया प्रश्नों का उपयोग करना होगा जो समान रूप से उन आकारों पर स्क्रॉलबार को ट्रिगर करेगा। बेशक यह अच्छा काम नहीं कर सकता है अगर क्लाइंट उस आकार पर है जिसे आपने नहीं सोचा था।

हालांकि व्यक्तिगत रूप से स्क्रॉल बार को प्रदर्शित करने के लिए प्रतिक्रिया/ऑटो-आकार बदलने के लिए स्क्रॉल प्लगइन का उपयोग करने की सलाह दी जाएगी, हालांकि आवश्यकता होने पर स्क्रॉल बार प्रदर्शित करने के लिए।सीएसएस पारंपरिक रूप से स्थिर एचटीएमएल सामग्री का समर्थन करने के लिए बनाया गया था लेकिन इन दिनों, हमारे पास बहुत गतिशील सामग्री है (सख्ती से सर्वर की ओर से नहीं) और यह सभी मुद्दों को पकड़ने और ठीक करने के लिए हमेशा सिरदर्द है। जैसे स्क्रॉलबार की उपस्थिति आपके डोम को बदलने की चौड़ाई का कारण बन सकती है लेकिन सीएसएस के माध्यम से इसके लिए देखने का कोई तरीका नहीं है। इसके अलावा कुछ ब्राउज़रों में पारंपरिक स्क्रॉल बार अनावश्यक रूप से वसा है।

कुछ उदाहरण प्लगइन्स में शामिल हैं: