Ver código fonte

Part, dspec, bom save and update working

master
rpm-mcarman 2 anos atrás
pai
commit
7af0b24552
40 arquivos alterados com 7574 adições e 124 exclusões
  1. +1
    -1
      .wappler/project.json
  2. +3
    -0
      .wappler/targets/Development/app/config/config.json
  3. +1
    -1
      app/api/BOM/NewBomItem.json
  4. +0
    -3
      app/api/BOM/UpdateBomItem.json
  5. +214
    -1
      app/api/DSpec/Create.json
  6. +1
    -1
      app/api/DSpec/SearchPID.json
  7. +2
    -2
      app/api/MaxPNs/Increase.json
  8. +86
    -0
      app/api/MaxPNs/MaxPN.json
  9. +85
    -33
      app/api/PartCodes/All.json
  10. +314
    -0
      app/api/PartCodes/ByPartType.json
  11. +99
    -55
      app/api/PartTypes/All.json
  12. +274
    -0
      app/api/PartTypes/GetAll.json
  13. +16
    -16
      app/api/Parts/Create.json
  14. +165
    -0
      app/api/Parts/CreatePart.json
  15. +1
    -1
      app/api/Parts/Seach.json
  16. +3
    -0
      app/config/config.json
  17. +5
    -0
      app/config/routes.json
  18. +8
    -0
      app/modules/global.json
  19. +5629
    -0
      public/dmxAppConnect/config.js
  20. +8
    -0
      public/dmxAppConnect/dmxDatastore/dmxDatastore.js
  21. +60
    -0
      public/dmxAppConnect/dmxDatePicker/bgthemes/dark-calendar.css
  22. +8
    -0
      public/dmxAppConnect/dmxDatePicker/daterangepicker.min.css
  23. +8
    -0
      public/dmxAppConnect/dmxDatePicker/daterangepicker.min.js
  24. +33
    -0
      public/dmxAppConnect/dmxDatePicker/dmxDatePicker.css
  25. +8
    -0
      public/dmxAppConnect/dmxDatePicker/dmxDatePicker.js
  26. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/blue.css
  27. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/cyan.css
  28. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/dark-gray.css
  29. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/gray.css
  30. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/green.css
  31. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/orange.css
  32. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/pink.css
  33. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/purple.css
  34. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/red.css
  35. +22
    -0
      public/dmxAppConnect/dmxDatePicker/themes/teal.css
  36. +4
    -0
      views/.wappler_folder.json
  37. +9
    -5
      views/dspec.ejs
  38. +294
    -0
      views/dspec2.ejs
  39. +4
    -4
      views/index.ejs
  40. +11
    -1
      views/layouts/main.ejs

+ 1
- 1
.wappler/project.json Ver arquivo

@@ -27,7 +27,7 @@
"targets": [
{
"name": "Development",
"remoteURL": "http://localhost:3000/",
"remoteURL": "http://localhost:3000",
"access": "local"
}
],


+ 3
- 0
.wappler/targets/Development/app/config/config.json Ver arquivo

@@ -4,5 +4,8 @@
"cors": {
"origin": "*",
"methods": "GET,POST,DELETE,PATCH,PUT"
},
"env": {
"API_BASEURL": "http://vapor.prelub.com/api/v1.0/"
}
}

+ 1
- 1
app/api/BOM/NewBomItem.json Ver arquivo

@@ -60,7 +60,7 @@
"updateuserid": "-1",
"partnumberid": "{{$_POST.newbompnid}}"
},
"url": "http://vapor.prelub.com/api/v1.0/boms/wapplerinsert"
"url": "{{$_ENV.API_BASEURL+'boms/wapplerinsert'}}"
},
"output": true
}


+ 0
- 3
app/api/BOM/UpdateBomItem.json Ver arquivo

@@ -1,3 +0,0 @@
{
"exec": {}
}

+ 214
- 1
app/api/DSpec/Create.json Ver arquivo

@@ -42,5 +42,218 @@
}
]
},
"exec": {}
"exec": {
"steps": {
"name": "api",
"module": "api",
"action": "send",
"options": {
"method": "POST",
"url": "{{$_ENV.API_BASEURL+'designspecs/altin'}}",
"dataType": "json",
"data": {
"id": null,
"revisionlevel": "{{$_POST.dspecrev}}",
"partnumber": {
"id": "{{$_POST.dspecpnid}}",
"secondaryvendor": {},
"status": {
"id": 4
},
"partcode": {
"id": 16
},
"replacedby": {},
"replaces": {},
"primaryvendor": {}
},
"status": {
"id": "{{$_POST.dspecstatusid}}"
},
"effectivedate": "{{$_POST.dspeceffectivedate}}",
"reasonforchange": "{{$_POST.dspecreasonforchange}}",
"validation": "{{$_POST.dspecvalidation}}",
"note": "{{$_POST.dspecnotes}}"
},
"schema": [
{
"type": "object",
"name": "data",
"sub": [
{
"type": "text",
"name": "id"
},
{
"type": "text",
"name": "revisionlevel"
},
{
"type": "object",
"name": "partnumber",
"sub": [
{
"type": "number",
"name": "id"
},
{
"type": "object",
"name": "secondaryvendor"
},
{
"type": "object",
"name": "status",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "partcode",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "replacedby"
},
{
"type": "object",
"name": "replaces"
},
{
"type": "object",
"name": "primaryvendor"
}
]
},
{
"type": "object",
"name": "status",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "text",
"name": "effectivedate"
},
{
"type": "text",
"name": "reasonforchange"
},
{
"type": "text",
"name": "validation"
},
{
"type": "text",
"name": "note"
}
]
}
]
},
"output": true,
"meta": [
{
"type": "object",
"name": "data",
"sub": [
{
"type": "text",
"name": "id"
},
{
"type": "text",
"name": "revisionlevel"
},
{
"type": "object",
"name": "partnumber",
"sub": [
{
"type": "number",
"name": "id"
},
{
"type": "object",
"name": "secondaryvendor"
},
{
"type": "object",
"name": "status",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "partcode",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "replacedby"
},
{
"type": "object",
"name": "replaces"
},
{
"type": "object",
"name": "primaryvendor"
}
]
},
{
"type": "object",
"name": "status",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "text",
"name": "effectivedate"
},
{
"type": "text",
"name": "reasonforchange"
},
{
"type": "text",
"name": "validation"
},
{
"type": "text",
"name": "note"
}
]
}
],
"outputType": "object"
}
}
}

+ 1
- 1
app/api/DSpec/SearchPID.json Ver arquivo

@@ -24,7 +24,7 @@
"module": "api",
"action": "send",
"options": {
"url": "http://vapor.prelub.com/api/v1.0/designspecs/max/+$_GET.id",
"url": "{{$_ENV.API_BASEURL+'designspecs/max/'+$_GET.id}}",
"schema": [
{
"type": "array",


+ 2
- 2
app/api/MaxPNs/Increase.json Ver arquivo

@@ -4,7 +4,7 @@
"module": "api",
"action": "send",
"options": {
"url": "http://vapor.prelub.com/api/v1.0/pns/max",
"url": "{{$_ENV.API_BASEURL+'pns/max'}}",
"schema": [
{
"type": "object",
@@ -91,7 +91,7 @@
"action": "send",
"options": {
"method": "POST",
"url": "http://vapor.prelub.com/api/v1.0/pns/",
"url": "{{$_ENV.API_BASEURL+'pns/'}}",
"dataType": "json",
"data": {
"id": null,


+ 86
- 0
app/api/MaxPNs/MaxPN.json Ver arquivo

@@ -0,0 +1,86 @@
{
"name": "api",
"module": "api",
"action": "send",
"options": {
"url": "{{$_ENV.API_BASEURL+'pns/max'}}",
"schema": [
{
"type": "object",
"name": "data",
"sub": [
{
"type": "number",
"name": "number"
},
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "headers",
"sub": [
{
"type": "text",
"name": "connection"
},
{
"type": "text",
"name": "content-length"
},
{
"type": "text",
"name": "content-type"
},
{
"type": "text",
"name": "date"
}
]
}
]
},
"output": true,
"meta": [
{
"type": "object",
"name": "data",
"sub": [
{
"type": "number",
"name": "number"
},
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "headers",
"sub": [
{
"type": "text",
"name": "connection"
},
{
"type": "text",
"name": "content-length"
},
{
"type": "text",
"name": "content-type"
},
{
"type": "text",
"name": "date"
}
]
}
],
"outputType": "object"
}

+ 85
- 33
app/api/PartCodes/All.json Ver arquivo

@@ -28,7 +28,7 @@
"module": "api",
"action": "send",
"options": {
"url": "http://vapor.prelub.com/api/v1.0/partcodes",
"url": "{{$_ENV.API_BASEURL+'partcodes'}}",
"schema": [
{
"type": "array",
@@ -36,12 +36,30 @@
"sub": [
{
"type": "number",
"name": "createuserid"
"name": "id"
},
{
"type": "text",
"name": "description"
},
{
"type": "number",
"name": "createuserid"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "object",
"name": "parent",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "parttype",
@@ -52,31 +70,31 @@
},
{
"type": "text",
"name": "createdate"
"name": "updatedate"
},
{
"type": "text",
"name": "description"
"type": "number",
"name": "id"
},
{
"type": "number",
"name": "starting"
"name": "updateuserid"
},
{
"type": "number",
"name": "updateuserid"
"name": "starting"
},
{
"type": "text",
"name": "updatedate"
"name": "createdate"
},
{
"type": "text",
"name": "name"
"name": "description"
},
{
"type": "number",
"name": "id"
"type": "text",
"name": "name"
},
{
"type": "number",
@@ -85,24 +103,32 @@
]
},
{
"type": "text",
"name": "name"
"type": "boolean",
"name": "ispartcode"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "number",
"name": "id"
"type": "text",
"name": "code"
},
{
"type": "text",
"name": "updatedate"
"type": "array",
"name": "children"
},
{
"type": "boolean",
"name": "isactive"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "name"
}
]
},
@@ -138,12 +164,30 @@
"sub": [
{
"type": "number",
"name": "createuserid"
"name": "id"
},
{
"type": "text",
"name": "description"
},
{
"type": "number",
"name": "createuserid"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "object",
"name": "parent",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "parttype",
@@ -154,31 +198,31 @@
},
{
"type": "text",
"name": "createdate"
"name": "updatedate"
},
{
"type": "text",
"name": "description"
"type": "number",
"name": "id"
},
{
"type": "number",
"name": "starting"
"name": "updateuserid"
},
{
"type": "number",
"name": "updateuserid"
"name": "starting"
},
{
"type": "text",
"name": "updatedate"
"name": "createdate"
},
{
"type": "text",
"name": "name"
"name": "description"
},
{
"type": "number",
"name": "id"
"type": "text",
"name": "name"
},
{
"type": "number",
@@ -187,24 +231,32 @@
]
},
{
"type": "text",
"name": "name"
"type": "boolean",
"name": "ispartcode"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "number",
"name": "id"
"type": "text",
"name": "code"
},
{
"type": "text",
"name": "updatedate"
"type": "array",
"name": "children"
},
{
"type": "boolean",
"name": "isactive"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "name"
}
]
},


+ 314
- 0
app/api/PartCodes/ByPartType.json Ver arquivo

@@ -0,0 +1,314 @@
{
"meta": {
"options": {
"linkedFile": "/views/dspec2.ejs",
"linkedForm": "frm_all"
},
"$_POST": [
{
"type": "text",
"fieldName": "hdnpartnumber",
"name": "hdnpartnumber"
},
{
"type": "text",
"fieldName": "hdnparttyp",
"name": "hdnparttyp"
},
{
"type": "text",
"fieldName": "hdnpartcode",
"name": "hdnpartcode"
},
{
"type": "text",
"fieldName": "partid",
"name": "partid"
},
{
"type": "text",
"fieldName": "parttypes",
"name": "parttypes"
},
{
"type": "text",
"fieldName": "partcodes",
"name": "partcodes"
},
{
"type": "text",
"fieldName": "description",
"name": "description"
},
{
"type": "text",
"fieldName": "comments",
"name": "comments"
}
]
},
"exec": {
"steps": {
"name": "api_byparttype",
"module": "api",
"action": "send",
"options": {
"url": "{{$_ENV.API_BASEURL+'partcode/bytype/'+$_POST.hdnparttyp}}",
"schema": [
{
"type": "array",
"name": "data",
"sub": [
{
"type": "number",
"name": "id"
},
{
"type": "text",
"name": "description"
},
{
"type": "number",
"name": "createuserid"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "object",
"name": "parent",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "parttype",
"sub": [
{
"type": "number",
"name": "ending"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "number",
"name": "id"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "number",
"name": "starting"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "description"
},
{
"type": "text",
"name": "name"
},
{
"type": "number",
"name": "createuserid"
}
]
},
{
"type": "boolean",
"name": "ispartcode"
},
{
"type": "text",
"name": "code"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "array",
"name": "children"
},
{
"type": "boolean",
"name": "isactive"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "name"
}
]
},
{
"type": "object",
"name": "headers",
"sub": [
{
"type": "text",
"name": "connection"
},
{
"type": "text",
"name": "content-length"
},
{
"type": "text",
"name": "content-type"
},
{
"type": "text",
"name": "date"
}
]
}
]
},
"output": true,
"meta": [
{
"type": "array",
"name": "data",
"sub": [
{
"type": "number",
"name": "id"
},
{
"type": "text",
"name": "description"
},
{
"type": "number",
"name": "createuserid"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "object",
"name": "parent",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "parttype",
"sub": [
{
"type": "number",
"name": "ending"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "number",
"name": "id"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "number",
"name": "starting"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "description"
},
{
"type": "text",
"name": "name"
},
{
"type": "number",
"name": "createuserid"
}
]
},
{
"type": "boolean",
"name": "ispartcode"
},
{
"type": "text",
"name": "code"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "array",
"name": "children"
},
{
"type": "boolean",
"name": "isactive"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "name"
}
]
},
{
"type": "object",
"name": "headers",
"sub": [
{
"type": "text",
"name": "connection"
},
{
"type": "text",
"name": "content-length"
},
{
"type": "text",
"name": "content-type"
},
{
"type": "text",
"name": "date"
}
]
}
],
"outputType": "object"
}
}
}

+ 99
- 55
app/api/PartTypes/All.json Ver arquivo

@@ -3,7 +3,7 @@
"module": "api",
"action": "send",
"options": {
"url": "http://vapor.prelub.com/api/v1.0/parttypes",
"url": "{{$_ENV.API_BASEURL+'parttypes'}}",
"schema": [
{
"type": "array",
@@ -11,11 +11,15 @@
"sub": [
{
"type": "text",
"name": "name"
"name": "updatedate"
},
{
"type": "text",
"name": "updatedate"
"type": "number",
"name": "ending"
},
{
"type": "number",
"name": "id"
},
{
"type": "number",
@@ -23,19 +27,15 @@
},
{
"type": "number",
"name": "id"
"name": "updateuserid"
},
{
"type": "array",
"name": "partcodes",
"sub": [
{
"type": "text",
"name": "updatedate"
},
{
"type": "text",
"name": "createdate"
"type": "number",
"name": "id"
},
{
"type": "text",
@@ -45,17 +45,19 @@
"type": "number",
"name": "createuserid"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "text",
"name": "name"
"name": "updatedate"
},
{
"type": "number",
"name": "id"
"type": "object",
"name": "parent",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
@@ -66,28 +68,48 @@
"name": "id"
}
]
},
{
"type": "boolean",
"name": "ispartcode"
},
{
"type": "text",
"name": "code"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "boolean",
"name": "isactive"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "name"
}
]
},
{
"type": "number",
"name": "createuserid"
"type": "text",
"name": "createdate"
},
{
"type": "number",
"name": "updateuserid"
"type": "text",
"name": "description"
},
{
"type": "text",
"name": "createdate"
"name": "name"
},
{
"type": "number",
"name": "ending"
},
{
"type": "text",
"name": "description"
"name": "createuserid"
}
]
},
@@ -123,11 +145,15 @@
"sub": [
{
"type": "text",
"name": "name"
"name": "updatedate"
},
{
"type": "text",
"name": "updatedate"
"type": "number",
"name": "ending"
},
{
"type": "number",
"name": "id"
},
{
"type": "number",
@@ -135,19 +161,15 @@
},
{
"type": "number",
"name": "id"
"name": "updateuserid"
},
{
"type": "array",
"name": "partcodes",
"sub": [
{
"type": "text",
"name": "updatedate"
},
{
"type": "text",
"name": "createdate"
"type": "number",
"name": "id"
},
{
"type": "text",
@@ -157,17 +179,19 @@
"type": "number",
"name": "createuserid"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "text",
"name": "name"
"name": "updatedate"
},
{
"type": "number",
"name": "id"
"type": "object",
"name": "parent",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
@@ -178,28 +202,48 @@
"name": "id"
}
]
},
{
"type": "boolean",
"name": "ispartcode"
},
{
"type": "text",
"name": "code"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "boolean",
"name": "isactive"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "name"
}
]
},
{
"type": "number",
"name": "createuserid"
"type": "text",
"name": "createdate"
},
{
"type": "number",
"name": "updateuserid"
"type": "text",
"name": "description"
},
{
"type": "text",
"name": "createdate"
"name": "name"
},
{
"type": "number",
"name": "ending"
},
{
"type": "text",
"name": "description"
"name": "createuserid"
}
]
},


+ 274
- 0
app/api/PartTypes/GetAll.json Ver arquivo

@@ -0,0 +1,274 @@
{
"name": "api",
"module": "api",
"action": "send",
"options": {
"url": "{{$_ENV.API_BASEURL+'parttypes'}}",
"schema": [
{
"type": "array",
"name": "data",
"sub": [
{
"type": "number",
"name": "ending"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "number",
"name": "id"
},
{
"type": "number",
"name": "starting"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "array",
"name": "partcodes",
"sub": [
{
"type": "number",
"name": "id"
},
{
"type": "text",
"name": "description"
},
{
"type": "number",
"name": "createuserid"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "object",
"name": "parent",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "parttype",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "boolean",
"name": "ispartcode"
},
{
"type": "text",
"name": "code"
},
{
"type": "boolean",
"name": "isactive"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "name"
}
]
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "description"
},
{
"type": "text",
"name": "name"
},
{
"type": "number",
"name": "createuserid"
}
]
},
{
"type": "object",
"name": "headers",
"sub": [
{
"type": "text",
"name": "connection"
},
{
"type": "text",
"name": "content-length"
},
{
"type": "text",
"name": "content-type"
},
{
"type": "text",
"name": "date"
}
]
}
]
},
"output": true,
"meta": [
{
"type": "array",
"name": "data",
"sub": [
{
"type": "number",
"name": "ending"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "number",
"name": "id"
},
{
"type": "number",
"name": "starting"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "array",
"name": "partcodes",
"sub": [
{
"type": "number",
"name": "id"
},
{
"type": "text",
"name": "description"
},
{
"type": "number",
"name": "createuserid"
},
{
"type": "text",
"name": "updatedate"
},
{
"type": "object",
"name": "parent",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "object",
"name": "parttype",
"sub": [
{
"type": "number",
"name": "id"
}
]
},
{
"type": "boolean",
"name": "ispartcode"
},
{
"type": "text",
"name": "code"
},
{
"type": "boolean",
"name": "isactive"
},
{
"type": "number",
"name": "updateuserid"
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "name"
}
]
},
{
"type": "text",
"name": "createdate"
},
{
"type": "text",
"name": "description"
},
{
"type": "text",
"name": "name"
},
{
"type": "number",
"name": "createuserid"
}
]
},
{
"type": "object",
"name": "headers",
"sub": [
{
"type": "text",
"name": "connection"
},
{
"type": "text",
"name": "content-length"
},
{
"type": "text",
"name": "content-type"
},
{
"type": "text",
"name": "date"
}
]
}
],
"outputType": "object"
}

+ 16
- 16
app/api/Parts/Create.json Ver arquivo

@@ -5,6 +5,16 @@
"linkedForm": "frm_partsubmit"
},
"$_POST": [
{
"type": "text",
"fieldName": "savepc",
"name": "savepc"
},
{
"type": "text",
"fieldName": "savept",
"name": "savept"
},
{
"type": "text",
"fieldName": "savepnid",
@@ -24,16 +34,6 @@
"type": "text",
"fieldName": "savepncomments",
"name": "savepncomments"
},
{
"type": "text",
"fieldName": "savepc",
"name": "savepc"
},
{
"type": "text",
"fieldName": "savept",
"name": "savept"
}
]
},
@@ -43,12 +43,12 @@
"module": "api",
"action": "send",
"options": {
"url": "http://vapor.prelub.com/api/v1.0/partnumbers/alt",
"url": "{{$_ENV.API_BASEURL+'partnumbers/alt'}}",
"method": "POST",
"dataType": "json",
"data": {
"number": "{{$_POST.savepn}}",
"statusid": "4",
"statusid": "1",
"description": "{{$_POST.savepndescription}}",
"comments": "{{$_POST.savepncomments}}",
"id": null,
@@ -66,7 +66,7 @@
},
{
"type": "text",
"name": "comments"
"name": "number"
},
{
"type": "text",
@@ -74,7 +74,7 @@
},
{
"type": "text",
"name": "number"
"name": "comments"
}
]
},
@@ -114,7 +114,7 @@
},
{
"type": "text",
"name": "comments"
"name": "number"
},
{
"type": "text",
@@ -122,7 +122,7 @@
},
{
"type": "text",
"name": "number"
"name": "comments"
}
]
},


+ 165
- 0
app/api/Parts/CreatePart.json Ver arquivo

@@ -0,0 +1,165 @@
{
"meta": {
"options": {
"linkedFile": "/views/dspec2.ejs",
"linkedForm": "frm_all"
},
"$_POST": [
{
"type": "text",
"fieldName": "hdnpartnumber",
"name": "hdnpartnumber"
},
{
"type": "text",
"fieldName": "hdnparttyp",
"name": "hdnparttyp"
},
{
"type": "text",
"fieldName": "hdnpartcode",
"name": "hdnpartcode"
},
{
"type": "text",
"fieldName": "partid",
"name": "partid"
},
{
"type": "text",
"fieldName": "parttypes",
"name": "parttypes"
},
{
"type": "text",
"fieldName": "partcodes",
"name": "partcodes"
},
{
"type": "text",
"fieldName": "description",
"name": "description"
},
{
"type": "text",
"fieldName": "comments",
"name": "comments"
}
]
},
"exec": {
"steps": {
"name": "api",
"module": "api",
"action": "send",
"options": {
"url": "{{$_ENV.API_BASEURL+'partnumbers/alt'}}",
"method": "POST",
"dataType": "json",
"data": {
"number": "{{$_POST.hdnpartnumber}}",
"statusid": "1",
"description": "{{$_POST.description}}",
"comments": "{{$_POST.comments}}",
"id": null,
"partcodeid": "{{$_POST.hdnpartcode}}",
"parttypeid": "{{$_POST.hdnparttyp}}"
},
"schema": [
{
"type": "object",
"name": "data",
"sub": [
{
"type": "text",
"name": "number"
},
{
"type": "number",
"name": "id"
},
{
"type": "text",
"name": "description"
},
{
"type": "text",
"name": "comments"
}
]
},
{
"type": "object",
"name": "headers",
"sub": [
{
"type": "text",
"name": "connection"
},
{
"type": "text",
"name": "content-length"
},
{
"type": "text",
"name": "content-type"
},
{
"type": "text",
"name": "date"
}
]
}
]
},
"output": true,
"meta": [
{
"type": "object",
"name": "data",
"sub": [
{
"type": "text",
"name": "number"
},
{
"type": "number",
"name": "id"
},
{
"type": "text",
"name": "description"
},
{
"type": "text",
"name": "comments"
}
]
},
{
"type": "object",
"name": "headers",
"sub": [
{
"type": "text",
"name": "connection"
},
{
"type": "text",
"name": "content-length"
},
{
"type": "text",
"name": "content-type"
},
{
"type": "text",
"name": "date"
}
]
}
],
"outputType": "object"
}
}
}

+ 1
- 1
app/api/Parts/Seach.json Ver arquivo

@@ -18,7 +18,7 @@
"module": "api",
"action": "send",
"options": {
"url": "{{'http://vapor.prelub.com/api/v1.0/partnumbers/num/'+$_POST.input1}}",
"url": "{{$_ENV.API_BASEURL+'partnumbers/num/'+$_POST.input1}}",
"schema": [
{
"type": "object",


+ 3
- 0
app/config/config.json Ver arquivo

@@ -4,5 +4,8 @@
"cors": {
"origin": "*",
"methods": "GET,POST,DELETE,PATCH,PUT"
},
"env": {
"API_BASEURL": "http://vapor.prelub.com/api/v1.0/"
}
}

+ 5
- 0
app/config/routes.json Ver arquivo

@@ -26,6 +26,11 @@
"path": "/parttype",
"page": "parttype",
"layout": "main"
},
{
"path": "/dspec2",
"page": "dspec2",
"layout": "main"
}
]
}

+ 8
- 0
app/modules/global.json Ver arquivo

@@ -1,3 +1,11 @@
{
"meta": {
"$_ENV": [
{
"type": "text",
"name": "API_BASEURL"
}
]
},
"exec": {}
}

+ 5629
- 0
public/dmxAppConnect/config.js
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 8
- 0
public/dmxAppConnect/dmxDatastore/dmxDatastore.js Ver arquivo

@@ -0,0 +1,8 @@
/*!
App Connect Datastore
Version: 1.1.2
(c) 2022 Wappler.io
@build 2022-06-07 09:51:07
*/
dmx.Component("datastore",{initialData:{data:[]},attributes:{session:{type:Boolean,default:!1},columns:{type:Object,default:{}}},methods:{insert:function(t){this._insert(t),this._store()},update:function(t,e){this._update(t,e),this._store()},upsert:function(t,e){this._filter(t).length?this._update(t,e):this._insert(e),this._store()},delete:function(t){this._delete(t),this._store()},clear:function(){this.records=[],this.lastid=0,this._store()},get:function(t){return this._filter(t)}},events:{inserted:Event,updated:Event,deleted:Event},render:function(t){this.store=window[this.props.session?"sessionStorage":"localStorage"],this.records=[],this.lastid=0,this._read=this._read.bind(this),this.props.session||window.addEventListener("storage",this._read),this._read()},update:function(t,e){e.has("columns")&&this._setData()},_read:function(){try{var t=this.store.getItem("datastore_"+this.name);t&&((t=JSON.parse(t)).records&&(this.records=t.records),t.lastid&&(this.lastid=t.lastid))}catch(t){console.warn("Error parsing datastore",t)}this._setData()},_filter:function(t){return"number"==typeof t&&(t={$id:t}),this.records.filter((e=>{if(Array.isArray(t)){for(var s=0;s<t.length;s++)for(var r in t[s])if(t[s].hasOwnProperty(r)&&e[r]===t[s][r])return!0}else for(var r in t)if(t.hasOwnProperty(r)&&e[r]===t[r])return!0;return!1}))},_parseData:function(t){return"object"==typeof t&&!Array.isArray(t)},_mergeData:function(t,e){var s=Object.assign({},t);for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];this._isExpression(i)&&(i=dmx.parse(i,new dmx.DataScope(t,this))),s[r]=i}return s},_insert:function(t){var e={inserted:[],deleted:[]};if(Array.isArray(t))for(var s=0;s<t.length;s++){var r=this._mergeData({$id:++this.lastid},t[s]);this.records.push(r),e.inserted.push(r)}else{r=this._mergeData({$id:++this.lastid},t);this.records.push(r),e.inserted.push(r)}this.dispatchEvent("inserted",null,e)},_update:function(t,e){if(this._parseData(e)){var s={inserted:[],deleted:[]};this._filter(t).forEach((t=>{var r=this._mergeData(t,e);dmx.equal(t,r)||(s.deleted.push(dmx.clone(t)),s.inserted.push(dmx.clone(r)),Object.assign(t,r))})),this.dispatchEvent("updated",null,s)}else console.warn("Invalid data!",e)},_delete:function(t){"number"==typeof t&&(t={$id:t});var e={inserted:[],deleted:[]};this.records=this.records.filter((function(s){for(var r in t)if(t.hasOwnProperty(r)&&s[r]===t[r])return e.deleted.push(dmx.clone(s)),!1;return!0})),this.dispatchEvent("deleted",null,e)},_store:function(){var t=JSON.stringify({records:this.records,lastid:this.lastid});t!==this.store.getItem("datastore_"+this.name)&&(this.store.setItem("datastore_"+this.name,t),this._setData())},_setData:function(){"object"==typeof this.props.columns?this.set("data",this.records.map(((t,e)=>{const s=dmx.clone(t),r=dmx.DataScope({$value:t,$index:e,$key:e,...t});for(let t in this.props.columns){if(!this.props.columns.hasOwnProperty(t))continue;let e=this.props.columns[t];this._isExpression(e)&&(e=dmx.parse(e,r)),s[t]=e}return s}))):this.set("data",this.records)},_isExpression:function(t){return"string"==typeof t&&t.includes("{{")}});
//# sourceMappingURL=../maps/dmxDatastore.js.map

+ 60
- 0
public/dmxAppConnect/dmxDatePicker/bgthemes/dark-calendar.css Ver arquivo

@@ -0,0 +1,60 @@
.daterangepicker {
background-color: #343a40;
border: 1px solid #111;
}
.daterangepicker:before {
border-bottom: 7px solid #111;
}
.daterangepicker:after {
border-bottom: 6px solid #343a40;
}
.daterangepicker .calendar-table {
background-color: #343a40;
border: none;
color: #f8f9fa;
}
.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span {
color: #f8f9fa;
border: solid #f8f9fa;
border-width: 0 2px 2px 0;
}
.daterangepicker td.available:not(.in-range):hover, .daterangepicker th.available:not(.in-range):hover {
background-color: #495057 !important;
}
.daterangepicker td.off, .daterangepicker td.off.end-date, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date {
background-color: #394046;
color: #777;
}
.daterangepicker td.in-range {
background-color: #2b2e31;
color: #eee;
}
.daterangepicker td.in-range:hover {
background-color: #3c4044;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #22262a;
color: #f8f9fa;
}
.daterangepicker .drp-buttons {
border-top: 1px solid #3c4044;
}
.daterangepicker .drp-selected {
color: #f8f9fa;
}
.applyBtn {
color: #f8f9fa;
background-color: #22262a;
}
.applyBtn:hover {
background-color: #0b0d0e;
}
.cancelBtn {
color: #f8f9fa;
background-color: #394046;
}
.cancelBtn:hover {
background-color: #272c2f;
}

+ 8
- 0
public/dmxAppConnect/dmxDatePicker/daterangepicker.min.css
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 8
- 0
public/dmxAppConnect/dmxDatePicker/daterangepicker.min.js
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 33
- 0
public/dmxAppConnect/dmxDatePicker/dmxDatePicker.css Ver arquivo

@@ -0,0 +1,33 @@
.drp-buttons button {
display: inline-block;
font-weight: 400;
text-align: center;
padding: 10px 12px;
border: none;
border-radius: 4px;
margin: 0 5px;
}
.drp-buttons button:hover, .drp-buttons button:focus {
text-decoration: none;
}
.drp-buttons button:not(:disabled):not(.disabled) {
cursor: pointer;
}
.drp-buttons button:focus {
outline: none;
}
.cancelBtn {
color: #212529;
background-color: #f8f9fa;
}
.cancelBtn:hover {
background-color: #e4e4e4;
}
.applyBtn {
color: #fff;
background-color: #357ebd;
}
.applyBtn:hover {
background-color: #275d8b;
}

+ 8
- 0
public/dmxAppConnect/dmxDatePicker/dmxDatePicker.js
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/blue.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
}
.daterangepicker td.in-range {
background-color: #e5f2ff !important;
color: #000 !important;
}
.daterangepicker td.in-range:hover {
background-color: #b3d7ff !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #007bff !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #007bff !important;
}
.applyBtn:hover {
background-color: #006fe6 !important;
}

+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/cyan.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
}
.daterangepicker td.in-range {
background-color: #e8f9fc !important;
color: #000 !important;
}
.daterangepicker td.in-range:hover {
background-color: #bbeef6 !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #17a2b8 !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #17a2b8 !important;
}
.applyBtn:hover {
background-color: #148c9f !important;
}

+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/dark-gray.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #dadada;
}
.daterangepicker td.in-range {
background-color: #f1f2f4 !important;
color: #000 !important;
}
.daterangepicker td.in-range:hover {
background-color: #d5d9dd !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #343a40 !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #343a40 !important;
}
.applyBtn:hover {
background-color: #505962 !important;
}

+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/gray.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
}
.daterangepicker td.in-range {
background-color: #d6d9dc !important;
color: #000 !important;
}
.daterangepicker td.in-range:hover {
background-color: #bbc0c4 !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #6c757d !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #6c757d !important;
}
.applyBtn:hover {
background-color: #6a737b !important;
}

+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/green.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
}
.daterangepicker td.in-range {
background-color: #eafaee !important;
color: #24292e !important;
}
.daterangepicker td.in-range:hover {
background-color: #c1f0cc !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #28a745 !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #28a745 !important;
}
.applyBtn:hover {
background-color: #22903c !important;
}

+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/orange.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
}
.daterangepicker td.in-range {
background-color: #fff1e6 !important;
color: #000 !important;
}
.daterangepicker td.in-range:hover {
background-color: #fed5b3 !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #fd7e14 !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #6c757d !important;
}
.applyBtn:hover {
background-color: #e46902 !important;
}

+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/pink.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
}
.daterangepicker td.in-range {
background-color: #fce8f1 !important;
color: #000 !important;
}
.daterangepicker td.in-range:hover {
background-color: #f7bbd6 !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #e83e8c !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #e83e8c !important;
}
.applyBtn:hover {
background-color: #cd186b !important;
}

+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/purple.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
}
.daterangepicker td.in-range {
background-color: #f0ecf9 !important;
color: #000 !important;
}
.daterangepicker td.in-range:hover {
background-color: #d3c5ec !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #6f42c1 !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #6f42c1 !important;
}
.applyBtn:hover {
background-color: #6239ad !important;
}

+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/red.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
}
.daterangepicker td.in-range {
background-color: #fbe9eb !important;
color: #24292e !important;
}
.daterangepicker td.in-range:hover {
background-color: #f4bec3 !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #dc3545 !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #dc3545 !important;
}
.applyBtn:hover {
background-color: #c42231 !important;
}

+ 22
- 0
public/dmxAppConnect/dmxDatePicker/themes/teal.css Ver arquivo

@@ -0,0 +1,22 @@
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
}
.daterangepicker td.in-range {
background-color: #e9fbf6 !important;
color: #000 !important;
}
.daterangepicker td.in-range:hover {
background-color: #bdf4e4 !important;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #20c997 !important;
color: #fff !important;
}
.applyBtn {
color: #fff !important;
background-color: #20c997 !important;
}
.applyBtn:hover {
background-color: #199a74 !important;
}

+ 4
- 0
views/.wappler_folder.json Ver arquivo

@@ -34,5 +34,9 @@
"search.ejs": {
"layoutPage": "main",
"description": ""
},
"dspec2.ejs": {
"layoutPage": "main",
"description": ""
}
}

+ 9
- 5
views/dspec.ejs Ver arquivo

@@ -1,5 +1,8 @@
<!-- Wappler include head-page="layouts/main" fontawesome_5="cdn" bootstrap5="local" is="dmx-app" id="dspec" appconnect="local" components="{dmxTyped:{},dmxStateManagement:{},dmxBootstrap5Modal:{},dmxFormatter:{},dmxValidator:{},dmxScheduler:{},dmxDataTraversal:{},dmxBootstrap5TableGenerator:{},dmxBootstrap5Navigation:{},dmxSockets:{}}" -->
<dmx-serverconnect id="api_increasemaxpn" url="/api/MaxPNs/Increase"></dmx-serverconnect>
<dmx-serverconnect id="apid_pushpart" url="/api/Parts/Create" noload="true"></dmx-serverconnect>

<dmx-serverconnect id="api_pushdspec" url="/api/DSpec/Create" noload="true"></dmx-serverconnect>
<dmx-serverconnect id="api_increasemaxpn" url="/api/MaxPNs/Increase" noload="true"></dmx-serverconnect>
<div class="modal" id="modal2" is="dmx-bs5-modal" tabindex="-1">
<div class="modal-dialog" role="document">
<div class="modal-content">
@@ -73,6 +76,7 @@
<p style="text-align: right;">Part Number</p>
</div>
<div class="col" style="width: 20%;">
<input id="txtdspecid" name="dspecid" type="text" class="form-control" dmx-bind:value="api_pushdspec.data.api.data.id">

<input id="txt_partnumber" name="text1" type="text" class="form-control" placeholder="Part Number" dmx-bind:value="api1.data.partnumber.number">
</div>
@@ -207,11 +211,11 @@
</div>
<div class="row">
<div class="col text-end">
<button id="btn1" class="btn text-center btn-danger" dmx-on:click="frm_partsubmit.submit();api_increasemaxpn.load({})">Save All</button>
<button id="btn1" class="btn text-center btn-danger" dmx-on:click="apid_pushpart.load({})">Save All</button>
</div>
</div>
<div class="container visually-hidden">
<form id="frm_dspecsubmit" method="post">
<div class="container">
<form id="frm_dspecsubmit">
<div class="row">
<div class="col">
<input id="txt_dspecrev" name="dspecrev" type="text" class="form-control" dmx-bind:value="txt_rev.value">
@@ -225,7 +229,7 @@
</div>
<div class="row"></div>
</form>
<form id="frm_partsubmit" method="post" is="dmx-serverconnect-form" action="/api/Parts/Create">
<form id="frm_partsubmit">
<div class="row">
<div class="col">
<input id="txt_savepc" name="savepc" type="text" class="form-control">


+ 294
- 0
views/dspec2.ejs Ver arquivo

@@ -0,0 +1,294 @@
<!-- Wappler include head-page="layouts/main" fontawesome_5="cdn" bootstrap5="local" is="dmx-app" id="dspec2" appconnect="local" components="{dmxBootstrap5Modal:{},dmxStateManagement:{},dmxFormatter:{},dmxDatastore:{},dmxDatePicker:{},dmxBootstrap5TableGenerator:{}}" dmx-on:load="" jquery_slim_35="cdn" moment_2="cdn" -->
<meta name="ac:route" content="/dspec2">
<div class="container">
<div class="row">
<div class="col">
<input id="txt_useriddefault" name="useriddefault" type="text" class="form-control" value="-1">
<input id="txt_testviewlocatioonid" name="viewlocationid" type="text" class="form-control" value="14">
<input id="txt_testpartid" name="testpartid" type="text" class="form-control" dmx-bind:value="api_postpart.data.id">
</div>
</div>
</div>
<dmx-value id="var_listmaxdspec" dmx-on:updated="var_dspecid.setValue(value.getValueOrKey('id'))"></dmx-value>
<dmx-value id="var_rev" dmx-bind:value="0"></dmx-value>
<dmx-api-action id="api_bompartselectbynumber" noload="true" url="http://localhost:8080/api/v1.0/partnumbers/num/" dmx-bind:url="pg_apiurl.value.concat('partnumbers/num/'.concat(inp_bompartnumber.value))" dmx-on:success="inp_bomptdescription.setValue(api_bompartselectbynumber.data.description)"></dmx-api-action>

<dmx-api-action id="api_bominsertitem" noload="true" url="http://localhost:8080/api/v1.0/boms/wapplerinsert" method="post" data-type="json" dmx-bind:url="pg_apiurl.value.concat('boms/wapplerinsert')" dmx-data:updatedate="NOW" dmx-data:viewlocationid="txt_testviewlocatioonid.value" dmx-data:old="inp_bomold.value" dmx-data:createdate="NOW" dmx-data:designspecid="var_dspecid.value.toNumber().toString()" dmx-data:createuserid="txt_useriddefault.value" dmx-data:new="inp_bomnew.value" dmx-data:updateuserid="txt_useriddefault.value" dmx-data:partnumberid="btn_bomadditem.value" dmx-on:success="api_loadbombydspec.load({},true)"></dmx-api-action>
<dmx-api-action id="api_postdspec" noload="true" method="post" dmx-data:revisionlevel="view_rev.value" dmx-data:partnumberid="api_postpart.data.id.toString()" dmx-data:statusidpn="api_getnewpartinfo.data.status.id" dmx-data:partcodeid="api_getnewpartinfo.data.partcode.id" dmx-data:parttypeid="api_getnewpartinfo.data.partcode.parttype.id" dmx-data:statusiddspec="4" dmx-data:effectivedate="inp_effectivedate.value" dmx-data:reasonforchange="inp_reasonforchange.value" dmx-data:validation="inp_validation.value" dmx-data:notes="inp_notes.value" dmx-bind:url="pg_apiurl.value.concat('designspecs/alt')" dmx-on:success="var_dspecid.setValue(api_postdspec.data.id)"></dmx-api-action>
<dmx-api-action id="api_loaddspec" noload="true" url="http://vapor.prelub.com/api/v1.0/designspecs/32458" dmx-bind:url="pg_apiurl.value.concat('designspecs/'.concat(var_dspecid.value))" dmx-on:success="api_loadbombydspec.load({});view_rev.setValue(api_loaddspec.data.revisionlevel);view_partcode.setValue(api_getnewpartinfo.data.partcode.name);view_obsolete.select((api_getnewpartinfo.data.status.id == 2));view_replacedby.setValue(api_getnewpartinfo.data.replacedby.number);view_description.setValue(api_getnewpartinfo.data.description);view_comments.setValue(api_getnewpartinfo.data.comments);inp_reasonforchange.setValue(api_loaddspec.data.reasonforchange);inp_validation.setValue(api_loaddspec.data.validation);inp_notes.setValue(api_loaddspec.data.note)"></dmx-api-action>
<dmx-api-action id="api_loadexistingdspec" noload="true" url="http://vapor.prelub.com/api/v1.0/designspecs/max/106691" dmx-bind:url="pg_apiurl.value.concat('designspecs/max/'.concat(var_partid.value))" dmx-on:success="run([{run:{action:`var_dspecid.setValue(api_loadexistingdspec.data.id)`,outputType:'text'}},{run:{action:`api_loaddspec.load({})`,outputType:'text'}}])"></dmx-api-action>
<dmx-value id="var_newpartnumber"></dmx-value>
<dmx-value id="var_dspecid" dmx-bind:value="0" dmx-on:updated="api_loaddspec.load({})"></dmx-value>
<dmx-value id="var_partid" dmx-bind:value="0" dmx-on:updated="api_getnewpartinfo.load({})"></dmx-value>
<dmx-value id="var_existingpartid" dmx-bind:value="0" dmx-on:updated=""></dmx-value>
<dmx-value id="var_dspecid" dmx-bind:value="0"></dmx-value>
<dmx-value id="var_statusid" dmx-bind:value="1"></dmx-value>
<dmx-api-action id="api_getpartcodebyid" dmx-bind:url="pg_apiurl.value.concat('partcodes/'.concat(mdl_newpart.inp_partcodes.value))" noload="true"></dmx-api-action>
<script is="dmx-flow" id="flow1" type="text/dmx-flow" autorun="true">{
condition: {
if: "{{query1.data.id}}",
then: {
steps: {
run: {action: "{{var_partid.setValue(query1.data.id)}}", outputType: "text"}
}
},
outputType: "boolean"
}
}</script>
<dmx-api-action id="api_getnewpartinfo" noload="true" dmx-bind:url="pg_apiurl.value.concat('partnumbers/id/'.concat(var_partid.value))" dmx-on:success="run([{run:{action:`view_partnumber.setValue(api_getnewpartinfo.data.number)`,outputType:'text'}},{condition:{if:`!query1.data.id`,then:{steps:{run:{action:`api_postdspec.load({})`,outputType:'text'}}},else:{steps:{run:{action:`api_loadexistingdspec.load({})`,outputType:'text'}}},outputType:'boolean'}}])"></dmx-api-action>
<dmx-api-action id="api_getexistingpartinfo" noload="true" dmx-bind:url="pg_apiurl.value.concat('partnumbers/id/'.concat(var_existingpartid.value))" dmx-on:success="var_partid.setValue(api_getnewpartinfo.data.id);view_partnumber.setValue(api_getnewpartinfo.data.number)"></dmx-api-action>
<dmx-api-action id="api_increasepn" noload="true" method="post" dmx-data:number="(api_maxpn.data.number + 1)" dmx-bind:url="pg_apiurl.value.concat('pns')" dmx-on:success="api_getnewpartinfo.load({})"></dmx-api-action>
<dmx-api-action id="api_maxpn" url="http://localhost:8080/api/v1.0/pns/max" dmx-on:success="api_postpart.load({})" noload="true"></dmx-api-action>
<dmx-api-action id="api_allparttypes" dmx-bind:url="pg_apiurl.value.concat('parttypes')" dmx-on:success="mdl_newpart.inp_parttypes.setValue(-1)"></dmx-api-action>

<dmx-api-action id="api_postpart" noload="true" method="post" data-type="json" dmx-data:number="mdl_newpart.inp_parttypes.value.concat('-'.concat(mdl_newpart.inp_partcodes.value.concat('-'.concat(api_maxpn.data.number))))" dmx-data:statusid="var_statusid.value" dmx-data:description="mdl_newpart.inp_description.value" dmx-data:comments="mdl_newpart.inp_comments.value" dmx-data:partcodeid="mdl_newpart.inp_partcodes.value" dmx-data:parttypeid="mdl_newpart.inp_parttypes.value" dmx-bind:url="pg_apiurl.value.concat('partnumbers/alt')" url="http://localhost:8080/api/v1.0/partnumbers/alt" dmx-on:success="api_increasepn.load({});var_partid.setValue(api_postpart.data.id)"></dmx-api-action>
<dmx-api-action id="api_filteredpartcodes" noload="true" url="http://localhost:8080/api/v1.0/partcodes/bytype/6" dmx-bind:url="pg_apiurl.value.concat('partcodes/bytype/'.concat(mdl_newpart.inp_parttypes.value))"></dmx-api-action>







<dmx-query-manager id="query1"></dmx-query-manager>
<div class="modal" id="mdl_newpart" is="dmx-bs5-modal" tabindex="-1" dmx-bind:show="!query1.data.id">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">New Part</h5>
</div>
<div class="modal-body">
<div class="container">
<div class="row">
<div class="col">
<div class="form-group mb-3 row">
<label for="hdnpartnumber" class="col-sm-2 col-form-label gy-0 gx-0 visually-hidden" style="width: 20%;">Part Number</label>
<div class="col-sm-10" style="width: 75%;">
<input id="hdn_partnumber" name="hdnpartnumber" type="text" class="form-control visually-hidden">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="form-group mb-3 row">
<label for="parttypes" class="col-sm-2 col-form-label gy-0 gx-0" style="width: 20%;">Part Types</label>
<div class="col-sm-10" style="width: 55%; float: left;">
<select id="inp_parttypes" class="form-select" name="parttypes" dmx-bind:options="api_allparttypes.data" optiontext="name" optionvalue="id" dmx-on:changed="api_filteredpartcodes.load({})">
<option value="-1">Select</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="form-group mb-3 row">
<label for="partcodes" class="col-sm-2 col-form-label gy-0 gx-0" style="width: 20%;">Part Codes</label>
<div class="col-sm-10" style="width: 55%; float: left;">
<select id="inp_partcodes" class="form-select" name="partcodes" dmx-bind:options="api_filteredpartcodes.data" optiontext="name" optionvalue="id">
<option value="0">Select</option>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<label claclass="col-sm-2 col-form-label gy-0 gx-0">Description</label>
<textarea id="inp_description" class="form-control" name="description"></textarea>
</div>

</div>
<div class="row">
<div class="col">
<label claclass="col-sm-2 col-form-label gy-0 gx-0">Comments</label>
<textarea id="inp_comments" class="form-control" name="comments"></textarea>
</div>
</div>
</div>

<input id="inp_partid" name="partid" type="text" class="form-control visually-hidden" dmx-bind:value="api_postpart.data.id">




</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" dmx-on:click="api_getpartcodebyid.load({});view_partcode.setValue(inp_partcodes.selectedText);view_description.setValue(inp_description.value);view_comments.setValue(inp_comments.value);mdl_newpart.hide()">Save</button>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col placeholder-glow border-3 rounded rounded-3 border-dark">
<div class="card border-1 border-dark rounded rounded-3">
<div class="card-body">
<h4 class="card-title" id="crd_partinfo">
<div style="float: left; padding-right: 10px;">Part Info: </div>

<input type="text" class="form-control" id="view_partnumber" name="viewpartnumber" aria-describedby="input1_help" readonly="true" dmx-bind:value="api_getpartinfo.data.number" style="width: 30%; float: left; padding-right: 10px;">

<div style="float: left; padding-right: 10px; padding-left: 10px;">Rev:</div>

<input type="text" class="form-control" id="view_rev" name="viewrev" aria-describedby="input1_help" readonly="true" style="width: 10%; float: left;" value="0">
</h4>
<div class="row" style="padding-top: 10px;">
<div class="col" style="width: 33%;">
<div class="form-group mb-3 row">
<label for="view_partcode" class="col-sm-2 col-form-label" style="width: 30%;">Part Code:</label>
<div class="col-sm-10" style="width: 50%">
<input type="text" class="form-control" id="view_partcode" name="viewpartcode" aria-describedby="input1_help" readonly="true" dmx-bind:value="api_getpartinfo.data.partcode.name">
</div>
</div>

</div>
<div class="col" style="width:33%;">
<div class="form-group mb-3 row">
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="view_obsolete" name="viewobsolete" readonly="true" disabled="true" dmx-bind:checked="(api_getpartinfo.data.status.id == 2)">
<label class="form-check-label" for="view_obsolete">Obsolete</label>
</div>
</div>
</div>
</div>
<div class="col">
<div class="form-group mb-3 row">
<label for="view_replacedby" style="width: 40%; " class="col-sm-2 col-form-label">Replaced By:</label>
<div class="col-sm-10" style="width: 40%; float: left;">
<input type="text" class="form-control" id="view_replacedby" name="viewreplacedby" aria-describedby="input1_help" readonly="true" dmx-bind:value="api_getpartinfo.data.replacedby.number">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<p>Description</p>
<textarea id="view_description" class="form-control" name="viewpartdescription" dmx-bind:value="api_getpartinfo.data.description" readonly="true"></textarea>
</div>
</div>
<div class="row">
<div class="col">
<p>Comments</p>
<textarea id="view_comments" class="form-control" name="viewpartcomments" dmx-bind:value="api_getpartinfo.data.comments" readonly="true"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col" style="padding-top: 10px;">
<div class="card border-1 rounded rounded-3 border-dark">
<div class="card-body">
<h4 class="card-title">DSpec</h4>
<div class="row">
<div class="col" style="width= 30%; float: left;">
<div class="form-group mb-3 row">
<div style="float: left;">
<label for="inp_effectivedate" class="col-sm-2 col-form-label" style="width: 35%; float: left;">Effective Date</label>
<div class="col-sm-10">
<input id="inp_effectivedate" name="effectivedate" type="date" class="form-control">
</div>
</div>
</div>
</div>
<div class="col">
<div class="form-group mb-3 row">
<div style="float: left;">
<label for="inp_application" class="col-sm-2 col-form-label" style="width: 40%; float: left;">Work Instruction</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inp_workinstruction" name="workinstruction" aria-describedby="input1_help" style="width: 40%; float left;">
</div>
</div>
</div>
</div>
<div class="col">
<div class="form-group mb-3 row">
<div style="float: left;">
<label for="inp_application" class="col-sm-2 col-form-label" style="width: 30%; float: left;">Application</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inp_application" name="application" aria-describedby="input1_help" style="width: 60%; float left;">
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<label for="inp_reasonforchange" class="col-sm-2 col-form-label">Reason for Change</label>
<textarea id="inp_reasonforchange" class="form-control" name="reasonforchange"></textarea>
</div>
</div>
<div class="row">
<div class="col">
<label for="inp_validation" class="col-sm-2 col-form-label">Validation</label>
<textarea id="inp_validation" class="form-control" name="validation"></textarea>
</div>
</div>
<div class="row">
<div class="col">
<label for="inp_notes" class="col-sm-2 col-form-label">Notes</label>
<textarea id="inp_notes" class="form-control" name="notes"></textarea>
</div>
</div>
<div class="row" style="padding-top: 10px;">
<div class="col">
<button id="btn_savedspec" class="btn btn-success" style="float: right; padding-top: 5px;" dmx-hide="query1.data.id" dmx-on:click="api_maxpn.load({})">Save</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col rounded rounded-3 border-dark border-5">
<dmx-api-action id="api_loadbombydspec" noload="true" url="http://localhost:8080/api/v1.0/boms/bydspec/33726" dmx-bind:url="pg_apiurl.value.concat('boms/bydspec/'.concat(var_dspecid.value))"></dmx-api-action>
<dmx-value id="var_partidtodelete" dmx-on:updated="run([{run:{action:`api_deletethisitem.load({})`,outputType:'text'}},{wait:{delay:1000}},{run:{action:`api_loadbombydspec.load({})`,outputType:'text'}}])"></dmx-value>
<dmx-api-action id="api_deletethisitem" noload="true" method="delete" dmx-bind:url="pg_apiurl.value.concat('boms/'.concat(var_partidtodelete.value))"></dmx-api-action>
<p>BOM</p>
<div class="table-responsive" id="tbl_bom">
<table class="table">
<thead>
<tr>
<th scope="col">Part Number</th>
<th scope="col">Description</th>
<th scope="col">Old</th>
<th scope="col">New</th>
<th scope="row">Actions</th>
</tr>
<tr>
<td>
<input id="inp_bompartnumber" name="bompartnumber" type="text" class="form-control" dmx-on:blur="api_bompartselectbynumber.load({})">
</td>
<td>{{api_bompartselectbynumber.data.description}}</td>
<td>
<input id="inp_bomold" name="bomold" type="text" class="form-control">
</td>
<td>
<input id="inp_bomnew" name="bomnew" type="text" class="form-control">
</td>
<td>
<button id="btn_bomadditem" class="btn btn-success" dmx-on:click="api_bominsertitem.load({})" dmx-bind:value="api_bompartselectbynumber.data.id">Add</button>
</td>
</tr>
</thead>
<tbody id="tb_bom" is="dmx-repeat" dmx-bind:repeat="api_loadbombydspec.data" key="id">
<tr>
<td>{{partnumber}}</td>
<td>{{description}}</td>
<td>{{old}}</td>
<td>{{new}}</td>
<td>
<button id="btn_bomdeleteitem" class="btn btn-danger" dmx-on:click="var_partidtodelete.setValue(value)" dmx-bind:value="api_loadbombydspec.data[0].id">X</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>

+ 4
- 4
views/index.ejs Ver arquivo

@@ -1,11 +1,11 @@
<!-- Wappler include head-page="layouts/main" fontawesome_5="cdn" bootstrap5="local" is="dmx-app" id="index" appConnect="local" components="{dmxDataTraversal:{},dmxTyped:{},dmxFormatter:{},dmxStateManagement:{},dmxBrowser:{},dmxBootstrap5TableGenerator:{},dmxNotifications:{},dmxBootstrap5Toasts:{}}" -->
<dmx-serverconnect id="api_partcodes" url="/api/PartCodes/All"></dmx-serverconnect>
<dmx-notifications id="notifies1" align="full"></dmx-notifications>
<dmx-api-action id="api1" noload="true" dmx-bind:url="'http://vapor.prelub.com/api/v1.0/partnumbers/num/'+txt_partNumber.value" dmx-on:error="notifies1.warning('No Records Found');hdn_partid.setValue();txt_partNumber.setValue();txt_description.setValue();select1.setValue();txt_replaces.setValue();txt_replacedby.setValue();txt_primaryvendor.setValue();txt_secondaryvendor.setValue()" dmx-on:invalid="notifies1.warning('Invalid')"></dmx-api-action>
<dmx-api-action id="api1" noload="true" dmx-bind:url="pg_apiurl.value+'partnumbers/num/'+txt_partNumber.value" dmx-on:error="notifies1.warning('No Records Found');hdn_partid.setValue();txt_partNumber.setValue();txt_description.setValue();select1.setValue();txt_replaces.setValue();txt_replacedby.setValue();txt_primaryvendor.setValue();txt_secondaryvendor.setValue()" dmx-on:invalid="notifies1.warning('Invalid')"></dmx-api-action>



<meta name="ac:route" content="/">
<dmx-serverconnect id="serverconnect1" url="/api/PartCodes/All"></dmx-serverconnect>
<div class="container">
<div class="row">
<div class="col">
@@ -36,7 +36,7 @@
<div class="form-group mb-3 row">
<label for="pcodes" class="col-sm-2 col-form-label" style="width:19%;">Part Codes</label>
<div class="col-sm-10" style="float: left; width: 81%;">
<select id="select1" class="form-select" name="pcodes" dmx-bind:options="serverconnect1.data.api.data" optiontext="name" optionvalue="id" dmx-bind:value="api1.data.partcode.id">
<select id="select1" class="form-select" name="pcodes" dmx-bind:options="api_partcodes.data.api.data" optiontext="name" optionvalue="id" dmx-bind:value="api1.data.partcode.id">
<option value=""></option>
</select>
</div>
@@ -84,7 +84,7 @@
</div>
<div class="row">
<div class="col">
<a href="#" class="btn btn-warning" id="btn_dspec" dmx-bind:href="'/dspec?id='+hdn_partid.value">DSpec</a>
<a href="#" class="btn btn-warning" id="btn_dspec" dmx-bind:href="'/dspec2?id='+hdn_partid.value">DSpec</a>
</div>
</div>
</div>

+ 11
- 1
views/layouts/main.ejs Ver arquivo

@@ -11,6 +11,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="/bootstrap/5/css/bootstrap.min.css" />
<link rel="stylesheet" href="/css/style.css" />
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js" integrity="sha256-CutOzxCRucUsn6C6TcEYsauvvYilEniTXldPa6/wu0k=" crossorigin="anonymous"></script>
<script src="/dmxAppConnect/dmxRouting/dmxRouting.js" defer></script>
<script src="/dmxAppConnect/dmxDataTraversal/dmxDataTraversal.js" defer></script>
<script src="/dmxAppConnect/dmxTyped/dmxTyped.js" defer></script>
@@ -30,10 +32,18 @@
<script src="/dmxAppConnect/dmxBootstrap5Toasts/dmxBootstrap5Toasts.js" defer></script>
<script src="/socket.io/socket.io.js" defer></script>
<script src="/dmxAppConnect/dmxSockets/dmxSockets.js" defer></script>
<script src="/dmxAppConnect/dmxDatastore/dmxDatastore.js" defer></script>
<link rel="stylesheet" href="/dmxAppConnect/dmxDatePicker/daterangepicker.min.css" />
<script src="/dmxAppConnect/dmxDatePicker/daterangepicker.min.js" defer></script>
<link rel="stylesheet" href="/dmxAppConnect/dmxDatePicker/dmxDatePicker.css" />
<script src="/dmxAppConnect/dmxDatePicker/dmxDatePicker.js" defer></script>


</head>

<body is="dmx-app" id="main">
<div class="container">
<dmx-value id="pg_apiurl" dmx-bind:value="'http://vapor.prelub.com/api/v1.0/'"></dmx-value>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">RPM Studio</a>
@@ -45,7 +55,7 @@
<div class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" id="dropdown1" role="button" aria-haspopup="true" aria-expanded="false">Actions</a>
<div class="dropdown-menu" aria-labelledby="dropdown1">
<a class="dropdown-item" href="/dspec" internal="true">New Part</a>
<a class="dropdown-item" href="/dspec2" internal="true">New Part</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>


Carregando…
Cancelar
Salvar