mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-25 01:14:43 +00:00
Created basic viewing pages in angular
Can now search and view tournaments. Can now view team scores, weights and seeds, mats and bout board
This commit is contained in:
@@ -1 +1,43 @@
|
||||
json.(@tournament, :id, :name, :address, :director, :director_email, :schools, :weights, :mats, :matches)
|
||||
|
||||
json.cache! ["api_tournament", @tournament] do
|
||||
json.content(@tournament)
|
||||
json.(@tournament, :id, :name, :address, :director, :director_email, :tournament_type, :created_at, :updated_at)
|
||||
|
||||
json.schools @tournament.schools do |school|
|
||||
json.name school.name
|
||||
json.score school.score
|
||||
end
|
||||
|
||||
json.weights @tournament.weights do |weight|
|
||||
json.id weight.id
|
||||
json.max weight.max
|
||||
json.bracket_size weight.bracket_size
|
||||
json.wrestlers weight.wrestlers do |wrestler|
|
||||
json.name wrestler.name
|
||||
json.school wrestler.school.name
|
||||
json.original_seed wrestler.original_seed
|
||||
json.criteria wrestler.criteria
|
||||
json.extra wrestler.extra
|
||||
json.seasonWinPercentage wrestler.seasonWinPercentage
|
||||
json.season_win wrestler.season_win
|
||||
json.season_loss wrestler.season_loss
|
||||
end
|
||||
end
|
||||
|
||||
json.mats @tournament.mats do |mat|
|
||||
json.name mat.name
|
||||
json.unfinishedMatches mat.unfinishedMatches do |match|
|
||||
json.bout_number match.bout_number
|
||||
json.w1_name match.w1_name
|
||||
json.w2_name match.w2_name
|
||||
end
|
||||
end
|
||||
|
||||
json.unassignedMatches @tournament.matches.select{|m| m.mat_id == nil}.sort_by{|m| m.bout_number}[0...9] do |match|
|
||||
json.bout_number match.bout_number
|
||||
json.w1_name match.w1_name
|
||||
json.w2_name match.w2_name
|
||||
json.weightClass match.weight.max
|
||||
json.round match.round
|
||||
end
|
||||
end
|
||||
|
||||
@@ -7,4 +7,5 @@ var app = angular.module("wrestlingdev", ["ngRoute"]).run(function($rootScope)
|
||||
$rootScope.alert = function(thing) {
|
||||
alert(thing);
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
12
frontend/app/js/controllers/tournament-controller.js
Normal file
12
frontend/app/js/controllers/tournament-controller.js
Normal file
@@ -0,0 +1,12 @@
|
||||
'use strict';
|
||||
app.controller("tournamentController", function($scope, tournamentsService, $routeParams) {
|
||||
$scope.message = "Test message in scope.";
|
||||
|
||||
// $scope.tournamentData = "test";
|
||||
tournamentsService.tournamentDetails($routeParams.id).then(function(data) {
|
||||
//this will execute when the
|
||||
//AJAX call completes.
|
||||
$scope.tournament = data;
|
||||
});
|
||||
|
||||
});
|
||||
@@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
app.controller("tournamentsController", function($scope, tournamentsService) {
|
||||
$scope.message = "Test message in scope.";
|
||||
|
||||
tournamentsService.getAllTournaments().then(function(data) {
|
||||
//this will execute when the
|
||||
24
frontend/app/js/directives/loading.js
Normal file
24
frontend/app/js/directives/loading.js
Normal file
@@ -0,0 +1,24 @@
|
||||
(function(){
|
||||
app.directive('usSpinner', ['$http', '$rootScope' ,function ($http, $rootScope){
|
||||
return {
|
||||
link: function (scope, elm, attrs)
|
||||
{
|
||||
$rootScope.spinnerActive = false;
|
||||
scope.isLoading = function () {
|
||||
return $http.pendingRequests.length > 0;
|
||||
};
|
||||
|
||||
scope.$watch(scope.isLoading, function (loading)
|
||||
{
|
||||
$rootScope.spinnerActive = loading;
|
||||
if(loading){
|
||||
elm.removeClass('ng-hide');
|
||||
}else{
|
||||
elm.addClass('ng-hide');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
}]);
|
||||
}).call(this);
|
||||
@@ -13,18 +13,32 @@
|
||||
|
||||
|
||||
|
||||
app.config(['$routeProvider',
|
||||
function($routeProvider) {
|
||||
$routeProvider.
|
||||
when('/tournaments', {
|
||||
templateUrl: 'tournaments.html',
|
||||
controller: 'tournamentsController'
|
||||
}).
|
||||
// when('/phones/:phoneId', {
|
||||
// templateUrl: 'partials/phone-detail.html',
|
||||
// controller: 'PhoneDetailCtrl'
|
||||
// }).
|
||||
otherwise({
|
||||
redirectTo: '/tournaments'
|
||||
});
|
||||
}]);
|
||||
app.config(['$routeProvider', '$locationProvider', function($routeProvider,$locationProvider) {
|
||||
|
||||
$routeProvider.when('/', {
|
||||
templateUrl: 'home.html',
|
||||
});
|
||||
|
||||
$routeProvider.when('/tournaments', {
|
||||
templateUrl: 'tournaments-search.html',
|
||||
controller: 'tournamentsController'
|
||||
});
|
||||
|
||||
$routeProvider.when('/tournaments/:id', {
|
||||
templateUrl: 'tournaments-show.html',
|
||||
controller: 'tournamentController'
|
||||
});
|
||||
|
||||
$routeProvider.when('/about', {
|
||||
templateUrl: 'about.html',
|
||||
});
|
||||
|
||||
$routeProvider.when('/tutorials', {
|
||||
templateUrl: 'tutorials.html',
|
||||
});
|
||||
|
||||
$routeProvider.otherwise({redirectTo: '/'});
|
||||
|
||||
//this give me normal routes instead of /#/
|
||||
$locationProvider.html5Mode(true);
|
||||
}]);
|
||||
47
frontend/app/js/services/tournaments-service.js
Normal file
47
frontend/app/js/services/tournaments-service.js
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
app.factory('tournamentsService', tournamentsService);
|
||||
|
||||
function tournamentsService($http){
|
||||
var service = {};
|
||||
|
||||
|
||||
|
||||
service.getAllTournaments = function(){
|
||||
return $http({
|
||||
url: '/api/tournaments/',
|
||||
method: "GET"
|
||||
}).then(successResponse, errorCallback);
|
||||
};
|
||||
|
||||
service.searchTournaments = function(search){
|
||||
return $http({
|
||||
method: 'GET',
|
||||
url: '/api/tournaments/',
|
||||
params: {
|
||||
search: search
|
||||
}
|
||||
}).then(successResponse, errorCallback);
|
||||
};
|
||||
|
||||
service.tournamentDetails = function(tournamentId){
|
||||
return $http({
|
||||
url: '/api/tournaments/' + tournamentId,
|
||||
method: "GET"
|
||||
}).then(successResponse, errorCallback);
|
||||
};
|
||||
|
||||
function successResponse(response){
|
||||
console.log("success log below");
|
||||
console.log(response);
|
||||
return response.data;
|
||||
}
|
||||
|
||||
function errorCallback(err){
|
||||
console.log("error log below");
|
||||
console.log(err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return service;
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
app.factory('tournamentsService', function($http){
|
||||
|
||||
|
||||
return {
|
||||
getAllTournaments: function() {
|
||||
//since $http.get returns a promise,
|
||||
//and promise.then() also returns a promise
|
||||
//that resolves to whatever value is returned in it's
|
||||
//callback argument, we can return that.
|
||||
return $http.get('/api/tournaments/').then(function(result) {
|
||||
return result.data;
|
||||
});
|
||||
},
|
||||
|
||||
searchTournaments: function(search){
|
||||
return $http({
|
||||
method: 'GET',
|
||||
url: '/api/tournaments/',
|
||||
params: {
|
||||
search: search
|
||||
}
|
||||
}).then(function successCallback(response) {
|
||||
// this callback will be called asynchronously
|
||||
// when the response is available
|
||||
return response.data;
|
||||
}, function errorCallback(response) {
|
||||
// called asynchronously if an error occurs
|
||||
// or server returns response with an error status.
|
||||
return response;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html ng-app="wrestlingdev">
|
||||
<head>
|
||||
<base href="/">
|
||||
<title>WrestlingDev</title>
|
||||
|
||||
<!-- Latest compiled and minified CSS -->
|
||||
@@ -9,6 +10,8 @@
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous">
|
||||
</head>
|
||||
<body style="padding-top: 70px;">
|
||||
<div class="container">
|
||||
<div class="navbar-roof"></div>
|
||||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
@@ -22,9 +25,9 @@
|
||||
</div>
|
||||
<div id="navbar" class="collapse navbar-collapse">
|
||||
<ul class="nav navbar-nav navbar-right navbar-custom-link">
|
||||
<li><a href="#">Browse Tournaments</a></li>
|
||||
<li><a href="#">About</a></li>
|
||||
<li><a href="#">Tutorials</a></li>
|
||||
<li><a href="/tournaments">Browse Tournaments</a></li>
|
||||
<li><a href="/about">About</a></li>
|
||||
<li><a href="/tutorials">Tutorials</a></li>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
@@ -35,12 +38,13 @@
|
||||
<!--leftsidebar-->
|
||||
</div>
|
||||
<!--content-->
|
||||
<div id="view" ng-view></div>
|
||||
<div class="col-md-8" style="padding-left: 2%;" id="view" ng-view></div>
|
||||
<div class="col-md-2" >
|
||||
<!--rightsidebar-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<!-- Latest compiled and minified JavaScript -->
|
||||
|
||||
50
frontend/app/pages/static_pages/about.html
Normal file
50
frontend/app/pages/static_pages/about.html
Normal file
@@ -0,0 +1,50 @@
|
||||
<div class="col-md-8" style="padding-left: 2%;">
|
||||
<div class="container" ui-view="main" >
|
||||
<h3>About WrestlingDev</h3>
|
||||
<br>
|
||||
<p>WrestlingDev was created to help bring wrestling into the 21st century for <strong>free</strong>. This site is <a href="https://github.com/jcwimer/wrestlingApp">open source</a> and is supported by the ads on the sidebar.</p>
|
||||
<br>
|
||||
<h4>Features</h4>
|
||||
<br>
|
||||
<p>At this moment in time, WrestlingDev supports a pool to bracket type tournament for up to 16 teams. The bracket format follows OHSAA's 5 match per day rule. WrestlingDev will automatically generate brackets, generate bout numbers, generate and update a bout board, track team points, and update brackets.</p>
|
||||
<p>For pool to bracket tournaments, pool tie breakers are the following:</p>
|
||||
<ul>
|
||||
<li>Least team points deducted</li>
|
||||
<li>Head to head</li>
|
||||
<li>Most team points scored</li>
|
||||
<li>Most wins by fall, default, dq</li>
|
||||
<li>Most wins by tech fall</li>
|
||||
<li>Most wins by major</li>
|
||||
<li>Most points scored in decisions</li>
|
||||
<li>Quickest pin</li>
|
||||
<li>Coin flip</li>
|
||||
</ul>
|
||||
<p>If three wrestlers are tied, they will be put through this sequence until two wrestlers are left. Once two wrestlers are left, the pool runner up will be decided by head to head.</p>
|
||||
<p>For pool to bracket tournaments, team points will be calculated as follows:</p>
|
||||
<ul>
|
||||
<li>Pool win: 2pt</li>
|
||||
<li>Win in championship bracket: 2pt</li>
|
||||
<li>Win in consolation bracket: 1pt</li>
|
||||
<li>Win by major: 1pt extra</li>
|
||||
<li>Win by tech fall: 1.5pt extra</li>
|
||||
<li>Win by fall, default, dq: 2pt extra</li>
|
||||
<li>1st place: 16pt</li>
|
||||
<li>2nd place: 12pt</li>
|
||||
<li>3rd place: 10pt</li>
|
||||
<li>4th place: 9pt</li>
|
||||
<li>5th place: 7pt</li>
|
||||
<li>6th place: 6pt</li>
|
||||
<li>7th place: 4pt</li>
|
||||
<li>8th place: 3pt</li>
|
||||
</ul>
|
||||
<p>Finals matches will only recieve extra placement points for placing higher and bonus points for pin, tech, major, etc. Please note, only brackets with four pools place up to 8. Brackets with 1 or 2 pools only place top 4.</p>
|
||||
<br>
|
||||
<h4>Future Plans</h4>
|
||||
<br>
|
||||
<p>Future development plans to support normal double elimination brackets are underway and are planned to be finished in time for the 2016-2017 wrestling season.</p>
|
||||
<br>
|
||||
<h4>Contact</h4>
|
||||
<br>
|
||||
<p>Suggestions, criticism, and kind words are welcomed. Please contact us.</p>
|
||||
</div>
|
||||
</div>
|
||||
12
frontend/app/pages/static_pages/home.html
Normal file
12
frontend/app/pages/static_pages/home.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<div class="col-md-8" style="padding-left: 2%;">
|
||||
<div class="center hero-unit" ui-view="main">
|
||||
<h1>Welcome to WrestlingDev</h1>
|
||||
<br>
|
||||
<p>This website was created to help wrestling coaches run their tournaments. It is 2015, why are we still running bout sheets to tables and why are we still using resources to push cards on a bout board? This website was created as a <strong>free</strong> way for coaches to run a tournament smoothly with as few workers as possible.</p>
|
||||
<br>
|
||||
<p>If you would like to run a tournament, please click log in and then click sign up.</p>
|
||||
<br>
|
||||
<a href='/tournaments' class="btn btn-large btn-primary">Browse Tournaments</a>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
21
frontend/app/pages/static_pages/tutorials.html
Normal file
21
frontend/app/pages/static_pages/tutorials.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<div class="col-md-8" style="padding-left: 2%;">
|
||||
<div class="container" ui-view="main" >
|
||||
<h3>Tutorials</h3>
|
||||
<br>
|
||||
<p>Unfortunately, I do not have tutorials available at this moment in time. If you would like to learn how to use this software, please email me at jacob.wimer@gmail.com and I will gladly provide an overview of how to use this software. I've done my best to make the software intuitive and easy to use.</p>
|
||||
<br>
|
||||
<h4>Planning on using this software?</h4>
|
||||
<br>
|
||||
<p>Here is a list of features available:</p>
|
||||
<br>
|
||||
<ul>
|
||||
<li>Pool to bracket type bracket generation for up to 16 man brackets</li>
|
||||
<li>Delegate control to coaches for lineup entry</li>
|
||||
<li>Automatically updated bout board</li>
|
||||
<li>Automatically updated brackets</li>
|
||||
<li>Automatically updated team scores</li>
|
||||
<li>Delegate director privileges to multiple people for tournament administration</li>
|
||||
<li>Matches can be scored at the tables and submitted via computer or bout sheets can be brought to the head table and entered there</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,5 +1,3 @@
|
||||
<div class="col-md-8" style="padding-left: 2%;">
|
||||
<div class="container" ui-view="main" ng-controller="tournamentsController">
|
||||
<h2>Upcoming Tournaments</h2>
|
||||
<br>
|
||||
<form ng-submit="searchTournaments()">
|
||||
@@ -20,10 +18,8 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="tournament in allTournaments">
|
||||
<td>{{ tournament.name }}</td>
|
||||
<td><a ng-href="/tournaments/{{tournament.id}}">{{ tournament.name }}</a></td>
|
||||
<td>{{ tournament.date }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
169
frontend/app/pages/tournaments/tournaments-show.html
Normal file
169
frontend/app/pages/tournaments/tournaments-show.html
Normal file
@@ -0,0 +1,169 @@
|
||||
<a href="/tournaments" class="btn btn-default">Back to browse tournaments</a>
|
||||
<h1>
|
||||
{{ tournament.name }}
|
||||
</h1>
|
||||
<p>
|
||||
<strong>Address:</strong>
|
||||
{{ tournament.address }}
|
||||
</p>
|
||||
<p>
|
||||
<strong>Director:</strong>
|
||||
{{ tournament.director }}
|
||||
</p>
|
||||
<p>
|
||||
<strong>Director email:</strong>
|
||||
{{ tournament.director_email }}
|
||||
</p>
|
||||
<p>
|
||||
<strong>Tournament Type:</strong>
|
||||
{{ tournament.tournament_type }}
|
||||
</p>
|
||||
<br>
|
||||
<div class="panel panel-default">
|
||||
<a class="panel-heading" data-toggle="collapse" href="#Schools" aria-expanded="false" style="display: block;">
|
||||
<h3 class="panel-title">School Lineups and Team Scores<span class="pull-left clickable"><i class="glyphicon glyphicon-chevron-down"></i></span></h3>
|
||||
</a>
|
||||
<div id="Schools" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Score</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
|
||||
<tbody>
|
||||
<tr ng-repeat="school in tournament.schools | orderBy : 'score'">
|
||||
<td>{{ school.name }}</td>
|
||||
<td>{{ school.score }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<a class="panel-heading" data-toggle="collapse" href="#Weights" aria-expanded="false" style="display: block;">
|
||||
<h3 class="panel-title">Weights and Seeds<span class="pull-left clickable"><i class="glyphicon glyphicon-chevron-down"></i></span></h3>
|
||||
</a>
|
||||
<div id="Weights" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<p>Click weight class for seeds</p>
|
||||
<br>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Weight Class</th>
|
||||
<th>Bracket Size</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr ng-repeat="weight in tournament.weights | orderBy : 'max' : reverse">
|
||||
<td><a data-toggle="modal" data-target="#Weight{{weight.id}}">{{ weight.max }}</a></td>
|
||||
<td>{{ weight.bracket_size }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<a class="panel-heading" data-toggle="collapse" href="#Mats" aria-expanded="false" style="display: block;" >
|
||||
<h3 class="panel-title">Mats and Bout Board<span class="pull-left clickable"><i class="glyphicon glyphicon-chevron-down"></i></span></h3>
|
||||
</a>
|
||||
<div id="Mats" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>On Mat</th>
|
||||
<th>On Deck</th>
|
||||
<th>In The Hole</th>
|
||||
<th>Warm Up</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr ng-repeat="mat in tournament.mats">
|
||||
<td>{{ mat.name }}</td>
|
||||
<td>{{ mat.unfinishedMatches[0].bout_number }} {{ mat.unfinishedMatches[0].w1_name }} vs. {{ mat.unfinishedMatches[0].w2_name }}</td>
|
||||
<td>{{ mat.unfinishedMatches[1].bout_number }} {{ mat.unfinishedMatches[0].w1_name }} vs. {{ mat.unfinishedMatches[0].w2_name }}</td>
|
||||
<td>{{ mat.unfinishedMatches[2].bout_number }} {{ mat.unfinishedMatches[0].w1_name }} vs. {{ mat.unfinishedMatches[0].w2_name }}</td>
|
||||
<td>{{ mat.unfinishedMatches[3].bout_number }} {{ mat.unfinishedMatches[0].w1_name }} vs. {{ mat.unfinishedMatches[0].w2_name }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<h3>Matches not assigned</h3>
|
||||
<br>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Round</th>
|
||||
<th>Bout Number</th>
|
||||
<th>Weight Class</th>
|
||||
<th>Matchup</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr ng-repeat="match in tournament.unassignedMatches">
|
||||
<td>Round {{ match.round }}</td>
|
||||
<td>{{ match.bout_number }}</td>
|
||||
<td>{{ match.weightClass }}</td>
|
||||
<td>{{ match.w1_name }} vs. {{ match.w2_name }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--Hidden modals-->
|
||||
<div ng-repeat="weight in tournament.weights">
|
||||
<div class="modal fade bs-example-modal-lg" id="Weight{{weight.id}}" tabindex="-1" role="dialog" aria-labelledby="Weight{{weight.id}}">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h3 class="modal-title" id="gridSystemModalLabel">{{weight.max}}</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>School</th>
|
||||
<th>Seed</th>
|
||||
<th>Record</th>
|
||||
<th>Criteria</th>
|
||||
<th>Extra?</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="wrestler in weight.wrestlers | orderBy : 'original_seed' : reverse">
|
||||
<td>{{wrestler.name}}</td>
|
||||
<td>{{wrestler.school}}</td>
|
||||
<td>{{wrestler.original_seed}}</td>
|
||||
<td>{{wrestler.season_win}}-{{wrestler.season_loss}}</td>
|
||||
<td>{{wrestler.criteria}} Win %{{wrestler.seasonWinPercentage}}</td>
|
||||
<td>{{wrestler.extra}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ module.exports = function(lineman) {
|
||||
// "vendor/js/**/*.js"
|
||||
// ]
|
||||
// }
|
||||
|
||||
//Override file patterns here
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user