I recently encountered this brilliant post on Medium that describes some best practices for CSS.
While APEX does a lot of this for you, I think it's worth a read by all developers. Even applying basic naming conventions can make code easier to read and understand.
There was also a section on performance that described an issue that my previous example didn't explore, and that's 'tree walking'. Each web page could be likened to a giant tree, and your CPU will like you if you can minimise the amount of traversing necessary to verify the component being sought.
So for APEX developers, consider the selector reading right to left, and try keep it to two steps.
For instance, to identify a button within a classic report, you would define a static region ID for the report, and use the following selector
#p1_region a.t-Button
This would look for anchors with the standard Universal Theme button class, but only if it exists within the classic report region. Concise & effective.
You could use this selector to apply further CSS attributes to the buttons, perhaps via the Inline CSS page attribute.
#p1_region a.t-Button { font-weight : bold; }
Or you could use it as a jQuery selector for an on-click Dynamic Action, responding to the button press. If you add the following as link attributes to the column with the link button. It adds an attribute to the anchor with information from a column aliased as season in your SQL.
data-season="#SEASON#"
Note, to render a column link as a button, this attribute would also contain this class listing, to look like the nearby image.
class="t-Button t-Button--warning t-Button--simple t-Button--large t-Button--stretch"
$s('P1_SEASON', $(this.triggeringElement).data('season'));
A subsequent PL/SQL action could then submit this value to session state and execute something related on the database, without submitting the page on click of the report row button.
While that has side tracked from selector performance, it shows how a simple selector can be used within APEX to trigger events. A pattern I use regularly, done with minimum effort.
If you like this post, you may like my book /plug
No comments:
Post a Comment