PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Quader einteilen


ethrandil
2003-07-22, 03:13:30
Hallo,
ich bin gerade dabei einen 'online-vertretungsplan' zu programmieren.
In diesen Vertretungsplan kann man Einträge einfügen.

Er hat folgenden aufbau:

klasse -> 5a 5b 5c
Stunden
1.
2.
3.

nun kann man beim erstellen einer 'Vertretung' eingeben von, bis, wobei dabei tage + stunde eingegeben wird. man kann also auch für mehrere tage etwas eintragen.
Nun kann aber zusätzlich noch zB 'für alle 5. klassen' etwas für sagen wir 5 tage eingegeben werden.
zusätzlich kann man allerdings auch noch andere dinge Eintragen!! zB. mitten drin für die 5b: Lehrer krank

Nun wird intern jede 'position' einer Vertretungsstunde durch einen 'block' angezeigt. ein gebilde mit x, y, höhe, breite.

Wenn diese sich aber überlagern, dann weiß ich nicht, wie ich das darstellen soll!! (in HTML!)

wenn sich 2 blöcke überlagern...

zB der "5 tage projektwoche", und "2. tag 3. stunde lehrer krank"

Daher dachte ich, ich könnte das ganze splitten in einem solchen fall.
aber: ich finde keinen vernünftigen algorithmus, um das große rechteck (um das kleine) zu splitten
und: Ich weiß nicht, wie das ganze aussehen soll!!

bitte helft mir.

EDIT: es gibt einen weiteren thread, der sich auf das visualisierungsproblem beschränkt, und die technischen feinheiten rauslässt: http://www.forum-3dcenter.org/vbulletin/showthread.php?s=&threadid=83725
war nicht als doppelposting gedacht, dachte nur ich specks mal für die designer ab. vielleicht isses verständlicher.

micki
2003-07-22, 08:35:14
vielleicht kannst du pro zelle mit nem proggy ein bild generieren wo alles nötige drinne ist, so als png, dann wäre das problem leicht vom tisch.

oder du baust menüpunkte für jeden eintrag ein (können ja dumme gifs sein von einem roten punkt oder sowat), das kannst du in einer tabell sicher einfach realisieren.

MfG
micki

Achill
2003-07-22, 10:31:46
Vorschlag:

Wie du schon angefangen hast, würde ich die Tage einzeln Verwalten und auch darstellen - sprich eine Woche sind 5 tabellen (für jeden Tage eine) auf einer seite.



Klasse: 5a 5b 5c 5d ...
Stunde:
1.
2.
3.
4.
.
.
.



Nun würde ich die Eingaben so ordnen, das die mit dem größen zeitlichen Umfang (z.B. ein Projektwoche) die höchste Priorität haben.

Nun färbst du für jeden Tag, für jede Klasse und jede Stunde die Zelle mit der Farbe, welche der jeweiligen Eingabe mit der höchsten Priorität entspricht - sollte ja nur eine begrenze Anzahl geben (Schulzeit, Ferien, Projekttage/wochen, ect.).

Kommt nun noch eine weiter Eingabe hinzu, so würde ich in der entspechenden Zelle(n) eine neue Tabelle erzeugen (eine spalte, eine oder mehrer Zeilen ) und deren Zelle(n) mit der(n) neuen Farbe(n).

Wenn jede Zelle cellspacing > 0 besitzt, so entsteht um jede Tabelle ein Rand mit der algemeineren Farbe.

So wäre z.b. die Grundfarbe für eine Klasse eine Woche lang blau, weil sie projektwoche hat, aber am Do. wäre noch ein kleineres andersfarbens Kästchen im blauen Kästchen, weil sie vertrehtung hat.

Achill
2003-07-22, 10:46:55
ich meine so ungefahr...

ist mit cellspacing="2" cellpadding="5" bei jeder Tabelle gemacht...

ethrandil
2003-07-22, 13:49:24
sehs schön, danke. die idee mit der 'tabelle in der tabelle' finde ich gut. Aber wie löst man damit folgendes Problem:

micki
2003-07-22, 14:13:14
müßte ne html tabelle sich nicht automatisch an den inhalt anpassen?

MfG
micki

ethrandil
2003-07-22, 15:11:29
klar, aber es gibt keine 'überlappenden' zellen.

ethrandil
2003-07-22, 15:20:21
ich abstrahiere das problem mal:
Suche möglichkeit (algorithmus), um eine Beliebige Anzahl von Quadern, mit einer eindeutig geregelten priorität, in einer belibigen anordnung, in HTML darzustellen...

Xmas
2003-07-22, 19:36:45
Original geschrieben von ethrandil
ich abstrahiere das problem mal:
Suche möglichkeit (algorithmus), um eine Beliebige Anzahl von Quadern, mit einer eindeutig geregelten priorität, in einer belibigen anordnung, in HTML darzustellen...
Ich finde diese Darstellung ehrlich gesagt denkbar schlecht.
Soll da eigentlich noch Text hin, und wenn ja, wohin? Und wie groß wird der Plan eigentlich dargestellt.

Ich fände es besser wenn du statt der Rechtecke in die Zellen vertikale farbige Balken machen würdest, so dass eine bestimmte Farbe innerhalb einer Spalte immer an der gleichen Position ist. Dann wird auch nichts verdeckt.

Ist eigentlich der Fall: Montag 3. Stunde bis Dienstag 6. Stunde vorgesehen? Da müsstest du zwei Rechtecke (nicht Quader, die sind 3D) nehmen.


Achill, ein Glück dass du nicht noch "Verdrehtung" geschrieben hast ;)

Achill
2003-07-24, 19:18:58
meine rechtschreibung ist doch ganz gut ODER ? ... ;)

ethrandil, denke das einfachste wäre dann wirklich ein Bild zu erzeugen (wie schon geschrieben wurde), welches die html Seite anzeigt...

ich bezweifle, dass du es "leicht" hinbekommst - jedenfals wenn du es so allgemein haben willst.

Würdest du ein Bild erzeugen, so wäre der einfachste Algorithmus, die Qudrate nach den zeitlichen Ausdehnungen zu ordnen (für jede Klasse) und dann vom längsten beginnend alle zu zeichnen, nimmst du für jedes 'tiefere' an allen Kanten ein stück weg, solltest du auch noch die darunter liegenden sehen können - erzeugt aber durch das evtl. mehrfachschreiben an einem Pixel einen gewissen overheat...

ethrandil
2003-07-24, 19:27:28
ja ... aber ich denke ich beschneide einfach meine Absichten.

Die länger dauernden dinge kann man dann nur für eine klasse eintragen (bzw man gibt mehrere ein und es wird einzaln dargestellt), das sieht dann aus wie der erste vorschlag.

Zusätzlich kann man aber Mitteilungen machen, die absolut gelten, d.h. an deren termin nix anderes mehr gelten darf. Diese werden dann spaltenübergreifend dargestellt.

ethrandil
2003-07-24, 19:34:53
doch nicht, ich machs noch einfacher!! Wenns innerhalb einer klasse überschneidungen gibt, dann bekommt sie ne neue spalte, ha!

ethrandil
2003-07-24, 19:48:56
so:

wenn jemand nen besseren vorschlag hat, her damit.