summaryrefslogtreecommitdiff
path: root/rannak/algus/utlused/js/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'rannak/algus/utlused/js/main.js')
-rw-r--r--rannak/algus/utlused/js/main.js209
1 files changed, 0 insertions, 209 deletions
diff --git a/rannak/algus/utlused/js/main.js b/rannak/algus/utlused/js/main.js
deleted file mode 100644
index 4262d41..0000000
--- a/rannak/algus/utlused/js/main.js
+++ /dev/null
@@ -1,209 +0,0 @@
-// Detecting part
-const isMobile = function(){
- const match = window.matchMedia('(pointer:coarse)');
- return (match && match.matches)
-}
-console.log(`${isMobile() ? 'mobile' : 'not mobile'}`);
-
-// Global Variables for Mobile
-let originalX = 0;
-let originalY = 0;
-let counter = 0;
-let itemAppend = null;
-
-if (`${isMobile() ? 'mobile' : 'not mobile'}` == 'not mobile') {
-
- const draggableElements = document.querySelectorAll(".draggable");
- const droppableElements = document.querySelectorAll(".droppable");
-
- draggableElements.forEach(elem => {
- elem.addEventListener("dragstart", dragStart); // Fires as soon as the user starts dragging an item - This is where we can define the drag data
- // elem.addEventListener("drag", drag); // Fires when a dragged item (element or text selection) is dragged
- // elem.addEventListener("dragend", dragEnd); // Fires when a drag operation ends (such as releasing a mouse button or hitting the Esc key) - After the dragend event, the drag and drop operation is complete
- });
-
- droppableElements.forEach(elem => {
- elem.addEventListener("dragenter", dragEnter); // Fires when a dragged item enters a valid drop target
- elem.addEventListener("dragover", dragOver); // Fires when a dragged item is being dragged over a valid drop target, repeatedly while the draggable item is within the drop zone
- elem.addEventListener("dragleave", dragLeave); // Fires when a dragged item leaves a valid drop target
- elem.addEventListener("drop", drop); // Fires when an item is dropped on a valid drop target
- });
-
- // Drag and Drop Functions //
-
- //Events fired on the drag target
- function dragStart(event) {
- event.dataTransfer.setData("text", event.target.id); // or "text/plain" but just "text" would also be fine since we are not setting any other type/format for data value
- }
-
- //Events fired on the drop target
- function dragEnter(event) {
- if(!event.target.classList.contains("dropped")) {
- event.target.classList.add("droppable-hover");
- }
- }
-
- function dragOver(event) {
- if(!event.target.classList.contains("dropped")) {
- event.preventDefault(); // Prevent default to allow drop
- }
- }
-
- function dragLeave(event) {
- if(!event.target.classList.contains("dropped")) {
- event.target.classList.remove("droppable-hover");
- }
- }
-
-
- function drop(event) {
-
- event.preventDefault(); // This is in order to prevent the browser default handling of the data
- event.target.classList.remove("droppable-hover");
- const draggableElementData = event.dataTransfer.getData("text"); // Get the dragged data. This method will return any data that was set to the same type in the setData() method
- const droppableElementData = event.target.getAttribute("data-draggable-id");
- const isCorrectMatching = draggableElementData === droppableElementData;
-
- if(isCorrectMatching) {
- const draggableElement = document.getElementById(draggableElementData);
- event.target.classList.add("dropped");
- // event.target.style.backgroundColor = draggableElement.style.color; // This approach works only for inline styles. A more general approach would be the following:
- event.target.style.backgroundColor = window.getComputedStyle(draggableElement).color;
- draggableElement.classList.add("dragged");
- draggableElement.setAttribute("draggable", "false");
- event.target.insertAdjacentHTML("afterbegin", `<i class="fas fa-${draggableElementData}"></i>`);
-
- counter++;
- console.log("counter:", counter)
- if (counter == 6){
- const btn = document.querySelector(".moveOn");
- btn.disabled = false;
- btn.onclick = () => location.href = "../../rolliValik";
- }
- } // If isCorrectMatchingEnd
- } // Drop Func End
-
-} // If Desktop End
-
-
-//If mobile
-
-else{
-
- const empty = Array.from(document.querySelectorAll('.empty'));
- const drags = document.querySelectorAll('.drag');
-
- drags.forEach(drag => {
- drag.addEventListener('pointerdown', pointerDown);
- drag.addEventListener('pointermove', pointerMove);
- drag.addEventListener('pointerup', pointerUp);
- })
-
-
- // Function when start touch
- function pointerDown(e){
- e.preventDefault();
-
- let remVal = parseInt(getComputedStyle(document.documentElement).fontSize);
- originalTop = e.target.getBoundingClientRect().top - 2*remVal;
- originalLeft = e.target.getBoundingClientRect().left - remVal;
- }
-
-
- // Function while movin
- function pointerMove(e){
- e.preventDefault();
-
- //Scrolling Part
- if (window.innerHeight - e.screenY < 600){
- window.scrollBy({
- top: 100, // could be negative value
- behavior: 'smooth'
- });
- }
-
- else if (e.clientY < 200){
- window.scrollBy({
- top: -100, // could be negative value
- behavior: 'smooth'
- });
- }
-
- nimi = e.target;
- if (!nimi.classList.contains('done')){
-
- nimi.style.left = `${e.pageX - nimi.clientHeight/2}px`;
- nimi.style.top = `${e.pageY - nimi.clientHeight/2}px`;
-
- empty.map(item => {
- if (
- nimi.getBoundingClientRect().top + nimi.offsetWidth / 2 < item.getBoundingClientRect().bottom &&
- nimi.getBoundingClientRect().right - nimi.offsetWidth / 2 > item.getBoundingClientRect().left &&
- nimi.getBoundingClientRect().bottom - nimi.offsetWidth / 2 > item.getBoundingClientRect().top &&
- nimi.getBoundingClientRect().left + nimi.offsetWidth / 2 < item.getBoundingClientRect().right
- ) {
- item.classList.add('active');
- itemAppend = item;
- }
- else {
- item.classList.remove('active');
- }
- }); //empty.map loop end
- }
-
- // if currentDrag has class done
- else{
- console.log("has class done")
- }
-
- }
-
-
- // Function if touch is stopped
- function pointerUp(e){
- e.preventDefault();
-
- if (itemAppend != null){
-
- if (itemAppend.classList.contains('active') && itemAppend.dataset.draggableId == this.id) {
- this.classList.add('done')
- this.parentElement.classList.add('done')
- itemAppend.classList.add('done');
- itemAppend.classList.remove('active');
-
- this.style.top = `${originalTop}px`;
- this.style.left = `${originalLeft}px`;
- //this.innerHTML="";
-
- counter++;
- console.log("counter:", counter)
- if (counter == 6){
- const btn = document.querySelector(".moveOn");
- btn.disabled = false;
- btn.onclick = () => location.href = "../../rolliValik";
- }
-
- }
- else {
-
- this.style.top = `${originalTop}px`;
- this.style.left = `${originalLeft}px`;
- this.parentElement.appendChild(this);
- itemAppend.classList.remove('active');
- }
- }
- else {
- this.style.top = `${originalTop}px`;
- this.style.left = `${originalLeft}px`;
- console.log("FakAp");
- } // PointerUp Func End
-
- window.scroll({
- top: 0,
- left: 0,
- behavior: 'smooth'
- });
- }
-
-
-} // If mobile End