starting state
This commit is contained in:
commit
e76e49aa61
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
node_modules
|
||||
|
||||
|
||||
/build
|
||||
/.settings
|
||||
/.classpath
|
||||
/.project
|
||||
|
||||
/.idea
|
||||
*.iml
|
||||
*.log
|
24
app/add.ctrl.ts
Normal file
24
app/add.ctrl.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import { Post } from './post.cls';
|
||||
import { DataService } from './data.srv.i';
|
||||
import { ILocationService } from 'angular';
|
||||
|
||||
function AddCtrl($location: any, dataService: any) {
|
||||
|
||||
var vm = this;
|
||||
vm.title = '';
|
||||
vm.text = '';
|
||||
vm.addNew = addNew;
|
||||
|
||||
function addNew() {
|
||||
var post = { title: vm.title, text: vm.text }; // use new Post(.. instead
|
||||
|
||||
dataService.addPost(post)
|
||||
.then(function () {
|
||||
$location.path('/list');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
AddCtrl.$inject = ['$location', 'dataService'];
|
||||
|
||||
angular.module('app').controller('AddCtrl', AddCtrl);
|
5
app/add.html
Normal file
5
app/add.html
Normal file
@ -0,0 +1,5 @@
|
||||
Pealkiri: <input ng-model="vm.title"> <br>
|
||||
|
||||
Text: <input ng-model="vm.text"><br>
|
||||
|
||||
<button ng-click="vm.addNew()">Saada</button>
|
4
app/angular.d.ts
vendored
Normal file
4
app/angular.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
declare global {
|
||||
const angular: ng.IAngularStatic;
|
||||
}
|
||||
export {};
|
13
app/app.ts
Normal file
13
app/app.ts
Normal file
@ -0,0 +1,13 @@
|
||||
/// <reference path="angular.d.ts" />
|
||||
|
||||
var app = angular.module('app', ['ngRoute']);
|
||||
|
||||
import './mem.data.srv';
|
||||
import './add.ctrl';
|
||||
import './list.ctrl';
|
||||
import './route.conf';
|
||||
|
||||
angular.element(document)
|
||||
.ready(function () {
|
||||
angular.bootstrap(document, ['app']);
|
||||
});
|
8
app/data.srv.i.ts
Normal file
8
app/data.srv.i.ts
Normal file
@ -0,0 +1,8 @@
|
||||
import { Post } from './post.cls';
|
||||
|
||||
export interface DataService {
|
||||
|
||||
addPost(post: Post): Promise<void>;
|
||||
|
||||
getPosts(): Promise<Post[]>;
|
||||
}
|
21
app/list.ctrl.ts
Normal file
21
app/list.ctrl.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { Post } from './post.cls';
|
||||
import { DataService } from "./data.srv.i";
|
||||
|
||||
function ListCtrl(dataService: any) {
|
||||
|
||||
var vm = this;
|
||||
vm.posts = [];
|
||||
|
||||
init();
|
||||
|
||||
function init() {
|
||||
dataService.getPosts()
|
||||
.then(function (result : any) {
|
||||
vm.posts = result;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
ListCtrl.$inject = ['dataService'];
|
||||
|
||||
angular.module('app').controller('ListCtrl', ListCtrl);
|
3
app/list.html
Normal file
3
app/list.html
Normal file
@ -0,0 +1,3 @@
|
||||
<div ng-repeat="post in vm.posts">
|
||||
{{ post.title }}
|
||||
</div>
|
29
app/mem.data.srv.ts
Normal file
29
app/mem.data.srv.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import { Post } from './post.cls';
|
||||
import { DataService } from './data.srv.i';
|
||||
import { IQService } from 'angular';
|
||||
|
||||
function MemDataService($q: any) {
|
||||
|
||||
var vm = this;
|
||||
vm.addPost = addPost;
|
||||
vm.getPosts = getPosts;
|
||||
|
||||
vm.posts = [
|
||||
new Post('Post 1', 'text 1'),
|
||||
new Post('Post 2', 'text 2')
|
||||
];
|
||||
|
||||
function addPost(post: Post) {
|
||||
vm.posts.push(post);
|
||||
|
||||
return $q.resolve();
|
||||
}
|
||||
|
||||
function getPosts() {
|
||||
return $q.resolve(vm.posts);
|
||||
}
|
||||
}
|
||||
|
||||
MemDataService.$inject = ['$q'];
|
||||
|
||||
angular.module('app').service('dataService', MemDataService);
|
3
app/post.cls.ts
Normal file
3
app/post.cls.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export class Post {
|
||||
constructor(private title: string, private text: string) {}
|
||||
}
|
22
app/rest.data.srv.ts
Normal file
22
app/rest.data.srv.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import { Post } from './post.cls';
|
||||
import { DataService } from './data.srv.i';
|
||||
import { IHttpService } from 'angular';
|
||||
|
||||
export class RestDataService implements DataService {
|
||||
|
||||
constructor(private $http: IHttpService) {}
|
||||
|
||||
addPost(post: Post) {
|
||||
return this.$http.post('api/posts', post)
|
||||
.then(() => <void> null);
|
||||
}
|
||||
|
||||
getPosts() {
|
||||
return this.$http.get('api/posts')
|
||||
.then(result => result.data);
|
||||
}
|
||||
}
|
||||
|
||||
RestDataService.$inject = ['$http'];
|
||||
|
||||
angular.module('app').service('dataService', RestDataService);
|
21
app/route.conf.ts
Normal file
21
app/route.conf.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { ILocationProvider } from 'angular';
|
||||
|
||||
routeConf.$inject = ['$routeProvider', '$locationProvider'];
|
||||
|
||||
function routeConf($routeProvider: any,
|
||||
$locationProvider: any) {
|
||||
|
||||
$routeProvider.when('/list', {
|
||||
templateUrl : 'app/list.html',
|
||||
controller : 'ListCtrl',
|
||||
controllerAs : 'vm'
|
||||
}).when('/new', {
|
||||
templateUrl : 'app/add.html',
|
||||
controller : 'AddCtrl',
|
||||
controllerAs : 'vm'
|
||||
}).otherwise('/list');
|
||||
|
||||
$locationProvider.hashPrefix('');
|
||||
}
|
||||
|
||||
angular.module('app').config(routeConf);
|
19
data/db.json
Normal file
19
data/db.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"posts": [
|
||||
{
|
||||
"title": "Post 1",
|
||||
"text": "text 1",
|
||||
"_id": 1
|
||||
},
|
||||
{
|
||||
"title": "Post 2",
|
||||
"text": "text 2",
|
||||
"_id": 2
|
||||
},
|
||||
{
|
||||
"title": "a",
|
||||
"text": "b",
|
||||
"_id": 3
|
||||
}
|
||||
]
|
||||
}
|
3
data/routes.json
Normal file
3
data/routes.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"/api/": "/"
|
||||
}
|
18
index.html
Normal file
18
index.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<script src="node_modules/angular/angular.min.js"></script>
|
||||
<script src="node_modules/angular-route/angular-route.min.js"></script>
|
||||
|
||||
<script src="build/bundle.js"></script>
|
||||
|
||||
<body>
|
||||
|
||||
<a href="#/list">Kõik postitused</a> | <a href="#/new">Lisa uus</a>
|
||||
|
||||
<br /><br /><br />
|
||||
|
||||
<div ng-view></div>
|
||||
|
||||
</body>
|
||||
</html>
|
22
package.json
Normal file
22
package.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "ng1ts",
|
||||
"version": "1.0.0",
|
||||
"scripts": {
|
||||
"serve": "webpack-dev-server --port 3001",
|
||||
"build-sample": "webpack --config webpack.sample.config.js",
|
||||
"build": "webpack",
|
||||
"back-end": "json-server ./data/db.json --static ./ --id _id --port 3000 --routes ./data/routes.json"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/angular": "^1.6.15",
|
||||
"@types/angular-route": "^1.3.3",
|
||||
"@types/es6-promise": "0.0.32",
|
||||
"angular": "^1.6.4",
|
||||
"angular-route": "^1.6.4",
|
||||
"awesome-typescript-loader": "^3.1.2",
|
||||
"json-server": "^0.8.22",
|
||||
"typescript": "^2.2.2",
|
||||
"webpack": "^2.5.1",
|
||||
"webpack-dev-server": "^2.4.5"
|
||||
}
|
||||
}
|
3
post.ts
Normal file
3
post.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export class Post {
|
||||
constructor(public title: string, public text: string) {}
|
||||
}
|
23
sample.ts
Normal file
23
sample.ts
Normal file
@ -0,0 +1,23 @@
|
||||
import { Post } from './post';
|
||||
|
||||
class Dao {
|
||||
getPost() {
|
||||
let dataFromServer = '{ "title": "Post 1", "text": "text 1" }';
|
||||
|
||||
return JSON.parse(dataFromServer);
|
||||
}
|
||||
|
||||
getRealPost() {
|
||||
return new Post('Title 1', 'text 1');
|
||||
}
|
||||
|
||||
getPostTyped(): Post {
|
||||
let dataFromServer = '{ "title": "Post 1", "text": "text 1" }';
|
||||
|
||||
return <Post> JSON.parse(dataFromServer);
|
||||
}
|
||||
}
|
||||
|
||||
let dao = new Dao();
|
||||
|
||||
console.log(dao.getRealPost());
|
14
tsconfig.json
Normal file
14
tsconfig.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"types" : ["angular", "angular-route", "es6-promise"],
|
||||
"target": "es5",
|
||||
"moduleResolution": "node",
|
||||
"sourceMap": false,
|
||||
"removeComments": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"noImplicitAny": true,
|
||||
"allowJs": true,
|
||||
"suppressImplicitAnyIndexErrors": true
|
||||
}
|
||||
}
|
29
webpack.config.js
Normal file
29
webpack.config.js
Normal file
@ -0,0 +1,29 @@
|
||||
var path = require('path');
|
||||
|
||||
module.exports = {
|
||||
|
||||
entry: {
|
||||
app: './app/app.ts'
|
||||
},
|
||||
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'build'),
|
||||
publicPath: '/build/',
|
||||
filename: 'bundle.js'
|
||||
},
|
||||
|
||||
module: {
|
||||
loaders: [
|
||||
{
|
||||
test: /\.ts$/,
|
||||
loader: 'awesome-typescript-loader'
|
||||
}
|
||||
],
|
||||
exprContextCritical: false
|
||||
},
|
||||
|
||||
resolve: {
|
||||
extensions: ['.js', '.ts']
|
||||
}
|
||||
|
||||
};
|
5
webpack.sample.config.js
Normal file
5
webpack.sample.config.js
Normal file
@ -0,0 +1,5 @@
|
||||
var conf = require('./webpack.config.js');
|
||||
|
||||
conf.entry.app = './sample.ts';
|
||||
|
||||
module.exports = conf;
|
Loading…
Reference in New Issue
Block a user