Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
2022-074
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2022-074
2022-074
Commits
a49dd9ee
Commit
a49dd9ee
authored
Apr 21, 2022
by
Wasala W.L.M.K.S - IT19177106
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Type chart added to result. Task 2 modifications
parent
65c1671e
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
434 additions
and
286 deletions
+434
-286
frontend/calibCopy.html
frontend/calibCopy.html
+91
-0
frontend/description.html
frontend/description.html
+18
-1
frontend/images/task1/detail.png
frontend/images/task1/detail.png
+0
-0
frontend/images/task1/gif.gif
frontend/images/task1/gif.gif
+0
-0
frontend/images/task1/gif1.gif
frontend/images/task1/gif1.gif
+0
-0
frontend/selection.html
frontend/selection.html
+4
-4
frontend/start.html
frontend/start.html
+1
-1
frontend/task1.html
frontend/task1.html
+193
-177
frontend/task2.html
frontend/task2.html
+109
-101
frontend/taskDescription1.html
frontend/taskDescription1.html
+18
-2
No files found.
frontend/calibCopy.html
0 → 100644
View file @
a49dd9ee
<!DOCTYPE html>
<html>
<head>
<title>
Test Game
</title>
<script
src=
"https://code.jquery.com/jquery-3.6.0.min.js"
integrity=
"sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
crossorigin=
"anonymous"
></script>
<script
src=
"webgazer.js"
type=
"text/javascript"
></script>
<style
type=
"text/css"
>
body
{
background-color
:
rgb
(
255
,
242
,
204
);
}
</style>
</head>
<body
style=
"margin: 0px; overflow: hidden;"
>
<img
id=
"I1"
class=
"calibImg"
style=
"position:absolute; left: 15px; top:10px; "
src=
"images/resize/6- 2.png"
>
<img
id=
"I2"
class=
"calibImg"
style=
"position:absolute; left: 660px; top:10px;display: none;"
src=
"images/resize/20- 2.png"
>
<img
id=
"I3"
class=
"calibImg"
style=
"position:absolute; left: 1250px; top:10px; display: none;"
src=
"images/resize/1- 2.png"
>
<img
id=
"I4"
class=
"calibImg"
style=
"position:absolute; left: 15px; top:350px;display: none; "
src=
"images/resize/19- 2.png"
>
<img
id=
"I5"
class=
"calibImg"
style=
"position:absolute; left: 660px; top:350px;display: none;"
src=
"images/resize/14- 2.png"
>
<img
id=
"I6"
class=
"calibImg"
style=
"position:absolute; left: 1250px; top:350px;display: none;"
src=
"images/resize/12- 2.png"
>
<img
id=
"I7"
class=
"calibImg"
style=
"position:absolute; left: 15px; top:660px;display: none;"
src=
"images/resize/18- 2.png"
>
<img
id=
"I8"
class=
"calibImg"
style=
"position:absolute; left: 660px; top:660px;display: none;"
src=
"images/resize/7- 2.png"
>
<img
id=
"I9"
class=
"calibImg"
style=
"position:absolute; left: 1250px; top:660px;display: none;"
src=
"images/resize/22- 2.png"
>
<!-- <img id="calib" class="slide" style="display: block;" src="calibPoints.png"> -->
<span
style=
"position: absolute; bottom: 10px; right: 10px; font-size: x-large; color: rgb(255, 230, 255); cursor: default;"
onclick=
"location.href='task2.html'"
id=
"finish"
>
►
</span>
<script
type=
"text/javascript"
>
webgazer
.
setGazeListener
(
function
(
data
,
elapsedTime
)
{
if
(
data
==
null
)
{
$
(
"
webgazerVideoContainer
"
).
show
();
return
;
}
$
(
"
#webgazerVideoContainer
"
).
hide
();
}).
begin
();
clickCount
=
{
"
I1
"
:
0
,
"
I2
"
:
0
,
"
I3
"
:
0
,
"
I4
"
:
0
,
"
I5
"
:
0
,
"
I6
"
:
0
,
"
I7
"
:
0
,
"
I8
"
:
0
,
"
I9
"
:
0
,
"
total
"
:
0
,
}
$
(
"
.calibImg
"
).
on
(
'
click
'
,
function
(
event
)
{
var
objectId
=
event
.
target
.
id
;
clickCount
[
objectId
]
+=
1
;
if
(
clickCount
[
objectId
]
>=
3
)
{
$
(
"
#
"
+
objectId
).
hide
();
var
currentNumber
=
Number
(
objectId
.
substr
(
1
))
if
(
currentNumber
<=
9
){
currentNumber
++
;
$
(
"
#I
"
+
currentNumber
).
show
();
}
}
console
.
log
(
clickCount
);
clickCount
[
"
total
"
]
+=
1
;
if
(
clickCount
[
"
total
"
]
>=
27
)
{
alert
(
'
ක්රියාකාරම ආරම්භ කිරීමට "OK" බොත්තම ඔබන්න
'
);
location
.
href
=
'
task2.html
'
;
}
//(... rest of your JS code)
});
//initialy hide all images
//kotuwa athulta face eka awama hide wnna dnna
</script>
</body>
</html>
\ No newline at end of file
frontend/description.html
View file @
a49dd9ee
...
...
@@ -6,12 +6,29 @@
</header>
<br><br><br><br><br><br><br><br>
<body>
<div
class=
"main"
>
<div>
<h1>
සමස්ථ ක්රියාකාරකම පිළිබද හැදින්වීම :
</h1>
</div>
<div>
<h3>
මම ක්රියාකාරකම වයස අවුරුදු 1-7ත් දරුවන් සදහා නිර්මාණය කරන ලද්දකි.
</h3>
<h3>
පලමු පියවර ලෙස පෝරමයට ඔබේ දරුවාට අන්යය වූ තොරතුරු ඉදිරිපත් කර ලියාපදිංචි විය යුතුය
</h3>
<h3>
සාර්තකව ලියාපදිංචි වීමෙන් පසුව ඔබව අදාල ක්රියාකාරකම පිළිබද සවිස්තරාත්මක පැහැදිලි කිරීමක් සහිත පිටුවකට පිවිසේ.
</h3>
<h3>
ඔබ පෝරමය සම්පූර්ණ කරන විට වයස, ස්ත්රී/පුරුෂ භාවය සදහා නිවැරදි තොරතුරු ඇතුලත් කරන්න.(මන්ද ඉදිරි දත්ත පුරෝකතන පියවර වලදී ඒවා උපකාර වන නිසාය).
</h3>
<h3>
ඔබ අදාළ හැදින්වීම හොදින් කියවීමෙන් පසු ඊළග පිටුවට පිවිසීමේ බොත්තම ඔබන්න.
</h3>
<h3>
අදාල උප ක්රියාකාරකම් වලට අදාල විස්ථර ඇතුලත් පිටුව වෙතට මීළගට ඔබ පිවිසේ.
</h3>
</div>
</div>
<br><br>
<div
style=
"text-align:center"
>
<h1>
Common Description
</h1><br><br>
<input
type=
"submit"
value=
"ඊළග පිටුවට"
name=
"submit"
id=
"submit"
onclick=
"location.href='form.html'"
>
</div>
<br><br><br><br>
</body>
</html>
\ No newline at end of file
frontend/images/task1/detail.png
0 → 100644
View file @
a49dd9ee
43.4 KB
frontend/images/task1/gif.gif
0 → 100644
View file @
a49dd9ee
1.67 MB
frontend/images/task1/gif1.gif
View replaced file @
65c1671e
View file @
a49dd9ee
1.67 MB
|
W:
|
H:
3.04 MB
|
W:
|
H:
2-up
Swipe
Onion skin
frontend/selection.html
View file @
a49dd9ee
...
...
@@ -10,10 +10,10 @@
<div
id=
"content"
style=
"margin: auto; width:50%"
>
<div
id=
"search"
>
<a
href=
"taskDescription1.html"
class=
"button"
>
වයස අවුරුදු
1-3
දරුවන් සදහා හඩ නොමැතිව සිදු කරන ක්රියාකාරකම වෙත පිවිසීමට
</a>
<a
href=
"taskDescription2.html"
class=
"button"
>
වයස අවුරුදු
1-3
දරුවන් සදහා හඩ සහිතව සිදු කරන ක්රියාකාරකම වෙත පිවිසීමට
</a>
<a
href=
"taskDescription3.html"
class=
"button"
>
වයස අවුරුදු
4-6
දරුවන් සදහා හඩ නොමැතිව සිදු කරන ක්රියාකාරකම වෙත පිවිසීමට
</a>
<a
href=
"taskDescription4.html"
class=
"button"
>
වයස අවුරුදු
4-6
දරුවන් සදහා හඩ සහිතව සිදු කරන ක්රියාකාරකම වෙත පිවිසීමට
</a>
<a
href=
"taskDescription1.html"
class=
"button"
>
වයස අවුරුදු
4-7
දරුවන් සදහා හඩ නොමැතිව සිදු කරන ක්රියාකාරකම වෙත පිවිසීමට
</a>
<a
href=
"taskDescription2.html"
class=
"button"
>
වයස අවුරුදු
4-7
දරුවන් සදහා හඩ සහිතව සිදු කරන ක්රියාකාරකම වෙත පිවිසීමට
</a>
<a
href=
"taskDescription3.html"
class=
"button"
>
වයස අවුරුදු
1-3
දරුවන් සදහා හඩ නොමැතිව සිදු කරන ක්රියාකාරකම වෙත පිවිසීමට
</a>
<a
href=
"taskDescription4.html"
class=
"button"
>
වයස අවුරුදු
1-3
දරුවන් සදහා හඩ සහිතව සිදු කරන ක්රියාකාරකම වෙත පිවිසීමට
</a>
</div>
<div
id=
"results"
>
<img
src=
"images/mickey4.png"
alt=
"Paris"
style=
"width:80%; height:80%"
>
...
...
frontend/start.html
View file @
a49dd9ee
...
...
@@ -2,7 +2,7 @@
<html>
<header>
<title>
Welcome page
</title>
<link
rel=
"stylesheet"
href=
"style
3
.css"
type=
"text/css"
>
<link
rel=
"stylesheet"
href=
"style
4
.css"
type=
"text/css"
>
</header>
<br><br><br><br><br><br><br><br>
<body>
...
...
frontend/task1.html
View file @
a49dd9ee
...
...
@@ -6,60 +6,42 @@
<script
src=
"https://code.jquery.com/jquery-3.6.0.min.js"
integrity=
"sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
crossorigin=
"anonymous"
></script>
<script
src=
"https://cdn.jsdelivr.net/npm/chart.js@3.7.1/dist/chart.min.js"
></script>
<!-- dropdown hide -->
<script
src=
"https://code.jquery.com/jquery-3.6.0.js"
></script>
<script
src=
"webgazer_calib.js"
type=
"text/javascript"
></script>
<style
type=
"text/css"
>
body
{
background-color
:
rgb
(
168
,
209
,
141
)
;
background-color
:
#FFF2CC
;
}
.face
{
height
:
130px
;
position
:
absolute
;
}
.dropdown
{
position
:
absolute
;
display
:
none
;
width
:
200px
;
height
:
30px
;
top
:
4
0%
;
top
:
3
0%
;
left
:
25%
;
font-size
:
17px
;
background
:
#f8faf8
;
}
.dropdown-content
{
display
:
none
;
.details
{
position
:
absolute
;
background-color
:
#f1f1f1
;
min-width
:
160px
;
box-shadow
:
0px
8px
16px
0px
rgba
(
0
,
0
,
0
,
0.2
);
z-index
:
1
;
}
.dropdown-content
option
{
color
:
black
;
padding
:
12px
16px
;
text-decoration
:
none
;
display
:
block
;
}
.dropdown-content
option
:hover
{
background-color
:
#ddd
;
}
.dropdown
:hover
.dropdown-content
{
display
:
block
;
display
:
none
;
width
:
642px
;
height
:
550px
;
top
:
45%
;
left
:
2%
;
}
.dropdown
:hover
.dropbtn
{
background-color
:
#3e8e41
;
}
</style>
</head>
<body
style=
"margin: 0px;
overflow: hidden;
"
>
<body
style=
"margin: 0px; "
>
<img
id=
"ch"
class=
"slide"
style=
"display: none;"
src=
"images/task1/CHR.png"
>
<img
id=
"s1"
class=
"slide"
style=
"display: none;"
src=
"images/task1/F1.png"
>
<img
id=
"s2"
class=
"slide"
style=
"display: none;"
src=
"images/task1/F2.png"
>
...
...
@@ -83,39 +65,19 @@
<img
id=
"result"
class=
"slide"
style=
"display: none;"
src=
"images/task1/result1.png"
>
<img
id=
"details"
class=
"details"
style=
"display: none;"
src=
"images/task1/detail.png"
>
<div
id=
"resultChart"
style=
"display: none; position: absolute; top:190px; left:50%; z-index: 9; width: 500px; height: 300px;"
>
<canvas
id=
"myChart"
width=
"500px"
height=
"300px"
></canvas>
style=
"display: none; position: absolute; top:190px; left:60%; z-index: 9; width: 800px; height: 400px;"
>
<canvas
id=
"objectChart"
width=
"500px"
height=
"300px"
></canvas>
<canvas
id=
"typeChart"
width=
"500px"
height=
"300px"
></canvas>
</div>
<!-- dropdown -->
<!-- <div class="dropdown">
<button class="dropbtn">Dropdown</button>
<div class="dropdown-content">
<a href="#">Slide 1</a>
<a href="#">Slide 2</a>
<a href="#">Slide 3</a>
<a href="#">Slide 4</a>
<a href="#">Slide 5</a>
<a href="#">Slide 6</a>
<a href="#">Slide 7</a>
<a href="#">Slide 8</a>
<a href="#">Slide 9</a>
<a href="#">Slide 10</a>
<a href="#">Slide 11</a>
<a href="#">Slide 12</a>
<a href="#">Slide 13</a>
<a href="#">Slide 14</a>
<a href="#">Slide 15</a>
<a href="#">Slide 16</a>
<a href="#">Slide 17</a>
<a href="#">Slide 18</a>
<a href="#">Slide 19</a>
</div>
</div> -->
<div
>
<!-- dropdown for 1st bar chart-->
<div>
<select
id=
"slideList"
class=
"dropdown"
onchange=
"slideChange()"
>
<option
value=
"none"
selected
disabled
hidden
>
Select
a
Slide
</option>
<option
value=
"none"
selected
disabled
hidden
>
Select Slide
</option>
<option
value=
"1"
>
Slide 1
</option>
<option
value=
"2"
>
Slide 2
</option>
<option
value=
"3"
>
Slide 3
</option>
...
...
@@ -138,13 +100,9 @@
</select>
</div>
<div
id=
"message"
></div>
<script
type=
"text/javascript"
>
function
slideChange
()
{
var
slideNumber
=
document
.
getElementById
(
"
slideList
"
).
value
;
showResults
(
slideNumber
);
}
...
...
@@ -285,7 +243,7 @@
},
"
F6I3
"
:
{
"
name
"
:
"
hat
"
,
"
type
"
:
"
I
"
,
"
type
"
:
"
L
"
,
"
top
"
:
403
,
"
bottom
"
:
678
,
"
left
"
:
560
,
...
...
@@ -311,7 +269,7 @@
},
"
F7I3
"
:
{
"
name
"
:
"
hat
"
,
"
type
"
:
"
I
"
,
"
type
"
:
"
L
"
,
"
top
"
:
109
,
"
bottom
"
:
355
,
"
left
"
:
217
,
...
...
@@ -889,21 +847,22 @@
//
<!--
start
webgazer
-->
var
arr
=
{};
var
percentArr
=
{}
var
percentArr2
=
{}
var
slideID
=
null
;
var
slide
=
"
ch
"
;
//pause variable(use to store the stste of game)
var
isPaused
=
false
;
var
isGameOver
=
false
;
var
a
var
slideNumber
var
started
=
false
;
var
taskLoop
;
var
taskPaused
=
false
;
webgazer
.
setGazeListener
(
function
(
data
,
elapsedTime
)
{
if
(
data
==
null
)
{
return
;
}
if
(
!
started
)
{
if
(
!
started
)
{
showSlide
();
taskLoop
=
setInterval
(
showSlide
,
7000
);
started
=
true
;
...
...
@@ -922,7 +881,9 @@
if
(
arr
[
slide
]
==
undefined
)
{
arr
[
slide
]
=
[];
}
arr
[
slide
].
push
({
"
timestamp
"
:
Date
.
now
(),
"
x
"
:
xprediction
,
"
y
"
:
yprediction
,
"
bb
"
:
gazeObject
.
name
,
...
...
@@ -944,15 +905,7 @@
}
function
getGazeObject
(
slide
,
xcoordinate
,
ycoordinate
)
{
//cootima bounding box eke condition eka mulinma liyanna one
//condition for object1
// if () object1.left
<
xcoordinate
<
object1
.
right
&&
object1
.
top
<
ycoordinate
<
object1
.
bottom
)
then
return
object1
// console.log("object1")
// console.log(object1)
// console.log("/object1")
//final condition set
//slide1
if
(
slide
==
"
s1
"
)
{
object1
=
boundaryArr
[
slide
][
"
F1I1
"
]
if
(((
object1
.
left
<
xcoordinate
)
&&
(
xcoordinate
<
object1
.
right
))
&&
((
object1
.
top
<
ycoordinate
)
&&
(
ycoordinate
<
object1
.
bottom
)))
{
...
...
@@ -1748,48 +1701,42 @@
//function for pause game
document
.
addEventListener
(
'
keyup
'
,
function
(
e
)
{
//32 is space bar button ASCII value
console
.
log
(
"
e.which
"
);
console
.
log
(
e
.
which
);
console
.
log
(
"
/e.which
"
);
alert
(
"
Game is paused
"
);
if
(
e
.
which
===
32
&&
isGameOver
==
false
)
{
//if(isPaused) resumeGame();
//else pasuseGame();
if
(
slide
==
"
ch
"
)
{
if
(
e
.
which
===
32
)
{
if
(
!
taskPaused
)
{
pauseTask
();
}
else
{
resumeTask
();
}
// alert("Game is paused");
}
else
if
(
e
.
which
===
13
&&
taskPaused
)
{
stopTask
();
}
}
});
// function pasuseGame(){
// clearInterval(interval);
// isPaused = true;
// canvas.style.opacity = 0.5;
// canvascontext.font = "90px tahoma";
// canvascontext.fillstyle = "white";
// canvascontext.textAlign = "center";
// canvascontext.textBaseline = "middle";
// canvascontext.fillText("Game Paused", 400,250)
// }
// function resumeGame(){
// isPaused = false;
// canvascontext.clearRect(0, 0, canvas.width, canvas.height);
// canvas.style.opacity = 1;
// interval = setInterval(showSlide, 20);
// }
// function gameOver(){
// isGameOver = true;
// canvas.style.opacity = 0.5;
// canvascontext.font = "90px tahoma";
// canvascontext.fillstyle = "white";
// canvascontext.textAlign = "center";
// canvascontext.textBaseline = "middle";
// canvascontext.fillText("Game Over", 400,170);
// }
function
pauseTask
()
{
if
(
!
taskPaused
)
{
console
.
log
(
"
puased
"
);
clearInterval
(
taskLoop
);
clearTimeout
(
tempT
)
webgazer
.
pause
();
taskPaused
=
true
;
}
}
function
resumeTask
()
{
if
(
taskPaused
)
{
console
.
log
(
"
resumed
"
);
taskLoop
=
setInterval
(
showSlide
,
9000
);
webgazer
.
resume
();
taskPaused
=
false
;
}
}
function
stopTask
()
{
console
.
log
(
"
stoped
"
);
function
showSlide
()
{
if
(
increment
>=
20
)
{
$
(
"
.slide
"
).
hide
();
$
(
"
#result
"
).
show
();
$
(
"
#slideList
"
).
show
();
...
...
@@ -1800,7 +1747,15 @@
webgazer
.
pause
();
//calculate object percentages for each slide
calculatePercentArray
(
arr
,
percentArr
);
calculatePercentArray2
(
arr
,
percentArr2
);
//showResults(slideNumber);
sendGazeDataToBackend
(
arr
,
percentArr
);
}
function
calculatePercentArray
(
arr
,
percentArr
)
{
for
(
let
slide
in
arr
)
{
OList
=
arr
[
slide
].
map
((
x
)
=>
{
...
...
@@ -1825,32 +1780,61 @@
}
}
//showResults(a);
sendGazeDataToBackend
(
arr
,
percentArr
);
}
function
calculatePercentArray2
(
arr
,
percentArr2
)
{
for
(
let
slide
in
arr
)
{
OList
=
arr
[
slide
].
map
((
x
)
=>
{
return
x
.
type
})
return
;
const
count
=
{};
for
(
const
element
of
OList
)
{
if
(
count
[
element
])
{
count
[
element
]
+=
1
;
}
else
{
count
[
element
]
=
1
;
}
}
var
tot
=
OList
.
length
percentArr2
[
slide
]
=
{}
for
(
let
type
in
count
)
{
percentArr2
[
slide
][
type
]
=
100
*
count
[
type
]
/
tot
}
}
}
var
tempT
;
function
showSlide
()
{
if
(
increment
>=
20
)
{
//end of slides
stopTask
();
}
else
{
$
(
"
.slide
"
).
hide
();
slideID
=
"
#s
"
+
parseInt
(
increment
);
$
(
"
#ch
"
).
show
();
$
(
"
#objectName
"
).
text
(
"
none
"
)
slide
=
"
ch
"
;
setTimeout
(
function
()
{
tempT
=
setTimeout
(
function
()
{
$
(
"
#ch
"
).
hide
();
$
(
slideID
).
show
();
slide
=
slideID
.
substr
(
1
);
//remove the # in the begining
console
.
log
(
"
slideID:
"
+
slideID
);
console
.
log
(
"
increment:
"
+
increment
);
},
2
000
);
},
5
000
);
increment
+=
1
;
}
}
// send Gaze Data To Backend
function
sendGazeDataToBackend
(
dataArr
,
percentArray
,
user
,
task
)
{
//ajax
...
...
@@ -1876,8 +1860,7 @@
}
});
}
var
myChart
;
function
showResults
(
a
)
{
var
dynamicColors
=
function
()
{
var
r
=
Math
.
floor
(
Math
.
random
()
*
255
);
...
...
@@ -1887,13 +1870,16 @@
return
"
rgb(
"
+
r
+
"
,
"
+
g
+
"
,
"
+
b
+
"
)
"
;
};
var
slidename
=
"
s
"
+
a
;
var
labelsArr
=
Object
.
getOwnPropertyNames
(
percentArr
[
slidename
]);
function
drawChart
(
slideNumber
,
array
,
chart
,
canvasName
,
chartTitle
){
var
slidename
=
"
s
"
+
slideNumber
;
var
labelsArr
=
Object
.
getOwnPropertyNames
(
array
[
slidename
]);
var
valuesArr
=
[];
var
colorArr
=
[];
labelsArr
.
forEach
((
label
)
=>
{
valuesArr
.
push
(
percentArr
[
slidename
][
label
]);
valuesArr
.
push
(
array
[
slidename
][
label
]);
colorArr
.
push
(
dynamicColors
());
})
...
...
@@ -1901,7 +1887,7 @@
labels
:
labelsArr
,
datasets
:
[
{
label
:
'
Slide
'
+
a
,
label
:
'
Slide
'
+
slideNumber
,
data
:
valuesArr
,
backgroundColor
:
colorArr
,
}
...
...
@@ -1920,18 +1906,48 @@
},
title
:
{
display
:
true
,
text
:
'
Slide
'
+
a
text
:
chartTitle
}
},
scales
:
{
yAxes
:
[{
title
:
{
display
:
true
,
text
:
'
Your Title Y
'
}
}],
xAxes
:
[{
title
:
{
display
:
true
,
text
:
'
Your Title X
'
}
}]
}
},
};
if
(
myChart
){
console
.
log
(
"
AFASFASFASFASFASFSAFSAAFAFASFSAFASFDFAFA
"
);
myChart
.
destroy
();
if
(
chart
)
{
chart
.
destroy
();
}
myChart
=
new
Chart
(
document
.
getElementById
(
'
myChart
'
),
config
);
$
(
"
#dropdown
"
).
show
();
chart
=
new
Chart
(
document
.
getElementById
(
canvasName
),
config
);
return
chart
;
}
var
objectChart
;
var
typeChart
;
function
showResults
(
slideNumber
)
{
if
(
objectChart
)
{
objectChart
.
destroy
();
}
objectChart
=
drawChart
(
slideNumber
,
percentArr
,
objectChart
,
'
objectChart
'
,
'
Object Percentage
'
)
if
(
typeChart
)
{
typeChart
.
destroy
();
}
typeChart
=
drawChart
(
slideNumber
,
percentArr2
,
typeChart
,
'
typeChart
'
,
'
Type Percentage
'
)
$
(
"
#resultChart
"
).
show
();
$
(
"
#dropdown
"
).
show
();
$
(
"
#details
"
).
show
();
}
</script>
...
...
frontend/task2.html
View file @
a49dd9ee
...
...
@@ -18,7 +18,6 @@
height
:
130px
;
position
:
absolute
;
}
.dropdown
{
position
:
absolute
;
display
:
none
;
...
...
@@ -61,9 +60,8 @@
</head>
<body
style=
"margin: 0px; overflow: hidden;"
>
<audio
autoplay
>
<source
src=
"audio/background.mp3"
type=
"audio/mpeg"
>
<audio
id=
"backgroundsound"
autoplay
loop
src=
"audio/background.mp3"
>
<!-- <source src="audio/background.mp3" type="audio/mpeg"> -->
</audio>
<img
id=
"ch"
class=
"slide"
style=
"display: none;"
src=
"images/task1/CHR.png"
>
...
...
@@ -95,31 +93,8 @@
</div>
<!-- dropdown -->
<!-- <div class="dropdown">
<button class="dropbtn">Dropdown</button>
<div class="dropdown-content">
<a href="#">Slide 1</a>
<a href="#">Slide 2</a>
<a href="#">Slide 3</a>
<a href="#">Slide 4</a>
<a href="#">Slide 5</a>
<a href="#">Slide 6</a>
<a href="#">Slide 7</a>
<a href="#">Slide 8</a>
<a href="#">Slide 9</a>
<a href="#">Slide 10</a>
<a href="#">Slide 11</a>
<a href="#">Slide 12</a>
<a href="#">Slide 13</a>
<a href="#">Slide 14</a>
<a href="#">Slide 15</a>
<a href="#">Slide 16</a>
<a href="#">Slide 17</a>
<a href="#">Slide 18</a>
<a href="#">Slide 19</a>
</div>
</div> -->
<div>
<div
>
<select
id=
"slideList"
class=
"dropdown"
onchange=
"slideChange()"
>
<option
value=
"none"
selected
disabled
hidden
>
Select a Slide
</option>
<option
value=
"1"
>
Slide 1
</option>
...
...
@@ -898,18 +873,18 @@
var
slideID
=
null
;
var
slide
=
"
ch
"
;
//pause variable(use to store the stste of game)
var
isPaused
=
false
;
var
isGameOver
=
false
;
var
a
var
started
=
false
;
var
taskLoop
;
var
taskPaused
=
false
;
webgazer
.
setGazeListener
(
function
(
data
,
elapsedTime
)
{
if
(
data
==
null
)
{
return
;
}
if
(
!
started
)
{
if
(
!
started
)
{
showSlide
();
taskLoop
=
setInterval
(
showSlide
,
7000
);
started
=
true
;
...
...
@@ -1754,48 +1729,42 @@
//function for pause game
document
.
addEventListener
(
'
keyup
'
,
function
(
e
)
{
//32 is space bar button ASCII value
console
.
log
(
"
e.which
"
);
console
.
log
(
e
.
which
);
console
.
log
(
"
/e.which
"
);
alert
(
"
Game is paused
"
);
if
(
e
.
which
===
32
&&
isGameOver
==
false
)
{
//if(isPaused) resumeGame();
//else pasuseGame();
if
(
slide
==
"
ch
"
){
if
(
e
.
which
===
32
)
{
if
(
!
taskPaused
){
pauseTask
();
}
else
{
resumeTask
();
}
// alert("Game is paused");
}
else
if
(
e
.
which
===
13
&&
taskPaused
)
{
stopTask
();
}
}
});
// function pasuseGame(){
// clearInterval(interval);
// isPaused = true;
// canvas.style.opacity = 0.5;
// canvascontext.font = "90px tahoma";
// canvascontext.fillstyle = "white";
// canvascontext.textAlign = "center";
// canvascontext.textBaseline = "middle";
// canvascontext.fillText("Game Paused", 400,250)
// }
// function resumeGame(){
// isPaused = false;
// canvascontext.clearRect(0, 0, canvas.width, canvas.height);
// canvas.style.opacity = 1;
// interval = setInterval(showSlide, 20);
// }
// function gameOver(){
// isGameOver = true;
// canvas.style.opacity = 0.5;
// canvascontext.font = "90px tahoma";
// canvascontext.fillstyle = "white";
// canvascontext.textAlign = "center";
// canvascontext.textBaseline = "middle";
// canvascontext.fillText("Game Over", 400,170);
function
pauseTask
(){
if
(
!
taskPaused
){
console
.
log
(
"
puased
"
);
clearInterval
(
taskLoop
);
clearTimeout
(
tempT
)
webgazer
.
pause
();
taskPaused
=
true
;
}
}
function
resumeTask
(){
if
(
taskPaused
){
console
.
log
(
"
resumed
"
);
taskLoop
=
setInterval
(
showSlide
,
7000
);
webgazer
.
resume
();
taskPaused
=
false
;
}
}
// }
function
stopTask
(){
console
.
log
(
"
stoped
"
);
function
showSlide
()
{
if
(
increment
>=
20
)
{
$
(
"
.slide
"
).
hide
();
$
(
"
#result
"
).
show
();
$
(
"
#slideList
"
).
show
();
...
...
@@ -1806,7 +1775,14 @@
webgazer
.
pause
();
//calculate object percentages for each slide
calculatePercentArray
(
arr
,
percentArr
);
//showResults(a);
sendGazeDataToBackend
(
arr
,
percentArr
);
}
function
calculatePercentArray
(
arr
,
percentArr
){
for
(
let
slide
in
arr
)
{
OList
=
arr
[
slide
].
map
((
x
)
=>
{
...
...
@@ -1831,13 +1807,45 @@
}
}
//showResults(a);
sendGazeDataToBackend
(
arr
,
percentArr
);
}
// function pasuseGame(){
// clearInterval(interval);
// isPaused = true;
// canvas.style.opacity = 0.5;
// canvascontext.font = "90px tahoma";
// canvascontext.fillstyle = "white";
// canvascontext.textAlign = "center";
// canvascontext.textBaseline = "middle";
// canvascontext.fillText("Game Paused", 400,250)
// }
// function resumeGame(){
// isPaused = false;
// canvascontext.clearRect(0, 0, canvas.width, canvas.height);
// canvas.style.opacity = 1;
// interval = setInterval(showSlide, 20);
// }
// function gameOver(){
// isGameOver = true;
// canvas.style.opacity = 0.5;
// canvascontext.font = "90px tahoma";
// canvascontext.fillstyle = "white";
// canvascontext.textAlign = "center";
// canvascontext.textBaseline = "middle";
// canvascontext.fillText("Game Over", 400,170);
return
;
}
// }
var
tempT
;
function
showSlide
()
{
if
(
increment
>=
20
)
{
//end of slides
stopTask
();
}
else
{
$
(
"
.slide
"
).
hide
();
...
...
@@ -1845,18 +1853,17 @@
$
(
"
#ch
"
).
show
();
$
(
"
#objectName
"
).
text
(
"
none
"
)
slide
=
"
ch
"
;
setTimeout
(
function
()
{
tempT
=
setTimeout
(
function
()
{
$
(
"
#ch
"
).
hide
();
$
(
slideID
).
show
();
slide
=
slideID
.
substr
(
1
);
//remove the # in the begining
console
.
log
(
"
slideID:
"
+
slideID
);
console
.
log
(
"
increment:
"
+
increment
);
},
2
000
);
},
5
000
);
increment
+=
1
;
}
}
// send Gaze Data To Backend
function
sendGazeDataToBackend
(
dataArr
,
percentArray
,
user
,
task
)
{
//ajax
...
...
@@ -1882,6 +1889,7 @@
}
});
}
var
myChart
;
function
showResults
(
a
)
{
...
...
@@ -1893,7 +1901,7 @@
return
"
rgb(
"
+
r
+
"
,
"
+
g
+
"
,
"
+
b
+
"
)
"
;
};
var
slidename
=
"
s
"
+
a
;
var
slidename
=
"
s
"
+
a
;
var
labelsArr
=
Object
.
getOwnPropertyNames
(
percentArr
[
slidename
]);
var
valuesArr
=
[];
...
...
@@ -1931,7 +1939,7 @@
}
},
};
if
(
myChart
)
{
if
(
myChart
)
{
console
.
log
(
"
AFASFASFASFASFASFSAFSAAFAFASFSAFASFDFAFA
"
);
myChart
.
destroy
();
}
...
...
frontend/taskDescription1.html
View file @
a49dd9ee
...
...
@@ -6,12 +6,28 @@
</header>
<br><br><br><br><br><br><br><br>
<body>
<div
class=
"main"
>
<div>
<h1>
සමස්ථ ක්රියාකාරකම පිළිබද හැදින්වීම :
</h1>
</div>
<div>
<h3>
මම ක්රියාකාරකම වයස අවුරුදු 4-7ත් දරුවන් සදහා නිර්මාණය කරන ලද්දකි.
</h3>
<h3>
ඉන්පසු පිවිසෙන්නේ calibration ක්රියාවලිය සිදු කිරීම සදහා සෑදූ වෙබ් පිටුව වෙතටයි. Calibration ක්රියාවලිය යනු මේ ක්රියාකාරකමේ ඉතා වැදගත් කොටසකි. එම නිසා ඒ ක්රියාවලිය නිවැරදිව සිදු කිරීම වැදගත් වේ
</h3>
<h3>
එහිදී මූලික පියවර ලෙස දරුවා පුටුවක් මත වාඩි කරවන්න. ඉන්පසු ඔබ ක්රියාකරකමට සහභාගී වීම සදහා යොදා ගන්නා laptop පරිගණකය හෝ desktop පරිගණකය දරුවාගේ මුහුණ මට්ටමට සමාන්තරව සිටිය පරිදි තිරස් මේසයක් මත නොසලවෙන සේ තබන්න
</h3>
<h3>
ඔබට දරුවාගේ මුහුණ මේ වන විට තිරය තම දිස්වේ. දරුවා නිවැරදි ඉරියව්වට පැමිණ ඇත්දැයි ඔබට දැනගැනීමට හැක. ඒ ඔබේ දරුවා නිවැරදි ආකරයට අසුන්ගෙන සිටීනම් එවිට තිරය මත ඔබේ දරුවාගෙ රූපය පෙනීම නැතිවී ගොස් තිරයේ වම් කෙරවල උඩ රූපයක් දිස්වේ.
</h3>
<h3>
දැන් දරුවාට ඒ රූපය දෙස බලා සිටීමට යැයි දැනුවත් කල ඔබ ඒ රූප උඩ තුන්වරක් බැගින් ඔබන්න. එක් රූපයක් මත ඔබ තුන්වරක් නිවැරදිව එබීම සිදු කලේ නම ඊලග රූපය මතු වේ.
</h3>
<h3>
එලස රූප 9 සදහාම නිවැරදිව සිදු කලේ නම් අවසන් රූපය තෙවරක් එබීමෙන් පසු ඊලග පිටුවට පිවිසීම සදහ උඩින් දිස් වන බොත්තම එබීම කල යුතුය.
</h3>
<h3>
ඉන්පසු පඉවිසෙන්නේ ක්රියාකරකම වෙතටයි. එහිදී දරුවාට තමා කැමති රූප දෙස බැලීමට උපදෙස් දෙන්න.
</h3>
<h3>
කිසියම් හේතුවක් නිසා දරුවාට ක්රියාකාරකම මගින් නැවතීමට අවශ්ය නම් ඔබ key board එකේ ඇති space යතුර එක වතාවක් ඔබන්න. එමගින් ක්රියාකාරකම තවකාලිකව නවතී. මද වෙලාවකින් පසු දරුවා නැවත ක්රියාකාරකම කිරීමය බලාපොරොත්තු වෙනවානම් ඒ සූදානම් වූ පසු නැවත එම space යතුරම ඔබන්න. එසේ නැතිනම් දරුවා ක්රියාකාරකම මගින් සම්පූර්ණයෙන්ම නවත්වයිනම් පලමු අවස්ථාවේ space යතුර එබීමෙන් පසුව enter යතුර ඔබන්න.
</h3>
<h3>
එවිය ක්රියාකාරකම අවසන් වී ප්රතිඵල තීරුවට යොමු වේ. මේ සියලු නැවැත්වීම ක්රියාවන් කල හැක්කේ කතිර සලකුන පෙනෙන අවස්ථාවේදී පමණි.
</h3>
</div>
</div>
<br><br>
<div
style=
"text-align:center"
>
<h1>
task1 Description
</h1><br><br>
<input
type=
"submit"
value=
"ඊළග පිටුවට"
name=
"submit"
id=
"submit"
onclick=
"location.href='start.html'"
>
</div>
<br><br><br><br>
</body>
</html>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment