diff --git a/src/adonisjs/public/author/edit/inplace-editor.js b/src/adonisjs/public/author/edit/inplace-editor.js index a5afb342..ef2fa810 100644 --- a/src/adonisjs/public/author/edit/inplace-editor.js +++ b/src/adonisjs/public/author/edit/inplace-editor.js @@ -223,12 +223,9 @@ class EditDCC { const ep = await this._extendedPanel( EditDCC.imageBrowseTemplate, mtype, ftypes) let path = null - console.log('=== selected') - console.log(ep.select.options[ep.select.selectedIndex].value) if (ep.select != null && ep.select.options[ep.select.selectedIndex].value.length > 0) path = ep.select.options[ep.select.selectedIndex].value - /* else { console.log('===== files selected') for (let f of ep.browse.files) @@ -243,7 +240,6 @@ class EditDCC { path = asset.message.filename } } - */ this._removeExtendedPanel() return path } diff --git a/src/adonisjs/public/author/env/inf331_2023/css/lab.css b/src/adonisjs/public/author/env/inf331_2023/css/lab.css index 9933d41a..ad65fe0d 100644 --- a/src/adonisjs/public/author/env/inf331_2023/css/lab.css +++ b/src/adonisjs/public/author/env/inf331_2023/css/lab.css @@ -6,62 +6,86 @@ --light: #FDE8E9; } .bg-lab-light { - background-color: var(--light) !important; + background-color: #FDE8E9 !important; } .bg-lab-light-pink { - background-color: var(--light-pink) !important; + background-color: #E3BAC6 !important; } .bg-lab-primary { - background-color: var(--primary) !important; + background-color: #BC9EC1 !important; } .bg-lab-secondary { - background-color: var(--secondary) !important; + background-color: #596475 !important; } .bg-lab-dark { - background-color: var(--dark) !important; + background-color: #1F2232 !important; } .text-lab-dark { - color: var(--dark) !important; + color: #1F2232 !important; } .text-lab-secondary { - color: var(--secondary) !important; + color: #596475 !important; } .text-lab-primary { - color: var(--primary) !important; + color: #BC9EC1 !important; } .text-primary { - color: var(--dark) !important; + color: #1F2232 !important; } .text-lab-light-pink { - color: var(--light-pink) !important; + color: #E3BAC6 !important; } .text-lab-light { - color: var(--light) !important; + color: #FDE8E9 !important; } .btn-lab-primary { - color: var(--light); - background-color: var(--dark); - border-color: var(--dark); + color: #FDE8E9 !important; + background-color: #1F2232 !important; + border-color: #1F2232 !important; } .btn-lab-primary:hover { - color: var(--primary) !important; + color: #BC9EC1 !important; font-size: 1.1rem !important; } .btn-lab-secondary { - color: var(--light); - background-color: var(--secondary); - border-color: var(--secondary); + color: #FDE8E9 !important; + background-color: #596475 !important; + border-color: #596475 !important; +} +.btn-lab-secondary:hover { + color: #BC9EC1 !important; +} + +.btn-lab-save { + color: #1F2232 !important; + background-color: #E3BAC6 !important; + border-color: #1F2232 !important; + border-width: 0.2rem !important; +} +.btn-lab-save:hover { + background: #BC9EC1 !important; } .disabled-lock, .disabled-look{ - pointer-events: none; - background-color: var(--light-pink); - opacity: 0.8 + pointer-events: none !important; + background-color: #E3BAC6 !important; + opacity: 0.8 !important; } + +.border-lab-dark{ + border-color: #1F2232 !important; +} +.border-lab-primary{ + border-color: #BC9EC1 !important; +} + +.no-pointers, .no-pointer{ + pointer-events: none; +} \ No newline at end of file diff --git a/src/adonisjs/public/author/env/inf331_2023/index.html b/src/adonisjs/public/author/env/inf331_2023/index.html index 59f4f1d5..7d3342fd 100644 --- a/src/adonisjs/public/author/env/inf331_2023/index.html +++ b/src/adonisjs/public/author/env/inf331_2023/index.html @@ -52,10 +52,8 @@ - + - - @@ -88,7 +86,6 @@ - @@ -98,7 +95,7 @@ - + @@ -112,8 +109,51 @@ - - +
+ + +
+ - +
+ + +
+ +
+ + +
+ + + + + + + + + +
-
+
-

INF331 - Componentização e Reúso de Software 2023

-

Acesso à plataforma de Laboratórios.

+

INF331 - Componentização e Reúso de Software 2023

+

Acesso à plataforma de Laboratórios.

- +
+ style="background: url('start/img/background_inf331.png');">
- +
-
+
diff --git a/src/adonisjs/public/infra/conditional-layout.js b/src/adonisjs/public/infra/conditional-layout.js index a8e8a31d..b3bb9e4d 100644 --- a/src/adonisjs/public/infra/conditional-layout.js +++ b/src/adonisjs/public/infra/conditional-layout.js @@ -204,8 +204,8 @@ class LayoutController { if(userGrade === 'student'){ dccSubmitProp.setAttribute('id','dcc-submit-feedback') - dccSubmitProp.setAttribute('bind','submit-case-property') - dccSubmitProp.setAttribute('xstyle','btn btn-secondary m-1') + dccSubmitProp.setAttribute('bind','submit-save-case-and-property') + dccSubmitProp.setAttribute('xstyle','btn btn-secondary btn-lab-primary m-1') dccSubmitProp.setAttribute('label', "Entregar") dccSubmitProp.setAttribute('topic','service/request/post') dccSubmitProp.setAttribute('data-toggle','tooltip') @@ -332,7 +332,8 @@ class LayoutController { saveBtn.innerHTML = 'Data da entrega expirada' btnLabDelivered.firstElementChild.innerHTML = btnLabDelivered.firstElementChild.innerHTML == 'Entregar'?'Não entregue':'Entregue' saveBtn.classList.add('disabled') - saveBtn.nextElementSibling.remove() + saveBtn.classList.add('no-pointer') + saveBtn.nextElementSibling.topic = "" } } /*else if(userGrade === 'professor' || userGrade === 'coordinator'){ diff --git a/src/adonisjs/public/infra/dcc-basic-swe.js b/src/adonisjs/public/infra/dcc-basic-swe.js index e933221e..8684e4f3 100644 --- a/src/adonisjs/public/infra/dcc-basic-swe.js +++ b/src/adonisjs/public/infra/dcc-basic-swe.js @@ -120,7 +120,6 @@ { pos: async function (response) { // console.log('============ pos dcc-submit prop') - // console.log(response) let propValue = null if(response['harena-case-property']['case_property']){ propValue = response['harena-case-property']['case_property']['value'] @@ -132,6 +131,29 @@ } ) + DCC.component( + 'submit-save-case-and-property', + 'dcc-submit', + { + pre: function (message, form, schema) { + const saveCase = document.querySelector(`button[id="btn-save-draft"]`) + saveCase.click() + return true + }, + pos: async function (response) { + + // console.log(response) + let propValue = null + if(response['harena-case-property']['case_property']){ + propValue = response['harena-case-property']['case_property']['value'] + }else{ + propValue = response['harena-case-property']['value'] + } + LayoutController.instance.labDeliverButtonCaseState(propValue) + } + } + ) + DCC.component( 'submit-filter', 'dcc-submit', @@ -210,401 +232,4 @@ } ) - DCC.component( - 'submit-prognosis-lvl', - 'dcc-submit', - { - pre: function (message, form, schema) { - var localStorageItem - if(new URL(document.location).pathname.includes('/learn')){ - localStorageItem = 'prognosis-current-lvl' - }else if(new URL(document.location).pathname.includes('/challenge/1')) { - localStorageItem = 'prognosis-challenge1-current-lvl' - }else if(new URL(document.location).pathname.includes('/challenge/2')) { - localStorageItem = 'prognosis-challenge2-current-lvl' - } - // console.log('============ tak') - // console.log(localStorageItem) - if(document.querySelector('#current-lvl') && localStorage.getItem(localStorageItem)!= null){ - let currentLvl = localStorage.getItem(localStorageItem) - message.value.propertyTitle = localStorageItem - message.value.propertyValue = currentLvl - return true - }else if(document.querySelector('#next-lvl') && localStorage.getItem(localStorageItem)!= null){ - if(localStorage.getItem(localStorageItem) == parseInt(document.querySelector('#next-lvl').value)){ - let nextLvl = parseInt(document.querySelector('#next-lvl').value) + 1 - if(nextLvl>10) - nextLvl = 10 - message.value.propertyTitle = localStorageItem - message.value.propertyValue = nextLvl - return true - } - return false - - - }else{ - // console.log('============ error in prognosis lvl update in manager') - return false - } - - }, - pos: async function (response) { - - if(document.querySelector('dcc-submit[bind="submit-prognosis-lvl"]')) - document.querySelector('dcc-submit[bind="submit-prognosis-lvl"]').remove() - } - } - ) - - DCC.component( - 'submit-prognosis-lvl-result', - 'dcc-submit', - { - pre: function (message, form, schema) { - if(form.checkValidity()){ - currentLvl = localStorage.getItem('prognosis-current-lvl') - console.log(document.querySelector('#saps-survival')) - message.value.propertyTitle = `prognosis-lvl-${currentLvl}-result` - message.value.propertyValue = document.querySelector('#saps-survival').value - return true - }else{ - return false - } - }, - pos: async function (response) { - - } - } - ) - - DCC.component( - 'submit-prognosis-lvl-txt', - 'dcc-submit', - { - pre: function (message, form, schema) { - if(new URL(document.location).pathname.includes('/learn')){ - if(document.querySelector('#current-lvl') && localStorage.getItem('prognosis-current-lvl')!= null - && document.querySelector('#pacient-overview-wrapper > h5')){ - - const currentLvl = localStorage.getItem('prognosis-current-lvl') - const pacientOverview = document.querySelector('#pacient-abstract').value - message.value.propertyTitle = `prognosis-lvl-${currentLvl}-pacient` - message.value.propertyValue = pacientOverview - return true - }else{ - return false - } - }else if(new URL(document.location).pathname.includes('/challenge/1')) { - if(document.querySelector('#current-lvl') && localStorage.getItem('prognosis-challenge1-current-lvl')!= null - && document.querySelector('#pacient-overview-wrapper > h5')){ - - const currentLvl = localStorage.getItem('prognosis-challenge1-current-lvl') - const pacientOverview = document.querySelector('#pacient-abstract').value - message.value.propertyTitle = `prognosis-challenge1-lvl-${currentLvl}-pacient` - message.value.propertyValue = pacientOverview - return true - }else{ - return false - } - }else if(new URL(document.location).pathname.includes('/challenge/2')) { - if(document.querySelector('#current-lvl') && localStorage.getItem('prognosis-challenge1-current-lvl')!= null - && document.querySelector('#pacient-overview-wrapper > h5')){ - - const currentLvl = localStorage.getItem('prognosis-challenge1-current-lvl') - const pacientOverview = document.querySelector('#pacient-abstract').value - message.value.propertyTitle = `prognosis-challenge2-lvl-${currentLvl}-pacient` - message.value.propertyValue = pacientOverview - return true - }else{ - return false - } - } - }, - pos: async function (response) { - if(document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-txt"][connect$="/post"]`)){ - document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-txt"][connect$="/post"]`).remove() - const submitDcc = document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-txt"][connect$="/put"]`) - submitDcc._computeTrigger() - } - } - } - ) - - DCC.component( - 'submit-prognosis-lvl-guess', - 'dcc-submit', - { - pre: function (message, form, schema) { - if(new URL(document.location).searchParams.get('playerCalc') - && new URL(document.location).searchParams.get('calc')){ - - let currentLvl = localStorage.getItem('prognosis-current-lvl') - let playerCalc = new URL(document.location).searchParams.get('playerCalc') - let sapsCalc = new URL(document.location).searchParams.get('calc') - let prognDiff = (parseFloat(playerCalc) - parseFloat(sapsCalc)) - - message.value.propertyTitle = `prognosis-lvl-${currentLvl}-best-guess` - message.value.propertyValue = prognDiff - return true - }else if(new URL(document.location).pathname.includes('challenge/1')){ - let currentLvl = localStorage.getItem('prognosis-challenge1-current-lvl') - let playerCalc = document.querySelector('#player-prognosis-guess').dataset.value - let sapsCalc = document.querySelector('#prognosis-survival-pacient').dataset.value - let prognDiff = (parseFloat(playerCalc) - parseFloat(sapsCalc)) - - message.value.propertyTitle = `prognosis-challenge1-lvl-${currentLvl}-best-guess` - message.value.propertyValue = prognDiff - return true - }/*else if(new URL(document.location).pathname.includes('challenge/2')){ - let currentLvl = localStorage.getItem('prognosis-challenge1-current-lvl') - let playerCalc = document.querySelector('#player-prognosis-guess').dataset.value - let sapsCalc = document.querySelector('#prognosis-survival-pacient').dataset.value - let prognDiff = (parseFloat(playerCalc) - parseFloat(sapsCalc)) - - message.value.propertyTitle = `prognosis-challenge2-lvl-${currentLvl}-best-guess` - message.value.propertyValue = prognDiff - }*/ - else{ - return false - } - }, - pos: async function (response) { - let playerCalc - let sapsCalc - let prognDiff - if(new URL(document.location).pathname.includes('challenge')){ - playerCalc = document.querySelector('#player-prognosis-guess').dataset.value - sapsCalc = document.querySelector('#prognosis-survival-pacient').dataset.value - prognDiff = (parseFloat(playerCalc) - parseFloat(sapsCalc)) - }else{ - playerCalc = new URL(document.location).searchParams.get('playerCalc') - sapsCalc = new URL(document.location).searchParams.get('calc') - prognDiff = (parseFloat(playerCalc) - parseFloat(sapsCalc)) - } - - if(document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-guess"][connect$="/post"]`)){ - document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-guess"][connect$="/post"]`).remove() - if(Math.abs(response['harena-user-property'].userProperty.value) > Math.abs(prognDiff)){ - const submitDcc = document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-guess"][connect$="/put"]`) - submitDcc._computeTrigger() - } - } - } - } - ) - - DCC.component( - 'submit-prognosis-lvl-progn', - 'dcc-submit', - { - pre: function (message, form, schema) { - if(new URL(document.location).searchParams.get('calc')){ - - const currentLvl = localStorage.getItem('prognosis-current-lvl') - const sapsCalc = new URL(document.location).searchParams.get('calc') - - message.value.propertyTitle = `prognosis-lvl-${currentLvl}-best-progn` - message.value.propertyValue = parseFloat(sapsCalc) - return true - }else if(new URL(document.location).pathname.includes('challenge/2')){ - const currentLvl = localStorage.getItem('prognosis-challenge2-current-lvl') - const sapsCalc = document.querySelector('#prognosis-survival-pacient').dataset.value - - message.value.propertyTitle = `prognosis-challenge2-lvl-${currentLvl}-best-progn` - message.value.propertyValue = parseFloat(sapsCalc) - return true - }else{ - return false - } - }, - pos: async function (response) { - let sapsCalc - if(new URL(document.location).searchParams.get('calc')) - sapsCalc = new URL(document.location).searchParams.get('calc') - else - sapsCalc = document.querySelector('#prognosis-survival-pacient').dataset.value - if(document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-progn"][connect$="/post"]`)){ - document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-progn"][connect$="/post"]`).remove() - if(response['harena-user-property'].userProperty.value < parseFloat(sapsCalc)){ - const submitDcc = document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-progn"][connect$="/put"]`) - submitDcc._computeTrigger() - } - } - } - } - ) - - DCC.component( - 'submit-prognosis-highest-lvl', - 'dcc-submit', - { - pre: function (message, form, schema) { - var localStorageCurrent - var localStorageHighest - if(new URL(document.location).pathname.includes('/learn')){ - localStorageCurrent = 'prognosis-current-lvl' - localStorageHighest = 'prognosis-highest-lvl' - }else if(new URL(document.location).pathname.includes('/challenge/1')) { - localStorageCurrent = 'prognosis-challenge1-current-lvl' - localStorageHighest = 'prognosis-challenge1-highest-lvl' - }else if(new URL(document.location).pathname.includes('/challenge/2')) { - localStorageCurrent = 'prognosis-challenge2-current-lvl' - localStorageHighest = 'prognosis-challenge2-highest-lvl' - } - var currentLvl - var highestLvl - var nextLvl = document.querySelector('#next-lvl') - if(localStorage.getItem(localStorageCurrent) && localStorage.getItem(localStorageHighest)){ - if(nextLvl){ - if(nextLvl.value == ''){ - nextLvl.value = parseInt(localStorage.getItem(localStorageCurrent))+1 || 2 - } - if(nextLvl.value == localStorage.getItem(localStorageHighest) - && parseInt(nextLvl.value) != 10){ - if(parseInt(nextLvl.value) < 10){ - highestLvl = parseInt(nextLvl.value) + 1 - }else if(parseInt(nextLvl.value) > 10){ - highestLvl = 10 - } - }else{ - highestLvl = parseInt(nextLvl.value) - } - }else{ - if(parseInt(localStorage.getItem(localStorageCurrent)) - >= parseInt(localStorage.getItem(localStorageHighest))){ - if(parseInt(localStorage.getItem(localStorageCurrent)) <=10) { - currentLvl = parseInt(localStorage.getItem(localStorageCurrent)) - highestLvl = currentLvl - }else{ - localStorage.setItem(localStorageCurrent, 10) - localStorage.setItem(localStorageHighest, 10) - currentLvl = parseInt(localStorage.getItem(localStorageCurrent)) - highestLvl = currentLvl - } - }else if (parseInt(localStorage.getItem(localStorageHighest)) > 10){ - highestLvl = 10 - } - } - if(new URL(document.location).pathname.includes('challenge')){ - if ((parseInt(localStorage.getItem(localStorageHighest)) >= parseInt(localStorage.getItem(localStorageCurrent))) - && (parseInt(localStorage.getItem(localStorageHighest))>=document.querySelector('#highest-lvl').value)) { - highestLvl = localStorage.getItem(localStorageHighest) - message.value.propertyTitle = `${localStorageHighest}` - message.value.propertyValue = highestLvl - return true - }else{ - return false - } - }else{ - message.value.propertyTitle = `${localStorageHighest}` - message.value.propertyValue = highestLvl - return true - } - }else{ - return false - } - }, - pos: async function (response) { - var currentLvl - var highestLvl - if(new URL(document.location).pathname.includes('/learn')){ - currentLvl = 'prognosis-current-lvl' - highestLvl = 'prognosis-highest-lvl' - }else if(new URL(document.location).pathname.includes('/challenge/1')) { - currentLvl = 'prognosis-challenge1-current-lvl' - highestLvl = 'prognosis-challenge1-highest-lvl' - }else if(new URL(document.location).pathname.includes('/challenge/2')) { - currentLvl = 'prognosis-challenge2-current-lvl' - highestLvl = 'prognosis-challenge2-highest-lvl' - } - localStorage.setItem(highestLvl, parseInt(response[Object.keys(response)[0]].userProperty.value)) - if(document.querySelector(`dcc-submit[bind="submit-prognosis-highest-lvl"][connect$="/post"]`)){ - document.querySelector(`dcc-submit[bind="submit-prognosis-highest-lvl"][connect$="/post"]`).remove() - if(parseInt(response[Object.keys(response)[0]].userProperty.value) < currentLvl - || parseInt(response[Object.keys(response)[0]].userProperty.value)>10){ - const submitDcc = document.querySelector(`dcc-submit[bind="submit-prognosis-highest-lvl"][connect$="/put"]`) - submitDcc._computeTrigger() - } - } - - } - } - ) - - DCC.component( - 'submit-prognosis-perfect-lvl', - 'dcc-submit', - { - pre: function (message, form, schema) { - const currentLvl = localStorage.getItem('prognosis-current-lvl') - const perfectScore = document.querySelector('#pacient-perfect') - if((currentLvl) && (perfectScore && perfectScore.value != '')){ - message.value.propertyTitle = `prognosis-lvl-${currentLvl}-perfect` - message.value.propertyValue = perfectScore.value - return true - }else{ - return false - } - }, - pos: async function (response) { - const currentLvl = parseInt(localStorage.getItem('prognosis-current-lvl')) - const perfectScore = document.querySelector('#pacient-perfect') - if(document.querySelector(`dcc-submit[bind="submit-prognosis-perfect-lvl"][connect$="/post"]`)){ - document.querySelector(`dcc-submit[bind="submit-prognosis-perfect-lvl"][connect$="/post"]`).remove() - if(parseFloat(response[Object.keys(response)[0]].userProperty.value) != parseFloat(perfectScore.value)){ - const submitDcc = document.querySelector(`dcc-submit[bind="submit-prognosis-perfect-lvl"][connect$="/put"]`) - submitDcc._computeTrigger() - } - } - } - } - ) - - DCC.component( - 'submit-prognosis-lvl-range', - 'dcc-submit', - { - pre: function (message, form, schema) { - if(new URL(document.location).pathname.includes('challenge/2')){ - const currentLvl = localStorage.getItem('prognosis-challenge2-current-lvl') - const range = document.querySelector('#prognosis-range').dataset.value - - message.value.propertyTitle = `prognosis-challenge2-lvl-${currentLvl}-range` - message.value.propertyValue = range - return true - }else{ - return false - } - }, - pos: async function (response) { - const range = document.querySelector('#prognosis-range').dataset.value - if(document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-range"][connect$="/post"]`)){ - document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-range"][connect$="/post"]`).remove() - if(response['harena-user-property'].userProperty.value != range){ - const submitDcc = document.querySelector(`dcc-submit[bind="submit-prognosis-lvl-range"][connect$="/put"]`) - submitDcc._computeTrigger() - } - } - } - } - ) - - DCC.component( - 'submit-prognosis-avatar-player', - 'dcc-submit', - { - pre: function (message, form, schema) { - if(PrognosisAvatar.i._avatarActive){ - const avatarId = PrognosisAvatar.i._avatarActive - message.value.propertyTitle = `prognosis-avatar-id` - message.value.propertyValue = avatarId - return true - }else{ - return false - } - }, - pos: async function (response) { - } - } - ) })() diff --git a/src/adonisjs/public/start/img/background_inf331-2.png b/src/adonisjs/public/start/img/background_inf331-2.png new file mode 100644 index 00000000..3354a9a7 Binary files /dev/null and b/src/adonisjs/public/start/img/background_inf331-2.png differ diff --git a/src/adonisjs/public/start/img/background_inf331.png b/src/adonisjs/public/start/img/background_inf331.png new file mode 100644 index 00000000..520e6383 Binary files /dev/null and b/src/adonisjs/public/start/img/background_inf331.png differ diff --git a/src/adonisjs/public/start/img/home-image-inf331.png b/src/adonisjs/public/start/img/home-image-inf331.png new file mode 100644 index 00000000..c1d5ce23 Binary files /dev/null and b/src/adonisjs/public/start/img/home-image-inf331.png differ diff --git a/src/adonisjs/public/templates/labs/lab3/ai-screen.png b/src/adonisjs/public/templates/labs/lab3/ai-screen.png new file mode 100644 index 00000000..08d1c172 Binary files /dev/null and b/src/adonisjs/public/templates/labs/lab3/ai-screen.png differ diff --git a/src/adonisjs/public/templates/labs/lab3/ai-script.png b/src/adonisjs/public/templates/labs/lab3/ai-script.png new file mode 100644 index 00000000..1312779f Binary files /dev/null and b/src/adonisjs/public/templates/labs/lab3/ai-script.png differ diff --git a/src/adonisjs/public/templates/labs/lab3/ai-tree.png b/src/adonisjs/public/templates/labs/lab3/ai-tree.png new file mode 100644 index 00000000..f99e38be Binary files /dev/null and b/src/adonisjs/public/templates/labs/lab3/ai-tree.png differ diff --git a/src/adonisjs/public/templates/labs/lab_3-dynamic.md b/src/adonisjs/public/templates/labs/lab_3-dynamic.md new file mode 100644 index 00000000..4c5d67bc --- /dev/null +++ b/src/adonisjs/public/templates/labs/lab_3-dynamic.md @@ -0,0 +1,71 @@ +# Tarefa 1 # + +

MVC - Componentes View no App Inventor

+

Tarefa 1

+ +{{explica +* Construa um App no MIT App Inventor que mostre a imagem de uma receita e um botão `[Receita]`. +* Quando o botão é clicado, deve ser apresentada a receita. +}} + +{{figura1 +

Coloque a figura com a captura do aplicativo funcionando.

+}} + +
+ +{{figura2 +

Coloque a figura com a captura da hierarquia de componentes visuais (composite).

+}} + +
+ +{{figura3 +

Coloque a figura com a captura dos scripts em box programming.

+}} + + +# Tarefa 2 # + +

MVC - Componentes Model no App Inventor

+

Tarefa 2

+ +{{explica +* Modifique o App apresentado no vídeo "MVC - Componentes Model no App Inventor" de modo que seja possível cadastrar (em um campo separado) o título da receita. +* O título deve ser gravado no CloudDB com o rótulo título. +}} + +{{figura1 +

Coloque a figura com a captura do aplicativo funcionando.

+}} + +
+ +{{figura2 +

Coloque a figura com a captura da hierarquia de componentes visuais (composite).

+}} + +
+ +{{figura3 +

Coloque a figura com a captura dos scripts em box programming.

+}} + +# Apresenta # + +

Apresentação do Resultado das Tarefas

+ +Você deve capturar: +* a tela do aplicativo apresentando o resultado final - pode ser do emulador ou do celular; +* a hierarquia de componentes visuais (padrão composite); +* todos os scripts do app (na forma de caixinhas). + +As figuras são colocadas de forma separada (como no exemplo abaixo). Coloque figuras em que as coisas fiquem legíveis, mesmo que a figura fique grande. Exemplo: + +![Result Screen](template_fix/labs/lab3/ai-screen.png) +![Composite Tree](template_fix/labs/lab3/ai-tree.png) +![Script](template_fix/labs/lab3/ai-script.png) + +___ Template ___ + +* template: labs/lab_3 diff --git a/src/adonisjs/public/templates/labs/lab_3-static.md b/src/adonisjs/public/templates/labs/lab_3-static.md new file mode 100644 index 00000000..9026b7b4 --- /dev/null +++ b/src/adonisjs/public/templates/labs/lab_3-static.md @@ -0,0 +1,8 @@ +___ Flow ___ + +* Sequential: + * _sequential_ + +___ Data ___ + +* theme: simple(blue) diff --git a/src/adonisjs/public/templates/templates.json b/src/adonisjs/public/templates/templates.json index 5b9efc43..4208471f 100644 --- a/src/adonisjs/public/templates/templates.json +++ b/src/adonisjs/public/templates/templates.json @@ -11,13 +11,20 @@ "path": "labs/lab_1", "icon": "labs/labs.png", "scope": "case", - "environment": "jacinto"}, + "environment": "development"}, "Lab 2": {"questId": "labs", "description": "Lab 2.", "path": "labs/lab_2", "icon": "labs/labs.png", "scope": "case", + "environment": "development"}, +"Lab 3": + {"questId": "labs", + "description": "Lab 3.", + "path": "labs/lab_3", + "icon": "labs/labs.png", + "scope": "case", "environment": "jacinto"}, "Zombie": {"questId": "zombie", diff --git a/src/adonisjs/public/user/index-swe.html b/src/adonisjs/public/user/index-swe.html index 193df9ee..33eb824c 100644 --- a/src/adonisjs/public/user/index-swe.html +++ b/src/adonisjs/public/user/index-swe.html @@ -6,36 +6,36 @@ - - + + - - + + - + - - + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - + +