schedulefieldvalidation.js 1.42 KB
/*
 * ADOBE CONFIDENTIAL
 *
 * Copyright 2016 Adobe Systems Incorporated
 * All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated and its
 * suppliers and may be covered by U.S. and Foreign Patents,
 * patents in process, and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 */
/* globals later */
(function(window, document, $, later) {
    'use strict';

    // HTML5 form validation for the schedule property
    $(document).on('input', 'input[name="./schedule"]', function(ev) {
        var value = $(ev.target).val();

        // Validate text expression
        var schedule = later.parse.text(value);
        var isValidTextExpression = schedule.error === -1;

        // Validate cron expression
        // TODO: this is a trivial regexp that needs to be improved for a better UX
        var cronRegExp = /^([0-9,\/\-\*]+)(\s[0-9,\/\-\*]+){5}$/;
        var isValidCronExpression = value.match(cronRegExp);

        ev.target.setCustomValidity(isValidTextExpression || isValidCronExpression ? '' : 'error');
    });

}(window, document, Granite.$, later));