Skip to content

Commit

Permalink
Use utils and models from Shareabouts.js
Browse files Browse the repository at this point in the history
  • Loading branch information
atogle committed Mar 21, 2013
1 parent 3aa5508 commit c00f83a
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 15 deletions.
45 changes: 34 additions & 11 deletions src/sa_web/static/js/models.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
/*global _ Backbone jQuery */

var Shareabouts = Shareabouts || {};

(function(S, $, console, loadImage) {
(function(S, $) {
'use strict';

var normalizeModelArguments = function(key, val, options) {
var attrs;
if (key == null || _.isObject(key)) {
if (key === null || _.isObject(key)) {
attrs = key;
options = val;
} else if (key != null) {
} else if (key !== null) {
(attrs = {})[key] = val;
}
options = options ? _.clone(options) : {};
Expand All @@ -17,7 +21,24 @@ var Shareabouts = Shareabouts || {};
};
};

S.SubmissionModel = Backbone.Model.extend({
S.ShareaboutsApiModel = Backbone.Model.extend({
sync: function(method, model, options) {
var data = model.toJSON();

delete data.created_datetime;
delete data.dataset;
delete data.id;
delete data.updated_datetime;

options = options || {};
options.contentType = 'application/json';
options.data = JSON.stringify(data);

Backbone.sync(method, model, options);
}
});

S.SubmissionModel = S.ShareaboutsApiModel.extend({
url: function() {
// This is to make Django happy. I'm sad to have to add it.
var url = S.SubmissionModel.__super__.url.call(this);
Expand Down Expand Up @@ -46,7 +67,7 @@ var Shareabouts = Shareabouts || {};
}
});

S.PlaceModel = Backbone.Model.extend({
S.PlaceModel = S.ShareaboutsApiModel.extend({
initialize: function(attributes, options) {
this.responseCollection = new S.SubmissionCollection([], {
placeModel: this,
Expand Down Expand Up @@ -122,12 +143,14 @@ var Shareabouts = Shareabouts || {};
// Pass the submissionType into each PlaceModel so that it makes its way
// to the SubmissionCollections
options = options || {};
options.responseType = this.options.responseType;
options.supportType = this.options.supportType;
options.responseType = this.options && this.options.responseType;
options.supportType = this.options && this.options.supportType;
return S.PlaceCollection.__super__.add.call(this, models, options);
}
});

// This does not support editing at this time, which is why it is not a
// ShareaboutsModel
S.AttachmentModel = Backbone.Model.extend({
idAttr: 'name',

Expand Down Expand Up @@ -196,9 +219,9 @@ var Shareabouts = Shareabouts || {};
url: '/api/activity/'
});

})(Shareabouts, jQuery, Shareabouts.Util.console, window.loadImage);
// NOTE: loadImage comes from the Load Image plugin in load-image.js
}(Shareabouts, jQuery, Shareabouts.Util.console));

/*global jQuery */

/*****************************************************************************
Expand All @@ -222,12 +245,12 @@ https://docs.djangoproject.com/en/1.4/ref/contrib/csrf/
jQuery(document).ajaxSend(function(event, xhr, settings) {
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
Expand Down
1 change: 1 addition & 0 deletions src/sa_web/static/js/models.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

73 changes: 69 additions & 4 deletions src/sa_web/static/js/utils.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
/*global _ moment BinaryFile loadImage EXIF */

var Shareabouts = Shareabouts || {};

(function(S, moment){
(function(S){
'use strict';

S.Util = {
setPrettyDateLang: function(locale) {
moment.lang(locale);
Expand All @@ -18,7 +22,7 @@ var Shareabouts = Shareabouts || {};
var attrs = {};

// Get values from the form
_.each($form.serializeArray(), function(item, i) {
_.each($form.serializeArray(), function(item) {
attrs[item.name] = item.value;
});

Expand Down Expand Up @@ -60,7 +64,7 @@ var Shareabouts = Shareabouts || {};
},

fixImageOrientation: function(canvas, orientation) {
var rotated = document.createElement("canvas"),
var rotated = document.createElement('canvas'),
ctx = rotated.getContext('2d'),
width = canvas.width,
height = canvas.height;
Expand Down Expand Up @@ -154,6 +158,67 @@ var Shareabouts = Shareabouts || {};
}
};
return newHandler;
},

callWithRetries: function(func, retryCount, context) {
var args = Array.prototype.slice.call(arguments, 3),
options = _.last(args),
errorHandler = options.error,
retries = 0;

if (!options) {
options = {};
args.push(options);
}

options.error = function() {
if (retries < retryCount) {
retries++;
setTimeout(function() {
func.apply(context, args);
}, retries * 100);
} else {
if (errorHandler) {
errorHandler.apply(context, arguments);
}
}
};

func.apply(context, args);
},

// Cookies! Om nom nom
// Thanks ppk! http://www.quirksmode.org/js/cookies.html
cookies: {
save: function(name,value,days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = '; expires='+date.toGMTString();
}
else {
expires = '';
}
document.cookie = name+'='+value+expires+'; path=/';
},
get: function(name) {
var nameEQ = name + '=';
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0) === ' ') {
c = c.substring(1,c.length);
}
if (c.indexOf(nameEQ) === 0) {
return c.substring(nameEQ.length,c.length);
}
}
return null;
},
destroy: function(name) {
this.save(name,'',-1);
}
}
};
})(Shareabouts, moment);
}(Shareabouts));
1 change: 1 addition & 0 deletions src/sa_web/static/js/utils.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit c00f83a

Please sign in to comment.