QandAAnalysisEngineの開発で検討したこと。
iOS6から追加された「Single App Mode」が使える。
なお、iOSのシングルアプリモードは、
アクセスガイドで、上下エリアの操作を無効化できるようで、
HTMLコンテンツでもブラウザのフルスクリーンモードの解除を抑止できる。
という方式が良いと考えた。
window.navigator.onLineでチェック可能。
ポピュラーな、Key-ValueのWebStorageが良さそう。
setTimeoutやsetIntervalなどを用いることで実現できる。
最新の「Web Workers」については、別に使用しなくていもイイかな。という感想。
web.configの書き方が間違っていると動かないので注意
上記だけでは無理だったので、
クリック後に変更される変数値を確認する実装とした。
に使用する。
以下、画面初期化情報の項目情報。
HTML/CSS/JavaScript技術を中心に使用して開発する。
エンプラ寄りのWeb Forms技術を中心に使用して開発する。
エンプラ寄りのWeb Forms技術を中心に使用して開発する。
select date_part('month', 日付) as 月, count (CASE WHEN ボタンID = 1 THEN TRUE ELSE NULL END) AS AAAAA, count (CASE WHEN ボタンID = 2 THEN TRUE ELSE NULL END) AS BBBBB, count (CASE WHEN ボタンID = 3 THEN TRUE ELSE NULL END) AS CCCCC, count (CASE WHEN ボタンID = 4 THEN TRUE ELSE NULL END) AS DDDDD from 結果テーブルの条件検索の結果セット group by 日付 order by 日付;
Open棟梁はコミュニティ連携のため前提で(笑)。
.NET開発基盤部会だけに。
ASP.NET Web Formsを選択した。
Web Formsだが、オフライン実装を考慮しPostBack?無しのWebAPIで実装。
ADO.NETでイイと考えた。
-------------------- -- TABLE: -------------------- CREATE TABLE Enterprises( ID integer NOT NULL, Name VARCHAR(40) NOT NULL, Description VARCHAR(40), Phone VARCHAR(24), CONSTRAINT PK_Enterprises PRIMARY KEY (ID) ); CREATE TABLE Stores( ID integer NOT NULL, EnterprisesID integer NOT NULL, Name VARCHAR(40) NOT NULL, Description VARCHAR(40), Phone VARCHAR(24), CONSTRAINT PK_Stores PRIMARY KEY (ID) ); CREATE TABLE Devices( ID integer NOT NULL, EnterprisesID integer NOT NULL, StoresID integer NOT NULL, Name VARCHAR(40) NOT NULL, Description VARCHAR(40), CONSTRAINT PK_Devices PRIMARY KEY (ID) );
-------------------- -- Index: -------------------- CREATE INDEX Split_key_Stores ON Stores (EnterprisesID); CREATE INDEX Split_key_Devices ON Devices (EnterprisesID); CLUSTER Stores USING Split_key_Stores; CLUSTER Devices USING Split_key_Devices;
-------------------- -- Sequence: -------------------- CREATE SEQUENCE TS_EnterpriseID START 1001; CREATE SEQUENCE TS_StoreID START 1001; CREATE SEQUENCE TS_DeviceID START 1001;
-------------------- -- INSERT -------------------- INSERT INTO Enterprises (ID, Name, Description, Phone) VALUES(0, '0', '0', '0'); INSERT INTO Stores (ID, EnterprisesID, Name, Description, Phone) VALUES(0, 0, '0', '0', '0'); INSERT INTO Devices (ID, EnterprisesID, StoresID, Name, Description) VALUES(0, 0, 0, '0', '0'); INSERT INTO Enterprises (ID, Name, Description, Phone) VALUES(nextval('TS_EnterpriseID'), 'AAAA', '・・・・・', '1111'); INSERT INTO Stores (ID, EnterprisesID, Name, Description, Phone) VALUES(nextval('TS_StoreID'), currval('TS_EnterpriseID'), 'aaaa', '・・・・・', '1112'); INSERT INTO Devices (ID, EnterprisesID, StoresID, Name, Description) VALUES(nextval('TS_DeviceID'), currval('TS_EnterpriseID'), currval('TS_StoreID'), '001', '・・・・・');
-------------------- -- SELECT -------------------- SELECT * FROM Enterprises; SELECT * FROM Stores; SELECT * FROM Devices;
-------------------- -- TABLE: -------------------- CREATE TABLE InitializeScreenInfo( ID integer NOT NULL, EnterprisesID integer NOT NULL, ExpirationDate date, ScreenTitle VARCHAR(40), AdditionalSearchCriteria VARCHAR(24), UnstructuredData jsonb, CONSTRAINT PK_InitializeScreenInfo PRIMARY KEY (ID) ); CREATE TABLE Answers( ID integer NOT NULL, EnterprisesID integer NOT NULL, InitializeScreenInfoID integer NOT NULL, StoresID integer NOT NULL, DevicesID integer NOT NULL, Datetime timestamp NOT NULL, AnswerID integer NOT NULL, AdditionalSearchCriteria VARCHAR(40), CONSTRAINT PK_Answers PRIMARY KEY (ID) );
-------------------- -- Index: -------------------- CREATE INDEX Split_key_InitializeScreenInfo ON Stores (EnterprisesID); CREATE INDEX Split_key_Answers ON Devices (EnterprisesID); CLUSTER Stores USING Split_key_InitializeScreenInfo; CLUSTER Devices USING Split_key_Answers;
-------------------- -- Sequence: -------------------- CREATE SEQUENCE TS_InitializeScreenInfo; CREATE SEQUENCE TS_AnswersID;
-------------------- -- INSERT --------------------
-------------------- -- SELECT -------------------- SELECT * FROM InitializeScreenInfo; SELECT * FROM Answers;
3 画面
種々の情報は固定
6 画面追加
3 テーブル * CRUD画面は 2 画面(検索・詳細) = 6 画面
種々の情報を可変に。
8 画面追加
4 テーブル * CRUD画面は 2 画面(検索・詳細) = 8 画面
サイン・イン、サイン・アウト(認証)に対応