TB Scheduler

This is a scheduler library.

by Muhammad Dawood Awan

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<div id="scheduler"> </div>


<button class="btn btn-primary" id="logVal">Log</button>

JavaScript

(function ($) {

    $.tbScheduler = function (element, options) {

        var defaults = {
            Repeat: ["None", "Per Minutes", "Hourly", "Daily", "Weekly", "Monthly", "Yearly"],
            onFoo: function () { }
        }

        var plugin = this;

        plugin.settings = {}

        var $element = $(element);

        plugin.init = function () {
            plugin.settings = $.extend({}, defaults, options);
            // code goes here

            InitializeScheduler();

        }

        plugin.foo_public_method = function () {
            // code goes here
        }

        var InitializeScheduler = function () {
            var repeatDropdown = createRepeatDropdown();

            var div4Col = $('<div/>', {
                'class': 'col-md-4'
            });


            div4Col.html(repeatDropdown);

            var div = $('<div/>', {
                'class': 'row'
            }).html(div4Col).append('<div class="col-md-4"><div class="everySection"></div></div>');

            $element.append(div);

        };

        //private method
        var createRepeatDropdown = function () {
            var combo = $("<select></select>").change(function () { updateRepeatInputs($(this).val()); }).addClass('form-control');

            $.each(defaults.Repeat, function (i, el) {
                combo.append("<option>" + el + "</option>");
            });

            return combo;
        };

        var updateRepeatInputs = function (repeaterValue) {

            var everySection = $element.find('.everySection');

            switch (repeaterValue) {
                case 'Per Minutes':
                    everySection.html('every <span>A</span>');
                    console.log('Minutes HTML');
                    break;

                case 'Hourly':
                    console.log('Hourly HTML');
                    break;

                case 'Weekly':
                    console.log('Weekly HTML');
                    break;

             ...