PageSourceSearch

https://scti.com.au/mc-4ae19cb4-2340-482b-9937-16c9-cdn-endpoint.a…&hash=939318E3A06CA54EDB067C5AE0F93847

js scti.com.au collected 2026-10-02 19:45:35 UTC 5,666 bytes, 144 lines download raw bytes

1XA.component.search.variantFilter = (function ($, document) {
2
3    var api = {},
4        queryModel,
5        queryParameters,
6        variantMappings = [],
7        initialized = false,
8        variantMappings = {};
9
10    var VariantSelectorModel = Backbone.Model.extend({
11        defaults: {
12            dataProperties: {},
13            sig: []
14        }
15    });
16
17    var VariantSelectorView = XA.component.search.baseView.extend({
18        initialize : function () {
19            var hashObj = queryModel.parseHashParameters(window.location.hash),
20                dataProperties = this.$el.data(),
21                sig = this.translateSignatures(dataProperties.properties.searchResultsSignature, "v"),
22                inst = this,
23                i;
24
25            if (dataProperties.properties.searchResultsSignature === null) {
26                dataProperties.properties.searchResultsSignature = "";
27            }
28
29            this.model.set({dataProperties: dataProperties});
30            this.model.set("sig", sig);
31            
32            for (i = 0; i < sig.length; i++) {
33                if (hashObj.hasOwnProperty(sig[i])) {
34                    this.selectVariantIcon(hashObj[sig[i]]);
35                }
36            }
37
38            XA.component.search.vent.on("results-loaded", function (resultsData) {
39                var rawSignatures = dataProperties.properties.searchResultsSignature.split(','),
40                    signature,
41                    startingVariant,
42                    signatureVariants;
43
44                hashObj = queryModel.parseHashParameters(window.location.hash);                
45
46                for (i = 0; i < rawSignatures.length; i++) {
47                    signature = rawSignatures[i];
48                    if (hashObj.hasOwnProperty(sig[i]) && variantMappings.hasOwnProperty(signature)) {
49                        signatureVariants = variantMappings[signature];
50                        startingVariant = signatureVariants[hashObj[sig[i]]];
51                        inst.triggerAddVariant(startingVariant.cssClass, signature);
52                        inst.selectVariantIcon(hashObj[sig[i]]);
53                    } else {
54                        //select first variant if there is no variant param in the hash
55                        if (variantMappings.hasOwnProperty(signature) && variantMappings[signature].hasOwnProperty(0)) {
56                            setTimeout(function () {                            
57                                inst.triggerAddVariant(variantMappings[signature][0].cssClass, signature);
58                                inst.selectVariantIcon(0);
59                            }, 100);
60                        }
61                    }
62                }
63            });
64        },
65        events : {
66           "click div > div": "changeVariant"
67        },
68        changeVariant: function (event) {
69            var $target = $(event.currentTarget),
70                sig = this.model.get("sig"),
71                props = $target.data();
72
73            this.$el.find(".active-variant").removeClass("active-variant");
74            $target.addClass("active-variant");
75
76            queryParameters.updateHash(this.updateSignaturesHash(sig, props.variantindex, {}));
77            this.triggerAddVariant($(event.currentTarget).attr("class"));
78        },
79        triggerAddVariant: function (classes, signature) {
80            XA.component.search.vent.trigger("add-variant-class", {
81                classes: classes,
82                sig: signature
83            });
84        },
85        selectVariantIcon: function (v) {
86            this.$el.find("div[data-variantIndex]").removeClass("active-variant");
87            this.$el.find("div[data-variantIndex=" + v + "]").addClass("active-variant");
88        }
89    });
90
91
92    api.init = function() {
93        if ($("body").hasClass("on-page-editor") || initialized) {
94            return;
95        }
96
97        queryModel = XA.component.search.query;
98        queryParameters = XA.component.search.parameters;
99
100        var variantSelectors = $(".variant-selector");
101        _.each(variantSelectors, function (elem) {
102            var view = new VariantSelectorView({el: $(elem), model: new VariantSelectorModel()});
103        });
104
105        initialized = true;
106    };
107
108    api.getVariantMappings = function (signature) {
109        var variantSelectors = $(".variant-selector"),
110            componentVariants = {}, 
111            allVariantItems,
112            signatures = [],
113            properties,
114            i;
115
116        if (!variantMappings.hasOwnProperty(signature)) {
117            for (i = 0; i < variantSelectors.length; i++) {
118                properties = $(variantSelectors[i]).data().properties;
119                signatures = properties.searchResultsSignature.split(',');
120
121                if (signatures.indexOf(signature) !== -1) {
122                    allVariantItems = $(variantSelectors[i]).find(".variant-option");
123                    _.each(allVariantItems, function (variant) {
124                        var data = $(variant).data();
125                        componentVariants[data.variantindex] = { id: data.variant, cssClass: $(variant).attr("class")};
126                    });
127                    variantMappings[signature] = componentVariants;
128                }
129            }            
130        }
131
132        if (variantMappings.hasOwnProperty(signature)) {
133            return variantMappings[signature];
134        } 
135
136        return {};
137    };
138
139    return api;
140
141}(jQuery, document));
142
143XA.register('variantFilter', XA.component.search.variantFilter);
144

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.