| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | 
							- /* appjet:version 0.1 */
 
- /* appjet:library */
 
- // Copyright (c) 2009, Herbert Vojčík
 
- // Licensed by MIT license (http://www.opensource.org/licenses/mit-license.php)
 
- /**
 
-   * Sets model for the page.
 
-   * Optional. There is no default model.
 
-   */
 
- page.setModel = function(model) {
 
-     this.model = model;
 
- };
 
- /**
 
-  * Sets view-model for the page.
 
-  * This view-model is set for the page view as well.
 
-  * Optional. Default view-model is true.
 
-  */
 
- page.setViewModel = function(viewModel) {
 
-    this.viewModel = viewModel;
 
-    if ("view" in this) { this.view.model = viewModel; }
 
- };
 
- /**
 
-   * Sets the view for the page. Sets the view model from the page view-model.
 
-   * Optional. Default view is empty DIV().
 
-   */
 
- page.setView = function(view) {
 
-     this.view = view;
 
-     if ("viewModel" in this) { view.model = this.viewModel; }
 
- };
 
- /**
 
-   * Sets the presenter for the page. It must be a function. It will be called with page model as a parameter.
 
-   * Optional. Default presenter is legacy dispatch().
 
-   */
 
- page.setPresenter = function(presenter) {
 
-     if (typeof presenter !== "function") {
 
-         throw new Error("A presenter must be a function");
 
-     }
 
-     this.presenter = presenter;
 
- };
 
- page.setViewModel(true);
 
- page.setView(DIV());
 
- page.setPresenter(dispatch);
 
- // Repository for redirected printx functions.
 
- var _rawprint = DIV();
 
- function _addRawPrintSectionTo(result) {
 
-     if (_rawprint.length) {
 
-         result.push(
 
-             DIV({style:"clear:both"}),
 
-             DIV({style:"border-top: 1px solid #ccc; margin-top: 1.2em; margin-bottom: 1.2em"},
 
-                 SMALL(STRONG("Raw print:"))),
 
-             _rawprint
 
-         );
 
-     }
 
- }
 
- /**
 
-  * Sets up MVP printing mode, then runs the page presenter with the page model as an argument.
 
-  * You should call it in place you normally call dispatch().
 
-  */
 
- function mvp() {
 
-     var oldBodyWrite = page.body.write;
 
-     var oldRender = page.render;
 
-     page.render = function () {
 
-         this.render = oldRender;
 
-         this.body.write = oldBodyWrite;
 
-         return this.render();
 
-     };
 
-     page.body.write({ toString: function() {
 
-         var result = [page.view];
 
-         _addRawPrintSectionTo(result);
 
-         return result.map(toHTML).join('');
 
-     }});
 
-     page.body.write = function(rawText) {
 
-         _rawprint.push(html(rawText));
 
-     };
 
-     page.presenter(page.model);
 
- }
 
- /* appjet:server */
 
- import("lib-app/mvp");
 
- /**@ignore*/
 
- var view = DIV();
 
- view.push(P("Ahoy!"));
 
- page.setView(P("This is fake view that will be replaced"));
 
- page.setViewModel("<model>");
 
- print("Raw text before mvp call<>\n*", BR());
 
- printp("A paragraph");
 
- page.setView(view);
 
- /**@ignore*/
 
- function get_main() {
 
-     var list = OL();
 
-     view.push(list);
 
-     print(CODE(appjet._native.codeSection("server")[1].code));
 
-     list.push(LI("This is the real contents of the page."));
 
-     list.push(LI("Print-style functions are redirected to raw print section (useful as ad-hoc debug output). ",
 
-         "The raw print section is only shown when there actually was some raw print."),
 
-         LI("The contents of the page is created by setView with view object. ",
 
-         "You can manipulate this view object after setView."));
 
-     list.push(LI("This way, object/functional style is not mixed with print-style, ",
 
-         "what just caused bad style and confusion."));
 
-     list.push(LI("You can setViewModel for the page, which is propagated to view, ",
 
-         "as well as setPresenter if default dispatch() style is not enough."));
 
-     list.push(LI("The view model is: ", view.model));
 
-     //page.setView("<div>–</div>"); // This should appear as visible text, not as html.
 
- }
 
- mvp();
 
- print("Raw text after mvp call<>\n*", BR());
 
 
  |