Commit graph

61 commits

Author SHA1 Message Date
Thiemo Kreuz 24c75d11b3 Fix maximum height of reference popups
In patch I2a82831 we removed a line `margin-bottom: 16px`. This
margin defaults to 47px now. This made the popup bigger. This
patch fixes this.

The original size of 403px was introduced in I6036968 (T246029)
and already fixed one time in I82ea489 (T246029).

Bug: T234205
Change-Id: Ia61f1b79f8450d6249e190ab4ed1565ed5ac77be
2021-03-05 11:50:21 +00:00
Svantje Lilienthal fb0863f101 remove spacing, when the footer is empty
Bug: T276200
Change-Id: Id5d30a53251bdf3674388cbdb29d93a0d52b3266
2021-03-04 16:22:55 +00:00
Thiemo Kreuz 513899d808 Much more relaxed reference type detection
* When there are multiple <cite> elements, the first that contains a
  known class is used. We assume the earlier one must be the relevant
  one.
* When there are multiple known classes in e.g. <cite class="web news">,
  the last one is used. This follows how CSS works.
* There is extra validation if the corresponding message exists, just
  to be sure. This is cheap.

Bug: T274979
Change-Id: Iee3481ea16af96b40faf978e254718e5a48917f3
2021-02-22 11:55:03 +01:00
Svantje Lilienthal 1962372a44 Add cogwheel to disable ReferencePreviews
I added the common styling for the setting icon to the popup.less
and removed the now empty pagePreview.less.

Bug: T234205
Change-Id: I2a82831bc71a4208c4b66c18e2a4613127c43e1f
2021-02-16 15:39:43 +01:00
Thiemo Kreuz ef4b032513 Add new reference type "note" without an icon
Bug: T274343
Change-Id: Ib9f3fe98baf1d194e686b007a9c535f2b49ac19d
2021-02-11 10:15:36 +01:00
Noam Rosenthal 497eb631d1 Parse template HTML only once, as HTML parsing is expensive
When creating a popup, clone the previously created DOM element
and populate the attributes and content.

Ideally this would be done with a template element, but since IE11
is still supported this is not possible.

Change-Id: I347615cf1f613d97d767d60627b13b6b3ff9c762
Bug: T269338
2020-12-07 23:01:26 +00:00
jenkins-bot d2018ebfe0 Merge "Resize popup to 403px" 2020-11-06 10:29:45 +00:00
Adam Wight 50c0e46b0a Resize popup to 403px
Restores the max-size introduced in I6036968a2, after conflicting
changes to the popup layout.

Bug: T246029
Change-Id: I82ea48929b44d97d78112bd96ad75724ae6f46af
2020-10-30 20:25:47 +01:00
Thiemo Kreuz c6ea149d34 Wrap long words in reference preview popups
Bug: T266859
Change-Id: I874d60246a0337577c0f411d0d24f237c1ceebf2
2020-10-30 20:14:39 +01:00
Adam Wight 789cedc168 Remove reference preview "Jump to reference" link
Now that the footnote label links to the references section, we don't
need this additional link.

Bug: T265482
Change-Id: Ib9b2939eb49e7b826c7699a5b7fa0e8255fa9da1
2020-10-30 11:33:24 +00:00
Thiemo Kreuz c1abe80b08 Minor code cleanups, e.g. utilizing arrow functions
Change-Id: I56bcfa040553a96f018f22483f3f988c5639fc97
2020-10-30 11:31:12 +01:00
Thiemo Kreuz f4d696e6bf Add (i) info icon to collapsible replacement message
This avoids pulling in the entirety of OOjs, with the disadvantage
that we have to copy a little bit of CSS. I copied parts of this
patch from I2a28666.

There might be a better way to do this, with less code. E.g. is
there a better way to construct these HTML elements?

Bug: T220208
Change-Id: I024155f3ff0f57de1d68bbaf37bfb9e81e692bd0
2020-10-30 10:53:30 +01:00
Thiemo Kreuz 1cf721e2a2 Handle collapsible & sortable elements in reference popups
Elements that are marked as collapsible (often tables, but can
actually be anything) are most certainly marked as such because
they are big and don't fit in a popup.

Another plugin makes tables sortable.

In both cases non-functional UI elements appear in the popup.
We decided:
* Hide collapsible elements (no matter if currently collapsed
  or not), and show a placeholder text instead.
* Remove sortable arrows.

This is a baseline patch that solves everything, except the
(i) icon is missing. This will be added in the next patch.

Bug: T220208
Change-Id: I58f3036bf4988d0ebe5716b0a54506446fca10c3
2020-10-28 17:23:12 +01:00
Thiemo Kreuz ee0bcf626f Increase maximum height for reference previews
Bug: T246029
Change-Id: I6036968a2072af810ffbb6a144f2ede3b2c8f810
2020-10-28 11:29:40 +01:00
Thiemo Kreuz 26ca2bcf5b Scroll reference heading as well
Bug: T249548
Change-Id: I808ee9aadc8766490e98267bb94d25887f404362
2020-10-28 11:26:52 +01:00
jenkins-bot 1f28739cd0 Merge "Move scrollbar for longer references to the right" 2020-10-28 10:20:58 +00:00
Thiemo Kreuz 7b96ed8c4d Move scrollbar for longer references to the right
Bug: T249530
Change-Id: I2db695aa79fae7511eb316f5463f76654722741d
2020-10-27 14:30:23 +01:00
Thiemo Kreuz d6ab2072e3 Open only external links in new tabs
There are 3 types of links:
* Links with no class are links to other pages in the same wiki.
* Links with "extiw" are interlanguage as well as interwiki
  links to other known wikis (e.g. from Wikipedia to Wikidata).
* Links with "external" point to somewhere else on the web.

Bug: T215419
Bug: T239230
Change-Id: Ia25db94d02670a919fc003f3e3562725de2e8eae
2020-10-20 10:52:05 +02:00
Ed Sanders 536470c01d build: Update eslint-config-wikimedia to 0.16.2
Change-Id: Icb65074fe64993314bbb28f690ce3ce0f89fb57c
2020-06-26 17:05:56 +01:00
Adam Wight 07aa0f3ae9 Don't record Popups actions on non-content pages
We found that Popups was overcounted approximately 2.5x relative to Cite.
This patch attempts to nearly match the circumstances under which Cite
(and its tracking) is loaded.

Bug: T214493
Change-Id: Ib31df3c33879f4ea63d9808ffd260861069a8977
2019-11-14 16:52:05 +01:00
Adam Wight 0c1e628edb Ensure that pageviews are recorded at most once
The Popups pageviews were suspiciously high, about 2.5x higher than
Cite counts which should have reported the same number.  This patch
attempts to deduplicate pageview events.

Bug: T214493
Change-Id: I51bf6d1909d65ecd9d3ef28eda285852897343ec
2019-11-08 11:23:02 +01:00
Adam Wight b7331a6e66 Record pageviews where Reference Previews is enabled
We want to know the side of this population in pageviews, in order to
produce proportional metrics later.

Bug: T214493
Change-Id: I940872870754e85d19688f3855d6857e65b982b1
2019-10-24 23:34:56 +02:00
Adam Wight fed99e7cb5 Inline eventlogging call
This isn't messy enough to justify encapsulation in a function.

Change-Id: Idfa6581d30709f1a58ff8c83ead08e1bfda81c1c
2019-10-24 22:52:48 +02:00
Adam Wight 171e1b7dbf Sample ReferencePreviewsPopups 1:1
We're getting a few dozen records per day at 1:10, so let's stop sampling.
We need enough data to get significance on events happening at 0.1% or less.

Bug: T214493
Change-Id: I8a913fe1ee1e5b72d84914e183ac2386ddb20d84
2019-10-22 12:14:17 +02:00
Thiemo Kreuz 76e02fae98 Remove obsolete mediaWiki and jQuery aliases
Notice how this actually reduces the size of the final, compiled index.js.
It's not much, but still.

One issue I noticed is that the coverage reports for the JS code stopped
working. I have no idea why.

Bug: T208951
Change-Id: I2fe92579574b3b1ba4d2dd064899eee944045a96
2019-10-22 09:30:46 +02:00
Adam Wight f6defd5fbc Tune referencePreviews sampling from 1:1000 to 1:10
We've logged zero events after 12hr of deployment, so it should be
safe to increase sampling by 100x.

Bug: T214493
Change-Id: Icd67aed448269f603dd4465f7e46eac9a64bd1ab
2019-10-11 10:52:43 +02:00
Thiemo Kreuz 95c80dcb3e Fix code detecting horizontal scrollbar in reference previews
Bug: T234602
Change-Id: I5994b6e8cb15374bb2c0a31dd4e4549005a619cf
2019-10-09 15:38:35 +02:00
Adam Wight 76a34618c3 Tracking for Reference Previews interactions
Logs events to the ReferencePreviewsPopups EventLogging schema, in
order to understand whether Reference Previews is helpful for
end-users.

This will be removed along with the older tracking, as soon as our analysis
phase is finished.

Incidentally disables a lint rule for the generated JS, it's about
readability so irrelevant to the minified code.

Bug: T214493
Change-Id: I2638611ba67b785338f7e98a1c4b08a5e829812d
2019-10-07 11:22:00 +02:00
Ed Sanders 4d885286a3 eslint: Enforce template-curly-spacing
Change-Id: I5640e86cba25f6100c7814c2ef8a845941f73497
2019-08-15 10:24:43 +02:00
Thiemo Kreuz 59a5e4e981 Fix fade-out gradient not disappearing when page is zoomed
We did a strict === comparison before. This works fine when the page
zoom is either 100% or 200%. Other zoom factors produce fractional
numbers. Comparing them with === is doomed to fail because these numbers
are IEEE representations, not necessarily being identical in situations
where you would expect them to be identical.

This applies two fixes: Change the comparison to a >=, and always ignore
1 extra pixel. If we are so close to the bottom, the gradient is not
helpful any more.

Change-Id: Idf4c604142de8d2a803e1d94f3093cec8a8abb72
2019-05-20 11:02:19 +00:00
jenkins-bot 8c7527af04 Merge "referencePreview: Replace width: 0 with display: none" 2019-05-18 14:45:19 +00:00
Thiemo Kreuz ac65bd3082 referencePreview: No event bubbling on inner child elements
This is relevant in case the HTML looks like this:
<… class="reference"><a><span>[</span>2<span>]</span></a></…>
The additional <span> cause many additional mouseover and mouseout
events. The code already tries to filter these duplicate events that
are all triggered on the same link, but gets confused, especially when
the multiple chains of events overlap each other in unexpected ways.
It's a timing issue. This change does not fix the fundamental issue,
but does make it much less painfull.

This patch also removes the > from the selector. This is in case the
HTML looks like this:
<… class="reference"><span><a>[2]</a></span></…>
The additional inner <span> would prevent any reference preview from
being shown.

Bug: T214693
Change-Id: If2554ba78072245c27a1f85c46f33e3c58582c1d
2019-05-09 13:23:45 +02:00
Thiemo Kreuz b3fb2b5867 referencePreview: Replace width: 0 with display: none
Before, the element is still part of the DOM, shows up in the debugger,
and consumes rendering time (probably close to zero, but still). After,
the element is gone.

Change-Id: I580fd89868b5a91118a8115d71d819824ff7f80c
2019-05-09 13:19:14 +02:00
Thiemo Kreuz 3ca2709cfe Streamline code calculating fade-out bottom position
I actually tried to bring the animation for the "bottom" property back.
When finished, I realized this animation is done on *top* of the
horizontal scrollbar. This looks fancy, but is not what we want. We
need to keep animating the opacity.

This patch here contains a bit of refactoring that was left after I
went back animating the opacity.

Bug: T220200
Change-Id: Icf613f72f3baa3de86f8aa319667c8e8f16593fd
2019-04-26 18:14:30 +02:00
WMDE-Fisch d72ef0fa65 Avoid fade-out above horizontal scrollbars
The changes in the patch check if a horizontal scrollbar is present
and move the absolute positioned fade overlay above that scrollbar.

Since we cannot change the CSS of the :after element via JS a new div
element was introduced.

Bug: T220200
Change-Id: Ia69c9be0facaf3ecebdb9f76d36f7cb3412c0816
2019-04-26 18:02:06 +02:00
Thiemo Kreuz 34cf1f0764 Allow text selection on all fade-outs, not only on references
The last line in all popups ends with a fade-out gradient to white.
The text in this last line can currently not be selected because it is
covered by this partially transparent container, and the container
consumes all mouse events.

This patch here moves the existing solution from "reference previews
only" (where this was a much more serious problem that on page
previews) to the top-level .less file that is for all popup types.
This is not strictly required, but I feel the code belongs there.

Bug: T220200
Change-Id: Iedf667ead453c9e72025d5fdc7af34756456e68a
2019-04-25 19:31:54 +02:00
Thiemo Kreuz 06cdb58d3e Don't block clicks on vertical scrollbar behind fade-out effect
This does not solve all two acceptance criteria mentioned in T220200:
* This will allow *interacting* with the scrollbar, no matter if it
  is partly covered by the fade-out effect.
* This still does not place the scrollbar in front of the fade-out
  effect. Very thin scrollbars are still very hard to see.

Bug: T220200
Change-Id: I394aea6a25c4b3923ad01e18328d42a5e50081f3
2019-04-25 19:26:25 +02:00
Thiemo Kreuz 511c74bf72 Make sure to never trigger multiple events
I had to disable ESLint to be allowed to upload this patch. It starts
complaining about something in code I did not even touched. The error
message does not make any sense to me (something about globals being
forbidden in code where I can not spot anything that would be remotely
global).

Change-Id: I6d4b178a65126c4b81b87d99142a6cdc845ae5ee
2019-03-26 12:39:28 -06:00
Andrew Kostka 522829c43a Add a fade out to reference content
This will only be applied when the height of the content exceeds four
lines of text.

Bug: T217139
Change-Id: If15952c9886c23827873812bb63e8e3127776709
2019-03-25 13:30:52 +01:00
Thiemo Kreuz 4792151769 Split PreviewModel documentation into subclasses
See T218105 for discussion.

Bug: T218105
Change-Id: I0fde5de6e573e219f0937797bf10c20a01021a6a
2019-03-19 14:56:21 +01:00
Thiemo Kreuz 932271b6db Add missing escaping for jQuery ID selector
We run into this issue already one time, see Ifb5fe89 (T214710). The
exact same applies here.

The effect of this bug is that for certain references (typically ones
with a colon character in their name) the "jump down" link will be
broken.

Change-Id: Ic6723bd910cb5e5e1e1872ce39f2e271012245de
2019-03-14 20:03:15 +01:00
Thiemo Kreuz 3f7f0cc91b Mention concatenated message keys in a comment for easy grep
Bug: T215063
Change-Id: I3cc87846974ef942181ebdaa1b024cd5ee523529
2019-03-13 15:28:54 +01:00
Thiemo Kreuz 1d2becc25a Consistently talk about "Reference" instead of "Footnote"
During story time on 2019-03-12 it was decided to consistently talk
about "References" in all messages. Main motivation is that this is
the term the community is most familiar with, and it is also the term
that is used in reference section headings most of the time.

Bug: T215063
Change-Id: Iaab8d2c0da1546a3c9d27bc8e2e1c784050ed135
2019-03-13 09:29:26 +01:00
jenkins-bot 6ef117c3fa Merge "Increase whitespace between reference text and read link" 2019-02-26 16:17:07 +00:00
Thiemo Kreuz 6ec5ac46a5 Increase whitespace between reference text and read link
For popup types other than references this particular margin is calculated
as "2 lines + 7", which results in 47px.

The calculation implemented with this patch results in 55px. That's 8 more.

This also increases the total height of reference popups by the same amount.

Bug: T214169
Change-Id: Ie7870717d2fd2ce78268d1fc1b79d87eff059318
2019-02-26 15:47:52 +00:00
Thiemo Kreuz 06d348041e Use upper-case {JQuery} in all documentation
See the discussion at I6bd7acc. In this codebase it was decided to not
use "classic" JavaScript, but document it with the benefits TypeScript
comes with. Since I27b5cb0 a dev dependency is in place that makes the
upper case JQuery type work.

All the lower-case jQuery this patch happens to touch have been placed
by me, not knowing better at this point.

Change-Id: I76ef8eabaf4850f07b140dac6f489df37422263e
2019-02-21 13:29:45 +01:00
Thiemo Kreuz 032e9ad004 Limit reference popups to max. 5 lines instead of 7
We run into some confusion with the previous patch Ifcc355f, and
decided to talk about the max-height for reference previews later. The
result of this conversation is this patch here.

The mocks and discussions in T214169 mention several numbers that all
conflict a little bit. In detail:

* We ignore the mentioned "4 lines", but go with 5. We assume the 4 is
a mistake. Using 5 is consistent with all mocks and all given pixel
measurements.

* The mock ask for a max-height of 106px for the container. With this
patch it's 100px, which is exactly 5 lines. The extra 6px don't do
anything as far as we can tell, but make the code confusing.

* The mock asks for 215px for the whole popup. With this patch it's
203px. Note this number is (intentionally) not hard-coded anywhere but a
result from all line heights, line counts, paddings and margins combined.

Bug: T214169
Change-Id: I18f61ed02ed506d48e3834e2ebc48b3392f7d732
2019-02-21 12:06:46 +01:00
Thiemo Kreuz d81415a040 Add all reference type icons and messages
These icons are currently unused because the gateway does not deliver
the necessary information. This will be used starting with I6223cbb.
This patch aims to introduce all resources needed by the later.

Bug: T214908
Change-Id: Ie0c3c059222700169f2605c3123554c74d974256
2019-02-20 09:32:11 +01:00
Johannes Kroll d4d8cefac4 Rename link in footer to "Jump to footnote"
Bug: T215063
Change-Id: I18201bdeee65418ef147203a845f34447c24e163
2019-02-13 16:01:24 +01:00
WMDE-Fisch 608a6a79cb Adjust the reference popup size and enable scollbars
This patch mainly adjusts the min-height and paddings for the reference
popups according to the mocks. It also enables scrolling inside of these
popups if the content exceeds the max sizes.

For now the scrollbars don't get specific styling. Also not, that the
fade out effect seen in the mocks is not part of this task.

Bug: T214169
Change-Id: Ifcc355fbcb6410778e7d4c569eb4cab09ed5dbf5
2019-02-12 18:13:45 +01:00