Ckeditor5: Add API to retrieve the content stats

Created on 30 Jun 2019  Â·  10Comments  Â·  Source: ckeditor/ckeditor5

Currently, you can only listen to the #update. It'd also be cool if you could just retrieve the same information on demand.

Use case – you want to access that information on form submit to validate those values.

word-count feature

Most helpful comment

FYI: I smuggled a new #update event demo in the PR

Kapture 2019-08-02 at 13 49 02

All 10 comments

@Reinmar there are already two observable properties for WordCount plugin so you can:

const wordCount = editor.plugins.get( 'WordCount' );

console.log( wordCount.words, wordCount.characters );

Nice! I've just stumbled upon them (cause they are not mentioned in the docs ;)).

However, there's a problem with them – they can be outdated. They should be implemented as getters which calculate the character count if the model changed since the last retrieval.

And once we fix the above, let's document them in the feature guide.

Do they need to be getters if you would update after every change?

They are now calculated in a throttled event. So, not after every change.

However, there's a problem with them – they can be outdated. They should be implemented as getters which calculate the character count if the model changed since the last retrieval.

Quick idea: cache them. As we already calculate them in a throttled event we could have these values either taken directly or calculate them if the throttled event is not finished.

So the idea is that a change event listener would set some internal flag, ie this._freshData to false and the throttled method would set this._freshData to true once resolved. This way the getters could either take the words and characters directly or calculate them if needed.

But OTOH - this might be not needed as the getters are rather less frequent use and the calculate method is fast enough.

But OTOH - this might be not needed as the getters are rather less frequent use and the calculate method is fast enough.

Good point. It doesn't seem necessary to cache them. If anyone wants to access them frequently, then they should use the event.

Definitely getters will be needed, otherwise we have a risk of edge case when validation based on our word count will pass content longer than expected.

FYI: I smuggled a new #update event demo in the PR

Kapture 2019-08-02 at 13 49 02

FYI: I smuggled a new #update event demo in the PR

:thinking: -2 might be confusing there :D but I don't have better idea ;)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

devaptas picture devaptas  Â·  3Comments

pandora-iuz picture pandora-iuz  Â·  3Comments

MansoorJafari picture MansoorJafari  Â·  3Comments

oleq picture oleq  Â·  3Comments

pomek picture pomek  Â·  3Comments