Propose your fantastic ideas regarding the Thinkwise Platform to our Product Team.
I found 2 problems with the tsf_user function;If I use the function as DBA (with a direct login to the database) the function gives a guid. The function can confuse the SQL-Server query optimizer with the result that the function gets executed multiple times.As a workaround I replaced the function by a view, which checks if the CONTEXT_INFO value isn’t a GUID, and an additional check whether the user returned is actually present in our user table.I did not investigate what it would do with the performance when I made the function schema bound, but the view is much faster… and I think that making the function schema bound might give the same result. ( It would not bind to anything, but SQL-Server might understand that there is no need to evaluate the function more then once ).
This idea came into existence from this idea: Just like user-defined prefilters, I’d like to see user-defined/persistent pinned columns. This could be setup the same way as how user-defined prefilters are setup; in the User Preference in IAM.Currently when a user sets pinned columns on a table/view, this will not be remembered and the next time the user opens the table/view, the user will not see the column pinned anymore. This is by design, however I’d like the option to keep them 😁
When you are working towards a release of your application there are a few things you need to check/set up. Most of these steps are included in the deployment screen of the Software Factory. However, the data migration screen is currently missing from this.This should either be included in the Creation menu group or even better be included in the deployment pages/steps. Currently this step is often forgotten/missed resulting in deployment issues.This also applies to the New objects screen, please also see this idea:
Automatic data migration between branches when renaming tables / columns | Thinkwise Community (thinkwisesoftware.com)This comment is very true, however not every upgrade has relevant data migration information. And since it is a separate screen apart from the creation proces, it is easily overlooked.Therefore I suggest to include the data migration screen as a tab in the creation screen (before or after the validations). It could be disabled/hidden when there is nothing relevant to show (for example only new tables/columns that are not mandatory), or a badge could indicate the number of rows with relevant actions worth checking.
When you are working towards a release of your application there are a few things you need to check/set up. Most of these steps are included in the deployment screen of the Software Factory. However, the “New objects” screen, meant for configurating roles based on model changes, is currently missing from this.In the 2025.1 release this screen will be improved and included in the menu group Creation. However, this new screen should be included in the deployment pages/steps. Currently this step is often forgotten/missed resulting in deployment issues.This also applies to the Data migration screen, please also see this idea:
To enable end users to work more efficiently in applications, tool tips can make an important contribution.Such functionality is already available in the scheduler, but this would also be a valuable feature for grids, forms and card lists.For example, full information of an asset can be given, while the only the code of an asset is shown in a maintenance list. A shortcut/link to the asset screen could be part of the tooltip.Simply put, I would like to capture in the column definition the name of a function that returns an HTML output that will be displayed as ToolTip if the cursor is on the field for more than 2 or 3 seconds. By on-demand executing the tooltip function, filling grids and forms can remain fast.Input parameters of the ToolTip function:tab_idvariant_idcol_idrow_id (= PK field values of selected row)
I think in applications made with Thinkwise that are all about data and information, a hover popup like in the community could really help reduce clicking and give more instant information from a main subject. So I hover over a contract title for example and I can see a brief summary. Or even to have the choice to model if a popup should be clicked or auto open upon hovering your mouse over the subject. I see many opportunities, with read only fields that link to more information.
Story:As a SF developer I want it to be easier to assign upgrade scripts to my upgrade. The system should tell me what my source- and target model version is and display any available upgrade scripts for the timeframe I am in. Additionally, I want the system to suggest upgrade script assignments to me if there have been other script assignments with intermediate upgrades.Problem:When developing in branches and in DTAP environments, the Dev environment (nearly) always has a different release cycle than Test, Acc, and Prod. The Develop branch/environment receives way more intermediate upgrades before the model version is merged back to Release, or Main. With these intermediate upgrades sometimes upgrade scripts are required (usually for more advanced data migration).Currently, the SF allows the developers to add an upgrade script for all upcoming upgrades, or to one specific upgrade (from-model version X, to-model version Y). These data migration scripts are usually only required once, so adding to a specific version is the most logical thing to do, but this functionality is hidden very deep in the menu, requires multiple steps and screens and is therefore not user-friendly.However, when later upgrading the Test environment with the Release branch, you want the upgrade script to be run again. The problem is that this is a different upgrade (the from-model version is older, and the to-model version is newer) and thus the assignment of the data migration upgrade script is not accounted for, and skipped. This problem re-occurs with an even larger time gap when upgrading the Production environment using the Main branch.If not paying close attention to what is happening, or triple checking all from- and to-model versions and script assignments, the data can become a mess or even corrupt and the only way to solve that is by restoring a backup of your database after the upgrade has failed.Possible solution:Add an additional detail tab to the data migration screen, that shows all assigned upgrade scripts to intermediate model versions, and allows the user to include, exclude, or modify the upgrade scripts (or deeplink to functionality to edit). So that it is clear what scripts are included in your currently generated application upgrade. This creates a much more user-friendly way in managing your upgrade scripts and prevents accidental (un)assignments that can have unwanted consequences.
In 2024.2.14.x you could select all rows and copy it (to Excel e.g.) with Ctrl+A, Ctrl+CBut it was not possible to copy one propertyIn 2024.3.10.0 you can now copy one property, but Ctrl+A, Ctrl+C now also copies only one element.And of course, it should also be possible to copy part of the text of a cellMost of our users use Chrome, but that is actually irrelevant. Should work for all browsers.
When in the live error log I sometimes like to go back a page by using the back button on screen. However when I click the front end button it opens the actual application, not the Indicium overview, which is confusing and irritating. My idea is to let the back button actually go back to the Indicium overview (with log, live log, user sim… etc..)
Hi, we were wondering if it is possible to automatically add info to a datefield as we're filling the field in. For example, let's say I want to create an order for the 7th of november. If I type in 7 and press enter it should automatically set it as the 07-11-2024. If I were to create an order for the 3th of december, I should type a 3, press enter, and it should recognize that the next time a date has a 3 is in December, because 3 November is in the past. All other dates further in the future can be fully typed out. Is it possible to do something like this in Thinkwise?
Hello everyone! In our software we have a double column for certain columns, one column for database purposes only, and a column that uses that database column to display the value in the correct manner. For instance with length, it could be so that one of our customers displays the column in millimeters, and the other in inches.We support the export functionality as well, if a customer wants to export their data to an Excel sheet, the following screen pops up: The length column, and the width column under it (which was just outside of the screenshot) are double. But the checked out columns are hidden in the data model. Why aren't they hidden here, but just checked out? I've posted a question about this before, but then the checkboxes were checked by default. This is not convenient either, this could cause confusion for the eventual user. Wouldn't it be better if the columns, that are hidden in the data model, are not displayed in this screen at all? What is the use of hidden columns if they pop up here for everyone to see? There might be columns purely for the database purposes in here (in this case a single truth for the length value, the database specific field is used as the 'truthful’ data and is converted for display in the display field the customer sees).
I'd like to be able to perform a Code search in the SF using multiple search strings, instead of the one string we currently provide. I'd also like to specify if the search should match all (AND) or match any (OR) of the conditions.Example 1:Search for code that contains “model_id” AND “branch_id”.Example 2:Search for code that contains “status = ‘planned’” OR “status = ‘in_progress’”
To simplify the creation of custom endpoints in the software factory, I have the following idea:Imagine how convenient it would be to model endpoints easily.For example, suppose you want to provide an interface to your CRM application for third-party tools. To achieve this, you need a way to view and manage certain entities like relationships and customers within the system.Let’s consider a /customer endpoint where we can perform a few operations:GET → Retrieve a list of customers, with an option to pass a customer_id as a query string. PUT → Add a new customer. DELETE → Remove a customer. UPDATE → Modify a customer's details.The GET operation would return a text in the body of the response with a 200 HTTP status code. For this, I propose creating a procedure that takes customer_id as a parameter. (Side note: I am aware that query strings are not type-casted. Therefore, if a customer_id is provided, the service layer should validate whether it can be cast to the appropriate data type, in this case, an integer.)GET ExampleHere is a pseudo-code example for the endpoint:create procedure dbo.api_get_customer( @qs_customer_id int -- QS stands for QueryString, explanation follows in the PUT section. ,@request_body nvarchar(max) ,@request_header nvarchar(max) ,@response_code int output ,@response_body nvarchar(max) output ,@response_header nvarchar(max) output)asbegin set @response_code = 200 set @response_body = 'Lorem Ipsum is simply dummy text of the printing'end You can output the body in JSON, XML, or any preferred format.PUT ExampleFor PUT operations, it would be helpful to specify that the endpoint expects a multipart form, which can be interpreted as variables in the subroutine.To achieve this, you would define the parameters/fields expected in the form along with their data types. For example, we could expect a name as a varchar and logo_photo as a varbinary.create procedure dbo.api_put_customer( @mf_name varchar(255) -- Specified through the domain system in the software factory ,@mf_logo varbinary(max) ,@request_body nvarchar(max) ,@request_header nvarchar(max) ,@response_code int output ,@response_body nvarchar(max) output ,@response_header nvarchar(max) output)asbegin set @response_code = 200 set @response_body = 'Lorem Ipsum is simply dummy text of the printing'endPAT TokensTo integrate this concept, we can enable the created interfaces in the PAT (Personal Access Token) list. We could add a checkbox to specify which methods should be available through the PAT system. Swagger UITo facilitate developers interfacing with the newly created endpoints, we could provide two versions of the OpenAPI/metadata specification: one with the endpoints and another with universal endpoints. This would allow for straightforward integration with Swagger UI. What does this solve?Well currently you can make open api’s via processflows. But you need to model a processflow, then create a process procedure that handles the calls. And You need to think of everything to for example receive data as multipart forms, querystring data you need to split out of the routings e.t.c. It normally takes allot of code to make a simple webservice/api endpoint.
When creating a scatter plot, I want the x-axis and y-axis to be the average of the two variables. However, variables can change over time. Therefore, it would be very nice to have the possibility to create dynamic x-axis and y-axis in Thinkwise cubes.
I have created an idea for the visualization of a scatter plot within Thinkwise. If you support this idea, please upvote. Below you can find an example.
In an end product of the customer, the customer would like to create a PDF from an uploaded DOCX. I have now solved this by creating a process flow with an HTTP connector that creates a PDF blob file by using the previewer functionality (/iam/appl/{table}({key})/appl.preview_{file_column}). Is it possible to create a ‘Create PDF’ process flow action. Now it is quite some work to get this done.
When a user changes the sorting of a grid to a different column, it is usually because the users wants to find the rows with the highest or lowest value of the sorted column. When you have a grid with multiple pages in the Universal GUI, the current behaviour of the GUI leads to confusion/frustration because it automatically changes to the page the selected row is on after applying the sorting. Many times the selected row is somewhere halfway the page and thus the user scrolls up to find to the highest/lowest values of the sorting, but if the user didn't notice the pages changed it are not the actual first rows. Idea: When changing the sorting, select the first row of that sorting. Or at least make a config setting for this.
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.