Updated application sources
[apps/web/sample/ExercisePlanner.git] / project / js / main.js
index f928da4..c302f82 100644 (file)
  *      See the License for the specific language governing permissions and
  *      limitations under the License.
  */
-/*global ExercisePlanner, tizen, $, document*/
-var c = null, exercisePlanner = null, appService = null, ui = null;
 
-exercisePlanner = new ExercisePlanner();
-$(document).ready(exercisePlanner.init.bind(exercisePlanner));
+/*jslint devel: true*/
+/*global $, tizen, App  */
 
+/**
+ * This file acts as a loader for the application and its dependencies
+ *
+ * First, the 'app.js' script is loaded .
+ * Then, scripts defined in 'app.requires' are loaded.
+ * Finally, the app is initialised - the app is instantiated ('app = new App()')
+ * and 'app.init()' is called.
+ */
+
+var app = null;
+
+(function () { // strict mode wrapper
+    'use strict';
+
+    ({
+        /**
+         * Loader init - load the App constructor
+         */
+        init: function init() {
+            var self = this;
+            $.getScript('js/app.js').done(function onAppLoaded() {
+                // once the app is loaded, create the app object
+                // and load the libraries
+                app = new App();
+                self.loadLibs();
+            }).fail(this.onGetScriptError);
+        },
+        /**
+         * Load dependencies
+         */
+        loadLibs: function loadLibs() {
+            var loadedLibs = 0;
+            if ($.isArray(app.requires)) {
+                $.each(app.requires, function onLibLoaded(index, filename) {
+                    $.getScript(filename).done(function () {
+                        loadedLibs += 1;
+                        if (loadedLibs >= app.requires.length) {
+                            // All dependencies are loaded - initialise the app
+                            app.init();
+                        }
+                    }).fail(function (e) {
+                        console.error('Loading libs failed');
+                    });
+                });
+            }
+        },
+        /**
+         * Handle ajax errors
+         */
+        onGetScriptError: function onGetScriptError(
+            e,
+            jqxhr,
+            setting,
+            exception
+        ) {
+            alert('An error occurred: ' + e.message);
+        }
+    }).init(); // run the loader
+
+}());