PageSourceSearch

https://www.alukoenigstahl.at/Style%20Library/js/Service/ServicesAKS.js?20230713

js alukoenigstahl.at collected 2026-09-25 02:52:50 UTC 27,703 bytes, 770 lines download raw bytes

1var aks_homepage = angular.module('aks_homepage', []);
2
3aks_homepage.service('AKSSharepointService', function ($http, $q, $timeout) {
4
5
6	this.getContacts = function (pagesize, pagingInfo, state, region, zip, listname, stateTargetColumn, regionTargetColumn) {
7		var listName = 'Team';
8
9		var deferred = $q.defer();
10
11		var columns = "Presse_x0020_Kontakt_x0020_Mail_,AKSPresseContactMail1,AKSContactDepartment,AKSContactCategory,AKSGLocation,AKSContactTitlePrefix,AKSContactTitleSuffix,FirstName,FullName,EMail,Company,JobTitle,WorkPhone,HomePhone,CellPhone,WorkFax,WorkAddress,WorkCity,WorkState,WorkZip,WorkCountry,AKSRegion,AKSRegionTaxHTField,AKSSortId";
12
13		var rowLimit = "<RowLimit>" + pagesize + "</RowLimit>";
14		var orderBy = "<OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy>";
15
16		var whereClauses = [];
17
18		if (state) {
19			whereClauses.push(
20					{
21						FieldName: stateTargetColumn,
22						Comparison: 'Eq',
23						Value: {
24							Type: 'Text',
25							Value: state
26						}
27					}
28				);
29		}
30
31		if (region) {
32			whereClauses.push(
33					{
34						FieldName: regionTargetColumn,
35						Comparison: 'Eq',
36						Value: {
37							Type: 'Text',
38							Value: region
39						}
40					}
41				);
42		}
43
44		if (zip) {
45			whereClauses.push(
46					{
47						FieldName: 'WorkZip',
48						Comparison: 'Contains',
49						Value: {
50							Type: 'Text',
51							Value: zip
52						}
53					}
54				);
55		}
56
57		var whereClause = buildWhereClause(whereClauses);
58		var query = '<Query>'
59						+ whereClause
60						+ orderBy
61						+ rowLimit
62					+
63					'</Query>';
64
65		GetJSOMRequest(listname, columns, query, pagesize, pagingInfo).then(
66				function (result) {
67					deferred.resolve(result);
68				},
69				function (exc) {
70					console.log('error while fetching data... (getContacts):' +exc)
71				}
72			);
73		return deferred.promise;
74	}
75
76
77
78	/*
79		Beispiel für whereClauses (JSON):	  
80			[
81				{ 
82					FieldName : 'AKSRegion',
83					Comparison : 'Eq',
84					Value {
85						Type : 'Text',
86						Value : 123
87					}
88				}
89			]
90					
91	*/
92	buildWhereClause = function (whereClauses) {
93		if (!whereClauses || whereClauses.length == 0) return '';
94
95		var totalClause = '';
96		whereClauses.forEach(function (clause) {
97			// eg.: <Where><Eq><FieldRef Name='AKSRegion' /><Value Type='Text'>" + region + "</Value></Eq></Where>
98			var fieldRef = "<FieldRef Name='" + clause.FieldName + "' />";
99			var valueType = "<Value Type='" + clause.Value.Type + "'>" + clause.Value.Value + "</Value>";
100			var comparisonStart = "<" + clause.Comparison + ">";
101			var comparisonEnd = "</" + clause.Comparison + ">";
102			var singleClause =
103					comparisonStart
104					+ fieldRef
105					+ valueType
106					+ comparisonEnd;
107
108			totalClause = totalClause + singleClause;
109		});
110		// aktuell alles mit AND verknüpfen (evtl. auch noch generisch implementieren)
111		if (whereClauses.length > 1) {
112			totalClause = '<And>' + totalClause + '</And>'
113		}
114		totalClause = '<Where>' + totalClause + '</Where>';
115		return totalClause;
116	}
117
118	this.GetJSOMRequestTerms = function (termname) {
119		var deferred = $q.defer();
120		var clientContext = SP.ClientContext.get_current();
121
122		var taxSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(clientContext);
123
124		var termStore = taxSession.getDefaultSiteCollectionTermStore();
125		// Set up Term Query for termStore.getTerms()
126		var termQuery = new SP.Taxonomy.LabelMatchInformation(clientContext);
127		termQuery.set_trimUnavailable(false);
128		termQuery.set_termLabel(termname);
129		var termsStoreTerms = termStore.getTerms(termQuery);
130		clientContext.load(taxSession);
131		clientContext.load(termStore);
132		clientContext.load(termsStoreTerms);
133
134		clientContext.executeQueryAsync(
135			Function.createDelegate(this, function () {
136				deferred.resolve(termsStoreTerms);
137			}),
138			Function.createDelegate(this, function (sender, args) {
139				deferred.reject('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
140			})
141		);
142		return deferred.promise;
143
144	};
145
146	GetJSOMRequestFolder = function (listName, columns, conditions, pagesize, pageposition, folder) {
147		var deferred = $q.defer();
148		var clientContext = SP.ClientContext.get_current();
149		var oList = clientContext.get_web().get_lists().getByTitle(listName);
150
151		var query = "<View  Scope='RecursiveAll' ><ViewFields>"
152		var columnsArray = columns.split(",");
153		for (var i = 0; i < columnsArray.length; i++) {
154			var fieldRef = "<FieldRef Name='" + columnsArray[i] + "' />";
155			query += fieldRef;
156		}
157		query += "</ViewFields>";
158
159		if (conditions != "");
160		query += conditions;
161
162		if (pagesize != "")
163			query += "<RowLimit>" + pagesize + "</RowLimit>";
164
165		query += "</View>"
166
167		var camlQuery = new SP.CamlQuery();
168		if (typeof (folder) != 'undefined' && folder.length > 0)
169			camlQuery.set_folderServerRelativeUrl(folder);
170
171		if (pageposition != "")
172			camlQuery.set_listItemCollectionPosition(pageposition);
173
174		camlQuery.set_viewXml(query);
175
176
177		camlQuery.set_folderServerRelativeUrl(folder);
178
179		var collListItems = oList.getItems(camlQuery);
180
181		clientContext.load(collListItems);
182
183		clientContext.executeQueryAsync(
184			Function.createDelegate(this, function () {
185				deferred.resolve(collListItems);
186			}),
187			Function.createDelegate(this, function (sender, args) {
188				deferred.reject('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
189			})
190		);
191		return deferred.promise;
192	};
193
194	GetJSOMRequestRootWeb = function (listName, columns, conditions, pagesize, pageposition) {
195		var deferred = $q.defer();
196		var clientContext = SP.ClientContext.get_current();
197		var oList = clientContext.get_site().get_rootWeb().get_lists().getByTitle(listName);
198
199		var query = "<View  Scope='RecursiveAll'><ViewFields>"
200		var columnsArray = columns.split(",");
201		for (var i = 0; i < columnsArray.length; i++) {
202			var fieldRef = "<FieldRef Name='" + columnsArray[i] + "' />";
203			query += fieldRef;
204		}
205		query += "</ViewFields>";
206
207		if (conditions != "");
208		query += conditions;
209
210		if (pagesize != "")
211			query += "<RowLimit>" + pagesize + "</RowLimit>";
212
213		query += "</View>"
214
215		var camlQuery = new SP.CamlQuery();
216
217		if (pageposition != "")
218			camlQuery.set_listItemCollectionPosition(pageposition);
219
220		camlQuery.set_viewXml(query);
221
222		var collListItems = oList.getItems(camlQuery);
223
224		clientContext.load(collListItems);
225
226		clientContext.executeQueryAsync(
227			Function.createDelegate(this, function () {
228				deferred.resolve(collListItems);
229			}),
230			Function.createDelegate(this, function (sender, args) {
231				deferred.reject('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
232			})
233		);
234		return deferred.promise;
235	};
236
237	GetJSOMRequest = function (listName, columns, conditions, pagesize, pageposition) {
238		var deferred = $q.defer();
239		var clientContext = SP.ClientContext.get_current();
240		var oList = clientContext.get_web().get_lists().getByTitle(listName);
241
242		var query = "<View  Scope='RecursiveAll'><ViewFields>"
243		var columnsArray = columns.split(",");
244		for (var i = 0; i < columnsArray.length; i++) {
245			var fieldRef = "<FieldRef Name='" + columnsArray[i] + "' />";
246			query += fieldRef;
247		}
248		query += "</ViewFields>";
249
250		if (conditions != "");
251		query += conditions;
252
253		if (pagesize != "")
254			query += "<RowLimit>" + pagesize + "</RowLimit>";
255
256		query += "</View>"
257
258		var camlQuery = new SP.CamlQuery();
259
260		if (pageposition != "")
261			camlQuery.set_listItemCollectionPosition(pageposition);
262
263		camlQuery.set_viewXml(query);
264
265		var collListItems = oList.getItems(camlQuery);
266
267		clientContext.load(collListItems);
268
269		clientContext.executeQueryAsync(
270			Function.createDelegate(this, function () {
271				deferred.resolve(collListItems);
272			}),
273			Function.createDelegate(this, function (sender, args) {
274				deferred.reject('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
275			})
276		);
277		return deferred.promise;
278	};
279
280	this.getStandorte = function () {
281		var deferred = $q.defer();
282
283		var listname = "AKSStandortList";
284		var columns = "Title,AKSMainContent1,AKSGLocation";
285		var conditions = "";
286		var pageposition = "";
287		var pagesize = "";
288
289		GetJSOMRequest(listname, columns, conditions, pagesize, pageposition).then(
290				function (result) {
291					deferred.resolve(result);
292				},
293				function (exc) {
294				    console.log('error while fetching data... (getStandorte):' + exc)
295				}
296			);
297		return deferred.promise;
298	};
299
300	this.getStandortEntrys = function (pagesize1, position,state, listname) {
301	    var deferred = $q.defer();
302
303	    var listname = listname;
304	    var columns = "Title,AKSMainContent1,WorkCountry,AKSCountry,AKSSortId,AKSGLocation";
305	    var pageposition = position;
306	    var pagesize = pagesize1;
307	    if (state != undefined)
308	        var conditions = "<Query><Where><Eq><FieldRef Name='WorkCountry' /><Value Type='Text'>" + state + "</Value></eq></Where><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query><RowLimit>" + pagesize + "</RowLimit>";
309	    else
310	        var conditions = "<Query><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query>";
311
312	
313
314	    GetJSOMRequestRootWeb(listname, columns, conditions, pagesize, pageposition).then(
315				function (result) {
316				    deferred.resolve(result);
317				},
318				function (exc) {
319				    console.log('error while fetching data... (getStandorte):' + exc)
320				}
321			);
322	    return deferred.promise;
323	};
324
325
326	this.getContactByName = function (name) {
327		var deferred = $q.defer();
328
329		var listname = $(".aks-contactListName").text();
330		var columns = "Title,FirstName,Email,Company,JobTitle,WorkPhone,HomePhone,CellPhone,WorkFax,WorkAddress,WorkCity,WorkState,WorkZip,WorkCountry,AKSContactCategory,AKSContactDepartment";
331		var conditions = "<Query><Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + name + "</Value></eq></Where></Query>";
332		var pageposition = "";
333		var pagesize = "";
334
335		GetJSOMRequestRootWeb(listname, columns, conditions, pagesize, pageposition).then(
336				function (result) {
337					deferred.resolve(result);
338				},
339				function (exc) {
340				    console.log('error while fetching data... (getContactByname):' + exc)
341				}
342			);
343		return deferred.promise;
344	};
345
346	// method used to get all current pressemeldungen by its active status
347	this.getPressemeldungenByActive = function (pagesize, position, isactive) {
348		var deferred = $q.defer();
349
350		var listname = $(".aks-pagesListName").text();
351		var pressnewsfoldername = $(".aks-pressnewsfoldername").text().split('/')[0];
352		var columns = "AKSHeadline1,AKSDate1,AKSIntroText1,AKSArchive,FileRef";
353		var conditions = "<Query><Where><And><Eq><FieldRef Name='AKSArchive' /><Value Type='Boolean'>" + isactive + "</Value></Eq><BeginsWith><FieldRef Name='ContentTypeId' /><Value Type='ContentTypeId'>0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900D1E283D5DF0E4599BCFD005A73A6F24C007F8091ECF78941E8A453A631D7F0123E</Value></BeginsWith></And></Where><OrderBy><FieldRef Name='AKSDate1' Ascending='False' /></OrderBy></Query>";
354		var pageposition = position;
355		var foldername = listname + "/" + pressnewsfoldername;
356
357		GetJSOMRequestFolder(listname, columns, conditions, pagesize, pageposition, foldername).then(
358				function (result) {
359					deferred.resolve(result);
360				},
361				function (exc) {
362				    console.log('error while fetching data... (getPressemeldugnsByActive):' + exc)
363				}
364			);
365		return deferred.promise;
366	};
367
368	// method used to get all current events by its active status
369	this.getEventsByActive = function (pagesize, position, isactive) {
370		var deferred = $q.defer();
371
372		var listname = $(".aks-eventListName").text();
373		var columns = "Title,Location,EventDate,EndDate,AKSIntroText1,AKSArchive";
374		var conditions = "<Query><OrderBy><FieldRef Name='EventDate' Ascending='True'></FieldRef></OrderBy><Where><Eq><FieldRef Name='AKSArchive' /><Value Type='Boolean'>" + isactive + "</Value></Eq></Where></Query>";
375		var pageposition = position;
376
377		GetJSOMRequest(listname, columns, conditions, pagesize, pageposition).then(
378				function (result) {
379					deferred.resolve(result);
380				},
381				function (exc) {
382				    console.log('error while fetching data... (getEventsByActive):' + exc)
383				}
384			);
385		return deferred.promise;
386	};
387
388	// method used to get all newsletters
389	this.getNewsletters = function (pagesize, position) {
390		var deferred = $q.defer();
391
392		var listname = $(".aks-newsletterListName").text();
393		var columns = "AKSMainContent1,AKSDate1,AKSHeadline1";
394		var conditions = "<Query><OrderBy><FieldRef Name='AKSDate1' Ascending='False' /></OrderBy></Query>";
395		//var conditions = "";
396		var pageposition = position;
397
398		GetJSOMRequest(listname, columns, conditions, pagesize, pageposition).then(
399				function (result) {
400					deferred.resolve(result);
401				},
402				function (exc) {
403				    console.log('error while fetching data... (getNewsletters):' 
403+ exc)
404				}
405
406			);
407		return deferred.promise;
408	};
409
410	// method used to get all glossar entries by its first letter
411	this.getGlossarEntriesByLetter = function (letter, listname) {
412		var deferred = $q.defer();
413
414		var columns = "AKSHeadline1,AKSMainContent1,AKSGlossarSingleLetter";
415		if (letter == null)
416			var conditions = "";
417		else
418			var conditions = "<Query><Where><Eq><FieldRef Name='AKSGlossarSingleLetter' /><Value Type='Text'>" + letter + "</Value></eq></Where></Query>";
419
420		var pageposition = "";
421		var pagesize = "";
422
423		GetJSOMRequest(listname, columns, conditions, pagesize, pageposition).then(
424				function (result) {
425					deferred.resolve(result);
426				},
427				function (exc) {
428				    console.log('error while fetching data... (GetGlossarEntriesByLetter):' + exc)
429				}
430			);
431		return deferred.promise;
432	};
433
434	// method used to get all available letters
435	this.getGlossarLetters = function (listname) {
436		var deferred = $q.defer();
437
438		var columns = "AKSGlossarSingleLetter";
439		var conditions = "";
440		var pageposition = "";
441		var pagesize = "";
442
443		GetJSOMRequest(listname, columns, conditions, pagesize, pageposition).then(
444				function (result) {
445					deferred.resolve(result);
446				},
447				function (exc) {
448				    console.log('error while fetching data... (GetGlossarLetters):' + exc)
449				}
450			);
451		return deferred.promise;
452	};
453
454	// Method used to get all news per page 
455	// params:
456	// pageSize : number of elements per page 
457	// position: means the current page -> default the first page
458	this.getNews = function (pagesize, position, listname) {
459		var deferred = $q.defer();
460
461		var columns = "AKSIMG1,AKSDate1,AKSCategory1,AKSHeadline1,AKSMainContent1,AKSIntroText1";
462		var conditions = "<Query><OrderBy><FieldRef Name='AKSDate1' Ascending='False' /></OrderBy></Query>";
463		var pageposition = position;
464
465		GetJSOMRequest(listname, columns, conditions, pagesize, pageposition).then(
466				function (result) {
467					deferred.resolve(result);
468				},
469				function (exc) {
470				    console.log('error while fetching data... (getNews):' + exc)
471				}
472			);
473		return deferred.promise;
474	};
475
476	// method used to get the all contacts filters by its region
477	this.getContactsByRegion = function (pagesize, position, region, listname, regionTargetColumn) {
478		var deferred = $q.defer();
479
480		var columns = "Presse_x0020_Kontakt_x0020_Mail_,AKSContactDepartment,AKSContactCategory,AKSGLocation,AKSContactTitlePrefix,AKSContactTitleSuffix,FirstName,FullName,EMail,Company,JobTitle,WorkPhone,HomePhone,CellPhone,WorkFax,WorkAddress,WorkCity,WorkState,WorkZip,AKSRegion,AKSRegionTaxHTField,AKSSortId," + regionTargetColumn;
481		if (region != undefined)
482		    var conditions = "<Query><Where><Eq><FieldRef Name='" + regionTargetColumn + "' /><Value Type='Text'>" + region + "</Value></eq></Where><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query><RowLimit>" + pagesize + "</RowLimit>";
483		else
484			var conditions = "<Query><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query>";
485
486		var pageposition = position;
487
488		GetJSOMRequestRootWeb(listname, columns, conditions, pagesize, pageposition).then(
489				function (result) {
490					deferred.resolve(result);
491				},
492				function (exc) {
493				    console.log('error while fetching data... (getContactsByRegion):' + exc)
494				}
495			);
496		return deferred.promise;
497	};
498
499	this.getContactsByState = function (pagesize, position, state, listname, stateTargetColumn) {
500		var deferred = $q.defer();
501
502		var columns = "Presse_x0020_Kontakt_x0020_Mail_,AKSContactDepartment,AKSContactCategory,AKSGLocation,AKSContactTitlePrefix,AKSContactTitleSuffix,FirstName,FullName,EMail,Company,JobTitle,WorkPhone,HomePhone,CellPhone,WorkFax,WorkAddress,WorkCity,WorkState,WorkZip,AKSRegion,AKSRegionTaxHTField,AKSSortId";
503		if (state != undefined)
504			var conditions = "<Query><Where><Eq><FieldRef Name='" + stateTargetColumn + "' /><Value Type='Text'>" + state + "</Value></eq></Where><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query><RowLimit>" + pagesize + "</RowLimit>";
505		else
506			var conditions = "<Query><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query>";
507
508		var pageposition = position;
509
510		GetJSOMRequestRootWeb(listname, columns, conditions, pagesize, pageposition).then(
511				function (result) {
512					deferred.resolve(result);
513				},
514				function (exc) {
515				    console.log('error while fetching data... (GetContactsByState):' + exc)
516				}
517			);
518		return deferred.promise;
519	};
520
521	this.getContactsByStateAndRegion = function (pagesize, position, state, region, listname, stateTargetColumn, regionTargetColumn) {
522		var deferred = $q.defer();
523
524		var columns = "Presse_x0020_Kontakt_x0020_Mail_,AKSContactDepartment,AKSContactCategory,AKSGLocation,AKSContactTitlePrefix,AKSContactTitleSuffix,FirstName,FullName,EMail,Company,JobTitle,WorkPhone,HomePhone,CellPhone,WorkFax,WorkAddress,WorkCity,WorkState,WorkZip,AKSRegion,AKSRegionTaxHTField,AKSSortId," + regionTargetColumn;
525		if (state == undefined) {
526			if (region == undefined) {
527				var conditions = "<Query><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query>";
528			} else {
529			    var conditions = "<Query><Where><Eq><FieldRef Name='" + regionTargetColumn + "' /><Value Type='Text'>" + region + "</Value></Eq></Where><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query><RowLimit>" + pagesize + "</RowLimit>";
530			}
531		} else {
532			if (region == undefined) {
533				var conditions = "<Query><Where><Eq><FieldRef Name='" + stateTargetColumn + "' /><Value Type='Text'>
533" + state + "</Value></Eq></Where><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query><RowLimit>" + pagesize + "</RowLimit>";
534			} else {
535			    var conditions = "<Query><Where><And><Eq><FieldRef Name='" + stateTargetColumn + "' /><Value Type='Text'>" + state + "</Value></Eq><Eq><FieldRef Name='" + regionTargetColumn + "' /><Value Type='Text'>" + region + "</Value></Eq></And></Where><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query><RowLimit>" + pagesize + "</RowLimit>";
536			}
537		}
538
539		var pageposition = position;
540
541		GetJSOMRequestRootWeb(listname, columns, conditions, pagesize, pageposition).then(
542				function (result) {
543					deferred.resolve(result);
544				},
545				function (exc) {
546				    console.log('error while fetching data... getContactsByStateAndRegion:' + exc)
547				}
548			);
549		return deferred.promise;
550	};
551
552	// method used to get the all contacts filters by its zip code
553	this.getContactsByZip = function (pagesize, position, zip, listname) {
554
555		var deferred = $q.defer();
556
557		var columns = "Presse_x0020_Kontakt_x0020_Mail_,AKSContactDepartment,AKSContactCategory,AKSGLocation,AKSContactTitlePrefix,AKSContactTitleSuffix,FirstName,FullName,EMail,Company,JobTitle,WorkPhone,HomePhone,CellPhone,WorkFax,WorkAddress,WorkCity,WorkState,WorkZip,AKSRegion,AKSRegionTaxHTField";
558		var conditions = "<Query><Where><Contains><FieldRef Name='WorkZip' /><Value Type='Text'>" + zip + "</Value></Contains></Where><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query><RowLimit>" + pagesize + "</RowLimit>";
559		var pageposition = position;
560
561		GetJSOMRequestRootWeb(listname, columns, conditions, pagesize, pageposition).then(
562				function (result) {
563					deferred.resolve(result);
564				},
565				function (exc) {
566				    console.log('error while fetching data... (getContactsByZip)'+ exc)
567				}
568			);
569		return deferred.promise;
570	};
571
572	// Method used to get all faqs per category 
573	// params:
574	// listName : listname of the Sharepoint list
575	// columns : names of columns which should be load e.g.: col1,col2,col3
576	// category : filter creteria 
577	this.getFaqsPerCategory = function (category, series, listname, seriesTargetField, seriesIsDate) {
578		var deferred = $q.defer();
579
580		var columns = "AKSFaqQuestion,AKSFaqAnswer,Attachments";
581		var categoryCondition = "<Contains><FieldRef Name='AKSFAQCategory' /><Value Type='Text'>" + category + "</Value></Contains>";
582		var seriesCondition = "<Contains><FieldRef Name='" + seriesTargetField + "' /><Value Type='Text'>" + series + "</Value></Contains>";
583	    var seriesOrder = "";
584
585	    if (seriesIsDate) {
586	        seriesCondition = "<And>" +
587	            "<Geq><FieldRef Name='" + seriesTargetField + "' /><Value Type='DateTime'>" + series + "-01-01T12:00:00Z</Value></Geq>" +
588	            "<Leq><FieldRef Name='" + seriesTargetField + "' /><Value Type='DateTime'>" + series + "-12-31T12:00:00Z</Value></Leq>" +
589	        "</And>";
590	        seriesOrder = "<OrderBy><FieldRef Name='" + seriesTargetField + "' Ascending='FALSE' /></OrderBy>";
591	    }
592
593	    if (category != null) {
594			if (series != null)
595			    var conditions = "<Query><Where><And>" + categoryCondition + seriesCondition + "</And></Where>"+seriesOrder+"</Query>";
596			else
597			    var conditions = "<Query><Where>" + categoryCondition + "</Where>" + seriesOrder + "</Query>";
598		} else {
599			if (series != null)
600			    var conditions = "<Query><Where>" + seriesCondition + "</Where>" + seriesOrder + "</Query>";
601			else
602			    var conditions = "<Query>" + seriesOrder + "</Query>";
603		}
604		var pagesize = "";
605		var pageposition = "";
606
607		GetJSOMRequest(listname, columns, conditions, pagesize, pageposition).then(
608				function (result) {
609					deferred.resolve(result);
610				},
611				function (exc) {
612				    console.log('error while fetching data... (GetJSOMRequest)' + exc)
613				}
614			);
615		return deferred.promise;
616	};
617
618	// method used to get all available categories for faqs
619	this.getFAQCategories = function (listname,seriesTargetField) {
620		var deferred = $q.defer();
621		var columns = "AKSFAQCategory," + seriesTargetField;
622		var conditions = "";
623		var pageposition = "";
624		var pagesize = "";
625
626		GetJSOMRequest(listname, columns, conditions, pagesize, pageposition).then(
627				function (result) {
628					deferred.resolve(result);
629				},
630				function (exc) {
631				    console.log('error while fetching data... (getFAQCategories)' + exc)
632				}
633			);
634		return deferred.promise;
635	};
636
637	// mehtod used to get all available regions forcontacts
638	this.getContactRegionsAndStates = function (listname, stateTargetColumn, region, regionTargetColumn) {
639		var deferred = $q.defer();
640	    var columns = regionTargetColumn + "," + stateTargetColumn;
641		var conditions = "";
642		if (region != "")
643		    conditions = "<Query><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy><Where><Contains><FieldRef Name='"+regionTargetColumn+"' /><Value Type='Text'>" + region + "</Value></Contains></Where></Query>"
644		else
645			conditions = "<Query><OrderBy><FieldRef Name='AKSSortId' Ascending='TRUE'></FieldRef></OrderBy></Query>";
646
647		var pageposition = "";
648		var pagesize = "";
649
650		GetJSOMRequest(listname, columns, conditions, pagesize, pageposition).then(
651				function (result) {
652					deferred.resolve(result);
653				},
654				function (exc) {
655				    console.log('error while fetching data... (getContactRegionAndStates)' + exc)
656				}
657			);
658		return deferred.promise;
659	};
660
661	// method used to get all attached files from list items
662	// params:
663	// data : allFaqs withouts the attached files 
664	this.loadFAQFiles = function (data) {
665
666		var deferred = $q.defer();
667		var clientContext = SP.ClientContext.get_current();
668		var web = clientContext.get_web();
669		clientContext.load(web);
670
671		for (var i = 0; i < data.length; i++) {
672			clientContext.load(data[i].SPAttachments);
673		}
674
675		clientContext.executeQueryAsync(
676			Function.createDelegate(this, function () {
677
678				var clientContext = SP.ClientContext.get_current();
679
680				for (var i = 0; i < data.length; i++) {
681
682					var cspattach = data[i].SPAttachments.getEnumerator();
683
684					while (cspattach.moveNext()) {
685						var requestfile = web.getFileByServerRelativeUrl(cspattach.get_current().get_serverRelativeUrl());
686						if (typeof (data[i].SPFiles) == 'undefined')
687							data[i].SPFiles = new Array();
688
689						data[i].SPFiles.push(requestfile);
690					}
691
692					if (typeof (data[i].SPFiles) != 'undefined' && data[i].SPFiles.length > 0) {
693						data[i].DownloadAvailable = true;
694						for (var sy = 0 ; sy < data[i].SPFiles.length; sy++) {
695							clientContext.load(data[i].SPFiles[sy]);
696						}
697					}
698					else
699						data[i].DownloadAvailable = false;
700				}
701
702				clientContext.executeQueryAsync(
703					Function.createDelegate(this, function () {
704						for (var i = 0; i < data.length; i++) {
705
706							if (typeof (data[i].SPFiles) != 'undefined' && data[i].SPFiles.length > 0) {
707
708								for (var sx = 0 ; sx < data[i].SPFiles.length; sx++) {
709
710									if (typeof (data[i].Files) == 'undefined')
711										data[i].Files = new Array();
712
713									var fileobj = new Object();
714									var name = data[i].SPFiles[sx].get_name();
715
716									fileobj.Name = name.substring(0, name.lastIndexOf('.'));
717									fileobj.Path = data[i].SPFiles[sx].get_serverRelativeUrl()
718									fileobj.Type = name.substring(name.lastIndexOf('.') + 1).toUpperCase();
719									fileobj.Length = getFileLength(data[i].SPFiles[sx].get_length());
720									data[i].Files.push(fileobj);
721								}
722							}
723						}
724						deferred.resolve(data);
725					})
726					, Function.createDelegate(this, function (sender, args) {
727						deferred.reject('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
728					})
729					);
730				return deferred.promise;
731			}),
732			Function.createDelegate(this, function (sender, args) {
733				deferred.reject('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
734			})
735		);
736		return deferred.promise;
737	};
738
739	// method used to get specific file length (kb, mb, ...)
740	// params:
741	// bytes : length of the file in bytes
742	function getFileLength(bytes) {
743		var result = bytes;
744		var count = 1;
745		var returnString = "";
746
747		if (bytes < 1024)
748			return bytes.toFixed(2) + " B";
749
750		while (result >= 1) {
751
752			result = result / 1024;
753			if (result > 1) {
754				if (count == 1)
755					returnString = result.toFixed(2) + " KB";
756				if (count == 2)
757					returnString = result.toFixed(2) + " MB";
758				if (count == 3)
759					returnString = result.toFixed(2) + " GB";
760				if (count == 4)
761					returnString = result.toFixed(2) + " TB";
762			}
763
764			count++;
765		}
766
767		return returnString;
768	};
769
770});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.