【WebPerformer】明細に行挿入機能①

4月も最終日という事で、、、
天候が安定しない日々が続いておりますが、この時期の体調管理には気を付けて下さい。

今回もWebPerformerのユーザ定義実装についての記事になります。
意外にもWebPerformer関連の地味なユーザ定義の情報は評判が良いらしく、引き続き投稿していこうかと思います。

WebPerformerの標準機能だと、明細に行の追加を行う際、最終行に追加されます。
ですが、システムをご利用になるお客様の中では、[途中行に新規行を追加したい]と考えておられる方も多いのではないでしょうか。

javascriptをカスタマイズし、オリジナルの途中行挿入機能を実装してみることにします。
WebPerformerが標準で実装している行追加・削除の[+][-]ボタンの機能は特に変更せず、
アクションボタン押下時にjavascriptをコールし、新規行を挿入するイメージになります。

後程説明しますが、行挿入と記載しておりますが実際には[行が下に1段ズレる動作]を利用しています。
イメージは下図のようになります。

①行挿入前
001
②行挿入後
002

Android 3D行先コンパス AR 修正 ver1.11

3D行先コンパス AR

バグ修正
1)NECの10インチタブレット LifeTouch(LT-TLX5W1AB)X,Y,Z軸がおかしいバグ修正

device_angle = getWindowManager().getDefaultDisplay().getRotation();
device_angle がSurface.ROTATION_270でした。通常のスマホだと、Surface.ROTATION_0です。
とういうことは、タブレットによっては、Surface.ROTATION_90やSurface.ROTATION_180があるかも。

「メモ」
remapCoordinateSystemの第二、第三引数は、いまいち、机上(思考)と端末座標、OPENGL座標が結びつかないので、例によって総当たり(24通りの中から)でピックアップしました。

AXIS_X, AXIS_Y
AXIS_X, AXIS_Z
AXIS_X, AXIS_MINUS_Y
AXIS_X, AXIS_MINUS_Z

AXIS_Y, AXIS_X
AXIS_Y, AXIS_Z
AXIS_Y, AXIS_MINUS_X
AXIS_Y, AXIS_MINUS_Z

AXIS_Z, AXIS_X
AXIS_Z, AXIS_Y
AXIS_Z, AXIS_MINUS_X
AXIS_Z, AXIS_MINUS_Y

AXIS_MINUS_X, AXIS_Y
AXIS_MINUS_X, AXIS_Z
AXIS_MINUS_X, AXIS_MINUS_Y
AXIS_MINUS_X, AXIS_MINUS_Z  Surface.ROTATION_270

AXIS_MINUS_Y, AXIS_X
AXIS_MINUS_Y, AXIS_Z
AXIS_MINUS_Y, AXIS_MINUS_X
AXIS_MINUS_Y, AXIS_MINUS_Z

AXIS_MINUS_Z, AXIS_X     Surface.ROTATION_0
AXIS_MINUS_Z, AXIS_Y
AXIS_MINUS_Z, AXIS_MINUS_X
AXIS_MINUS_Z, AXIS_MINUS_Y

switch (device_angle){
case Surface.ROTATION_0:
//スマートフォン(縦)
SensorManager.remapCoordinateSystem( inR, SensorManager.AXIS_MINUS_Z, SensorManager.AXIS_X, outR );
break;
case Surface.ROTATION_270:
//タブレット横にセンサーが設定されているもの 10インチタブレット縦
SensorManager.remapCoordinateSystem( inR, SensorManager.AXIS_MINUS_X, SensorManager.AXIS_MINUS_Z, outR );
break;
default:
SensorManager.remapCoordinateSystem( inR, SensorManager.AXIS_MINUS_Z, SensorManager.AXIS_X, outR );
break;
}

もし、Surface.ROTATION_90やSurface.ROTATION_180場合は崩れます。
zahyou2
2)N,S,E,Wのテクスチャーが正しく表示されないバグ修正

OpenGL ES1.0では、テクスチャーの1辺のサイズは2のn乗でなければならない。
96 x 96にしていました。(Nexus5,7 ,Xperiaだと、これでも正しく表示できますが、NECの10インチタブレット LifeTouch Android 4.0.1は仕様どおり表示できません。)

3)カメラSurfaceViewがGoogleMapのViewより下に隠れて表示されないバグ修正。

NECの10インチタブレット LifeTouchで発生。
OpenGLのSurfaceViewは、mOpenglView.setZOrderOnTop(true)でトップに持ってきているのですが、
カメラSurfaceViewが端末およびアプリのタイミングにより中途半端になるようで、mCameraview.setZOrderMediaOverlay(true) を設定しました。

もし、SurfaceViewを3つ以上使う場合は対処不明です。