-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathdatacontext.js
75 lines (58 loc) · 1.95 KB
/
datacontext.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
app.factory('datacontext',['$http','host','logger','model',
function($http, host, logger, model) {
var log = logger.log;
log("creating datacontext");
configureBreeze();
var serviceName = host + '/api/' + 'codecamper';
var manager = new breeze.EntityManager(serviceName);
model.initialize(manager.metadataStore);
plunkerHelpers.isCorsCapable();
var datacontext = {
getItems: getItems
};
return datacontext;
/*** supporting functions ***/
function getItems(searchText,stayLocal) {
var query = breeze.EntityQuery.from("Speakers")
.expand('speakerSessions')
.orderBy('firstName, lastName');
var locally = stayLocal ? " locally" : " remotely";
var delayMs = 800;
if (stayLocal) {
query = query.using(breeze.FetchStrategy.FromLocalCache);
locally = " locally";
delayMs = 0;
manager.metadataStore.setEntityTypeForResourceName("Speakers", "Person");
} else {
locally = " remotely";
}
if (searchText && (searchText = searchText.trim())) {
log("searching for " + searchText + locally);
var pred = breeze.Predicate
.create('lastName', 'contains', searchText)
.or('firstName', 'contains', searchText);
query = query.where(pred);
} else {
log("getting all"+locally);
}
return Q.delay(delayMs).then(function() {
return manager.executeQuery(query)
.then(getSucceeded)
.fail(getFailed);
});
}
function getSucceeded(data) {
log("retrieved " + data.results.length);
return data.results;
}
function getFailed(error) {
log("query failed: " + error.message);
throw error; // so caller can hear it
}
function configureBreeze() {
// configure to use the model library for Angular
breeze.config.initializeAdapterInstance("modelLibrary", "backingStore", true);
// configure to use camelCase
breeze.NamingConvention.camelCase.setAsDefault();
}
}]);