~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/registry/javascript/distroseries.initseries.js

[r=benji][bug=809786] Refactor some DistroSeries JavaScript and add a
        declarative approach for running YUI tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 *
23
23
 * @class FormRowWidget
24
24
 */
25
 
var FormRowWidget = function() {
 
25
var FormRowWidget;
 
26
 
 
27
FormRowWidget = function() {
26
28
    FormRowWidget.superclass.constructor.apply(this, arguments);
27
29
};
28
30
 
166
168
 * can also be made an overlay, and a component and a pocket selected.
167
169
 *
168
170
 */
169
 
var ParentSeriesListWidget = function() {
 
171
var ParentSeriesListWidget;
 
172
 
 
173
ParentSeriesListWidget = function() {
170
174
    ParentSeriesListWidget
171
175
        .superclass.constructor.apply(this, arguments);
172
176
};
466
470
 *
467
471
 * @class ChoiceListWidget
468
472
 */
469
 
var ChoiceListWidget = function() {
 
473
var ChoiceListWidget;
 
474
 
 
475
ChoiceListWidget = function() {
470
476
    ChoiceListWidget.superclass.constructor.apply(this, arguments);
471
477
};
472
478
 
660
666
 *
661
667
 * @class ArchitecturesChoiceListWidget
662
668
 */
663
 
var ArchitecturesChoiceListWidget = function() {
 
669
var ArchitecturesChoiceListWidget;
 
670
 
 
671
ArchitecturesChoiceListWidget = function() {
664
672
    ArchitecturesChoiceListWidget
665
673
        .superclass.constructor.apply(this, arguments);
666
674
};
726
734
     */
727
735
    remove_distroseries: function(distroseries_id) {
728
736
        // Compute which das is only in the distroseries to be removed.
729
 
        arch_to_remove = [];
 
737
        var arch_to_remove = [];
730
738
        var das = this._distroseries[distroseries_id];
731
739
        var i, ds, j;
732
740
        for (i=0; i<das.entries.length; i++) {
733
 
            remove_das = true;
734
 
            arch = das.entries[i].get('architecture_tag');
 
741
            var remove_das = true;
 
742
            var arch = das.entries[i].get('architecture_tag');
735
743
            for (ds in this._distroseries) {
736
 
                if (ds !== distroseries_id) {
 
744
                if (this._distroseries.hasOwnProperty(ds) &&
 
745
                    ds !== distroseries_id) {
737
746
                   var other_das = this._distroseries[ds];
738
747
                   for (j=0; j<other_das.entries.length; j++) {
739
748
                       var other_arch = other_das.entries[j].get(
782
791
 *
783
792
 * @class SelectWidget
784
793
 */
785
 
var SelectWidget = function() {
 
794
var SelectWidget;
 
795
 
 
796
SelectWidget = function() {
786
797
    SelectWidget.superclass.constructor.apply(this, arguments);
787
798
};
788
799
 
949
960
 *
950
961
 * @class PackagesetPickerWidget
951
962
 */
952
 
var PackagesetPickerWidget = function() {
 
963
var PackagesetPickerWidget;
 
964
 
 
965
PackagesetPickerWidget = function() {
953
966
    PackagesetPickerWidget
954
967
        .superclass.constructor.apply(this, arguments);
955
968
};
1144
1157
 *
1145
1158
 * @class FormActionsWidget
1146
1159
 */
1147
 
var FormActionsWidget = function() {
 
1160
var FormActionsWidget;
 
1161
 
 
1162
FormActionsWidget = function() {
1148
1163
    FormActionsWidget
1149
1164
        .superclass.constructor.apply(this, arguments);
1150
1165
};
1234
1249
 *
1235
1250
 * @class DeriveDistroSeriesActionsWidget
1236
1251
 */
1237
 
var DeriveDistroSeriesActionsWidget = function() {
 
1252
var DeriveDistroSeriesActionsWidget;
 
1253
 
 
1254
DeriveDistroSeriesActionsWidget = function() {
1238
1255
    DeriveDistroSeriesActionsWidget
1239
1256
        .superclass.constructor.apply(this, arguments);
1240
1257
};
1333
1350
        add_parent_series(result);
1334
1351
    };
1335
1352
 
1336
 
    parent_picker = Y.lp.app.picker.create('DistroSeriesDerivation', config);
 
1353
    var parent_picker =
 
1354
        Y.lp.app.picker.create('DistroSeriesDerivation', config);
1337
1355
    parent_picker.show();
1338
1356
};
1339
1357
 
1354
1372
 *
1355
1373
 * @function setup
1356
1374
 */
1357
 
namespace.setup = function() {
1358
 
    var form_actions = namespace.setupWidgets();
1359
 
    namespace.setupInteraction(form_actions);
 
1375
namespace.setup = function(cache) {
 
1376
    var form_actions = namespace.setupWidgets(cache);
 
1377
    namespace.setupInteraction(form_actions, cache);
1360
1378
};
1361
1379
 
1362
1380
/**
1363
1381
 * Setup the widgets objects and return the form object.
1364
1382
 *
1365
1383
 * @function setupWidgets
 
1384
 * @param {Object} cache Specify the value cache to use. If not
 
1385
 *     specified, LP.cache is used. Intended chiefly for testing.
1366
1386
 */
1367
 
namespace.setupWidgets = function() {
 
1387
namespace.setupWidgets = function(cache) {
 
1388
    if (cache === undefined) { cache = LP.cache; }
 
1389
 
1368
1390
    var form_container = Y.one("#initseries-form-container");
1369
1391
    var form_table = form_container.one("table.form");
1370
1392
    var form_table_body = form_table.append(Y.Node.create('<tbody />'));
1394
1416
                     "architectures)."))
1395
1417
            .render(form_table_body);
1396
1418
    var packageset_choice = null;
1397
 
    if (LP.cache['is_first_derivation']) {
 
1419
    if (cache.is_first_derivation) {
1398
1420
        packageset_choice =
1399
1421
            new PackagesetPickerWidget()
1400
1422
                .set("name", "field.packagesets")
1424
1446
            .render(form_table_body);
1425
1447
    var form_actions =
1426
1448
        new DeriveDistroSeriesActionsWidget({
1427
 
            context: LP.cache.context,
 
1449
            context: cache.context,
1428
1450
            srcNode: form_container.one("div.actions"),
1429
1451
            deriveFromChoices: parents_selection,
1430
1452
            architectureChoice: architecture_choice,
1440
1462
 * Setup the interaction between the widgets.
1441
1463
 *
1442
1464
 * @function setupInteraction
1443
 
 * @param {DeriveDistroSeriesActionsWidget} The form widget containing all
1444
 
 *     the other widgets.
 
1465
 * @param {DeriveDistroSeriesActionsWidget} The form widget containing
 
1466
 *     all the other widgets.
 
1467
 * @param {Object} cache Specify the value cache to use. If not
 
1468
 *     specified, LP.cache is used. Intended chiefly for testing.
1445
1469
 */
1446
 
namespace.setupInteraction = function(form_actions) {
 
1470
namespace.setupInteraction = function(form_actions, cache) {
 
1471
    if (cache === undefined) { cache = LP.cache; }
 
1472
 
1447
1473
    // Wire up the add parent series link.
1448
1474
    var link = Y.one('#add-parent-series');
1449
1475
    if (Y.Lang.isValue(link)) {
1458
1484
        }
1459
1485
    });
1460
1486
 
1461
 
    if (LP.cache['is_first_derivation']) {
 
1487
    if (cache.is_first_derivation) {
1462
1488
        // Wire the architecture and packageset pickers to the parent picker.
1463
1489
        Y.on('parent_added', function(parent) {
1464
1490
            form_actions.architectureChoice.add_distroseries(parent);
1471
1497
        });
1472
1498
    }
1473
1499
    else {
1474
 
        // Disable rebuilding if LP.cache['is_first_derivation'] is false.
 
1500
        // Disable rebuilding if cache.is_first_derivation is false.
1475
1501
        form_actions.packageCopyOptions.fieldNode
1476
1502
            .one('input[value="Copy Source and Rebuild"]')
1477
1503
            .set('disabled', 'disabled');
1485
1511
            "if you want to use all the available " +
1486
1512
            "architectures)."));
1487
1513
        form_actions.architectureChoice.add_distroseries(
1488
 
            LP.cache['previous_series']);
 
1514
            cache.previous_series);
1489
1515
        // Setup the pre-selected parents (parents from the previous series).
1490
 
        var index;
1491
 
        for (index in LP.cache['previous_parents']) {
1492
 
            form_actions.deriveFromChoices.add_parent(
1493
 
                LP.cache['previous_parents'][index]);
1494
 
        }
 
1516
        Y.each(
 
1517
            cache.previous_parents,
 
1518
            form_actions.deriveFromChoices.add_parent,
 
1519
            form_actions.deriveFromChoices);
1495
1520
    }
1496
1521
 
1497
1522
    // Wire up the form submission.