nicholas@2851: /* globals angular, window, Promise, XMLHttpRequest, Specification */ nicholas@2851: function get(url) { nicholas@2851: // Return a new promise. nicholas@2851: return new Promise(function (resolve, reject) { nicholas@2851: // Do the usual XHR stuff nicholas@2851: var req = new XMLHttpRequest(); nicholas@2851: req.open('GET', url); nickjillings@1370: nicholas@2851: req.onload = function () { nicholas@2851: // This is called even on 404 etc nicholas@2851: // so check the status nicholas@2851: if (req.status == 200) { nicholas@2851: // Resolve the promise with the response text nicholas@2851: resolve(req.response); nicholas@2851: } else { nicholas@2851: // Otherwise reject with the status text nicholas@2851: // which will hopefully be a meaningful error nicholas@2851: reject(Error(req.statusText)); nicholas@2851: } nicholas@2851: }; nicholas@2851: nicholas@2851: // Handle network errors nicholas@2851: req.onerror = function () { nicholas@2851: reject(Error("Network Error")); nicholas@2851: }; nicholas@2851: nicholas@2851: // Make the request nicholas@2851: req.send(); nicholas@2851: }); nickjillings@1370: } nickjillings@1370: nicholas@2851: var AngularInterface = angular.module("creator", []); nickjillings@1370: nicholas@2851: var specification = new Specification(); nickjillings@1370: nicholas@2535: window.onload = function () { nicholas@2851: // Get the test interface specifications nicholas@2535: nicholas@2851: }; nicholas@2535: nicholas@2851: AngularInterface.controller("view", ['$scope', '$element', '$window', function ($s, $e, $w) { nicholas@2851: $s.popupVisible = true; nickjillings@1370: nicholas@2851: $s.showPopup = function () { nicholas@2851: $s.popupVisible = true; nicholas@2851: }; nicholas@2851: $s.hidePopup = function () { nicholas@2851: $s.popupVisible = false; nicholas@2851: }; nicholas@2851: $s.globalSchema = undefined; nicholas@2851: get("xml/test-schema.xsd").then(function (text) { nicholas@2851: specification.processSchema(text); nicholas@2851: $s.globalSchema = specification.getSchema(); nicholas@2851: }); nicholas@2851: $s.specification = specification; nicholas@2851: }]); nickjillings@1370: nicholas@2851: AngularInterface.controller("introduction", ['$scope', '$element', '$window', function ($s, $e, $w) { nicholas@2851: $s.state = 0; nicholas@2851: $s.next = function () { nicholas@2851: $s.state++; nicholas@2851: if ($s.state > 1) { nicholas@2851: $s.hidePopup(); nicholas@2851: } nicholas@2851: }; nicholas@2851: $s.back = function () { nicholas@2851: $s.state--; nicholas@2851: }; nicholas@2851: $s.mouseover = function (name) { nicholas@2851: var obj = $s.interfaces.find(function (i) { nicholas@2851: return i.name == name; nicholas@2851: }); nicholas@2851: if (obj) { nicholas@2851: $s.description = obj.description.en; nicholas@2851: } nicholas@2851: }; nicholas@2851: $s.initialise = function (name) { nicholas@2851: var obj = $s.interfaces.find(function (i) { nicholas@2851: return i.name == name; nicholas@2851: }); nicholas@2851: specification.interface = obj.interface; nicholas@2851: }; nicholas@2851: // Get the test interface specifications nicholas@2851: $s.interfaces = {}; nicholas@2851: $s.description = ""; nicholas@2851: var interfaceCollection = new Promise(function (resolve, reject) { nicholas@2851: var xml = new XMLHttpRequest(); nicholas@2851: xml.open("GET", "test_create/interfaces/specifications.json"); nicholas@2851: xml.onload = function () { nicholas@2851: if (xml.status === 200) { nicholas@2851: resolve(xml.responseText); nicholas@2851: return; nicholas@2851: } nicholas@2851: reject(xml.status); nicholas@2851: }; nicholas@2851: xml.onerror = function () { nicholas@2851: reject(new Error("Network Error")); nicholas@2851: }; nicholas@2851: xml.send(); nicholas@2851: }).then(JSON.parse).then(function (data) { nicholas@2851: $s.interfaces = data.interfaces; nicholas@2851: $s.$apply(); nicholas@2851: }); nicholas@2851: }]); nickjillings@1370: nicholas@2851: AngularInterface.controller("setup", ['$scope', '$element', '$window', function ($s, $e, $w) { nicholas@2851: function initialise() { nicholas@2851: if ($s.globalSchema) { nicholas@2851: $s.schema = $s.globalSchema.querySelector("[name=setup]"); nickjillings@1385: } nickjillings@1370: } nicholas@2851: $s.schema = undefined; nicholas@2851: $s.attributes = []; nicholas@2851: $s.model = specification; nickjillings@1370: nicholas@2851: $s.$watch("globalSchema", initialise); nicholas@2851: }]);