appscms-tools-theme 4.9.7 → 4.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/_data/.DS_Store +0 -0
- data/_data/feature/.DS_Store +0 -0
- data/_data/feature/en/compress-pdf.json +17 -2
- data/_data/footer/.DS_Store +0 -0
- data/_data/header/hi/data.json +2 -2
- data/_data/home/.DS_Store +0 -0
- data/_data/home/de/da.json +0 -0
- data/_data/home/de/de.json +0 -0
- data/_data/review/trustpilot.json +28 -29
- data/_includes/.DS_Store +0 -0
- data/_includes/Atest.html +248 -0
- data/_includes/appscms/.DS_Store +0 -0
- data/_includes/appscms/customblog/pageRelatedPosts.html +29 -19
- data/_includes/appscms/featurePageAuthors/featurePageAuthors.html +2 -1
- data/_includes/appscms/footer/footer.html +380 -255
- data/_includes/appscms/head/head.html +18 -18
- data/_includes/appscms/navbars/navbar.html +1 -1
- data/_includes/appscms/navbars/toolbar.html +1 -1
- data/_includes/authors/authors.html +1 -0
- data/assets/.DS_Store +0 -0
- data/assets/images/lakshmi.svg +1 -0
- data/assets/js/appscms-search.js +120 -125
- data/assets/js/appscms-theme.js +241 -74
- metadata +8 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 77077be30078f5cdcdf699ae245f6b31e0d5e14f94dbd34562b631de11ae83aa
|
|
4
|
+
data.tar.gz: 31134090f09b375a8d3f4eda101587b712a62be08d9b22d4e8229e307e00ce04
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 65c68aca35073b283a7e0322750fe2a43f0ab092eb053ee404a08aa3c0a9394d697e350795c410269f90bf899915e49016125f145c8965dfa1eb5d727fc80f8f
|
|
7
|
+
data.tar.gz: ab56cdf2130296edd4d85c4b635d18e8d63a25319ec2bdf0d2690321a82b2c6e816aca07eb99e1fbb630922a9d1dbac9e5bdc76b83252ba8f91a0d2368169622
|
data/_data/.DS_Store
CHANGED
|
Binary file
|
data/_data/feature/.DS_Store
CHANGED
|
Binary file
|
|
@@ -60,7 +60,16 @@
|
|
|
60
60
|
"content": "Setalarmforme.com is a cloud and web based application. You do not need to install any software to use Setalarmforme.com while setting alarms for $variable minutes from now."
|
|
61
61
|
}
|
|
62
62
|
],
|
|
63
|
-
|
|
63
|
+
"HOW_TO_CONTENT": {
|
|
64
|
+
"logoImageUrl": "/assets/pdf.svg",
|
|
65
|
+
"heading": "How to set alarm for \"Preview\" minutes:",
|
|
66
|
+
"steps": [
|
|
67
|
+
"Click on set alarm \"Preview\" ",
|
|
68
|
+
"Set $variable minutes for alarm.",
|
|
69
|
+
"Choose sound of your choice.",
|
|
70
|
+
"Click submit to set alarm, that's it !."
|
|
71
|
+
]
|
|
72
|
+
},
|
|
64
73
|
"FAQ": [
|
|
65
74
|
{
|
|
66
75
|
"question": "How many seconds from now, will the alarm ring ?",
|
|
@@ -201,7 +210,7 @@
|
|
|
201
210
|
"USP_FACTOR": "USP_FACTOR"
|
|
202
211
|
}
|
|
203
212
|
],
|
|
204
|
-
"author": "
|
|
213
|
+
"author": "lakshmi",
|
|
205
214
|
"contributors": [
|
|
206
215
|
{
|
|
207
216
|
"name": "Debosmita Bedajna"
|
|
@@ -211,6 +220,12 @@
|
|
|
211
220
|
},
|
|
212
221
|
{
|
|
213
222
|
"name": "RK Shree"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"name": "Bandana"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"name": "Manpreet Singh"
|
|
214
229
|
}
|
|
215
230
|
]
|
|
216
231
|
}
|
|
Binary file
|
data/_data/header/hi/data.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
"navbarBrandText": "",
|
|
3
|
+
"navbarBrandLogoSvg": "<svg height='40' width='180' xmlns:x='http://ns.adobe.com/Extensibility/1.0/' xmlns:i='http://ns.adobe.com/AdobeIllustrator/10.0/' xmlns:graph='http://ns.adobe.com/Graphs/1.0/' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Layer_1' x='0px' y='0px' viewBox='0 0 250 50' style='enable-background:new 0 0 250 50;' xml:space='preserve'><style type='text/css'>.st0{fill:#1C0DC8;}.st1{clip-path:url(#SVGID_1_);fill:url(#SVGID_2_);}.st2{fill:#FFFFFF;}</style><metadata><sfw xmlns='http://ns.adobe.com/SaveForWeb/1.0/'><slices></slices><slicesourcebounds bottomleftorigin='true' height='46.5' width='216' x='1.4' y='-48.2'></slicesourcebounds></sfw></metadata><g><g><path class='st0' d='M55.6,33.2c-1-0.4-1.8-1-2.3-1.8s-0.9-1.7-0.9-2.8h4.4c0.1,0.6,0.3,1.1,0.6,1.4c0.4,0.3,0.8,0.5,1.4,0.5 c0.6,0,1.1-0.1,1.4-0.4c0.4-0.3,0.5-0.7,0.5-1.2c0-0.4-0.1-0.8-0.4-1c-0.3-0.3-0.6-0.5-1-0.7c-0.4-0.2-1-0.4-1.7-0.6 c-1.1-0.3-2-0.7-2.7-1c-0.7-0.3-1.3-0.8-1.8-1.5c-0.5-0.7-0.7-1.5-0.7-2.6c0-1.6,0.6-2.8,1.7-3.7c1.1-0.9,2.6-1.3,4.4-1.3 c1.9,0,3.4,0.4,4.5,1.3c1.1,0.9,1.7,2.1,1.8,3.7h-4.4c0-0.5-0.2-1-0.6-1.3s-0.8-0.5-1.4-0.5c-0.5,0-0.9,0.1-1.2,0.4 c-0.3,0.3-0.5,0.6-0.5,1.1c0,0.5,0.3,1,0.8,1.3c0.5,0.3,1.3,0.6,2.4,1c1.1,0.4,2,0.7,2.7,1.1s1.3,0.8,1.8,1.5 c0.5,0.6,0.7,1.5,0.7,2.5c0,1-0.2,1.8-0.7,2.6c-0.5,0.8-1.2,1.4-2.1,1.9s-2,0.7-3.3,0.7C57.7,33.8,56.6,33.6,55.6,33.2z'></path><path class='st0' d='M67.5,23.3c0.5-1,1.2-1.8,2.1-2.4c0.9-0.6,1.9-0.8,3-0.8c0.9,0,1.8,0.2,2.5,0.6c0.7,0.4,1.3,0.9,1.6,1.5v-1.9 h4.1v13.4h-4.1v-1.9c-0.4,0.6-1,1.1-1.7,1.5c-0.7,0.4-1.5,0.6-2.5,0.6c-1.1,0-2.1-0.3-3-0.9c-0.9-0.6-1.6-1.4-2.1-2.4 c-0.5-1-0.8-2.3-0.8-3.6C66.8,25.6,67,24.4,67.5,23.3z M75.9,24.6c-0.6-0.6-1.3-0.9-2.1-0.9c-0.8,0-1.5,0.3-2.1,0.9 c-0.6,0.6-0.9,1.4-0.9,2.4c0,1,0.3,1.8,0.9,2.4c0.6,0.6,1.3,0.9,2.1,0.9c0.8,0,1.5-0.3,2.1-0.9c0.6-0.6,0.9-1.4,0.9-2.4 C76.8,26,76.5,25.1,75.9,24.6z'></path><path class='st0' d='M90.6,23.7h-2.2v10h-4.1v-10h-1.5v-3.4h1.5v-0.4c0-1.6,0.5-2.9,1.4-3.8c0.9-0.9,2.3-1.3,4.2-1.3 c0.3,0,0.5,0,0.7,0v3.5c-0.8,0-1.3,0.1-1.7,0.3c-0.3,0.3-0.5,0.8-0.5,1.5v0.1h2.2V23.7z'></path><path class='st0' d='M105.1,28h-9.3c0.1,0.8,0.3,1.5,0.8,1.9c0.5,0.4,1.1,0.7,1.7,0.7c1,0,1.7-0.4,2.1-1.3h4.4 c-0.2,0.9-0.6,1.7-1.2,2.4s-1.3,1.3-2.2,1.7c-0.9,0.4-1.9,0.6-3,0.6c-1.3,0-2.5-0.3-3.5-0.8c-1-0.6-1.8-1.4-2.4-2.4 s-0.9-2.3-0.9-3.6c0-1.4,0.3-2.6,0.9-3.6c0.6-1,1.4-1.8,2.4-2.4c1-0.6,2.2-0.8,3.5-0.8c1.3,0,2.4,0.3,3.5,0.8 c1,0.5,1.8,1.3,2.4,2.3c0.6,1,0.9,2.2,0.9,3.5C105.1,27.1,105.1,27.5,105.1,28z M100.9,25.7c0-0.7-0.2-1.3-0.7-1.7 c-0.5-0.4-1.1-0.6-1.8-0.6c-0.7,0-1.3,0.2-1.7,0.6c-0.5,0.4-0.8,1-0.9,1.7H100.9z'></path><path class='st0' d='M111.4,16.8v16.8h-4.1V16.8H111.4z'></path><path class='st0' d='M135.4,21.7c1,1,1.5,2.4,1.5,4.2v7.8h-4.1v-7.3c0-0.9-0.2-1.5-0.7-2c-0.5-0.5-1.1-0.7-1.9-0.7 s-1.4,0.2-1.9,0.7c-0.5,0.5-0.7,1.1-0.7,2v7.3h-4.1v-7.3c0-0.9-0.2-1.5-0.7-2c-0.5-0.5-1.1-0.7-1.9-0.7c-0.8,0-1.4,0.2-1.9,0.7 c-0.5,0.5-0.7,1.1-0.7,2v7.3h-4.1V20.3h4.1V22c0.4-0.6,1-1,1.6-1.3c0.7-0.3,1.4-0.5,2.3-0.5c1,0,1.9,0.2,2.7,0.6 c0.8,0.4,1.4,1,1.9,1.8c0.5-0.7,1.1-1.3,1.9-1.8s1.7-0.7,2.6-0.7C133.1,20.1,134.5,20.6,135.4,21.7z'></path><path class='st0' d='M139.8,23.3c0.5-1,1.2-1.8,2.1-2.4c0.9-0.6,1.9-0.8,3-0.8c0.9,0,1.8,0.2,2.5,0.6c0.7,0.4,1.3,0.9,1.6,1.5 v-1.9h4.1v13.4H149v-1.9c-0.4,0.6-1,1.1-1.7,1.5c-0.7,0.4-1.5,0.6-2.5,0.6c-1.1,0-2.1-0.3-3-0.9c-0.9-0.6-1.6-1.4-2.1-2.4 c-0.5-1-0.8-2.3-0.8-3.6C139,25.6,139.2,24.4,139.8,23.3z M148.2,24.6c-0.6-0.6-1.3-0.9-2.1-0.9c-0.8,0-1.5,0.3-2.1,0.9 c-0.6,0.6-0.9,1.4-0.9,2.4c0,1,0.3,1.8,0.9,2.4c0.6,0.6,1.3,0.9,2.1,0.9c0.8,0,1.5-0.3,2.1-0.9c0.6-0.6,0.9-1.4,0.9-2.4 C149,26,148.7,25.1,148.2,24.6z'></path><path class='st0' d='M163.7,20.7c0.7,0.4,1.3,0.9,1.6,1.5v-1.9h4.1v13.4c0,1.2-0.2,2.3-0.7,3.3c-0.5,1-1.2,1.8-2.2,2.4 s-2.2,0.9-3.7,0.9c-2,0-3.6-0.5-4.8-1.4c-1.2-0.9-1.9-2.2-2.1-3.8h4.1c0.1,0.5,0.4,0.9,0.9,1.2c0.5,0.3,1.1,0.4,1.8,0.4 c0.8,0,1.5-0.2,2-0.7s0.8-1.3,0.8-2.3v-1.9c-0.4,0.6-1,1.1-1.7,1.5c-0.7,0.4-1.5,0.6-2.5,0.6c-1.1,0-2.1-0.3-3-0.9 c-0.9-0.6-1.6-1.4-2.1-2.4c-0.5-1-0.8-2.3-0.8-3.6c0-1.4,0.3-2.6,0.8-3.6c0.5-1,1.2-1.8,2.1-2.4c0.9-0.6,1.9-0.8,3-0.8 C162.1,20.1,162.9,20.3,163.7,20.7z M164.5,24.6c-0.6-0.6-1.3-0.9-2.1-0.9c-0.8,0-1.5,0.3-2.1,0.9c-0.6,0.6-0.9,1.4-0.9,2.4 c0,1,0.3,1.8,0.9,2.4c0.6,0.6,1.3,0.9,2.1,0.9c0.8,0,1.5-0.3,2.1-0.9c0.6-0.6,0.9-1.4,0.9-2.4C165.3,26,165,25.1,164.5,24.6z'></path><path class='st0' d='M184.9,28h-9.3c0.1,0.8,0.3,1.5,0.8,1.9c0.5,0.4,1.1,0.7,1.7,0.7c1,0,1.7-0.4,2.1-1.3h4.4 c-0.2,0.9-0.6,1.7-1.2,2.4s-1.3,1.3-2.2,1.7c-0.9,0.4-1.9,0.6-3,0.6c-1.3,0-2.5-0.3-3.5-0.8c-1-0.6-1.8-1.4-2.4-2.4 s-0.9-2.3-0.9-3.6c0-1.4,0.3-2.6,0.9-3.6c0.6-1,1.4-1.8,2.4-2.4c1-0.6,2.2-0.8,3.5-0.8c1.3,0,2.4,0.3,3.5,0.8 c1,0.5,1.8,1.3,2.4,2.3c0.6,1,0.9,2.2,0.9,3.5C185,27.1,185,27.5,184.9,28z M180.8,25.7c0-0.7-0.2-1.3-0.7-1.7 c-0.5-0.4-1.1-0.6-1.8-0.6c-0.7,0-1.3,0.2-1.7,0.6c-0.5,0.4-0.8,1-0.9,1.7H180.8z'></path><path class='st0' d='M195.3,33.7l-4.1-5.6v5.6h-4.1V15.9h4.1v9.8l4.1-5.4h5.1l-5.6,6.7l5.6,6.7H195.3z'></path><path class='st0' d='M202.3,18.3c-0.5-0.4-0.7-0.9-0.7-1.6c0-0.6,0.2-1.2,0.7-1.6s1-0.6,1.8-0.6c0.7,0,1.3,0.2,1.7,0.6 s0.7,1,0.7,1.6c0,0.6-0.2,1.1-0.7,1.6s-1,0.6-1.7,0.6C203.3,18.9,202.8,18.7,202.3,18.3z M206.1,20.3v13.4H202V20.3H206.1z'></path><path class='st0' d='M216.5,30.2v3.5h-2.1c-1.5,0-2.6-0.4-3.5-1.1c-0.8-0.7-1.2-1.9-1.2-3.6v-5.3h-1.6v-3.4h1.6V17h4.1v3.3h2.7 v3.4h-2.7v5.4c0,0.4,0.1,0.7,0.3,0.9c0.2,0.2,0.5,0.3,1,0.3H216.5z'></path></g><g><g><defs><path id='SVGID_4_' d='M8.3,10.3c-0.8,1.1-0.8,4.6-0.8,11.4v3.4c0,12,9.1,17.9,14.8,20.4c1.5,0.7,2.3,1,4.5,1s2.9-0.4,4.5-1 C36.9,43,46,37.2,46,25.1v-3.4c0-6.8,0-10.3-0.8-11.4c-0.8-1.1-4-2.2-10.4-4.4l-1.2-0.4c-3.4-1.1-5-1.7-6.7-1.7 c-1.7,0-3.4,0.5-6.7,1.7l-1.2,0.4C12.3,8,9.2,9.2,8.3,10.3z'></path></defs><clipPath id='SVGID_1_'><use xlink:href='#SVGID_4_' style='overflow:visible;'></use></clipPath><linearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='4.2901' y1='45.9056' x2='40.5632' y2='14.204' gradientTransform='matrix(1 0 0 -1 0 52)'><stop offset='0' style='stop-color:#4F00E8'></stop><stop offset='0.2561' style='stop-color:#4B01E6'></stop><stop offset='0.489' style='stop-color:#4003E1'></stop><stop offset='0.7129' style='stop-color:#2E06D9'></stop><stop offset='0.9299' style='stop-color:#140BCD'></stop><stop offset='1' style='stop-color:#0A0DC8'></stop></linearGradient><rect x='1.4' y='1.7' class='st1' width='48.2' height='45.7'></rect></g></g><g><path class='st2' d='M24.6,17c-0.5-0.5-0.8-1.1-0.8-1.9s0.3-1.4,0.8-1.9c0.5-0.5,1.2-0.8,2.1-0.8c0.9,0,1.6,0.3,2.1,0.8 c0.4,0.4,0.8,1,0.8,1.7c0.1,0.9-0.3,1.8-1,2.3c-0.5,0.4-1.2,0.7-2,0.7C25.9,17.8,25.1,17.5,24.6,17z M29.2,20.2v14.9 c0,0.4-0.3,0.6-0.6,0.6h-3.7c-0.4,0-0.6-0.3-0.6-0.6V20.2c0-0.4,0.3-0.6,0.6-0.6h3.7C28.9,19.5,29.2,19.8,29.2,20.2z'></path></g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>",
|
|
4
4
|
"megaMenu": {
|
|
5
5
|
"nav-link-name": "Tools",
|
|
6
6
|
"dropdown": [{
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
@@ -1,30 +1,29 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
2
|
+
"reviews": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Alice Johnson",
|
|
5
|
+
"title": "Excellent Image Editing Tool",
|
|
6
|
+
"review": "Safeimagekit is a lifesaver for quick and secure image editing. Love the variety of tools!"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"name": "Michael Lee",
|
|
10
|
+
"title": "Very Easy to Use",
|
|
11
|
+
"review": "Super simple to resize and adjust images. No need to download anything; works seamlessly online!"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "Sophia Martinez",
|
|
15
|
+
"title": "Great for Quick Edits",
|
|
16
|
+
"review": "Perfect for quick edits without compromising privacy. Highly recommend Safeimagekit."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "David Kim",
|
|
20
|
+
"title": "Fast and Reliable",
|
|
21
|
+
"review": "Impressed by the speed and reliability of Safeimagekit. Great for editing on the go without extra downloads."
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"title": "Over 5 Million Users Enjoy Using Our Applications monthly.",
|
|
25
|
+
"description": "Join a thriving community of creators who rely on our safeimagekit.com Tools.",
|
|
26
|
+
"rated": 4.1,
|
|
27
|
+
"numberOfReviews": "320",
|
|
28
|
+
"trustpilotReviewLink": "https://www.trustpilot.com/review/safeaudiokit.com"
|
|
29
|
+
}
|
data/_includes/.DS_Store
CHANGED
|
Binary file
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
<script src="https://d3js.org/d3.v4.min.js"></script>
|
|
2
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/venn.js/0.2.20/venn.min.js"></script>
|
|
3
|
+
<style>
|
|
4
|
+
#venn {
|
|
5
|
+
margin: 20px auto;
|
|
6
|
+
width: 800px;
|
|
7
|
+
height: 600px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.controls {
|
|
11
|
+
margin-bottom: 20px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
canvas {
|
|
15
|
+
display: none;
|
|
16
|
+
}
|
|
17
|
+
</style>
|
|
18
|
+
<div class="controls">
|
|
19
|
+
<label for="setCount">Number of sets:</label>
|
|
20
|
+
<select id="setCount" onchange="updateControls()">
|
|
21
|
+
<option value="2" selected>2</option>
|
|
22
|
+
<option value="3">3</option>
|
|
23
|
+
<option value="4">4</option>
|
|
24
|
+
<option value="5">5</option>
|
|
25
|
+
<option value="6">6</option>
|
|
26
|
+
<option value="7">7</option>
|
|
27
|
+
<option value="8">8</option>
|
|
28
|
+
</select>
|
|
29
|
+
|
|
30
|
+
<div id="setInputs"></div>
|
|
31
|
+
|
|
32
|
+
<label for="transparency">Transparency (0 to 1):</label>
|
|
33
|
+
<input type="number" id="transparency" value="0.4" step="0.1" min="0" max="1">
|
|
34
|
+
|
|
35
|
+
<label for="fontColor">Font Color:</label>
|
|
36
|
+
<input type="color" id="fontColor" value="#000000">
|
|
37
|
+
|
|
38
|
+
<button onclick="updateVenn()">Update Venn Diagram</button>
|
|
39
|
+
<button onclick="downloadVenn('png')">Download PNG</button>
|
|
40
|
+
<button onclick="downloadVenn('jpg')">Download JPG</button>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div id="venn"></div>
|
|
44
|
+
|
|
45
|
+
<canvas id="canvas"></canvas>
|
|
46
|
+
<script>
|
|
47
|
+
let sets = [
|
|
48
|
+
{ sets: ['A'], size: 12 },
|
|
49
|
+
{ sets: ['B'], size: 12 },
|
|
50
|
+
{ sets: ['A', 'B'], size: 2 }
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
// Render the initial Venn diagram
|
|
54
|
+
const chart = venn.VennDiagram();
|
|
55
|
+
const div = d3.select("#venn").datum(sets).call(chart);
|
|
56
|
+
|
|
57
|
+
function updateControls() {
|
|
58
|
+
const setCount = parseInt(document.getElementById("setCount").value, 10);
|
|
59
|
+
const setInputs = document.getElementById("setInputs");
|
|
60
|
+
|
|
61
|
+
// Reset inputs
|
|
62
|
+
setInputs.innerHTML = '';
|
|
63
|
+
|
|
64
|
+
// Add inputs for individual set sizes
|
|
65
|
+
for (let i = 0; i < setCount; i++) {
|
|
66
|
+
const setLabel = String.fromCharCode(65 + i); // A, B, C, etc.
|
|
67
|
+
setInputs.innerHTML += `
|
|
68
|
+
<div>
|
|
69
|
+
<label for="set${setLabel}">Set ${setLabel} size:</label>
|
|
70
|
+
<input type="number" id="set${setLabel}" value="12">
|
|
71
|
+
</div>`;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Add input for intersections if applicable
|
|
75
|
+
if (setCount > 1) {
|
|
76
|
+
setInputs.innerHTML += `
|
|
77
|
+
<div>
|
|
78
|
+
<label for="intersections">Intersection sizes (comma-separated):</label>
|
|
79
|
+
<input type="text" id="intersections" placeholder="e.g., 20,15,10">
|
|
80
|
+
</div>`;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// If 4 sets are selected, set default values
|
|
84
|
+
if (setCount === 4) {
|
|
85
|
+
document.getElementById("setA").value = 12;
|
|
86
|
+
document.getElementById("setB").value = 12;
|
|
87
|
+
document.getElementById("setC").value = 12;
|
|
88
|
+
document.getElementById("setD").value = 12;
|
|
89
|
+
document.getElementById("intersections").value = "2,2,2,1,2,2,3,3,3,3";
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (setCount === 5) {
|
|
93
|
+
document.getElementById("setA").value = 20;
|
|
94
|
+
document.getElementById("setB").value = 20;
|
|
95
|
+
document.getElementById("setC").value = 20;
|
|
96
|
+
document.getElementById("setD").value = 20;
|
|
97
|
+
document.getElementById("setE").value = 20;
|
|
98
|
+
document.getElementById("intersections").value = "5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,1";
|
|
99
|
+
}
|
|
100
|
+
if (setCount === 6) {
|
|
101
|
+
document.getElementById("setA").value = 20;
|
|
102
|
+
document.getElementById("setB").value = 20;
|
|
103
|
+
document.getElementById("setC").value = 20;
|
|
104
|
+
document.getElementById("setD").value = 20;
|
|
105
|
+
document.getElementById("setE").value = 20;
|
|
106
|
+
document.getElementById("setF").value = 20;
|
|
107
|
+
|
|
108
|
+
// Set intersection values as specified
|
|
109
|
+
document.getElementById("intersections").value = "5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1";
|
|
110
|
+
}
|
|
111
|
+
if (setCount === 7) {
|
|
112
|
+
document.getElementById("setA").value = 20;
|
|
113
|
+
document.getElementById("setB").value = 20;
|
|
114
|
+
document.getElementById("setC").value = 20;
|
|
115
|
+
document.getElementById("setD").value = 20;
|
|
116
|
+
document.getElementById("setE").value = 20;
|
|
117
|
+
document.getElementById("setF").value = 20;
|
|
118
|
+
document.getElementById("setG").value = 20;
|
|
119
|
+
|
|
120
|
+
document.getElementById("intersections").value =
|
|
121
|
+
"7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,2";
|
|
122
|
+
}
|
|
123
|
+
if (setCount === 8) {
|
|
124
|
+
document.getElementById("setA").value = 20;
|
|
125
|
+
document.getElementById("setB").value = 20;
|
|
126
|
+
document.getElementById("setC").value = 20;
|
|
127
|
+
document.getElementById("setD").value = 20;
|
|
128
|
+
document.getElementById("setE").value = 20;
|
|
129
|
+
document.getElementById("setF").value = 20;
|
|
130
|
+
document.getElementById("setG").value = 20;
|
|
131
|
+
document.getElementById("setH").value = 20;
|
|
132
|
+
|
|
133
|
+
document.getElementById("intersections").value =
|
|
134
|
+
"8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,2";
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function updateVenn() {
|
|
139
|
+
const setCount = parseInt(document.getElementById("setCount").value, 10);
|
|
140
|
+
const transparency = parseFloat(document.getElementById("transparency").value);
|
|
141
|
+
const fontColor = document.getElementById("fontColor").value;
|
|
142
|
+
const updatedSets = [];
|
|
143
|
+
|
|
144
|
+
// Add individual sets
|
|
145
|
+
for (let i = 0; i < setCount; i++) {
|
|
146
|
+
const setLabel = String.fromCharCode(65 + i); // A, B, C, etc.
|
|
147
|
+
const setSize = parseInt(document.getElementById(`set${setLabel}`).value || "12", 10);
|
|
148
|
+
updatedSets.push({ sets: [setLabel], size: setSize });
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Add intersections based on the set count
|
|
152
|
+
if (setCount > 1) {
|
|
153
|
+
const intersectionInput = document.getElementById("intersections");
|
|
154
|
+
if (intersectionInput && intersectionInput.value.trim() !== '') {
|
|
155
|
+
const intersectionSizes = intersectionInput.value.split(',').map(Number);
|
|
156
|
+
let index = 0;
|
|
157
|
+
|
|
158
|
+
// Generate all combinations of sets for intersections
|
|
159
|
+
for (let i = 2; i <= setCount; i++) { // Only generate combinations of size >= 2
|
|
160
|
+
const combinations = getCombinations(
|
|
161
|
+
Array.from({ length: setCount }, (_, k) => String.fromCharCode(65 + k)),
|
|
162
|
+
i
|
|
163
|
+
);
|
|
164
|
+
combinations.forEach(combo => {
|
|
165
|
+
if (index < intersectionSizes.length) {
|
|
166
|
+
updatedSets.push({ sets: combo, size: intersectionSizes[index++] });
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
} else {
|
|
171
|
+
// Default pairwise intersections if no input is provided
|
|
172
|
+
for (let i = 0; i < setCount - 1; i++) {
|
|
173
|
+
for (let j = i + 1; j < setCount; j++) {
|
|
174
|
+
const setA = String.fromCharCode(65 + i);
|
|
175
|
+
const setB = String.fromCharCode(65 + j);
|
|
176
|
+
updatedSets.push({ sets: [setA, setB], size: 2 }); // Default size for pairwise intersections
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
sets = updatedSets;
|
|
183
|
+
d3.select("#venn").datum(sets).call(chart);
|
|
184
|
+
|
|
185
|
+
// Update transparency and font color
|
|
186
|
+
d3.selectAll(".venn-circle path").style("fill-opacity", transparency);
|
|
187
|
+
d3.selectAll(".venn-circle text").style("fill", fontColor);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Helper function to generate combinations
|
|
191
|
+
function getCombinations(array, size) {
|
|
192
|
+
function combine(input, length, start, result) {
|
|
193
|
+
if (length === 0) return [result];
|
|
194
|
+
const combinations = [];
|
|
195
|
+
for (let i = start; i <= input.length - length; i++) {
|
|
196
|
+
combinations.push(...combine(input, length - 1, i + 1, result.concat(input[i])));
|
|
197
|
+
}
|
|
198
|
+
return combinations;
|
|
199
|
+
}
|
|
200
|
+
return combine(array, size, 0, []);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function downloadVenn(format) {
|
|
204
|
+
const svg = document.querySelector("#venn svg");
|
|
205
|
+
const canvas = document.getElementById("canvas");
|
|
206
|
+
const ctx = canvas.getContext("2d");
|
|
207
|
+
const serializer = new XMLSerializer();
|
|
208
|
+
const svgString = serializer.serializeToString(svg);
|
|
209
|
+
const img = new Image();
|
|
210
|
+
|
|
211
|
+
const svgBlob = new Blob([svgString], { type: "image/svg+xml;charset=utf-8" });
|
|
212
|
+
const url = URL.createObjectURL(svgBlob);
|
|
213
|
+
|
|
214
|
+
img.onload = function () {
|
|
215
|
+
canvas.width = svg.getBoundingClientRect().width;
|
|
216
|
+
canvas.height = svg.getBoundingClientRect().height;
|
|
217
|
+
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
218
|
+
ctx.drawImage(img, 0, 0);
|
|
219
|
+
URL.revokeObjectURL(url);
|
|
220
|
+
|
|
221
|
+
const link = document.createElement("a");
|
|
222
|
+
link.download = `venn-diagram.${format}`;
|
|
223
|
+
link.href = canvas.toDataURL(`image/${format}`);
|
|
224
|
+
link.click();
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
img.src = url;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Add tooltips
|
|
231
|
+
div.selectAll(".venn-circle")
|
|
232
|
+
.on("mouseover", function (d) {
|
|
233
|
+
d3.select(this).select("path").style("fill-opacity", 0.6);
|
|
234
|
+
const tooltip = d3.select("body").append("div").attr("class", "tooltip")
|
|
235
|
+
.style("position", "absolute")
|
|
236
|
+
.style("background", "#fff")
|
|
237
|
+
.style("border", "1px solid #ccc")
|
|
238
|
+
.style("padding", "5px")
|
|
239
|
+
.style("z-index", 10)
|
|
240
|
+
.text(`${d.sets.join(' & ')}: ${d.size}`);
|
|
241
|
+
|
|
242
|
+
tooltip.style("left", `${d3.event.pageX + 5}px`).style("top", `${d3.event.pageY + 5}px`);
|
|
243
|
+
})
|
|
244
|
+
.on("mouseout", function () {
|
|
245
|
+
d3.select(this).select("path").style("fill-opacity", parseFloat(document.getElementById("transparency").value));
|
|
246
|
+
d3.select(".tooltip").remove();
|
|
247
|
+
});
|
|
248
|
+
</script>
|
data/_includes/appscms/.DS_Store
CHANGED
|
Binary file
|
|
@@ -22,30 +22,40 @@
|
|
|
22
22
|
{% for post in blogData %}
|
|
23
23
|
{%- include authors/authors.html-%}
|
|
24
24
|
{% assign title = post.title %}
|
|
25
|
-
{% assign title_lower = title | downcase %}
|
|
26
|
-
{% assign title_hyphenated = title_lower | replace: ' ', '-' %}
|
|
27
|
-
{% assign blogUrl = title_hyphenated | replace: '!', '' | replace: '?', '' | replace: ',', '' |
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
{% assign title_lower = title | downcase %}
|
|
26
|
+
{% assign title_hyphenated = title_lower | replace: ' ', '-' %}
|
|
27
|
+
{% assign blogUrl = title_hyphenated | replace: '!', '' | replace: '?', '' | replace: ',', '' |
|
|
28
|
+
replace: '.', '' | replace: ';', '' | replace: ':', '' | replace: '&', '' | replace: '@', '' |
|
|
29
|
+
replace: '#', '' | replace: '$', '' | replace: '%', '' | replace: '^', '' | replace: '*', '' |
|
|
30
|
+
replace: '(', '' | replace: ')', '' | replace: '+', '' | replace: '=', '' | replace: '{', '' |
|
|
31
|
+
replace: '}', '' | replace: '[', '' | replace: ']', '' | replace: '|', '' | replace: '\\', '' |
|
|
32
|
+
replace: '/', '' | replace: '<', '' | replace: '>' , '' | replace: '~' , '' | replace: '`' , '' |
|
|
33
|
+
replace: '"' , '' | replace: "'" , '' %}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
{%- assign ActualUrl = post.url | default: blogUrl -%}
|
|
37
|
+
<div
|
|
38
|
+
class="{%- if site.monumetricId and page.url != '/' and page.lang == " en" -%} col-md-6 mb-4
|
|
39
|
+
card-group {%- else -%} col-lg-4 col-md-6 mb-4 card-group {%- endif -%} ">
|
|
40
|
+
<div class=" card h-100 appscms-blog-cards">
|
|
41
|
+
<a class="extrapaddingforimg" href="/blog/{{ ActualUrl }}" aria-label="{{post.title}}">
|
|
42
|
+
<img src="{{ post.image }}" loading="lazy" class="card-img-top" height="250" width="100%"
|
|
43
|
+
alt="{{post.title}}" {%- if site.crossorigin -%} crossorigin {%- endif -%}>
|
|
36
44
|
</a>
|
|
37
45
|
<div class="card-body">
|
|
38
|
-
<a class="text-decoration-none text-dark" href="/blog/{{ blogUrl }}" class="anchor_link"
|
|
46
|
+
<a class="text-decoration-none text-dark" href="/blog/{{ blogUrl }}" class="anchor_link"
|
|
47
|
+
aria-label="{{post.title}}">
|
|
39
48
|
<h4 class="card-title mb-4 text-left">{{ post.title }}</h4>
|
|
40
49
|
</a>
|
|
41
50
|
<div class="wrapfooter">
|
|
42
51
|
{% if post.author %}
|
|
43
|
-
|
|
44
|
-
|
|
52
|
+
<img class="author-thumb" loading="lazy" src="{{ image }}" alt="{{ authorName }}" {%- if
|
|
53
|
+
site.crossorigin -%} crossorigin {%- endif -%}>
|
|
45
54
|
{% endif %}
|
|
46
55
|
|
|
47
56
|
<div class="author-meta">
|
|
48
|
-
<a class="post-name" target="_blank"
|
|
57
|
+
<a class="post-name" target="_blank"
|
|
58
|
+
href="/authors/{{authorName |downcase |replace:' ','-'}}">{{ authorName }}</a>
|
|
49
59
|
{% assign path_parts = post.path | split: '/' %}
|
|
50
60
|
{% assign filename = path_parts[1] %}
|
|
51
61
|
{% assign date_parts = filename | split: '-' %}
|
|
@@ -57,13 +67,13 @@
|
|
|
57
67
|
|
|
58
68
|
</div>
|
|
59
69
|
</div>
|
|
60
|
-
</div>
|
|
61
70
|
</div>
|
|
62
|
-
{% endfor %}
|
|
63
|
-
{%- if site.monumetricId and page.url != '/' and page.lang == "en" -%}
|
|
64
71
|
</div>
|
|
72
|
+
{% endfor %}
|
|
73
|
+
{%- if site.monumetricId and page.url != '/' and page.lang == "en" -%}
|
|
65
74
|
</div>
|
|
66
|
-
|
|
75
|
+
</div>
|
|
76
|
+
{%- endif -%}
|
|
67
77
|
</div>
|
|
68
78
|
</div>
|
|
69
79
|
</section>
|
|
@@ -49,7 +49,8 @@
|
|
|
49
49
|
Contributors
|
|
50
50
|
</h4>
|
|
51
51
|
<div class="d-flex justify-content-center w-100" style="gap: 10px">
|
|
52
|
-
{%- for contributor in contributors -%}
|
|
52
|
+
{%- for contributor in contributors -%}
|
|
53
|
+
{%- assign
|
|
53
54
|
featureContributorData = contributor.name | split: " " -%} {%-
|
|
54
55
|
assign featureContributorData = featureContributorData.first |
|
|
55
56
|
downcase -%} {%- assign collectionData = [featureContributorData]
|