/src/main/webapp/js/app/models.js
JavaScript | 225 lines | 174 code | 47 blank | 4 comment | 22 complexity | 3ff30fc9ac4f32619ce3707e174fe281 MD5 | raw file
Possible License(s): GPL-2.0, MIT
- // models
- App.Models.CompletedDashboardData = Backbone.Model.extend({
- urlRoot: 'api/dashboard/completed'
- });
- App.Models.InProgressDashboardData = Backbone.Model.extend({
- urlRoot: 'api/dashboard/inprogress'
- });
- App.Models.EngineeringDashboardData = Backbone.Model.extend({
- urlRoot: 'api/dashboard/eng'
- });
- App.Models.UserMarketData = Backbone.Model.extend({
- urlRoot: 'api/user/allmarkets'
- });
- App.Models.UserMarketDataSet = Backbone.Collection.extend({
- url: 'api/user/allmarkets',
- model: App.Models.UserMarketData
- });
- App.Models.Workflow = Backbone.Model.extend({
- urlRoot: 'api/workflow'
- // TODO: return groups
- // TODO: return field models
- });
- App.Models.WorkflowTemplate = Backbone.Model.extend({
- });
- App.Models.Ticket = Backbone.Model.extend({
- urlRoot: 'api/ticket',
- idAttribute: 'ticketId',
- daysSinceStepStart: function(offset) {
- var startDate = moment(this.get("stepStart"));
- if (startDate == null) return 0;
- startDate.seconds(0);
- startDate.minutes(0);
- startDate.hours(0);
- var now = moment();
- now.seconds(0);
- now.minutes(0);
- now.hours(0);
- return now.diff(startDate, 'days') + offset;
- },
- daysTicketOverdue: function() {
- var endDate = moment(this.get("plannedEnd"));
- if (endDate == null) return 0;
- endDate.seconds(0);
- endDate.minutes(0);
- endDate.hours(0);
- var now = moment();
- now.seconds(0);
- now.minutes(0);
- now.hours(0);
- return now.diff(endDate, 'days');
- },
- daysSinceSubmission: function() {
- var modifiedDate = moment(this.get("modified"));
- return new moment().diff(modifiedDate, 'days');
- }
- });
- App.Models.Field = Backbone.Model.extend({
- });
- App.Models.Chart = Backbone.Model.extend({
- });
- // collections
- App.Collections.CompletedDashboardDataSet = Backbone.Collection.extend({
- model: App.Models.CompletedDashboardData,
- url: 'api/dashboard/completed'
- });
- App.Collections.InProgressDashboardDataSet = Backbone.Collection.extend({
- model: App.Models.InProgressDashboardData,
- url: 'api/dashboard/inprogress'
- });
- App.Collections.TicketSet = Backbone.Collection.extend({
- model: App.Models.Ticket,
- url: 'api/ticket',
- search : function(statusArray){
- if(statusArray == null) return this;
- return _(this.filter(function(data) {
- for(var i=0; i<statusArray.length; i++) {
- if (statusArray[i] == data.get('status')) return true;
- }
- }));
- },
- searchWithMethod: function(f) {
- return _(this.filter(function(data) {
- return f(data);
- }));
- }
- });
- App.Collections.TicketSet.Aggregate = {};
- App.Collections.TicketSet.Aggregate.ageOfOldest = function(collection) {
- var oldestAgeDays = 0;
- collection.each(function(ticket) {
- var createdDate = moment(ticket.get("createDate"));
- var ageDays = moment().diff(createdDate, 'days');
- if (ageDays > oldestAgeDays) {
- oldestAgeDays = ageDays;
- }
- });
- return oldestAgeDays;
- };
- App.Collections.TicketSet.Aggregate.averageAge = function(collection) {
- if ((collection.size && collection.size() == 0) ||
- (collection.length && collection.length == 0)) return 0;
- var countAgeDays = 0;
- var collectionSize = collection.size?collection.size():collection.length;
- collection.each(function(ticket) {
- var createdDate = moment(ticket.get("createDate"));
- var ageDays = moment().diff(createdDate, 'days');
- countAgeDays += ageDays;
- });
- return Math.round(countAgeDays / collectionSize);
- };
- App.Collections.TicketSet.Aggregate.countIncomplete = function(collection) {
- var countIncomplete = 0;
- collection.each(function(ticket) {
- if (
- !ticket.get('title') ||
- !ticket.get('fieldData').plannedStart ||
- !ticket.get('fieldData').remoteDevice ||
- !ticket.get('fieldData').remotePortAssignment ||
- !ticket.get('fieldData').routerPortAssignment ||
- !ticket.get('fieldData').ipAddress ||
- !ticket.get('fieldData').routerConfigs
- ){
- countIncomplete++;
- }
- });
- return countIncomplete;
- };
- App.Collections.TicketSet.Aggregate.moreThanAWeekOld = function(collection) {
- var countOverAWeekOld = 0;
- collection.each(function(ticket) {
- var createdDate = new moment(ticket.get("created"));
- var diffDays = new moment().diff(createdDate, 'days');
- if (diffDays >= 7) {
- countOverAWeekOld++;
- }
- });
- return countOverAWeekOld;
- };
- App.Collections.TicketSet.Aggregate.createdInDateRange = function(daysStart, daysEnd) {
- return function(collection) {
- var countUnderNDaysOld = 0;
- collection.each(function(ticket) {
- var createdDate = new moment(ticket.get("created"));
- var diffDays = new moment().diff(createdDate, 'days');
- if (diffDays >= daysStart && (daysEnd == -1 || diffDays <= daysEnd)) {
- countUnderNDaysOld++;
- }
- });
- return countUnderNDaysOld;
- };
- }
- App.Collections.TicketSet.Aggregate.getOldestAge = function(collection, period) {
- var oldestAge = 1;
- collection.each(function(ticket) {
- var createdDate = new moment(ticket.get("created"));
- var diff = new moment().diff(createdDate, period);
- if (diff > oldestAge) {
- oldestAge = diff;
- }
- });
- return oldestAge;
- };
- App.Collections.FieldSet = Backbone.Collection.extend({
- model: App.Models.Field
- });
- App.Collections.ChartSet = Backbone.Collection.extend({
- model: App.Models.Chart,
- url: 'api/chart'
- });
- App.Collections.SearchResultSet = Backbone.Collection.extend({
- model: App.Models.Ticket,
- url: 'api/search',
- search : function(f){
- return _(this.filter(function(data) {
- return f(data);
- }));
- }
- });