<!--
 ▄▄▄       ██▓███   ▄▄▄       ▄████▄   ██░ ██ ▓█████     ██▓  ▄████  ███▄    █  ██▓▄▄▄█████▓▓█████
▒████▄    ▓██░  ██▒▒████▄    ▒██▀ ▀█  ▓██░ ██▒▓█   ▀    ▓██▒ ██▒ ▀█▒ ██ ▀█   █ ▓██▒▓  ██▒ ▓▒▓█   ▀
▒██  ▀█▄  ▓██░ ██▓▒▒██  ▀█▄  ▒▓█    ▄ ▒██▀▀██░▒███      ▒██▒▒██░▄▄▄░▓██  ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█  ▄    ░██░░▓█  ██▓▓██▒  ▐▌██▒░██░░ ▓██▓ ░ ▒▓█  ▄
 ▓█   ▓██▒▒██▒ ░  ░ ▓█   ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒   ░██░░▒▓███▀▒▒██░   ▓██░░██░  ▒██▒ ░ ░▒████▒
 ▒▒   ▓▒█░▒▓▒░ ░  ░ ▒▒   ▓▒█░░ ░▒ ▒  ░ ▒ ░░▒░▒░░ ▒░ ░   ░▓   ░▒   ▒ ░ ▒░   ▒ ▒ ░▓    ▒ ░░   ░░ ▒░ ░
  ▒   ▒▒ ░░▒ ░       ▒   ▒▒ ░  ░  ▒    ▒ ░▒░ ░ ░ ░  ░    ▒ ░  ░   ░ ░ ░░   ░ ▒░ ▒ ░    ░     ░ ░  ░
  ░   ▒   ░░         ░   ▒   ░         ░  ░░ ░   ░       ▒ ░░ ░   ░    ░   ░ ░  ▒ ░  ░         ░
      ░  ░               ░  ░░ ░       ░  ░  ░   ░  ░    ░        ░          ░  ░              ░  ░
-->

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="canonical" href="https://ignite.apache.org/screencasts.html"/>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
    <meta http-equiv="Pragma" content="no-cache"/>
    <meta http-equiv="Expires" content="0"/>
    <title>Screencasts - Apache Ignite</title>
    <!--#include virtual="/includes/styles.html" -->
</head>
<body>
<!--#include virtual="/includes/header.html" -->
<article>
    <header>
        <div class="container">

            <h1>Apache Ignite <strong>Video Tutorials</strong></h1>
        </div>
    </header>
    <div class="container" id="screencasts">

        <p>
            Apache Ignite is a feature-rich in-memory computing platform that can power many use cases.
            Explore our collection of videos featuring presentations of Ignite community members as well as short
            screencasts.
        </p>

        <h2>Apache Ignite Essentials</h2>
        <div class="row">
            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#sql-db-modal"
                   data-title="In-Memory Computing Essentials"
                   data-video-url="https://www.youtube.com/embed/UeQKuAQaMNU" data-toggle="modal">
                    <p>In-Memory Computing <br/>Essentials </p>
                    <span>Webinar Recording</span>
                </a>

            </div>

            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#data-grid-modal" data-toggle="modal"
                   data-title="Distributed Computing With Apache Ignite&reg;"
                   data-video-url="https://www.youtube.com/embed/hrnrsIkCnI0">

                    <p>DISTRIBUTED COMPUTING <br/> WITH APACHE IGNITE</p>
                    <span>Webinar Recording</span>
                </a>

            </div>

        </div>


        <h2>Ignite Web Console - Automatic RDBMS Integration</h2>
        <p>This tutorial is divided in to 3 parts- Part 1 shows how to automatically import schema metadata from an
            RDBMS;
            Part 2 shows how to start an Ignite cluster and load data from the database; Part 3 shows how to use Ignite
            web console to run sql queries on distributed data stored across the cluster. </p>

        <div class="row">
            <div class="col-md-4">


                <a class="video" data-target="#videoModal" href="#database-import-modal" data-toggle="modal"
                   data-title="Ignite Web Console - Automatic RDBMS Integration - Part 1"
                   data-video-url="https://www.youtube.com/embed/SJ6h55VhUBI">

                    <p>Part 1 <br/>Database Model Import</p>
                    <span>03:50</span>
                </a>

            </div>

            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#data-loading-modal" data-toggle="modal"
                   data-title="Ignite Web Console - Automatic RDBMS Integration - Part 2"
                   data-video-url="https://www.youtube.com/embed/V7O7Nh0btO4">

                    <p>Part 2 <br/>Data Loading</p>
                    <span>03:25</span>
                </a>

            </div>

            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#webconsole-sql-modal" data-toggle="modal"
                   data-title="Ignite Web Console - Automatic RDBMS Integration - Part 3"
                   data-video-url="https://www.youtube.com/embed/XBtI2Z01kAA">

                    <p>Part 3 <br/>Running SQL Queries</p>
                    <span>03:27</span>
                </a>
            </div>


        </div>


        <div aria-hidden="true" aria-labelledby="videoModal" class="modal fade" id="videoModal" role="dialog"
             tabindex="-1">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <button aria-label="Close" class="close" data-dismiss="modal" type="button"><span
                                aria-hidden="true">&times;</span></button>
                        <h4 class="modal-title"></h4>
                    </div>

                    <div class="modal-body">
                        <iframe id="data-grid" src="" frameborder="0" allowfullscreen=""></iframe>
                    </div>

                </div>
            </div>
        </div>

    </div>

</article>
<!--#include virtual="/includes/footer.html" -->

<!--#include virtual="/includes/scripts.html" -->

<script type="text/javascript">
    jQuery('#videoModal').on('show.bs.modal', function (event) {
        console.log(jQuery(event.relatedTarget));

        const title = jQuery(event.relatedTarget).data('title');
        jQuery(this).find('h4').text(title);

        const video = jQuery(event.relatedTarget).data('video-url');
        jQuery(this).find('iframe').attr('src', video);
    });

</script>
</body>
</html>
