Skip to content

Commit 0897fc1

Browse files
committed
solution 1
1 parent 795ea99 commit 0897fc1

8 files changed

+46796
-0
lines changed

hsonmezmit/bostonEmployeeSalaries.js

+23,209
Large diffs are not rendered by default.

hsonmezmit/exercise.js

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
var exercise = {};
2+
3+
exercise.salaries = null;
4+
exercise.salary = null;
5+
6+
// load salary and data
7+
exercise.load = function(salary, boston){
8+
exercise.salaries = boston.data;
9+
exercise.salary = salary;
10+
};
11+
12+
// get salaries larger than given salary
13+
exercise.findBiggerSalaries = function(){
14+
15+
// ---------------------------------------------------
16+
// YOUR CODE
17+
//
18+
// Return a filtered list of salaries.
19+
// Return salaries larger than exercise.salary
20+
//
21+
// Example: salaries larger than 300K is 8
22+
// ---------------------------------------------------
23+
return exercise.salaries.filter(exercise.largerSalary);
24+
};
25+
26+
// filter function
27+
exercise.largerSalary = function largerSalary(item){
28+
29+
// ---------------------------------------------------
30+
// YOUR CODE
31+
//
32+
// Return a boolean (true/false) if item
33+
// is larger than exercise.salary
34+
// ---------------------------------------------------
35+
36+
return item[18] > exercise.salary;
37+
38+
};

hsonmezmit/gulpfile.js

+233
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,233 @@
1+
var child_process = require('child_process');
2+
var gulp = require('gulp');
3+
var mute = require('mute');
4+
var mocha = require('mocha');
5+
var CLIEngine = require("eslint").CLIEngine;
6+
var request = require('request');
7+
var fs = require('fs');
8+
var q = require('q');
9+
10+
var cache = {};
11+
12+
function storeCache() {
13+
for (var key in require.cache) {
14+
cache[key] = true;
15+
}
16+
}
17+
18+
function clearCache() {
19+
for (var key in require.cache) {
20+
if (!cache[key] && !(/\.node$/).test(key)) {
21+
delete require.cache[key];
22+
}
23+
}
24+
}
25+
26+
function send(data) {
27+
var auth = {};
28+
var task = {};
29+
var lint = {};
30+
var pkg = JSON.parse(fs.readFileSync('./package.json'));
31+
task.repo = pkg.name;
32+
33+
function git(cat) {
34+
var d = q.defer();
35+
36+
if (task.type == 'local') {
37+
child_process.exec(`git config user.${cat}`, function(err, out, code) {
38+
if (err) {
39+
d.reject(err);
40+
}
41+
else {
42+
auth[cat] = out.trim();
43+
d.resolve();
44+
}
45+
});
46+
}
47+
else if (task.type == 'travis' || task.type == 'docker') {
48+
var symbol;
49+
if (cat == 'email') {
50+
symbol = 'E';
51+
}
52+
else if (cat == 'name') {
53+
symbol = 'n';
54+
}
55+
56+
var command;
57+
if (auth.commit_id) {
58+
command = `git log -1 ${auth.commit_id} --pretty=%a${symbol}`;
59+
}
60+
else {
61+
command = `git log -n 1 HEAD --pretty=%a${symbol}`;
62+
}
63+
child_process.exec(command, function(err, out, code) {
64+
if (err) {
65+
d.reject(err);
66+
}
67+
else {
68+
auth[cat] = out.trim();
69+
d.resolve();
70+
}
71+
});
72+
73+
}
74+
75+
return d.promise;
76+
}
77+
78+
function name() {
79+
return git("name");
80+
}
81+
82+
function email() {
83+
return git("email");
84+
}
85+
86+
function docker() {
87+
var d = q.defer();
88+
task.type = 'docker';
89+
auth['task_id'] = process.env.DOCKER_TASK_ID;
90+
91+
if (fs.existsSync('./webhook.json')) {
92+
var webhook = JSON.parse(fs.readFileSync('./webhook.json'));
93+
auth['commit_id'] = webhook.pull_request.head.sha;
94+
}
95+
else if (process.env.DOCKER_TASK_ID) {
96+
auth['commit_id'] = process.env.DOCKER_COMMIT_ID;
97+
}
98+
99+
return name().then(email);
100+
}
101+
102+
function travis() {
103+
task.type = 'travis';
104+
auth['job_id'] = process.env.TRAVIS_JOB_ID;
105+
auth['commit_id'] = process.env.TRAVIS_PULL_REQUEST_SHA;
106+
return name().then(email);
107+
}
108+
109+
function local() {
110+
task.type = 'local';
111+
return name().then(email);
112+
}
113+
114+
function post() {
115+
console.log(auth);
116+
console.log(task);
117+
var d = q.defer();
118+
request.post('http://app.onexi.org/record', {
119+
body: {
120+
auth: auth,
121+
task: task,
122+
data: data,
123+
lint: lint
124+
},
125+
json: true
126+
}, function (err, res, body) {
127+
if (err) {
128+
d.reject(err);
129+
}
130+
else {
131+
d.resolve(body);
132+
}
133+
});
134+
return d.promise;
135+
}
136+
137+
function id() {
138+
if (process.env.DOCKER_TASK_ID) {
139+
return docker();
140+
}
141+
else if (process.env.TRAVIS_JOB_ID) {
142+
return travis();
143+
}
144+
else {
145+
return local();
146+
}
147+
}
148+
149+
function linter() {
150+
var d = q.defer();
151+
152+
cli = new CLIEngine({
153+
envs: ["browser", "node", "mocha", "phantomjs"],
154+
useEslintrc: false,
155+
rules: {
156+
semi: 2
157+
}
158+
});
159+
160+
var report = cli.executeOnFiles(["exercise.js"]);
161+
162+
lint = report;
163+
164+
d.resolve();
165+
166+
return d.promise;
167+
}
168+
169+
return id()
170+
.then(linter)
171+
.then(post);
172+
}
173+
174+
function capture() {
175+
var deferred = q.defer();
176+
177+
return deferred.promise;
178+
}
179+
180+
181+
function test(reporter, silence) {
182+
var deferred = q.defer();
183+
storeCache();
184+
if (silence) unmute = mute();
185+
var m = new mocha({
186+
reporter: reporter
187+
});
188+
m.addFile('./test/test.js');
189+
r = m.run(function(failures) {
190+
var testResults = r.testResults;
191+
if (silence) unmute();
192+
clearCache();
193+
if (reporter == 'list') {
194+
if (failures) {
195+
deferred.reject(testResults);
196+
}
197+
else {
198+
deferred.resolve(testResults);
199+
}
200+
}
201+
else {
202+
deferred.resolve(testResults);
203+
}
204+
});
205+
return deferred.promise;
206+
}
207+
208+
function record() {
209+
if (process.env.GULP) {
210+
var deferred = q.defer();
211+
deferred.resolve();
212+
return deferred.promise;
213+
}
214+
else {
215+
return test('json', true)
216+
.then(send)
217+
.catch(function(err) {
218+
console.log(err);
219+
});
220+
}
221+
}
222+
223+
function display() {
224+
return test('list', false)
225+
.catch(function(err) {
226+
process.exit(1);
227+
});
228+
}
229+
230+
gulp.task('test', function() {
231+
return record()
232+
.then(display);
233+
});

hsonmezmit/package.json

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"name": "ex-boston-overx",
3+
"description": "ex-boston-overx",
4+
"author": "prof",
5+
"keywords": ["ex-boston-overx"],
6+
"version": "1.0.0",
7+
"main": "index.js",
8+
"license": "MIT",
9+
"directories": {
10+
"test": "test"
11+
},
12+
"scripts": {
13+
"test": "gulp test"
14+
},
15+
"devDependencies": {
16+
"eslint": "^3.15.0",
17+
"gulp": "^3.9.1",
18+
"mocha": "^3.2.0",
19+
"mute": "^2.0.6",
20+
"q": "^1.4.1",
21+
"request": "^2.79.0"
22+
},
23+
"dependencies": {
24+
"chai": "^3.5.0",
25+
"mocha": "^3.2.0"
26+
}
27+
}

hsonmezmit/run.html

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<!-- load boston data -->
5+
<script src="bostonEmployeeSalaries.js"></script>
6+
7+
<!-- load the exercise code -->
8+
<script src="exercise.js"></script>
9+
10+
<!-- styles for the page -->
11+
<style>
12+
* { font-size: 1.5em; font-family: Arial;}
13+
p,div { font-size: 1em;}
14+
</style>
15+
16+
<!-- user input/output -->
17+
<p>Number of jobs with salaries over:</p>
18+
<input id='salary' type="text" value="1000">
19+
<button onclick="count()">Search</button><br>
20+
<div id="output"></div>
21+
22+
23+
<script>
24+
25+
function count(){
26+
27+
// get salary from input field
28+
var salary = Number(document.getElementById('salary').value);
29+
30+
// load salary and boston data
31+
exercise.load(salary, boston);
32+
33+
// get salaries larger than given salary
34+
var bigger = exercise.findBiggerSalaries();
35+
36+
// write result to the output div
37+
document.getElementById('output').innerHTML = bigger.length;
38+
}
39+
40+
</script>
41+
</html>

0 commit comments

Comments
 (0)