JSFiddle - React, Tailwind, and code Playground

by chrisbenseler

JavaScript

var Gamification = (function(opts) {
       
    //defaults
    var options = {
        modulescope: "/gamification",
        apiscope: "/gamification/api/",
        websocket: {
        	host: "gamification",
            port: 400
        }
    }
    
    var Client = {
        
        socket: null,
        
      	config: function() {
        	return options.websocket;
    	},
        
        start: function() {
        	this.socket = new WebSocket("ws://" + this.config().host + ":" + this.config().port);
            $(this).trigger("startup");
        },
        
        stop: function() {
            if(this.socket != null) {
        		this.socket.close();
                this.socket = null;
            }
        }
    }
    
  
    var urls = {
    	mybadges: "users/my_badges",
        mylatestbadges: "users/my_latest_badges",
        userbadges: "users/{user_id}/badges.json",
        latestuserbadges: "users/{user_id}/badges.json"
    };
    
    var _get_url = function (key, params) {
        if(!params || params=={})
     		return urls[key];
        else {
            var url = urls[key]; 
            for(key in params) {
                url = url.replace("{" + key + "}", params[key]);
            }
            return url;
        }
    }
    
    return {
        setOptions: function(opts) {
            for(key in opts) {
                if(options[key])
                    options[key] = opts[key];
            }
        },
    	mybadges: function() {
            var url = _get_url("mybadges");
        	return $.ajax({ url: options.apiscope + url })   
        },
        mylatestbadges: function() {
            var url = _get_url("mylatestbadges");
        	return $.ajax({ url: options.apiscope + url })   
        },
        userbadges: function(user_id) {
            var url = _get_url("userbadges", {user_id: user_id });
            return $.ajax({ url: options.apiscope + url })   
        },
        latestuserbadges: function(user_id) {
           ...