mirror of
https://github.com/arnaucube/commonroutesWebApp.git
synced 2026-02-07 03:16:41 +01:00
improved main, implementing new travel
This commit is contained in:
3
app.js
3
app.js
@@ -18,7 +18,8 @@ angular.module('webapp', [
|
||||
'app.travels',
|
||||
'app.users',
|
||||
'app.user',
|
||||
'app.travel'
|
||||
'app.travel',
|
||||
'app.newTravel'
|
||||
]).
|
||||
config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
|
||||
$locationProvider.hashPrefix('!');
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
<script src="views/users/users.js"></script>
|
||||
<script src="views/user/user.js"></script>
|
||||
<script src="views/travel/travel.js"></script>
|
||||
<script src="views/newTravel/newTravel.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
@@ -1,112 +1,29 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div ng-repeat="travel in travels">
|
||||
<div class="card">
|
||||
<div class="card-body" style="color:#ffffff; background-image: url('img/userProfileBackground.png');">
|
||||
<div class="pull-right">{{travel.date | date}}</div>
|
||||
<h4 class="card-title"><b>{{travel.title}}</b></h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="pull-right">
|
||||
<a ng-href="#!/user/{{travel.user._id}}">
|
||||
<img class="circle" style="max-width: 30px; max-height:30px;" ng-src="{{travel.user.avatar}}" />
|
||||
{{travel.user.username}}
|
||||
<div ng-repeat="travel in travels" ng-if="$index % 3 == 0">
|
||||
<a ng-href="#!/travel/{{travel._id}}">
|
||||
<div ng-include="'views/travelCardTemplate.html'"></div>
|
||||
</a>
|
||||
</div>
|
||||
<p>
|
||||
From: <b>{{travel.from.name}}</b>
|
||||
</p>
|
||||
<p>
|
||||
To: <b>{{travel.to.name}}</b>
|
||||
</p>
|
||||
<p>
|
||||
{{travel.joins.length}}/{{travel.seats}}
|
||||
</p>
|
||||
<p ng-show="travel.package">
|
||||
Can transport package
|
||||
</p>
|
||||
<a href="#" class="card-link">Go somewhere</a>
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
</div>
|
||||
<div ng-repeat="travel in travels">
|
||||
<div class="card">
|
||||
<img class="card-img-top" src="..." alt="Card image cap">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title">Card title</h4>
|
||||
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
|
||||
<a href="#" class="btn btn-primary">Go somewhere</a>
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<div class="panel">
|
||||
<div class="panel-heading c_deepPurpleG500to300">
|
||||
<h3 class="panel-title">
|
||||
Travels Feed
|
||||
<span class="badge badge-secondary pull-right c_deepPurpleG500to300">{{travels.length}}</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="max-height: 500px;overflow-y: scroll;">
|
||||
<table class="table table-striped table-hover ">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Title</th>
|
||||
<th>From</th>
|
||||
<th>To</th>
|
||||
<th>Date</th>
|
||||
<th>User</th>
|
||||
<th>nºJoins/Seats</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="travel in travels">
|
||||
<div ng-repeat="travel in travels" ng-if="$index % 3 == 1">
|
||||
<a ng-href="#!/travel/{{travel._id}}">
|
||||
<td>
|
||||
<i ng-show="travel.type=='offering'" title="offering" class="fa fa-car fa-2x"></i>
|
||||
<i ng-show="travel.type=='asking'" title="asking" class="fa fa-question fa-2x"></i>
|
||||
<i ng-show="travel.type=='package'" title="package" class="fa fa-archive fa-2x"></i>
|
||||
</td>
|
||||
<td>{{travel.title}}</td>
|
||||
<td>
|
||||
<b>{{travel.from.name}}</b>
|
||||
</td>
|
||||
<td>
|
||||
<b>{{travel.to.name}}</b>
|
||||
</td>
|
||||
<td>{{travel.date | date}}</td>
|
||||
<td>
|
||||
<a ng-href="#!/user/{{travel.user._id}}">
|
||||
<img class="circle" style="max-width: 30px; max-height:30px;" ng-src="{{travel.user.avatar}}" />
|
||||
{{travel.user.username}}
|
||||
<div ng-include="'views/travelCardTemplate.html'"></div>
|
||||
</a>
|
||||
</td>
|
||||
<td>{{travel.joins.length}}/{{travel.seats}}</td>
|
||||
<td><a ng-href="#!/travel/{{travel._id}}">View</a></td>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<div ng-repeat="travel in travels" ng-if="$index % 3 == 2">
|
||||
<a ng-href="#!/travel/{{travel._id}}">
|
||||
<div ng-include="'views/travelCardTemplate.html'"></div>
|
||||
</a>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-2">
|
||||
<div class="panel">
|
||||
<div class="panel-heading c_deepPurpleG500to300">
|
||||
<h3 class="panel-title">Actions</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="btn btn-block btn-sm c_green300">Create user</div>
|
||||
<div class="btn btn-block btn-sm c_blue300">Create travel</div>
|
||||
<a href="#!/network" class="btn btn-block btn-sm c_deepPurpleG500to300">View network</a>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</div>
|
||||
<div class="navbar-collapse collapse navbar-responsive-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="#!/users">Users</a></li>
|
||||
<li><a href="#!/users">Users</a></li><!-- class="active" -->
|
||||
<li><a href="#!/travels">Travels</a></li>
|
||||
</ul>
|
||||
<form ng-submit="search()" class="navbar-form navbar-left">
|
||||
@@ -20,12 +20,16 @@
|
||||
</div>
|
||||
</form>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="#!/new">
|
||||
<i title="post new travel" class="fa fa-plus fa-2x"></i>
|
||||
</a></li>
|
||||
<li>
|
||||
<a href="#!/newTravel">
|
||||
<i title="Post new travel" class="fa fa-plus fa-2x"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="" data-target="#" class="dropdown-toggle" data-toggle="dropdown">Settings
|
||||
<b class="caret"></b></a>
|
||||
<a href="" data-target="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<i title="Post new travel" class="fa fa-cog fa-2x"></i>
|
||||
<b class="caret"></b>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="javascript:void(0)">Action</a></li>
|
||||
<li><a href="javascript:void(0)">Another action</a></li>
|
||||
@@ -34,7 +38,11 @@
|
||||
<li><a href="javascript:void(0)">Separated link</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="" ng-click="logout()">Logout</a></li>
|
||||
<li>
|
||||
<a href="" ng-click="logout()">
|
||||
<i title="Post new travel" class="fa fa-power-off fa-2x"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
34
views/newTravel/newTravel.html
Normal file
34
views/newTravel/newTravel.html
Normal file
@@ -0,0 +1,34 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-2">
|
||||
<button ng-click="selectType('offering')" type="button" class="btn btn-outline-success">Offering travel</button><br>
|
||||
<button ng-click="selectType('asking')" type="button" class="btn btn-outline-success">Asking travel</button><br>
|
||||
<button ng-click="selectType('package')" type="button" class="btn btn-outline-success">Asking package</button>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<div class="panel">
|
||||
<div class="panel-heading c_deepPurpleG500to300">
|
||||
<h3 class="panel-title">
|
||||
<i ng-show="travel.type=='offering'" title="offering" class="fa fa-car fa-2x"></i>
|
||||
<i ng-show="travel.type=='asking'" title="asking" class="fa fa-question fa-2x"></i>
|
||||
<i ng-show="travel.type=='package'" title="package" class="fa fa-archive fa-2x"></i>
|
||||
<i style="margin-right: 20px;"></i>
|
||||
New {{travel.type}} travel
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div ng-include="'views/newTravel/newofferingForm.html'"></div>
|
||||
</div>
|
||||
<div class="col-sm-8">
|
||||
<leaflet width="100%" height="500px" markers="markers" center="center"
|
||||
tiles="tiles" id="map-simple-map"></leaflet>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
66
views/newTravel/newTravel.js
Normal file
66
views/newTravel/newTravel.js
Normal file
@@ -0,0 +1,66 @@
|
||||
'use strict';
|
||||
|
||||
angular.module('app.newTravel', ['ngRoute'])
|
||||
|
||||
.config(['$routeProvider', function($routeProvider) {
|
||||
$routeProvider.when('/newTravel', {
|
||||
templateUrl: 'views/newTravel/newTravel.html',
|
||||
controller: 'NewTravelCtrl'
|
||||
});
|
||||
}])
|
||||
|
||||
.controller('NewTravelCtrl', function($scope, $http, toastr) {
|
||||
$scope.travel = {};
|
||||
|
||||
$scope.selectType = function(type) {
|
||||
$scope.travel.type = type;
|
||||
};
|
||||
|
||||
//map
|
||||
$scope.center = {
|
||||
/*lat: 0,
|
||||
lng: 0,
|
||||
zoom: 1*/
|
||||
};
|
||||
$scope.bounds = {};
|
||||
$scope.markers = [];
|
||||
$scope.tiles = {
|
||||
url: "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
options: {
|
||||
attribution: '<a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
||||
}
|
||||
};
|
||||
|
||||
$scope.doNewTravel = function() {
|
||||
$scope.postNewTravel();
|
||||
};
|
||||
$scope.postNewTravel = function() {
|
||||
$http({
|
||||
url: urlapi + 'travels',
|
||||
method: "POST",
|
||||
data: $scope.travel
|
||||
})
|
||||
.then(function(data) {
|
||||
console.log(data);
|
||||
window.location = "#app/travels";
|
||||
},
|
||||
function(data) { // optional
|
||||
// failed
|
||||
console.log(data);
|
||||
toastr.warning('Complete all parameters first');
|
||||
|
||||
});
|
||||
};
|
||||
$scope.allParametersCompleted = function() {
|
||||
if (($scope.travel.title != undefined) &&
|
||||
($scope.travel.from != undefined) &&
|
||||
($scope.travel.to != undefined) &&
|
||||
($scope.travel.date != undefined) &&
|
||||
($scope.travel.seats != undefined) &&
|
||||
($scope.travel.type != undefined)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
});
|
||||
52
views/newTravel/newofferingForm.html
Normal file
52
views/newTravel/newofferingForm.html
Normal file
@@ -0,0 +1,52 @@
|
||||
<div class="form-group label-floating">
|
||||
<input ng-model="travel.title" abmFormControl class="form-control" placeholder="Title" type="text">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group label-floating col-md-6">
|
||||
<input ng-model="travel.from.name" abmFormControl class="form-control" placeholder="From" type="text">
|
||||
</div>
|
||||
<div class="form-group label-floating col-md-6">
|
||||
<input ng-model="travel.to.name" abmFormControl class="form-control" placeholder="To" type="text">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="form-group label-floating col-md-7">
|
||||
<input ng-model="travel.date" abmFormControl class="form-control" placeholder="Date" type="date">
|
||||
</div>
|
||||
<div class="form-group label-floatin col-md-5">
|
||||
<input class="form-control" type="time" name="usr_time" ng-model="travel.hour">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group col-md-4">
|
||||
<input class="form-control" type="number" name="seats" min="1" max="20" ng-model="travel.seats" placeholder="nºSeats">
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="form-group label-floating">
|
||||
<!--<input ng-model="travel.package" abmFormControl class="form-control" placeholder="Can carry package" type="text">-->
|
||||
<label class="form-check-label">
|
||||
<input class="form-check-input" type="checkbox" ng-model="travel.package"> Can carry package
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group label-floating">
|
||||
<!--<input ng-model="travel.collectivized" abmFormControl class="form-control" placeholder="Collectivized" type="text">-->
|
||||
<label class="form-check-label">
|
||||
<input class="form-check-input" type="checkbox" ng-model="travel.collectivized"> Collectivized
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group label-floating">
|
||||
<input ng-model="travel.description" abmFormControl class="form-control" placeholder="Description" type="text">
|
||||
</div>
|
||||
|
||||
<p class="padding" ng-show="allParametersCompleted()">
|
||||
<button ng-click="closeNewOfferingTravel()" class="btn btn-raised c_grey500">
|
||||
Cancel
|
||||
</button>
|
||||
<button ng-click="doNewTravel()" class="btn btn-raised c_deepPurple300 pull-right">
|
||||
Create travel
|
||||
</button>
|
||||
</p>
|
||||
</form>
|
||||
@@ -1,47 +1,8 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="panel">
|
||||
<div class="panel-heading c_deepPurpleG500to300">
|
||||
<h3 class="panel-title">{{travel.title}}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="list-group">
|
||||
<a ng-href="#!/user/{{user._id}}" class="list-group-item">
|
||||
<div class="row-picture">
|
||||
<img class="circle" ng-src="{{travel.user.avatar}}" alt="icon">
|
||||
</div>
|
||||
<div class="row-content">
|
||||
<h4 class="list-group-item-heading">{{travel.user.username}}</h4>
|
||||
|
||||
<p class="list-group-item-text">@{{travel.user.telegram}}</p>
|
||||
<p class="list-group-item-text">{{travel.user.phone}}</p>
|
||||
</div>
|
||||
<div class="list-group-separator"></div>
|
||||
</a>
|
||||
</div>
|
||||
<p>
|
||||
From: <b>{{travel.from.name}}</b>
|
||||
</p>
|
||||
<p>
|
||||
To: <b>{{travel.from.name}}</b>
|
||||
</p>
|
||||
<p ng-show="travel.package">
|
||||
Can transport package
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<div class="panel-heading c_deepPurpleG500to300">
|
||||
<h3 class="panel-title">Map</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<leaflet width="100%" height="300px" markers="markers" center="center"
|
||||
tiles="tiles" id="map-simple-map"></leaflet>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<div ng-include="'views/travelCardTemplate.html'"></div>
|
||||
<br>
|
||||
<div class="panel">
|
||||
<div class="panel-heading c_deepPurpleG500to300">
|
||||
<h3 class="panel-title">{{travel.joinPetitions.length}} Pendent joins</h3>
|
||||
@@ -62,9 +23,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3">
|
||||
<div class="panel">
|
||||
<div class="panel-heading c_deepPurpleG500to300">
|
||||
<h3 class="panel-title">Accepted users {{travel.joins.length}}/{{travel.seats}}</h3>
|
||||
@@ -86,16 +44,16 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2">
|
||||
<div class="col-sm-8">
|
||||
<div class="panel">
|
||||
<div class="panel-heading c_deepPurple500">
|
||||
<h3 class="panel-title">Admin actions</h3>
|
||||
<div class="panel-heading c_deepPurpleG500to300">
|
||||
<h3 class="panel-title">Map</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<!--<div class="btn btn-block btn-sm c_orange300">Ban travel</div>-->
|
||||
<div ng-click="deleteTravel()" class="btn btn-block btn-sm c_red300">Delete travel</div>
|
||||
<leaflet width="100%" height="500px" markers="markers" center="center"
|
||||
tiles="tiles" id="map-simple-map"></leaflet>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
32
views/travelCardTemplate.html
Normal file
32
views/travelCardTemplate.html
Normal file
@@ -0,0 +1,32 @@
|
||||
<div class="card">
|
||||
<div class="card-body" style="color:#ffffff; background-image: url('img/userProfileBackground.png');">
|
||||
<div class="pull-right">{{travel.date | date}}</div>
|
||||
<h4 class="card-title">
|
||||
<i ng-show="travel.type=='offering'" title="offering" class="fa fa-car fa-2x"></i>
|
||||
<i ng-show="travel.type=='asking'" title="asking" class="fa fa-question fa-2x"></i>
|
||||
<i ng-show="travel.type=='package'" title="package" class="fa fa-archive fa-2x"></i>
|
||||
<i style="margin-right: 20px;"></i>
|
||||
<b>{{travel.title}}</b>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="pull-right">
|
||||
<a ng-href="#!/user/{{travel.user._id}}">
|
||||
<img class="circle" style="max-width: 30px; max-height:30px;" ng-src="{{travel.user.avatar}}" />
|
||||
{{travel.user.username}}
|
||||
</a>
|
||||
</div>
|
||||
<p>
|
||||
From: <b>{{travel.from.name}}</b>
|
||||
</p>
|
||||
<p>
|
||||
To: <b>{{travel.to.name}}</b>
|
||||
</p>
|
||||
<p>
|
||||
Seats: {{travel.joins.length}}/{{travel.seats}}
|
||||
</p>
|
||||
<p ng-show="travel.package">
|
||||
Can transport package
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user