1- define ( [ 'jquery' , 'ractive' , 'rv!templates/template' , 'text!css/widget-styles.css' ] , function ( $ , Ractive , mainTemplate , css ) {
1+ define ( [ 'jquery' , 'ractive' , 'rv!templates/template' , 'text!css/widget-styles.css' , 'app/helpers' ] , function ( $ , Ractive , mainTemplate , css , helpers ) {
22
33 'use strict' ;
44
55 $ . noConflict ( ) ;
6- var MAX_DETAIL_LEN = 100 ;
76 var xhr_suggestions = null ;
87 var timeout_suggestions = null ;
98 var search_widget = {
@@ -89,7 +88,7 @@ define(['jquery', 'ractive', 'rv!templates/template', 'text!css/widget-styles.cs
8988 ev . original . preventDefault ( ) ;
9089 if ( newPage > totalPages || newPage < 1 ) return false ;
9190
92- changePagination ( that , newPage ) ;
91+ helpers . changePagination ( that , newPage ) ;
9392 doSearch ( that , false ) ;
9493 }
9594 } ) ;
@@ -110,17 +109,12 @@ define(['jquery', 'ractive', 'rv!templates/template', 'text!css/widget-styles.cs
110109 url : url + '/' + term + '?page=' + page + '&page_size=' + perPage ,
111110 dataType : "json"
112111 } ) . done ( function ( resp ) {
113- var results = resp . results . map ( function ( r ) {
114- var detail = r . hasOwnProperty ( 'meta_description' ) ? r . meta_description : r . content ;
115- detail = detail . length > MAX_DETAIL_LEN ? detail . substring ( 0 , MAX_DETAIL_LEN ) + '...' : detail ;
116- var title = r . hasOwnProperty ( 'meta_title' ) ? r . meta_title : r . title ;
117- return { link : r . url , title : title , detail : detail } ;
118- } ) ;
112+ var results = helpers . mapSearchResults ( resp . results ) ;
119113
120114 that . set ( 'total' , resp . qty ) ;
121115 that . set ( 'results' , results ) ;
122116
123- if ( reset ) resetPagination ( that ) ;
117+ if ( reset ) helpers . resetPagination ( that ) ;
124118
125119 } ) . fail ( function ( resp ) {
126120 // error response
@@ -135,9 +129,7 @@ define(['jquery', 'ractive', 'rv!templates/template', 'text!css/widget-styles.cs
135129 url : 'https://' + that . baseUrl + '/api/public/v1/suggestions/' + that . context + '/' + term ,
136130 dataType : "json"
137131 } ) . done ( function ( resp ) {
138- var results = resp . results . map ( function ( r ) {
139- return { link : r . payload , title : r . term } ;
140- } ) ;
132+ var results = helpers . mapSuggestions ( resp . results ) ;
141133 xhr_suggestions = null ;
142134 that . set ( 'suggestions' , results ) ;
143135
@@ -146,64 +138,6 @@ define(['jquery', 'ractive', 'rv!templates/template', 'text!css/widget-styles.cs
146138 } ) ;
147139 }
148140
149- function resetPagination ( that ) {
150- var total = that . get ( 'total' ) ;
151- var perPage = that . get ( 'perPage' ) ;
152- var totalPages = Math . ceil ( total / perPage ) ;
153- var lastPage = ( totalPages < 5 ) ? totalPages : 5 ;
154- var newPagesToShow = [ ] ;
155-
156- for ( var i = 1 ; i <= lastPage ; i ++ ) {
157- newPagesToShow . push ( i ) ;
158- }
159-
160- that . set ( 'page' , 1 ) ;
161- that . set ( 'pagesToShow' , newPagesToShow ) ;
162-
163- // change results
164- var newResultLimit = ( perPage ) ;
165- newResultLimit = ( newResultLimit > total ) ? total : newResultLimit ;
166- that . set ( 'fromResult' , 1 ) ;
167- that . set ( 'toResult' , newResultLimit ) ;
168- }
169-
170- function changePagination ( that , newPage ) {
171- var total = that . get ( 'total' ) ;
172- var pagesToShow = that . get ( 'pagesToShow' ) ;
173- var perPage = that . get ( 'perPage' ) ;
174- var lastPage = pagesToShow [ pagesToShow . length - 1 ] ;
175- var firstPage = pagesToShow [ 0 ] ;
176- var totalPages = Math . ceil ( total / perPage ) ;
177- var newPagesToShow = [ ] ;
178-
179- that . set ( 'page' , newPage ) ;
180-
181- // change results
182- var newResultLimit = ( newPage * perPage ) ;
183- newResultLimit = ( newResultLimit > total ) ? total : newResultLimit ;
184- that . set ( 'fromResult' , ( ( newPage - 1 ) * perPage ) + 1 ) ;
185- that . set ( 'toResult' , newResultLimit ) ;
186-
187- // change pagination
188- if ( newPage > lastPage - 1 || newPage < firstPage + 1 ) {
189- var pageFrom ;
190- var pageTo = ( ( newPage + 2 ) < 5 ) ? 5 : ( newPage + 2 ) ;
191- newPagesToShow = [ ]
192-
193- if ( pageTo > totalPages ) {
194- pageTo = totalPages ;
195- }
196-
197- pageFrom = ( ( pageTo - 4 ) < 1 ) ? 1 : ( pageTo - 4 ) ;
198-
199- for ( var i = pageFrom ; i <= pageTo ; i ++ ) {
200- newPagesToShow . push ( i ) ;
201- }
202-
203- that . set ( 'pagesToShow' , newPagesToShow ) ;
204- }
205- }
206-
207141 function centerPopup ( el ) {
208142 var winW = $ ( window ) . width ( ) ;
209143 var newPopWidth = winW * 0.8 ;
0 commit comments