Where should user input be validated: GUI and/or API? - api

I have a dialog widget with line edits for the user to input necessary data. When OK button is pressed, I call some API to perform necessary action based on inputs. This API that I call can also be called independently of the dialog, i.e. from command line.
Now, in my dialog code, before calling the API, I validate the user input and pop up a message box in case of any error. But, since the API can be called independently, I perform this validation in the API too.
This smells like trouble. What is the correct way to do this?

Related

Check some field before opening confirmation box in ODOO

I want to check that if some fields in the form view has been checked or not. If they have been checked then show a confirmation message and if not then a error message saying that those fields must be checked. For this functionality I have created a button which calls a specific function in the model. The button has also attribute confirm which enables the confirmation pop up box. But all the time it first opens the confirmation message and then the checking for the fields. I want to have the other way around how to achieve this. Please help.

When calling a Lotusscript agent from a button on the web, how can I add a spinner so that until the agent is done the user knows it is processing?

I have a Lotusscript agent behind a submit button that takes a while to do everything....the user needs to know it is processing so that they do not click the button multiple times.
Am using #Command([RunAgent];"agentname") to kick the agent off.
How in Lotusscript could I add some kind of 'processing' indication, either a progress bar or a spinner or something? I suppose I could embed some javascript inside the lotusscript, but hoping someone has a clean example or some tips to do this.
Maybe hiding the submit button at the same time if I use javascript via a display property on a surrounding the button would help too.
You can't do this with LotusScript coding, and while hiding the Submit button is a good idea, you're going to have to know when to unhide it. A simple #Command([RunAgent]...) call won't give you a way to do that.
You're going to have to redesign your form to include a significant amount of JavaScript and make an AJAX-style call to invoke your agent asynchronously via a ?OpenAgent URL sent in a POST request via XMLHttpRequest. Your main JavaScript code will continue after the call and launch the spinner, and the callback that you set up to handle the asynch return from the XMLHttpRequest can then either transition to a new page or stop the spinner by setting a variable that the spinner is checking once every second or two.

Vue.js Should you emit data from popup back to the main window?

I and my co-workers can't seem to agree on what the best practice should be when it comes to Vue and popups.
The question is as follows:
You are on the main window, you get the data from the backend using REST API and you notice an error. To fix it, you go to an edit popup and after hitting save what should happen?
Should you call the API from the popup?
Emit the changed data and let the main window call the API?
...
This is very interesting question but I think the truth depends on your whole architecture, implementation and approaches you use.
Say, if you worry about the "separation of concern" you wouldn't give a popup any access to API because its work is to show you some data as a popup, return data, and that's it.
On the other hand, how are you handling errors? What if an error occurs when user works in popup? Where do you show error?
Another question is the usability. For example, if error occurs when you save data, if it's done by the main window, you are going to:
Show the error message
Make user to click some button again to show the popup
Fix a problem and click the Save button in it.
But if you would access API right from popup you would avoid first 2 steps. Another concern is how you handle wrong data.
If you are still in the popup you easily can validate the data and cancel saving (or disable this button at all) but if it's done after the popup is closed it may be too late.

Attach javascript confirmation dialog to a linkButton/form in Repeater ItemCommand

I have a repeater and in its ItemCommand code, I need to do a database check if some records deleted and if yes, ask if the user wants to continue. Something like this
If e.CommandName="Clone" Then
'Do the database check to see if records deleted and if yes
'show a confirmation dialog and if user answers "yes" continue, if "no" stop
End If
The command "Clone" is coming from a LinkButton. Also, I want to do this in ItemCommand instead of ItemCreated or DataBound because I do not want the check to be added for every record. It only executes when I click the Linkbutton
Is this possible? Thanks.
You could do this a couple of ways.
One way would be to instead of doing a full post back when the link button is clicked make an ajax call to the server to see if the record is deleted. Then you could display the javascript confirmation dialog after the ajax request is complete. If the user answers 'yes' then you could make another ajax request or trigger a full postback via __doPostBack to a clone event handler with the appropriate arguments.
Here is a simple way to make an ajax call: Calling a webmethod with jquery in asp.net webforms
An alternative method would be to do the initial full post back to the server, do the database check, and then return some javascript to the client which would cause the confirmation messsage to display. Then you would handle the result of the confirmation via javascript and do an ajax/full post back as necessary to perform the clone.
gl

QInputDialog like thing in Cocoa/Xcode?

I'm fairly new to Xcode and Cocoa/Objective-C and I'm trying to implement something as simple as a QInputDialog that can be re-used throughout the program - with a unique message to the user each time it is launched and return a string as a result.
I have searched the web and found multiple methods but nothing seems to be quite clear or concise - well enough for me to understand anyway.
Is there anything out there as simple as:
Create/Launch a window from a method with a new message label to the user in the form of a string.
Has an NSTextField to receive the users input.
Close the window and return the string from the text field (if accepted) to the calling method.
??
Modal prompts for input are very un-Mac-like. It's like smashing the user's face in with a cricket bat and yelling “TELL ME THE ANSWER NOW!”
The correct solution is to put your text field into a non-modal window, so that the value is already ready when the user invokes whatever action needs the value. Beep and show the “hey, you forgot this” icon if the user hasn't filled in the field and you need a value there. If the field is not relevant in the window the user starts the action from, or if you're going to need several facts as input, then show another window, non-modally, with its own window controller, to take in all the input you'll need for the action.
A separate, non-modal window will also enable the user to fill out and/or perform multiple such actions in parallel.
If you must demand the value with a modal dialog, you can and should make it a sheet, but you'll still need to build the panel and its contents from scratch in IB or code.
See also the Sheet Programming Guide and the chapter on windows in the Human Interface Guidelines.