adrian

Tracy Debugger

Recommended Posts

I played around with the parameters I found inside the theme-tomorrow_night.js file. I managed to change the background color, string color and operator color.

.ace-tomorrow-night {background-color: #DCDCDC;color: #C5C8C6}
.ace_keyword.ace_operator {color: #000000}
.ace-tomorrow-night .ace_string {color: #66CD00}

This is definitely a bloat free solution.

I am already happy so far. I guess I will find the rest also.

 

Share this post


Link to post
Share on other sites

I am happy including all the themes - only the selected one is loaded, and they only add 135kb to the Tracy module package so it's really not an issue.

Here's what will be coming soon. You can see I have selected your desired iplastic theme in the config settings and the Console panel is styled accordingly. This will also control the File Editor panel's theme as well.

image.png.58fa29dd49be6234ab8af18ebd744450.png

Share this post


Link to post
Share on other sites

A couple more settings to help out those of us with "tired" eyes 🙂

image.thumb.png.2c29bf8dadb1c1e2c4870c5e169f636b.png

These will be pushed in the next few days.

I am still messing around with the code completion stuff. Unfortunately I don't think showing the doc comments like I posted above is going to be a good idea - it's a 2MB payload and even though I am not really seeing a slowdown here on local dev, it still feels wrong and will probably impact performance on a live server. I do like the idea though of an API learning interface like this, so maybe it's something for a dedicated panel where speed doesn't matter. Any thoughts?

  • Like 1

Share this post


Link to post
Share on other sites

Hi,

Quote

including all the themes they only add 135 kb - - - doc comments it's a 2 Mb payload - - - showing the doc comments - - - api learning interface

I wouldn't include all the themes, I think 135 kB is already too much to add to the TracyDebugger. Like I said it was only a case of changing a few color combinations to take away the harsh look of it for someone's set of eyes. Tweaking the theme-tomorrow_night.js was all I needed and I am happy with it. (maybe a hint where I can change the font-size ?)

I agree, I would leave out showing comments about code documentation. A 2 Mb payload is way too much and besides I don`t see it will add effectively to the coding learn process. I guess it will only be consulted for some details. I reckon that effective resources for a coding learn process will always be snippets, the forum, http://processwire.com/docs/----- and http://php.net/manual/en/------

Remember that some time ago there was a discussion in the forum what strategy is being used for keeping an online website in sync with your local laptop copy ? All kinds of strategies were discussed and one of them is editing the online website parallel with the local copy on your laptop. So when something is edited in the local copy, all that is needed is to copy and paste your edits into the editor of TracyDebugger. I think that is still one of the fastest ways of keeping a website in sync.

 

  • Like 1

Share this post


Link to post
Share on other sites

I don't care about those 135kB, but I also don't care about any other theme than we currently have 😉 

  • Haha 1

Share this post


Link to post
Share on other sites
12 hours ago, pwired said:

I wouldn't include all the themes

+1

I'm also the kinda guy who does not like any bloat. I think one readable "dark theme" and one "light theme" would be enough to choose from.

  • Thanks 1

Share this post


Link to post
Share on other sites

Is it just me or has Tracy (current version) become very sloooow recently with the "Force superusers into DEVELOPMENT mode" setting activated? Benchmark - loading of the "modules" page:

  • Tracy enabled: Loed 6.9 s
  • Tracy disabled: Load 1.2 s

Measured with Google Chrome Dev Tools.

I don't remember noticing that before... 🤔

Share this post


Link to post
Share on other sites

So what are your load times regarding the "force su into dev" setting?

Share this post


Link to post
Share on other sites
3 hours ago, bernhard said:

So what are your load times regarding the "force su into dev" setting?

I've written that already - with "Force superusers into DEVELOPMENT mode" activated, it takes nearly 6x times longer to load the modules page than without Tracy. 

Share this post


Link to post
Share on other sites

You wrote Tracy enabled/disabled, that's why I asked.

Share this post


Link to post
Share on other sites
3 hours ago, titanium said:

Is it just me or has Tracy (current version) become very sloooow recently with the "Force superusers into DEVELOPMENT mode" setting activated? Benchmark - loading of the "modules" page:

  • Tracy enabled: Loed 6.9 s
  • Tracy disabled: Load 1.2 s

Measured with Google Chrome Dev Tools.

I don't remember noticing that before... 🤔

I am not seeing any issues here visiting the modules page (or any other), but I am curious what Tracy panels you have enabled. Perhaps it is one in particular that is causing the slowdown. Also, is it just the modules page that is slow? 

Share this post


Link to post
Share on other sites
21 hours ago, bernhard said:

You wrote Tracy enabled/disabled, that's why I asked.

Oh, I see, I wasn't precise enough. Sorry, I didn't think of that. I meant "Tracy with Force superusers into DEVELOPMENT mode activated instead of just "Tracy enabled".

 

21 hours ago, adrian said:

I am not seeing any issues here visiting the modules page (or any other), but I am curious what Tracy panels you have enabled. Perhaps it is one in particular that is causing the slowdown. Also, is it just the modules page that is slow? 

It's Tracy right out of the box (fresh install) with just "Force superusers into DEVELOPMENT mode" setting activated. The slowdown is more or less noticeable on all admin pages, "modules" was just a concrete example. But I do have to say I have some custom modules included in this project, so I will report back after I have done a vanilla install elsewhere and tested again. Thank you.

  • Like 1

Share this post


Link to post
Share on other sites

Hi all - I've just committed a pretty major update to the Console and File Editor panels.

1) Adds all ACE editor themes with a config setting to choose the theme

2) Options to set the font size and line height

image.thumb.png.aa77e828a0857a90ab31868539e7b8cd.png

3) I have refactored the sizing of various divs in both these panels that should solve lots of minor layout bugs especially when resizing the panels. *Be sure to do a hard reload to get the latest CSS/JS files.

4) Updated the core SplitJS library which now adds support for dragging by fixed increments which lock to the code line height - before I was hacking this on and it wasn't anywhere near as nice.

VSqyNf00vy.gif.1bbab998f2bba17ee4069a98ac12ef9a.gif

5) Various bug fixes for the keyboard shortcuts for resizing the console panes.

 

Also, just a quick note to say that this version doesn't yet include the PW variables code completion. That will come in the next version. I am on a semi-vacation at the moment so haven't had any dedicated blocks of time to get that quite as I want yet.

Please let me know how this new version goes for you!

  • Like 6

Share this post


Link to post
Share on other sites

Here's a preview of the new API Explorer panel I hinted at earlier.

You'll notice a lot of similarities with the Captain Hook Panel with everything ordered alphabetically, and with toggling to open/close the DocComment text and direct links to open the appropriate file to the first line of the method in your code editor which I hope will be a useful learning tool because often the methods for an object are inherited from a parent class and so are not necessarily in the file you might expect. This will make finding the source of these methods really quick and easy.

The link in the first column of the table opens the API ref docs on the PW site or using Ryan's API Explorer module (if you have that installed).

Also note that conditional parameters for the methods are italicized

I'll probably commit the first version of this tomorrow, but I'd love to hear any initial feedback from these screenshots - other than comments on the awful icon 🙂 (unless you have a suggestion for a better one).

image.png.822109d3730d46158cff71b6d0f2450e.png

image.png.69bbac723692b242ad6faad4b5c34957.png

image.thumb.png.3b6c637f473caa81ccfed8a721f6d568.png

 

 

  • Like 5
  • Thanks 1

Share this post


Link to post
Share on other sites
4 hours ago, adrian said:

... the awful icon 🙂 (unless you have a suggestion for a better one)

Maybe something like this:

 

Tracy-API-Logo.png

Share this post


Link to post
Share on other sites

Thanks @ottogal - I'll have a play with something where the API text is bigger (as you have it), or go with something simpler. Not too important 🙂

Anyone have any thoughts on having the description of the doc comment in its own column for quick reference? Of course you can still expand to get the full comment text. I think this is probably quite useful - anyone think otherwise?

image.thumb.png.dcf9e49b827b8df33a05368d6371a860.png

  • Like 2

Share this post


Link to post
Share on other sites

@adrian Thank you for the latest additions and your continous great work on this essential module.

I can't wait for the API explorer panel. This is great and would save me a lot of time going to ProcessWires API reference page and look for what I am searching.

One thing that would be extremely useful would be a find-as-you-type-filter, to find what you are looking for quickly, similar to AdminOnSteroids filter function for AdminDataTables or modules.

  • Like 2

Share this post


Link to post
Share on other sites
7 hours ago, jmartsch said:

One thing that would be extremely useful would be a find-as-you-type-filter, to find what you are looking for quickly, similar to AdminOnSteroids filter function for AdminDataTables or modules.

I agree that would be nice - perhaps in a future version and maybe using @tpr's FilterBox Utility - for now, the best option is browsing and Toggle All and then CTRL+F to use your browser find in page functionality.

The first version of the API Explorer is now available and includes some config settings for determining what is shown in the tables for each object/class's method. The default is to show the "description" column and not to have the full doc comment block toggleable. This results in much smaller sizes for these panels and of course if you have your code editor links configured properly you can always click the line number to go to the method and read the doc comment that way.

image.thumb.png.6f664e3a2411ecf7d96790ee4c652175.png

Also, since the previews posted yesterday, the API Explorer now also includes Core Classes (as well as API variables) so you have access to things like wireArray and Pageimage methods.

It also now displays all properties for each object/class which is especially useful for $page

5cEabXSbY9.thumb.gif.2e8912108dbb319df4b3c20039ebfa0b.gif

Please take this for a spin and give me your feedback. I will most certainly be tweaking it myself lots over the next few days, but I'd still love your inout to guide my decisions.

  • Like 3

Share this post


Link to post
Share on other sites

Thanks for this, very cool! When you toggle all and then try to collapse one object/class by clicking on the down arrow, the first click doesn't collapse, had to click it again.

Nothing to do with Tracy, but I noticed that some paths in $config are different, like $config->paths:

ProcessWire\Paths #3457
_root protected => "C:/inetpub/wwwroot/" (19)
data protected => array (206)
wire => "wire/" (5)
site => "site/" (5)
modules => "wire/modules/" (13)
...
fieldTemplates => "site/templates/fields/" (22)
adminTemplates => "C:/inetpub/wwwroot/wire/modules/AdminTheme/AdminThemeDefault/" (61)
sessions => "C:/inetpub/wwwroot/site/assets/sessions/" (40)

and $config->urls

ProcessWire\Paths #cc50
_root protected => "/"
data protected => array (206)
wire => "wire/" (5)
site => "site/" (5)
modules => "wire/modules/" (13)
...
adminTemplates => "/wire/modules/AdminTheme/AdminThemeDefault/" (43)
AdminThemeDefault => "wire/modules/AdminTheme/AdminThemeDefault/" (42)

(adminTemplates has the slash at the beginning). Is this how it should be?

  • Like 1

Share this post


Link to post
Share on other sites
21 minutes ago, matjazp said:

When you toggle all and then try to collapse one object/class by clicking on the down arrow, the first click doesn't collapse, had to click it again.

That is currently expected - same as with the Captain Hook panel. It's because of the way I am showing all because actually triggering the toggle on each element is too slow. I'll keep it in mind to improve if I can though.

Not sure about the paths/urls stuff - do you think those are things that need Ryan's attention?

Share this post


Link to post
Share on other sites

I don't know if Ryan need to know that. It seems there are no (known?) side effects with this paths, maybe there could be an issue with adminTemplates if PW is running in subdirectory? Ryan is busy, don't won't to bother him. And there are other issues that need his attention...

Share this post


Link to post
Share on other sites

New version just committed which revises the output for object properties - now runtime properties are more accurately collected and the description is displayed (rather than the value). I think this is more inline with what this panel is about. I think if you want values you can get them easily via the Console panel - I am actually thinking about a link from the property to open the Console panel with the $object->property wrapped in a d() call, eg:

d($page->createdUser); 

to make it even quicker/easier. Any thoughts on whether you'd use this?

Please keep the feedback coming.

Share this post


Link to post
Share on other sites

Thx adrian,

I still have the bug on the AOS language switcher z-index. Any news on this?

FQxXCJD.png

On the config var the description column is very large, leading to a horizontal scrollbar. Maybe it would make sense to use text-overflow: ellipsis; here?

Is it intended that the links to the api ref opens in the same window? I know we can middle-click, but I wonder if it was better to open it in a new tab by default?

52 minutes ago, adrian said:

I am actually thinking about a link from the property to open the Console panel with the $object->property wrapped in a d() call, eg:

Sorry, I don't get what you are talking about 😇

  • Like 1

Share this post


Link to post
Share on other sites

Thank you for building the API Explorer.  I just checked it out and looks very helpful indeed.

Clicking the line number even opens the file directly in my VSCode editor.  Nice!

2 hours ago, adrian said:

I am actually thinking about a link from the property to open the Console panel with the $object->property wrapped in a d() call, eg:


d($page->createdUser); 

to make it even quicker/easier. Any thoughts on whether you'd use this?

 

This sounds good to me.

  • Like 1

Share this post


Link to post
Share on other sites

How about adding a full screen button to the API Explorer panel?  Like it is with the Console panel.

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Robin S
      Another little admin helper module...
      Template Field Widths
      Adds a "Field widths" field to Edit Template that allows you to quickly set the widths of inputfields in the template.

      Why?
      When setting up a new template or trying out different field layouts I find it a bit slow and tedious to have to open each field individually in a modal just to set the width. This module speeds up the process.
      Installation
      Install the Template Field Widths module.
      Config options
      You can set the default presentation of the "Field widths" field to collapsed or open. You can choose Name or Label as the primary identifier shown for the field. The unchosen alternative will become the title attribute shown on hover. You can choose to show the original field width next to the template context field width.  
      https://github.com/Toutouwai/TemplateFieldWidths
      https://modules.processwire.com/modules/template-field-widths/
    • By horst
      Croppable Image 3
      for PW 3.0.20+
      Module Version 1.1.16
      Sponsored by http://dreikon.de/, many thanks Timo & Niko!
      You can get it in the modules directory!
      Please refer to the readme on github for instructions.
       
      -------------------------------------------------------------------------
       
      Updating from prior versions:
       
      Updating from Croppable Image 3 with versions prior to 1.1.7, please do this as a one time step:
      In the PW Admin, go to side -> modules -> new, use "install via ClassName" and use CroppableImage3 for the Module Class Name. This will update your existing CroppableImage3 module sub directory, even if it is called a new install. After that, the module will be recogniced by the PW updater module, what makes it a lot easier on further updates.
      -------------------------------------------------------------------------
       
      For updating from the legacy Thumbnail / CropImage to CroppableImage3 read on here.
       
      -------------------------------------------------------------------------
       
    • By MoritzLost
      UPDATE: I have published a stable version of this module!
      Discussion thread:
      Github: https://github.com/MoritzLost/TextformatterPageTitleLinks
      ---
      Hello there,
      I'm working on a tiny textformatter module that searches the text for titles of other pages on your site and creates hyperlinks to them. I'm not sure if something like this exists already, but I haven't found anything in the module directory, so I wrote my own solution 🙂
      It's not properly tested yet and is still missing some functionality I would like to implement, so at the moment it should be considered in BETA. Features include limiting the pages that will get searched by template, and adding a custom CSS class to the generated hyperlinks. As I'm writing this I noticed that it will probably include unpublished and hidden pages at the moment, so yeah ... it's still in development alright 😅
      You can download the module from Github:
      https://github.com/MoritzLost/TextformatterPageTitleLinks
      There's some more information in the readme as well.
      Anyway, let me know what you think! I'm happy about any feedback, possible improvements or ideas on how to improve the module. Cheers.
    • By blad
      Hi guys!
      I just uploaded a module to explore files based on elFinder. By default it will show the "Files" folder.
      Screenshots:

      Video:
       
      To do:
       More options To fix:
       The function of rotating or scaling an image fails  Image editors V 1.01 (view issue)
      Fixed the bug working with the Multi-Language support ( translation of folders ). Fixed the name of elfinder.en  Github:
      https://github.com/LuisSantiago/ProcessElFinder/
      I hope you like it.
    • By BitPoet
      I'm really in love with FormBuilder, but the one thing missing to match all my end users' expectations were repeatable field groups. Think repeaters, in ProcessWire terms. Our primary application of PW is our corporate intranet, so "lines" of fields are quite common in the forms I build. We have all kinds of request forms where the information for a varying number of colleagues needs to be entered (from meal order to flight booking request) and where it is simply impractical to send a form for each, and I don't want to clutter my forms with multiple instances of fields that may only get used ten percent of the time.
      That's why I started to build FormBuilderMultiplier (link to GitHub).
      What it does:
      Adds an option to make a regular Fieldgroup repeatable Lets you limit the number of instances of a Fieldgroup on the form Adds an "Add row" button the form that adds another instance of the Fieldgroup's fields Adds a counter suffix at the end of every affected field's label Stores the entered values just like regular fields Makes the entered values available in preview and email notifications Supports most text based fields, textareas and selects (really, I haven't had enough time to test all the available choices yet) What it doesn't do (yet):
      Support saving to ProcessWire pages (i.e. real Repeaters) I haven't tested all the validation stuff, Date/Time inputs etc. yet, but since I'm utterly swamped with other stuff at work, I didn't want to wait until I have it polished. Any feedback is welcome. There might also be some issues with different output frameworks that I haven't encountered yet. The forms I work with mostly use UIKit.
      Status:
      Still alpha, so test well before using it in the field.
      Known issues:
      When rows are added, the form's iframe needs to be resized, which isn't completely clean yet.
      How it works:
      The Fieldgroup settings are added through regular hooks, as is the logic that adds the necessary field copies for processing the form and displaying previews.
      "Multiplied" field instances are suffixed with _NUM, where NUM is an incremental integer starting from 1. So if you have add two fields named "surname" and "givenname" to a fieldgroup and check the "multiply" checkbox, the form will initially have "surname_1" and "givenname_1" field (I'm still considering changing that to make the risk to shoot oneself into the foot by having a regular "surname_1" field somewhere else in the form less likely).
      When a "row" is added, the first row is cloned through JS and the counter in the fields' IDs, names and "for" attributes as well as the counter in the label are incremented before appending the copies to the Fieldset container in the form.
      To keep backend and frontend in sync, a hidden field named [name of the fieldset]__multiplier_rows is added to the form. Both the backend and the frontend script use this to store and retrieve the number of "rows".
      ToDo:
      Naturally, add the option to store the data in real repeaters when saving to pages. Do a lot of testing (and likely fixing). Make a few things (like the "Add row" button label etc.) configurable in field(set) context. Add a smooth API to retrieve the multiplied values as WireArrays. The mandatory moving screenshot: