LoginSignup
14
8

More than 3 years have passed since last update.

プリザンターにオンラインチュートリアルを実装する

Last updated at Posted at 2020-12-05

愛用しているプリザンターを盛り上げたいと思い、Qiita初投稿です。
どうぞお付き合いください。

はじめに

「プリザンターでシステムを作ってもなかなか使ってくれない」
「使い方がわからないと言われたが、マニュアルを作るのも手間。そもそも読んでくれる?」
「皆同じ所でつまづくので、実際の画面にチュートリアルを置きたい」
なんて思うことありますよね?

Webシステムにオンラインチュートリアルを組み込む「intro.js」をプリザンターに実装してみました。
キャプチャ1.PNGキャプチャ2.PNG

「使い方」ボタンをを設置する

  • 「テーブルの管理」-「スクリプト」タブで「新規作成」ボタンをクリックします。
  • 「スクリプト」欄に下記コードを入力します。
// ボタン作成
var button= '<button id="tutorial" class="button button-icon" type="button" data-icon="ui-icon-lightbulb">使い方</button>';

// ウィンドウ下部ボタン行の左端にボタンを追加
var element = document.getElementById("MainCommands");
element.insertAdjacentHTML('afterbegin', button);
  • 「出力先」欄は「一覧」にチェックを付けます。

キャプチャ3.PNG

これで「使い方」ボタンが追加されます。

キャプチャ4.PNG

スクリプトでintro.jsを読み込む

スクリプトに下記コードを追加します。

// intro.js読み込み
var introjs = document.createElement("script");
introjs.src = "https://unpkg.com/intro.js/minified/intro.min.js";
document.body.appendChild(introjs);

// css読み込み
var link = document.createElement('link');
link.href = 'https://unpkg.com/intro.js/minified/introjs.min.css';
link.rel = 'stylesheet';
link.type = 'text/css';
var h = document.getElementsByTagName('head')[0];
h.appendChild(link);

javascriptとCSSのURLは「intro.js」に記載されています。

チュートリアルを記述する

チュートリアルは以下の様に記述します。
elementで指定した要素から吹き出しでチュートリアルが表示されます。
elementを省略すると画面中央にチュートリアルが表示されます。

steps: [
    {element: 要素1, intro: チュートリアル1},
    {elemtnt: 要素2, intro: チュートリアル2},
    ...
]

「使い方」ボタンでチュートリアルが始まるようにします。

window.onload = function(){
    var intro = introJs();
    intro.setOptions({
        // ==== ここで説明を記述する ====
        steps: [
            {intro: 'チュートリアルにようこそ。<br>このチュートリアルはプリザンターの「スクリプト」で作成しています。'},
            {element: '#tutorial', intro: 'このチュートリアルは初回起動時に表示されます。<br>あとで見たくなったら「使い方」をクリックします。'},
            {element: document.querySelector('li'), intro: '「新規作成」で新しいレコードを登録します。<br>登録の仕方は「新規作成」画面の「使い方」ボタンをクリックして確認してください。'},
            {element: document.querySelectorAll('tr')[1], intro: '登録したレコードです。<br>クリックすると編集画面に入り、レコードを編集することができます。<br>編集の仕方は編集画面の「使い方」ボタンをクリックして確認してください。'},
            {element: document.querySelector('thead'), intro: '各列のタイトルにマウスカーソルを合わせると並び順メニュー(昇順/降順)が表示されます。'},
            {element: '#ViewFilters', intro: '各列に条件をセットして絞り込むことができます。'},
        ],
        'nextLabel': '次へ →',
        'prevLabel': '← 戻る',
        'doneLabel': '完了',
    });

    // ボタンクリック時の処理
    document.getElementById("tutorial").onclick = function() {
        // チュートリアル実行
        intro.start();
    }
}

補足)初めて画面を開いた時に自動的にチュートリアルを開始する

js-cookie」を使って、初めて画面を開いた時に自動的にチュートリアルを開始するようにしました。

// ボタン作成
var button = '<button id="tutorial" class="button button-icon" type="button" data-icon="ui-icon-lightbulb">使い方</button>';

// ウィンドウ下部ボタン行の左端にボタンを追加
var element = document.getElementById("MainCommands");
element.insertAdjacentHTML('afterbegin', button);

// intro.js読み込み
var introjs = document.createElement("script");
introjs.src = "https://unpkg.com/intro.js/minified/intro.min.js";
document.body.appendChild(introjs);

// css読み込み
var link = document.createElement('link');
link.href = 'https://unpkg.com/intro.js/minified/introjs.min.css';
link.rel = 'stylesheet';
link.type = 'text/css';
var h = document.getElementsByTagName('head')[0];
h.appendChild(link);

// js-cookie読み込み
var jscookie = document.createElement("script");
jscookie.src = "https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js";
document.body.appendChild(jscookie);

window.onload = function(){
    var intro = introJs();
    var page = 'pleasanter-287135-list';
    intro.setOptions({
        // ==== ここで説明を記述する ====
        steps: [
            {intro: 'チュートリアルにようこそ。<br>このチュートリアルはプリザンターの「スクリプト」で作成しています。'},
            {element: '#tutorial', intro: 'このチュートリアルは初回起動時に表示されます。<br>あとで見たくなったら「使い方」をクリックします。'},
            {element: document.querySelector('li'), intro: '「新規作成」で新しいレコードを登録します。<br>登録の仕方は「新規作成」画面の「使い方」ボタンをクリックして確認してください。'},
            {element: document.querySelectorAll('tr')[1], intro: '登録したレコードです。<br>クリックすると編集画面に入り、レコードを編集することができます。<br>編集の仕方は編集画面の「使い方」ボタンをクリックして確認してください。'},
            {element: document.querySelector('thead'), intro: '各列のタイトルにマウスカーソルを合わせると並び順メニュー(昇順/降順)が表示されます。'},
            {element: '#ViewFilters', intro: '各列に条件をセットして絞り込むことができます。'},
        ],
        'nextLabel': '次へ →',
        'prevLabel': '← 戻る',
        'doneLabel': '完了',
    });

    // ボタンクリック時の処理
    document.getElementById("tutorial").onclick = function() {
        // チュートリアル実行
        intro.start();
    }

    // 初回表示の場合
    if(Cookies.get(page) != 'viewed'){
        intro.start().onexit(function(){
            // 初回表示完了フラグをcookieに格納する
            Cookies.set(page, 'viewed', { expires: 365 });
        });
    }
}

まとめ

オンラインチュートリアルで、ユーザにも、システム製作者にもやさしいシステムになりました。

最後に、今年も残りわずか。皆さま良いお年をお迎えください!

14
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8