deutschesoft / toolkit Goto Github PK
View Code? Open in Web Editor NEWtoolkit is a JavaScript user interface widget library for professional audio applications
License: GNU General Public License v3.0
toolkit is a JavaScript user interface widget library for professional audio applications
License: GNU General Public License v3.0
...so all widgets can have children. This makes some lately added transitions to Container base class of some items unnecessary. Should fix ValueKnob and ValueButton (missing values).
The DOM standard defines the node.remove() method, which currently does exactly what TK.destroy() does. It is currently not implemented in IE, but can be replaced by a polyfill. node.remove() is semantically much clearer than TK.destroy().
I propose a new API for formatting click entries. Instead of passing all individual Date entries, simply pass just the date object itself.
outer_height and the other similar functions currently exist in two variants. One variant simply calculates the effective dimensions, while the second variants tries to update the style properties in order to set the effective dimensions. Both variants force a relayout, which is not necessary (but can be fixed). Furthermore, the set-variant forces a style recalculation and it would be nice to somehow seperate that step (e.g. by optionally passing the computed style of the element).
The current pager implementation, which uses one huge div, which is moved scrolled from one page to the other does harm rendering performance severely. Hiding the pages using visibility:hidden
does not help.
this is two issues:
The documentation of the 'snap' option is confusing (to me). It also does not seem to mention all the possible options (e.g. array of values). Lets make is clearer and possibly simplify the API. Less options is often better.
The Pager autosized itself and all contained pages on initialization and resize. This is maybe unavoidable, but could certainly also be done in CSS when doing the layout.
The tooltip keep_inside feature calculates the tooltip width in order to make sure it does not extend across the window boundary. This happens (potentially) on every mousemove event and is very expensive.
Many widgets contain private drawing functions or event callbacks. They are usually prefixed by an underscore. Make them all "private" methods be moving them into the outer function scope. This is purely a cosmetic change, but can improve inlining.
The snap feature currently leads to many subtle bugs in combination with user input. For instance: scrolling happens in pixel values, which are then transformed into the value coordinates, then the value is updated and snapped. Depending on the settings of 'snap' the value might or might not change.
The Select widgets sets its width property to the maximum width of any child entry. This requires calculating their outer_width and forces a relayout.
Calculate the size of the meter bar based on outer_height of label and title.
ButtonArray uses lots of getBoundingClientRect which possibly can be reduced.
FORMAT is nice for reusing the same format string. However, it is rather slow when used only once. Write a new sprintf
There is many places which leak event handlers. One prominent example is Widget class itself, which does not clean up its event handlers on destroy().
Scale changed lately so it doesn't fit Fader anymore.
During initial render, the Levelmeter calculates its __margin. Probably unavoidable.
_set_labels() triggers two relayouts. Can this be reduced?
The buttonarray has to calculate its own size and the size of all buttons in order to decide whether or not the next/prev buttons should be displayed. Probably unavoidable and also only happens once on initializiation now, which is not so bad.
There are many widgets which allow setting html content using innerHTML. Examples are all sorts of labels. This has several disadvantages:
Solution: Allow either setting text content or DOM nodes directly. That way setting 'HTML' content has to be done explicitly.
Knob itself extends Circular and sets options.container to an internal svg during initialize. This breaks options.container to work correctly, for instance it is not possible to set after widget creation. I don't really see a reason for this, it also make the initialization difficult. Maybe it would be easier to not Extend Circular, but instead have a circular instance locally similarly to the clock widget.
This function is already optimized to trigger only one relayout (by getBBox()). Can this be improved further?
Grid draw_lines() calculates the size of labels in order to place lines correctly. Could this be removed, for instance by hiding the grid behind labels some other way?
clip, peak and label are currently set from within the redraw()
method. This logic is currently slightly broken and the information could also be out of date, because the age of the data is not taken into account.
Should work recursively through all nested pagers. Should be switchable by option.
Chart draw_title() calculates the title bounding box to improve placement. This forces one relayout, can it be removed?
Scale calculates the size of every label in order to
Chromium recently changed how timer events work in the presence of input events. Essentially, timer events are delayed indefinitely, when there are inputs events firing at the same time. This prevents the delayed draw from happening until the handle is released in the worst case.
Fixes maximized Window resize with single click in title bar
The fader tooltip is not updated when dragging the fader outside of its scale
Add buttons to showcase to step to next or previous widget. Should work with opened examples page, too.
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.