I have recently explored the Canvas feature, and I'd like to start by discussing its pros. I'm optimistic that the list of pros will be longer than the cons. Finally, we can create a front end that looks and feels current. While I appreciate the scalability of Creator, I've always been dissatisfied with its user interface. Fortunately, Canvas did not fall short in providing that desired experience.
For those of you like me don't worry there are pictures at the end lol
I have been using Creator for the last 5 years or so and have possibly pushed its limits in every way possible.
I initiated this post to give some insight into what I was able to do with the app and to explain workarounds I had used when the app fell short.
I will start by saying When building an app that involves using a canvas file, you'll need to rethink your approach. Each form will have a few hidden cells, to serve as local variables.
The elements are quite impressive and allow you to create almost anything you can imagine. Additionally, by linking data to the report via a lookup cell, you can harness the full power of the database.
I should mention that I was able to complete this application in approximately 60-80 hours. Most of my basic forms were already in place, but I did need to rework almost everything. However, when considering the time it would take to do the same in Vue.js or React, it would likely take me months.
In the past, I've linked forms by storing each other's IDs and writing a script triggered on success to open the parent form or the child form depending on the status.
I continued to use this formatting here
Since Creator does not allow you to have a URL that will open a report with the detailed view of a record open I was forced to use the record-summary command to keep consistent I set this to fire on-click of a record
“/<adminUserName>/<appName>record-summary/<reportName>/”+input.ID
This opens the canvas in full-screen
I set up a back button with a link to the report for easy navigation. This part was relatively straightforward.
As I delved deeper and began working with tabs, I realized I could now display all the data for a project in one place. For us, this includes quotes, tasks, audits (work orders), documents, purchase orders, images, and change orders.
This meant that I needed to reference each of these documents in my primary document, which, in my case, is the 'Create Project' document. After all, you can't really start a project until you've titled it somewhere. In the past, I've always linked my project document to other forms. I typically write a for loop to display all the related form data in an HTML table. I write this to a rich text field for record templates and a notes field to display in the form. If you'd like to see more on that, I'd be happy to share some samples. I was able to reuse this workflow in the Canvas file, and it worked quite well.
The challenge here was that I now needed to create this script for every form that contains multiple lines or subforms to generate an HTML table that can be displayed on a tab in my Canvas.
The next major hurdle I had to overcome was that, while I could display data from any form with a lookup field mapped to my parent form, there was no way to open and edit it. I created a workaround, although it's certainly not ideal. So, every time I add a lookup field to a form to map it to my parent form, I add two other fields. I keep these in the hidden section of my forms (except for tasks, but we'll discuss that later). I add a single line for viewControl, and I add a rich text field for an editButton. below is the script I run on-success. The canvas will not display a HTML button but you can dress the text to look like a button and the link works. I found this odd because it will display an HTML Progress bar Maybe the Canvas team can shed some light on this for us You will see a sample of the Dressed Edit text and the progress bar displayed in the screenshots attached.
settings = Settings[Company_Settings == true];
input.editButton = "<button><a target=\"_blank\" href=\""+ settings.applink +"form-perma/New_PO?recLinkID=" + input.ID + "&viewLinkName=PO_Status&zc_Header=false&viewControl=taskEdit&refID=" + input.ID + "\">EDIT</a></button>";
if(input.viewControl == "taskEdit")
{
input.viewControl = "";
openUrl(settings.applink + "record-summary/WorkShop/" + input.Select_Project.ID,"same window");
}
"Settings" is a form I use to store all my global variables I do the same for style sheets which I have posted here somewhere before
The last major hurdle I encountered was more of a glitch, but it cost me half a day of work.
I keep lookup fields in various related forms, and it became especially problematic in my task form. Our task form is also available within the project form as a subform. This way, any project-related tasks are stored in the main project form, but users can filter a list of their tasks from the task report and see all their tasks without having to look up each project individually.
In a meeting today, we assigned a task to a staff member that pertained to three projects. So, later in the day, I added a lookup field set as multiselect so that, in a task, it could be mapped to more than one project. This action caused the Canvas platform to crash COMPLETELY GONE!!! I was sweating bullets, after an hour with technical support I (or we) concluded that it was lost. Luckily, I still had a version open in a browser, and it was stored in the browser's memory. Although I couldn't copy it, I could export it. The export function isn't ideal, but it provides the basic structure, serving as a starting point.
Of course, when I was working on the task part of my Canvas, I encountered the same issue. It was then that I realized I had to delete one of the fields. Once I removed the subform reference, the entire file came back.
As promised, I said I would mention the cons.
Overall, I'm quite pleased with the Canvas feature in the Creator app, but it still has a few miles to go before it can be considered prime time. It's undoubtedly moving in the right direction and holds the potential to become a disruptive technology once a few simple oversights have been addressed.
The interface is incredibly clumsy, making it quite challenging to select elements without inadvertently affecting surrounding elements. Every time you accidentally drag an element (which happens quite frequently), it disrupts the layering. Predicting margins and spacing is also a challenge, and consistency is lacking. While these issues aren't showstoppers, they are definitely nuisances. Additionally, there's no way to change the view name of a reference form, only the text color, and overlay text, which brings us back to the layering issue.
Some of the more critical issues include:
Inability to Create Buttons in Lists: This limitation requires a workaround using rich text fields for button functionality, which is not ideal.
Inability to Maintain Tab Focus: When working within a tab (e.g., 'Tasks') and opening a task for editing, the application doesn't return to the same tab. The workaround involves having a report with each tab in the first position and recalling it, but it's inefficient, and it often requires a significant amount of time for each form.
Inability to Create Buttons for Function Execution: This limitation is significant, as it forces users to go through multiple steps to change something as simple as the status of a task, which can be frustrating. For instance, changing a task's status from 'In Progress' to 'Complete' requires the user to open the form, make the change, save it, and then navigate back to the tab they were working on. This additional complexity is a notable drawback.
Inability to cut and paste: if you are happy with your element after 2 hours of fussing with it and you want it elsewhere you get the joy of doing it again.
Export is limited: The export feature does not export the report as built but only the framework
In conclusion, the Canvas feature within the Creator app offers promising functionality but still faces some notable challenges. While it shows great potential and is moving in the right direction, there are aspects that need improvement to make it a more seamless and efficient tool. Issues with the interface, difficulty in managing elements, and limitations like the inability to create buttons in lists or maintain tab focus can be nuisances for users. However, with some refinements and fixes to these shortcomings, Canvas could become a disruptive technology. Despite these challenges, it's evident that with a bit of work, it can offer a more user-friendly and versatile experience, empowering users to harness its full potential.
I have included some of the images of the canvas I have been working on for the last week and a bit, it is not complete but close enough to get the point across. of course, the data is all moc
If you like this post Comment and maybe I can do another one from time to time
Writer is a powerful online word processor, designed for collaborative work.