1. the server reuses WP server, exposes RESTful API to the client;
2. the client build on AngularJS with Node.js ecosystem.
1.2 the client is a SPA on AngularJS
Nota:
SPA: Single Page Application
why SPA?
deployable on various devices
Nota:
1. support various browsers on PC or Mobile.chrome, firefox, safari, IE9+
2. it is very likely ported to native app with help of ionic or cordova.
independent to the server as far as possible
Nota:
1. only use Restful api to access the server;
2. developing independent.
AngularJS generic support SPA
Nota:
AngularJS was designed to support SPA.
uses old WP server
Nota:
it is not quite fit to use php server with angularJS technically. And we will use nodejs to re-implement the server.
why AngularJS?
good ecosystem
Nota:
1. adapt with nodejs app and tools
2. adapt with other javascript frameworks (bootstrap, jquery)
3. rich maintenance tool chain, yeoman, gulp, bower, generator-ng-poly
good official support
Nota:
thousands of generic widget ready to be used.
future trends
Nota:
1. dominant browsers support , more important generic support with next generation browser of Microsoft;
2. ecosystem is growing;
engineering features
Nota:
1. hind low level DOM manipulation, make development quick and hide details;
2. modularization makes project extensible.
testable
Nota:
angularJS big feature, everything could be tested.
2. system architecture
2.1 project management
Nota:
project managed by ng-poly, it is a nodejs tools powered by gulp.js. project management have following features.
automatic building
Nota:
no makefile, no ant. add source code and build with it. that all no additional makefile and we got runnable package.
configurable by javascript
Nota:
Based on generator ng-poly and gulp.
programmer could add extra code to load correct module, start processes. Use javascript(nodejs) to manage all you need.
production capacity and development mode
Nota:
1 .enable to minify and uglify source code, css. we can build for production.
2. we also configure to connect to different server at developping stage.
Test module
Nota:
we have unit test and e2e test.
independent developping
Nota:
Thanks to ng-poly, we setup a local rest emulator. it emulator the server restful APIs and programmable. we could develop the client without the server support. in the future if use nodejs as the server, it can be ported into it.
2.2 module categories
Nota:
we treat all things as module. AngularJS provides this feature. module help us separate complicated things into simple pieces.
there are two kinds of modules: UI modules and support modules; UI modules represent the WP business representation, they are application explorer, tasks etc.support modules acts supporting functionalities, like communication, error handler, widgets, common services etc.
LMe and LMi web business
prepresentation(UI modules)
Nota:
UI modules are business presentation layer, it includes app explorer(lme, lmi), tasks(lme, lmi), lme import packages, deployment(lme, lmi) , dashboard(profiles and computer deployment statistic in donut chart and bar chart)
support modules
communication
Nota:
communication between the client and server is complicated. we need divided its requirement into different layers.
1. DataResource layer, handles http issue;
2. business layer, handles response data and resolves business logic errors;
error handler
Nota:
we need a unified error handler I for exception issue.
Error divided into four levels: fatal, error, warning, info.
fatal error is unrecoverable exception, it should block user operation by modal dialog.
others will not interrupt user operation in toast form, they could be ignored.
components and widgets
Nota:
widgets is a little encapsulated module which could be reused. we have implemented some widgets by ourselves, such as navbar, breadcrumb, bar and donut chart. for some common use widget we are using third party ones from angular official site.
other miscs
Nota:
some common usage utilities.
services and directives
2.3 UI design
3.Status and future plan
Done pages
Nota:
please show the work flow at the time.
what would be like in the future
Nota:
1.show some static pictures.
2. we would add some features:
add GAR favorite;
information of Deployment set status changing;