Last active
January 18, 2018 07:17
-
-
Save soedomoto/423c6f39cabaf2e4725110ee96228597 to your computer and use it in GitHub Desktop.
Root Error Form
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html lang="en"> | |
<head> | |
<title>Root Error Solver</title> | |
<!-- Required meta tags --> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | |
<meta name="description" content="Mobland - Mobile App Landing Page Template"> | |
<meta name="keywords" content="HTML5, bootstrap, mobile, app, landing, ios, android, responsive"> | |
<!-- Font --> | |
<link rel="dns-prefetch" href="//fonts.googleapis.com"> | |
<link href="https://fonts.googleapis.com/css?family=Rubik:300,400,500" rel="stylesheet"> | |
<!-- Bootstrap CSS --> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta.2/css/bootstrap.min.css"> | |
<!-- Themify Icons --> | |
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/lykmapipo/[email protected]/css/themify-icons.css"> | |
<!-- Owl carousel --> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.carousel.min.css"> | |
<!-- Main css --> | |
<link href="style.css" rel="stylesheet"> | |
<style> | |
.svg-container { | |
display: inline-block; | |
position: relative; | |
width: 100%; | |
padding-bottom: 80%; | |
/* aspect ratio */ | |
vertical-align: top; | |
overflow: hidden; | |
} | |
.svg-content-responsive { | |
display: inline-block; | |
position: absolute; | |
top: 10px; | |
left: 0; | |
} | |
div#canvas { | |
background-color: white; | |
border: 1px solid #999; | |
border-radius: 5px; | |
position: relative; | |
} | |
div#canvas .description { | |
color: #777; | |
position: absolute; | |
bottom: 0; | |
left: 0; | |
right: 0; | |
background-color: #EEE; | |
border-top: 1px solid #999; | |
border-bottom-left-radius: inherit; | |
border-bottom-right-radius: inherit; | |
padding: 5px; | |
} | |
svg.rule { | |
opacity: 1; | |
} | |
.edge line { | |
stroke: rgb(153, 153, 153); | |
stroke-width: 1.5px; | |
pointer-events: none; | |
} | |
marker { | |
fill: rgb(99, 99, 99); | |
stroke: rgb(153, 153, 153); | |
} | |
.node circle { | |
stroke-width: 2; | |
stroke: rgb(153, 153, 153); | |
fill: rgb(153, 153, 153); | |
cursor: pointer; | |
} | |
</style> | |
</head> | |
<body data-spy="scroll" data-target="#navbar" data-offset="30"> | |
<!-- Nav Menu --> | |
<div class="nav-menu fixed-top is-scrolling"> | |
<div class="container"> | |
<div class="row"> | |
<div class="col-md-12"> | |
<nav class="navbar navbar-dark navbar-expand-lg"> | |
<a class="navbar-brand" href="index.html"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/logo.png" class="img-fluid" alt="logo"></a> <button class="navbar-toggler" type="button" data-toggle="collapse" | |
data-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> | |
<div class="collapse navbar-collapse" id="navbar"> | |
<ul class="navbar-nav ml-auto"> | |
<li class="nav-item"> <a class="nav-link active" href="#home">HOME <span class="sr-only">(current)</span></a> </li> | |
<li class="nav-item"> <a class="nav-link" href="#features">FEATURES</a> </li> | |
<li class="nav-item"> <a class="nav-link" href="#gallery">GALLERY</a> </li> | |
<li class="nav-item"> <a class="nav-link" href="#pricing">PRICING</a> </li> | |
<li class="nav-item"> <a class="nav-link" href="#contact">CONTACT</a> </li> | |
<li class="nav-item"><a href="#" class="btn btn-outline-light my-3 my-sm-0 ml-lg-3">Download</a></li> | |
</ul> | |
</div> | |
</nav> | |
</div> | |
</div> | |
</div> | |
</div> | |
<header class="bg-gradient" id="home"> | |
<div class="container mt-5"> | |
<h1>Questionaire Validation</h1> | |
<p class="tagline">Validate and sort error of rule using centrality algorithm</p> | |
</div> | |
<div class="img-holder mt-3"><img src="images/questionaires.png" alt="phone" class="img-fluid"></div> | |
</header> | |
<div class="client-logos my-5"> | |
<div class="container text-center"> | |
<img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/client-logos.png" alt="client logos" class="img-fluid"> | |
</div> | |
</div> | |
<!-- // end .section --> | |
<!-- // end .section --> | |
<div class="section light-bg"> | |
<div class="container"> | |
<div class="section-title"> | |
<small>TRY IT YOURSELF</small> | |
<h3>Fill the questionaire and validate it</h3> | |
</div> | |
<ul class="nav nav-tabs nav-justified" role="tablist"> | |
<li class="nav-item"> | |
<a class="nav-link active" data-toggle="tab" href="#q_demography">Demography</a> | |
</li> | |
<li class="nav-item"> | |
<a class="nav-link" data-toggle="tab" href="#q_education">Education</a> | |
</li> | |
<li class="nav-item"> | |
<a class="nav-link" data-toggle="tab" href="#q_healthy">Healthy</a> | |
</li> | |
</ul> | |
<div class="tab-content"> | |
<div class="tab-pane fade show active" id="q_demography"> | |
<ul class="nav nav-pills nav-justified" role="tablist"> | |
<li> | |
<a class="nav-link" data-toggle="tab" action="q_d_add" href="#q_d_+">+</a> | |
</li> | |
<li class="nav-item"> | |
<a class="nav-link active" data-toggle="tab" href="#q_d_1">ART-1</a> | |
</li> | |
</ul> | |
<div class="tab-content"> | |
<div class="tab-pane fade show active" id="q_d_1"> | |
asdf | |
</div> | |
</div> | |
</div> | |
<div class="tab-pane fade" id="q_education"> | |
<div class="d-flex flex-column flex-lg-row"> | |
<div> | |
<h2>Scheduling when you want</h2> | |
<p class="lead">Uniquely underwhelm premium outsourcing with proactive leadership skills. </p> | |
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rutrum, urna eu pellentesque pretium, nisi nisi fermentum enim, et sagittis dolor nulla vel sapien. Vestibulum sit amet mattis ante. Ut placerat dui eu nulla | |
congue tincidunt ac a nibh. Mauris accumsan pulvinar lorem placerat volutpat. Praesent quis facilisis elit. Sed condimentum neque quis ex porttitor, | |
</p> | |
<p> malesuada faucibus augue aliquet. Sed elit est, eleifend sed dapibus a, semper a eros. Vestibulum blandit vulputate pharetra. Phasellus lobortis leo a nisl euismod, eu faucibus justo sollicitudin. Mauris consectetur, tortor | |
sed tempor malesuada, sem nunc porta augue, in dictum arcu tortor id turpis. Proin aliquet vulputate aliquam. | |
</p> | |
</div> | |
<img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/graphic.png" alt="graphic" class="img-fluid rounded align-self-start mr-lg-5 mb-5 mb-lg-0"> | |
</div> | |
</div> | |
<div class="tab-pane fade" id="q_healthy"> | |
<div class="d-flex flex-column flex-lg-row"> | |
<img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/graphic.png" alt="graphic" class="img-fluid rounded align-self-start mr-lg-5 mb-5 mb-lg-0"> | |
<div> | |
<h2>Realtime Messaging service</h2> | |
<p class="lead">Uniquely underwhelm premium outsourcing with proactive leadership skills. </p> | |
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rutrum, urna eu pellentesque pretium, nisi nisi fermentum enim, et sagittis dolor nulla vel sapien. Vestibulum sit amet mattis ante. Ut placerat dui eu nulla | |
congue tincidunt ac a nibh. Mauris accumsan pulvinar lorem placerat volutpat. Praesent quis facilisis elit. Sed condimentum neque quis ex porttitor, | |
</p> | |
<p> malesuada faucibus augue aliquet. Sed elit est, eleifend sed dapibus a, semper a eros. Vestibulum blandit vulputate pharetra. Phasellus lobortis leo a nisl euismod, eu faucibus justo sollicitudin. Mauris consectetur, tortor | |
sed tempor malesuada, sem nunc porta augue, in dictum arcu tortor id turpis. Proin aliquet vulputate aliquam. | |
</p> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- // end .section --> | |
<div class="section"> | |
<div class="container"> | |
<div class="section-title"> | |
<small>THE RULE</small> | |
<h3>Using Centrality Theory</h3> | |
</div> | |
<div id="canvas"> | |
<span class="description">Rule Representation Graph</span> | |
<svg class="jsnx rule"></svg> | |
</div> | |
</div> | |
</div> | |
<!-- // end .section --> | |
<div class="section light-bg" id="gallery"> | |
<div class="container"> | |
<div class="section-title"> | |
<small>GALLERY</small> | |
<h3>App Screenshots</h3> | |
</div> | |
<div class="img-gallery owl-carousel owl-theme owl-loaded owl-drag"> | |
<div class="owl-stage-outer"> | |
<div class="owl-stage" style="transition: 0.25s; width: 3100px; transform: translate3d(-1550px, 0px, 0px);"> | |
<div class="owl-item cloned" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen2.jpg" alt="image"></div> | |
<div class="owl-item cloned" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen3.jpg" alt="image"></div> | |
<div class="owl-item cloned" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen1.jpg" alt="image"></div> | |
<div class="owl-item" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen1.jpg" alt="image"></div> | |
<div class="owl-item" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen2.jpg" alt="image"></div> | |
<div class="owl-item active" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen3.jpg" alt="image"></div> | |
<div class="owl-item active center" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen1.jpg" alt="image"></div> | |
<div class="owl-item cloned active" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen1.jpg" alt="image"></div> | |
<div class="owl-item cloned" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen2.jpg" alt="image"></div> | |
<div class="owl-item cloned" style="width: 310px;"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/screen3.jpg" alt="image"></div> | |
</div> | |
</div> | |
<div class="owl-nav disabled"> | |
<div class="owl-prev"><span class="ti-arrow-left"></span></div> | |
<div class="owl-next"><span class="ti-arrow-right"></span></div> | |
</div> | |
<div class="owl-dots"> | |
<div class="owl-dot"><span></span></div> | |
<div class="owl-dot"><span></span></div> | |
<div class="owl-dot"><span></span></div> | |
<div class="owl-dot active"><span></span></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- // end .section --> | |
<div class="section" id="pricing"> | |
<div class="container"> | |
<div class="section-title"> | |
<small>PRICING</small> | |
<h3>Upgrade to Pro</h3> | |
</div> | |
<div class="card-deck"> | |
<div class="card pricing"> | |
<div class="card-head"> | |
<small class="text-primary">PERSONAL</small> | |
<span class="price">$14<sub>/m</sub></span> | |
</div> | |
<ul class="list-group list-group-flush"> | |
<div class="list-group-item">10 Projects</div> | |
<div class="list-group-item">5 GB Storage</div> | |
<div class="list-group-item">Basic Support</div> | |
<div class="list-group-item"><del>Collaboration</del></div> | |
<div class="list-group-item"><del>Reports and analytics</del></div> | |
</ul> | |
<div class="card-body"> | |
<a href="#" class="btn btn-primary btn-lg btn-block">Choose this Plan</a> | |
</div> | |
</div> | |
<div class="card pricing popular"> | |
<div class="card-head"> | |
<small class="text-primary">FOR TEAMS</small> | |
<span class="price">$29<sub>/m</sub></span> | |
</div> | |
<ul class="list-group list-group-flush"> | |
<div class="list-group-item">Unlimited Projects</div> | |
<div class="list-group-item">100 GB Storage</div> | |
<div class="list-group-item">Priority Support</div> | |
<div class="list-group-item">Collaboration</div> | |
<div class="list-group-item">Reports and analytics</div> | |
</ul> | |
<div class="card-body"> | |
<a href="#" class="btn btn-primary btn-lg btn-block">Choose this Plan</a> | |
</div> | |
</div> | |
<div class="card pricing"> | |
<div class="card-head"> | |
<small class="text-primary">ENTERPRISE</small> | |
<span class="price">$249<sub>/m</sub></span> | |
</div> | |
<ul class="list-group list-group-flush"> | |
<div class="list-group-item">Unlimited Projects</div> | |
<div class="list-group-item">Unlimited Storage</div> | |
<div class="list-group-item">Collaboration</div> | |
<div class="list-group-item">Reports and analytics</div> | |
<div class="list-group-item">Web hooks</div> | |
</ul> | |
<div class="card-body"> | |
<a href="#" class="btn btn-primary btn-lg btn-block">Choose this Plan</a> | |
</div> | |
</div> | |
</div> | |
<!-- // end .pricing --> | |
</div> | |
</div> | |
<!-- // end .section --> | |
<div class="section pt-0"> | |
<div class="container"> | |
<div class="section-title"> | |
<small>FAQ</small> | |
<h3>Frequently Asked Questions</h3> | |
</div> | |
<div class="row pt-4"> | |
<div class="col-md-6"> | |
<h4 class="mb-3">Can I try before I buy?</h4> | |
<p class="light-font mb-5">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rutrum, urna eu pellentesque pretium, nisi nisi fermentum enim, et sagittis dolor nulla vel sapien. Vestibulum sit amet mattis ante. </p> | |
<h4 class="mb-3">What payment methods do you accept?</h4> | |
<p class="light-font mb-5">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rutrum, urna eu pellentesque pretium, nisi nisi fermentum enim, et sagittis dolor nulla vel sapien. Vestibulum sit amet mattis ante. </p> | |
</div> | |
<div class="col-md-6"> | |
<h4 class="mb-3">Can I change my plan later?</h4> | |
<p class="light-font mb-5">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rutrum, urna eu pellentesque pretium, nisi nisi fermentum enim, et sagittis dolor nulla vel sapien. Vestibulum sit amet mattis ante. </p> | |
<h4 class="mb-3">Do you have a contract?</h4> | |
<p class="light-font mb-5">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rutrum, urna eu pellentesque pretium, nisi nisi fermentum enim, et sagittis dolor nulla vel sapien. Vestibulum sit amet mattis ante. </p> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- // end .section --> | |
<div class="section bg-gradient"> | |
<div class="container"> | |
<div class="call-to-action"> | |
<div class="box-icon"><span class="ti-mobile gradient-fill ti-3x"></span></div> | |
<h2>Download Anywhere</h2> | |
<p class="tagline">Available for all major mobile and desktop platforms. Rapidiously visualize optimal ROI rather than enterprise-wide methods of empowerment. </p> | |
<div class="my-4"> | |
<a href="#" class="btn btn-light"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/appleicon.png" alt="icon"> App Store</a> | |
<a href="#" class="btn btn-light"><img src="https://github.com/soedomoto/soedomoto.github.io/raw/master/images/playicon.png" alt="icon"> Google play</a> | |
</div> | |
<p class="text-primary"><small><i>*Works on iOS 10.0.5+, Android Kitkat and above. </i></small></p> | |
</div> | |
</div> | |
</div> | |
<!-- // end .section --> | |
<div class="light-bg py-5" id="contact"> | |
<div class="container"> | |
<div class="row"> | |
<div class="col-lg-6 text-center text-lg-left"> | |
<p class="mb-2"> <span class="ti-location-pin mr-2"></span> 1485 Pacific St, Brooklyn, NY 11216 USA</p> | |
<div class=" d-block d-sm-inline-block"> | |
<p class="mb-2"> | |
<span class="ti-email mr-2"></span> <a class="mr-4" href="mailto:[email protected]">[email protected]</a> | |
</p> | |
</div> | |
<div class="d-block d-sm-inline-block"> | |
<p class="mb-0"> | |
<span class="ti-headphone-alt mr-2"></span> <a href="tel:51836362800">518-3636-2800</a> | |
</p> | |
</div> | |
</div> | |
<div class="col-lg-6"> | |
<div class="social-icons"> | |
<a href="#"><span class="ti-facebook"></span></a> | |
<a href="#"><span class="ti-twitter-alt"></span></a> | |
<a href="#"><span class="ti-instagram"></span></a> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- // end .section --> | |
<footer class="my-5 text-center"> | |
<!-- Copyright removal is not prohibited! --> | |
<p class="mb-2"><small>COPYRIGHT © 2017. ALL RIGHTS RESERVED. MOBAPP TEMPLATE BY <a href="https://colorlib.com">COLORLIB</a></small></p> | |
<small> | |
<a href="#" class="m-2">PRESS</a> | |
<a href="#" class="m-2">TERMS</a> | |
<a href="#" class="m-2">PRIVACY</a> | |
</small> | |
</footer> | |
<!-- jQuery and Bootstrap --> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta.2/js/bootstrap.bundle.min.js"></script> | |
<!-- Plugins JS --> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/owl.carousel.min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.4.0/Sortable.min.js"></script> | |
<script src="https://d3js.org/d3.v3.min.js"></script> | |
<script src="https://bl.ocks.org/emeeks/raw/9915de8989e2a5c34652/7d22d8e4f05e944ced10408ae64579beff3c0858/jsnetworkx.js"></script> | |
<script src="https://cdn.rawgit.com/eligrey/canvas-toBlob.js/f1a01896135ab378aa5c0118eadd81da55e698d8/canvas-toBlob.js"></script> | |
<script src="https://cdn.rawgit.com/eligrey/FileSaver.js/e9d941381475b5df8b7d7691013401e171014e89/FileSaver.min.js"></script> | |
<!-- Custom JS --> | |
<script src="script.js"></script> | |
<script type="text/javascript"> | |
jQuery(function($) { | |
$(document).ready(function() { | |
// QUESTIONAIRE | |
$("[action=q_d_add]").on("click", function() { | |
$('<li class="nav-item"><a class="nav-link" data-toggle="tab" href="#q_d_2">ART-X ' + | |
'<button class="close" type="button" style="color: inherit;" title="Remove this tab">×</button></a></li>').appendTo($("#q_demography .nav")); | |
$('<div class="tab-pane fade show" id="q_d_2">qwer</div>') | |
.appendTo($("#q_demography .tab-content")); | |
}); | |
$("#q_demography .nav").on('click', '.close', function() { | |
var tabID = $(this).parents('a').attr('href'); | |
$(this).parents('li').remove(); | |
$(tabID).remove(); | |
//display first tab | |
var tabFirst = $('#q_demography li.nav-item:first a'); | |
tabFirst.tab('show'); | |
}); | |
new Sortable($("#q_demography .nav")[0]); | |
}); | |
}); | |
// Draw Graph | |
var rule_graph_file = "https://gist.githubusercontent.com/soedomoto/423c6f39cabaf2e4725110ee96228597/raw/6a8193849dec981e9686fac4c38189dc90eb404b/rule_graph.json", | |
data_error_file = "https://gist.githubusercontent.com/soedomoto/69187b949305271ae4f118e0b53f3c64/raw/77aec3d12ca798182a5cafb1b159ddf2da5f8270/data_error.csv"; | |
var color_map = { | |
"O": "rgb(255, 165, 0)", | |
"P": "rgb(255, 192, 203)", | |
"B": "rgb(0, 0, 255)", | |
"W": "rgb(255, 255, 255)", | |
"G": "rgb(0, 128, 0)", | |
"R": "rgb(255, 0, 0)", | |
"M": "rgb(255,0,255)", | |
"C": "rgb(0,255,255)" | |
} | |
var canvas_width = d3.select("#canvas").node().getBoundingClientRect().width, | |
canvas_height = 500, | |
svg_rule_width = 1.00 * canvas_width, | |
svg_rule_height = canvas_height - 30.23; | |
d3.select("div#canvas") | |
.style("height", canvas_height + 'px') | |
.classed("svg-container", true) | |
.select("svg.rule") | |
.attr("preserveAspectRatio", "xMinYMin meet") | |
.attr("viewBox", "0 0 " + svg_rule_width + " " + svg_rule_height + "") | |
.classed("svg-content-responsive", true); | |
function encode_rule(rule) { | |
rule = rule.replace("==", "_eq_"); | |
rule = rule.replace("!=", "_neq_"); | |
rule = rule.replace(">", "_g_"); | |
rule = rule.replace(">=", "_ge_"); | |
rule = rule.replace("<", "_l_"); | |
rule = rule.replace("<=", "_le_"); | |
vov = rule.split("_"); | |
return { | |
'rule': rule, | |
'variable': vov[0], | |
'operator': vov[1], | |
'value': vov[2] | |
}; | |
} | |
function random_int(min, max) { | |
return Math.floor(Math.random() * (max - min + 1)) + min; | |
} | |
d3.json(rule_graph_file, function(error, graph) { | |
if (error) throw error; | |
graph.nodes.forEach(function(n) { | |
r = encode_rule(n.id); | |
n.rule = r.rule; | |
n.variable = r.variable; | |
n.operator = r.operator; | |
n.value = r.value; | |
}); | |
var nodeHash = graph.nodes.reduce(function(map, n) { | |
map[n.id] = n; | |
return map; | |
}, {}); | |
graph.links.forEach(function(e, i) { | |
e.id = i; | |
e.source = nodeHash[e.source]; | |
e.target = nodeHash[e.target]; | |
e.weight = 5; | |
}); | |
create_rule_network(graph.nodes, graph.links); | |
}); | |
function create_rule_network(nodes, edges) { | |
var rule_force = d3.layout.force() | |
.nodes(nodes) | |
.links(edges) | |
.size([svg_rule_width, svg_rule_height]) | |
.charge(-300) | |
.chargeDistance(100) | |
.gravity(0.05) | |
.on("tick", update_rule_network) | |
.on('end', function() { | |
console.log('Layout finished. Start processing data...'); | |
process_data_error(data_error_file, nodes, edges); | |
}); | |
var rule_drag = rule_force.drag(); | |
var svg = d3.select("svg.rule"), | |
g = svg.append("g"); | |
svg.append("svg:defs").selectAll("marker") | |
.data(["end"]) | |
.enter().append("svg:marker") | |
.attr("id", String) | |
.attr("viewBox", "0 -5 10 10") | |
.attr("refX", 15) | |
.attr("refY", -1.5) | |
.attr("markerWidth", 6) | |
.attr("markerHeight", 6) | |
.attr("orient", "auto") | |
.append("svg:path") | |
.attr("d", "M0,-5L10,0L0,5") | |
.attr("class", "arrow"); | |
g.append("g").attr("class", "edges") | |
.selectAll("g.edge") | |
.data(edges, function(d) { | |
return d.id | |
}) | |
.enter() | |
.append("g") | |
.attr("class", "edge") | |
.append("line") | |
.attr("marker-end", "url(#end)"); | |
var g_nodes = g.append("g").attr("class", "nodes") | |
.selectAll("g.node") | |
.data(nodes) | |
.enter() | |
.append("g") | |
.attr("class", function(d) { | |
return "node " + d.rule | |
}) | |
.attr("variable", function(d) { | |
return d.variable | |
}) | |
.attr("operator", function(d) { | |
return d.operator | |
}) | |
.attr("value", function(d) { | |
return d.value | |
}) | |
.call(rule_drag); | |
g_nodes.append("circle") | |
.attr("r", 6); | |
g_nodes.append("text") | |
.style("text-anchor", "middle") | |
.attr("y", 3) | |
.style("stroke-width", "1px") | |
.style("stroke-opacity", 0.75) | |
.style("stroke", "white") | |
.style("font-size", "8px") | |
.text(function(d) { | |
return d.id | |
}) | |
.style("pointer-events", "none"); | |
g_nodes.append("text") | |
.style("text-anchor", "middle") | |
.attr("y", 3) | |
.style("font-size", "8px") | |
.text(function(d) { | |
return d.id | |
}) | |
.style("pointer-events", "none"); | |
rule_force.start(); | |
} | |
function update_rule_network(e) { | |
d3.select("svg.rule").selectAll("line") | |
.attr("x1", function(d) { | |
return d.source.x | |
}) | |
.attr("y1", function(d) { | |
return d.source.y | |
}) | |
.attr("x2", function(d) { | |
return d.target.x | |
}) | |
.attr("y2", function(d) { | |
return d.target.y | |
}); | |
d3.select("svg.rule").selectAll("g.node") | |
.attr("transform", function(d) { | |
return "translate(" + d.x + "," + d.y + ")"; | |
}); | |
} | |
function process_data_error(data_error_file, nodes, edges) { | |
d3.csv(data_error_file, function(error, data_error) { | |
// process_record_wrapper(data_error, 0); | |
process_record(data_error[0]); | |
}); | |
} | |
function process_record_wrapper(data_error, i) { | |
if (i >= data_error.length) return; | |
if (i > 10) return; | |
console.log("+++++ PROCESSING RECORD #" + (i + 1) + " +++++"); | |
process_record(data_error[i], function() { | |
process_record_wrapper(data_error, i + 1); | |
}); | |
} | |
function process_record(data, finish_callback) { | |
var nodes_el = d3.selectAll(".node") | |
.each(function(d) { | |
d.input = data[d.variable]; | |
if (d.input == null || d.input == "") d.input = "NULL"; | |
}); | |
start_evaluation(Number.MAX_SAFE_INTEGER, finish_callback); | |
} | |
function start_evaluation(previous_error, finish_callback) { | |
var current_error = previous_error, | |
init_color_it = 0; | |
d3.selectAll(".node") | |
.selectAll("circle") | |
.each(function(d) { | |
if (d.id.startsWith("G") && d.id.endsWith("-in")) { | |
d.color = "P"; | |
} else if (d.id.startsWith("G") && d.id.endsWith("-out")) { | |
d.color = "B"; | |
} else if (d.id.startsWith("C")) { | |
d.color = "W"; | |
} else { | |
d.color = "O"; | |
} | |
init_color_it += 1; | |
}) | |
.transition() | |
.duration(200) | |
.style("fill", function(d) { | |
return color_map[d.color] | |
}) | |
.delay(100) | |
.each("end", function(d) { | |
init_color_it -= 1; | |
if (init_color_it == 0) { | |
validate_input(this, d, function() { | |
console.log(" => Set valid rule(s) to " + color_map["G"]); | |
calculate_centrality(function(error_rules) { | |
current_error = error_rules.length; | |
console.log(" => Set error rule(s): " + error_rules.join(", ") + | |
" to " + color_map["M"]); | |
}, function(max_centrality_nodes) { | |
console.log(" => Max centrality rule(s): " + max_centrality_nodes.join(", ")); | |
// make_revision(max_centrality_nodes, function(selected_node) { | |
// console.log(" => Selected rule: " + selected_node); | |
// }, function(variable, old_val, new_val) { | |
// console.log(" => Value of variable " + variable + | |
// " is revised from " + old_val + | |
// " to " + new_val); | |
// }, function() { | |
// if (current_error < previous_error) { | |
// start_evaluation(current_error, finish_callback); | |
// } else { | |
// console.log("FINISH"); | |
// finish_callback(); | |
// } | |
// }); | |
}); | |
}); | |
} | |
}); | |
} | |
function validate_input(el, d, callback) { | |
var val_inp_iter = 0; | |
d3.selectAll(".node") | |
.selectAll("circle") | |
.filter(function(d) { | |
if (d.id.startsWith("R")) return true; | |
else return false; | |
}) | |
.each(function(d) { | |
d.valid = false; | |
}).each(function(d) { | |
var str_value = d.input, | |
val = Number(str_value), | |
rule_val = Number(d.value); | |
if (d.value == "NULL" && str_value == "NULL") d.valid = true; | |
if (d.operator == "eq") { | |
if (d.value.indexOf("-") !== -1) { | |
var min_max = d.value.split("-"); | |
try { | |
var min = Number(min_max[0]), | |
max = Number(min_max[1]); | |
if (val >= min && val <= max) d.valid = true; | |
} catch (err) {} | |
} else if (d.value == str_value) d.valid = true; | |
} | |
if (val != NaN && rule_val != NaN) { | |
if (d.operator == "g") { | |
if (val > rule_val) d.valid = true; | |
} else if (d.operator == "ge") { | |
if (val >= rule_val) d.valid = true; | |
} else if (d.operator == "l") { | |
if (val < rule_val) d.valid = true; | |
} else if (d.operator == "le") { | |
if (val <= rule_val) d.valid = true; | |
} | |
} | |
}).filter(function(d) { | |
if (d.valid) return true; | |
else false; | |
}) | |
.each(function(d) { | |
d.color = "G"; | |
val_inp_iter += 1; | |
}).transition() | |
.duration(500) | |
.style("fill", function(d) { | |
return color_map[d.color] | |
}).delay(200) | |
.each("end", function(d) { | |
// Greenify the related group too | |
d3.selectAll("." + d.group + "-in,." + d.group + "-out") | |
.selectAll("circle") | |
.each(function(d) { | |
d.valid = true; | |
d.color = "G"; | |
}) | |
.transition() | |
.duration(500) | |
.style("fill", function(d) { | |
return color_map[d.color]; | |
}) | |
.delay(200) | |
.each("end", function(d) {}); | |
val_inp_iter -= 1; | |
if (val_inp_iter == 0) { | |
callback(); | |
} | |
}); | |
} | |
function calculate_centrality(err_callback, cent_callback) { | |
var hyper_edges = {}, | |
error_rules = [], | |
rule_error_iter = 0; | |
var err_nodes = d3.selectAll(".node") | |
.selectAll("circle") | |
.filter(function(d) { | |
if (d.id.startsWith("C")) return true; | |
return false | |
}).each(function(d) { | |
var source_variables = [], | |
target_variables = [], | |
is_target_error = false; | |
in_edges = d3.selectAll(".edge") | |
.filter(function(e) { | |
if (e.target.id == d.id) return true; | |
else return false; | |
}).each(function(f) { | |
// console.log(d.variable, f.source.id, f.source.color) | |
if (f.source.color == "G") { | |
if (f.source.rule.startsWith("G")) { | |
d3.selectAll(".edge") | |
.filter(function(e) { | |
if (e.target.id == f.source.id) return true; | |
return false; | |
}) | |
.each(function(g) { | |
source_variables.push(g.source.variable); | |
}); | |
} else { | |
source_variables.push(f.source.variable); | |
} | |
} | |
}); | |
out_edges = d3.selectAll(".edge") | |
.filter(function(e) { | |
if (e.source.id == d.id) return true; | |
else return false; | |
}).each(function(d) { | |
if (d.target.rule.startsWith("G")) { | |
d3.selectAll(".edge") | |
.filter(function(e) { | |
if (e.source.id == d.target.id) return true; | |
return false; | |
}) | |
.each(function(d) { | |
target_variables.push(d.target.variable); | |
}); | |
} else { | |
target_variables.push(d.target.variable); | |
} | |
if (d.target.color == "G") is_target_error = true; | |
}); | |
// console.log(d.rule, source_variables, target_variables) | |
d.source_variables = source_variables; | |
d.target_variables = target_variables; | |
if (source_variables.length != 0 && !is_target_error) { | |
d.error = true; | |
d.color = "M"; | |
} else d.error = false; | |
}) | |
.each(function(d) { | |
var hyper_edge = []; | |
if (d.error) { | |
d.source_variables.forEach(function(sv) { | |
d.target_variables.forEach(function(tv) { | |
if (!hyper_edge.includes(sv)) { | |
hyper_edge.push(sv); | |
} | |
if (!hyper_edge.includes(tv)) { | |
hyper_edge.push(tv); | |
} | |
}); | |
}); | |
// console.log("Hyperedges : ", d.rule, hyper_edge); | |
d.hyper_edge = hyper_edge; | |
hyper_edges[d.rule] = hyper_edge; | |
error_rules.push(d.id);; | |
} | |
}) | |
.filter(function(d) { | |
return d.error; | |
}) | |
.each(function(d) { | |
rule_error_iter += 1; | |
}) | |
.transition() | |
.duration(1000) | |
.attr("r", 12) | |
.style("fill", function(d) { | |
return color_map[d.color]; | |
}) | |
.delay(200) | |
.each("end", function(d) { | |
d3.select(this) | |
.transition() | |
.duration(1000) | |
.attr("r", 6); | |
rule_error_iter -= 1; | |
if (rule_error_iter == 0) { | |
err_callback(error_rules); | |
var max_centrality_nodes = [], | |
c_hyper_edges = JSON.parse(JSON.stringify(hyper_edges)); | |
while (Object.keys(hyper_edges).length > 0) { | |
var key = Object.keys(hyper_edges)[0], | |
hyper_edge = hyper_edges[key], | |
keys_to_remove = []; | |
hyper_edge.forEach(function(n) { | |
if (!(max_centrality_nodes.includes(n))) { | |
max_centrality_nodes.push(n); | |
} | |
Object.keys(hyper_edges).forEach(function(k) { | |
var he = hyper_edges[k]; | |
if (he.includes(n)) { | |
if (!(keys_to_remove.includes(k))) { | |
keys_to_remove.push(k); | |
} | |
} | |
}); | |
}); | |
keys_to_remove.forEach(function(k) { | |
delete hyper_edges[k] | |
}); | |
} | |
var max = -1, | |
selected_nodes = []; | |
max_centrality_nodes.forEach(function(n) { | |
var count = 0; | |
Object.keys(c_hyper_edges).forEach(function(k) { | |
var he = c_hyper_edges[k]; | |
if (he.includes(n)) { | |
count += 1; | |
} | |
}); | |
// console.log(n, count) | |
if (count > max) { | |
selected_nodes = []; | |
selected_nodes.push(n); | |
max = count; | |
} else if (count == max) { | |
selected_nodes.push(n); | |
} | |
}); | |
max_centrality_nodes = selected_nodes; | |
cent_callback(max_centrality_nodes) | |
} | |
}); | |
} | |
function make_revision(max_centrality_nodes, cdt_callback, change_callback, finish_callback) { | |
var revision_iter = 0, | |
candidate = 0; | |
var candidate_nodes = d3.selectAll(".node") | |
.selectAll("circle") | |
.each(function(d) { | |
d.candidate = -1; | |
}) | |
.filter(function(d) { | |
if (max_centrality_nodes.includes(d.variable)) return true; | |
else return false; | |
}) | |
.each(function(d) { | |
d.candidate = candidate; | |
candidate += 1; | |
}); | |
var sel_cdt_idx = random_int(0, candidate - 1) | |
candidate_nodes.filter(function(d) { | |
if (d.candidate == sel_cdt_idx) { | |
d.color = "R"; | |
cdt_callback(d.id) | |
return true; | |
} | |
return false; | |
}) | |
.each(function() { | |
revision_iter += 1; | |
}) | |
.transition() | |
.duration(1000) | |
.attr("r", 12) | |
.style("fill", function(d) { | |
return color_map[d.color]; | |
}) | |
.delay(200) | |
.each("end", function(d) { | |
d3.select(this) | |
.transition() | |
.duration(1000) | |
.attr("r", 6) | |
.delay(200) | |
.each("end", function(e) { | |
var val = d.value; | |
if (val.indexOf("-") !== -1) { | |
val = val.split("-")[0]; | |
val = Number(val); | |
} else { | |
val = Number(val); | |
} | |
if (d.operator == "g") { | |
val += val; | |
} else if (d.operator == "l") { | |
val -= val; | |
} | |
change_callback(d.variable, d.input, val); | |
d.input = val; | |
// revision_iter -= 1; | |
// if (revision_iter == 0) { | |
finish_callback(); | |
// } | |
}); | |
}); | |
} | |
</script> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"links":[{"source":"R403==1","target":"C1"},{"source":"C1","target":"R404==1"},{"source":"C1","target":"R404==3"},{"source":"C1","target":"R404==4"},{"source":"R404==2","target":"C2"},{"source":"C2","target":"R408==1"},{"source":"C2","target":"R408==5"},{"source":"R404==1","target":"C3"},{"source":"R404==3","target":"C3"},{"source":"R404==4","target":"C3"},{"source":"C3","target":"R408==NULL"},{"source":"R404==1","target":"C4"},{"source":"C4","target":"R409==NULL"},{"source":"R404==2","target":"C5"},{"source":"R404==3","target":"C5"},{"source":"R404==4","target":"C5"},{"source":"C5","target":"R409==11-14"},{"source":"C5","target":"R409==18-24"},{"source":"C5","target":"R409>49"},{"source":"C5","target":"R409==25-49"},{"source":"C5","target":"R409==15-17"},{"source":"C5","target":"R409==10"},{"source":"R407==25-49","target":"C6"},{"source":"R407>49","target":"C6"},{"source":"R407==18-24","target":"C6"},{"source":"C6","target":"R410==NULL"},{"source":"R407==8-9","target":"C7"},{"source":"R407==15-17","target":"C7"},{"source":"R407==11-14","target":"C7"},{"source":"R407==5-7","target":"C7"},{"source":"R407==0","target":"C7"},{"source":"R407==1","target":"C7"},{"source":"R407==10","target":"C7"},{"source":"R407==2-4","target":"C7"},{"source":"C7","target":"R410==1"},{"source":"C7","target":"R410==2"},{"source":"C7","target":"R410==5"},{"source":"C7","target":"R410==8"},{"source":"R407==25-49","target":"C8"},{"source":"R407>49","target":"C8"},{"source":"R407==18-24","target":"C8"},{"source":"C8","target":"R411==NULL"},{"source":"R407==8-9","target":"C9"},{"source":"R407==5-7","target":"C9"},{"source":"R407==0","target":"C9"},{"source":"R407==1","target":"C9"},{"source":"R407==10","target":"C9"},{"source":"R407==2-4","target":"C9"},{"source":"C9","target":"R412==1"},{"source":"C9","target":"R412==2"},{"source":"C9","target":"R412==3"},{"source":"C9","target":"R412==4"},{"source":"R407==25-49","target":"C10"},{"source":"R407>49","target":"C10"},{"source":"R407==18-24","target":"C10"},{"source":"R407==15-17","target":"C10"},{"source":"R407==11-14","target":"C10"},{"source":"C10","target":"R412==NULL"},{"source":"R407==0","target":"C11"},{"source":"C11","target":"R412==4"},{"source":"R407==1","target":"C12"},{"source":"C12","target":"R412==1"},{"source":"C12","target":"R412==2"},{"source":"C12","target":"R412==4"},{"source":"R407==8-9","target":"G1-out"},{"source":"R412==1","target":"G1-out"},{"source":"G1-out","target":"C13"},{"source":"R407==5-7","target":"G2-out"},{"source":"R412==1","target":"G2-out"},{"source":"G2-out","target":"C13"},{"source":"R407==0","target":"G3-out"},{"source":"R412==1","target":"G3-out"},{"source":"G3-out","target":"C13"},{"source":"R407==1","target":"G4-out"},{"source":"R412==1","target":"G4-out"},{"source":"G4-out","target":"C13"},{"source":"R407==10","target":"G5-out"},{"source":"R412==1","target":"G5-out"},{"source":"G5-out","target":"C13"},{"source":"R407==2-4","target":"G6-out"},{"source":"R412==1","target":"G6-out"},{"source":"G6-out","target":"C13"},{"source":"R407==8-9","target":"G7-out"},{"source":"R412==2","target":"G7-out"},{"source":"G7-out","target":"C13"},{"source":"R407==5-7","target":"G8-out"},{"source":"R412==2","target":"G8-out"},{"source":"G8-out","target":"C13"},{"source":"R407==0","target":"G9-out"},{"source":"R412==2","target":"G9-out"},{"source":"G9-out","target":"C13"},{"source":"R407==1","target":"G10-out"},{"source":"R412==2","target":"G10-out"},{"source":"G10-out","target":"C13"},{"source":"R407==10","target":"G11-out"},{"source":"R412==2","target":"G11-out"},{"source":"G11-out","target":"C13"},{"source":"R407==2-4","target":"G12-out"},{"source":"R412==2","target":"G12-out"},{"source":"G12-out","target":"C13"},{"source":"R407==8-9","target":"G13-out"},{"source":"R412==3","target":"G13-out"},{"source":"G13-out","target":"C13"},{"source":"R407==5-7","target":"G14-out"},{"source":"R412==3","target":"G14-out"},{"source":"G14-out","target":"C13"},{"source":"R407==0","target":"G15-out"},{"source":"R412==3","target":"G15-out"},{"source":"G15-out","target":"C13"},{"source":"R407==1","target":"G16-out"},{"source":"R412==3","target":"G16-out"},{"source":"G16-out","target":"C13"},{"source":"R407==10","target":"G17-out"},{"source":"R412==3","target":"G17-out"},{"source":"G17-out","target":"C13"},{"source":"R407==2-4","target":"G18-out"},{"source":"R412==3","target":"G18-out"},{"source":"G18-out","target":"C13"},{"source":"C13","target":"R413==NULL"},{"source":"R407==8-9","target":"G19-out"},{"source":"R412==4","target":"G19-out"},{"source":"G19-out","target":"C14"},{"source":"R407==5-7","target":"G20-out"},{"source":"R412==4","target":"G20-out"},{"source":"G20-out","target":"C14"},{"source":"R407==0","target":"G21-out"},{"source":"R412==4","target":"G21-out"},{"source":"G21-out","target":"C14"},{"source":"R407==1","target":"G22-out"},{"source":"R412==4","target":"G22-out"},{"source":"G22-out","target":"C14"},{"source":"R407==10","target":"G23-out"},{"source":"R412==4","target":"G23-out"},{"source":"G23-out","target":"C14"},{"source":"R407==2-4","target":"G24-out"},{"source":"R412==4","target":"G24-out"},{"source":"G24-out","target":"C14"},{"source":"C14","target":"R412==NULL"},{"source":"R407==25-49","target":"C15"},{"source":"R407>49","target":"C15"},{"source":"R407==18-24","target":"C15"},{"source":"R407==15-17","target":"C15"},{"source":"R407==11-14","target":"C15"},{"source":"C15","target":"R413==NULL"},{"source":"R407==25-49","target":"C16"},{"source":"R407==8-9","target":"C16"},{"source":"R407>49","target":"C16"},{"source":"R407==18-24","target":"C16"},{"source":"R407==15-17","target":"C16"},{"source":"R407==11-14","target":"C16"},{"source":"R407==5-7","target":"C16"},{"source":"R407==10","target":"C16"},{"source":"C16","target":"R504==1"},{"source":"C16","target":"R504==5"},{"source":"R407==0","target":"C17"},{"source":"R407==1","target":"C17"},{"source":"R407==2-4","target":"C17"},{"source":"C17","target":"R504==NULL"},{"source":"R407==25-49","target":"C18"},{"source":"R407==8-9","target":"C18"},{"source":"R407>49","target":"C18"},{"source":"R407==18-24","target":"C18"},{"source":"R407==15-17","target":"C18"},{"source":"R407==11-14","target":"C18"},{"source":"R407==5-7","target":"C18"},{"source":"R407==10","target":"C18"},{"source":"C18","target":"R505==1"},{"source":"C18","target":"R505==5"},{"source":"R407==0","target":"C19"},{"source":"R407==1","target":"C19"},{"source":"R407==2-4","target":"C19"},{"source":"C19","target":"R505==NULL"},{"source":"R407==25-49","target":"C20"},{"source":"R407==8-9","target":"C20"},{"source":"R407>49","target":"C20"},{"source":"R407==18-24","target":"C20"},{"source":"R407==15-17","target":"C20"},{"source":"R407==11-14","target":"C20"},{"source":"R407==5-7","target":"C20"},{"source":"R407==10","target":"C20"},{"source":"C20","target":"R506==1"},{"source":"C20","target":"R506==5"},{"source":"R407==0","target":"C21"},{"source":"R407==1","target":"C21"},{"source":"R407==2-4","target":"C21"},{"source":"C21","target":"R506==NULL"},{"source":"R407==25-49","target":"C22"},{"source":"R407==8-9","target":"C22"},{"source":"R407>49","target":"C22"},{"source":"R407==18-24","target":"C22"},{"source":"R407==15-17","target":"C22"},{"source":"R407==11-14","target":"C22"},{"source":"R407==5-7","target":"C22"},{"source":"R407==10","target":"C22"},{"source":"C22","target":"R507==1"},{"source":"C22","target":"R507==2"},{"source":"C22","target":"R507==3"},{"source":"R407==0","target":"C23"},{"source":"R407==1","target":"C23"},{"source":"R407==2-4","target":"C23"},{"source":"C23","target":"R507==NULL"},{"source":"G2-out","target":"C24"},{"source":"C24","target":"R507==1"},{"source":"R407==25-49","target":"G25-out"},{"source":"R507==2","target":"G25-out"},{"source":"G25-out","target":"C25"},{"source":"R407==8-9","target":"G26-out"},{"source":"R507==2","target":"G26-out"},{"source":"G26-out","target":"C25"},{"source":"R407>49","target":"G27-out"},{"source":"R507==2","target":"G27-out"},{"source":"G27-out","target":"C25"},{"source":"R407==18-24","target":"G28-out"},{"source":"R507==2","target":"G28-out"},{"source":"G28-out","target":"C25"},{"source":"R407==15-17","target":"G29-out"},{"source":"R507==2","target":"G29-out"},{"source":"G29-out","target":"C25"},{"source":"R407==11-14","target":"G30-out"},{"source":"R507==2","target":"G30-out"},{"source":"G30-out","target":"C25"},{"source":"R407==5-7","target":"G31-out"},{"source":"R507==2","target":"G31-out"},{"source":"G31-out","target":"C25"},{"source":"R407==10","target":"G32-out"},{"source":"R507==2","target":"G32-out"},{"source":"G32-out","target":"C25"},{"source":"R407==25-49","target":"G33-out"},{"source":"R507==3","target":"G33-out"},{"source":"G33-out","target":"C25"},{"source":"R407==8-9","target":"G34-out"},{"source":"R507==3","target":"G34-out"},{"source":"G34-out","target":"C25"},{"source":"R407>49","target":"G35-out"},{"source":"R507==3","target":"G35-out"},{"source":"G35-out","target":"C25"},{"source":"R407==18-24","target":"G36-out"},{"source":"R507==3","target":"G36-out"},{"source":"G36-out","target":"C25"},{"source":"R407==15-17","target":"G37-out"},{"source":"R507==3","target":"G37-out"},{"source":"G37-out","target":"C25"},{"source":"R407==11-14","target":"G38-out"},{"source":"R507==3","target":"G38-out"},{"source":"G38-out","target":"C25"},{"source":"R407==5-7","target":"G39-out"},{"source":"R507==3","target":"G39-out"},{"source":"G39-out","target":"C25"},{"source":"R407==10","target":"G40-out"},{"source":"R507==3","target":"G40-out"},{"source":"G40-out","target":"C25"},{"source":"C25","target":"R508==16"},{"source":"C25","target":"R508==19"},{"source":"C25","target":"R508==15"},{"source":"C25","target":"R508==20"},{"source":"C25","target":"R508==18"},{"source":"C25","target":"R508==5-8"},{"source":"C25","target":"R508==9-14"},{"source":"C25","target":"R508==1-4"},{"source":"C25","target":"R508==17"},{"source":"R407==0","target":"C26"},{"source":"R407==1","target":"C26"},{"source":"R407==2-4","target":"C26"},{"source":"C26","target":"R508==NULL"},{"source":"G26-out","target":"C27"},{"source":"G29-out","target":"C27"},{"source":"G30-out","target":"C27"},{"source":"G31-out","target":"C27"},{"source":"G32-out","target":"C27"},{"source":"R407==0","target":"C28"},{"source":"R407==1","target":"C28"},{"source":"R407==2-4","target":"C28"},{"source":"C28","target":"R509==NULL"},{"source":"R508==1-4","target":"C29"},{"source":"C29","target":"R509==1"},{"source":"C29","target":"R509==2"},{"source":"C29","target":"R509==3"},{"source":"C29","target":"R509==4"},{"source":"C29","target":"R509==5"},{"source":"C29","target":"R509==6"},{"source":"C29","target":"R509==8"},{"source":"R508==5-8","target":"C30"},{"source":"C30","target":"R509==1"},{"source":"C30","target":"R509==2"},{"source":"C30","target":"R509==3"},{"source":"C30","target":"R509==8"},{"source":"R508==9-14","target":"C31"},{"source":"C31","target":"R509==1"},{"source":"C31","target":"R509==2"},{"source":"C31","target":"R509==3"},{"source":"C31","target":"R509==8"},{"source":"R508==15","target":"C32"},{"source":"C32","target":"R509==1"},{"source":"C32","target":"R509==2"},{"source":"C32","target":"R509==8"},{"source":"R508==16","target":"C33"},{"source":"C33","target":"R509==1"},{"source":"C33","target":"R509==2"},{"source":"C33","target":"R509==3"},{"source":"C33","target":"R509==8"},{"source":"R508==18","target":"C34"},{"source":"R508==17","target":"C34"},{"source":"C34","target":"R509==1"},{"source":"C34","target":"R509==2"},{"source":"C34","target":"R509==3"},{"source":"C34","target":"R509==4"},{"source":"C34","target":"R509==5"},{"source":"C34","target":"R509==8"},{"source":"R508==19","target":"C35"},{"source":"R508==20","target":"C35"},{"source":"C35","target":"R509==6"},{"source":"C35","target":"R509==7"},{"source":"C35","target":"R509==8"},{"source":"R407==0","target":"C36"},{"source":"R407==1","target":"C36"},{"source":"R407==2-4","target":"C36"},{"source":"C36","target":"R510==NULL"},{"source":"R507==2","target":"G41-out"},{"source":"R508==9-14","target":"G41-out"},{"source":"R509==1","target":"G41-out"},{"source":"G41-out","target":"C37"},{"source":"R507==2","target":"G42-out"},{"source":"R508==9-14","target":"G42-out"},{"source":"R509==2","target":"G42-out"},{"source":"G42-out","target":"C37"},{"source":"R507==2","target":"G43-out"},{"source":"R508==9-14","target":"G43-out"},{"source":"R509==3","target":"G43-out"},{"source":"G43-out","target":"C37"},{"source":"C37","target":"R510==6-9"},{"source":"G26-out","target":"C38"},{"source":"G28-out","target":"C38"},{"source":"G29-out","target":"C38"},{"source":"G30-out","target":"C38"},{"source":"G31-out","target":"C38"},{"source":"G32-out","target":"C38"},{"source":"G34-out","target":"C38"},{"source":"G36-out","target":"C38"},{"source":"G37-out","target":"C38"},{"source":"G38-out","target":"C38"},{"source":"G39-out","target":"C38"},{"source":"G40-out","target":"C38"},{"source":"C38","target":"R513==1"},{"source":"C38","target":"R513==2"},{"source":"C38","target":"R513==3"},{"source":"R407==0","target":"C39"},{"source":"R407==1","target":"C39"},{"source":"R407==2-4","target":"C39"},{"source":"R407==25-49","target":"C39"},{"source":"R407>49","target":"C39"},{"source":"C39","target":"R513==NULL"},{"source":"R603==1","target":"C40"},{"source":"C40","target":"R604==1-60"},{"source":"R603==5","target":"C41"},{"source":"C41","target":"R604==NULL"},{"source":"R603==1","target":"C42"},{"source":"C42","target":"R605==1-60"},{"source":"R603==5","target":"C43"},{"source":"C43","target":"R605==NULL"},{"source":"R603==1","target":"C44"},{"source":"C44","target":"R605==1-60"},{"source":"R603==5","target":"C45"},{"source":"C45","target":"R605==NULL"},{"source":"R603==1","target":"C46"},{"source":"C46","target":"R605==1-60"},{"source":"R603==5","target":"C47"},{"source":"C47","target":"R605==NULL"},{"source":"R608==1","target":"C48"},{"source":"C48","target":"R609==0"},{"source":"C48","target":"R609==1"},{"source":"C48","target":"R609==2"},{"source":"C48","target":"R609==3"},{"source":"C48","target":"R609==4"},{"source":"C48","target":"R609==5"},{"source":"C48","target":"R609==6"},{"source":"C48","target":"R609==7"},{"source":"C48","target":"R609==8"},{"source":"C48","target":"R609==9"},{"source":"R608==5","target":"C49"},{"source":"C49","target":"R609==NULL"},{"source":"R608==1","target":"C50"},{"source":"C50","target":"R610==0"},{"source":"C50","target":"R610==1"},{"source":"C50","target":"R610==2"},{"source":"C50","target":"R610==3"},{"source":"C50","target":"R610==8"}],"nodes":[{"id":"C42","is_source_node":false},{"id":"G8-out","is_source_node":false},{"id":"C41","is_source_node":false},{"id":"C44","is_source_node":false},{"id":"C43","is_source_node":false},{"id":"C46","is_source_node":false},{"id":"R409==15-17","is_source_node":false},{"id":"R605==NULL","is_source_node":false},{"id":"C45","is_source_node":false},{"id":"C48","is_source_node":false},{"id":"C47","is_source_node":false},{"id":"C49","is_source_node":false},{"id":"G28-out","is_source_node":false},{"id":"G36-out","is_source_node":false},{"id":"C50","is_source_node":false},{"id":"R608==1","is_source_node":true},{"id":"R408==1","is_source_node":false},{"id":"R408==5","is_source_node":false},{"id":"G16-out","is_source_node":false},{"id":"R608==5","is_source_node":true},{"id":"R411==NULL","is_source_node":false},{"id":"R509==4","is_source_node":false},{"id":"R509==5","is_source_node":false},{"id":"G21-out","is_source_node":false},{"id":"R509==6","is_source_node":false},{"id":"R509==7","is_source_node":false},{"id":"R509==8","is_source_node":false},{"id":"G1-out","is_source_node":false},{"id":"R509==1","group":"G41","is_source_node":false},{"id":"R509==2","group":"G42","is_source_node":false},{"id":"R509==3","group":"G43","is_source_node":false},{"id":"R407==10","group":"G40","is_source_node":true},{"id":"C1","is_source_node":false},{"id":"C2","is_source_node":false},{"id":"C3","is_source_node":false},{"id":"C4","is_source_node":false},{"id":"R510==6-9","is_source_node":false},{"id":"C5","is_source_node":false},{"id":"C6","is_source_node":false},{"id":"C7","is_source_node":false},{"id":"G4-out","is_source_node":false},{"id":"C8","is_source_node":false},{"id":"G24-out","is_source_node":false},{"id":"C9","is_source_node":false},{"id":"R605==1-60","is_source_node":false},{"id":"R407==25-49","group":"G33","is_source_node":true},{"id":"G41-out","is_source_node":false},{"id":"G32-out","is_source_node":false},{"id":"R505==5","is_source_node":false},{"id":"R409==25-49","is_source_node":false},{"id":"R505==1","is_source_node":false},{"id":"R603==5","is_source_node":true},{"id":"G39-out","is_source_node":false},{"id":"G13-out","is_source_node":false},{"id":"R603==1","is_source_node":true},{"id":"R505==NULL","is_source_node":false},{"id":"R404==4","is_source_node":false},{"id":"R404==3","is_source_node":false},{"id":"R404==2","is_source_node":true},{"id":"R404==1","is_source_node":false},{"id":"G27-out","is_source_node":false},{"id":"R408==NULL","is_source_node":false},{"id":"G37-out","is_source_node":false},{"id":"G7-out","is_source_node":false},{"id":"R513==NULL","is_source_node":false},{"id":"R604==1-60","is_source_node":false},{"id":"R504==NULL","is_source_node":false},{"id":"R508==5-8","is_source_node":false},{"id":"R407==15-17","group":"G37","is_source_node":true},{"id":"G33-out","is_source_node":false},{"id":"G2-out","is_source_node":false},{"id":"R506==1","is_source_node":false},{"id":"R506==5","is_source_node":false},{"id":"G17-out","is_source_node":false},{"id":"G3-out","is_source_node":false},{"id":"R507==3","group":"G40","is_source_node":false},{"id":"R507==2","group":"G43","is_source_node":false},{"id":"R507==1","is_source_node":false},{"id":"G40-out","is_source_node":false},{"id":"G23-out","is_source_node":false},{"id":"R407==5-7","group":"G39","is_source_node":true},{"id":"R604==NULL","is_source_node":false},{"id":"G38-out","is_source_node":false},{"id":"G12-out","is_source_node":false},{"id":"R507==NULL","is_source_node":false},{"id":"R403==1","is_source_node":true},{"id":"R508==9-14","group":"G43","is_source_node":false},{"id":"R412==2","group":"G12","is_source_node":false},{"id":"R412==1","group":"G6","is_source_node":false},{"id":"R409>49","is_source_node":false},{"id":"G18-out","is_source_node":false},{"id":"R407==8-9","group":"G34","is_source_node":true},{"id":"R409==10","is_source_node":false},{"id":"R509==NULL","is_source_node":false},{"id":"R412==4","group":"G24","is_source_node":false},{"id":"R412==3","group":"G18","is_source_node":false},{"id":"R506==NULL","is_source_node":false},{"id":"R610==0","is_source_node":false},{"id":"R610==1","is_source_node":false},{"id":"R407==11-14","group":"G38","is_source_node":true},{"id":"R610==2","is_source_node":false},{"id":"R610==8","is_source_node":false},{"id":"R410==1","is_source_node":false},{"id":"R407>49","group":"G35","is_source_node":true},{"id":"R410==2","is_source_node":false},{"id":"R609==NULL","is_source_node":false},{"id":"R610==3","is_source_node":false},{"id":"R410==8","is_source_node":false},{"id":"R410==5","is_source_node":false},{"id":"G34-out","is_source_node":false},{"id":"R409==18-24","is_source_node":false},{"id":"R407==1","group":"G22","is_source_node":true},{"id":"R407==0","group":"G21","is_source_node":true},{"id":"G22-out","is_source_node":false},{"id":"R510==NULL","is_source_node":false},{"id":"G15-out","is_source_node":false},{"id":"R412==NULL","is_source_node":false},{"id":"G6-out","is_source_node":false},{"id":"G11-out","is_source_node":false},{"id":"R609==6","is_source_node":false},{"id":"R609==5","is_source_node":false},{"id":"R609==8","is_source_node":false},{"id":"R609==7","is_source_node":false},{"id":"R609==9","is_source_node":false},{"id":"G26-out","is_source_node":false},{"id":"G30-out","is_source_node":false},{"id":"R609==0","is_source_node":false},{"id":"G43-out","is_source_node":false},{"id":"R609==2","is_source_node":false},{"id":"R609==1","is_source_node":false},{"id":"R609==4","is_source_node":false},{"id":"R609==3","is_source_node":false},{"id":"G19-out","is_source_node":false},{"id":"G35-out","is_source_node":false},{"id":"R407==18-24","group":"G36","is_source_node":true},{"id":"R508==20","is_source_node":false},{"id":"G10-out","is_source_node":false},{"id":"R410==NULL","is_source_node":false},{"id":"R504==1","is_source_node":false},{"id":"R407==2-4","group":"G24","is_source_node":true},{"id":"R504==5","is_source_node":false},{"id":"G20-out","is_source_node":false},{"id":"C11","is_source_node":false},{"id":"C10","is_source_node":false},{"id":"C13","is_source_node":false},{"id":"C12","is_source_node":false},{"id":"R413==NULL","is_source_node":false},{"id":"C15","is_source_node":false},{"id":"C14","is_source_node":false},{"id":"C17","is_source_node":false},{"id":"C16","is_source_node":false},{"id":"G29-out","is_source_node":false},{"id":"C19","is_source_node":false},{"id":"C18","is_source_node":false},{"id":"R508==NULL","is_source_node":false},{"id":"G9-out","is_source_node":false},{"id":"R508==1-4","is_source_node":false},{"id":"C20","is_source_node":false},{"id":"G14-out","is_source_node":false},{"id":"C22","is_source_node":false},{"id":"C21","is_source_node":false},{"id":"C24","is_source_node":false},{"id":"C23","is_source_node":false},{"id":"C26","is_source_node":false},{"id":"C25","is_source_node":false},{"id":"C28","is_source_node":false},{"id":"C27","is_source_node":false},{"id":"C29","is_source_node":false},{"id":"R409==NULL","is_source_node":false},{"id":"G31-out","is_source_node":false},{"id":"C31","is_source_node":false},{"id":"C30","is_source_node":false},{"id":"C33","is_source_node":false},{"id":"C32","is_source_node":false},{"id":"C35","is_source_node":false},{"id":"C34","is_source_node":false},{"id":"G5-out","is_source_node":false},{"id":"G25-out","is_source_node":false},{"id":"C37","is_source_node":false},{"id":"C36","is_source_node":false},{"id":"R508==17","is_source_node":false},{"id":"C39","is_source_node":false},{"id":"R508==16","is_source_node":false},{"id":"C38","is_source_node":false},{"id":"R508==19","is_source_node":false},{"id":"R508==18","is_source_node":false},{"id":"G42-out","is_source_node":false},{"id":"R513==2","is_source_node":false},{"id":"R513==1","is_source_node":false},{"id":"R513==3","is_source_node":false},{"id":"R508==15","is_source_node":false},{"id":"R409==11-14","is_source_node":false},{"id":"C40","is_source_node":false}]} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Style : MobApp Script JS | |
Version : 1.0 | |
Author : Surjith S M | |
URI : https://surjithctly.in/ | |
Copyright © All rights Reserved | |
*/ | |
$(function() { | |
"use strict"; | |
/*----------------------------------- | |
* FIXED MENU - HEADER | |
*-----------------------------------*/ | |
function menuscroll() { | |
var $navmenu = $('.nav-menu'); | |
if ($(window).scrollTop() > 50) { | |
$navmenu.addClass('is-scrolling'); | |
} else { | |
$navmenu.removeClass("is-scrolling"); | |
} | |
} | |
menuscroll(); | |
$(window).on('scroll', function() { | |
menuscroll(); | |
}); | |
/*----------------------------------- | |
* NAVBAR CLOSE ON CLICK | |
*-----------------------------------*/ | |
$('.navbar-nav > li:not(.dropdown) > a').on('click', function() { | |
$('.navbar-collapse').collapse('hide'); | |
}); | |
/* | |
* NAVBAR TOGGLE BG | |
*-----------------*/ | |
var siteNav = $('#navbar'); | |
siteNav.on('show.bs.collapse', function(e) { | |
$(this).parents('.nav-menu').addClass('menu-is-open'); | |
}) | |
siteNav.on('hide.bs.collapse', function(e) { | |
$(this).parents('.nav-menu').removeClass('menu-is-open'); | |
}) | |
/*----------------------------------- | |
* ONE PAGE SCROLLING | |
*-----------------------------------*/ | |
// Select all links with hashes | |
$('a[href*="#"]').not('[href="#"]').not('[href="#0"]').not('[data-toggle="tab"]').on('click', function(event) { | |
// On-page links | |
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { | |
// Figure out element to scroll to | |
var target = $(this.hash); | |
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); | |
// Does a scroll target exist? | |
if (target.length) { | |
// Only prevent default if animation is actually gonna happen | |
event.preventDefault(); | |
$('html, body').animate({ | |
scrollTop: target.offset().top | |
}, 1000, function() { | |
// Callback after animation | |
// Must change focus! | |
var $target = $(target); | |
$target.focus(); | |
if ($target.is(":focus")) { // Checking if the target was focused | |
return false; | |
} else { | |
$target.attr('tabindex', '-1'); // Adding tabindex for elements not focusable | |
$target.focus(); // Set focus again | |
}; | |
}); | |
} | |
} | |
}); | |
/*----------------------------------- | |
* OWL CAROUSEL | |
*-----------------------------------*/ | |
var $testimonialsDiv = $('.testimonials'); | |
if ($testimonialsDiv.length && $.fn.owlCarousel) { | |
$testimonialsDiv.owlCarousel({ | |
items: 1, | |
nav: true, | |
dots: false, | |
navText: ['<span class="ti-arrow-left"></span>', '<span class="ti-arrow-right"></span>'] | |
}); | |
} | |
var $galleryDiv = $('.img-gallery'); | |
if ($galleryDiv.length && $.fn.owlCarousel) { | |
$galleryDiv.owlCarousel({ | |
nav: false, | |
center: true, | |
loop: true, | |
autoplay: true, | |
dots: true, | |
navText: ['<span class="ti-arrow-left"></span>', '<span class="ti-arrow-right"></span>'], | |
responsive: { | |
0: { | |
items: 1 | |
}, | |
768: { | |
items: 3 | |
} | |
} | |
}); | |
} | |
}); /* End Fn */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@charset "UTF-8"; | |
/* | |
Style : MobApp CSS | |
Version : 1.0 | |
Author : Surjith S M | |
URI : https://surjithctly.in/ | |
Copyright © All rights Reserved | |
*/ | |
/*------------------------ | |
[TABLE OF CONTENTS] | |
1. GLOBAL STYLES | |
2. NAVBAR | |
3. HERO | |
4. TABS | |
5. TESTIMONIALS | |
6. IMAGE GALLERY | |
7. PRICING | |
8. CALL TO ACTION | |
9. FOOTER | |
------------------------*/ | |
/* GLOBAL | |
----------------------*/ | |
body { | |
font-family: 'Rubik', sans-serif; | |
position: relative; | |
} | |
a { | |
color: #e38cb7; | |
} | |
a:hover, | |
a:focus { | |
color: #d6619c; | |
} | |
h1 { | |
font-size: 60px; | |
font-weight: 300; | |
letter-spacing: -1px; | |
margin-bottom: 1.5rem; | |
} | |
h2 { | |
font-size: 45px; | |
font-weight: 300; | |
color: #633991; | |
letter-spacing: -1px; | |
margin-bottom: 1rem; | |
} | |
h3 { | |
color: #633991; | |
font-size: 33px; | |
font-weight: 500; | |
} | |
h4 { | |
font-size: 20px; | |
font-weight: 500; | |
color: #633991; | |
} | |
h5 { | |
font-size: 28px; | |
font-weight: 300; | |
color: #633991; | |
margin-bottom: 0.7rem; | |
} | |
p { | |
color: #959094; | |
} | |
p.lead { | |
color: #e38cb7; | |
margin-bottom: 2rem; | |
} | |
.text-primary { | |
color: #e38cb7 !important; | |
} | |
.light-font { | |
font-weight: 300; | |
} | |
.btn { | |
font-size: 12px; | |
font-weight: 400; | |
text-transform: uppercase; | |
padding: 0.375rem 1.35rem; | |
transition: all 0.3s ease; | |
} | |
.btn-outline-light:hover { | |
color: #d6619c; | |
} | |
.btn-primary { | |
border-radius: 3px; | |
background-image: -moz-linear-gradient( 122deg, #e54595 0%, #fd378e 100%); | |
background-image: -webkit-linear-gradient( 122deg, #e54595 0%, #fd378e 100%); | |
background-image: -ms-linear-gradient( 122deg, #e54595 0%, #fd378e 100%); | |
background-image: linear-gradient( 122deg, #e54595 0%, #fd378e 100%); | |
box-shadow: 0px 9px 32px 0px rgba(0, 0, 0, 0.2); | |
font-weight: 500; | |
padding: 0.6rem 2rem; | |
border: 0; | |
} | |
.btn-primary:hover, | |
.btn-primary:focus, | |
.btn-primary:active, | |
.btn-primary:not([disabled]):not(.disabled).active, | |
.btn-primary:not([disabled]):not(.disabled):active, | |
.show>.btn-primary.dropdown-toggle { | |
background-image: linear-gradient( 122deg, #fd378e 0%, #e54595 100%); | |
box-shadow: 0px 9px 32px 0px rgba(0, 0, 0, 0.3); | |
color: #FFF; | |
} | |
.btn-light { | |
border-radius: 3px; | |
background: #FFF; | |
box-shadow: 0px 9px 32px 0px rgba(0, 0, 0, 0.26); | |
font-size: 14px; | |
font-weight: 500; | |
color: #633991; | |
margin: 0.5rem; | |
padding: 0.7rem 1.6rem; | |
line-height: 1.8; | |
} | |
.btn-group-lg>.btn, | |
.btn-lg { | |
padding: 0.8rem 1rem; | |
font-size: 15px; | |
} | |
.light-bg { | |
background-color: #faf6fb; | |
} | |
.section { | |
padding: 80px 0; | |
} | |
.section-title { | |
text-align: center; | |
margin-bottom: 3rem; | |
} | |
.section-title small { | |
color: #998a9b; | |
} | |
@media (max-width:767px) { | |
h1 { | |
font-size: 40px; | |
} | |
h2 { | |
font-size: 30px; | |
} | |
} | |
/* NAVBAR | |
----------------------*/ | |
.nav-menu { | |
padding: 1rem 0; | |
transition: all 0.3s ease; | |
} | |
.nav-menu.is-scrolling, | |
.nav-menu.menu-is-open { | |
background-color: rgb(74, 13, 143); | |
background: -moz-linear-gradient(135deg, rgb(74, 13, 143) 0%, rgb(250, 42, 143) 100%); | |
background: -webkit-linear-gradient(135deg, rgb(74, 13, 143) 0%, rgb(250, 42, 143) 100%); | |
background: linear-gradient(135deg, rgb(74, 13, 143) 0%, rgb(250, 42, 143) 100%); | |
-webkit-box-shadow: 0px 5px 23px 0px rgba(0, 0, 0, 0.1); | |
-moz-box-shadow: 0px 5px 23px 0px rgba(0, 0, 0, 0.1); | |
box-shadow: 0px 5px 23px 0px rgba(0, 0, 0, 0.1); | |
} | |
.nav-menu.is-scrolling { | |
padding: 0; | |
} | |
.navbar-nav .nav-link { | |
position: relative; | |
} | |
@media (min-width: 992px) { | |
.navbar-expand-lg .navbar-nav .nav-link { | |
padding-right: 1rem; | |
padding-left: 1rem; | |
font-size: 14px; | |
} | |
.navbar-nav>.nav-item>.nav-link.active:after { | |
content: ""; | |
border-bottom: 2px solid #cd99d4; | |
left: 1rem; | |
right: 1rem; | |
bottom: 5px; | |
height: 1px; | |
position: absolute; | |
} | |
} | |
@media (max-width:991px) { | |
.navbar-nav.is-scrolling { | |
padding-bottom: 1rem; | |
} | |
.navbar-nav .nav-item { | |
text-align: center; | |
} | |
} | |
/* HERO | |
----------------------*/ | |
header { | |
padding: 100px 0 0; | |
text-align: center; | |
color: #FFF; | |
} | |
.bg-gradient { | |
background-image: -moz-linear-gradient( 135deg, rgba(60, 8, 118, 0.8) 0%, rgba(250, 0, 118, 0.8) 100%); | |
background-image: -webkit-linear-gradient( 135deg, rgba(60, 8, 118, 0.8) 0%, rgba(250, 0, 118, 0.8) 100%); | |
background-image: -ms-linear-gradient( 135deg, rgba(60, 8, 118, 0.8) 0%, rgba(250, 0, 118, 0.8) 100%); | |
background-image: linear-gradient( 135deg, rgba(60, 8, 118, 0.8) 0%, rgba(250, 0, 118, 0.8) 100%); | |
} | |
.tagline { | |
font-size: 23px; | |
font-weight: 300; | |
color: #ffb8f6; | |
max-width: 800px; | |
margin: 0 auto; | |
} | |
.img-holder { | |
height: 0; | |
padding-bottom: 33%; | |
overflow: hidden; | |
} | |
@media (max-width:1200px) { | |
.img-holder { | |
padding-bottom: 50%; | |
} | |
} | |
@media (max-width:767px) { | |
.tagline { | |
font-size: 17px; | |
} | |
.img-holder { | |
padding-bottom: 100%; | |
} | |
} | |
/* FEATURES | |
----------------------*/ | |
.gradient-fill:before { | |
color: #fc73b4; | |
background: -moz-linear-gradient(top, #9477b4 0%, #fc73b4 100%); | |
background: -webkit-linear-gradient(top, #9477b4 0%, #fc73b4 100%); | |
background: linear-gradient(to bottom, #9477b4 0%, #fc73b4 100%); | |
-webkit-background-clip: text; | |
background-clip: text; | |
-webkit-text-fill-color: transparent; | |
} | |
.card.features { | |
border: 0; | |
border-radius: 3px; | |
box-shadow: 0px 5px 7px 0px rgba(0, 0, 0, 0.04); | |
transition: all 0.3s ease; | |
} | |
@media (max-width:991px) { | |
.card.features { | |
margin-bottom: 2rem; | |
} | |
[class^="col-"]:last-child .card.features { | |
margin-bottom: 0; | |
} | |
} | |
.card.features:before { | |
content: ""; | |
position: absolute; | |
width: 3px; | |
color: #fc73b4; | |
background: -moz-linear-gradient(top, #9477b4 0%, #fc73b4 100%); | |
background: -webkit-linear-gradient(top, #9477b4 0%, #fc73b4 100%); | |
background: linear-gradient(to bottom, #9477b4 0%, #fc73b4 100%); | |
top: 0; | |
bottom: 0; | |
left: 0; | |
} | |
.card-text { | |
font-size: 14px; | |
} | |
.card.features:hover { | |
transform: translateY(-3px); | |
-moz-box-shadow: 0px 5px 30px 0px rgba(0, 0, 0, 0.08); | |
-webkit-box-shadow: 0px 5px 30px 0px rgba(0, 0, 0, 0.08); | |
box-shadow: 0px 5px 30px 0px rgba(0, 0, 0, 0.08); | |
} | |
.box-icon { | |
box-shadow: 0px 0px 43px 0px rgba(0, 0, 0, 0.14); | |
padding: 10px; | |
width: 70px; | |
border-radius: 3px; | |
margin-bottom: 1.5rem; | |
background-color: #FFF; | |
} | |
.circle-icon { | |
box-shadow: 0px 9px 32px 0px rgba(0, 0, 0, 0.07); | |
padding: 10px; | |
width: 100px; | |
height: 100px; | |
border-radius: 50%; | |
margin-bottom: 1.5rem; | |
background-color: #FFF; | |
color: #f5378e; | |
font-size: 48px; | |
text-align: center; | |
line-height: 80px; | |
font-weight: 300; | |
transition: all 0.3s ease; | |
} | |
@media (max-width:992px) { | |
.circle-icon { | |
width: 70px; | |
height: 70px; | |
font-size: 28px; | |
line-height: 50px; | |
} | |
} | |
.ui-steps li:hover .circle-icon { | |
background-image: -moz-linear-gradient( 122deg, #e6388e 0%, #fb378e 100%); | |
background-image: -webkit-linear-gradient( 122deg, #e6388e 0%, #fb378e 100%); | |
background-image: -ms-linear-gradient( 122deg, #e6388e 0%, #fb378e 100%); | |
background-image: linear-gradient( 122deg, #e6388e 0%, #fb378e 100%); | |
box-shadow: 0px 9px 32px 0px rgba(0, 0, 0, 0.09); | |
color: #FFF; | |
} | |
.ui-steps li { | |
padding: 15px 0; | |
} | |
.ui-steps li:not(:last-child) { | |
border-bottom: 1px solid #f8e3f0; | |
} | |
.perspective-phone { | |
position: relative; | |
z-index: -1; | |
} | |
@media (min-width:992px) { | |
.perspective-phone { | |
margin-top: -150px; | |
} | |
} | |
/* TABS | |
----------------------*/ | |
.tab-content { | |
border-bottom-right-radius: 3px; | |
border-bottom-left-radius: 3px; | |
background-color: #FFF; | |
box-shadow: 0px 5px 7px 0px rgba(0, 0, 0, 0.04); | |
padding: 3rem; | |
} | |
@media (max-width:992px) { | |
.tab-content { | |
padding: 1.5rem; | |
} | |
} | |
.tab-content p { | |
line-height: 1.8; | |
} | |
.tab-content h2 { | |
margin-bottom: 0.5rem; | |
} | |
.nav-tabs { | |
border-bottom: 0; | |
} | |
.nav-tabs .nav-item .nav-link, | |
.nav-tabs .nav-link:focus, | |
.nav-tabs .nav-link:hover { | |
padding: 1rem 1rem; | |
border-color: #faf6fb #faf6fb #FFF; | |
font-size: 19px; | |
color: #b5a4c8; | |
background: #f5eff7; | |
} | |
.nav-tabs .nav-link.active { | |
background: #FFF; | |
border-top-width: 3px; | |
border-color: #ce75b4 #faf6fb #FFF; | |
color: #633991; | |
} | |
/* TESTIMONIALS | |
----------------------*/ | |
.owl-carousel .owl-item img.client-img { | |
width: 110px; | |
margin: 30px auto; | |
border-radius: 50%; | |
box-shadow: 0px 9px 32px 0px rgba(0, 0, 0, 0.07); | |
} | |
.testimonials-single { | |
text-align: center; | |
max-width: 80%; | |
margin: 0 auto; | |
} | |
.blockquote { | |
color: #7a767a; | |
font-weight: 300; | |
} | |
.owl-next.disabled, | |
.owl-prev.disabled { | |
opacity: 0.5; | |
} | |
.owl-prev, | |
.owl-next { | |
position: absolute; | |
top: 50%; | |
transform: translateY(-50%); | |
} | |
.owl-prev { | |
left: 0; | |
} | |
.owl-next { | |
right: 0; | |
} | |
.owl-theme .owl-nav.disabled+.owl-dots { | |
margin-top: 60px; | |
} | |
.owl-theme .owl-dots .owl-dot span { | |
background: #e7d9eb; | |
width: 35px; | |
height: 8px; | |
border-radius: 10px; | |
transition: all 0.3s ease-in; | |
} | |
.owl-theme .owl-dots .owl-dot:hover span { | |
background: #ff487e; | |
} | |
.owl-theme .owl-dots .owl-dot.active span { | |
background: #ff487e; | |
box-shadow: 0px 9px 32px 0px rgba(0, 0, 0, 0.07); | |
} | |
/* IMAGE GALLERY | |
----------------------*/ | |
.img-gallery .owl-item { | |
box-shadow: 0px 9px 32px 0px rgba(0, 0, 0, 0.07); | |
transform: scale(0.8); | |
transition: all 0.3s ease-in; | |
} | |
.img-gallery .owl-item.center { | |
transform: scale(1); | |
} | |
/* PRICING | |
----------------------*/ | |
@media (max-width:992px) { | |
.card-deck { | |
-ms-flex-direction: column; | |
flex-direction: column; | |
} | |
.card-deck .card { | |
margin-bottom: 15px; | |
} | |
} | |
.card.pricing { | |
border: 1px solid #f1eef1; | |
} | |
.card.pricing.popular { | |
border-top-width: 3px; | |
border-color: #ce75b4 #faf6fb #FFF; | |
box-shadow: 0px 12px 59px 0px rgba(36, 7, 31, 0.11); | |
color: #633991; | |
} | |
.card.pricing .card-head { | |
text-align: center; | |
padding: 40px 0 20px; | |
} | |
.card.pricing .card-head .price { | |
display: block; | |
font-size: 45px; | |
font-weight: 300; | |
color: #633991; | |
} | |
.card.pricing .card-head .price sub { | |
bottom: 0; | |
font-size: 55%; | |
} | |
.card.pricing .list-group-item { | |
border: 0; | |
text-align: center; | |
color: #959094; | |
padding: 1.05rem 1.25rem; | |
} | |
.card.pricing .list-group-item del { | |
color: #d9d3d8; | |
} | |
.card.pricing .card-body { | |
padding: 1.75rem; | |
} | |
/* CALL TO ACTION | |
----------------------*/ | |
.call-to-action { | |
text-align: center; | |
color: #FFF; | |
margin: 3rem 0; | |
} | |
.call-to-action .box-icon { | |
margin-left: auto; | |
margin-right: auto; | |
border-radius: 5px; | |
transform: scale(0.85); | |
margin-bottom: 2.5rem; | |
} | |
.call-to-action h2 { | |
color: #FFF; | |
} | |
.call-to-action .tagline { | |
font-size: 16px; | |
font-weight: 300; | |
color: #ffb8f6; | |
max-width: 650px; | |
margin: 0 auto; | |
} | |
.btn-light img { | |
margin-right: 0.4rem; | |
vertical-align: text-bottom; | |
} | |
/* FOOTER | |
----------------------*/ | |
.social-icons { | |
text-align: right; | |
} | |
.social-icons a { | |
background-color: #FFF; | |
box-shadow: 0px 0px 21px 0px rgba(0, 0, 0, 0.05); | |
width: 50px; | |
height: 50px; | |
display: inline-block; | |
text-align: center; | |
line-height: 50px; | |
margin: 0 0.3rem; | |
border-radius: 5px; | |
color: #f4c9e2; | |
transition: all 0.3s ease; | |
} | |
.social-icons a:hover { | |
text-decoration: none; | |
color: #e38cb7; | |
} | |
@media (max-width:991px) { | |
.social-icons { | |
text-align: center; | |
margin-top: 2rem; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment