1<!doctype html> 2<html lang="en" ng-app="myApp" id="ng-app" ng-controller="StyleCtrl"> 3 4<head> 5 <!--[if lte IE 7]> 6
6<script src="js/vendor/json2.js"></script>
6 7 <![endif]--> 8 <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10 <meta http-equiv="cache-control" content="max-age=0"> 11 <meta http-equiv="cache-control" content="no-cache"> 12 <meta http-equiv="expires" content="0"> 13 <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT"> 14 <meta http-equiv="pragma" content="no-cache"> 15 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 16 <title ng-bind="PageService.title()"> 17 </title> 18 <meta name="description" content="{{PageService.metaDescription()}}"> 19 <meta name="keywords" content="{{PageService.metaKeywords()}}"> 20 <meta name="author" content="[email protected]"> 21 <meta name="fragment" content="!"> 22 <!-- Advanced SEO --> 23 <meta property="og:title" content="{{PageService.title()}}" /> 24 <meta property="og:name" content="{{PageService.title()}}" /> 25 <meta property="og:type" content="website" /> 26 <meta property="og:description" content="{{PageService.metaDescription()}}" /> 27 <meta property="og:keywords" content="{{PageService.metaKeywords()}}" /> 28 <!-- <meta property="og:url" content="{{PageService.canonicalUrl()}}" /> --> 29 <meta property="og:image" content="{{PageService.image()}}" />
30 <meta property="og:picture" content="{{PageService.image()}}"> 31 <meta property="og:image:width" content="400" /> 32 <meta property="og:image:height" content="300" /> 33 <!-- <meta name="robots" content="INDEX, FOLLOW">--> 34 <!-- Font awesome CSS --> 35 <link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.css"> 36 <!-- Google fonts --> 37 <link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=Lora:400,400italic'> 38 <link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=Montserrat'> 39 <link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=Muli'> 40 <link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css?family=Playfair+Display'> 41 <!-- Bootstrap core CSS --> 42 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> 43 <!-- Favicon --> 44 <link rel="shortcut icon" href="img/favicon.ico"> 45 <link rel='image_src' href='{{PageService.image()}}' /> 46 <!-- <link rel="canonical" href="{{PageService.canonicalUrl()}}" /> --> 47 <base href="/" /> 48 <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.13.2/css/jquery.dataTables.css"> 49 50
50<script> 51 (function(c, a) { 52 if (!a.__SV) { 53 var b = window; 54 try { var d, m, j, k = b.location, 55 f = k.hash; 56 d = function(a, b) { return (m = a.match(RegExp(b + "=([^&]*)"))) ? m[1] : null }; 57 f && d(f, "state") && (j = JSON.parse(decodeURIComponent(d(f, "state"))), "mpeditor" === j.action && (b.sessionStorage.setItem("_mpcehash", f), history.replaceState(j.desiredHash || "", c.title, k.pathname + k.search))) } catch (n) {} 58 var l, h; 59 window.mixpanel = a; 60 a._i = []; 61 a.init = function(b, d, g) { 62 function c(b, i) { 63 var a = i.split("."); 64 2 == a.length && (b = b[a[0]], i = a[1]); 65 b[i] = function() { 66 b.push([i].concat(Array.prototype.slice.call(arguments, 67 0))) 68 } 69 } 70 var e = a; 71 "undefined" !== typeof g ? e = a[g] = [] : g = "mixpanel"; 72 e.people = e.people || []; 73 e.toString = function(b) { var a = "mixpanel"; "mixpanel" !== g && (a += "." + g); 74 b || (a += " (stub)"); return a }; 75 e.people.toString = function() { return e.toString(1) + ".people (stub)" }; 76 l = "disable time_event track track_pageview track_links track_forms track_with_groups add_group set_group remove_group register register_once alias unregister identify name_tag set_config reset opt_in_tracking opt_out_tracking has_opted_in_tracking has_opted_out_tracking clear_opt_in_out_tracking people.set people.set_once people.unset people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.remove".split(" "); 77 for (h = 0; h < l.length; h++) c(e, l[h]); 78 var f = "set set_once union unset remove delete".split(" "); 79 e.get_group = function() { 80 function a(c) { b[c] = function() { call2_args = arguments; 81 call2 = [c].concat(Array.prototype.slice.call(call2_args, 0)); 82 e.push([d, call2]) } } for (var b = {}, d = ["get_group"].concat(Array.prototype.slice.call(arguments, 0)), c = 0; c < f.length; c++) a(f[c]); return b }; 83 a._i.push([b, d, g]) 84 }; 85 a.__SV = 1.2; 86 b = c.createElement("script"); 87 b.type = "text/javascript"; 88 b.async = !0; 89 b.src = "undefined" !== typeof MIXPANEL_CUSTOM_LIB_URL ? 90 MIXPANEL_CUSTOM_LIB_URL : "file:" === c.location.protocol && "//cdn4.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//) ? "https://cdn4.mxpnl.com/libs/mixpanel-2-latest.min.js" : "//cdn4.mxpnl.com/libs/mixpanel-2-latest.min.js"; 91 d = c.getElementsByTagName("script")[0]; 92 d.parentNode.insertBefore(b, d) 93 } 94 })(document, window.mixpanel || []); 95 mixpanel.init("f671b8cfd66dc49a4e64b0be38bb1826", { batch_requests: true }); 96 </script>
96 97</head> 98 99<body id="page-top" data-spy="scroll" data-target=".navbar-custom" class="{{layout.skin}} {{(sidebarCollapse.current)?'sidebar-collapse':''}}"> 100 101 <link rel="stylesheet" type='text/css' href="css/vendor/animate.min.css"> 102 <link rel="stylesheet" type='text/css' href="css/vendor/devices.min.css"> 103 <link rel="stylesheet" type='text/css' href="dist/notif-bd9babd118.css"> 104 105 <link rel="stylesheet" type='text/css' href="dist/main-bbab9afb50.css" ng-if="rootState.state.current.name && (rootState.state.current.name.indexOf('galler') != 0)" > 106 107 <link rel="stylesheet" href="dist/login-2706b005a3.css" ng-if="rootState.state.current.name && (rootState.state.current.name.indexOf('login') >= 0)" type='text/css' /> 108 109 <link rel="stylesheet" ng-if="layout.url" ng-href="{{layout.url}}" type="text/css" /> 110 <link rel="stylesheet" ng-if="layout.skin" ng-href="{{layout.skinurl}}" type="text/css" /> 111 112 <!-- {{rootState.state.current.name}} --> 113 <div ng-controller="LoginCtrl" class="wrapper"> 114 <header class="main-header" ng-include src="'partials/components/header.html'"></header> 115 <aside class="main-sidebar" ng-include src="'partials/components/sidebar.html'"> 116 </aside> 117 <resolve-loader></resolve-loader> 118 <div class="view-container content-wrapper" style="min-height:100vh;" id="main-container" name="main-container"> 119 <div ui-view class="view-frame"> 120 </div> 121 </div> 122 </div> 123 <div class="text-center col-lg-12" style="background-color: white;"> 124 <p> 125 <small> 126 <br> 127 <small class="muted">©AutoFocus.io 128 <a ng-hide="true" href="https://plus.google.com/+SophiaCui42?rel=author">sxc</a> 129 </small> 130 </small> 131 </p> 132 </div> 133 <div ng-include src="'partials/components/headerexists.html'"></div> 134 <div id="fb-root"></div> 135 <!--[if IE 8]> 136
136<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
136 137
137<script src="http://cdnjs.cloudflare.com/ajax/libs/es5-shim/3.4.0/es5-shim.min.js"></script>
137 138 <![endif]--> 139
139<script type="text/javascript" src="https://checkout.stripe.com/checkout.js"></script>
139 140
140<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
140 141
141<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
141 142
142<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
142 143
143<script type="text/javascript" src="js/vendor/angular-ui-router.min.js"></script>
143 144
144<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-route.min.js"></script>
144 145
145<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-sanitize.min.js"></script>
145 146
146<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-animate.min.js"></script>
146 147
147<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-resource.min.js"></script>
147 148 149
149<script type="text/javascript" src="partials/components/galleries/assets_tele/js/jquery.dropotron.min.js"></script>
149 150
150<script type="text/javascript" src="partials/components/galleries/assets_tele/js/jquery.scrollex.min.js"></script>
150 151
151<script type="text/javascript" src="partials/components/galleries/assets_tele/js/jquery.scrolly.min.js"></script>
151 152
152<script type="text/javascript" src="partials/components/galleries/assets_tele/js/jquery.selectorr.min.js"></script>
152 153
153<script type="text/javascript" src="partials/components/galleries/assets_tele/js/skel.min.js"></script>
153 154
154<script type="text/javascript" src="partials/components/galleries/assets_tele/js/util.js?v=3"></script>
154 155 156
156<script type="text/javascript" src="js/vendor/sortable.js"></script>
156 157 <!--
157<script type="text/javascript" src="js/vendor/angular-ui-tree.min.js"></script>
157 --> 158
158<script type="text/javascript" src="js/vendor/ng-joyride.js"></script>
158 159
159<script type="text/javascript" src="js/vendor/bootstrap-notify.min.js"></script>
159 160
160<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/parse/1.11.1/parse.min.js"></script>
160 161
161<script type="text/javascript" src="js/vendor/dropzone.js"></script>
161 162 <!--
162<script type="text/javascript" src="js/vendor/angularjs-nvd3-directives.min.js"></script>
162--> 163 164
164<script type="text/javascript" src="dist/app-e07c689db0.js"></script>
164 165
165<script type="text/javascript" src="dist/services-2ba525acb495.js"></script>
165 166
166<script type="text/javascript" src="dist/controllers-df56486b6894.js"></script>
166 167
167<script type="text/javascript" src="dist/filters-e2a41913dd.js"></script>
167 168
168<script type="text/javascript" src="dist/directives-8530a59fb5.js"></script>
168 169 170 <!-- Bootstrap --> 171
171<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
171 172 <!-- Angular Bootstrap --> 173
173<script type="text/javascript" src="js/vendor/ui-bootstrap-tpls-0.11.0.min.js"></script>
173 174 <!-- Paypal --> 175
175<script type="text/javascript" src="https://www.paypalobjects.com/api/checkout.js"></script>
175 176 <!--
176<script type="text/javascript" src="//www.paypalobjects.com/api/checkout.js"></script>
176 --> 177 <!--
177<script type="text/javascript" src="https://www.paypalobjects.com/js/external/dg.js"></script>
177 --> 178 <!-- nice theme for scroll --> 179 <!--
179<script type="text/javascript" src="js/vendor/grayscale.js"></script>
179 --> 180 <!-- Lightbox blue imp gallery --> 181
181<script type="text/javascript" src="js/vendor/jquery.blueimp-gallery.min.js"></script>
181 182
182<script type="text/javascript" src="js/vendor/ng-table.min.js"></script>
182 183
183<script type="text/javascript" src="js/vendor/classie.js"></script>
183 184
184<script type="text/javascript" src="js/vendor/jquery.slimscroll.min.js"></script>
184 185
185<script type="text/javascript" src="js/vendor/jquery.fullPage.min.js"></script>
185 186 <!--
186<script type="text/javascript" src="js/vendor/app.min.js" ></script>
186 --> 187
187<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>
187 188
188<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.1/moment.min.js"></script>
188 189
189<script type="text/javascript" src="js/vendor/html2canvas.js"></script>
189 190 191
191<script type='text/javascript' src='partials/components/galleries/unite/js/unitegallery.min.js'></script>
191 192
192<script type='text/javascript' src='partials/components/galleries/unite/themes/tiles/ug-theme-tiles.js'></script>
192 193
193<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.min.js"></script>
193 194 195
195<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
195 196
196<script src="https://cdn.datatables.net/buttons/2.0.1/js/dataTables.buttons.min.js"></script>
196 197
197<script src="https://cdn.datatables.net/buttons/2.0.1/js/buttons.html5.min.js"></script>
197 198 199
199<script type="text/javascript"> 200 var userId = null; 201 202 $(document).on("click", "a, button", function() { 203 if (!userId) { 204 userId = $('#user_id_span').html(); 205 } 206 mixpanel.identify(userId); 207 mixpanel.track("Click", {"user": userId}); 208 }); 209 210 </script>
210 211 212
212<script type="text/javascript"> 213 var getCanvas; // global variable 214 var doc; 215 function takeHighResScreenshot(srcEl, destIMG, scaleFactor) { 216 // Save original size of element 217 var originalWidth = srcEl.offsetWidth; 218 var originalHeight = srcEl.offsetHeight; 219 // Force px size (no %, EMs, etc) 220 srcEl.style.width = originalWidth + "px"; 221 srcEl.style.height = originalHeight + "px"; 222 223 // Position the element at the top left of the document because of bugs in html2canvas. The bug exists when supplying a custom canvas, and offsets the rendering on the custom canvas based on the offset of the source element on the page; thus the source element MUST be at 0, 0. 224 // See html2canvas issues #790, #820, #893, #922 225 srcEl.style.position = "absolute"; 226 srcEl.style.top = "0"; 227 srcEl.style.left = "0"; 228 229 // Create scaled canvas 230 var scaledCanvas = document.createElement("canvas"); 231 scaledCanvas.width = originalWidth * scaleFactor; 232 scaledCanvas.height = originalHeight * scaleFactor; 233 scaledCanvas.style.width = originalWidth + "px"; 234 scaledCanvas.style.height = originalHeight + "px"; 235 var scaledContext = scaledCanvas.getContext("2d"); 236 scaledContext.scale(scaleFactor, scaleFactor); 237 238 html2canvas(srcEl, { canvas: scaledCanvas }) 239 .then(function(canvas) { 240 destIMG.src = canvas.toDataURL("image/png"); 241 srcEl.style.display = "none"; 242 }); 243 }; 244 245 function downloadpdfbutton() { 246 var src = document.getElementById("invoice_id"); 247 var img = document.getElementById("previewImage"); 248 // takeHighResScreenshot(src, img, 2); // This time we provide desired scale factor directly, no more messing with DPI 249 250 var element = $("#invoice_id"); // global variable 251 252 var desired = $('#downloadpdfbutton').data('id').replace(/[^\w\s]/gi, '').replace(/ /g,"_");; 253 html2canvas(element, { 254 onrendered: function(canvas) { 255 $("#previewImage").append(canvas); 256 // getCanvas = canvas; 257 var imgageData = canvas.toDataURL("image/png"); 258 var width = (canvas.width - 20) || 730; 259 var height = (canvas.height + 10) || 700; 260 // console.log(canvas.width + " " + canvas.height); 261 doc = new jsPDF('', 'mm', [width, height]); 262 // var imgWidth = 290; 263 // var imgHeight = canvas.height * imgWidth / canvas.width; 264 265 // var newData = imgageData.replace(/^data:image\/png/, "data:application/octet-stream"); 266 // $("#previewpdfbutton").attr("download", "invoice.png").attr("href", newData); 267 doc.addImage(imgageData, 'png', 0, 0, width, height); 268 // doc.addImage(imgageData, 'PNG', 0, 0, imgWidth, imgHeight); 269 doc.save('Invoice_'+desired+'.pdf'); 270 } 271 }); 272 } 273 274 // function clickdownload() { 275 // } 276 </script>
276 277 <!--
277<script type="text/javascript" src="js/vendor/imagesloaded.pkgd.min.js"></script>
277 278
278<script type="text/javascript" src="js/vendor/masonry.pkgd.min.js"></script>
278 279 --> 280 <!--script type="text/javascript" src="js/vendor/bootstrap-image-gallery.min.js"></script>
280 281
281<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script--> 282 <!-- Google analytics --> 283
283<script type="text/javascript">
vendor: 477 bytes, lines 283-296
283 284 (function(i, s, o, g, r, a, m) { 285 i['GoogleAnalyticsObject'] = r; 286 i[r] = i[r] || function() { 287 (i[r].q = i[r].q || []).push(arguments) 288 }, i[r].l = 1 * new Date(); 289 a = s.createElement(o), 290 m = s.getElementsByTagName(o)[0]; 291 a.async = 1; 292 a.src = g; 293 m.parentNode.insertBefore(a, m) 294 })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); 295 296 ga('create', '
296UA-54048602-2
vendor: 46 bytes, lines 296-298
296', 'auto'); 297 ga('send', 'pageview'); 298
298</script>
298 299 300 <!-- Hotjar --> 301
301<script>
vendor: 105 bytes, line 301
301 (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:
301817637
vendor: 222 bytes, line 301
301,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
301</script>
301 302 303
303<script type="text/javascript"> 304 // Include the UserVoice JavaScript SDK (only needed once on a page) 305 UserVoice = window.UserVoice || []; 306 (function() { 307 var uv = document.createElement('script'); 308 uv.type = 'text/javascript'; 309 uv.async = true; 310 uv.src = '//widget.uservoice.com/6QFkfyUcgmAbe2fcJl3Yg.js'; 311 var s = document.getElementsByTagName('script')[0]; 312 s.parentNode.insertBefore(uv, s) 313 })(); 314 315 // 316 // UserVoice Javascript SDK developer documentation: 317 // https://www.uservoice.com/o/javascript-sdk 318 // 319 320 // Set colors 321 UserVoice.push(['set', { 322 accent_color: '#808283', 323 trigger_color: 'white', 324 trigger_background_color: 'rgba(46, 49, 51, 0.6)' 325 }]); 326 327 // Identify the user and pass traits 328 // To enable, replace sample data with actual user traits and uncomment the line 329 UserVoice.push(['identify', { 330 //email: '[email protected]', // Userâs email address 331 //name: 'John Doe', // Userâs real name 332 //created_at: 1364406966, // Unix timestamp for the date the user signed up 333 //id: 123, // Optional: Unique id of the user (if set, this should not change) 334 //type: 'Owner', // Optional: segment your users by type 335 //account: { 336 // id: 123, // Optional: associate multiple users with a single account 337 // name: 'Acme, Co.', // Account name 338 // created_at: 1364406966, // Unix timestamp for the date the account was created 339 // monthly_rate: 9.99, // Decimal; monthly rate of the account 340 // ltv: 1495.00, // Decimal; lifetime value of the account 341 // plan: 'Enhanced' // Plan name for the account 342 //} 343 }]); 344 345 // Add default trigger to the bottom-right corner of the window: 346 UserVoice.push(['addTrigger', { 347 mode: 'contact', 348 trigger_position: 'bottom-right' 349 }]); 350 351 // Or, use your own custom trigger: 352 //UserVoice.push(['addTrigger', '#id', { mode: 'contact' }]); 353 354 // Autoprompt for Satisfaction and SmartVote (only displayed under certain conditions) 355 UserVoice.push(['autoprompt', {}]); 356 </script>
356 357
357<script type="text/javascript"> 358 function setCookie(key, value) { 359 var expires = new Date(); 360 expires.setTime(expires.getTime() + (365 * 24 * 60 * 60 * 1000)); 361 document.cookie = key + '=' + value + ';expires=' + expires.toUTCString(); 362 } 363 364 function getCookie(key) { 365 var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)'); 366 return keyValue ? keyValue[2] : null; 367 } 368 </script>
368 369 370</body> 371 372</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.