JSFiddle - React, Tailwind, and code Playground

by huston007

JavaScript

var DEBUG = true;
//chrome.browserAction.setBadgeText({"text": "..." });

var api = new ucloudAPI({
    hostUrl: (localStorage["hostUrl"] && localStorage["hostUrl"]!="")? localStorage["hostUrl"] : "https://api.business365.ru",
    secretKey: localStorage["secretKey"],
    email: localStorage["email"]
});

api.setAuthHeaders();

//---------------BACKBONE---------------
//---------Объявляем модели-------------
//Базовая модель:
var ucloudBaseModel = Backbone.Model.extend({
  idAttribute: "Id",
});

var Task = ucloudBaseModel.extend({urlRoot: api.hostUrl+api.apiPath+api.tasks});

var Project = ucloudBaseModel.extend({urlRoot: api.hostUrl+api.apiPath+api.projects});

var Coworker = ucloudBaseModel.extend({urlRoot: api.hostUrl+api.apiPath+api.users});

//----------Объявляем коллекции моделей---------
//Базовая коллекция:
var ucloudBaseCollection = Backbone.Collection.extend({
  fetch: function(options) {      
    typeof(options) != 'undefined' || (options = {});   
    options.update = "update"; //чтобы обновлялись только изменённые модели коллекции

    return Backbone.Collection.prototype.fetch.call(this, options);    
  },
  initialize: function(){
    this.fetch({silent: true}); //подбираем с сервера
  },
  parse: function(response) {
    return response.Data.Items;
  }
});

var Tasks = ucloudBaseCollection.extend({
  model: Task,
  url: api.hostUrl+api.apiPath+api.tasks,
});

var Projects = ucloudBaseCollection.extend({
  model: Project,
  url: api.hostUrl+api.apiPath+api.projects,
});

var Coworkers = ucloudBaseCollection.extend({
  model: Coworker,
  url: api.hostUrl+api.apiPath+api.users,
});
//-----------------------------------------------------------

var tasks = new Tasks;
var projects = new Projects;
var coworkers = new Coworkers;

//Показываем события коллекции задач
tasks.on("reset", function(){console.log("fetch")});
tasks.on("add", function(task){
    console.log("added", task);
    webkitNotifications.createNotification(
      '128.png',  // icon...