OutsystemsでのJavaScriptの活用

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回は、ローコード開発をテーマにしている第2ユニットです

今回のテーマ:『OutsystemsでのJavaScriptの活用』

我々第2ユニットでは日頃Outsystemsを利用してローコード開発を行っております。
Outsystemsでは、なるべくコーディングすることなく部品のドラッグ&ドロップなどで直感的に開発できるようにツールが用意されています。

しかし、UI部分などの細かいところを思った通りに実装したい場合、Outsystemsで用意されているプロパティだけでは賄えない場合もあります。
そんなときに、JavaScriptを利用することで自分の理想通りの実装が可能になるかもしれません。今回はそんな一例をご紹介します。

今回やりたいこと

今回はOutsystemsでのDataGridのUIをJavaScriptで変更していきたいと思います。
具体的には、下記の内容をご紹介します。
・DataGridのデフォルト設定である1行おきに色付けされるのを解除する
・DataGridの特定の列を好きな色で色付けする

<参考>DataGridの使い方
How to use the OutSystems Data Grid

DataGridのデフォルト色付け設定を解除する

はじめに、DataGridがデフォルトで設定している、グリッドの1行おきの色付けを変更していきます。

通常何も設定をしていないと下のように、グリッドの行が1行おきに自動で色付けされてしまいます。
こちらをJavaScriptを使って変更していきます。

色が薄くてわかりづらいですが、2,4行目がグレーに色付けされていることがわかります

まず、グリッドがある画面のエレメントにDataGrid表示用のClientAction(DataGridOnInitialize)を用意し、GridWidgetIdというInputパラメータを追加します。

次にJavaScriptを適用させたいDataGridのプロパティのEvent項目で、先ほど作成したClientActionをHandlerに設定します。
このときInputパラメータで追加したGridWidgetIdも一緒に設定します。

最後に作成したClientAction内で下記のようなJavaScriptを設定します。
(JavaScriptで変数定義する際にInputパラメータのGridWidgetIdを指定しています。)

//画面上で作成したGrid情報を取得
var grid = GridAPI.GridManager.GetGridById($parameters.GridWidgetId).provider;

//一行ごとの色付けを廃止する
grid.alternatingRowStep = 0;
1行おきにグレーに色付けされていた設定を解除することができました

DataGridの指定列のみ色付けをする

次にグリッドの特定列のみJavaScriptで色付けをしていきます。
先ほどのグリッドのName列とAge列のみグレーで色付けし視覚的に編集不可の列だということをわかりやすくしていきたいと思います。

今回は先にグリッド全体をグレーで色付けをし、編集可能のEmail列のみ白色にするといった方法で実装していきます。

まず、画面のStyle Sheetに下記のようなCSSを記載します。

.wj-cell{
    background: lightgray;
}

.rowcolor{
    background-color: white;
}

次にClientAction内のJavaScriptに下記のようなコードを追記すれば完了となります。

//取得したGridに対してフォーマットを設定
grid.itemFormatter = function(panel,r,c,cell){
    //Email列(3列目)を白で色付けする
  if(c === 2 ){
    //クラス定義をセルに追加
        wijmo.addClass(cell,'rowcolor');
    }
};
指定の列のみ色付けすることができました!

まとめ

このように、OutSystemsでは様々なプロパティが用意されていますが、JavaScriptを使うことによって自分の思うように実装できることがわかりました。
まさに痒い所に手が届くようで、開発の幅が広がる感じがしました。

皆さんもOutsystemsのプロパティだけではなかなか上手く実現できない場合に、JavaScriptの利用を検討されてみてはいかがでしょうか。

第2ユニットではこれからもOutSystemsなどのローコードツールを使った技術者ブログを展開していきますのでお楽しみに。

技術者ブログ:(OutSystems)Advanced Excelを使ったExcel出力

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回は、ローコード開発をテーマにしている第2ユニットです。

今回のテーマ:『Advanced Excelを使ったExcel出力』

前回はBootStrapを使用してExcelファイルからOutSystemのEntityへデータ取り込みを行う手順をご紹介しましたが、
今回はOutSystems内にある画面データをExcelに出力する方法をご紹介します。

Advanced Excelとは?

OutSystemsに搭載されているForgeコンポーネントのひとつで、
Excelファイルの読み込み・出力、書式設定、グラフ作成等もできるツールです。

Advanced Excel のインストール

Service Studioを起動しBrowse Forgeより”Advanced Excel”で検索してインストールを行います。

モジュールへの参照追加

利用したいモジュールを開き、Manage Dependencies(CTRL+Q)よりAdvanced Excelの要素を必要な分選択しApplyボタンをクリックします。
(今回はWorkbook_Open_BinaryData、WorkSheet_Select、Cell_Write、Workbook_Get_BinaryData、Workbook_Closeを選択しました)

各要素の説明は以下の通りです。

・Workbook_Open_BinaryData …BinaryData型でResource内に配置したExcelを指定しワークブックを開きます

・WorkSheet_Select …ワークブック内のシートを指定します

・Cell_Write…セルを指定し値を書き込みます

・Workbook_Get_BinaryData…ダウンロード用にBinaryData型でExcelファイルデータを取得します

・Workbook_Close…作成したExcelファイルをメモリから解放します

出力用のExcelテンプレートを配置

今回は以下のようなテスト用メンバー表のExcelテンプレートにデータを出力していきます。

モジュールのDataタブ内にあるResourceに用意したテンプレートをインポートします。

Excel出力用のSever Actionの作成

今回はメンバー表とExcel出力用に出力ボタンが表示されている画面を作成しました。

以下のようなExcel出力用のSever Actionを作成します。

各アクションのプロパティは以下の通りです。

・Workbook_Open_BinaryData…Action>BinaryDataにResourceで配置したExcelテンプレートファイルを選択します。

・WorkSheet_Select…Action内でWorkbookを指定、Workbook内のシートの指定をindexかシート名で選択できます。

・Cell_Write…CellRow/CellColumnにそれぞれ出力するセルの行/列番号を、CellValue/CellTypeに出力内容/タイプを入力します。

・Workbook_Get_BinaryData…取得するWorkbookを選択します。

・Workbook_Close…閉じるWorkbookを選択します。

画面上のボタンが押下されるとメンバー表が自動で出力されるようになりました。

注意事項

・Workbook_Closeは忘れずに
OutSystemsドキュメントでは、Excelファイル操作が終了したら必ずCloseするようにとあります。OutSystemsでは自動的にメモリを開放する仕組みがないので、操作が終了したらWorkbook_Closeをしてメモリを開放するようにしてください。

・シート番号やExcel行/列番号は1始まり
WorkSheet_Select でシート番号を指定したり、Cell_Writeで行/列番号を指定したりする際に起点のシート番号や行/列番号は0ではなく1になりますのでご注意ください。

まとめ

今回はAdvanced Excelを使ってOutSystemsからExcelファイルを出力する方法をご紹介いたしました。
前回のBootStrapに加えて、Outsystems上で取り扱っているデータを外部出力したい場面で活用できる機能かと思います。
第2ユニットではこれからもOutSystemsなどのローコードツールを使った技術者ブログを展開していきますのでお楽しみに。

『HELLO WORLD』と『デ・ジ・キャラット』のコラボが決定!!

前回のブログ記事で『HELLO WORLD』と『とあるキャラクター』とのコラボレーションを検討中!と報告させていただきましたが、
なんと今回『HELLO WORLD』と『デ・ジ・キャラット』のコラボが正式に決定いたしました!!

『デ・ジ・キャラット』コラボ専用ページ

【『デ・ジ・キャラット』について】

『デ・ジ・キャラット』とは、1998年に誕生したブロッコリーとブロッコリー直営店舗「ゲーマーズ」のマスコットキャラクターです。
デ・ジ・キャラット星の王女でもあるデ・ジ・キャラット(通称:でじこ)は、大女優になるため地球にやってきます。猫耳帽子にメイド服という愛らしい外見とはうらはらに、毒のある性格と、語尾に「にょ」をつけて話す口調が特徴です。


その誕生以降、着実にファンを増やしていきテレビCMやTVアニメーションの放送をきっかけに一気にブレイクしました。
その後も映像のみならず、2003年横浜アリーナで開催されたコンサートイベントでは8500人を動員するなど多方面のメディアで活躍中です。
20年以上の歴史があり、萌えキャラの草分けともいうべき伝説的なキャラクターです。

<デ・ジ・キャラット>
公式ホームページ: https://www.broccoli.co.jp/dejiko/
<株式会社ブロッコリー>
公式ホームページ: https://www.broccoli.co.jp/
<株式会社ブシロード>
公式ホームページ: https://bushiroad.com/
版権表記    : (C)Bushiroad (C)BROCCOLI Illustration:Koge-Donbo*

【ライセンス料フリー企画「でじこたちがみんなのビジネスを盛り上げるにょ!」とは?】

「萌え文化」の草分け的存在である『デ・ジ・キャラット』のIPを用いて、企業・店舗・自治体を応援するため、2020年12月1日よりライセンス料フリーにてイラストを利用したい団体・ライセンシーを募集した、株式会社ブシロードによる期間限定企画です。
この企画により今回の『HELLO WORLD』と『デ・ジ・キャラット』のコラボが実現しました。

【今回のコラボについて】

今回のコラボでは『HELLO WORLD』のカードデザインはもちろん、パッケージや取扱説明書の中にも『デ・ジ・キャラット』の人気キャラクターたちが登場します!!

『デ・ジ・キャラット』コラボデザイン版は2021年8月販売予定です。

版権表記:©Bushiroad ©BROCCOLI Illustration:Koge-Donbo*

【クラウドファンディング実施中!!】

株式会社ダンデライオンズでは現在『HELLO WORLD』のクラウドファンディングを実施しております。※ 5/31(月)まで

『デ・ジ・キャラット』コラボデザインの製品版はもちろんのこと、『HELLO WORLD』アプリ版やWebサイト制作サービスなど様々なリターンもご用意しております。

クラウドファンディングページ

募集終了まで残りわずかとなってしまいましたが、ご興味のある方はぜひご覧ください!!

社員紹介(11)

ご覧いただきありがとうございます。
この度、社員紹介させていただきます「じゅんぺー」です。

肩書

「ローコード開発」をテーマにしている第2ユニットに所属しています。

経歴

文系の大学を卒業後、営業の仕事を10年近くやってまいりました。
そこから、何の経験もありませんでしたが以前から興味のあったこの業界に飛び込みました。

現在の業務内容

社内での研修を終え、現在は客先に常駐させていただき開発案件に携わっております。
日々新しい知識や技術が習得でき、大変ではありますが先輩方の優しいサポートもあり充実した日々を送っています。

自己PR

わが家の癒しです。(笑)

小さな頃から家庭に犬がいる環境で育ったので、完全な犬派です。
仕事から帰ったら、しっぽを振って玄関まで迎えに来てくれるので一瞬で疲れが吹っ飛びます。
休みの日には2匹と散歩に出かけるのが楽しみのひとつで、最近では車に乗せて一緒にドライブに出かけたりします。

またね!

次回の社員紹介もお楽しみに!