問題タブ [smartclient]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
eclipse - 2つのモジュールを使用したJUnitテストgwt Webアプリ
現在、gwt 2.3 と smartgwtpower 2.5 を夜間に使用し、Linux で Eclipse を使用しています。私の Web アプリは、社内で開発され、commonsmartgwt.jar という名前の jar にパッケージ化された共通コードを使用しています。この jar にはエントリ ポイント クラスがあり、独自の gwt.xml ファイルがあります。私の Web アプリの gwt.xml ファイルでは、エントリ ポイント クラスから継承します。
エントリ ポイント common.code.client.Common を Web アプリのエントリ ポイントとして使用します。私の Web アプリのすべてのクラスは、共通コードのクラスを拡張します。コンパイルと実行は問題なく動作しますが、Eclipse メソッドの Run As > GWT Junit Test を使用してテストを実行しようとすると、次のエラーが発生します。クラスパスに common/code/Common.gwt.xml が見つかりません。タイプミスか、ソースのクラスパス エントリを含めるのを忘れている可能性があります。クラスの下にフォルダー common/code/ を作成し、commonsmartgwt.jar から .gwt.xml ファイルを抽出してそのディレクトリーに配置すると、別のエラーが発生します。
このアプリケーションを単体テストする方法はありますか。私の状況が明確でない場合はお知らせください。エントリ ポイントを共通コードから Web アプリに移動するとどうなりますか? ここの指示に従ってみました:[エラーの解決][1]
しかし、これはうまくいきませんでした。
javascript - SmartClient: PUT データの複製
SmartClient 8.1 を使用しており、GET および PUT 操作に XML データ ソースを使用しています。
以下は、私が取得したデータのサンプルです。
値を更新してフォームを送信すると、SmartClient は次のデータを PUT ペイロードとして送信します。
PUT ペイロードでは、更新された値がグループ要素なしで (フラット化されて)、グループ内の古い値とともに送信されます。これらのグループ化された古い値は、ここでは必要ありません/望ましくありません。
なぜそれが起こっているのか、そしてこれらの値を PUT ペイロードから削除するにはどうすればよいのか、誰にもわかりますか?
これは DynamicForm.submit() と DynamicForm.saveData() と関係がありますか?
ここSmartClient フォーラムでこの質問をしましたが、まだ回答がありません。ここで誰かが私を助けてくれることを願っています。
java - GWTMVPとSmartGWTの互換性
私の新しいプロジェクトでは、クライアントはプレゼンテーション層の開発にGWT/SmartGWTを使用するように要求しました。(注:画面はそれほど複雑ではありません)MVPパターン(使用されたことはありません)については知っていますが、次の基準を満たすMVPパターンのどのフレーバーを使用するかを決定する必要があります。
- SmartGWTコンポーネントをMVPフレームワークとシームレスに統合/使用できるはずです。
- フレームワークが、モバイルまたはiPadの種類のデバイスで表示されるUIをサポートする柔軟性を提供してくれると素晴らしいでしょう。
以前、GWTとSmartGWTのコンポーネントを一緒に使用すると、動作に一貫性がないことに気づきました。ここで私を訂正してくださいそれはまだ本当ですか?
これに関するガイダンスをいただければ幸いです。
ありがとう!!バベシュ
wpf - WPFスマートクライアントアプリでWCFDTOを使用する場合のMVVMの使用を理解する上での問題
この分野での経験はほとんどなく、MVVMを使用してWCFバックエンドと通信するWPFスマートクライアントアプリを作成しており、そこにあるすべての情報から正しい決定を下すのに本当に苦労しています。これは、この分野でより経験豊富な人々がここで解決できることを願っている一連の質問につながります。
例として、画面の1つで、注文を入力したり、注文に注文明細を追加したりできます。
モデルとして何が使われていますか?
WCFサービスには、次の簡略化されたDTOがあります。
そして、次の方法を持つWCFサービス:
INotifyPropertyChanged
WPFスマートクライアントでは、DTOへの参照がありますが、純粋に転送用であるため、明らかに実装されていません。
質問
推奨されるアプローチは、これらのDTOINotifyPropertyChanged
をAutomapperなどを使用して実装するモデルに変換することですか?または、DTOをViewModelで直接モデルとして使用する必要がありますか?
ビューモデル間の通信
現在、 ViewModelsとの2つのタブ(Order
と)を持つ注文ビューがあります。[注文]タブには、含まれている顧客IDと名前があります。で顧客を選択するときは、その顧客に属する製品のみが表示されるように、顧客が選択されていることを通知する必要があります。OrderLines
OrderViewModel
OrderLineViewModel
ComboBox
OrderView
OrderLineView
ComboBox
質問
このシナリオでは、にどのようにOrderViewModel
通信しますか?OrderLineViewModel
注文明細の追加とロジック/ビジネスルールの適用
サーバーレベルのアプリケーションは、PC、モバイルデバイスなどの複数のクライアントで使用されるため、すべてのビジネスルールがサーバーレベルのアプリケーションに適用されていることを確認したいと思います。例として、注文明細が追加された場合。特定の製品タイプの場合、顧客が特定の認証を持っている場合にのみ追加できます。
ただし、MVVMについて読んだことはすべて、モデルがビジネスルールと動作を適用するものであると述べています。これらの例はすべて、クライアント側でモデルを実装しています。理想的には、クライアントとサーバーの両方で同じチェックを複製したくないので、これが発生しないようにする方法を考えていました。
質問
ユーザーが無効な行を追加し、サーバーに要求を送信し、サーバーに関連するルールを適用させて応答を返すことを許可しますか?または、サーバーにリクエストを送信する前に、スマートクライアントアプリでロジックを適用しますか?
ここで概説したすべての分野で本当に良くなりたいと思っています。ご回答いただきありがとうございます。
ありがとう
アレックス
編集: これは私が前進するための最善の方法に関してもう少し明確になるのを助けてくれたので、皆さんの貢献に感謝します。すべての答えは良かったのですが、この段階での私の考えに最も合うので、私はUriの答えを受け入れることにしました。ただし、DTOのIDからViewModelのリストであるItemsSourceのSelectedItemへの変換を処理するための最良の方法はまだわかりません。コンバーターが機能する可能性があることはわかりますが、別の解決策を見つけようとしています。ありがとうアレックス
smartclient - SmartClientLGPLバージョンでデータを取得する
LGPLバージョンのスマートクライアントを使用して自分のサーバーに接続したい。SmartClientにフェッチ要求(操作タイプ、範囲など)を送信させたい—残りは処理します。しかし、SmartClientに強制することはできません。私が何とかしたのは、単純なGETリクエストを送信するように強制することだけです。何を追加すればよいですか?
私のコード:
java - SmartGWTのDynamicFormのStaticTextItemコンポーネントにスタイルを適用するにはどうすればよいですか?
SmartGWTのDynamicFormアイテムのStaticTextItemにスタイルを適用したいと思います。
このコンポーネントのsetStyleNameのようなメソッドは見つかりませんでした。
StaticTextItemにスタイルを適用する別の方法はありますか?
ToolStripコンポーネントが追加できるのはFormアイテムのみであることに気付いたので、ここでは、特にStaticTextItemにスタイルを適用する方法がわかりません。
私の目標は、ToolStripにスタイルのあるラベルを追加することです。
これに代わるものはありがたいです!!!
ありがとう!!!
datasource - canvasItem を使用して、関連データの listGrid を dynamicForm に含める
チェックボックスで選択できる、関連する利用可能なオプションのリストを含むフォームが必要です。オプションの数は非常に多くなる可能性があり、各フォーム レコードには独自のオプション セットがあります。選択したオプションは、送信ごとに変更される場合があります。
私は PHP サーバーで JSON データソースを使用しているため、SmartClient クライアント側のみを使用しています。
利用可能なサンプルを使用して canvasItem を作成しましたが、次の 2 つの問題が
あります。
2. canvasItem の変更はフォーム送信に含まれません。
ここに私のテスト コードがあります:
dataSource コード。
isc.DataSource.create({
ID:"PointDetlData",dataFormat:"json",idField: "NodeId",
fields:[{name:"NodeId",primaryKey:true,type:"integer",title:"Node Id"},
{name:"RowId",title:"Row",canEdit:"false"},
{name:"Code",title:"Product",canEdit:"false"},
{name:"Name",title:"Details",canEdit:"false"},
{name:"Sel",type:"boolean",title:"Assign"}],
operationBindings:[{operationType:"fetch", dataURL:"dsdet.json"},
{operationType:"update",dataURL:"updateTestDetail.php"}]
});
isc.DataSource.create({
ID:"PointData",dataFormat:"json",idField: "NodeId",
fields:[{name:"NodeId",primaryKey:true,type:"integer",title:"Node Id"},
{name:"PointId",type:"integer",title:"PointId"},
{name:"CompanyNodeID",title:"Company"},
{name:"Level",title:"Node Type"},
{name:"Name",title:"Name"},
{name:"items[]",title:"Order Items",multiple:"true",type:"PointDetlData"}],
operationBindings:[{operationType:"fetch", dataURL:"ds.json"},
{operationType:"update",dataURL:"updateTest.php"}]
});
canvasItem 定義
isc.ClassFactory.defineClass("GridEditorItem", "CanvasItem");
isc.GridEditorItem.addProperties({
height:"*", width:"*",
rowSpan:"*", endRow:true, startRow:true,
shouldSaveValue:true,
createCanvas : function () {
return isc.ListGrid.create({
autoDraw:false,
ID:"exampleFormGrid",
width:this.width, height:this.height,
leaveScrollbarGaps:false,
dataSource:this.gridDataSource,
fields:this.gridFields,canEdit:true,modalEditing:true,
saveLocally:true,autoSaveEdits:false,
cellChanged : function () {
this.canvasItem.saveValue(this.data);
if (this.canvasItem.gridSortField != null)
{this.sort(this.canvasItem.gridSortField);}
},
dataArrived : function () {this.canvasItem.showValue(null, this.canvasItem.getValue());},
selectionUpdated : function (record) {
var item = this.canvasItem;
if (record == null) item.storeValue(null);
else item.storeValue(record[item.name]);
},
refreshData : function (filter) {if (typeOf(filter) != null) this.fetchData(filter);}
});
},
showValue : function (displayValue, dataValue) {
if (this.canvas == null) return;
var record = this.canvas.data.find(this.name, dataValue);
if (record) this.canvas.selection.selectSingle(record)
else this.canvas.selection.deselectAll();
}
});
の dynamicForm コード。
isc.DynamicForm.create({
ID: "exampleForm", autoDraw:true,
width: 700, height: 350, position:"relative",
dataSource:"PointData",
fields: [{name:"NodeId" },
{name:"PointId" },
{name:"items[]",
width:350,
colSpan:2,showTitle:false,
editorType:"GridEditorItem",
gridDataSource:"PointDetlData",
gridFields:[{name:"RowId"},{name:"Code"},{name:"Name"},{name:"Sel"}],
gridSortField:"RowId"},
{name:"Level"},{name:"Name"},
{editorType:"SubmitItem", title:"Save"}]
});
exampleForm.fetchData({NodeId:4});
SmartClient 8.1/LGPL Deployment (ビルド 2011-08-02) と Firefox 8.0 ブラウザーを使用しています。
django - Django と SmartClient を使用して RIA を作成する
Django または Rails と SmartClient (smartclient.com) または ExtJS を組み合わせて使用して、多くのグリッド ベースのビュー (Excel を考えてください) を含む RIA を実装する可能性を調査しています。
誰かがどちらかを成功させたことがありますか?誰かがこれに関する書面または視聴覚資料へのリンクを提供できますか? 特にSmartClient用のチュートリアルなどを探していますか? 私が知る限り、ExtJS に関する資料はたくさんありますが、SmartClient に関する資料はほとんどありません。
現在、私は SmartClient と Django に傾倒しています。SmartClient は、一見すると ExtJS よりも完全に見えるためです (ただし、あまり文書化されていません)。
SmartClient の「はじめに」ドキュメントを読みましたが、さらに詳細な資料を探しています。
編集:原則として、誰かがこれを閉じることに投票することを期待していました。有用な答えが得られれば有用な質問だと思います。ExtJS 対 SmartClient や Rails 対 Django についての議論を求めているわけではありません。ドキュメントへのポインタを探しているだけです。
smartgwt - SmartGwt - SmartGwt の Excel のようなセル ベースのフォーカス
SmartGwt に MS-Excel のような機能を実装しようとしています。ここでは、キーボードを使用して ListGrid 内のさまざまなセルをナビゲートし、セルを個別に編集できます。
現在、行レベルでグリッドをナビゲートすることのみが可能であり、編集可能なすべてのセルがまとめて編集モードになります。
価格、銘柄などのフィールドを含む株式市場データを表示するグリッドがあります。最後のフィールドはボタンで、ユーザーは矢印キーを使用してこのボタンに移動し、Enter キーを押して売買注文を実行します。
助けてくれてありがとう