FileMaker Needs Fat Bits

Years and years ago, when FileMaker 3.0 was the latest and greatest, I wrote a Gantt Chart function that used calc fields with container results. It's neither necessarily the most elegant nor best approach (I've seen other solutions of that vintage that used text calculations for example) but that's neither here nor there for purposes of this discussion. This is NOT about the best way to generate a Gantt chart. It's about close fine work on a FileMaker layout.

My little calc-container fields, which behaved as dots making up the colored lines representing a duration on the chart, were just five pixels wide. Each Body part on the layout had 120 of them, that were either "on" or "off", and each record had its own contrasting bar color. To place these tiny little fields precisely where I wanted them, I hit the "mountain range" zoom button and zoomed in to the max of 400 %.

FileMaker's Layout-mode zoom behaves just like its Browse-mode zoom, literally magnifying all of the elements to four times their real size -- active object resize handles, field names, field borders, the whole works. It's not ideal, but it's better than attempting fine placement at 100%. Here's what it looked like (this is actually from FileMaker 10, not FileMaker 3, but not much of the relevant GUI of layout mode object representation had changed):

[FileMaker 10 at 400 percent]FileMaker 10 at 400 Percent, handles

Fast forward a few years and I had reason to redeploy this function. Once again, never mind whether or not there's some better approach to making Gantt charts in FmPro, that's not the topic du jour. I killed off the container calc fields, instead putting just the simple container calc field for the chosen color of that record, over and over -- because in the modern world, I can control the "on" and "off" at the layout object level, moving the date calculations to the "visible when" function on the Inspector. Of course, that meant clicking on a lot of little layout elements, so once again I spent time zoomed in.

Now, you'd perhaps think that matters would have improved for fine layout work in FileMaker as newer versions have come out. You would be quite wrong. It's still a max zoom of 400%, and it still works by magnifying everything including object borders and field names and visual representations of attached functions and whatnot. And the visual representation for current selected object, including resize handles, has actually gotten WORSE:

FileMaker modern at 400 percent]FileMaker modern at 400 Percent, handles

Meanwhile, I had reason to improve the granularity of my solution for this particular client. I opted to double the number of container-field dots, from 120 to 240. This allows the capture of smaller intervals within the same overall time frame, as you can see from this comparison using some sample data:

[Multi interval Double Granularity]

The original version is at the top (120 FileMaker "pixels" per record-body); the new double-granular version is below it (240 "pixels" per record-body). It makes the difference between giving Zachary Taylor a visible representation for his one year, or not.

Well, these new fields are skinnier -- two pixels wide instead of five.

Older FileMaker or modern FileMaker, either way a field resized to 2 pixels represents itself as a black bar. The field borders take up so much room that there's no space to show the field's interior space, and zooming to 400 % just gives you a closeup view of that black bar:

[Double Granular in FileMaker 10]Double Granular in FmPro 10

These are the original fields after resizing. Now I duplicate them and offset the duplicates to fit them in between. I opted to leave them offset vertically by a notch because otherwise I'd be dealing with an uninterrupted blob of black!

[Double Granular in modern FmPro]Double Granular in modern FmPro

The FileMaker 19 visual cues for telling me these fields have a visibility formula are huge and klunky; the resize handles are awkward and confusing. It's all very user-hostile to work with, to deal with fine manipulation of small layout objects.

We need somethling like the Fat Bits function of the old MacPaint program. Are you from that era, do you recall? It would zoom you in to the graphic you were working on, but rather than simply magnify the normal 100% interface, it gave you reasonable sized tools like a pencil appropriate to the environment you were working in.

Suppose instead of 400% we could go to 1600 %, and instead of staring at field borders and other object borders that look like construction girders, with resize handles the size of pasteboard shipping boxes and so forth, we'd get a reasonable view of what we were trying to work on?

[Ideal close work layout view]Ideal close work layout view

That's what a 2-pixel wide field with a visibility formula COULD look like. That would be so much easier to use for fine work!

4 Likes

I don't have anything to add except, that gantt chart is amazing.

2 Likes

playing devils advocat:
who will need this in our shiny new webbased world, wouldn't want to get this rendered, do it in JS

thus I think a lot of things get neglected in FM-development by Claris

but: trying to edit in FM19 all the same perhaps the object table in layout mode does help, stacked layout objects can be edited far better while being selected there and using the inspector to do the work

2 Likes

Cool finally a use case to test an hypothesis of mine. Super cool Gant btw! I was working on one using repeating fields but I love how yours look.

Back to my hypothesis. It won’t solve the bits and zoom issue you pointed out. However it might give a different spacing calculation possibilities re borders. In the CSS of the objects style, borders style is border-box. I am going to play with this to see if we can escape the factoring of border in the object height and width. If so, that would bring new possibilities to portal design as well.

If there's a way to change the CSS that determines the borders of fields, I'd love to have a "click for click, keystroke for keystroke" recipe I could follow step for step to implement that and turn them completely off for a designated layout object :slight_smile:

I can't CSS my way out of the proverbial paper box but I've faked my way through others arcane dev code!