ucfopen / adventure-materia-widget Goto Github PK
View Code? Open in Web Editor NEWA flexible scenario-building Materia widget where participants follow branching decision trees.
License: GNU Affero General Public License v3.0
A flexible scenario-building Materia widget where participants follow branching decision trees.
License: GNU Affero General Public License v3.0
In-between nodes are nodes created between an existing parent and child by clicking the "+" icon on the link. However, deleting an in-between node will also delete all children of the node, which can be problematic if that node was created by mistake or the user changes their mind.
It would be better if, upon deleting a blank in-between node, the tree was restored to its original state, with the parent once again linking to the child - instead of removing the node and all child nodes below it.
There's a degree of scaling that happens between text and media, but neither side is capable of taking up more than 50% of the width in the player, and often media assets are scaled down more than they need to be. It'd be nice to go back and made scaling a little more robust.
We're seeing a small number of instructors create absolutely massive trees, with literally thousands of nodes. As expected, the tree visualization is not built to handle trees of this size.
In terms of low-hanging fruit, there are a few optimizations we can apply:
ZZ
. Afterwards the first character will begin iterating through subsequent ascii values.A lot of frustration with Adventure right now has to do with accidental deletion of nodes or subtrees. Adventure already has a "cold storage" property that holds child nodes deleted intentionally (for the purposes of the undo option), but this could be expanded. In any case where a non-blank node is deleted, the parent can retain a copy of it, and we can add a dedicated "restore" option to review a list of a parent's previously deleted children.
If there are two consecutive hotspot nodes, and a student clicks a hotspot to continue to the next, and the second node has a hotspot located underneath the cursor, the focus event (i.e., displaying the label) will not fire.
After playing with the widget some more:
If required items are always hidden, that should probably force the "hide if user does not have required items" option, since otherwise the option won't be selectable but the user has no way to know why.
Several people have requested an option where a user can backtrack through previous nodes and presumably select a new answer if necessary. It shouldn't be too difficult to implement.
Requested by an instructor: Short Answer nodes could include an even more "fuzzy" detection mode that will match substrings, if the user response contains any of the responses for each answer set. For example, if an answer set contains black
and a user enters I love black cats
, the corresponding answer will be selected.
Something to consider: there's no checks of this type currently, but we should also consider what happens if there are duplicate matches in different answer sets. This is especially likely to occur with substring matching. Do we check (and prevent) duplicates? Do we simply indicate that the first match is selected?
The UI could be tweaked slightly to better indicate that there are three tiers of fuzziness to short answer response matching, from least to most strict:
The score module seems happy to process this log multiple times for a single play, resulting in doubling (or tripling, etc) of the final score.
See also: ucfopen/Materia#1444
Most dialogs in Adventure have logic that prevent them from clipping into the edges of the viewport (e.g., displaying partly or fully off the right or bottom sides of the screen.) The answer tooltips, the little tooltips that display when you hover over a node that display all answers linking to that node, don't seem to respect the viewport properly.
To replicate this all you need to do is go on the demo for the adventure widget, click play, and look at the console.
https://materia.ucf.edu/widgets/18-adventure
Adventure doesn't do a good job of indicating certain UI interactions, and watching users get frustrated trying to figure out how to perform certain actions makes it clear we need a way of introducing certain features to users, either with a tutorial or contextual tooltips.
When publishing a tree in Adventure that has errors, the first time the save is intercepted, the validation appears normally (sometimes with a < 1 sec delay). If the tree is not changed - and not re-rendered - and publish is clicked again, the validation screen won't appear until the cursor moves and/or interacts with the widget window.
See: http://quick.as/kdg6hoyox
Since this is an extremely edge case behavior, I'm labeling it as "Let It Ride" until after Adventure 2.0's initial release, due to time constraints.
Error: <line> attribute x1: Unexpected end of attribute. Expected length, "".
It looks like the svg line attributes for x1 and x2 are null on initialization.
Suggestion for your consideration: Any chance we could add the ability to embed media in, say, a Narrative node? Or perhaps add a new node type for YouTube, Vimeo, etc.? I know we wouldn't want to accept video files directly within Materia, but it would be nice to be able to embed streamed video.
moved from ucfopen/Materia#66
There's a good use case where the end nodes would be able to send you to a url or present you with a link to go to next.
Adventure could be used to send you to different learning objects, widgets, pages etc.
The "cold storage" feature for nodes seemed kinda cool but in practice became insanely complicated. It's probably better to strip this feature out and replace it with snapshotting the tree structure to enable the undo/redo option. This has the added benefit of allowing the user to traverse the history of changes beyond the most recent edit.
Related to #45, but with a specific focus on video - we've received comments that the video player is just too small in its current form. Ideally we could have a middle-ground alternative to full-screen, using a lightbox or something similar.
As part of this, making response submissions more intuitive would be helpful. Many people assume that simply having text in the input field for possible responses is enough. Perhaps auto-submitting any text in those fields when the user closes the window, or warning them that no matches were actually added. In any case, the validation logic should check for this.
Right now, one simply hovers over the middle point of a node link to reveal the "+" button that lets you add an in-between node. However, this can often obscure other UI elements, and is generally pretty un-intuitive. A better solution may be to add a smaller, static "+" button in the middle point to make it clearer, and to improve how it behaves when adjacent/overlapping other UI elements in the creator.
Resetting a node will only display a warning if there is a (hierarchical) child node that isn't blank. Otherwise, resetting will happen immediately with no undo option, unlike node deletion. Should probably add a warning dialog regardless of children, and provide the undo option in the toast.
They consistently default to the top-left corner of the image.
New Destination (blank)
is not clearI initially clicked on it, thinking it would create a new, blank destination node. However, selecting it has no effect.
I believe it says this mostly because it makes sense when the node itself is new - it'll create new blank destination nodes for you - and it's the default option.
Suggest we find a way to make this less confusing when editing a node that isn't brand new.
@clpetersonucf suggesting this may be part of a bigger update dealing with how node selection for answers works:
Right now it's very unclear - there isn't any label or indicator, just a button with a letter in it
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.