diff --git a/Length Converter JS Extension/img/background-blue-aesthetic-flowers.jpg b/Length Converter JS Extension/img/background-blue-aesthetic-flowers.jpg new file mode 100644 index 00000000..b4069b20 Binary files /dev/null and b/Length Converter JS Extension/img/background-blue-aesthetic-flowers.jpg differ diff --git a/Length Converter JS Extension/js/length-converter.js b/Length Converter JS Extension/js/length-converter.js new file mode 100644 index 00000000..e160cd7f --- /dev/null +++ b/Length Converter JS Extension/js/length-converter.js @@ -0,0 +1,103 @@ +function CalculateLength(){ + var fromLength = Number(document.getElementById("fromLength").value); + + if(ValidateLengthConverter(fromLength)){ + + var fromUnit = document.getElementById("fromUnit").value; + var toUnit = document.getElementById("toUnit").value; + + var outputLength = document.getElementById("outputLength"); + + + var result = ConvertLength(fromLength,fromUnit,toUnit); + + outputLength.value = result.toFixed(5); + + } +} + +function ResetConverter(){ + if(confirm("Are you sure want to reset?")){ + document.getElementById("fromLength").value = ""; + document.getElementById("outputLength").value = ""; + } +} + +function ConvertLength(fromLength,fromUnit,toUnit){ + fromLength = Number(fromLength); + var inMillimeter = 0; + var makeThisMillimeter = 0; + var result; + + switch(fromUnit){ + case "Millimeter": + makeThisMillimeter = 1; + break; + case "Centimeter": + makeThisMillimeter = 10; + break; + case "Decimeter": + makeThisMillimeter = 100; + break; + case "Meter": + makeThisMillimeter = 1000; + break; + case "Kilometer": + makeThisMillimeter = 1000000; + break; + case "Foot": + makeThisMillimeter = 304.8; + break; + case "Inch": + makeThisMillimeter = 25.4; + break; + case "Mile": + makeThisMillimeter = 1609344; + break; + case "Yard": + makeThisMillimeter = 914.4; + break; + } + inMillimeter = fromLength * makeThisMillimeter; + + switch(toUnit){ + case "Millimeter": + result = inMillimeter; + break; + case "Centimeter": + result = inMillimeter / 10; + break; + case "Decimeter": + result = inMillimeter / 100; + break; + case "Meter": + result = inMillimeter / 1000; + break; + case "Kilometer": + result = inMillimeter / 1000000; + break; + case "Foot": + result = inMillimeter / 304.8; + break; + case "Inch": + result = inMillimeter / 25.4; + break; + case "Mile": + result = inMillimeter / 1609344; + break; + case "Yard": + result = inMillimeter / 914.4; + break; + } + return result; +} + +function ValidateLengthConverter(fromLength){ + if(fromLength <= 0){ + + _cmnShowErrorMessageBottomOfTheInputFiled("fromLength","Please enter the valid length") + + return false; + } + return true; +} \ No newline at end of file diff --git a/Length Converter JS Extension/js/project-common.js b/Length Converter JS Extension/js/project-common.js new file mode 100644 index 00000000..b769b411 --- /dev/null +++ b/Length Converter JS Extension/js/project-common.js @@ -0,0 +1,24 @@ +function _cmnRemoveAllErrorMessage(){ + var allErrorBorder = document.getElementsByClassName('error-border'); + var allErrorMessage = document.getElementsByClassName('error-message'); + var i; + + for(i = (allErrorBorder.length) - 1; i>=0; i--){ + allErrorBorder[i].classList.remove("error-border"); + } + + for(i = (allErrorMessage.length) - 1; i>=0; i--){ + allErrorMessage[i].remove(); + } +} + +function _cmnShowErrorMessageBottomOfTheInputFiled(fieldID,errorMessage){ + var inputField = document.getElementById(fieldID); + inputField.classList.add("tool-error-border"); + inputField.focus(); + + var errorMessageElement = document.createElement("p"); + errorMessageElement.innerHTML = errorMessage; + errorMessageElement.classList.add("tool-error-message"); + inputField.parentNode.insertBefore(errorMessageElement, inputField.nextSibling); +} \ No newline at end of file diff --git a/Length Converter JS Extension/main.html b/Length Converter JS Extension/main.html new file mode 100644 index 00000000..acf05beb --- /dev/null +++ b/Length Converter JS Extension/main.html @@ -0,0 +1,63 @@ + + + + + + + + Length converter + + + +
+

Length Converter

+
+
+
+ +
+ + +
+ +
+
+ +
+ + +
+ +
+ + + +
+
+
+ + + + + + \ No newline at end of file diff --git a/Length Converter JS Extension/manifest.json b/Length Converter JS Extension/manifest.json new file mode 100644 index 00000000..59aff868 --- /dev/null +++ b/Length Converter JS Extension/manifest.json @@ -0,0 +1,27 @@ +{ + "manifest_version": 3, + "name": "Length Converter JS Extension", + "version": "1.0", + "description": "Length Converter Extension offers a seamless experience for converting lengths, allowing users to effortlessly switch between various units of measurement...", + "author" : "ishadutta.193@gmail.com", + + "icons":{ + "16": "./src/icon-16.png", + "32": "./src/icon-32.png", + "48": "./src/icon-48.png", + "128": "./src/icon-128.png" + + }, + "permissions": [ + "storage" + ], + "action": { + "default_popup": "main.html" + }, + "web_accessible_resources": [ + { + "resources": ["main.html"], + "matches": [""] + } + ] +} \ No newline at end of file diff --git a/Length Converter JS Extension/scripts/length-converter.js b/Length Converter JS Extension/scripts/length-converter.js new file mode 100644 index 00000000..9d30f4b2 --- /dev/null +++ b/Length Converter JS Extension/scripts/length-converter.js @@ -0,0 +1,106 @@ +document.getElementById("btnReset").addEventListener("click", ResetConverter); +document.getElementById("btnCalculate").addEventListener("click", CalculateLength); + +function CalculateLength(){ + var fromLength = Number(document.getElementById("fromLength").value); + + if(ValidateLengthConverter(fromLength)){ + + var fromUnit = document.getElementById("fromUnit").value; + var toUnit = document.getElementById("toUnit").value; + + var outputLength = document.getElementById("outputLength"); + + + var result = ConvertLength(fromLength,fromUnit,toUnit); + + outputLength.value = result.toFixed(5); + + } +} + +function ResetConverter(){ + if(confirm("Are you sure want to reset?")){ + document.getElementById("fromLength").value = ""; + document.getElementById("outputLength").value = ""; + } +} + +function ConvertLength(fromLength,fromUnit,toUnit){ + fromLength = Number(fromLength); + var inMillimeter = 0; + var makeThisMillimeter = 0; + var result; + + switch(fromUnit){ + case "Millimeter": + makeThisMillimeter = 1; + break; + case "Centimeter": + makeThisMillimeter = 10; + break; + case "Decimeter": + makeThisMillimeter = 100; + break; + case "Meter": + makeThisMillimeter = 1000; + break; + case "Kilometer": + makeThisMillimeter = 1000000; + break; + case "Foot": + makeThisMillimeter = 304.8; + break; + case "Inch": + makeThisMillimeter = 25.4; + break; + case "Mile": + makeThisMillimeter = 1609344; + break; + case "Yard": + makeThisMillimeter = 914.4; + break; + } + inMillimeter = fromLength * makeThisMillimeter; + + switch(toUnit){ + case "Millimeter": + result = inMillimeter; + break; + case "Centimeter": + result = inMillimeter / 10; + break; + case "Decimeter": + result = inMillimeter / 100; + break; + case "Meter": + result = inMillimeter / 1000; + break; + case "Kilometer": + result = inMillimeter / 1000000; + break; + case "Foot": + result = inMillimeter / 304.8; + break; + case "Inch": + result = inMillimeter / 25.4; + break; + case "Mile": + result = inMillimeter / 1609344; + break; + case "Yard": + result = inMillimeter / 914.4; + break; + } + return result; +} + +function ValidateLengthConverter(fromLength){ + if(fromLength <= 0){ + + _cmnShowErrorMessageBottomOfTheInputFiled("fromLength","Please enter the valid length") + + return false; + } + return true; +} \ No newline at end of file diff --git a/Length Converter JS Extension/scripts/project-common.js b/Length Converter JS Extension/scripts/project-common.js new file mode 100644 index 00000000..b769b411 --- /dev/null +++ b/Length Converter JS Extension/scripts/project-common.js @@ -0,0 +1,24 @@ +function _cmnRemoveAllErrorMessage(){ + var allErrorBorder = document.getElementsByClassName('error-border'); + var allErrorMessage = document.getElementsByClassName('error-message'); + var i; + + for(i = (allErrorBorder.length) - 1; i>=0; i--){ + allErrorBorder[i].classList.remove("error-border"); + } + + for(i = (allErrorMessage.length) - 1; i>=0; i--){ + allErrorMessage[i].remove(); + } +} + +function _cmnShowErrorMessageBottomOfTheInputFiled(fieldID,errorMessage){ + var inputField = document.getElementById(fieldID); + inputField.classList.add("tool-error-border"); + inputField.focus(); + + var errorMessageElement = document.createElement("p"); + errorMessageElement.innerHTML = errorMessage; + errorMessageElement.classList.add("tool-error-message"); + inputField.parentNode.insertBefore(errorMessageElement, inputField.nextSibling); +} \ No newline at end of file diff --git a/Length Converter JS Extension/src/background-blue-aesthetic-flowers.jpg b/Length Converter JS Extension/src/background-blue-aesthetic-flowers.jpg new file mode 100644 index 00000000..b4069b20 Binary files /dev/null and b/Length Converter JS Extension/src/background-blue-aesthetic-flowers.jpg differ diff --git a/Length Converter JS Extension/src/icon-128.png b/Length Converter JS Extension/src/icon-128.png new file mode 100644 index 00000000..6a7accee Binary files /dev/null and b/Length Converter JS Extension/src/icon-128.png differ diff --git a/Length Converter JS Extension/src/icon-16.png b/Length Converter JS Extension/src/icon-16.png new file mode 100644 index 00000000..95436056 Binary files /dev/null and b/Length Converter JS Extension/src/icon-16.png differ diff --git a/Length Converter JS Extension/src/icon-32.png b/Length Converter JS Extension/src/icon-32.png new file mode 100644 index 00000000..ed3688ac Binary files /dev/null and b/Length Converter JS Extension/src/icon-32.png differ diff --git a/Length Converter JS Extension/src/icon-48.png b/Length Converter JS Extension/src/icon-48.png new file mode 100644 index 00000000..c926237a Binary files /dev/null and b/Length Converter JS Extension/src/icon-48.png differ diff --git a/Length Converter JS Extension/src/style.css b/Length Converter JS Extension/src/style.css new file mode 100644 index 00000000..94fc3d49 --- /dev/null +++ b/Length Converter JS Extension/src/style.css @@ -0,0 +1,85 @@ +*{ + border: none; + outline: none; + font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; +} + +html, body{ + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + background-image: url(background-blue-aesthetic-flowers.jpg); + background-color: #0288d1; + color: #181818; +} + +.container{ + padding: 20px 80px; + background: rgba(61, 132, 165, .2); + box-shadow: 0px 0px 16px 0px rgba(0, 0, 0, .7); + backdrop-filter: blur(10px); + border-radius: 10px; +} + +.container h1{ + text-align: center; + color: #fff; +} + +.container-field{ + padding: 20px 80px; + max-width: 400px; + background: rgba(179, 229, 252, .4); + border-radius: 10px; +} + + +.input-group{ + margin-top: 10px; + width: 110%; + display: flex; + justify-content: space-between; +} + +.input-label{ + font-size: 20px; +} + +.btn +{ + background: #e7f7ff; + font-size: 16px; + display: block; + margin: 10px auto; + width: fit-content; + border: 1px solid #3d84a5; + padding: 14px 50px; + border-radius: 6px; + text-decoration: none; + color: #181818; + transition: background 0.5s; +} + +.btn:hover +{ + background: #3d84a5; + color: #fff; +} + +.tool-error-border{ + border: 2px solid red; +} + +.tool-error-message{ + display: block; + color: red; + font-size: 14px; + font-style: italic; + font-weight: 800; + margin: 5px 5px 0 5px; + position: absolute; + bottom: 1px; + right: 0px; +} \ No newline at end of file diff --git a/Length Converter JS Extension/style.css b/Length Converter JS Extension/style.css new file mode 100644 index 00000000..05340e1c --- /dev/null +++ b/Length Converter JS Extension/style.css @@ -0,0 +1,85 @@ +*{ + border: none; + outline: none; + font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; +} + +html, body{ + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + background-image: url(./img/background-blue-aesthetic-flowers.jpg); + background-color: #0288d1; + color: #181818; +} + +.container{ + padding: 20px 80px; + background: rgba(61, 132, 165, .2); + box-shadow: 0px 0px 16px 0px rgba(0, 0, 0, .7); + backdrop-filter: blur(10px); + border-radius: 10px; +} + +.container h1{ + text-align: center; + color: #fff; +} + +.container-field{ + padding: 20px 80px; + max-width: 400px; + background: rgba(179, 229, 252, .4); + border-radius: 10px; +} + + +.input-group{ + margin-top: 10px; + width: 110%; + display: flex; + justify-content: space-between; +} + +.input-label{ + font-size: 20px; +} + +.btn +{ + background: #e7f7ff; + font-size: 16px; + display: block; + margin: 10px auto; + width: fit-content; + border: 1px solid #3d84a5; + padding: 14px 50px; + border-radius: 6px; + text-decoration: none; + color: #181818; + transition: background 0.5s; +} + +.btn:hover +{ + background: #3d84a5; + color: #fff; +} + +.tool-error-border{ + border: 2px solid red; +} + +.tool-error-message{ + display: block; + color: red; + font-size: 14px; + font-style: italic; + font-weight: 800; + margin: 5px 5px 0 5px; + position: absolute; + bottom: 1px; + right: 0px; +} \ No newline at end of file