Skip to content

Commit 38e3295

Browse files
committedSep 4, 2021
added search functionality
1 parent 9c31bf6 commit 38e3295

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed
 

‎api/views.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from datetime import datetime
1919
from django.utils.timezone import now
2020
from django.utils import timezone
21-
21+
from rest_framework import filters
2222

2323

2424
class ToDoViewSets(viewsets.ModelViewSet):
@@ -27,7 +27,8 @@ class ToDoViewSets(viewsets.ModelViewSet):
2727
serializer_class = ToDoSerializer
2828
parser_classes = (MultiPartParser, FormParser, JSONParser)
2929
authentication_classes = [SessionAuthentication, BasicAuthentication]
30-
30+
search_fields= ['title','desc']
31+
filter_backends = (filters.SearchFilter,)
3132

3233
def get_queryset(self):
3334
return ToDos.objects.filter(user=self.request.user)

‎templates/index.html

+18-7
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ <h3 class="bg-success text-capitalize"> Hi There, {{user}}</h3>
120120
<button type="submit" class="btn btn-primary" onclick="submitToDo(event)">Add New</button>
121121
</div>
122122
</form>
123+
<div class="text-center card py-2">
124+
<label for="searchinput" class="mr-4">Search ToDo</label>
125+
<input type="text" name="seach" id="searchinput" oninput="searchThis(event)">
126+
</div>
123127
<div id="todoArea" class="list-group"></div>
124128
</div>
125129
</div>
@@ -134,6 +138,12 @@ <h3 class="bg-success text-capitalize"> Hi There, {{user}}</h3>
134138
var todoList;
135139

136140

141+
function searchThis(event){
142+
event.preventDefault()
143+
createToDoList(event.target.value)
144+
}
145+
146+
137147
// cokie validation
138148
function getCookie(name) { // copied from django doc
139149
if (!document.cookie) {
@@ -176,7 +186,7 @@ <h3 class="bg-success text-capitalize"> Hi There, {{user}}</h3>
176186
function submitToDo(e) {
177187
e.preventDefault()
178188
var dat = new FormData($('form')[0])
179-
console.log('----------------------', Object.fromEntries(new FormData($('form')[0])))
189+
// console.log('----------------------', Object.fromEntries(new FormData($('form')[0])))
180190

181191

182192
fetch(url, {
@@ -187,7 +197,7 @@ <h3 class="bg-success text-capitalize"> Hi There, {{user}}</h3>
187197
body: dat
188198
}
189199
).then(function (res) {
190-
console.log(res)
200+
// console.log(res)
191201
if (res.status == 201) {
192202
createToDoList()
193203
$('form')[0].reset();
@@ -200,18 +210,19 @@ <h3 class="bg-success text-capitalize"> Hi There, {{user}}</h3>
200210

201211

202212
// GET request, list all todos
203-
function createToDoList() {
204-
fetch(url).then(res => res.json()).then(function (data) {
213+
function createToDoList(searchparams) {
214+
let slug = searchparams!=undefined ? `?search=${searchparams}` : ''
215+
fetch(url+slug).then(res => res.json()).then(function (data) {
205216
var txt = ''
206217
todoList = []
207-
console.log(data)
218+
// console.log(data)
208219

209220

210221
for (let item of data) {
211222
let due = item.duedate ? `<label class="duedate">Due in ${dtParser(item.duedate)}</label>` : ''
212223
let date = item.completed ? `<label class="completedate">${dtParser(item.datecompleted)}</label>` :due
213224

214-
console.log(item.completed)
225+
// console.log(item.completed)
215226
txt += `<div class='list-group-item todoitem ${item.completed ? "checked" : ""}'>
216227
<div class="inforow">
217228
<div class="check-container">
@@ -279,7 +290,7 @@ <h3 class="bg-success text-capitalize"> Hi There, {{user}}</h3>
279290
method: 'DELETE',
280291
headers: headers,
281292
}).then(function (response) {
282-
console.log(response)
293+
// console.log(response)
283294
if (response.status == 204) {
284295
createToDoList()
285296
}

0 commit comments

Comments
 (0)
Please sign in to comment.