@@ -269,58 +269,65 @@ class CodeGovAPIClient {
269269
270270
271271 tasks ( params ) {
272- let { agencies, from, languages, skillLevels, size, timeRequired } = params || { }
272+ console . log ( "starting client tasks with" , params )
273+ let { agencies, categories, from, languages, page, skillLevels, size, timeRequired } = params || { }
273274
274275 // clean and normalize
275276 agencies = trim ( lower ( agencies ) )
276- from = Number ( size || 0 )
277+ categories = trim ( lower ( categories ) )
277278 languages = trim ( lower ( languages ) )
278279 size = Number ( size || 10 )
279280 skillLevels = trim ( lower ( skillLevels ) )
280281 timeRequired = trim ( lower ( timeRequired ) )
281282
282- const cacheKey = JSON . stringify ( { agencies , languages , size , skillLevels , timeRequired } )
283-
284- if ( this . cache . hasOwnProperty ( cacheKey ) ) {
285- return Promise . resolve ( this . cache [ cacheKey ] )
283+ if ( from ) {
284+ from = Number ( from )
285+ } else if ( page ) {
286+ from = ( page - 1 ) * size
286287 } else {
287- return get ( this . tasksUrl )
288- . then ( response => {
289- const result = {
290- tasks : [ ]
291- }
292- const items = response . data . items
293- const count = items . length
294- for ( let i = 0 ; i < count ; i ++ ) {
295- const task = items [ i ]
296- const effort = trim ( lower ( task . effort ) )
297- const skill = trim ( lower ( task . skill ) )
298-
299- if ( some ( agencies ) && ! includes ( agencies , task . agency . name ) ) {
300- return
301- }
288+ from = this . from
289+ }
302290
303- if ( some ( languages ) && ! overlaps ( languages , task . languages ) ) {
304- return
305- }
291+ return this . getJSON ( this . tasksUrl )
292+ . then ( data => {
293+ const result = {
294+ tasks : [ ]
295+ }
296+ const items = data . items
297+ const count = items . length
298+ for ( let i = 0 ; i < count ; i ++ ) {
299+ const task = items [ i ]
300+ const effort = trim ( lower ( task . effort ) )
301+ const skill = trim ( lower ( task . skill ) )
302+
303+ if ( some ( agencies ) && ! includes ( agencies , trim ( lower ( task . agency . acronym ) ) ) ) {
304+ continue
305+ }
306306
307- if ( some ( skillLevels ) && ! includes ( skillLevels , skill ) ) {
308- return
309- }
307+ if ( some ( categories ) && ! includes ( categories , trim ( lower ( task . type ) ) ) ) {
308+ continue
309+ }
310310
311- if ( some ( timeRequired ) && ! includes ( timeRequired , effort ) ) {
312- return
313- }
311+ if ( some ( languages ) && ! overlaps ( languages , trim ( lower ( task . languages ) ) ) ) {
312+ continue
313+ }
314314
315- result . tasks . push ( task )
315+ if ( some ( skillLevels ) && ! includes ( skillLevels , skill ) ) {
316+ continue
317+ }
316318
319+ if ( some ( timeRequired ) && ! includes ( timeRequired , effort ) ) {
320+ continue
317321 }
318- result . total = result . tasks . length
319- result . tasks = result . tasks . slice ( from , from + size )
320- this . cache [ cacheKey ] = result
321- return result
322- } )
323- }
322+
323+ result . tasks . push ( task )
324+
325+ }
326+ result . total = result . tasks . length
327+ console . log ( "slicing from " , from , "with size" , size )
328+ result . tasks = result . tasks . slice ( from , from + size )
329+ return result
330+ } )
324331 }
325332}
326333
0 commit comments