diff --git a/app/static/css/hugo-styles.css b/app/static/css/hugo-styles.css
index 123d0409..3da3e6b6 100644
--- a/app/static/css/hugo-styles.css
+++ b/app/static/css/hugo-styles.css
@@ -11483,13 +11483,13 @@ textarea.form-control-lg {
}
}
-@font-face {
+/* @font-face {
font-family: 'SF Pro Display';
src: url("http://localhost:1313//fonts/SF-Pro-Display-Regular.otf") format("opentype");
font-weight: normal
-}
+} */
-@font-face {
+/* @font-face {
font-family: 'SF Pro Display';
src: url("http://localhost:1313//fonts/SF-Pro-Display-Semibold.otf") format("opentype");
font-weight: 600
@@ -11499,7 +11499,7 @@ textarea.form-control-lg {
font-family: 'SF Pro Display';
src: url("http://localhost:1313//fonts/SF-Pro-Display-Bold.otf") format("opentype");
font-weight: bold
-}
+} */
.fw-semibold {
font-weight: 600
diff --git a/app/static/data/services.json b/app/static/data/services.json
index 1c072b6b..3365b589 100644
--- a/app/static/data/services.json
+++ b/app/static/data/services.json
@@ -1,11 +1,32 @@
{
"cms": {
"title":"Content Management",
- "content":"Effective content management is crucial for VachanOnline.com and the VachanGo app, the leading Scripture Engagement platform in Indian Languages. With a streamlined content management system, administrators can organize and distribute diverse resources, including commentaries, videos, audio bibles, and reading plans. This system facilitates seamless integration of new content and ensures a wide range of offerings in multiple Indian languages. It also enables efficient management of user-generated content, fostering an interactive community of users. Content management plays a pivotal role in maintaining a dynamic and enriching Scripture Engagement experience for users."
+ "content":"Effective content management is crucial for VachanOnline.com and the VachanGo app, the leading Scripture Engagement platform in Indian Languages. With a streamlined content management system, administrators can organize and distribute diverse resources, including commentaries, videos, audio bibles, and reading plans. This system facilitates seamless integration of new content and ensures a wide range of offerings in multiple Indian languages. It also enables efficient management of user-generated content, fostering an interactive community of users. Content management plays a pivotal role in maintaining a dynamic and enriching Scripture Engagement experience for users.",
+ "links":[
+ {
+ "link1":"https://vachanonline.com/",
+ "linkname1":"Vachan Online",
+ "button":"false"
+ },
+
+ {
+ "link2":"https://play.google.com/store/apps/details?id=com.bridgeconn.vachango&pli=1",
+ "linkname2":"Vachan Go",
+ "button":"false"
+ }
+ ]
},
"translation": {
"title":"Translation APIs",
- "content":"Translation APIs are primarily designed for text translation but are now also being experimented with for sign language translation. These APIs typically rely on vocabulary-based translation techniques and token replacement methods. They excel in handling very low-resource languages and languages that are closely related. Additionally, these APIs offer translation memory and context-aware suggestion capabilities, enhancing the quality and accuracy of translations. Whether it's cloud-based projects or local projects, these translation APIs can seamlessly integrate and support various implementation scenarios. Their versatility and capabilities make them valuable tools for enabling effective language translation in a wide range of applications."
+ "content":"Translation APIs are primarily designed for text translation but are now also being experimented with for sign language translation. These APIs typically rely on vocabulary-based translation techniques and token replacement methods. They excel in handling very low-resource languages and languages that are closely related. Additionally, these APIs offer translation memory and context-aware suggestion capabilities, enhancing the quality and accuracy of translations. Whether it's cloud-based projects or local projects, these translation APIs can seamlessly integrate and support various implementation scenarios. Their versatility and capabilities make them valuable tools for enabling effective language translation in a wide range of applications.",
+ "links":[
+ {
+ "link1":"https://isl.bridgeconn.com/",
+ "linkname1":"IntelliSign",
+ "button":false
+
+ }
+ ]
},
"ai": {
"title":"AI APIs",
@@ -21,6 +42,13 @@
},
"microservices": {
"title":"Micro Services",
- "content":"Vachan Engine microservices architecture is broken down into a set ofi ndependently functioning services, each serving a specific business capability. These services communicate with each other through well-defined APIs, typically using lightweight protocols such as HTTP or messaging systems."
+ "content":"Vachan Engine microservices architecture is broken down into a set of independently functioning services, each serving a specific business capability. These services communicate with each other through well-defined APIs, typically using lightweight protocols such as HTTP or messaging systems.",
+ "links":[
+ {
+ "link1":"https://miro.com/app/board/uXjVPGg6dwk=/%20",
+ "linkname1":"Microservices",
+ "button":"false"
+ }
+ ]
}
}
\ No newline at end of file
diff --git a/app/static/scripts/services.js b/app/static/scripts/services.js
index c4407c50..9926b38d 100644
--- a/app/static/scripts/services.js
+++ b/app/static/scripts/services.js
@@ -28,18 +28,59 @@ window.onload = loadSeriveData();
const delay = ms => new Promise(res => setTimeout(res, ms));
+// async function setServiceContent(serviceName) {
+// await loadSeriveData();
+// const currentData = serviceContent[serviceName]
+// if (currentData){
+// serviceHeader.innerText = currentData.title;
+// serviceBody.innerText = currentData.content;
+// } else{
+// // failed to get data
+// serviceBody.innerText = 'something went wrong! Failed to load data';
+// }
+// }
+
async function setServiceContent(serviceName) {
await loadSeriveData();
- const currentData = serviceContent[serviceName]
- if (currentData){
+ const currentData = serviceContent[serviceName];
+ if (currentData) {
serviceHeader.innerText = currentData.title;
serviceBody.innerText = currentData.content;
- } else{
+
+ // Check if links exist in the JSON data
+ if (currentData.links && currentData.links.length > 0) {
+ const linkContainer = document.createElement('div');
+ linkContainer.classList.add('service-link-container');
+
+ // Iterate through the links and create anchor elements
+ currentData.links.forEach((linkData, index) => {
+ const linkElement = document.createElement('a');
+ linkElement.href = linkData[`link${index + 1}`]; // Access link1, link2, etc.
+ linkElement.target = "_blank"; // Opens link in a new tab
+ linkElement.innerText = linkData[`linkname${index + 1}`] || 'Learn More'; // Use linkname or default text
+ linkContainer.appendChild(linkElement);
+
+
+ if (index < currentData.links.length - 1) {
+ const separator = document.createElement('span');
+ separator.innerText = ' | ';
+ linkContainer.appendChild(separator);
+ }
+ });
+
+ linkContainer.style.marginTop = '10px'; // Adjust the value as needed
+
+
+ // Append the link container to the service card's body
+ serviceBody.appendChild(linkContainer);
+ }
+ } else {
// failed to get data
- serviceBody.innerText = 'something went wrong! Failed to load data';
+ serviceBody.innerText = 'Something went wrong! Failed to load data.';
}
}
+
let lastClickedSection;
async function handleServiceClicked(serviceName) {
diff --git a/app/templates/landing_page.html b/app/templates/landing_page.html
index 705e0ac9..f7e8f2b2 100644
--- a/app/templates/landing_page.html
+++ b/app/templates/landing_page.html
@@ -52,7 +52,6 @@
-