2014年3月24日月曜日

ScriptMakerPS.fmx|FileMakerのフィールドに記述した「PowerShell」を実行し、戻り値を取得。

ファイルメーカー プラグイン BETAテスト開始! FileMakerのフィールドに記述した「PowerShell」を実行し、戻り値を取得。
マニュアルがまだありません。サンプルファイル有!

https://sites.google.com/site/scriptmakerps/

2013年7月2日火曜日

FullCalendar on FileMaker|FileMakerにリッチなカレンダーインターフェイスを表示 02

FileMakerのスクリプトでイベントデータを FullCalendar に表示し、月の移動を行う。

FullCalendar 用のJSONデータをFileMakerのスクリプトで育成し、グローバル変数 $$EVENT に 入れる。

FullCalendar は、
$('#calendar').fullCalendar( 'gotoDate', 2013 , 12-1 );
と記述すると、月の移動ができるので これもFileMakerで育成し $$GOTO に入れる。

WEBビューアの記述(fullcalendar_fm.fmp12)
"data:text/html;charset=utf-8," & 

"
<!DOCTYPE html>
<html>
<head>

<style type='text/css'>"
 & SYSTEM::fullcalendar.css
 & "@media print {"
 & SYSTEM::fullcalendar.print.css
 & "}"
 & "</style>

<script>" 
 & SYSTEM::jquery.js
 & SYSTEM::jquery.ui.js 
 & SYSTEM::fullcalendar.min.js
 & "</script>

<script>

 $(document).ready(function() {

  var hi=$('html').height();
  

  $('#calendar').fullCalendar({
   editable: true,
   events:[" & $$EVENT & "],


   eventDrop: function(event,dayDelta,minuteDelta,allDay,revertFunc) {
    location.href = 'FMP://192.168.0.6/fullcalendar_fm.fmp12?script=script01&$title=' + event.title+ '&$start=' + event.start;
   },/*eventDrop:*/


   eventClick: function(event) {
    location.href = 'FMP://192.168.0.6/fullcalendar_fm.fmp12?script=script01&$title=' + event.title+ '&$start=' + event.start;
   },/*eventClick:*/

   height: hi

  });/*$('#calendar').fullCalendar*/

" & $$GOTO & "
/*$('#calendar').fullCalendar( 'gotoDate', 2013 , 12-1 );*/

  
 });/*$(document).ready*/

</script>
<style>

 body {
  margin-top: 20px;
  text-align: center;
  font-size: 14px;
  font-family: \"Lucida Grande\",Helvetica,Arial,Verdana,sans-serif;
  }

 #calendar {
  width: 100%;
  margin: 0 auto;
  }

</style>
</head>
<body>
<div id=\"calendar\"></div>
</body>
</html>

"
「Event.fmp12」を作成。


fullcalendar_fm.fmp12|スクリプト: View_Month(date)
FullCalendar 用のJSONデータをFileMakerのスクリプトで育成し、グローバル変数 $$EVENT に 入れる。

FullCalendar は、
$('#calendar').fullCalendar( 'gotoDate', 2013 , 12-1 );


と記述すると、月の移動ができるので これもFileMakerで育成し $$GOTO に入れる。


#
変数を設定 [ $date; 値:Get(スクリプト引数) ]
変数を設定 [ $$CurrentDate; 値:$date ]
変数を設定 [ $Y; 値:Year ( $date ) ]
変数を設定 [ $Y; 値:Year ( $date ) ]
変数を設定 [ $M; 値:Month ( $date ) ]
変数を設定 [ $START_D; 値:Date ( $M ; -6 ; $Y ) ]
変数を設定 [ $END_D; 値:Date ( $M+1 ; 7 ; $Y ) ]
#
変数を設定 [ $$GOTO; 値:"$('#calendar').fullCalendar( 'gotoDate', " & $Y & " , " & $M-1 & " );" ]
#
変数を設定 [ $Field; 値:"id,title,start ,\"end\",allDay" ]
変数を設定 [ $Result; 値:ExecuteSQL ( " SELECT " & $Field & " FROM Event WHERE start BETWEEN '" & $START_D & " 00:00:00' AND '" & $END_D & " 23:59:59' " ; "" ; "" ) ]
変数を設定 [ $FieldValue; 値:Substitute ( $Field ; [ "," ; ¶ ] ; [ "\"" ; "" ] ) ]
#
変数を設定 [ $MAX; 値:ValueCount ( $Result ) ]
変数を設定 [ $n; 値:1 ]
変数を設定 [ $event; 値:"" ]
Loop
Exit Loop If [ $n > $MAX ]
変数を設定 [ $row; 値:GetValue ( $Result ; $n ) ]
変数を設定 [ $row; 値:Substitute ( $row ; "," ; ¶ ) ]
#
変数を設定 [ $Fields_MAX; 値:ValueCount ( $FieldValue ) ]
変数を設定 [ $k; 値:1 ]
変数を設定 [ $event; 値:$event & "{" ]
Loop
Exit Loop If [ $k > $Fields_MAX ]
変数を設定 [ $e; 値:GetValue ( $FieldValue ; $k ) ]
変数を設定 [ $sq; 値:Case ( $e = "allDay" ; "" ; Char ( 39 ) /*デフォルト*/ ) /* Char ( 39 ) シングルクォーテーション */ ]
変数を設定 [ $event; 値:$event & $e & ":" & $sq & GetValue ( $row ; $k ) & $sq ]
If [ $k ≠ $Fields_MAX ]
変数を設定 [ $event; 値:$event & "," ]
End If
変数を設定 [ $k; 値:$k+1 ]
End Loop
変数を設定 [ $event; 値:$event & "}" ]
If [ $n ≠ $MAX ]
変数を設定 [ $event; 値:$event & "," ]
End If
#
変数を設定 [ $n; 値:$n+1 ]
End Loop
変数を設定 [ $$EVENT; 値:$event ]
Web ビューアの設定 [ オブジェクト名: "WEB1"; 処理: リセット ]


fullcalendar_fm.fmp12|スクリプト: Button


FileMakerのレイアウトにボタンを作成。
真ん中のボタンは、引数に「Get( 日付 )」
左は、「"-1"」
右は、「"+1"」

これでFileMakerのスクリプトでWEBビューア上の「FullCalendar」へ イベントの表示と月の移動ができます。

2013年6月15日土曜日

FullCalendar on FileMaker|FileMakerにリッチなカレンダーインターフェイスを表示 01

FileMaker 12 

WEBビューアに FullCalendar を表示させて
URLスキーム(FMP://192.168.10.0/ファイル名.fmp12?script=スクリプト名)を利用して FullCalendar と連携!

FullCalendar


以下からFullCalendarをダウンロード(現時点で最新は、fullcalendar-1.6.1.zip)
FullCalendar - Download : http://arshaw.com/fullcalendar/download/


適当なところへ解凍


[demos]フォルダの中の[default.html]を使用します。


[default.html]をテキストエディタで開くと
「stylesheet」とか「jquery」とか読み込んでいます。
パスを書き換えてファイルを読み込んでもイイのですが、今回は、FileMakerのファイルに内包させます!

FileMakerで新規データベース「fullcalendar_fm.fmp12」を作成。

テーブル:SYSTEM を作成し
フィールド:
fullcalendar.css
fullcalendar.print.css
jquery.js
jquery_ui.js
fullcalendar.min.js

ファイル名っぽいフィールド名でグローバルフィールドを作成。



それぞれのフィールドにファイルの中身をコピー&ペースト!


[demos]フォルダの中の[default.html]をWEBビューア用に書き換えます。

[default.html]をテキストエディタで開き「"」(ダブルクォーテーション)を「'」(シングルクォーテーション)に置換します。
(画面のテキストエディタは、TeraPad)

link href=

script src=
の部分をFileMakerのフィールドから読み込むように書き換えます。


「fullcalendar_fm.fmp12」にWEBビューアを設置。

"data:text/html," &.....
を記述し、ここに記述 の所に[default.html]の内容を貼り付け。



WEBビューアに FullCalendar が表示されます。


FullCalendar のドラッグイベントでFileMakerのスクリプトを実行。

以下でドラッグした時のイベントが取得できるので、

FullCalendar Documentation - eventDrop : http://arshaw.com/fullcalendar/docs/event_ui/eventDrop/
eventDrop
$('#calendar').fullCalendar({
    events: [
        // events here
    ],
    editable: true,
    eventDrop: function(event,dayDelta,minuteDelta,allDay,revertFunc) {

        alert(
            event.title + " was moved " +
            dayDelta + " days and " +
            minuteDelta + " minutes."
        );

        if (allDay) {
            alert("Event is now all-day");
        }else{
            alert("Event has a time-of-day");
        }

        if (!confirm("Are you sure about this change?")) {
            revertFunc();
        }

    }
});
FullCalendar のドラッグイベントでFileMakerのスクリプトを実行できる用にURLスキームを追加。

location.href = 'FMP://192.168.0.6/fullcalendar_fm.fmp12?script=script01&$title=' + event.title+ '&$start=' + event.start;

※IPアドレス(192.168.0.6)の部分は、 127.0.0.1 とか localhost だとエラーになります!
    editable: true,
    eventDrop: function(event,dayDelta,minuteDelta,allDay,revertFunc) {

       location.href = 'FMP://192.168.0.6/fullcalendar_fm.fmp12?script=script01&$title=' + event.title+ '&$start=' + event.start;
    }

WEBビューア

FileMaker側のスクリプトは、ダイアログを表示させるだけのカンタンなモノです。



FileMakerの「ネットワーク共有」はONにして下さい。
一番最初にURLスキームを実行した時は、「ウインドウ名 - 2」で新しいウインドウが開きます。




FullCalendar のドラッグイベントでFileMakerのスクリプトが実行されダイアログを表示。
タイトルと日付も取得できています!



つづく.....