Changeset 185

Show
Ignore:
Timestamp:
08/27/08 18:08:34 (3 months ago)
Author:
rgrp
Message:

[js][m]: refactor factletsearch_controller and threadfactlets_controller to be views.

  • Create new BaseControlsView? class for them to inherit from copying over delegator stuff from Nick's existing Controller class.
  • All tests seem to be passing.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/microfacts/public/behaviour/app/controllers/threadpage_controller.js

    r171 r185  
    77        this.controllers = []; 
    88        element.getElements('.thread-factlets').each(function (el) { 
    9             this.addController(new ThreadFactletsController(el)); 
     9            this.addController(new ThreadFactletsView(el)); 
    1010        }, this); 
    1111        // should be only one 
    1212        element.getElements('#factlet-search').each(function (el) { 
    13             this.addController(new FactletSearchController(el)); 
     13            this.addController(new FactletSearchView(el)); 
    1414        }, this); 
    1515 
  • trunk/microfacts/public/behaviour/app/views/factletsearchview.js

    r181 r185  
    1 var FactletSearchController = new Class({ 
    2     Extends: Controller, 
     1var FactletSearchView = new Class({ 
     2    // Extends: Controller, 
     3    Extends: BaseControlsView, 
     4    name: 'FactletSearchView', 
    35     
    4     initialize: function () { 
    5         this.parent.apply(this, arguments); 
    6         console.log('FactletSearchController: initialize'); 
     6    setupView: function () { 
    77        this.searchResults = $$('.factlet-search-results')[0]; 
    88        // list of factlet ids currently being shown 
     
    1111    }, 
    1212     
    13     onFactletSelect: function (factlet) { 
    14     }, 
    15  
     13    // in parent now 
    1614    // will be removed/promoted once controller setup is refactored 
    17     onThreadStart: function (factlet) { 
    18     }, 
     15    // onThreadStart: function (factlet) { 
     16    // }, 
    1917 
    2018    onDataChange: function (data) { 
     
    6866            var data = $('factlet-search-title').value; 
    6967            var query = { "q": data }; 
     68            console.log('Had onclick event'); 
    7069            request.post(url, encodeURIComponent(JSON.encode(query))); 
    7170        }, 
  • trunk/microfacts/public/behaviour/app/views/threadfactletsview.js

    r181 r185  
    1 var ThreadFactletsController = new Class({ 
    2     Extends: Controller
     1var ThreadFactletsView = new Class({ 
     2    Extends: BaseControlsView
    33 
    44    factletSummaryTemplate: [ 
     
    88    ].join('\n'), 
    99     
    10     initialize: function (element) { 
    11         this.parent.apply(this, arguments); 
     10    setupView: function () { 
    1211        this.factlets = []; 
    1312        this.selectedFactletId = null; 
     
    3332    }, 
    3433 
     34    // TODO: refactor to use BaseView class onThreadStart 
    3535    onThreadStart: function (thread, threadFactlets) { 
    3636        console.log("ThreadFactletsController saw threadStart event"); 
  • trunk/microfacts/public/behaviour/lib/moovc.js

    r179 r185  
    3838        }, this); 
    3939        var factletsData = []; 
     40        // what is this doing in here? 
     41        // why test for existence of location? May have date but not location 
    4042        this.factlets.each(function (factletObject) { 
    4143            if (factletObject.data.location) { 
     
    4345            } 
    4446        }); 
    45         this.log("Factlet data:"); 
    46         this.log(factletsData); 
     47        // this.log("Factlet data:"); 
     48        // this.log(factletsData); 
    4749        this.drawFactlets(factletsData); 
    4850    }, 
     
    6668    } 
    6769 
     70}); 
     71 
     72var BaseControlsView = new Class({ 
     73    Extends: BaseView, 
     74    name: 'BaseControlsView', 
     75 
     76    controls: {}, 
     77     
     78    initialize: function (element, controls) { 
     79        this.parent.apply(this, arguments); 
     80        this.setControls(controls); 
     81        this.delegateControls(); 
     82    }, 
     83 
     84    setupView: function () { 
     85    }, 
     86     
     87    setControls: function (controls) { 
     88        this.controls = $merge(this.controls, controls); 
     89    }, 
     90     
     91    delegateControls: function () { 
     92        $each(this.controls, function (fn, desc) { 
     93            var desc = desc.trim().split(" "), type = desc.pop(), selector = desc.join(" "); 
     94            this.element.delegate(selector, type, fn, this);  
     95        }, this); 
     96    } 
    6897}); 
    6998 
  • trunk/microfacts/public/behaviour/load.js

    r181 r185  
    5151    type: "js", 
    5252    path: "lib/moovc.js?" + Math.random(), 
    53     requires: ['mootools'], 
     53    requires: ['mootools', 'delegator'], 
    5454    varName: "LayerBase" 
    5555}); 
     
    137137 
    138138loader.addModule({ 
     139    name: "threadfactletsview", 
     140    type: "js", 
     141    path: "app/views/threadfactletsview.js?" + Math.random(), 
     142    requires: ['view', 'controller', 'thread', 'ejs'], 
     143    varName: "ThreadFactletsView" 
     144}); 
     145 
     146loader.addModule({ 
     147    name: "factletsearchview", 
     148    type: "js", 
     149    path: "app/views/factletsearchview.js?" + Math.random(), 
     150    requires: ['view', 'controller', 'factlet'], 
     151    varName: "FactletSearchView" 
     152}); 
     153 
     154loader.addModule({ 
    139155    name: "mapview", 
    140156    type: "js", 
     
    165181 
    166182loader.addModule({ 
    167     name: "threadfactletscontroller", 
    168     type: "js", 
    169     path: "app/controllers/threadfactlets_controller.js?" + Math.random(), 
    170     requires: ['controller', 'thread', 'ejs'], 
    171     varName: "ThreadFactletsController" 
    172 }); 
    173  
    174 loader.addModule({ 
    175     name: "factletsearchcontroller", 
    176     type: "js", 
    177     path: "app/controllers/factletsearch_controller.js?" + Math.random(), 
    178     requires: ['controller', 'factlet'], 
    179     varName: "FactletSearchController" 
    180 }); 
    181  
    182  
    183 loader.addModule({ 
    184183    name: "factletcontroller", 
    185184    type: "js", 
     
    197196    type: "js", 
    198197    path: "app/microfacts.js?" + Math.random(), 
    199     requires: ['domainobject', 'view', 'controller', 'microfactscontroller', 'factletcontroller', 'threadfactletscontroller', 'mapview', 'timelineview', 'geochronopagecontroller', 'threadpagecontroller'], 
     198    requires: ['domainobject', 'view', 'controller', 'microfactscontroller', 'factletcontroller', 'threadfactletsview', 'mapview', 'timelineview', 'geochronopagecontroller', 'threadpagecontroller'], 
    200199    varName: "Microfacts" 
    201200}); 
     
    205204    type: "js", 
    206205    path: "app/controllers/threadpage_controller.js?" + Math.random(), 
    207     requires: ['model', 'domainobject', 'view', 'controller', 'thread', 'factlet', 'threadfactletscontroller', 'factletsearchcontroller'], 
     206    requires: ['model', 'domainobject', 'view', 'controller', 'thread', 'factlet', 'threadfactletsview', 'factletsearchview'], 
    208207    varName: "ThreadPageController" 
    209208}); 
  • trunk/microfacts/public/test/index.html

    r181 r185  
    5656  <!-- views --> 
    5757  <script type="text/javascript" src="spec/view_spec.js?123"></script> 
    58   <script type="text/javascript" src="spec/threadfactletscontroller_spec.js?123"></script> 
    59   <script type="text/javascript" src="spec/factletsearch_controller_spec.js?123"></script> 
     58  <script type="text/javascript" src="spec/threadfactletsview_spec.js?123"></script> 
     59  <script type="text/javascript" src="spec/factletsearchview_spec.js?123"></script> 
    6060 
    6161  <script type="text/javascript" src="spec/mapview_spec.js?123"></script> 
  • trunk/microfacts/public/test/spec/factletsearchview_spec.js

    r181 r185  
    2525 
    2626 
    27 describe('FactletSearchController', { 
     27describe('FactletSearchView', { 
    2828 
    2929    before_each: function () { 
    3030        var elem = $('factlet-search'); 
    31         ctrl = new FactletSearchController(elem); 
     31        ctrl = new FactletSearchView(elem); 
    3232    }, 
    3333 
  • trunk/microfacts/public/test/spec/threadfactletsview_spec.js

    r181 r185  
    3636 
    3737 
    38 describe('ThreadFactletsController', { 
     38describe('ThreadFactletsView', { 
    3939 
    4040    before_each: function () { 
    4141        var elem = $$('.thread-factlets')[0]; 
    42         ctrl = new ThreadFactletsController(elem); 
     42        ctrl = new ThreadFactletsView(elem); 
    4343    }, 
    4444