Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Editor for Time input

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Editor for Time input

    Hi,

    I've built an Editor for inputting times patterned after the provided Editor-DateSpinLists under Defined Controls. I want the Editor to capture a full datetime, though, not simply the time so I pass in an optional field name to the Editor using a simple text value in "settings" containing the name of the date field in the formview I want to use as default. If the setting (called "defaultDateField") is not set the Editor falls back to using the current date.

    Here's the code in the Editor's "Set value in editor" property:
    Code:
    var defDate;
    if (typeof settings['defaultDateField'] != 'undefined') {
    	defDate = settings.data[settings['defaultDateField']];
    } else {
    	d = new Date();
    	defDate = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
    }
    
    var hEle = {dialog.Object}.getPointer('CONTAINER_DATEFORTIME');
    hEle.innerHTML = defDate;
    
    var sHour = {dialog.object}.getControl("EDITORTIME_S_HOUR");
    var sMinute = {dialog.object}.getControl("EDITORTIME_S_MINUTE");
    var sAMPM = {dialog.object}.getControl("EDITORTIME_S_AMPM");
    
    sHour.refresh();
    sMinute.refresh();
    sAMPM.refresh();
    This works fine if I have a date field in my formview since I can reference the date value using the settings.data object (settings.data[settings['defaultDateField']]).

    However, i now need to reference a date value from a parent record. For example, I have a "Date Audited" field in an "Audit" record, and the formview I'm working with represents a child record of the "Audit" table. As a result I cannot simply reference a field in the formview to pass in my default date value.

    Finally, my question: is there a way to reference the parent table's data in the "Set value for editor" property? Or do I have to find that value using a javascript function to set the value for a "User defined editor and template settings" setting and pass it in to my Time Editor that way? I've tried to write a javascript function to do this unsuccessfully. Perhaps I'm not defining the javascript function and calling it in the Setting editor correctly. An example of such might help (the help provided in the settings definition editor says to use "Javascript:your_function_name" for the setting value but I had trouble getting the results I wanted this way).

    Any advice/help appreciated. Thanks!

    Here's the code in the Editor's "Get value from editor" property in case it's helpful for others trying to make the same kind of Editor:
    Code:
    var sHour = {dialog.object}.getControl("EDITORTIME_S_HOUR");
    var sMinute = {dialog.object}.getControl("EDITORTIME_S_MINUTE");
    var sAMPM = {dialog.object}.getControl("EDITORTIME_S_AMPM");
    
    var defDate;
    if (typeof settings['defaultDateField'] != 'undefined') {
    	defDate = settings.data[settings['defaultDateField']];
    } else {
    	d = new Date();
    	defDate = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
    }
    
    return defDate+'  '+sHour.value+':'+sMinute.value+' '+sAMPM.value;

    #2
    Re: Editor for Time input

    Hi,

    Since my question(s) got buried a bit in my previous post, here they are more clearly:

    1. The "settings.data" object contains the values for the fields in the formview. If I need to access the data values for the parent row in a parent list control for which the current formview is a child, can I do it from the "Set value in editor" property of an Editor?

    2. How can I acquire and pass the data value into an Editor by calling a javascript function in the Editor Settings property of a formview field? Any examples?

    Thanks.

    Comment


      #3
      Re: Editor for Time input

      Originally posted by dougeven View Post

      Here's the code in the Editor's "Set value in editor" property:
      Code:
      var defDate;
      if (typeof settings['defaultDateField'] != 'undefined') {
      	defDate = settings.data[settings['defaultDateField']];
      } else {
      	d = new Date();
      	defDate = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
      }
      
      var hEle = {dialog.Object}.getPointer('CONTAINER_DATEFORTIME');
      hEle.innerHTML = defDate;
      
      var sHour = {dialog.object}.getControl("EDITORTIME_S_HOUR");
      var sMinute = {dialog.object}.getControl("EDITORTIME_S_MINUTE");
      var sAMPM = {dialog.object}.getControl("EDITORTIME_S_AMPM");
      
      sHour.refresh();
      sMinute.refresh();
      sAMPM.refresh();
      This code (above) was incomplete. This works better:
      Code:
      var defDate;
      if (typeof settings['defaultDateField'] != 'undefined') {
      	defDate = settings.data[settings['defaultDateField']];
      } else {
      	d = new Date();
      	defDate = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
      }
      //alert('EDITORTIME Set Value in editor: ' + JSON.stringify(settings) + ' :: ' + defDate + ' :: ' + value);
      var hEle = {dialog.Object}.getPointer('CONTAINER_DATEFORTIME');
      hEle.innerHTML = defDate;
      
      var sHour = {dialog.object}.getControl("EDITORTIME_S_HOUR");
      var sMinute = {dialog.object}.getControl("EDITORTIME_S_MINUTE");
      var sAMPM = {dialog.object}.getControl("EDITORTIME_S_AMPM");
      
      d = new Date();
      d.fromFormat(value||"","MM/dd/yyyy  0h:0m AM"); // convert from the value
      sHour.refresh();
      sMinute.refresh();
      sAMPM.refresh();
      sHour.setValue(d.getHours());
      sMinute.setValue(d.getMinutes());
      sAMPM.setValue(d.toFormat("AM"));

      Comment


        #4
        Re: Editor for Time input

        Originally posted by dougeven View Post
        Hi,

        Since my question(s) got buried a bit in my previous post, here they are more clearly:

        1. The "settings.data" object contains the values for the fields in the formview. If I need to access the data values for the parent row in a parent list control for which the current formview is a child, can I do it from the "Set value in editor" property of an Editor?

        2. How can I acquire and pass the data value into an Editor by calling a javascript function in the Editor Settings property of a formview field? Any examples?

        Thanks.
        Hi Doug,

        You can reference the parent list using {dialog.object}.getValue to access data values in the parent row of the list control the formview is based on. For example:

        Code:
        var id = {dialog.object}.getValue('list::list1::RECORD_ID');
        If the list which is used as the data source for your FormView also has a parent list control, you can reference data in the current row in that parent list control the same way:

        Code:
        var parent_id = {dialog.object}.getValue('list::list1Parent::PARENTRECORD_ID');
        Both code examples above are javascript and can be used anywhere in your UX component that you can write javascript code. This includes "Set value in editor", "Show editor", "Hide editor", "Get value from editor", and "Validate editor". You can use them in javascript functions that are called from client-side templates, client-side show/hide expressions, functions called when setting the value for your Setting in User Defined Editor and Template settings in the FormView, etc.

        RE: Calling a Function for Editor Settings

        You have two options for calling javascript functions to define the Value for a setting. The easiest is to create a javascript function, defined in the Javascript Code section for the UX component, and call it using the Javascript: prefix. EG:

        Code:
        Javascript:generateMaxDate
        The javascript function can be defined in the Javascript Code section or in a javascript file loaded when the component is first launched.

        Alternatively, you can write the javascript directly as an anonymous function in the value box. An anonymous function can be used to create a setting that is a function or can be used to calculate the value of a setting.

        Setting as an Anonymous Function

        Assuming you created a setting called "maxDate" and defined it as an anonymous function as follows:
        Code:
        function:function(){
          var d = new Date();
          return d.getDate()+"-"+(d.getMonth()+1)+"-"+d.getFullYear();
        }
        This creates a setting called "maxDate" that is a function. You can reference it in the settings object like it was a method of settings. EG:

        Code:
        var maxDate = settings.maxDate();
        alert(maxDate);
        Setting Calculated using an Anonymouns Function

        You can execute the Anonymous function immediately by adding parentheses to the definition of the function in the Value property for the maxDate setting. This is effectively identical to defining a function in an external file or the Javascript Code section and using the "Javscript:myfunctionname" as the value definition:
        Code:
        function:function(){
          var d = new Date();
          return d.getDate()+"-"+(d.getMonth()+1)+"-"+d.getFullYear();
        }[B][COLOR="#FF0000"]()[/COLOR][/B]
        Referencing maxDate in the settings object doesn't require calling it as a function. You can treat is as a statically defined object.
        Code:
        var maxDate = settings.maxDate;
        alert(maxDate);
        Anonymous Function word of Caution

        I would like to point out that should you choose to put comments in your annonymous function definition, you should use the /* */ comment delimeters. Using the // comment style may cause unexpected problems.

        I hope this was helpful. Let me know if you have any additional questions!
        Sarah Mitchell
        Director of Customer Success | [URL="https://www.alphasoftware.com"]Alpha Software Corporation[/URL]
        [B]Get in the know! [/B] Join us for our Weekly Webinars: [URL="https://www.alphasoftware.com/weekly-transform-tuesday-webinar"]TransForm Tuesday[/URL] and [URL="https://www.alphasoftware.com/weekly-alpha-anywhere-overview-webinar"]Wednesday's Alpha Anywhere Demo and Q&A[/URL]
        Connect with us: [URL="https://www.instagram.com/alpha_software_corp/"]Instagram[/URL] | [URL="https://twitter.com/AlphaSoftware"]Twitter[/URL] | [URL="https://www.facebook.com/AlphaSoftware/"]Facebook[/URL] | [URL="https://www.linkedin.com/company/alpha-software"]LinkedIn[/URL] | [URL="https://www.youtube.com/user/AlphaSoftwareInc"]YouTube[/URL]

        Comment


          #5
          Re: Editor for Time input

          It would be very helpful to have an example component & editor that performs the task of tracking time. It seems that this is likely a common need. Many workers need to record time. Multiple people need to report their time on a project etc. Asana uses Harvest Time Tracking as an integrated app but it only records the time as a summary such as two hours and not an actual calculation from a entered time. Just about every task I want to track has a need to report the starttime and endtime and calculate the difference with or without a date.
          Last edited by Td203; 01-05-2016, 03:28 PM.

          Comment

          Working...
          X