77 lines
2.8 KiB
JavaScript
77 lines
2.8 KiB
JavaScript
/**
|
|
* Created by avim on 12/2/2014.
|
|
*/
|
|
define(['react', 'firebase', 'lodash', './fiddle.rt', 'jquery'], function (React, Firebase, _, fiddleTemplate, $) {
|
|
'use strict'
|
|
|
|
function generateRandomId() {
|
|
var uuid = 'xxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
var r = _.random(0, 15)
|
|
return (c === 'x' ? r : r & 0x3 | 0x8).toString(16)
|
|
})
|
|
return uuid
|
|
}
|
|
|
|
var Fiddle = React.createClass({
|
|
displayName: 'Fiddle',
|
|
componentDidMount: function () {
|
|
if (window.location.hash) {
|
|
var newHash = window.location.hash.replace('#', '')
|
|
var firebase = new Firebase('https://reacttemplates.firebaseio-demo.com/')
|
|
firebase.child('fiddles').child(newHash).on('value', function (snapshot) {
|
|
this.refs.playground.setState(snapshot.val())
|
|
Firebase.goOffline()
|
|
}.bind(this))
|
|
} else {
|
|
Firebase.goOffline()
|
|
}
|
|
},
|
|
save: function () {
|
|
var newHash = generateRandomId()
|
|
window.location.hash = newHash
|
|
Firebase.goOnline()
|
|
|
|
var playgroundState = this.refs.playground.state
|
|
var firebase = new Firebase('https://reacttemplates.firebaseio-demo.com/')
|
|
firebase.child('fiddles').child(newHash).set(playgroundState, function () {
|
|
Firebase.goOffline()
|
|
alert('Saved the fiddle, you can share your url') //eslint-disable-line no-alert
|
|
})
|
|
},
|
|
clear: function () {
|
|
this.refs.playground.clear()
|
|
},
|
|
loadSample: function (name) {
|
|
//require(['text!./samples/' + name + '.rt', 'text!./samples/' + name + '.code'], function (rt, code) {
|
|
// var currentState = {
|
|
// templateHTML: rt,
|
|
// templateProps: code
|
|
// };
|
|
// //this.updateSample(currentState);
|
|
// this.refs.playground.setState(currentState);
|
|
//});
|
|
|
|
var playground = this.refs.playground
|
|
$.get('playground/samples/' + name + '.rt', null, function (data/*, textStatus, jqXHR*/) {
|
|
var rt = data
|
|
$.get('playground/samples/' + name + '.code', null, function (data2/*, textStatus2, jqXHR2*/) {
|
|
var currentState = {
|
|
templateHTML: rt,
|
|
templateProps: _.template(data2)({name: 'template'})
|
|
}
|
|
//this.updateSample(currentState);
|
|
playground.setState(currentState)
|
|
})
|
|
})
|
|
//this.refs.playground.clear();
|
|
},
|
|
render: fiddleTemplate
|
|
})
|
|
|
|
return Fiddle
|
|
})
|
|
|
|
|
|
|
|
|