I have a bunch of angular filters which I am using to sort out my data, however, my app seems to load pretty slowly. I am wondering if there is a better way for me to structure my code in order to improve performance.
js
var myApplication = angular.module('myApp', ['ngColorThis']);
myApplication.controller("Catalog", function ($scope) {
$scope.books = books;
$scope.showInfo = false;
})
.filter('mydate', function() {
return function(input) {
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0, so always add + 1
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = mm + '/' + dd;
return (input == today)
}
})
.filter('past', function() {
return function(input) {
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0, so always add + 1
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = mm + '/' + dd;
return (input)
}
})
.filter('January', function() {
return function(input) {
return input.slice(0,2) === '01';
}
})
.filter('February', function() {
return function(input) {
return input.slice(0,2) === '02';
}
})
.filter('March', function() {
return function(input) {
return input.slice(0,2) === '03';
}
})
.filter('April', function() {
return function(input) {
return input.slice(0,2) === '04';
}
})
.filter('May', function() {
return function(input) {
return input.slice(0,2) === '05';
}
})
.filter('June', function() {
return function(input) {
return input.slice(0,2) === '06';
}
})
.filter('July', function() {
return function(input) {
return input.slice(0,2) === '07';
}
})
.filter('August', function() {
return function(input) {
return input.slice(0,2) === '08';
}
})
.filter('September', function() {
return function(input) {
return input.slice(0,2) === '09';
}
})
.filter('October', function() {
return function(input) {
return input.slice(0,2) === '10';
}
})
.filter('November', function() {
return function(input) {
return input.slice(0,2) === '11';
}
})
.filter('December', function() {
return function(input) {
return input.slice(0,2) === '12';
}
});
html
<ul>
<li class="pane1">
<div class="bg" ng-repeat="book in books" >
<div ng-show=" book.doc.date | mydate" >
<div class="date">{{book.doc.date}}</div>
<div class="title">{{book.doc.title}}</div>
<div class="quote">{{book.doc.quote}}</div>
<div class="attribution">-{{book.doc.attribution}}</div>
<div class="textt">{{book.doc.text}}</div>
<div style="height:10px"></div>
</div>
</div>
</li>
<li class="pane2">
<div class="january" ng-click="showJan = !showJan">
<div class="titletext">January</div>
</div>
<div class="bg" ng-repeat="book in books ">
<div ng-show="showJan">
<div style="padding-top:10px; border-bottom:2px solid #ededed;" ng-click="showInfo = !showInfo" ng-show=" book.doc.date |January">
<div id="circleJan"><div class="day">{{book.doc.day}}</div></div>
<div class="title">{{book.doc.title}}</div>
<div class="quote" ng-show="showInfo">{{book.doc.quote}} </div>
<div class="attribution" ng-show="showInfo">-{{book.doc.attribution}}</div>
<div class="textt" ng-show="showInfo">{{book.doc.text}}</div>
<div style="height:10px"></div>
</div>
</div>
</div>
<div class="february" ng-click="showFeb = !showFeb">
<div class="titletext">February</div>
</div>
<div class="bg" ng-repeat="book in books ">
<div ng-show="showFeb">
<div style="padding-top:10px; border-bottom:2px solid #ededed;" ng-click="showInfo = !showInfo" ng-show=" book.doc.date |February">
<div id="circleFeb"><div class="day">{{book.doc.day}}</div></div>
<div class="title">{{book.doc.title}}</div>
<div class="quote" ng-show="showInfo">{{book.doc.quote}}</div>
<div class="attribution" ng-show="showInfo">-{{book.doc.attribution}}</div>
<div class="textt" ng-show="showInfo">{{book.doc.text}}</div>
<div style="height:10px"></div>
</div>
</div>
</div>
<div class="march" ng-click="showMarch = !showMarch">
<div class="titletext">March</div>
</div>
<div class="bg" ng-repeat="book in books ">
<div ng-show="showMarch">
<div style="padding-top:10px; border-bottom:2px solid #ededed;" ng-click="showInfo = !showInfo" ng-show=" book.doc.date |March">
<div id="circleMarch"><div class="day">{{book.doc.day}}</div></div>
<div class="title">{{book.doc.title}}</div>
<div class="quote" ng-show="showInfo">{{book.doc.quote}}</div>
<div class="attribution" ng-show="showInfo">-{{book.doc.attribution}}</div>
<div class="textt" ng-show="showInfo">{{book.doc.text}}</div>
<div style="height:10px"></div>
</div>
</div>
</div>
var isDateInMonth = function(date, month){return date.slice(0,2) === month;}