Commit e285942c authored by Thodoris Nestoridis's avatar Thodoris Nestoridis

search bar

parent faeeecfc
...@@ -2146,6 +2146,21 @@ ...@@ -2146,6 +2146,21 @@
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
"dev": true "dev": true
}, },
"angular-notifier": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/angular-notifier/-/angular-notifier-6.0.1.tgz",
"integrity": "sha512-eC312pNkHfjBU1nflOxtRKbkuxZGthZj23wK1unZ9u+sIhdrUm2Fd2j4Tud8+5z9wQX+ec59v4pBfayO3AFx+Q==",
"requires": {
"tslib": "^1.9.0"
},
"dependencies": {
"tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
}
}
},
"ansi-colors": { "ansi-colors": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
"@angular/platform-browser-dynamic": "~11.1.2", "@angular/platform-browser-dynamic": "~11.1.2",
"@angular/router": "~11.1.2", "@angular/router": "~11.1.2",
"@ng-bootstrap/ng-bootstrap": "^9.0.2", "@ng-bootstrap/ng-bootstrap": "^9.0.2",
"angular-notifier": "^6.0.1",
"bootstrap": "^4.6.0", "bootstrap": "^4.6.0",
"jwt-decode": "^3.1.2", "jwt-decode": "^3.1.2",
"moment": "^2.29.1", "moment": "^2.29.1",
......
...@@ -341,9 +341,11 @@ ...@@ -341,9 +341,11 @@
<!-- Resources --> <!-- Resources -->
<h2>Resources</h2> <h2>Resources</h2>
<p>Here are some links to help you get started:</p> <p>Here are some links to help you get started:</p>
<router-outlet></router-outlet>
<notifier-container></notifier-container>
<router-outlet></router-outlet>
<!-- Footer --> <!-- Footer -->
<footer> <footer>
Love Angular?&nbsp; Love Angular?&nbsp;
......
...@@ -18,6 +18,8 @@ import { BoilerplateListComponent } from './components/boilerplate-list/boilerpl ...@@ -18,6 +18,8 @@ import { BoilerplateListComponent } from './components/boilerplate-list/boilerpl
import { AddPrefixComponent } from './components/add-prefix/add-prefix.component'; import { AddPrefixComponent } from './components/add-prefix/add-prefix.component';
import { PrefixDetailsComponent } from './components/prefix-details/prefix-details.component'; import { PrefixDetailsComponent } from './components/prefix-details/prefix-details.component';
import { PrefixListComponent } from './components/prefix-list/prefix-list.component'; import { PrefixListComponent } from './components/prefix-list/prefix-list.component';
import { NotifierModule } from "angular-notifier";
...@@ -38,7 +40,8 @@ import { PrefixListComponent } from './components/prefix-list/prefix-list.compon ...@@ -38,7 +40,8 @@ import { PrefixListComponent } from './components/prefix-list/prefix-list.compon
AppRoutingModule, AppRoutingModule,
FormsModule, FormsModule,
HttpClientModule, HttpClientModule,
NgbModule NgbModule,
NotifierModule,
], ],
providers: [ providers: [
AuthService, AuthService,
......
<div> <div>
<div class="submit-form"> <div class="submit-form">
<div *ngIf="!submitted">
<div class="form-group"> <div class="form-group">
<label for="title">Requirement Title</label> <label for="title">Requirement Title</label>
<input <input
...@@ -48,12 +48,8 @@ ...@@ -48,12 +48,8 @@
/> />
</div> </div>
<button (click)="saveBoilerplate()" class="btn btn-success">Submit</button> <button (click)="saveBoilerplate()" class="btn btn-success" >Submit</button>
</div>
<div *ngIf="submitted">
<h4>Tutorial was submitted successfully!</h4>
<button class="btn btn-success" (click)="newBoilerplate()">Add</button>
</div>
</div> </div>
</div> </div>
\ No newline at end of file
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import {Router} from '@angular/router';
import { Boilerplate } from 'src/app/models/boilerplate.model'; import { Boilerplate } from 'src/app/models/boilerplate.model';
import { BoilerplateService } from 'src/app/services/boilerplate.service'; import { BoilerplateService } from 'src/app/services/boilerplate.service';
import { NotifierService } from "angular-notifier";
@Component({ @Component({
selector: 'app-add-boilerplate', selector: 'app-add-boilerplate',
...@@ -15,8 +17,11 @@ export class AddBoilerplateComponent implements OnInit { ...@@ -15,8 +17,11 @@ export class AddBoilerplateComponent implements OnInit {
has_suffix: false has_suffix: false
}; };
submitted = false; submitted = false;
private readonly notifier: NotifierService;
constructor(private boilerplatelService: BoilerplateService) { } constructor(private boilerplatelService: BoilerplateService, private router:Router, notifierService: NotifierService) {
this.notifier = notifierService;
}
ngOnInit(): void { ngOnInit(): void {
} }
...@@ -34,9 +39,12 @@ export class AddBoilerplateComponent implements OnInit { ...@@ -34,9 +39,12 @@ export class AddBoilerplateComponent implements OnInit {
response => { response => {
console.log(response); console.log(response);
this.submitted = true; this.submitted = true;
this.router.navigate(['/boilerplates']);
}, },
error => { error => {
console.log(error); console.log(error);
//error, warning, success, info, default
this.notifier.notify("warning",(JSON.stringify(error["error"]["title"][0])));
}); });
} }
......
...@@ -2,6 +2,16 @@ ...@@ -2,6 +2,16 @@
<div *ngIf="currentboilerplate.id" class="edit-form"> <div *ngIf="currentboilerplate.id" class="edit-form">
<h4>Boilerplate</h4> <h4>Boilerplate</h4>
<form> <form>
<div class="form-group">
<label for="title">Title</label>
<input
type="text"
class="form-control"
id="title"
[(ngModel)]="currentboilerplate.title"
name="title"
/>
</div>
<div class="form-group"> <div class="form-group">
<label for="has_prefix">Prefix</label> <label for="has_prefix">Prefix</label>
<input <input
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
<input <input
type="text" type="text"
class="form-control" class="form-control"
placeholder="Search mechanism not working" placeholder="Search by title"
[(ngModel)]="boilerplates" [(ngModel)]="title"
(keyup.enter)="SearchTitle()"
/> />
<div class="input-group-append"> <div class="input-group-append">
<button <button
...@@ -19,7 +20,7 @@ ...@@ -19,7 +20,7 @@
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<h4>Tutorials List</h4> <h4>Boilerplate List</h4>
<ul class="list-group"> <ul class="list-group">
<li <li
class="list-group-item" class="list-group-item"
...@@ -53,11 +54,9 @@ ...@@ -53,11 +54,9 @@
Edit Edit
</a> </a>
</div> </div>
</div>
<div *ngIf="!currentBoilerplate"> <div>
<br /> <button class="btn btn-success" routerLink="/add-boilerplate">Add</button>
<p>Please click on a Boilerplate...</p>
</div>
</div> </div>
</div> </div>
\ No newline at end of file
...@@ -45,15 +45,21 @@ export class BoilerplateListComponent implements OnInit { ...@@ -45,15 +45,21 @@ export class BoilerplateListComponent implements OnInit {
SearchTitle(): void { SearchTitle(): void {
this.boilerplateService.findByTitle(this.title) if (this.title != ''){
.subscribe( this.boilerplateService.findByTitle(this.title)
data => { .subscribe(
this.boilerplates = data; data => {
console.log(data); this.boilerplates = data;
}, console.log(data);
error => { },
console.log(error); error => {
}); console.log(error);
});
}
else {
this.retrieveBoilerplates();
}
} }
} }
...@@ -32,9 +32,8 @@ export class BoilerplateService { ...@@ -32,9 +32,8 @@ export class BoilerplateService {
return this.http.delete(`${baseUrl}${id}`); return this.http.delete(`${baseUrl}${id}`);
} }
//In case we want to find by something
findByTitle(title: any): Observable<Boilerplate[]> { findByTitle(title: any): Observable<Boilerplate[]> {
return this.http.get<Boilerplate[]>(`${baseUrl}?title=${title}`); return this.http.get<Boilerplate[]>(`${baseUrl}title=${title}`);
} }
} }
...@@ -4,3 +4,6 @@ ...@@ -4,3 +4,6 @@
/* Importing Bootstrap SCSS file. */ /* Importing Bootstrap SCSS file. */
@import '~bootstrap/scss/bootstrap'; @import '~bootstrap/scss/bootstrap';
/* Import angular-notifier. */
@import '~angular-notifier/styles';
\ No newline at end of file
from django.urls import path from django.urls import path, re_path
from django.conf.urls import url from django.conf.urls import url
from .views import user_views, requirements_views, main_req_views, suffix_req_views from .views import user_views, requirements_views, main_req_views, suffix_req_views
...@@ -8,6 +8,7 @@ urlpatterns = [ ...@@ -8,6 +8,7 @@ urlpatterns = [
path('users/<uuid:pk>/', user_views.UserDetail.as_view(), name='api-post-details'), path('users/<uuid:pk>/', user_views.UserDetail.as_view(), name='api-post-details'),
path('boilerplates/', requirements_views.BoilerplateListCreateAPIView.as_view(), name='api-requirements-list'), path('boilerplates/', requirements_views.BoilerplateListCreateAPIView.as_view(), name='api-requirements-list'),
path('boilerplates/<int:pk>/', requirements_views.BoilerplateDetailsAPIView.as_view(), name='api-requirements-details'), path('boilerplates/<int:pk>/', requirements_views.BoilerplateDetailsAPIView.as_view(), name='api-requirements-details'),
re_path('boilerplates/(?:title=(?P<title_1>\w+)/)?$', requirements_views.BoilerplateList.as_view(), name='api-requirements-details-per-title'),
#'''Prefix''' #'''Prefix'''
path('boilerplates/<int:boilerplate>/prefix/', requirements_views.PrefixListAPIView.as_view(), name='api-prefix-list'), path('boilerplates/<int:boilerplate>/prefix/', requirements_views.PrefixListAPIView.as_view(), name='api-prefix-list'),
......
...@@ -27,6 +27,23 @@ class BoilerplateListCreateAPIView(ListCreateAPIView): ...@@ -27,6 +27,23 @@ class BoilerplateListCreateAPIView(ListCreateAPIView):
#write_fuseki = fuseki.FusekiActions() #write_fuseki = fuseki.FusekiActions()
#write_fuseki.write(serializer.data) #write_fuseki.write(serializer.data)
class BoilerplateList(ListAPIView):
"""
API view to retrieve list of posts based on title of Boilerplate
"""
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
serializer_class = BoilerplateSerializer
queryset = Boilerplate.objects.all()
def get_queryset(self):
title = self.kwargs['title_1']
#print(title)
queryset_title = Boilerplate.objects.filter(title = title)
return queryset_title
class BoilerplateDetailsAPIView(RetrieveUpdateDestroyAPIView): class BoilerplateDetailsAPIView(RetrieveUpdateDestroyAPIView):
""" """
API view to retrieve, update or delete post API view to retrieve, update or delete post
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment