OData + Angular.js +ブートストラップ+ JavaScriptグリッド= 5分でアプリケーション

特定のプロジェクトで、何らかの形式のユーザー調査をWebサイトに追加する必要がある(詳細フォーム)と、システム管理者のユーザーのリストを表示および編集するフォーム(リストフォーム)を追加する必要があるとします。



OData、Angular.js、Bootstrap、およびJavaScriptグリッドを使用してこれらのフォームを作成するプロセスを検討してください。 このようなアプリケーションのすべての要件は、これらのツールで既に実装されており、実際に何も書く必要はありません。





調査フォームの主な要件をリストします(括弧内はこの要件を実装するツールです):



ユーザーリストフォームの基本要件:



JavaScriptグリッドは、これらの要件をすべて満たしています。 たとえば、 Kendo UIDevExtreme WebSyncfusion HTML5コントロールInfragistics HTML5コントロールOpenUI5Wijmoライブラリを見る価値があります



基本的なサーバーリクエスト:



これらのすべてのリクエストにハンドラーを実装する必要を回避するために、既製のODataサーバーであり、これらすべてのリクエストの完全な自動処理を提供するdataboomを使用します。



調査票



画像

画像

BootstrapとAngular.jsを使用して調査フォーム(詳細フォーム)を作成します。



さまざまな形状の既製のテンプレートを常に手元に用意することをお勧めします。 例:



JSFiddle、Bootply、CodePen、PlunkerなどのWebサイトにテンプレートを保持しておくと非常に便利です。



同様のフォームの例に基づいた単純なコピーアンドペーストの使用:









<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Example - example-example32-production</title> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> <link href="http://bootswatch.com/cerulean/bootstrap.min.css" rel="stylesheet" type="text/css"> <style>.form-control {border-width:2px}</style> </head> <body ng-app="formExample" ng-controller="ExampleController"> <div class="container"> <div class="col-md-12"> <h1>Simple Bootstrap + Angular.js form</h1> <br /> </div> <form name="myForm"> <div class="col-md-4"> <div class="form-group"> <label for="firstname">First Name:</label> <input class="form-control" id="firstname" type="text" placeholder="Enter first name" ng-model="user.firstname" required autofocus /> </div> <div class="form-group"> <label for="lastname">Last Name:</label> <input class="form-control" type="text" id="lastname" placeholder="Enter last name" ng-model="user.lastname" required /> </div> <div class="form-group"> <label for="email">Email:</label> <input class="form-control" type="email" id="email" name="input" placeholder="Enter email" ng-model="user.email" required> </div> </div> <div class="col-md-8"> <div class="form-group"> <label for="comment">Comment:</label> <textarea rows="9" class="form-control" id="comment" placeholder="Enter comment" ng-model="user.comment"></textarea> </div> </div> <div class="col-md-12"> <input class="btn btn-primary" type="submit" ng-click="insert(myForm.$valid, user)" value="Add new user" /> <input class="btn btn-info" type="submit" ng-click="update(myForm.$valid, user)" value="Update" /><br /><br /> </div> </form> </div> <script> angular.module('formExample', []) .controller('ExampleController', ['$scope', '$http', function ($scope, $http) { $scope.update = function (isvalid, user) { if (!isvalid) return; $http.post('https://samples.databoom.space/api1/sandboxdb/collections/user', JSON.stringify(user)) .success(function (data, status, headers, config) { $scope.user = data.d.results; }); }; $scope.insert = function (isvalid, user) { if (!isvalid) return; user.id = undefined; $scope.update(isvalid, user); } }]); </script> </body> </html>
      
      





ユーザーリスト



画像



Kendo UIライブラリのグリッドコントロールの例に基づいて、ユーザーのリスト(リストフォーム)を作成します。 ほとんどすべてのプログラミングは、データ変更操作に正しいURLを指定し、グリッド列を記述することに削減されます。



 <!DOCTYPE html> <html> <head> <base href="http://demos.telerik.com/kendo-ui/grid/remote-data-binding"> <style>html {font-size: 12px;font-family: Arial, Helvetica, sans-serif;} body {margin: 0;} </style> <title></title> <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.common.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.default.min.css" /> <script src="http://cdn.kendostatic.com/2014.3.1316/js/jquery.min.js"></script> <script src="http://cdn.kendostatic.com/2014.3.1316/js/kendo.all.min.js"></script> </head> <body> <div id="example"> <div id="grid"></div> <script> $(document).ready(function () { $("#grid").kendoGrid({ dataSource: { type: "odata", transport: { read: "https://samples.databoom.space/api1/sandboxdb/collections/user", create: { url: "https://samples.databoom.space/api1/sandboxdb/collections/user" }, update: { url: "https://samples.databoom.space/api1/sandboxdb/collections/user" }, destroy: { url: function (data) { return "https://samples.databoom.space/api1/sandboxdb/collections/user(" + data.id + ")"; } } }, pageSize: 20, serverPaging: true, serverFiltering: true, serverSorting: true, schema: { model: { id: "id" } } }, filterable: true, editable: true, toolbar: ["create", "save", "cancel"], sortable: true, pageable: true, columns: ["firstname", "lastname", "email", "comment", { command: "destroy", title: " ", width: 150 }] }); }); </script> </div> </body> </html>
      
      







サーバー



この例で必要なすべてのリクエストを処理するために、コードを開発する必要はまったくありません。 すべてのデータベースクエリはOdata標準で完全にカバーされており、databoomが自動的に処理します。



おわりに



たとえば、 Angular.jsBootstrapKendo UIDevExtreme WebSyncfusion HTML5コントロールInfragistics HTML5コントロールOpenUI5WijmoJayDataBreeze.jsdatajsODataJSdataboomなど。 それらはそれぞれ独自の問題を解決します。 特定のタスク用のライブラリセットの選択に成功すると、開発時間を大幅に短縮できます。



上記のライブラリを使用して既製のフォームテンプレートを使用すると、コピーと貼り付けを使用してコードを少し変更するだけで、その場で開発を行うことができます。



All Articles