aktualisieren von seiteninformationen - inline vs. auswahl von bearbeiten
<p>ich entwerfe eine app von grund auf neu und habe ein kleines dilemma in der ux hinter dem aktualisieren von seiteninformationen/bearbeiten von seiteninformationen.</p><p>die informationen können von profileinstellungen über benutzerseiten bis hin zu programmseiten reichen. am ende möchte ich ein paradigma definieren, das auf allen seiten einheitlich verwendet werden kann.</p><p><strong>auswahl :</strong></p><p><strong>1. separate ansichts- und bearbeitungsseite</strong> ich möchte auf keinen fall eine separate ansichts- und aktualisierungsseite erstellen, auf der ein benutzer die aktualisierung auswählt und dann zu einer "aktualisierungsseite" weitergeleitet wird, auf der die änderungen vorgenommen, die treffer gespeichert und wird dann zur ansichtsseite zurückgeführt.</p><p><strong>2. inline-bearbeitung</strong> wenn sie auf das feld klicken oder doppelklicken, das sie ändern möchten, ändern sie die informationen und drücken sie zum speichern die eingabetaste.</p><p><strong>. hybridseite anzeigen/aktualisieren</strong> wenn sie 1 seite verwenden, klicken sie auf bearbeiten. diese seite wechselt in den bearbeitungsmodus, nehmen sie ihre änderungen vor und klicken sie auf speichern.</p><p>ich neige zur dritten option, da die benutzeroberfläche für den benutzer leicht zu verstehen ist. wählen sie bearbeiten, nehmen sie ihre änderungen vor und speichern sie ihre änderungen.</p><p>ich frage mich, ob jemand einen besseren weg kennt, um seiteninformationen zu bearbeiten. oder ob das, was ich denke, ein gutes paradigma ist.</p>
<ul> <li> <p><strong>wählen sie option 1, wenn</strong> die site enthält 'einfache' daten. zum beispiel einfacher text, ein kommentar oder etwas öffentliches</p> </li> <li> <p><strong>wählen sie option 3, wenn</strong> sie möchten nicht, dass der benutzer seitenelemente versehentlich ändert. zum beispiel würde ich in einem buchhaltungsprogramm definitiv option 3 verwenden, aber in einer einfachen notizblock-app (insbesondere auf mobilgeräten) würde ich definitiv option 1 wählen.</p> </li> </ul>
<p>dies kann eine paginierung sein oder auch nicht, aber hier ist, wie ich paginierung in meiner web-app mache:</p><pre><code>|&lt; first, &lt;&lt; previous, page [5] of 12, next &gt;&gt;, last &gt;| </code></pre><p>die äußeren vier optionen sind links, während die <code>page [5] of 12</code> ist ein formular mit dem [5] als eingabefeld. für benutzer mit aktiviertem javascript verstecke ich die schaltfläche "senden" und sende das formular beim ereignis "unfokus" oder drücke den tastendruck. der benutzer hat die option, wie viele zeilen er anzeigen möchte, die er aus einem dropdown-menü auswählen kann: 10, 20, 50, 100, alle. zusätzlich zur paginierung biete ich auch das sortieren und filtern der ergebnisse an, obwohl dies möglicherweise nicht in jeder situation sinnvoll ist.</p><p><strong>bearbeiten</strong>:</p><p>hier ist ein ausschnitt aus einem modell unserer web-app, um ihnen eine bessere vorstellung zu geben. in dieser version wurden die wörter in den schaltflächen weggelassen, werden jedoch nach einer leichten verzögerung als tooltip beim hover angezeigt. möglicherweise stellen sie jedoch fest, dass das beibehalten der wörter zu einer höheren benutzerfreundlichkeit führt.</p><p><img src="https://i.stack.imgur.com/vzbu0.png" alt="virtuosi media&#39;s pagination example"></p><p>ein paar andere dinge, auf die sie hinweisen sollten:</p><ul> <li>die schaltflächen "erste" und "vorherige" wurden deaktiviert, da es sich um die erste seite handelt.</li> <li>das blau zeigt aktive schaltflächen an (ich muss dieses spezielle thema durch eine farbprüfung ausführen, um sicherzustellen, dass farbenblinde benutzer einen unterschied feststellen können).</li> <li>die tasten bleiben immer erhalten, auch wenn sie deaktiviert sind. dies gibt der schnittstelle konsistenz.</li> <li>aufgrund der skalierung habe ich ein eingabefeld anstelle eines dropdown-auswahlfelds ausgewählt. wenn sie 3000 seiten haben, möchten sie nicht nach unten scrollen, um eine seite zu finden</li> <li>die paginierung ist in einer singulären visuellen komponente gruppiert, um ähnlichkeit im zweck anzuzeigen.</li> </ul> <p>wenn dies meine entwurfsentscheidung wäre, würde ich wahrscheinlich eher eine option c (modifizierte option a) wählen.</p><h3>erstens, warum nicht 'option b':</h3><p>zum einen gefällt mir die klarheit, dass jedes produkt seinen eigenen tisch hat. wenn es sich nur um eine große tabelle mit einem feld zur bestimmung des typs handelt, ist die beziehung nicht so klar.</p><p>zum anderen würde die indizierungsstrategie immer erfordern, dass dieses typfeld aufgelistet wird. da es sich nur um 4 typen handelt, ist die indexkardinalität extrem niedrig (<code>select * from product\_table where type='x'</code> führt im grunde sowieso einen vollständigen tabellenscan durch)</p><h3>option c.</h3><ul> <li>erstellen sie eine übergeordnete tabelle, die nur die spalten enthält, die alle typen gemeinsam nutzen</li> <li>erstellen sie jeden produkttyp als eigene tabelle mit ihren einzelnen spalten, mit einem zusätzlichen: ein link zur übergeordneten tabelle</li> <li>erstellen sie jede 'link'-tabelle: product\_option, model\_option usw. mit links zu den jeweiligen schlüsseln.</li> <li>für diejenigen mit wechselseitigen links (model\_option, option\_model) erstellen sie auch diese tabellen. dies erhöht die klarheit ihrer joins für alle, die sich das ansehen.</li> </ul><p>der nachteil ist die komplexität, sicherzustellen, dass waisen vermieden werden, wenn dinge aktualisiert/gelöscht werden, und zunächst die abfragen zu entwerfen, die diese tabellen verwenden.</p> Es ist ja wohl nicht damit getan, die falschen Angaben zu entfernen, die sollen doch bestimmt berichtigt / erneuert werden. Dann lass das mal besser die Firma machen, die das erneuert. Oder hast Du "Auftrag" vom Chef? so wie gewünscht, geht das ganz einfach = wenn die seitenummer auf seite 3 beginnen soll, dann so= auf die seite 2 mit dem curser gehn- dann -einfügen-manueller umbruch-seitenumbruch-vorlage - erste seite - seitennummer ändern-1 setzen - bestätigen- fertig, nun kann man deckblatt usw. bearbeiten. so nun ist die seite drei die erste seite= einfügen - fußzeile -standard- ok. einfügen-feldbefehl-seitennummer - ok. fertig. das geht natürlich so auch nach dem selbensystem mit der kopfzeile. mfg.m. <p>ein standard-fortschrittsbalken und eine anzahl von karten wären wahrscheinlich ausreichend. ich bin jedoch der meinung, dass dies etwas ist, bei dem sie ein bisschen kreativ sein könnten: der effekt eines streudiagramms könnte nizza sein, sie könnten auch die neuesten pixel am hellsten machen und die älteren verblassen lassen.</p><p>wenn sie das generierte pixelplot in bezug auf die leistung speichern, sodass es nicht jedes mal berechnet werden muss, wenn es angezeigt wird, sollte dies wirklich kein problem sein. ich denke, ich würde nicht das canvas-tag verwenden, sondern ein vom server generiertes image. die aktualisierungsaktion selbst sollte nicht zu kompliziert sein: sie müssen nur das bild abrufen, das sie bereits haben, und das letzte update (oder aktualisierungen seit dem letzten rendern des bildes) abrufen und genau diese pixel ändern. wenn sie sie nach zeit verblassen möchten, verblassen sie zuerst das bereits vorhandene bild und fügen sie dann den neuesten zeitstempel der überblendungsaktion hinzu, sodass sie dies nur einmal am tag oder einmal pro stunde oder was auch immer tun. (sie können es auch bei jedem schritt tun.)</p><p>jetzt ist es weitaus komplexer als nötig, um nur fortschrittsinformationen bereitzustellen. aber es könnte eine sehr nette funktion sein und interessant zu bauen sein! und ich denke, es ist sehr machbar, es so zu implementieren, dass es ihre ressourcen nicht belastet.</p> <p>erwägen sie die verwendung eines <strong> mehrfachauswahl-designs mit token </strong>. die filter-as-you-type-funktion ist nett, aber nicht unbedingt erforderlich. diese funktionieren gut, wenn im allgemeinen anwendungsfall entweder einer oder nur wenige ausgewählt werden. die benutzerfreundlichkeit nimmt jedoch schnell ab, wenn sie viele auswählen müssen, da der benutzer das menü für jedes element erneut aufrufen muss.</p><p><img src="https://i.stack.imgur.com/fth7o.png" alt="multi-select with tokens, via harvesthq.github.com/chosen"></p><ul> <li> <a href="http://harvesthq.github.com/chosen/">http://harvesthq.github.com/chosen/</a> </li> <li> <a href="http://designingwebinterfaces.com/the-multi-select-solution">http://designingwebinterfaces.com/the-multi-select-solution</a> </li> <li> <a href="http://loopj.com/jquery-tokeninput/">http://loopj.com/jquery-tokeninput/</a> </li> </ul><p>sie haben die tokenisierte mehrfacheingabemethode bereits in ihren e-mail-clients gesehen. <img src="https://i.stack.imgur.com/h1aid.png" alt="multi-select-tokens in email"></p><p>wenn häufig mehrere ausgewählt werden, können sie ein kontrollkästchenmenü <strong> </strong> in betracht ziehen. der unterschied besteht darin, dass das dropdown-menü über alle klicks hinweg dauerhaft bleibt (und die mehrfachauswahl visuell kommuniziert). daher kann der benutzer mit klick-klick-klick schnell mehrere elemente auswählen. für unsere web-app möchten wir dieses design durch hinzufügen der token-funktionalität verbessern.</p><p><img src="https://i.stack.imgur.com/zqizh.png" alt="checkbox menu, via realestate.com.au"></p><ul> <li> <a href="http://www.realestate.com.au/">http://www.realestate.com.au/</a> </li> <li> <a href="http://blogfreakz.com/jquery/jquery-dropdown-check-list/">http://blogfreakz.com/jquery/jquery-dropdown-check-list/</a> </li> </ul> eine individuell entwickelte webanwendung ist oft preiswerter als eine standardsoftware. ihr vorteil besteht darin, dass sie nur die kosten für die einmalige entwicklung der software investieren müssen. da sie zum eigentümer der software werden, entstehen keine weiteren lizenzkosten und zwar unabhängig von der benutzeranzahl und der dauer der nutzung. weitere informationen finden sie in unserem wiki-beitrag über die kosten einer individualsoftware (<https://www.trinidat.de/software-wiki/individualsoftware-kosten/>). Wenn es etwas mehr sein darf, dann finde ich "Design Thinking" oder auch "Design Sprints" sehr passend. Das ist allerdings beides nichts, was man mal eben in ein kurzes Meeting einbindet, sondern eine komplette Methodik in der es in beiden Fällen auch darauf ankommt, dass man ein möglichst interdisziplinäres Team zusammenstellt, um von den verschiedenen Sichtweisen zu partizipieren und dann in einem strukturierten Prozess zuerst einmal daran arbeitet, eine sinnvolle / lösenswerte Problemstellung zu erarbeiten. Im weiteren Verlauf werden konkrete Lösungsideen erarbeitet, ein Prototyp entwickelt, der dann an echten Kunden verprobt wird. 

Zum Start der Zusammenarbeit eines neuen Teams, bzw. beim Projekt-/Produktentwicklungsstart finde ich das super passend.

Nähere Infos dazu gibt's im Teamprove Blog: [Design Thinking](https://www.teamprove.de/blog/design-thinking-1-innovation-mit-methode?highlight=WyJkZXNpZ24iLCJ0aGlua2luZyIsImRlc2lnbiB0aGlua2luZyJd) oder [Design Sprint](https://www.teamprove.de/blog/design-sprint-mach-s-wie-google?highlight=WyJkZXNpZ24iLCJ0aGlua2luZyIsImRlc2lnbiB0aGlua2luZyJd)

Innerhalb dieser Methoden wird dann durchaus auf andere Elemente wie z.B. verschiedene Brainstorming Techniken gesetzt. Es lohnt sich, einen Blick auf diesen [`Blog Post`](http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/) werfen, aber letztendlich werden die Kriterien von Ihnen festgelegt. Sie müssen entscheiden, ob 

* schnelle Entwicklung
* Performance
* Code-zuerst
* DB zuerst

 oder was auch immer Sie suchen und priorisieren Sie die Liste basierend auf, was noch wichtiger ist. Dann verwenden Sie diese Liste, um Ihre Forschung zusammenzustellen. Hallo Ocary91, 


es gibt tatsächlich mehrere Arten der Perspektiven in der architektonischen Darstellung. häufig verwendet wird die AXONOMETRIE.


Bei der isometrischen Axonimetrie wird das dargestellte Objekt um 45° gedreht wird und die beiden sichtbaren Seiten unter einem 30° Winkel zum Horizont dargestellt werden. 


Bei der dimetrischen Axonometrie wird das darzustellende Objekt ebenfalls gedreht, aber nur um 20°, so daß die beiden sichtbaren Seiten unter Winkeln von 42° und 7° dargestellt werden, was etwas natürlicher ausschaut. 


per Hand etwas aufwändiger, aber ungleich realistischer, daher auch häufiger verwendet ist REALPERSPEKTIVE, oft mit der 2-Fluchtpunkt-Perspektive dargestellt wird. Bei ihr laufen Raumparallele Kanten auf einen Fluchtpunkt zu, wobei jede dargestellte Seite einen eigenen Fluchtpunkt hat. 


Alle anderen Arten von Perspektiven werden in der Architekturdarstellung eher selten eingesetzt. Auch CAD-Programme nutzen die Darstellung der Realperspektive, wobei viele Planer zugunsten einer scheinbar besseren (dramatischeren) Optik gern einen Standpunkt (Augenpunkt) auswählen, der später nie eingenommen werden kann. (Beispielsweise mitten auf einer Fahrbahnkreuzung in ca. 30 cm Höhe über dem Fussboden, weil dadurch die Technikaufbauten auf dem Hausdach nicht sichtbar sind oder die angrenzenden Häuser verdeckt werden, die im Zusammenspiel mit dem geplanten Neubau seltsam wirken. 


M.E. nach ein Fehler, den man nicht machen darf, denn nichts ist aufregender als eine Zeichnung, die auch das zeigt, was später sichtbar ist. Und wenn es in einer solchen Perspektive nicht gut aussieht, dann ist es eine verbesserungswürdige Planung ;)