proto-wayic/read/project.task
< pushd ~/work/_/proto-wayic/read/
( http://reluk.ca/project/proto-wayic/read/
( http://reluk.ca/var/deploy/test/proto-wayic/read/
- new name `proto-wayic.layout` -
= rename 'proto-wayic.read' -> 'proto-wayic.layout'
- including variants such as 'proto-wayic/read' and 'wayic_read'
= rename 'readable.*' -> 'way_declaration_document.*'
_____
+ engagement indexing
- presenting a comprehensive, hyperlinked list of the waycaster's engagements
( proto-wayic.exec § engagement
- the necessary code deploys in waycast configuration file `waycast.xml` -
- therefore it is proper to the present project,
not e.g. to `proto-wayic.exec` whose concerns cut across `waycast.xml` -
< waycast.xml
* transformation method
- for the styling and other presentation tasks below
- testing under `xsltproc` -
> xsltproc ~/work/_/proto-wayic/read/waycast_configuration_file.xslt waycast.xml
( bug: it fails if the style sheet argument is omitted
| a modified identity transform of the source XML
- modified to add the triggers
| transformation by XSLT
-! it does not escape the tag delimiters
- viz. does not serialize
- unable simply to use the `serialize` function of XPath 3
( https://www.w3.org/TR/xpath-functions-30/#func-serialize
- Firefox (at least) appears to be stuck at an earlier version
without this function
< https://developer.mozilla.org/en-US/docs/Web/XPath/Functions
| XSLT transformation to boot a JavaScript program
- the JavaScript program does all the real work
= code this
= document why a simpler `CDATA` wrapping (below) fails
- generally the poor support of client side XSLT, viz. in browers
/ | CDATA wrapping followed by JavaScript transformation
/ * CDATA wrapping
/ | https://stackoverflow.com/a/1648776/2402790
/
/
/ <![CDATA[
/
/ ]]
/ >
/
/
// ! `disable-output-escaping` is unsupported in Firefox
/ ( https://developer.mozilla.org/en-US/docs/Web/XSLT/Common_Errors#Missing_features
/ - works in Chrome
/ | using the `output` attribute `cdata-section-elements` -
/ ( https://www.xmltutorial.info/xslt/how-to-output-cdata-with-xsl/
/
/
/
/
/
/
/
/
/
/
/
/
// ! fails
/ - I expect I am misusing it, owing to ignorance of XSLT
/ * JavaScript transformation
/ - quotation and unwrapping
/ - exhaustive quotation is easy under JavaScript
| use Lenz
< http://lenzconsulting.com/xml-to-string/
- it works
/ ! Lenz is a huge file
/ - there must be a simpler way
// no longer matters because normally it needn't be installed in waycast
| exhaustive quotation
< https://stackoverflow.com/a/1162495/2402790
- exhaustive quotation is awkward under XSLT
/ | transformation by JavaScript
/ - but using `` to define the content type of the output
/ - thus transforming after the fact of layout
// ! clumsy
/ | XML script call
/ - how
/ | XHTML `script` tag
/ < https://stackoverflow.com/a/1451526/2402790
/ | XHTML script call
/ - transforming the XML to XHTML,
/ which then calls the script
/ - testing that it will work directly from the local filsystem
/ ( under a 'file' scheme, that is
= present hyperlink triggers
- on all hyperlinkable references
- both intracast (`way location`) and extracast (`description`)
= ensure viewers know of it
- e.g. by pointing from the README
= style the `engagement` elements
- for clarity and consistency with the inway, Web presentation
- note
= `href` of `xml-stylesheet` constrained
- with 'file' scheme
- to a 'file' scheme target
- not 'http'
- under ./
- with 'http' scheme
- not tested
- probably to the same domain
/ = give engagement markup a travel target locator
/ - for clarity on where precisely the waycaster is engaged
/ - often the target is difficult to find in the Web view
// ! no longer needed
/ - now triggers and targets are similar in appearance
/ - now targets are clearly marked
_____
- regressions attending Chrome upgrades
=! broken scroll positioning
- on reload or back travel
=! partial losss of breadcrumb cueing
- lost after first return to a trigger
- subsequent returns no longer show the breadcrumb
- affects both the latest revision and the current working copy
_____
= try to simplify CAST_ROOT_PATH
- by giving it a trailing slash
- since now it is guaranteed to be non-empty
_____
- URI delimiter fontification, for sake of clarity
( proto-wayic.emacs
- detected patterns
- URI reference
= distinctly fontify URI delimiters
- formally intracast reference
= distinctly fontify the leading '/'
- subjoining waybit reference
= distinctly fontify the elemental part
_____
= proto-wayic.cast § waycast relative references and waycast public locations
= proto-wayic.cast § Configuration of a waycast § future proof loading of way_declaration_document.js
_____
- travel cues
- removing focus outline from bitform referential jointers
- a reversion bug
- occurs after activatation
- when they acquire the focus
- does *not* occur when developer tools are enabled
- because it steals the focus
= find fix
- in an old revision
= re-apply it
_____
= try reforming the missle as a cross-hair
( notebook 2018-7-17
- it will probably need a *drop-shadow* transform for the rotation
= try *drop-shadow* transform instead of box shadow
= answer whether colour transforms may now be used
- *contrast*, brightness, and so forth
- in place of *opacity*
- whether they work as expected now that a *drop-shadow* transform is used
= try replacing target symbol with a circled cross
- with rotation of missle's cross ending at the same angle as the circled cross
- and flight perspective ending at the same size
- for visual coherence
- for a more satisfying, convincing effect
= try replacing symbol in case of broken joint with a slash
- instead of a bar
- circled for subjoining waybit, uncircled for missile
_____
= show relative direction of back-travel from subjoining waybit
- using an 'outflight' animation
- blue line
- growing in size and diminishing in opacity (alpha)
- the opposite of inflight
- and (of course) in the opposite direction
- hitting the nominal hyperlink trigger, there seeming to cause the outline to appear
_____
= look into translation as an added directional cue
( something like this is slated for later as part of scene selection, in any case
- only in case of unit travel extent
- this anyway being the condition of directional determination
and thus all directional cueing
( as noted/coded elsewhere
- form
- interdocument
- fading and translation of the view just prior to the location change
- as though the referent document lay under the referring document
- intradocument
= determine this
- needs an effect that is scroll compatible
( notebook 2018-7-17
- scroll-like in look and feel
- e.g. more-or-less continuous
- works correctly when target already in view
- on back travel, too
- then reversing the effect, of course
_____
= give to subjoining waybit a 'self' cursor
( because it is self targeting, of course
- based on a new drawing: trigger_cursor/target_self.svg
- using for symbol a simplified target
- instead of an arrow
= give to generic extracast hyperlink the generic cursor
- viz. trigger_cursor/base.svg
- aka HLINK_CURSOR, but now this is the only use of it
= give to other generic hyperlinks a directional cursor
_____
= light cone to direct eye to action
( notebook 2018-8-4, connected notes (i) and (ii)
_____
= try to replace *opacity* property with contrast filter
- in order to achieve same effect at less cost
_____
-! vertical scroll flash
- when window just tall enough to hold final layout
/ - probably caused by a slightly taller layout prior to resolving interdocument referential joints
/ - probably (in particular) by temporary placeholders that are too tall
// but eager subjoint image caching should be preventing that, in nearly all cases
= find the cause
= fix
_____
= add site icon
- to waycast configuration
- to wayic personalized READMEs
- testing these first
=? or could/should these somehow be configured into *httpd*
_____
- healing broken referential joints
- where the subjoining waybit has moved in the waycast
= seek the new location exhaustively
= notify the user in *tsk* message
_____
=§ bidirectional traversal of referential joints
_____
= disable the 'visited' colouring of hyperlinks
- it distracts from visuals of greater significance in an already complex document
_____
= visibly warn if browser is of an untested type
────────────────────────────────────────────────────────────────────────────────────────────────────
Bidirectional traversal of referential joints`
- including back-travel from a subjoining waybit to any of its surjoining elements
[ scene selection model
- based on document location
- function: switches the view to the surjoint scene of a given subjoining waybit
- form
- a query component in this form:
( Extended Backus-Naur syntax notation, ISO/IEC 14977
'scn=srj&bit=', extended element reference ;
extended element reference = ? as per proto-wayic.script
§ Extended element referencing ?;
- example
file:/waycast/foo.xht?scn=srj&bit=bar
- operated via *History.pushState* in order to avoid reloading the page
- errors (parse, missing referent) are messaged in an alert box
[ document scene
- a way declaration document has one document scene
- it is the default scene, pending a scene change
- the document scene is nominally located to the right of each (off-page) surjoint scene
+ inway approach
- gradient rendering of approach path
- if formed as a shape, as opposed to an empty path
( https://www.w3.org/TR/SVG11/pservers.html
( https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement
+ leftward scene switch
- modal function of the inway approach
- modally enabled only for a subjoining waybit that is window targeted
- appearance when enabled
- the approach reveals itself in full:
1waybit
_
∙··_······················· ◉ 2sbj
= Content of 2sbj
3waybit
Content of 3waybit, a non-subjoining waybit
∙ · · · · · 4sbj
Content of 4sbj
- the stacked lines prefigure the count and arrangement of joint images
in the joint list
- their appearance is less prominent than shown here
- and they need not appear at all when the count is only one
- it operates like the (§) rightward scene switch
- fully appearing only when the pointer (☝) pauses over it
- full appearance:
_
◀——_——————————————————————— ◉ 2sbj
= ☝ Content of 2sbj
- the edging becomes an arrow head
= code just enough to show an empty surjoint scene
- click function is coded (but disabled) in SelfHyperlinking.hearClick
[ surjoint scene
- each subjoining waybit has one surjoint scene of its own
- nominally located to the left of the (off-page) document scene
joint list
⋰
⋰
↗ 1srj
Preview of 1st surjoining element
1sbj · · · · · · · · · · · · · · · · ·
Subjoint preview ·
⋱⋱ ·
← 2srj ·
Preview of 2nd surjoining element ·
2sbj · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ◉
Subjoint preview ·
⋱⋱ ·
← 3srj · ⋱
Preview of 3rd surjoining element · ⋱
3sbj · · · · · · · · · · · · · · · · · ⋱
Subjoint preview ·
⋱⋱ · rightward
↘ 4srj · scene switch
Preview of 4th surjoining element ·
⋰ 4sbj · · · · · · · · · · · · · · · · ·
⋰ Subjoint preview
⋰ ⋮ ⋱⋱
surjoint ⋮
image + ⋮
subjoint = joint image
image
+ joint list
= figure how to include joints formed using hyperform jointers
- renders an ordered list of joint images
- one for each joint (each surjoining element) of the subjoining waybit
- ordered by the location of the surjoining element relative to the subjoining waybit:
- inner above
- outer
- inner below
+ joint image
- previews the presentation (in surjoint document) of both surjoining element
and subjoining waybit
- previews it using the operational forms of a *surjoint image* (of the surjoining element)
infrabutted by a *subjoint image* (of the subjoining waybit)
( see diagram above
* surjoint image
- its preview component appears only if the surjoining element is a waybit
- then it shows its leader, as per LeaderReader
- hyperlinks back to the surjoining element
- its surjointDirectionChar indicates the direction of travel to the surjoining element
and its location relative to the subjoining waybit
- roughly symmetric[al] with the jointer's associated *targetDirection*
in the surjoint document
- glyph
↗ intradocument travel upward of the subjoining waybit
( // '↗' is Unicode 2197 ('north east arrow')
← extradocument travel
( // '←' is Unicode 2190 ('leftwards arrow')
↘ intradocument travel downward of the subjoining waybit
( // '↘' is Unicode 2198 ('south east arrow')
- otherwise no target direction cueing (e.g. cursor)
* subjoint image
- largely replicates the jointer presentation in the surjoint document
- except no targetDirection cueing (e.g. cursor)
- for sake of symmetry with the surjoint image
- the link target is always to the right,
as shown by the (§) rightward scene switch
+ rightward scene switch
- extends to page edge right
- fully appears only when the pointer (☝) pauses over either a subjoint image
- or some part of the switch itself
- full appearance:
← 2srj ·
Preview of 2nd surjoining element ·
2sbj · · · · · · · · · · · · · · · · · ——————————————————————————————————▶ ◉
Subjoint preview ☝ · ☝
☝ ⋱⋱ ·
·
- operates via the scene selection model (§ q.v.)
- with a subtle (brief) rightward translation of scene
────────────────────────────────────────────────────────────────────────────────────────────────────
Blazing`
- marking the route to a way destination
- by highlighting jointers' vertical truncators and other hyperlink triggers
+ destination types
* engagement
< proto-wayic.exec § commitment declaration
────────────────────────────────────────────────────────────────────────────────────────────────────
Extended element referencing`
- implementation of proto-wayic.script § Extended element referencing
= look ahead for hazards
- I recall trouble trying to force an initial position in the viewport
- wrestling with the browsers own mechanism only to finish with unwanted vertical deflection
= give self-target function to all waybits
- not only to self-identified waybits
- also to those that lack an *id* attribute
- self-targeting each by means of extended element referencing
=preliminary: grep code for related, breakable uses of 'id'
- method
| hyperlink trigger injection
- each trigger given an *href* with an *element-relative offset*
- will become functional on coding the (§) extended view positioning mechanism
- advantages of this method
- enables foreseeing the target location via the browser's hyperlink HUD
= is hyperlink HUD wanted here?
= cannot the hyperlink HUD be controlled by other methods?
- fulfils purpose (§ q.v.) without need of travelling
- instead the wayscribe uses the browser's built-in function
for hyperlink reference copying
= is that actually easier?
| direct invocation of (§) extended view positioning mechanism
- by activation|click event handler
- purpose
- aid wayscribe in writing *element-relative offsets* where they are supported
( proto-wayic.script § Extended element referencing § form
- by realizing them in runtime references
* extended view positioning mechanism
- acting on any *element-relative offset* that is passed via window location
( proto-wayic.script § Extended element referencing § form
= code
= use in waycast
- to get on top of *id* proliferation
────────────────────────────────────────────────────────────────────────────────────────────────────
Troubleshooting`
( additional to `./readable.css` § Troubleshooting
- to test my local, Havoc copies of `readable.*`: see 'TEST' in `zz-swatch` § wayscript
Copyright © 2017-2019 Michael Allan and contributors. Licence MIT.