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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
define(["webL10n",
"sugar-web/activity/shortcut",
"sugar-web/bus",
"sugar-web/env",
"sugar-web/datastore",
"sugar-web/graphics/icon",
"sugar-web/graphics/activitypalette"], function (
l10n, shortcut, bus, env, datastore, icon, activitypalette) {
var datastoreObject = null;
var activity = {};
activity.setup = function () {
bus.listen();
l10n.start();
function onPause() {
activity.write(function () {});
}
function onStop() {
function onDataStored(error, result) {
activity.close(function () {});
}
activity.write(onDataStored);
}
bus.onNotification("activity.pause", onPause);
bus.onNotification("activity.stop", onStop);
datastoreObject = new datastore.DatastoreObject();
var activityButton = document.getElementById("activity-button");
var activityPalette = new activitypalette.ActivityPalette(
activityButton, datastoreObject);
// Colorize the activity icon.
activity.getXOColor(function (error, colors) {
icon.colorize(activityButton, colors);
invokerElem =
document.querySelector("#activity-palette .palette-invoker");
icon.colorize(invokerElem, colors);
});
// Make the activity stop with the stop button.
var stopButton = document.getElementById("stop-button");
stopButton.addEventListener('click', onStop);
shortcut.add("Ctrl", "Q", this.close);
env.getEnvironment(function (error, environment) {
if (!environment.objectId) {
datastoreObject.setMetadata({
"title": environment.activityName + " Activity",
"title_set_by_user": "0",
"activity": environment.bundleId,
"activity_id": environment.activityId
});
}
datastoreObject.save(function () {
datastoreObject.getMetadata(function (error, metadata) {
activityPalette.setTitleDescription(metadata);
});
});
});
};
activity.getDatastoreObject = function () {
return datastoreObject;
};
activity.getXOColor = function (callback) {
function onResponseReceived(error, result) {
if (error === null) {
callback(null, {
stroke: result[0][0],
fill: result[0][1]
});
} else {
callback(null, {
stroke: "#00A0FF",
fill: "#8BFF7A"
});
}
}
bus.sendMessage("activity.get_xo_color", [], onResponseReceived);
};
// Activities should override this function in order to store
// data.
activity.write = function (callback) {
setTimeout(function () {
callback(null);
}, 0);
};
activity.close = function (callback) {
function onResponseReceived(error, result) {
if (error === null) {
callback(null);
} else {
console.log("activity.close called");
}
}
bus.sendMessage("activity.close", [], onResponseReceived);
};
return activity;
});
|