JSFiddle - React, Tailwind, and code Playground

by David Kyle

HTML

<button id="myButton">Run Again</button>
<div id="target">
</div>

JavaScript

var Task = function () {
    var self = this;
    self.Name = "";
    self.Tasks = [];
};

Task.prototype.AddTasks = function (tasksData) {
        var localTasks = [];
        if (tasksData != null && tasksData != undefined && tasksData.length > 0) {
            for (var i = 0; i < tasksData.length; i++) {
                var aNewTask = new Task();
                aNewTask.Name = tasksData[i].Name;
                aNewTask.Id = tasksData[i].Id;
                if (tasksData[i].ChildTasks != undefined) {
                    aNewTask.AddTasks(tasksData[i].ChildTasks);
                } // end if
                localTasks.push(aNewTask);
            } // end for loop
        } else {
            console.log("No child task data.");
        } // end if/else
        this.Tasks = localTasks;
    };


var Tasks = [{
    Id: 1,
    Name: "Task Container 1",
    ChildTasks: [{
        Id: 4,
        Name: "Maintenance",
        ChildTasks: [{
            Id: 8,
            Name: "Re-Index"
        }, {
            Id: 9,
            Name: "Compress"
        }]
    }, {
        Id: 5,
        Name: "Send Notification"
    }]
}, {
    Id: 2,
    Name: "Task Container 2",
    ChildTasks: [{
        Id: 6,
        Name: "Ping Server"
    }, {
        Id: 7,
        Name: "Upload Files"
    }, {
        Id: 5,
        Name: "Send Notification"
    }]
}, {
    Id: 3,
    Name: "Perform Cleanup"
}];

function getTaskList(data) {
    var localTasks = [];
    if (data != null && data != undefined && data.length > 0) {
        for (var i = 0; i < data.length; i++) {
            console.log("Current i value: " + i);
            var newTask = new Task();
            newTask.Name = data[i].Name;
            newTask.Id = data[i].Id;
            if (data[i].ChildTasks != undefined) {
                newTask.AddTasks(data[i].ChildTasks);
            } // end if
            localTasks.push(newTask);
        } // end for loop
    } else {
        console.log("No data");
    } // end...