ExtJSでカレンダーを使う
ExtensibleのCalendar Proというやつを使います。
extensible-1.6.0-rc.1.zipをダウンロードしておきます。
ExtJS 4.2.1.883と
sencha cmd 4.0.2.67を使っています
プロジェクトを作成します
sencha -sdk /path/to/ext-4.2.1.883/ generate app calendarsample /path/to/calendarsample
/path/to/calendarsampleに必要なファイル一式が展開されます。
extensibleをプロジェクトディレクトリ内にコピーします。
cp -r /path/to/extensible-1.6.0-rc.1 /path/to/calendarsample/extensible
extensible calendar proはどうやらsencha app buildでビルドできないっぽいので
http://ext.ensible.com/forum/viewtopic.php?f=2&t=763&start=10
を参考にextensible/src/Extensible.jsを修正してしまいます。
// .... Ext.define('Extensible', { // ここから calendar: { data: {}, dd: {}, form: { field: {} }, gadget: {}, menu: {}, template: {}, util: {}, view: {} }, data: {}, form: { field: {}, recurrence: { option: {} } }, lang: {}, // ここまで追加 singleton: true, // ...
ライブラリの中身をいじらなきゃいけないとか微妙すぎますが他の方法が見つかりませんでしたのでこれでいきます。
Viewport.jsを修正します
// .... items: [{ xtype: 'extensible.calendarpanel', store: Ext.create('Extensible.calendar.data.MemoryCalendarStore') }], // ....
calendarsample/.sencha/app/sencha.cfgのクラスパスにextensible/srcを追加します
app.classpath=${app.dir}/extensible/src,${app.dir}/app,${app.dir}/app.js
あと、extensibleのリソース類もコピーしてもらうためにsencha.cfgのapp.resource.pathsも修正します
app.resource.paths=${app.dir}/resources,${app.dir}/extensible/resources
extensibleのcssをデプロイする方法が良く分かりませんでした。
ってことで無理やりコピーします。
build.xmlを編集します
<target name="-after-build"> <copy file="${basedir}/extensible/resources/css/extensible-all.css" todir="${basedir}/build/production/calendarsample/resources" /> </target>
また、index.htmlを修正します。
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>calendarsample</title> <link rel="stylesheet" href="resources/extensible-all.css"> <!-- <x-compile> --> <!-- <x-bootstrap> --> <link rel="stylesheet" href="bootstrap.css"> <script src="ext/ext-dev.js"></script> <script src="bootstrap.js"></script> <script src="extensible/src/Extensible.js"></script> <!-- </x-bootstrap> --> <script src="app.js"></script> <!-- </x-compile> --> </head> <body></body> </html>
ここまできたらビルドします。
プロジェクトのトップディレクトリで
sencha app build
これでbuild/production/calendarsampleフォルダ下にデプロイに必要なファイルだけが展開されます。
build/production/calenarsampleフォルダをhttpサーバのフォルダにおいてやるとカレンダーが表示されると思います。