/public/JS/models.js
JavaScript | 230 lines | 219 code | 9 blank | 2 comment | 44 complexity | 6fbb319da6db5db81298eb4d4b10e9b4 MD5 | raw file
- var Task = Backbone.Model.extend({
- formatDate:function (model) {
- var due_dateToFormat = moment(model.get("due_date"));
- var due_dateFormatted;
- due_dateFormatted = due_dateToFormat.format("ddd, MMM D, YYYY, h:mm a");
- model.set({
- "pretty_due_date":due_dateFormatted
- });
- if (model.get("finished_date")) {
- var finished_dateToFormat = moment(model.get("finished_date"));
- var finished_dateFormatted;
- finished_dateFormatted = finished_dateToFormat.format("ddd, MMM D, YYYY, h:mm a");
- model.set({
- "pretty_finished_date":finished_dateFormatted
- });
- }
- var now = moment(Date());
- var timeUntil = due_dateToFormat.from(now);
- model.set({"timeUntil":timeUntil});
- },
- defaults:{
- task_id:"",
- summary:"",
- description:"",
- address:"",
- priority:"",
- due_date:"",
- finished_date:"",
- user_id:"",
- comments:"",
- prior_task:"",
- sort_order:"",
- my_order:"",
- workflow:""
- },
- idAttribute:"task_id",
- urlRoot:base_url + '/task'
- });
- var taskOrder = Backbone.Model.extend({
- defaults:{
- id:null,
- task_order:[]
- },
- idAttribute:"id"
- });
- var managerOrder = new taskOrder({id:1});
- var userOrder = new taskOrder({id:2});
- var User = Backbone.Model.extend({
- initialize:function () {
- this.formatDisplayName(this);
- this.id = this.attributes.user_id;
- if (!this.attributes.poly_path)
- return;
- //Need to format Object correctly for Google Polygon object
- var path = this.attributes.poly_path;
- var latlngarray = [];
- for (var i = 0; i < path.length; i++) {
- latlngarray.push(new google.maps.LatLng(path[i][0], path[i][1]));
- }
- var polygon = new google.maps.Polygon({ path:latlngarray, strokeColor:"red", strokeOpacity:0.8, strokeWeight:2, fillColor:"red", fillOpacity:0.35 });
- this.set("polygon", polygon);
- var name = this.attributes.pretty_display_name;
- google.maps.event.addListener(polygon, 'click', function () {
- if (!assignMapPage.creating)
- assignMapUserClick(name);
- });
- },
- formatDisplayName:function (model) {
- var old = model.get("display_name");
- var pretty_display_name = old.capitalize();
- model.set({"pretty_display_name":pretty_display_name});
- },
- defaults:{
- user_id:"",
- email:"",
- display_name:"",
- password:"",
- task_count:"",
- manage:"",
- logged_in:"",
- pretty_display_name:"",
- poly_path:""
- },
- idAttribute:"user_id",
- urlRoot:base_url + '/user'
- });
- var Attachment = Backbone.Model.extend({
- defaults:{
- task_id:"",
- user_id:"",
- file_name:"",
- size:"",
- upload_date:""
- },
- urlRoot:base_url + '/attachment'
- });
- var Coord = Backbone.Model.extend({
- defaults:{
- task_id:"",
- long:"",
- lat:""
- },
- idAttribute:"task_id",
- urlRoot:base_url + '/coord'
- });
- /*** Collections ***/
- var TaskCollection = Backbone.Collection.extend({
- model:Task,
- dragEnabled:false,
- reassignEnabled:false,
- forUserId:-1,
- dragging:-1,
- loadTasksForUser:function (id, opts) {
- opts = opts || {};
- this.url = base_url + '/user/' + id + '/task';
- this.fetch(opts);
- this.forUserId = id;
- },
- loadAllTasks:function (opts) {
- opts = opts || {};
- TaskColl.url = base_url + "/task";
- TaskColl.fetch(opts);
- this.forUserId = -1;
- },
- taskChanged:function (data) {
- if (this.forUserId == -1 || this.forUserId == data.task['user_id']) {
- if (TaskColl.get(data.id)) {
- var t = TaskColl.get(data.id);
- for (var k in data.task) {
- t.set(k, data.task[k]);
- }
- } else {
- var t = new Task(data.task);
- t.id = data.id;
- TaskColl.add(t);
- }
- } else {
- TaskColl.remove(data.id);
- }
- },
- sortTasks:function (sortedBy, openMode, reassignMode) {
- this.sortedBy = sortedBy;
- this.dragEnabled = false;
- this.reassignEnabled = reassignMode;
- if (sortedBy == "my_order") {
- userOrder.url = '/data/user/' + userId + '/user-order';
- userOrder.fetch({timeout:1000, async:false});
- this.comparator = function (Task) {
- for (var t = 0; t < userOrder.get('task_order').length; t++) {
- if (Task.get('task_id') == userOrder.get('task_order')[t]) {
- return t;
- }
- }
- };
- this.dragEnabled = openMode;
- } else if (sortedBy == "manager") {
- if (selectedUser)
- managerOrder.url = '/data/user/' + selectedUser.id + '/manager-order';
- else
- managerOrder.url = '/data/user/' + userId + '/manager-order';
- managerOrder.fetch({timeout:1000, async:false});
- this.comparator = function (Task) {
- for (var t = 0; t < managerOrder.get("task_order").length; t++) {
- if (Task.get('task_id') == managerOrder.get('task_order')[t]) {
- return t;
- }
- }
- };
- this.dragEnabled = manage ? openMode : false;
- } else if (sortedBy == "task_id") {
- this.comparator = function (Task) {
- return Task.get("task_id");
- };
- } else if (sortedBy == "priority") {
- this.comparator = function (Task) {
- return -Task.get("priority");
- };
- } else if (sortedBy == "due_date") {
- this.comparator = function (Task) {
- return Date.parse(Task.get("due_date"));
- };
- }
- if (this.comparator)
- this.sort();
- if (this.dragEnabled)
- delete this.comparator;
- },
- saveOrder:function () {
- var order = [];
- if (this.sortedBy == "my_order") {
- userOrder.attributes.task_order = [];
- for (var i = 0; i < FilteredTaskColl.length; i++) {
- userOrder.attributes.task_order.push(parseInt(FilteredTaskColl.at(i).id));
- }
- userOrder.url = '/data/user/' + userId + '/user-order';
- userOrder.save();
- } else if (this.sortedBy == "manager") {
- managerOrder.attributes.task_order = [];
- for (var i = 0; i < FilteredTaskColl.length; i++) {
- managerOrder.attributes.task_order.push(parseInt(FilteredTaskColl.at(i).id));
- }
- managerOrder.url = '/data/user/' + selectedUser.id + '/manager-order';
- managerOrder.save();
- }
- }
- });
- var UserCollection = Backbone.Collection.extend({
- model:User,
- url:base_url + "/user",
- comparator:function (User) {
- return (User.get('logged_in') ? "0" : "1") + User.get('display_name');
- }
- });
- var CoordCollection = Backbone.Collection.extend({
- model:Coord,
- url:base_url + "/coord"
- });
- var AttachmentCollection = Backbone.Collection.extend({
- model:Attachment,
- url:base_url + "/attachment"
- });