-*- org -*-
Flata handen, flyghanden, klohanden, knutna handen, lilla O-handen, nyphanden, pekfingret, sprethanden, stora nyphanden all have alternative handshapes, these should be displayed in the glyph selector menu together with the handshape already shown there.
For words like e.g. ‘Behärska’ http://teckensprakslexikon.su.se/ord/00157.
‘Underarmen transkriberas följd av attitydsymbolerna.’ [Teckentranskription, p.5]
Solr has a support IRC chat channel on Freenode. Apparently `webchat.freenode.net` can be used to easily access a chat channel (for people who aren’t that well versed in IRC). Could I set up a freenode chat channel for ‘teckentranskription’ AND add a link to it directly from the transcription page?
The drag-and-drop help text is very discreet. It needs to grab the user’s attention better, maybe a red double (left-right) arrow to explain the drag-and-drop aspect of transcript editing. Also explain that a cluster can be removed by dragging it out of the transcript.
If one removes the cluster by using one of the buttons everything works as expected, but if you remove it by drag-and-drop (by dragging it outside the field) a reload is needed for the corresponding add button to work again.
This is because Dragula removes the cluster DOM element, and fields I and II depends on fields being hidden, rather than removed.
This could be fixed one of the following approaches:
- Adding the element back (in hidden state) after it has been removed by Dragula (by adding something to the removeCluster() function in `clustergui.js`). – How does one add the element back in the correct place, though?
- Changing the architecture so that all cluster DOM element are always removed (probably cleaner, since it causes less interaction with Dragula, but question is still how to know where to add the elements as they are needed).
When cluster type ‘Ia’ is displayed the margin between field I & II is too narrow (but when displaying cluster type ‘Ib’ it looks good).
Is this possible? Maybe composing an SVG based on the individual glyphs plus their relative coordinates taken from the DOM might be possible using some Javascript SVG library.
NOTE: Need for this feature is somewhat mitigated by the fact that URL fragment provides some small undo capability (with the back and forward buttons in the browser).
Instead of OK/cancel requesters. All changes should be automatically written to localStorage.
Idea: Use share URL fragment strings in localStorage, and for each change transcript save the new fragment string in a stack. Undos would then just become a matter of popping the last fragment string and reverting to the previous one.
Storage module should also listen to localStorage changes, and automatically apply these in the GUI (if relevant). Thus making the app work nicely with multiple tabs open an the same time.
Use the undo/redo of typical software, or something more Emacs-y?
CAVEATS:
- Listening to localStorage events does not capture events caused by one’s own tab, therefore these events will have to be created by the storage module itself.
- Pushing to a JSON encoded stack (which would have to be unencoded and then
reencoded for each push) in localStorage would be inefficient. Therefore
each item would have to be stored using a new (sequentially named)
localStorage key. This means we’ll prolly want to:
- Store an index of items. (Or create one in memory to be able to add remove stuff from the load <select> list whenever a new transcript is added by some tab somewhere. – scanning through [possibly thousands] of localStorage item names might be too inefficient.)
- Compress and garbage collect old entries as new entries accumulate? If we want to retain history forever we could prolly lump older changes together and store them in (a possibly compressed version) for longer periods.
Allows for:
- Using CSS to control SVG color (yay!) and
- Fewer requests to fetch the app.
Concatenate all SVGs into one HTML blob, and inline them in the main HTML in a <div style=”display:none”>.
The class name of each SVG should be the same as the current file name, then use some jQuery magic to extract it and inserting it in the relevant place.
In order to edit the inlined SVGs one would need a simple script that can extract and reinsert the SVGs into the HTML.
Invalid transcriptions should be allowed, but marked as incorrect. (Red squiggly underline?)
Some rules:
- Possible attitude combinations in the active hand. (Table from ‘Tecknad
Svenska’, p.51).
Vridning (AV) Riktning (AR) upp ner fram in vänster höger upp - - x x x x ner - - x x x ? fram x x - - x x in x x - - ? x vänster x x x x - - höger ? x x ? - - ’-’ denotes impossible combinations (as the hand cannot be pointed and turned in the same direction at the same time).
’?’ indicate combinations not found in the dictionary by the author of ‘Tecknad Svenska’. – CHECK WITH DICTIONARY!
- Possible attitude combinations in the passive hand. – ‘Tecknad Svenska’ mentions (p.51) that these are fewer than for the active hand. – CHECK WITH DICTIONARY!
- Possible attitude handshapes for the passive hand. – ‘Tecknad Svenska’ mentions (p.51) that fewer handshapes are used for the passive, than for the active hand. – CHECK WITH DICTIONARY!
This is for free text notes to a transcription, and should be loaded/saved with the transcription. (This would not, at least initially not, be included when sharing a transcription – maybe later this could be added with some suitable compression [and URL escaping] or something.)
How well does the transcription work with multiple tabs open in the same browser? What happens if you edit the same glyph?
Matching dictionary entries (with their Swedish translation) should be listed when writing a transcript. Initially display all words for which the currently entered transcript is a subset.(?)
- Dictionary should display translation + transcript as words are displayed.
- Dictionary should allow for more than one transcript per word (e.g. because many words can be transcribed in different ways: with older and newer transcription conventions; and also because some words have different realizations/sign language synonyms).
Ctrl+A/Ctrl+E should also work.
Ctrl + ArrowLeft/ArrowRight should move IIIc clusters within the field.
(We use Ctrl here and reserve Shift + arrow keys for some distant future copy/paste feature.)
- Ctrl + ArrowRight: Convert Ib -> IIa.
- Ctrl + ArrowLeft: Convert IIa -> Ib.
ArrowLeft/ArrowRight - Move to 1st glyph(?) of next cluster.
Awesomest would be if one could retain which glyph number is selected when moving. (So that ArrowRight followed by ArrowLeft always leaves you with the same glyph focused that was focused to begin with.)
As an alternative to pressing <Enter> then choosing from the glyph selector menu user should also be able to just press the desired shortkey directly (without displaying a menu).
The selection shortkey should be (baseline) aligned. Should take up as little space as possible. And be pretty. :)
A mobile device presumably doesn’t have a keyboard. And what use are shortkeys without keyboard?
‘Handform’‘Läge’‘Relation’ etc should be menu header (at least one menu needs multiple headers, i.e. ‘rörelseriktning’, ‘rörelseart’ and ‘interaktionsart’) instead of being repeated for each selection choice. Specifically, it’s annoying that one can’t search the glyph selector menu using the browser ‘Find in page…’ function (Ctrl-F). Implemented by Simplify focusing in glyph selector in commit caca05e.Mouse should use same focusing as keyboard. I.e. instead of having one mouse selection (grey background) and one keyboard selection (blue border) there should only be one (blue border) which should move if you move the mouse pointer, but also be controllable by keyboard.
Added better shortkeys mostly based on glyph shapes. All menus should have shortkeys. Use simple 1234567890abc…ABC.. sequence when no other shortkeys are defined.Files matching `pic/**/*Truetrans*.svg`.
Haven’t found much documentation about what these glyphs actually mean, or if they’re used, but some of them occur in the Swedish Sign Language dictionary, and there’s very brief descriptions of them in the compendium of the sign language typeface.
Currently this glyph has thinner lines than all the other glyphs. That doesn’t look nice. :(
Now works quite well when using proportional glyphs. pic/Y_Truetrans1.svgIf .add() does the insertion currently done by insertCluster() and also invokes makeCluster(), makeTranscript() could be made quite a bit cleaner.
.add() would need to handle clusters of field type III separately (always just appending those) from field types I and II (which should replace existing) clusters.
.set() should maybe also use .add()/insertCluster()?
If the transcript is wider than the screen it should be broken off in the same way text is.
Fancy fix: Field tables should prolly be `display: inline`, and cluster tables `display: inline-table`. Some kind of clearfix is prolly also needed so that the cluster tables won’t protrude outside the inline containers.
`.show()` + `.set()` method already does this. – `.cue()` needs to be done before `.hide()` since `.hide()` is called from inside `.cue()`.
This might be too complicated to be worth it.
Apparently second (title) argument of history.pushState() doesn’t really work (in any browser?) – is it possible to instead the title with another means and have that picked up by the history menu?
Forward history is wiped out by the glyph selector. E.g. if user changes a transcript, then uses the back button (thus creating forward history) then just displaying the glyph menu will wipe forward history.
Could we avoid this by using replaceState(), and aborting the default behavior of the back button (using it only to remove the menu) in a reliable way?
HTML form-y syntax (e.g. ‘?d=texttexttext’) added to the URL fragment.
Left and right arrows for IIIb and IIId should probably be the same as used for IIIa? Currently the left and right arrow are the same as for the attitude direction symbols (i.e. they’re slightly shorter, not looking so pretty next to the other articulation arrows).
Compare with transcription examples given in Bergman & Björkstrand (2015).
‘<’, ‘>’ and ‘#’ are not allowed in URL fragments, check that they work okay in MSIE, Firefox and Chrome, even though they are never URL encoded.
Should work:
- …when entering a URL with URL fragment to load the page.
- …during the normal updating of glyphs (adding moving etc.)
Reference: List of valid characters for the fragment identifier in an URL? (on Stackoverflow).
Invalid glyph letters should be replaced with the character ‘*’, which should display a question mark-type sign in the transcript.
The idea here is to give the user a hint/affordance that they should click the glyphs to change them.
Regardless of whether you remove the ‘#’ sign or not.
There are instances where one wants to parse a cluster string (e.g. to check validity) without showing it in the GUI.
Cluster structure lookup data should all be in one place, and callable from there. The following variables (and more?) should go into this place:
- clusterGlyphTypes (global; defined in hashchange.js)
- glyphNumChrMap (global; defined in hashchange.js)
- clusterGlyphNums (local; clustergui.js)
- fieldNameOf (local; clustergui.js)
- glyphData (local; clustergui.js)
- domFieldElement (local; clustergui.js)
- domClusterElement (local; clustergui.js)
- glyphImages2 (local; clustergui.js)
Possibly some preprocessing should be done when loading to produce the final table – If any such preprocessing is done, put comments in the code explaining what the final lookup table looks like!
Also look at the `glyphKeys` variable, and the init() function in hashchange.js to see if these can be merged with the other lookup tables.
Instead of using .get(‘_element’).
The name of the data attribute is far to vague as it is now.
Articulation glyph arrows are almost all uneven.
`rr-fram.svg` had a symmetrical arrow head, but thinner lines than all the other arrows.
Happened in commit: d447ddd2Roman numeral field names (e.g. ‘iii’) should be replaced with the new style numeric names (e.g. ‘field-3’), and the same goes for clusters names (e.g. ‘iiia’ should become ‘cluster-6’).
All debug tools should be hidden from the normal user.Now output prints a message on the console saying what Javascript command one should use to show the ‘Dump’ button (currently the only debug tool available).
Selecting a saved transcript in the dropdown should be enough to load it. If the current transcript hasn’t been saved, and the user cancels the loading, the previously loaded transcript should remain selected. Replace all references to old-style field and cluster names in HTML/CSS/code with the new ones.Clusters: ia -> cluster-1 ib -> cluster-2 iia -> cluster-3 iib -> cluster-4 iic -> cluster-5 iiia -> cluster-6 iiib -> cluster-7 iiic -> cluster-8 iiid -> cluster-9
Fields: i -> field-1 ii -> field-2 iii -> field-3
The lookup object `domElements` (in `clustergui.js`) should be split into `domClusterElements` and `domFieldElements`.The internal state should use the same format as the URL fragment implemented in ‘Share’ URLs with all transcript information.
- Rename `glyphStr` -> `glyphChr` throughout.
- Rename `currentValue` and `defaultGlyphStr` -> `startGlyphChr` (in the glyphMenu() and selectGlyph() functions respectively).
(Use `git show b444bb2` and look through removed code to see what variable names are candidates for removal.)
Loading the page gives warning on console if there is no saved data in local storage.- ‘0’ in URL fragment
- ‘987654321’ incorrectly sorted cluster strings will do weirdness when later rearranging clusters in field III
“Medial contact must be combined with a direction of movement. The direction symbol is placed above the symbol for medial contact.” [Teckentranskription, p.10]
Table cells for the hand shape images in the glyph selector menu were shorter than the other cells, causing ugly appearance.This is caused by the `box-sizing: border-box` being applied to <td>, so minor rewrite of the CSS so as to not apply it to that (but all other) elements.
Bug was introduced in commit f63116c.
Implementation of shareable transcripts URLs. A transcript URL contain a hash fragment, and when loading the app with a URL with a fragment the corresponding fragment should be loaded.This allows users to share their transcripts with other users by sending them the URL.
URL Fragment Format
Each cluster is prefixed with a ‘magic’ number (which also works as a separator), followed one character per glyph in the cluster. (And, in the future, multiple signs will be separated by ‘/’).
Magic numbers implemented in this change will be 1-8 (9 will probably be used for ‘medial contact’ in the near future) but multiple digit could possibly also be used in the future (if there turn out to be a need for it).
The magic numbers allow glyphs to occur in any order, and in invalid positions, this is by design, to keep the maximum possible range and combination of symbols open for future expansion.
Only characters which do not require URL escaping are used, i.e. characters matching the following regex: [a-zA-Z0-9?:@._~!$&’()*+,;=-]/
- Cluster separator: Cluster’s ‘magic’ number.
- Sign separator: ‘/’
Type # 1 2 3 4 Ia 1 R A Ib 2 R H AR AV IIa 3 R H AR AV IIb 4 I IIc 5 H AR AV IIIa 6 ARTION IIIb 7 ART ION IIIc 8 H Example: ‘3fyui5yui6x6X6~’ (‘fjäril’).
Differences in width between <input> and <select> was due to the quirkiness of how ‘box-sizing’ is applied by default, so rather than letting the browser decide, I took Paul Irish’s advice and applied ‘box-sizing: border-box’ to EVERYTHING. (See ”`* { box-sizing: border-box }` FTW” by Paul Irish, 2012-02-01).
It seems like one cannot select items below the first screenful on the selector (i.e. if one has to scroll down a bit to reach a glyph on the menu then that glyph is selectable, but it does not appear in the transcript after selecting it).Caused by the Glyph selector focus fails when invoked by clicking issue which was solved in commit e34bcaa.
When mouse clicking a glyph to select a new one, the selector failed to focus the correct item, due to interference with the .onGlyphHover() event handler.The problem was introduced in commit ‘3f379223’ on 2017-02-19.
There should be some hint that one can drag-and-drop clusters. The ‘Övrigt - Markerar sekventiell artikulation’ should be vertically bottom aligned with the hand clusters, not top aligned as it is now. Currently when clicking outside of the current transcript the current glyph is unfocused, but the ‘focus’ class of the other glyphs in the same cluster remains. :(Fix this by attach focusing/unfocusing to <body> instead? That way, whenever focus changes, we can remove the previous ‘focus’ class (if any) and add it to whatever ‘.cluster’ element can be found above the current target element.
The field borders showing which clusters belong to which field should be shown whenever a glyph is focused in the GUI, regardless of whether it was focused by mouse or keyboard. After having removed a cluster, and then created it again the glyph selector wouldn’t work well for glyphs in the new cluster. This does not seem to be an issue on Trusty Tahr with Firefox 50.1.0.Shortkeys works just fine in the glyph selector, but when a glyph is focused and one press enter nothing happens.
Make GUI behave when showing cue in empty transcript for Firefox. Not explicitly set in CSS maybe? Fixed by setting ‘color: inherit’ on <button>, <select> and <input>. Link already present in the readme file.A link to the page containing the sign language typeface used for transcription + the ‘Teckentranskription’ essay.
Since ‘cuehide’ was removed there’s no need to distinguish between two different cues, so might as well simplify all code + CSS.Rename .cueShow() method -> .cue(), and `cueshow` CSS class -> `cue’.
Simplify GUI by removing a lot off bling, and also allow invalid combinations of clusters. (User should be able to enter invalid transcripts, and [in the future] have some “spellchecker” nudge them in the direction of good, rather than be forced to do good. The transcript area should not shrink to zero height when empty as this causes stuff to flicker around when cues are inserted, causing the button one hover over to be pushed down, which causes unhover which causes the cue to disappear, which causes the button to move up under the mouse pointer again and so the cue appear again… To allow for searching for a word without specifying IIc. By dragging and dropping them outside their field. By dragging and dropping them outside their field. By means of drag-and-drop. Together with the ‘glyphs’ data structure. Hovering on a cluster button should show cues (in the transcript) displaying what would be inserted/removed from the transcript when clicking on the button. Moving mouse pointer off of the cluster button the cue should remove the cues. Loading a new transcript (by means of `makeTranscript.set()`) should automatically update the GUI. Hovering over a field hilites the corresponding button group and vice versa, however this has turned out to be more annoying that helpful. Therefore this behavior should be removed. `.show()` method already does this Cluster module now does filtering, by treating ‘hidden’ properties (properties with names beginning with ‘_’) separately – not returning any hidden properties when `.get()` the whole cluster object. Moving the mouse pointer onto a glyph selector item should focus that item (using the blue border), and using the arrow up/down should move the same focus, instead of the two different focusing mechanisms currently used (greying out an item when focused by mouse, and blue border when selecting with keyboard). If the transcript is wider than the screen it should be broken off in the same way text is.Easy/ugly fix: Disable line breaking for fields I and II, and top align text inside the field tables. This will mostly look file, but somewhat ugly on screens small enough that a transcript should be line broken when there are only field I & II clusters present.
Pressing an alphabetic key should jump to the glyph most similar i appearance = Faster navigation!- Glyphs which are to be removed are marked now with diagonal red stripes (and slightly grayed out).
- If a button will add additional clusters then the buttons for those clusters are highlighted as well.
It now gives a console.warn() + sets an empty transcript.
Adding Ib now removes IIa + IIb (if existing), and adding IIa or IIa + IIb should removes any Ib. Dump button now also uses the internal storage module. IIc should never be removed (as IIc is always required). With one <td> for I, one for II and one for II fields.- ‘transcript’ = A complete transcript for a single sign.
- ‘field’ = There are three possible fields in a transcript: I, II and III (though field I and III are optional).
- ‘cluster’ (of glyphs) = A collection of glyphs which always go together (in the GUI there is a button for each cluster). The clusters are named after their field + a letter, e.g. IIa, IIc. The cluster IIc is special in that it is required in all transcripts.
- ‘glyph’ = One symbol (or squiggle) used.
- ‘image’ = Refers to one SVG (or other) image (which usually contains a single glyph).
The cluster move/delete buttons should now show up on top of the glyph selector menu.
Should reflect the order in ‘Teckentranskription’ (rather than be in an order convenient when stepping through the glyphs one by one, as before). Use page history to allow the ‘Back’ button to cancel.Instead of using <- and -> to change glyphs, should press enter (or click) to get a dropdown from which one can select a glyph. – This would also make this work on cell phones.
ArrowUp/Down/Enter/Esc to navigate menu Using strapdown.js to produce a nice and readable README? – Naah. Linked to the GitHub version of the README instead. When showing the glyph selector on a cell phone, the fact that one selects an entire table row is not obvious (one could get the impression that one can select table cells).Should remove the vertical lines (vertical table cell borders) inside the table, so at to emphasize that the description on each line is denotes one possible glyph (and not several alternatives).
Responsive GUI when zooming in on cell phone.The size of each image should be just enough for the glyph to fit, and then each image should be included in the DOM not as background images using CSS, but as proper images with the <img> tag – that way the HTML tables can adjust automatically to each glyph’s size and we’ll get a (much?) prettier layout of each transcribed sign.
Displaying the information about that glyph. Load them using HTML, rather than ajax, if possible (as it would work on the file:// protocol, too). Maybe just a large hidden HTML element will do? BUG: Implementation doesn’t work when adding prepended type I field, if other clusters have already been created. – It then focuses a glyph in the last cluster instead. But what the hell, right?When one clicks a button to create a new glyph cluster, that cluster should be focused.
For erasing a saved transcription. For clearing the current transcription. All articulations (including separator and repetition) should be higher on the line, so as to be clearly distinguishable. In fact the top of these should align with the top of ‘R’ (relation). There are rounding errors causing some ugliness and uneven sizes of stuff. The I type buttons should add their symbol at the beginning of the transcript, rather than at the end.Instead of the pseudo-random names they inherited from the typefaces.
Double articulation cluster IIa should have an optional interaction kind. ‘AR’ and ‘AV’ glyphs should be reordered so that they rotate clockwards as one steps through them. It should only take up space in the glyph when it is actually used. On reload, the transcription loaded before the reload should be the one displayed. Should allow for saving of multiple transcriptions with different names, so that we can transcribe a buncha stuff and see what works.ART |
ION |
---|
= Two glyphs, one above the other.
ART-ION |
= Single glyph, full height.
and
: |
= Narrower version for ‘repeated articulation’ and ‘marks sequential articulation’ symbols.