appscms-tools-theme 4.9.7 → 4.9.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a55fca8856cf9e7d90a961c26bb0e769350f52f08a9f6c8d362c4899913ecdc3
4
- data.tar.gz: f9ce64ec4906cb67d1be7c9ca47f722bdc6434e9288ac511f1018d9204e2f363
3
+ metadata.gz: 77077be30078f5cdcdf699ae245f6b31e0d5e14f94dbd34562b631de11ae83aa
4
+ data.tar.gz: 31134090f09b375a8d3f4eda101587b712a62be08d9b22d4e8229e307e00ce04
5
5
  SHA512:
6
- metadata.gz: ebabf50236b1aafc4b9b010976c9e1607078a5641855d37b0f37ba2ccc8c3daa6a41ee6e4a4b5c911f2a0a5ac57d0f4bc8db3e4492c5bfa114d4a33cfef3bba7
7
- data.tar.gz: 6eb7468d786eb8364ee0436643463f3c79792febb1a87b07738be58acecb1795eceb43a661c329aab3ab12beff077188eab8d735f5efa9eef1806d93388bafc7
6
+ metadata.gz: 65c68aca35073b283a7e0322750fe2a43f0ab092eb053ee404a08aa3c0a9394d697e350795c410269f90bf899915e49016125f145c8965dfa1eb5d727fc80f8f
7
+ data.tar.gz: ab56cdf2130296edd4d85c4b635d18e8d63a25319ec2bdf0d2690321a82b2c6e816aca07eb99e1fbb630922a9d1dbac9e5bdc76b83252ba8f91a0d2368169622
data/_data/.DS_Store CHANGED
Binary file
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": "aditya thakur",
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
@@ -1,6 +1,6 @@
1
1
  {
2
- "navbarBrandText": "",
3
- "navbarBrandLogo": "/assets/images/logo.png",
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
- "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/safeimagekit.com"
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>
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: ',', '' | replace: '.', '' | replace: ';', '' | replace: ':', '' | replace: '&', '' | replace: '@', '' | replace: '#', '' | replace: '$', '' | replace: '%', '' | replace: '^', '' | replace: '*', '' | replace: '(', '' | replace: ')', '' | replace: '+', '' | replace: '=', '' | replace: '{', '' | replace: '}', '' | replace: '[', '' | replace: ']', '' | replace: '|', '' | replace: '\\', '' | replace: '/', '' | replace: '<', '' | replace: '>', '' | replace: '~', '' | replace: '`', '' | replace: '"', '' | replace: "'", '' %}
28
-
29
- <div class="{%- if site.monumetricId and page.url != '/' and page.lang == " en" -%} col-md-6 mb-4 card-group {%-
30
- else -%} col-lg-4 col-md-6 mb-4 card-group {%- endif -%} ">
31
- <div class="card h-100 appscms-blog-cards">
32
- <a class="extrapaddingforimg" href="/blog/{{ blogUrl }}" aria-label="{{post.title}}">
33
- <img src="{{ post.image }}" loading="lazy" class="card-img-top" height="250"
34
- width="100%" alt="{{post.title}}" {%- if site.crossorigin -%} crossorigin {%- endif
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" aria-label="{{post.title}}">
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
- <img class="author-thumb" loading="lazy" src="{{ image }}" alt="{{ authorName }}"
44
- {%- if site.crossorigin -%} crossorigin {%- endif -%}>
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" href="/authors/{{authorName |downcase |replace:' ','-'}}">{{ authorName }}</a>
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
- {%- endif -%}
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 -%} {%- assign
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]