~paparazzi-uav/paparazzi/v5.0-manual

« back to all changes in this revision

Viewing changes to sw/ext/opencv_bebop/opencv/samples/winrt/JavaScript/sample-utils/sample-utils.js

  • Committer: Paparazzi buildbot
  • Date: 2016-05-18 15:00:29 UTC
  • Revision ID: felix.ruess+docbot@gmail.com-20160518150029-e8lgzi5kvb4p7un9
Manual import commit 4b8bbb730080dac23cf816b98908dacfabe2a8ec from v5.0 branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//// Copyright (c) Microsoft Corporation. All rights reserved
 
2
 
 
3
// This file is a part of the SDK sample framework. For code demonstrating scenarios in this particular sample,
 
4
// please see the html, css and js folders.
 
5
 
 
6
(function () {
 
7
 
 
8
    //
 
9
    // Helper controls used in the sample pages
 
10
    //
 
11
 
 
12
    // The ScenarioInput control inserts the appropriate markup to get labels & controls
 
13
    // hooked into the input section of a scenario page so that it's not repeated in
 
14
    // every one.
 
15
 
 
16
    var lastError = "";
 
17
    var lastStatus = "";
 
18
    var ScenarioInput = WinJS.Class.define(
 
19
        function (element, options) {
 
20
        element.winControl = this;
 
21
        this.element = element;
 
22
 
 
23
        new WinJS.Utilities.QueryCollection(element)
 
24
                    .setAttribute("role", "main")
 
25
                    .setAttribute("aria-labelledby", "inputLabel");
 
26
        element.id = "input";
 
27
 
 
28
        this.addInputLabel(element);
 
29
        this.addDetailsElement(element);
 
30
        this.addScenariosPicker(element);
 
31
    }, {
 
32
        addInputLabel: function (element) {
 
33
            var label = document.createElement("h2");
 
34
            label.textContent = "Input";
 
35
            label.id = "inputLabel";
 
36
            element.parentNode.insertBefore(label, element);
 
37
        },
 
38
        addScenariosPicker: function (parentElement) {
 
39
            var scenarios = document.createElement("div");
 
40
            scenarios.id = "scenarios";
 
41
            var control = new ScenarioSelect(scenarios);
 
42
 
 
43
            parentElement.insertBefore(scenarios, parentElement.childNodes[0]);
 
44
        },
 
45
 
 
46
        addDetailsElement: function (sourceElement) {
 
47
            var detailsDiv = this._createDetailsDiv();
 
48
            while (sourceElement.childNodes.length > 0) {
 
49
                detailsDiv.appendChild(sourceElement.removeChild(sourceElement.childNodes[0]));
 
50
            }
 
51
            sourceElement.appendChild(detailsDiv);
 
52
        },
 
53
        _createDetailsDiv: function () {
 
54
            var detailsDiv = document.createElement("div");
 
55
 
 
56
            new WinJS.Utilities.QueryCollection(detailsDiv)
 
57
                        .addClass("details")
 
58
                        .setAttribute("role", "region")
 
59
                        .setAttribute("aria-labelledby", "descLabel")
 
60
                        .setAttribute("aria-live", "assertive");
 
61
 
 
62
            var label = document.createElement("h3");
 
63
            label.textContent = "Description";
 
64
            label.id = "descLabel";
 
65
 
 
66
            detailsDiv.appendChild(label);
 
67
            return detailsDiv;
 
68
        },
 
69
    }
 
70
    );
 
71
 
 
72
    // The ScenarioOutput control inserts the appropriate markup to get labels & controls
 
73
    // hooked into the output section of a scenario page so that it's not repeated in
 
74
    // every one.
 
75
 
 
76
    var ScenarioOutput = WinJS.Class.define(
 
77
        function (element, options) {
 
78
        element.winControl = this;
 
79
        this.element = element;
 
80
        new WinJS.Utilities.QueryCollection(element)
 
81
                    .setAttribute("role", "region")
 
82
                    .setAttribute("aria-labelledby", "outputLabel")
 
83
                    .setAttribute("aria-live", "assertive");
 
84
        element.id = "output";
 
85
 
 
86
        this._addOutputLabel(element);
 
87
        this._addStatusOutput(element);
 
88
    }, {
 
89
        _addOutputLabel: function (element) {
 
90
            var label = document.createElement("h2");
 
91
            label.id = "outputLabel";
 
92
            label.textContent = "Output";
 
93
            element.parentNode.insertBefore(label, element);
 
94
        },
 
95
        _addStatusOutput: function (element) {
 
96
            var statusDiv = document.createElement("div");
 
97
            statusDiv.id = "statusMessage";
 
98
            statusDiv.setAttribute("role", "textbox");
 
99
            element.insertBefore(statusDiv, element.childNodes[0]);
 
100
        }
 
101
    }
 
102
    );
 
103
 
 
104
 
 
105
    // Sample infrastructure internals
 
106
 
 
107
    var currentScenarioUrl = null;
 
108
 
 
109
    WinJS.Navigation.addEventListener("navigating", function (evt) {
 
110
        currentScenarioUrl = evt.detail.location;
 
111
    });
 
112
 
 
113
    WinJS.log = function (message, tag, type) {
 
114
        var isError = (type === "error");
 
115
        var isStatus = (type === "status");
 
116
 
 
117
        if (isError || isStatus) {
 
118
            var statusDiv = /* @type(HTMLElement) */ document.getElementById("statusMessage");
 
119
            if (statusDiv) {
 
120
                statusDiv.innerText = message;
 
121
                if (isError) {
 
122
                    lastError = message;
 
123
                    statusDiv.style.color = "blue";
 
124
                } else if (isStatus) {
 
125
                    lastStatus = message;
 
126
                    statusDiv.style.color = "green";
 
127
                }
 
128
            }
 
129
        }
 
130
    };
 
131
 
 
132
    // Control that populates and runs the scenario selector
 
133
 
 
134
    var ScenarioSelect = WinJS.UI.Pages.define("/sample-utils/scenario-select.html", {
 
135
        ready: function (element, options) {
 
136
            var that = this;
 
137
            var selectElement = WinJS.Utilities.query("#scenarioSelect", element);
 
138
            this._selectElement = selectElement[0];
 
139
 
 
140
            SdkSample.scenarios.forEach(function (s, index) {
 
141
                that._addScenario(index, s);
 
142
            });
 
143
 
 
144
            selectElement.listen("change", function (evt) {
 
145
                var select = evt.target;
 
146
                if (select.selectedIndex >= 0) {
 
147
                    var newUrl = select.options[select.selectedIndex].value;
 
148
                    WinJS.Navigation.navigate(newUrl);
 
149
                }
 
150
            });
 
151
            selectElement[0].size = (SdkSample.scenarios.length > 5 ? 5 : SdkSample.scenarios.length);
 
152
            if (SdkSample.scenarios.length === 1) {
 
153
                // Avoid showing down arrow when there is only one scenario
 
154
                selectElement[0].setAttribute("multiple", "multiple");
 
155
            }
 
156
 
 
157
            // Use setImmediate to ensure that the select element is set as active only after
 
158
            // the scenario page has been constructed.
 
159
            setImmediate(function () {
 
160
                that._selectElement.setActive();
 
161
            });
 
162
        },
 
163
 
 
164
        _addScenario: function (index, info) {
 
165
            var option = document.createElement("option");
 
166
            if (info.url === currentScenarioUrl) {
 
167
                option.selected = "selected";
 
168
            }
 
169
            option.text = (index + 1) + ") " + info.title;
 
170
            option.value = info.url;
 
171
            this._selectElement.appendChild(option);
 
172
        }
 
173
    });
 
174
 
 
175
    function activated(e) {
 
176
        WinJS.Utilities.query("#featureLabel")[0].textContent = SdkSample.sampleTitle;
 
177
    }
 
178
 
 
179
    WinJS.Application.addEventListener("activated", activated, false);
 
180
 
 
181
    // Export public methods & controls
 
182
    WinJS.Namespace.define("SdkSample", {
 
183
        ScenarioInput: ScenarioInput,
 
184
        ScenarioOutput: ScenarioOutput
 
185
    });
 
186
 
 
187
    // SDK Sample Test helper
 
188
    document.TestSdkSample = {
 
189
        getLastError: function () {
 
190
            return lastError;
 
191
        },
 
192
 
 
193
        getLastStatus: function () {
 
194
            return lastStatus;
 
195
        },
 
196
 
 
197
        selectScenario: function (scenarioID) {
 
198
            scenarioID = scenarioID >> 0;
 
199
            var select = document.getElementById("scenarioSelect");
 
200
            var newUrl = select.options[scenarioID - 1].value;
 
201
            WinJS.Navigation.navigate(newUrl);
 
202
        }
 
203
    };
 
204
})();