ソースを参照

Levels 3.10 to 3.13: .

Frederic G. MARAND 6 年 前
コミット
252da106c8

+ 68 - 47
.idea/workspace.xml

@@ -3,7 +3,12 @@
   <component name="ChangeListManager">
     <list default="true" id="179343f7-015f-440a-93a8-15155b9f2a03" name="Default" comment="">
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/index.html" afterPath="$PROJECT_DIR$/index.html" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/app.js" afterPath="$PROJECT_DIR$/js/app.js" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/controllers/notes-create-controller.js" afterPath="$PROJECT_DIR$/js/controllers/notes-create-controller.js" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/controllers/notes-edit-controller.js" afterPath="$PROJECT_DIR$/js/controllers/notes-edit-controller.js" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/controllers/notes-index-controller.js" afterPath="$PROJECT_DIR$/js/controllers/notes-index-controller.js" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/controllers/notes-show-controller.js" afterPath="$PROJECT_DIR$/js/controllers/notes-show-controller.js" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/services/note.js" afterPath="$PROJECT_DIR$/js/services/note.js" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="TRACKING_ENABLED" value="true" />
@@ -13,7 +18,18 @@
     <option name="LAST_RESOLUTION" value="IGNORE" />
   </component>
   <component name="FileEditorManager">
-    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300" />
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
+      <file leaf-file-name="notes-index-controller.js" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/js/controllers/notes-index-controller.js">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="60">
+              <caret line="4" column="0" lean-forward="true" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
   </component>
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
@@ -60,12 +76,9 @@
         <option value="$PROJECT_DIR$/notes" />
         <option value="$PROJECT_DIR$/.eslintrc.yml" />
         <option value="$PROJECT_DIR$/notes.json" />
-        <option value="$PROJECT_DIR$/js/controllers/notes-create-controller.js" />
         <option value="$PROJECT_DIR$/templates/pages/notes/nw-card.html" />
         <option value="$PROJECT_DIR$/js/nw-card.js" />
         <option value="$PROJECT_DIR$/templates/pages/notes/index.html" />
-        <option value="$PROJECT_DIR$/js/controllers/notes-index-controller.js" />
-        <option value="$PROJECT_DIR$/js/controllers/notes-show-controller.js" />
         <option value="$PROJECT_DIR$/templates/pages/notes/show.html" />
         <option value="$PROJECT_DIR$/js/routes.js" />
         <option value="$PROJECT_DIR$/templates/pages/notes/notes.html" />
@@ -74,8 +87,13 @@
         <option value="$PROJECT_DIR$/js/directives/nw-card.js" />
         <option value="$PROJECT_DIR$/js/services/gravatar.js" />
         <option value="$PROJECT_DIR$/js/controllers/users-index-controller.js" />
-        <option value="$PROJECT_DIR$/js/app.js" />
         <option value="$PROJECT_DIR$/index.html" />
+        <option value="$PROJECT_DIR$/js/app.js" />
+        <option value="$PROJECT_DIR$/js/controllers/notes-show-controller.js" />
+        <option value="$PROJECT_DIR$/js/controllers/notes-index-controller.js" />
+        <option value="$PROJECT_DIR$/js/controllers/notes-create-controller.js" />
+        <option value="$PROJECT_DIR$/js/services/note.js" />
+        <option value="$PROJECT_DIR$/js/controllers/notes-edit-controller.js" />
       </list>
     </option>
   </component>
@@ -271,10 +289,11 @@
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="16793000" />
+    <option name="totallyTimeSpent" value="18109000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="23" width="1440" height="877" extended-state="6" />
+    <editor active="true" />
     <layout>
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
@@ -282,7 +301,7 @@
       <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
       <window_info id="Mongo Explorer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="true" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.26037195" sideWeight="0.5" order="5" side_tool="false" content_ui="combo" />
+      <window_info id="Project" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.26037195" sideWeight="0.5" order="5" side_tool="false" content_ui="combo" />
       <window_info id="Docker" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
       <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32992327" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
@@ -324,14 +343,6 @@
     <watches-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/templates/directives/nw-card.html">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="30">
-          <caret line="2" column="0" lean-forward="false" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/templates/pages/notes/index.html">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="315">
@@ -539,13 +550,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/js/controllers/notes-create-controller.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/templates/pages/notes/index.html">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="120">
@@ -553,13 +557,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/js/routes.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="210">
-          <caret line="14" column="11" lean-forward="false" selection-start-line="14" selection-start-column="11" selection-end-line="14" selection-end-column="11" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/templates/pages/notes/show.html">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="180">
@@ -614,55 +611,79 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/js/controllers/users-show-controller.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/js/controllers/users-index-controller.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="15">
+          <caret line="1" column="56" lean-forward="true" selection-start-line="1" selection-start-column="56" selection-end-line="1" selection-end-column="56" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/js/services/gravatar.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="240">
+          <caret line="16" column="0" lean-forward="true" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/js/controllers/notes-show-controller.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="10" column="6" lean-forward="true" selection-start-line="10" selection-start-column="6" selection-end-line="10" selection-end-column="6" />
+        <state relative-caret-position="60">
+          <caret line="4" column="0" lean-forward="true" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/js/controllers/notes-index-controller.js">
+    <entry file="file://$PROJECT_DIR$/js/routes.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="30">
-          <caret line="2" column="0" lean-forward="false" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
+        <state relative-caret-position="180">
+          <caret line="12" column="43" lean-forward="true" selection-start-line="12" selection-start-column="43" selection-end-line="12" selection-end-column="43" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/js/controllers/users-show-controller.js">
+    <entry file="file://$PROJECT_DIR$/js/app.js">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <caret line="0" column="55" lean-forward="false" selection-start-line="0" selection-start-column="55" selection-end-line="0" selection-end-column="55" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/js/services/note.js">
+    <entry file="file://$PROJECT_DIR$/js/controllers/notes-edit-controller.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="225">
-          <caret line="14" column="3" lean-forward="true" selection-start-line="14" selection-start-column="3" selection-end-line="14" selection-end-column="3" />
+        <state relative-caret-position="270">
+          <caret line="17" column="43" lean-forward="false" selection-start-line="17" selection-start-column="43" selection-end-line="17" selection-end-column="43" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/js/controllers/users-index-controller.js">
+    <entry file="file://$PROJECT_DIR$/js/services/note.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="15">
-          <caret line="1" column="56" lean-forward="true" selection-start-line="1" selection-start-column="56" selection-end-line="1" selection-end-column="56" />
+        <state relative-caret-position="240">
+          <caret line="15" column="0" lean-forward="true" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/js/services/gravatar.js">
+    <entry file="file://$PROJECT_DIR$/js/controllers/notes-create-controller.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="240">
-          <caret line="16" column="0" lean-forward="true" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
+        <state relative-caret-position="210">
+          <caret line="14" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/js/app.js">
+    <entry file="file://$PROJECT_DIR$/js/controllers/notes-index-controller.js">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="60">
           <caret line="4" column="0" lean-forward="true" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />

+ 1 - 1
js/app.js

@@ -1,4 +1,4 @@
-angular.module("noteWrangler", ['ngRoute'])
+angular.module("noteWrangler", ['ngRoute', 'ngResource'])
   .config(function (GravatarProvider) {
     GravatarProvider.setSize(100);
   });

+ 12 - 21
js/controllers/notes-create-controller.js

@@ -1,27 +1,18 @@
 angular.module("noteWrangler")
-  .controller("NoteCreateController", function ($http) {
-    const controller = this;
+  .controller("NoteCreateController", function ($scope, Note) {
+    $scope.note = new Note();
 
-    this.saveNote = function (note) {
-      controller.errors = null;
-      $http({
-        method: "POST",
-        url: "/notes.json",
-        data: note,
-      }).catch(function (note) {
-        controller.errors = note.data.error;
-      })
-        .then(responseHandler, errorHandler);
+    $scope.saveNote = function (note) {
+      $scope.errors = null;
+      $scope.updating = true;
+      note.$save(note)
+        .catch(function (note) {
+          $scope.errors = [note.data.error];
+        })
+        .finally(function () {
+          $scope.updating = false;
+        });
     };
-
-    const errorHandler = function (err) {
-      console.log("Error getting /notes", err);
-    };
-
-    const responseHandler = function (data) {
-      controller.notes = data.data;
-    };
-
   });
 
 /* Somewhere in templates, to show the error:

+ 17 - 2
js/controllers/notes-edit-controller.js

@@ -1,6 +1,21 @@
 angular.module('noteWrangler')
-  .controller("NotesEditController", ['$scope', 'Note', function ($scope, Note) {
+  .controller("NotesEditController", ['$scope', '$routeParams', 'Note', function ($scope, $routeParams, Note) {
+    $scope.note = Note.get({ id: $routeParams.id });
     $scope.updateNote = function (noteObj) {
-      Note.create(noteObj);
+      $scope.errors = null;
+      $scope.updating = true;
+      // NB: we declared "update", but call "$update".
+      Note.$update(noteObj)
+        .catch(function (note) {
+          $scope.errors = [note.data.error];
+        })
+        .finally(function () {
+          $scope.updating = false;
+        });
+    };
+
+    $scope.deleteNode = function(note) {
+      // $remove is the same, but avoids problems with delete being reserved in IE.
+      Note.$delete(note);
     };
   }]);

+ 1 - 10
js/controllers/notes-index-controller.js

@@ -1,13 +1,4 @@
 angular.module("noteWrangler")
   .controller("NotesIndexController", ['$scope', 'Note', function ($scope, Note) {
-    const errorHandler = function (err) {
-      console.log("Error getting /notes", err);
-    };
-
-    const responseHandler = function (data) {
-      $scope.notes = data.data;
-    };
-
-    Note.all()
-      .then(responseHandler, errorHandler);
+    $scope.notes = Note.query();
   }]);

+ 2 - 15
js/controllers/notes-show-controller.js

@@ -1,17 +1,4 @@
 angular.module("noteWrangler")
-  .controller("NotesShowController", function ($http, $routeParams, $scope) {
-
-    const errorHandler = function (err) {
-      console.log("Error getting /notes", err);
-    };
-
-    const responseHandler = function (data) {
-      const id = parseInt($routeParams.id, 10);
-      $scope.note = data.data[id];
-    };
-
-    $http({
-      method: "GET",
-      url: "/notes.json"
-    }).then(responseHandler, errorHandler);
+  .controller("NotesShowController", function ($http, $routeParams, $scope, Note) {
+    $scope.note = Note.get({ id: $routeParams.id });
   });

+ 7 - 33
js/services/note.js

@@ -11,36 +11,10 @@ There are 5 types of services:
 
 angular.module("noteWrangler")
   // Naming the function <service>Factory is a common convention.
-  .factory('Note', ['$http', function NoteFactory($http) {
-    return {
-      all: function () {
-        return $http({
-          method: "GET",
-          url: "/notes.json",
-        });
-      },
-
-      find: function (id) {
-        return $http({
-          method: "GET",
-          url: "/notes/" + id.toString(),
-        });
-      },
-
-      create: function (noteObj) {
-        return $http({
-          method: "POST",
-          url: "/notes",
-          data: noteObj,
-        });
-      },
-
-      update: function (nodeObj) {
-        return $http({
-          method: "PUT",
-          url: "/notes",
-          data: nodeObj,
-        })
-      },
-    }
-  }]);
+  .factory('Note', function NoteFactory($resource) {
+    return $resource("/notes/:id", {}, {
+      update: {
+        method: "PUT",
+      }
+    });
+  });