Guten Tag erstmal!
Ich schreibe zur Zeit ein Programm welches mir ein Diagramm via Weboberfläche zusammenklickbar sein soll. Damit das richtig verstanden wird, der User soll sich nur die Struktur zusammenklicken können, die Daten sind dafür da.
Ich stehe vor dem Problem das ich die Kästchen nicht ausgelesen bekomme, und somit nicht erfahre wo der User welchen Graph hingezogen hat.
[Blockierte Grafik: http://mbrauner.de/diagrammerstellungserklaerung.jpg]
Zur Erklärung des Bildes:
Wenn Punkt 3 geklickt wird, blendet er sich aus, und 4 blendet ein, sowie 8.
Wenn Punkt 4 geklickt wird, blendet er sich und 8 aus, und 5 blendet ein.
Mithilfe von JQuery habe ich die 6+7 Sortable gemacht, bei 6 ist die besonderheit, das dieser nicht direkt bewegt werden kann.
Die 8 Ist Draggable und wird immer nach unten zurückgeworfen, falls es nicht in einer 7 abgelegt wird.
Ich hoffe ihr habt Ideen wie ich dies lösen könnte.
Hier dann noch der Quelltext.
Alles anzeigen
Benötigt werden: Jquery + JQuery UI (bei beiden muss der Pfad angepasst werden)
Ich danke schonmal!!
Ich schreibe zur Zeit ein Programm welches mir ein Diagramm via Weboberfläche zusammenklickbar sein soll. Damit das richtig verstanden wird, der User soll sich nur die Struktur zusammenklicken können, die Daten sind dafür da.
Ich stehe vor dem Problem das ich die Kästchen nicht ausgelesen bekomme, und somit nicht erfahre wo der User welchen Graph hingezogen hat.
[Blockierte Grafik: http://mbrauner.de/diagrammerstellungserklaerung.jpg]
Zur Erklärung des Bildes:
- Wenn hier geklickt wird, wird eine Y-Achse eingefügt (7)
- Wenn dies checked ist, werden Säulen gestapelt.
- Beim klicken hierdrauf, werden die eingefügten Y-Achsen "festgesetzt" und die graphen (8) können bewegt werden
- Wenn die Graphen durch klicken (hier auf die 4) gesetzt werden, kann gespeichert werden durch Klicken auf die 5
- Hiermit kann gespeichert werden. Es sollen sämtliche Positionen ausgelesen werden und in ein Textfeld geparst werden, welches dann submitted wird.
- Dies ist die Diagrammfläche inklusive der X-Achse.
- Dies sind einzelne Y-Achsen
- Dies sind einzelne Graphen
- In diesem Feld darf gearbeitet werden.
Wenn Punkt 3 geklickt wird, blendet er sich aus, und 4 blendet ein, sowie 8.
Wenn Punkt 4 geklickt wird, blendet er sich und 8 aus, und 5 blendet ein.
Mithilfe von JQuery habe ich die 6+7 Sortable gemacht, bei 6 ist die besonderheit, das dieser nicht direkt bewegt werden kann.
Die 8 Ist Draggable und wird immer nach unten zurückgeworfen, falls es nicht in einer 7 abgelegt wird.
Ich hoffe ihr habt Ideen wie ich dies lösen könnte.
Hier dann noch der Quelltext.
Quellcode
- <html>
- <head>
- <title>Test Seite</title>
- <link rel="stylesheet" href="/jqueryui/css/custom-theme/jquery-ui-1.8.13.custom.css">
- <style type="text/css">
- .yAchse {
- border: 1px solid black;
- height: 150px;
- width: 100px;
- display: inline-block;
- }
- .graph {
- border: 1px solid black;
- height: 50px;
- width: 50px;
- float: left;
- }
- </style>
- <script src="test.jquery.js"></script>
- <script src="/jqueryui/js/jquery-ui-1.8.13.custom.min.js"></script>
- <script type="text/javascript">
- var counter=0;
- /*
- * Diese Funktion fuegt einen DIV-Container hinzu, welcher eine Y-Achse repraesentiert
- */
- function addYachse(){
- var yAchseHtmlCode="<div class=\"yAchse\" id=\"yachse"+counter+"\">Y-Achse "+counter+"</div>";
- var htmlCodeYet=document.getElementById("main").innerHTML;
- document.getElementById("main").innerHTML=htmlCodeYet+yAchseHtmlCode;
- $( ".yAchse" ).sortable({ scroll: false, axis: "x", appendTo: "#main" }).disableSelection();
- counter++;
- }
- /*
- * Hier wird der Link fuer die addYachse-Funktion ausgeblendet
- * und
- * das sortable deaktiviert
- * zusaetzlich wird die enableDragAndDrop - Funktion aufgerufen
- */
- function disableAdgraphYachse(){
- $( "#yAchsenGesetzt" ).hide();
- $( "#addYachse" ).hide();
- $( "#graphenGesetzt" ).show();
- $( "#main" ).sortable({disabled: true});
- $( ".yAchse" ).sortable({disabled: true});
- var yAchsen=this.getElementsByClass("yAchse",document.getElementById("main"),"div");
- for(var i=0;i<yAchsen.length;i++){
- yAchsen[i].style.border="1px solid #a6a6a6";
- yAchsen[i].style.color="#a6a6a6";
- }
- enableDragAndDrop();
- }
- /*
- * Hier werden die Felder der einzelnen verfuegbaren Graphen draggable
- * gemacht und zusaetlich der Link fuer das grapherGesetzt angezeigt
- */
- function enableDragAndDrop(){
- $( ".graph" ).draggable({revert: "invalid", cursorAt: {cursor: "move", top: 0, left: 0}}).disableSelection();
- $( ".yAchse" ).droppable({ accept: ".graph" });
- $( "#graphKasten" ).show();
- }
- /**
- * Hier wird das DragAndDrop deaktiviert und die Speicher Funktion aufgerufen
- */
- function disableDragAndDrop(){
- $( "#graphenGesetzt" ).hide();
- $( "#save" ).show();
- $( ".graph" ).draggable({disabled: true});
- }
- function speichern(){
- var graphen=this.getElementsByClass("graph",document.getElementById("graphKasten"),"div");
- var yAchsen=this.getElementsByClass("yAchse",document.getElementById("main"),"div");
- alert("graphen.length: "+graphen.length+"\n"+"yAchsen.length: "+yAchsen.length);
- for(var k=0;k<yAchsen.length;k++){
- alert(yAchsen[k].id+"left: "+yAchsen[k].style.left);
- for(var i=0;i<graphen.length;i++){
- alert(graphen[i].id+"left: "+ graphen[i].style.left);
- }
- }
- }
- /*
- * Diese Funktion ist analog zur JavaScript-Funktion getElementById
- * sucht, aber anhand von des css-Klassennamens nach den Elementen
- * @param searchClass - ist zwingend erforderlich, grenzt die Auswahl auf eine css-Klasse ein
- * @param domNode - grenzt die Auswahl auf einem bestimmten Knoten ein, bei null wird 'document' genommen
- * @param tagName - grenzt die Auswahl auf TagNames ein, bei null wird '*' genommen
- */
- function getElementsByClass( searchClass, domNode, tagName) {
- if (domNode == null) domNode = document;
- if (tagName == null) tagName = '*';
- var el = new Array();
- var tags = domNode.getElementsByTagName(tagName);
- var tcl = " "+searchClass+" ";
- for(i=0,j=0; i<tags.length; i++) {
- var test = " " + tags[i].className + " ";
- if (test.indexOf(tcl) != -1)
- el[j++] = tags[i];
- }
- return el;
- }
- </script>
- </head>
- <body>
- <a id="addYachse" onclick="javascript:addYachse();">
- <font style="color:blue;text-decoration:underline;">Y-Achse hinzufügen</font> -
- </a>
- <input type="checkbox" name="saeulenStapeln" id="saeulenStapeln">
- Säulen stapeln -
- <a id="yAchsenGesetzt" onclick="javascript:disableAdgraphYachse()" style="color:blue;text-decoration:underline;">
- Y-Achsen gesetzt
- </a>
- <a id="graphenGesetzt" onclick="javascript:disableDragAndDrop()" style="\"color:blue;text-decoration:underline;">
- Graphen gesetzt
- </a>
- <a id="save" onclick="javascript:speichern()" style="display: ;color:blue;text-decoration:underline;">
- Speichern
- </a>
- <br>
- <div id="main" style="border:1px solid red; height:350px;">
- <div id="diagramm" style="border:1px solid blue; height:150px; display:inline-block; background-color: #e0e0e0; color: #505050; margin: 5px; padgraph: 5px;">
- Diagrammfläche
- </div>
- </div>
- <div id="graphKasten" style="border: 0px solid black;">
- <div id="graph1" class="graph">
- graph 1
- </div>
- <div id="graph2" class="graph">
- graph 2
- </div>
- <div id="graph3" class="graph">
- graph 3
- </div>
- <div id="graph4" class="graph">
- graph 4
- </div>
- </div>
- <script type="text/javascript">
- $(function() {
- $( "#main" ).sortable({cancel: "#diagramm"}).disableSelection();
- });
- </script>
- </body>
- </html>
Benötigt werden: Jquery + JQuery UI (bei beiden muss der Pfad angepasst werden)
Ich danke schonmal!!
Rechtschreibfehler sind ein Gimmick meiner TAstatur