JSFiddle - React, Tailwind, and code Playground

by Chase Wilson

JavaScript

console.log('\n\n\n\n\n\n\n\n\n\n\n\n');
var _NAMESPACE_ = window._NAMESPACE_ || window;
if(!window.Data){
    _NAMESPACE_.Data = {};
}
/*
// Sample JSON data
data = {
    "profile":{
        "current":160,
        "target":150
    },
    "program": [
        {
            "category":"exercise",
            "weekly schedule":[
                {"day":"sunday", "activity":"swimming"},
                {"day":"monday", "activity":"running"},
                {"day":"tuesday", "activity":"biking"},
                {"day":"wednesday", "activity":"running"},
                {"day":"thursday", "activity":"swimming"},
                {"day":"friday", "activity":"running"},
                {"day":"saturday", "activity":"golf"}
            ]
        }
    ]
};

var mySchema = {
    metaFields: {current:"profile.current", target:"profile.target"},
    dataList: "program[0]['weekly schedule']",
    dataFields: [{key:"day"}, {key:"activity"}]
};

new DataSchema(data,mySchema);
*/
(function(ns){
    var DataSchema = ns.DataSchema = new Class({
         dataOut : null
        ,_data : null
        ,dataSchema:null
        
        ,initialize: function(data, schema){
            console.log('this.initialize');
            this.apply(data, schema);
        }
        
        ,apply: function(data, schema){
            console.log('this.apply');
            this._data  = data,
            this.dataOut = { results: [], meta: {} };
            schema = this.dataSchema = schema || {};
            
            // Convert incoming JSON strings
            if(typeOf(data) != 'object') {
                try {
                    this._data = JSON.parse(data);
                } catch(e) {
                    console.error(e.message);
                    this.dataOut.error = e;
                    return this.dataOut;
                }
            }

            if((typeof this._data === 'object') && this.dataSchema) {
                // Parse results data
               ...