DimaBondarenko преди 2 години
родител
ревизия
803d7e0fd5
променени са 5 файла, в които са добавени 120 реда и са изтрити 0 реда
  1. 2 0
      HWJS15/css/style.min.css
  2. 9 0
      HWJS15/css/style.min.css.map
  3. 14 0
      HWJS15/index.html
  4. 91 0
      HWJS15/js/script.js
  5. 4 0
      HWJS15/sass/style.scss

+ 2 - 0
HWJS15/css/style.min.css

@@ -0,0 +1,2 @@
+*{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}
+/*# sourceMappingURL=style.min.css.map */

+ 9 - 0
HWJS15/css/style.min.css.map

@@ -0,0 +1,9 @@
+{
+    "version": 3,
+    "mappings": "AAAA,AAAA,CAAC,AAAA,CACG,UAAU,CAAE,UAAU,CACtB,MAAM,CAAE,CAAC,CACZ",
+    "sources": [
+        "../sass/style.scss"
+    ],
+    "names": [],
+    "file": "style.min.css"
+}

+ 14 - 0
HWJS15/index.html

@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+    <link rel="stylesheet" href="css/style.min.css">
+</head>
+<body>
+    
+    <script src="js/script.js"></script>
+</body>
+</html>

+ 91 - 0
HWJS15/js/script.js

@@ -0,0 +1,91 @@
+let url = 'http://shop-roles.asmer.fs.a-level.com.ua/graphql';
+
+const getGQL = url => (query,variables = {}) => 
+fetch(url, {
+        method : 'POST',
+        headers : {
+            'Content-Type' : 'application/json',
+            'Accept' : 'application/json',
+            ...(localStorage.authToken ? {"Authorization": "Bearer " + localStorage.authToken} : {})
+        },
+        body : JSON.stringify({query,variables})
+    }
+).then(res => res.json())
+.then((data)=>{
+
+    if(data.errors && !data.data){
+        throw new Error(JSON.stringify(data.errors))
+    } else {
+        let ar = Object.values(data.data)
+        return ar[0]
+    }
+}).then((data) => data);
+
+const gql = getGQL(url);
+
+async function login(log,pass){
+    let token = await gql(`query login($login:String, $password:String){
+        login(login:$login, password : $password)
+    }`, {login : log, password : pass});
+
+    localStorage.authToken = await token;
+}
+
+async function register(log,pass){
+    let data = await gql( `mutation register($login: String, $password: String) {
+        UserUpsert(user: {login: $login, password: $password}) {
+          _id
+          login
+        }
+      }`, {login : log, password : pass});
+
+    console.log(data);
+}
+
+async function findCat(id){                                     // + все гуды этой категории (айди и имя)
+    let data = await gql( `query findCatOne($q1: String) {
+        CategoryFindOne(query: $q1) {
+          name
+          _id
+          goods {                                                 
+            _id
+            name
+          }
+        }
+      }`, {q1 : JSON.stringify([{_id: id}])});
+
+    console.log(data);  
+}
+
+async function newOrder(){
+    let data = await gql( `mutation newOrder($order: OrderInput) {
+        OrderUpsert(order: $order) {
+          _id
+          total
+        }
+      }`, {order :{
+            orderGoods: [
+                    {count: 2, good: {_id: "5dc4a3e15df9d670df48cc6b"}},
+                    {count: 3, good: {_id: "5e247bbb56d8f720513e6ce2"}}
+            ]
+    }})
+    console.log(data) ///=====>{_id: '61db3220c750c12ba6ba4fa4', total: 23997}
+}
+
+async function findGoodId(id){
+    let data = await gql(`query findGood($goodId: String) {
+        GoodFindOne(query: $goodId) {
+          name
+          price
+        }
+      }`, {goodId : JSON.stringify([{_id: id}])})
+
+      console.log(data)                 //=====>>>{name: 'Морс смородиновый (1 л)', price: 60}
+}
+
+register('qwewe12334', '445224')
+login("user24049312", "240493");
+findCat("5dc94bd00e36db246e3049ee");
+newOrder();
+findGoodId("5dcac4ce6d09c45440d14cf9");
+

+ 4 - 0
HWJS15/sass/style.scss

@@ -0,0 +1,4 @@
+*{
+    box-sizing: border-box;
+    margin: 0;
+}