scripts.js 2.39 KB
/*
 * ADOBE CONFIDENTIAL
 *
 * Copyright 2016 Adobe Systems Incorporated
 * All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated and its
 * suppliers and may be covered by U.S. and Foreign Patents,
 * patents in process, and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 */
(function(window, document, $) {
    'use strict';

    /**
     * Get the value of the `assigned` parameter
     *
     * @return {String|null} Returns the parameter value or `null`
     */
    var getAssignedParam = function() {
        var assignedParam = window.location.search.match(/[?&]assigned=(true|false)/);
        return assignedParam && assignedParam[1] || null;
    };

    /**
     * Filter the devices and update the `foundation-content`.
     *
     * @param  {String} assigned The value of the assigned parameter
     */
    var filterDevices = function(assigned) {
        var $collection = $('.foundation-collection');

        var src = $collection.data('foundationCollectionSrc');

        // Remove any existing assigned parameter
        src = src.replace(/assigned=\w+/, '');

        // Add the new value to the existing parameters, or crete a new parameter list
        var param = assigned ? 'assigned=' + assigned : '';
        src = src + '?' + param;

        // Update the collection source and reload it
        $collection.get(0).dataset.foundationCollectionSrc = src;
        $collection.adaptTo('foundation-collection').reload();
    };

    // Filter the devices list whenever the filter is changed in the UI
    $(document).on('coral-cyclebutton:change', '.screens-dcc-actions-filter-activator', function(ev) {
        filterDevices(ev.originalEvent.detail.selection.dataset.assigned);
    });

    // On page load, update the selected filter in the UI if the parameter is present
    $(document).on('ready', function() {
        var prefilter = getAssignedParam();
        if (prefilter) {
            $('coral-cyclebutton-item[data-assigned="' + prefilter + '"]').attr('selected', true);
        }
    });

}(window, document, Granite.$));